Слайд 2План лекции
Концепция типа данных
Типы данных в языке Паскаль
Базовые и конструируемые типы
Раздел описания
![План лекции Концепция типа данных Типы данных в языке Паскаль Базовые и](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368876/slide-1.jpg)
типов
Порядковые типы данных
5.1. Функции и процедуры применяемые к порядковым типам
5.2. Целочисленные типы данных
5.3. Логический тип данных
5.4. Символьный тип данных
5.5. Перечисляемые типы данных
5.6. Интервальные типы данных
Вещественные типы данных
6.1. Вещественные типы
6.2. Запись вещественных чисел
7. Форматный вывод данных
8. Конструируемые типы данных
9. Преобразование типов
9.1. Неявное преобразование типов
9.2. Явное преобразование типов
9.3. Функции изменяющие тип данных
Слайд 3Концепция типа данных
Для временного хранения информации в операторах памяти машины в языке
![Концепция типа данных Для временного хранения информации в операторах памяти машины в](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368876/slide-2.jpg)
Паскаль используются константы и переменные. Они могут быть различных типов.
Все данные, используемые в программе, должны быть предварительно определены.
Для каждого данного надо обозначить
∙ имя;
∙ характер и диапазон изменения значений;
∙ требуемую память для размещения;
∙ набор допустимых к ним операций.
Слайд 4Концепция типа данных
Тип данных определяет:
возможные значения переменных, констант, функций, выражений, принадлежащих к
![Концепция типа данных Тип данных определяет: возможные значения переменных, констант, функций, выражений,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368876/slide-3.jpg)
данному типу;
внутреннюю форму представления данных в ЭВМ;
операции и функции, которые могут выполняться над величинами, принадлежащими к данному типу.
Слайд 6Базовые и конструируемые типы
Базовые типы – типы, определяемые в языке программирования.
Конструируемые типы
![Базовые и конструируемые типы Базовые типы – типы, определяемые в языке программирования.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368876/slide-5.jpg)
– типы, которые задаются программистом.
Слайд 7Базовые и конструируемые типы
![Базовые и конструируемые типы](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368876/slide-6.jpg)
Слайд 8Базовые и конструируемые типы
Например переменные базовых типов могут быть определены в
![Базовые и конструируемые типы Например переменные базовых типов могут быть определены в](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368876/slide-7.jpg)
разделе описания переменных
Var
a, b : real;
d: integer;
Конструируемые типы так же могут быть описаны в разделе описания переменных
Var
s : string;
Слайд 9Раздел описания типов
Типы данных, конструируемые программистом, описываются в разделе Type по следующему
![Раздел описания типов Типы данных, конструируемые программистом, описываются в разделе Type по](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368876/slide-8.jpg)
шаблону:
Type
<имя_типа> = <описание_типа>;
Например:
Type
lat_bukvy = 'a'..'z','A'..'Z';
Слайд 10Раздел описания типов
Базовые типы данных являются стандартными, поэтому нет нужды описывать их
![Раздел описания типов Базовые типы данных являются стандартными, поэтому нет нужды описывать](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368876/slide-9.jpg)
в разделе Type.
Однако при желании это тоже можно сделать, например, дав длинным определениям короткие имена. Скажем, введя новый тип данных
Type
int = integer;
Тогда можно описать переменные
Var
x, y : int;
Слайд 11Порядковые типы данных
Целые:
shortint
byte
integer
word
longint
Логические:
boolean
Символьные:
char;
Перечисляемые:
задаются перечислением значений и/или диапазонами значений.
![Порядковые типы данных Целые: shortint byte integer word longint Логические: boolean Символьные:](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368876/slide-10.jpg)
Слайд 12Функции применяемые к порядковым типам
ord(x) возвращает порядковый номер значения переменной x (относительно
![Функции применяемые к порядковым типам ord(x) возвращает порядковый номер значения переменной x](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368876/slide-11.jpg)
того типа, к которому принадлежит переменная х).
pred(x) возвращает значение, предшествующее х (к первому элементу типа неприменима).
succ(x) возвращает значение, следующее за х (к последнему элементу типа неприменима).
Слайд 13Процедуры применяемые к порядковым типам
inc(x) возвращает значение, следующее за х (для арифметических
![Процедуры применяемые к порядковым типам inc(x) возвращает значение, следующее за х (для](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368876/slide-12.jpg)
типов данных это эквивалентно оператору x:=x+1).
inc(x,k) возвращает k-е значение, следующее за х (для арифметических типов данных это эквивалентно оператору x:=x+k).
dec(x) возвращает значение, предшествующее х (для арифметических типов данных это эквивалентно оператору x:=x-1).
dec(x,k) возвращает k-e значение, предшествующее х (для арифметических типов данных это эквивалентно оператору x:=x-k).
Слайд 14Целочисленные типы данных
Над целыми типами определены такие операции:
+ - * /
![Целочисленные типы данных Над целыми типами определены такие операции: + - * / mod div](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368876/slide-13.jpg)
mod div
Слайд 15Логический тип данных
Логический тип boolean имеет два значения:
false и true
Над операндами
![Логический тип данных Логический тип boolean имеет два значения: false и true](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368876/slide-14.jpg)
логического типа определены такие операции:
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.
Слайд 16Символьный тип данных
В символьный тип char входит 256 символов расширенной таблицы ASCII
![Символьный тип данных В символьный тип char входит 256 символов расширенной таблицы](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368876/slide-15.jpg)
Например,
'a', 'b', 'я', '7', ‘&'
Номер символа, возвращаемый функцией ord(), совпадает с номером этого символа в таблице ASCII.
Слайд 17Символьный тип данных
Пример описания символьной переменной:
Var
simb1, simb2 : char;
Begin
simb1:=‘R’; simb2:=#65; {
![Символьный тип данных Пример описания символьной переменной: Var simb1, simb2 : char;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368876/slide-16.jpg)
С помощью # производится перевод целого числа в соответствующий символ данного ASCII-кода }
write (simb1,simb2);
End.
Результат работы программы
RA
Слайд 18Перечисляемые типы данных
Перечисляемые типы данных задаются в разделе Type явным перечислением их
![Перечисляемые типы данных Перечисляемые типы данных задаются в разделе Type явным перечислением](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368876/slide-17.jpg)
элементов.
Например:
Type
week =(sun,mon,tue,wed,thu,fri,sat)
Напомним, что для этого типа данных:
inc(sat) = sun, dec(sun) = sat.
Слайд 19Интервальные типы данных (диапазоны)
Интервальные типы данных задаются только границами своего диапазона.
Например:
![Интервальные типы данных (диапазоны) Интервальные типы данных задаются только границами своего диапазона.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368876/slide-18.jpg)
Type
month = 1..12;
Программист может создавать и собственные типы данных, являющиеся комбинацией нескольких стандартных типов.
Например:
Type
valid_for_identifiers = 'a'..'z','A'..'Z','_','0..9‘;
Слайд 20Вещественные типы данных
Вещественные типы данных являются арифметическими, но не порядковыми.
Следовательно для этих
![Вещественные типы данных Вещественные типы данных являются арифметическими, но не порядковыми. Следовательно](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368876/slide-19.jpg)
типов данных выполняются арифметические операции (за исключением операций с целыми числами) и стандартные математические функции.
Слайд 22Форматный вывод данных
Пусть
a:=7; b:=‘x’; c:=-10.5;
Если для вывода информации воспользоваться командой
write (a,b,c);
то
![Форматный вывод данных Пусть a:=7; b:=‘x’; c:=-10.5; Если для вывода информации воспользоваться](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368876/slide-21.jpg)
выводимые символы окажутся "слепленными".
7x-1.05000000000000E+1
Слайд 23Форматный вывод данных
Используем следующую запись оператора вывода
write(a:5,b,c:20:5);
Первое число после знака ":" обозначает
![Форматный вывод данных Используем следующую запись оператора вывода write(a:5,b,c:20:5); Первое число после](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368876/slide-22.jpg)
количество позиций, выделяемых под всю переменную, а второе - под дробную часть числа. Десятичная точка тоже считается отдельным символом.
Получим
_ _ _ _ 7 x _ _ _ _ _ _ _ _ _ _ _ - 1 0 . 5 0 0 0 0
(подчерк служит для визуализации пробела)
Слайд 24Конструируемые типы данных
Конструируемые типы данных будут изучены на последующих лекциях.
![Конструируемые типы данных Конструируемые типы данных будут изучены на последующих лекциях.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368876/slide-23.jpg)
Слайд 25Совместимость типов данных
В общем случае при выполнении арифметических (и любых других) операций
![Совместимость типов данных В общем случае при выполнении арифметических (и любых других)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368876/slide-24.jpg)
компилятору требуется, чтобы типы операндов совпадали.
Нельзя, например, сложить массив и множество, нельзя передать вещественное число переменной, ожидающей целый аргумент, и т.п.
В то же время, любая переменная, в расчете на вещественные значения, сможет работать и с целыми числами.
Слайд 26Неявное преобразование типов
Тип результата арифметических операций (а следовательно, и выражений) может отличаться
![Неявное преобразование типов Тип результата арифметических операций (а следовательно, и выражений) может](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368876/slide-25.jpg)
от типов исходных операндов.
Пример:
Var
a,b : integer;
d : real;
Begin
read (a,b);
r:=a/b;
write (r);
End.
Слайд 27Неявное преобразование типов
Если в некоторой операции присваивания участвуют два типа данных совместимых,
![Неявное преобразование типов Если в некоторой операции присваивания участвуют два типа данных](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368876/slide-26.jpg)
но не совместимых по присваиванию, то тип присваиваемого выражения автоматически заменяется на подходящий.
Пример:
Var
a : byte;
Begin
a:=10;
a:=-a;
write (a);
End.
На экране мы увидим не -10, а 246 (246 = 256 - 10).
Слайд 28Явное преобразование типов
Тип значения можно изменить и явным способом:
просто указав новый
![Явное преобразование типов Тип значения можно изменить и явным способом: просто указав](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368876/slide-27.jpg)
тип выражения.
Пример:
a:= byte(b);
В этом случае переменной а будет присвоено значение, полученное новой интерпретацией значения переменной b.
Скажем, если b имеет тип shortint и значение -23,
то в a запишется 233 (= 256 - 23).
Слайд 29Функции изменяющие тип данных
Функции округления:
trunc real -> integer
round real -> integer
Функция преобразования
![Функции изменяющие тип данных Функции округления: trunc real -> integer round real](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/368876/slide-28.jpg)
строки в число
val string -> byte/integer/real
Получение символа по заданному ASCII-коду
сhr byte -> char
Преобразование порядковых типов
ord <порядковый_тип> -> longint