Лабораторная 1. Порядковые типы данных в оперативной памяти

Задание 1

Разработать консольную программу на языке FreePascal, получающую на вводе строку, значение которой может быть равным одному из следующих вариантов:
Shortint SmallInt Longint Longword Int64 Byte Word Cardinal QWord Char Boolean.

Если введенная строка не соответствует ни одному из приведенных вариантов, вывести на экран слово Error и завершить работу программы.

Для введенного типа данных вывести на экран (1) нижную границу типа, (2) верхнюю границу типа, (3) размер типа в байтах. Заполнить переменную введенного типа случайным значением из диапазона от нижней до верхней границы типа включительно. Вывести на экран (4) полученное значение, (5) предыдущее и (6) последующее значение. Если полученное случайное значение является максимальным для данного типа, то вместо последующего (6) значения вывести слово Overflow. Если полученное случайное значение является минимальным для данного типа, то вместо предыдущего (5) значения также вывести слово Overflow. Вывести на экран (7) значения байтов, хранящих переменную введенного типа, в порядке их расположения в оперативной памяти.

Для формирования случайных значений исследуемых типов данных рекомендуется заполнить содержимое соответствующих переменных побайтово случайными значениями из диапазона от 0 до 255.

Запрещается использовать константные значения характеристик типа (верхние и нижние границы). Значения всех характеристик типа следует вычислять, используя специальные операции (функции) для работы с порядковым типом данных (sizeof, low, high, pred, succ).

Пример вывода для типа Longint:

Исследуемый тип: Longint
Нижняя граница: -2147483648
Верхняя граница: 2147483647
Байт на переменную: 4
Случайное значение: 818295054
Предыдущее значение: 818295053
Последующее значение: 818295055
Содержимое оперативной памяти: 14 49 198 48 

Пример вывода для типа Char:

Исследуемый тип: Char
Нижняя граница: #0
Верхняя граница: #255
Байт на переменную: 1
Случайное значение: #255
Предыдущее значение: #254
Последующее значение: Overflow
Содержимое оперативной памяти: 255 

Пример вывода для типа Boolean:

Исследуемый тип: Boolean
Нижняя граница: FALSE
Верхняя граница: TRUE
Байт на переменную: 1
Случайное значение: FALSE
Предыдущее значение: Overflow
Последующее значение: TRUE
Содержимое оперативной памяти: 0

Задание 2

Разработать консольную программу на языке C, получающую на вводе строку, значение которой может быть равным одному из следующих вариантов:
int, unsigned int, signed int,
short int, unsigned short int, signed short int,
long int, unsigned long int, signed long int,
long long int, unsigned long long int, signed long long int,
char, unsigned char, signed char

Если введенная строка не соответствует ни одному из приведенных вариантов, вывести на экран слово Error и завершить работу программы.

Для введенного типа данных вывести на экран (1) нижную границу типа, (2) верхнюю границу типа, (3) размер типа в байтах. Заполнить переменную введенного типа случайным значением из диапазона от нижней до верхней границы типа включительно. Вывести на экран (4) полученное значение, (5) предыдущее и (6) последующее значение. Если полученное случайное значение является максимальным для данного типа, то вместо последующего (6) значения вывести слово Overflow. Если полученное случайное значение является минимальным для данного типа, то вместо предыдущего (5) значения также вывести слово Overflow. Вывести на экран (7) значения байтов, хранящих переменную введенного типа, в порядке их расположения в оперативной памяти.

Для формирования случайных значений исследуемых типов данных рекомендуется заполнить содержимое соответствующих переменных побайтово случайными значениями из диапазона от 0 до 255.

Для определения границ типов использовать соответствующие константы из модуля limits.h. Для определения размера типа использовать операцию sizeof. Переход к последующему и предыдущему значению переменных типа осуществлять операциями инкремента и декримента.

Пример вывода для типа int в 64-битной системе:

Исследуемый тип: int
Нижняя граница: -2147483648
Верхняя граница: 2147483647
Байт на переменную: 4
Случайное значение: 818295054
Предыдущее значение: 818295053
Последующее значение: 818295055
Содержимое оперативной памяти: 14 49 198 48 

Пример вывода для типа unsigned char в 64-битной системе:

Исследуемый тип: unsigned char
Нижняя граница: 0
Верхняя граница: 255
Байт на переменную: 1
Случайное значение: 255
Предыдущее значение: 254
Последующее значение: Overflow
Содержимое оперативной памяти: 255