Слайд 3Базовые и конструируемые типы
Базовые типы – типы, определяемые в языке
программирования.
Конструируемые типы – типы, которые задаются программистом.
Слайд 4Базовые и конструируемые типы
Слайд 5Базовые и конструируемые типы
Например переменные базовых типов могут быть
определены в разделе описания переменных
Var
a, b : real;
d: integer;
Конструируемые
типы так же могут быть описаны в разделе описания переменных
Var
s : string;
Слайд 6Раздел описания типов
Типы данных, конструируемые программистом, описываются в разделе Type
по следующему шаблону:
Type
= ;
Например:
Type
lat_bukvy = 'a'..'z','A'..'Z';
Слайд 7Раздел описания типов
Базовые типы данных являются стандартными, поэтому нет нужды
описывать их в разделе Type.
Однако при желании это тоже
можно сделать, например, дав длинным определениям короткие имена. Скажем, введя новый тип данных
Type
int = integer;
Тогда можно описать переменные
Var
x, y : int;
Слайд 8Порядковые типы данных
Целые:
shortint
byte
integer
word
longint
Логические:
boolean
Символьные:
char;
Перечисляемые:
задаются
перечислением значений и/или диапазонами значений.
Слайд 9Функции применяемые к порядковым типам
ord(x) возвращает порядковый номер значения переменной
x (относительно того типа, к которому принадлежит переменная х).
pred(x)
возвращает значение, предшествующее х (к первому элементу типа неприменима).
succ(x) возвращает значение, следующее за х (к последнему элементу типа неприменима).
Слайд 10Процедуры применяемые к порядковым типам
inc(x) возвращает значение, следующее за х
(для арифметических типов данных это эквивалентно оператору x:=x+1).
inc(x,k) возвращает
k-е значение, следующее за х (для арифметических типов данных это эквивалентно оператору x:=x+k).
dec(x) возвращает значение, предшествующее х (для арифметических типов данных это эквивалентно оператору x:=x-1).
dec(x,k) возвращает k-e значение, предшествующее х (для арифметических типов данных это эквивалентно оператору x:=x-k).
Слайд 11Целочисленные типы данных
Над целыми типами определены такие операции:
+
- * /
mod div
Слайд 12Логический тип данных
Логический тип boolean имеет два значения:
false и
true
Над операндами логического типа определены такие операции:
or, and, not, xor
Для
логического типа выполняются следующие равенства:
ord(false)=0, ord(true)=1, falsepred(true)=false, succ(false)=true,
inc(true)=false, inc(false)=true,
dec(true)=false, dec(false)=true.
Слайд 13Символьный тип данных
В символьный тип char входит 256 символов расширенной
таблицы ASCII
Например,
'a', 'b', 'я', '7', ‘&'
Номер символа, возвращаемый
функцией ord(), совпадает с номером этого символа в таблице ASCII.
Слайд 14Символьный тип данных
Пример описания символьной переменной:
Var
simb1, simb2 : char;
Begin
simb1:=‘R’;
simb2:=#65; { С помощью # производится перевод целого числа в
соответствующий символ данного ASCII-кода }
write (simb1,simb2);
End.
Результат работы программы
RA
Слайд 15Перечисляемые типы данных
Перечисляемые типы данных задаются в разделе Type явным
перечислением их элементов.
Например:
Type
week =(sun,mon,tue,wed,thu,fri,sat)
Напомним, что для этого типа данных:
inc(sat) = sun, dec(sun) = sat.
Слайд 16Интервальные типы данных (диапазоны)
Интервальные типы данных задаются только границами своего
диапазона.
Например:
Type
month = 1..12;
Программист может создавать и
собственные типы данных, являющиеся комбинацией нескольких стандартных типов.
Например:
Type
valid_for_identifiers = 'a'..'z','A'..'Z','_','0..9‘;
Слайд 17Вещественные типы данных
Вещественные типы данных являются арифметическими, но не порядковыми.
Следовательно
для этих типов данных выполняются арифметические операции (за исключением операций
с целыми числами) и стандартные математические функции.
Слайд 19Конструируемые типы данных
Конструируемые типы данных будут изучены на последующих лекциях.
Слайд 20Совместимость типов данных
В общем случае при выполнении арифметических (и любых
других) операций компилятору требуется, чтобы типы операндов совпадали.
Нельзя, например, сложить
массив и множество, нельзя передать вещественное число переменной, ожидающей целый аргумент, и т.п.
В то же время, любая переменная, в расчете на вещественные значения, сможет работать и с целыми числами.
Слайд 21Неявное преобразование типов
Тип результата арифметических операций (а следовательно, и выражений)
может отличаться от типов исходных операндов.
Пример:
Var
a,b : integer;
d : real;
Begin
read
(a,b);
r:=a/b;
write (r);
End.
Слайд 22Неявное преобразование типов
Если в некоторой операции присваивания участвуют два типа
данных совместимых, но не совместимых по присваиванию, то тип присваиваемого
выражения автоматически заменяется на подходящий.
Пример:
Var
a : byte;
Begin
a:=10;
a:=-a;
write (a);
End.
На экране мы увидим не -10, а 246 (246 = 256 - 10).
Слайд 23Явное преобразование типов
Тип значения можно изменить и явным способом:
просто
указав новый тип выражения.
Пример:
a:= byte(b);
В этом случае переменной
а будет присвоено значение, полученное новой интерпретацией значения переменной b.
Скажем, если b имеет тип shortint и значение -23,
то в a запишется 233 (= 256 - 23).
Слайд 24Функции изменяющие тип данных
Функции округления:
trunc real -> integer
round real ->
integer
Функция преобразования строки в число
val string -> byte/integer/real
Получение символа по
заданному ASCII-коду
сhr byte -> char
Преобразование порядковых типов
ord <порядковый_тип> -> longint