Слайд 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