Слайд 2Типы данных
Концепция типа языка программирования имеет следующие основные свойства:
Любой тип
данных определяет множество значений, к которому принадлежит константа, которые может
принимать переменная или выражение, или вырабатывать операция или функция;
Тип значения, задаваемого константой, переменной или выражением, можно определить по их виду или описанию;
Каждая операция или функция требует аргументов фиксированного типа и выдает результат фиксированного типа.
Слайд 3Базовые структуры описания данных
Простые типы данных
Числовые (целые и вещественные)
Символьные
Логические
Тип-диапазон
Перечисляемые
Указательные
Слайд 4Базовые структуры описания данных
Структурированные
Массивы
Строки
Записи
Файлы
Множества
Абстрактные типы данных
Классы
Слайд 5Классификация типов
группы целых, символьных и строковых типов подразделяются на две
категории:
Фундаментальные (fundamental) типы, формат представления которых в памяти (число битов
и наличие знака) строго фиксируются и будут выдерживаться неизменными во всех последующих версиях ОР для любых операционных систем и компьютерных платформ.
Родовые (generic) типы, формат представления которых в памяти не фиксируется и будет устанавливаться наиболее оптимальным способом, в зависимости от реализации для конкретной операционной системы и компьютерной платформы.
Слайд 6Простые типы данных
порядковые типы
вещественные типы
типы работающие с датой-временем.
Слайд 7Порядковые (ordinal) типы данных
Множество допустимых значений порядкового типа представляет собой
упорядоченную последовательность, каждый элемент которой имеет свой порядковый номер и
для каждого из них можно указать предшествующее и следующее значение.
К порядковым типам относятся:
Целые
Символьные
Логические
Тип-диапазон
Перечисляемые
Слайд 8x:=Pred(c); // при с=10 х=9
Функции порядковых
типов данных
Слайд 9Порядковые типы данных
Для порядковых типов определены процедуры инкремента INC(X) и
декремента Dec(X). Эти процедуры соответственно увеличивают или уменьшают на единицу
порядковый номер своего аргумента.
…
X:=5;
Inc(x); //х=6
…
Слайд 12операторы:
Унарные: -;
Бинарные *,/, +, -, div, mod
Операции отношения: =,
, >=, =>
Поразрядные булевы: and, or, not, xor
Поразрядные сдвига: shl,
shr
Слайд 13Функции
x:=abs(x)
x:=sqr(x)
r:=sqrt(x), r:вещественное число
с:=chr(b), b:цел с:символ возвращает символ по его коду
b:=odd(l),
где b:лог l:цел
Возвращает true, если аргумент -нечетное число
random(x)
Генератор сл чисел
Randomize;
Слайд 14Пример программы, в которой значение выходит из допустимого диапазона
var
k: Word;
begin
k
:= 65535; // Максимальное значение типа Word
k := k+1;
// По правилам математики k=65536
writeln(k); // На самом деле k=0!
end;
Слайд 16Логические типы
Значения логического типа: False (ложь) или True (истина).
Для
них справедливы правила:
FalseTrue;
Ord(False) = 0;
Ord(True) 0;
Succ(False)= True;
Pred(True) = False.
Слайд 18Код ANSI
(American National Standard Institute)
коды 0... 127
коды 128...255
меняется для различных шрифтов. Стандартные Windows-шрифты Arial Cyr, Courier New
Cyr и Times New Roman для представления символов кириллицы (без букв “ё” и “Ё”) используют последние 64 кода
Коды 192..223 - “А”... “Я”,
Коды 224…255 - “а”... “я”
Слайд 19Операции и функции
Операции отношения ( и т.д.), - сравнивается код
C:=Сhr
(b) – c: char; b: Byte символ по коду при
b=48 с=‘0’;
UpCase(CH) - функция типа char; возвращает прописную букву, если сн - строчная латинская буква, в противном случае возвращает сам символ сн.
C1:= UpCase(C) при с=‘e’ c1=‘E’
Слайд 20Тип-диапазон (ограниченный или интервальный тип )
Тип-диапазон представляет собой диапазон (интервал)
значений какого-либо типа (базового).
Тип-диапазон наследует все свойства своего базового типа,
но с ограничениями, связанными с его меньшей мощностью.
Тип-диапазон задается границами своих значений внутри базового типа:
<мин.знач.>..<макс.знач.>
Слайд 21type
digit = '0'..'9';
dig2 = 48 .. 57;
Тип-диапазон можно указывать непосредственно
при объявлении переменной, например:
var
date : 1..31;
month: 1..12;
Ichr : 'А'..'Z';
левая граница
диапазона не должна превышать его правую границу
Тип-диапазон (ограниченный или интервальный тип )
Слайд 22 Перечисляемый тип
Перечисляемый тип задается перечислением тех значений, которые
он может получать.
Каждое значение - идентификатор и располагается в
списке, в круглыми скобками, например:
type
colors = (red, white, blue);
Все значения типа пронумерованы, начиная с 0.
Это пользовательский тип, то есть определяется пользователем.
Слайд 23Максимальная мощность перечисляемого типа составляет 65536 значений. Если множество значений
меньше 256, то для хранения переменной выделяется 1 байт памяти,
если больше – 2 байта
Для данного типа не применимы операторы Read (Readln) и Write(Writeln)
Перечисляемый тип
Слайд 24type
colors = (black, red, white);
ordenal= (one, two, three) ;
Ord(black)=0, ...
, Ord(white)=2,
Ord(one)=0, ... , Ord(three)=2,
Перечисляемый тип
Слайд 25Var col : colors;
num : ordenal;
допустимы операторы
col := black;
num :=
Succ(two);
недопустимы
col := one;
Слайд 26эквивалентны следующие присваивания:
col := black;
col := colors (0) ;
Переменные перечисляемого
типа можно объявлять без предварительного описания этого типа, например:
var
col: (black,
white, green);
Слайд 28Встроенные математические функции
abs (x)
int(x)- цел часть r := Int(123.456);
R=123.0
frac(x)-дробная часть рез-т вещ число
r
:= frac(123.456); R=0.456
trunc(x) – отбрасывает дробную часть рез-т цел число
r := trunc(123.456); R=123
Слайд 29cos (x), sin (x)
exp(x)
ln(x)
sqr(x)
sqrt(x)
Слайд 30Тип дата-время TDateTime
Назначение: одновременное хранение и даты, и времени.
Внутреннее
представление: вещественное число с фиксированной дробной частью ~Double (8 байт).
Целая
часть числа - дата,
Дробная часть - время
Слайд 31Дата определяется количеством суток, прошедших с 30 декабря 1899 года,
время - часть суток, прошедших с 0 часов.
Функции:
Now – возвращает
сегодняшнее число и время;
Date – возвращает сегодняшнюю дату;
Time – возвращает время;
DateTimeToStr – переводит дату и время в строку;
DateToStr – переводит дату;
TimeToStr – переводит время в строку.
Слайд 32function Now: TDateTime;
Возвращает текущую дату и время
Writeln( Now);
Writeln( DateToStr(Now));
Слайд 33Процедура DecodeTime
Выделяет из переменной TDateTime часы минуты, секунды и миллисекунды
DecodeTime(Time,Hour,
Min, Sec, MSec);
Hour, Min, Sec, MSec типа Word
Time типа TDateTime
Слайд 34var
Present: TDateTime;
Year, Month, Day, Hour, Min, Sec, MSec:
Word;
Begin
Present:= Now;
DecodeDate(Present, Year, Month, Day);
end.
Слайд 35Преобразование (приведение) типов
Для использования одного итого и того же значения
переменных разного типа данных необходимо осуществить его приведение к необходимому
формату (типу).
Типы преобразования:
не явное (для совместимых типов);
явное (для совместимых и несовместимых типов).
Слайд 36Неявное преобразование
Для совместимых типов осуществляется компилятором автоматически в процессе присваивания.
Пример
Var
I:integer; W:word; R:real;
I:=W ;(всегда) W:=I; (иногда)
R:=I; (всегда) I:=R; (никогда)
Слайд 37Явное преобразование
Для совместимых типов осуществляется программистом при помощи конструкции
()
Можно
использовать как в правой так и в левой частях оператора
присваивания.
Пример: var c:char; i:byte;
c:=char(i); byte(c):=I;
Явное преобразование несовместимых типов осуществляется с помощью функций round, trunc и т.д.