- •Стандартные Pascal
- •Ввод/вывод:
- •Представление значений в памяти эвм:
- •Real – вещественное число
- •Char – символ
- •Boolean – логичесткий
- •Сложные Pascal
- •Array – массив
- •Record – запись
- •Перечислимый
- •Ограниченный
- •File – типизированные файлы
- •Ввод/вывод:
- •Представление значений в памяти эвм:
- •Определение внешнего вида значений
- •Определение диапазона и возможных зарезервированных констант:
- •Определение операций
- •Определение процедур и функций, которые могут применяться к этому типу:
- •String – строки
- •Text – текстовые файлы
- •Определение процедур и функций, которые могут применяться к этому типу:
- •Ввод/вывод:
- •Unsigned Int- целое без знака
- •Определение процедур и функций, которые могут применяться к этому типу:
- •Ввод/вывод:
- •Short-короткое целое
- •Определение процедур и функций, которые могут применяться к этому типу:
- •Ввод/вывод:
- •Unsigned Short-короткое целое без знака
- •Определение процедур и функций, которые могут применяться к этому типу:
- •Ввод/вывод:
- •Long-длинное целое
- •Определение процедур и функций, которые могут применяться к этому типу:
- •Ввод/вывод:
- •Unsigned Long-длинное целое без знака
- •Определение процедур и функций, которые могут применяться к этому типу:
- •Ввод/вывод:
- •Представление значений в памяти эвм:
- •Char-символьный
- •Определение внешнего вида значений
- •Определение диапазона и возможных зарезервированных констант:
- •Определение процедур и функций, которые могут применяться к этому типу:
- •Ввод/вывод:
- •Представление значений в памяти эвм:
- •Unsigned Char-символьный
- •Определение внешнего вида значений
- •Определение диапазона и возможных зарезервированных констант:
- •Определение процедур и функций, которые могут применяться к этому типу:
- •Ввод/вывод:
- •Float-вещественное
- •Double-вещественное с двойной точностью
- •Long double-вещественное с двойной точностью
- •Составные типы данных Си
- •Struct - структура
- •Union - объединение
- •Enum – перечисление
- •Статические массивы
- •Динамические массивы
- •Указатели
- •Определение процедур и функций, которые могут применяться к этому типу:
- •Ввод/вывод:
- •Представление значений в памяти эвм:
Boolean – логичесткий
Определение внешнего вида значений
Форма Бэкуса-Наура:
<boolean> ::= True | False
Определение диапазона и возможных зарезервированных констант:
Диапазон значений:
True/False
Константы:
Нет
Определение операций
Сравнения: =, <>
Определение процедур и функций, которые могут применяться к этому типу:
Нет
Ввод/вывод:
Только вывод (write/writeln)
Представление значений в памяти ЭВМ:
Занимает 1 байт
Значение = true
00000001
Значение = false
00000000
Сложные Pascal
Array – массив
Определение внешнего вида значений
Формы Бэкуса-Наура:
нет
Определение диапазона и возможных зарезервированных констант:
Диапазон значений:
Определяется только для каждого элемента непосредственно, обусловлен базовым типом (зависит от того, массив чего задается)
Константы:
Нет
Определение операций
Работа с каждым элементом как с обычной переменной базового типа
Обращение к элементу – в квадратных скобках, например : a[1] – обращение к первому элементу массива a.
Определение процедур и функций, которые могут применяться к этому типу:
Для всего массива целиком не определяются
Определяются для каждого элемента непосредственно как для объекта базового типа
Ввод/вывод:
Допустимы поэлементно (read[i]/readln[i]/write[i]/writeln[i])
Представление значений в памяти ЭВМ:
Последовательно все элементы, размер каждого – размер базового типа
Record – запись
Определение внешнего вида значений
Формы Бэкуса-Наура:
нет
Определение диапазона и возможных зарезервированных констант:
Диапазон значений:
Определяется только для каждого поля
Обусловлен базовым типом каждого поля непосредственно
Константы:
Нет
Определение операций
Для всей записи – оператор with
with <record> do
begin
…
end;
Для каждого поля записи – соответствуют операциям базового типа этого поля
Определение процедур и функций, которые могут применяться к этому типу:
Sizeof(record) – объем занимаемого пространства в памяти
Для каждого поля записи – соответствуют процедурам и функциям базового типа этого поля
Ввод/вывод:
Допустимы по полям
(read(record1.variable)/readln(record1.variable)/write(record1.variable)/writeln(record1.variable))
или через «with» -
with record1 do
begin
readln(variable); // и т.п.
end;
Представление значений в памяти ЭВМ:
Все поля располагаются последовательно, размер каждого поля соответствует размерности его базового типа. При этом происходит «выравнивание». Также записи дополняются, для гарантии, что они закончены, 4-х байтовой границей.
Set
Определение внешнего вида значений
Формы Бэкуса-Наура:
нет
Определение диапазона и возможных зарезервированных констант:
Диапазон значений:
Любой порядковый тип с элементами, для которых функция Ord возвращает значения в диапазоне от 0 до 255
Пример:
type CharSet = set of char; Digits = set of '0'..'9'; SeasonSet = set of (Winter,Spring,Summer,Autumn);
Константы:
Нет
Определение операций
+ объединение
- разность
* пересечение
Операция in проверяет принадлежность элемента множеству
Определение процедур и функций, которые могут применяться к этому типу:
Процедуры и функции:
Нет
Ввод/вывод:
Чтобы вывести значения элементов множества, необходимо перебрать всевозможные значения в цикле и проверить их на принадлежность множеству с помощью операции in:
for i:=0 to 255 do if i in st then write(i,' ');
Представление значений в памяти ЭВМ:
Хранится в побитовой структуре, но занимает целое число байт, количество которых определяется размерностью множества.
Например, если множество определяется как ‘0’..’9’ (т.е. содержит десять элементов), в памяти будет выделено под него два байта. Один байт = 8 бит, а нам нужно разместить 10 бит, т.е. округляем «вверх» до шестнадцати и получаем два байта. Для пустого множества все биты равны нулям. Далее, в памяти все биты нумеруются и если элемент с определенным номером добавляется в множество, то каждый соответствующий бит (с этим же номером) принимает значение 1.
