Содержание
-
Лекция 2ТИПЫ ДАННЫХ(ПРОСТЫЕ ТИПЫ)
-
ТИПЫ Простые Порядковые Веществен- ные Целые Логический Символьный Перечисля- емый Структуриро- ванные Указатели Строки Процедурные Обьекты массивы Записи Множества Файлы
-
Концепция типа данных. Все данные, используемые в программе, должны быть предварительно определены, т.е. для каждого данного надо обозначить · имя, · характер и диапазон изменения значений, · требуемую память для размещения, · набор допустимых к ним операций. Для определения данных можно использовать 2 способа объявления данных в программе: · посредством задания их значений. · путем задания их типов - для данных изменяющих свои значения при выполнении программы.
-
В любом алгоритмическом языке каждая константа, переменная, выражение или функция бывают определенного типа. В языке ПАСКАЛЬ существует правило: тип явно задается в описании переменной или функции, которое предшествует их использованию. Обязательное описание типа приводит к избыточности в тексте программ, но такая избыточность является важным вспомогательным средством разработки программ и рассматривается как необходимое свойство современных алгоритмических языков высокого уровня.
-
Тип определяет: возможные значения переменных, констант, функций, выражений, принадлежащих к данному типу; внутреннюю форму представления данных в ЭВМ; операции и функции, которые могут выполняться над величинами, принадлежащими к данному типу.
-
Простые порядковые типы (целые, логический, символьный, перечисляемый). Имеют общие свойства: все возможные значения порядкового типа представляют собой ограниченное упорядоченное множество; к любому порядковому типу могут быть применены стандартные функции: Ord. В качестве результата возвращает порядковый номер конкретного значения в данном типе; для целых – само целое число, длялогического типа – 0,1, для символьного типа 0-255 , для перечисляемого типа 0-65535. Pred и Succ, которые возвращают предыдущее и последующее значения соответственно; с:=‘5’, pred(c) –4, succ(5) –6. Low и High, которые возвращают наименьшее и наибольшее значения величин данного типа. Если K:integer, то Low(k) - -32768, High(k) – 32767
-
Целые типы. Целые типыопределяют константы, переменные и функции, значения которых реализуются множеством целых чисел, допустимых в данной ЭВМ. В Tурбо Пaскaле используются пять целочисленных типов данных , наиболее распространенным среди которых является тип INTEGER
-
Целые типы тип диапазон значенийтребуемая память Shortint-128 .. 1271 байт Integer-32768 .. 327672 байта Longint-2147483648 .. 21474836474 байта Byte0 .. 2551 байт Word0 .. 655352 байта
-
Над целыми можно выполнять следующие арифметические операции: сложение(+), вычитание(-), умножение(*), деление(/), деление нацело(div), получение остатка от деления(mod).
-
Результат арифметической операции над целыми операндами есть величина целого типа. Результат выполнения операции деления целых величин есть целая часть частного. Результат выполнения операции получения остатка от деления - остаток от деления целых. Например: деление нацело(div). получение остатка от деления(mod). 17 div 2 = 8 3 div 5 = 0 17 mod 2 = 1 3 mod 5 = 3.
-
Над целыми можно выполнять следующие операции отношения: равенство =, неравенство , больше или равно >=, меньше или равно , меньше
-
К аргументам целого типа применимы следующие стандартные (встроенные) функции, 1. результат выполнения имеет целый тип: Abs(X) - абсолютное значение Х Sqr(X), - X в квадрате Succ(X) - Х+1 Pred(X) - Х-1. 2. результат выполнения имеетдействительный тип: Sin(X) - синус Х Cos(X) - косинус Х ArcTan(X) - арктангенс угла, заданного в радианах, Ln(X) - логарифм натуральный Exp(X) - экспонентуХ Sqrt(X) - корень квадратный Х.
-
Целую величину можно проверить на нечетность при помощи функции Odd(X). Результат имеет значение истина, если аргумент нечетный, и значение ложь, если аргумент четный: X=5 Odd(X)=TRUE X=4 Odd(X)=FALSE
-
Для быстрой работы с целыми числами определены процедуры: Inc(X) X:=X+1 Inc(X,N) X:=X+N Dec(X) X:=X-1 Dec(X,N) X:=X-N
-
Примеры объявления целочисленных данных: const step=1; mm:word=65500; var a:integer; c,d:byte; f:shortint;
-
Логический тип (Boolean) Определяет данные, которые могут принимать логические значения TRUE и FALSE. Логический тип определен таким образом, что FALSE
-
В ТУРБО ПАСКАЛЬ введены еще разновидности логического типа: ByteBool, WordBool и LongBool, которые занимают в памяти ЭВМ один, два и четыре байта соответственно. Пример объявления логических данных: const a=true; var b:boolean;
-
Символьный тип(Char) Значение символьной переменной или константы - это один символ из допустимого набора. Символьная константа может записываться в тексте программы тремя способами: как один символ, заключенный в апострофы, например: 'A' 'a' 'Ю' 'ю'; с помощью конструкции вида #K, где K - код соответствущего символа, при этом значение K должно находиться в пределах 0..255; с помощью конструкции вида ^C, где C - код соответствующего управляющего символа.
-
К величинам символьного типа применимы все операции отношения. Для величин символьного типа определены две функции преобразования Ord(C) Chr(K). Ord(C) определяет порядковый номер символа С в наборе символов, Chr(K) определяет по порядковому номеру К символ, стоящий на К-ом месте в наборе символов. Порядковый номер имеет целый тип. К аргументам символьного типа применяются функции, которые определяют предыдущий и последующий символы: Pred(C) Succ(C). Pred('F') = 'E' ; Succ('Y') = 'Z' . При отсутствии предыдущего или последующего символов значение соответствующих функций не определено.
-
Для литер из интервала 'a'..'z' применима функция UpCase(C), которая переводит эти литеры в верхний регистр 'A'..'Z'. Пример объявления переменной и константы символьного типа: var cimv:char; const vsym='A';
-
Перечисляемый тип данных Представляет собой ограниченную упорядоченную последовательность скалярных констант. Значение каждой константы задается ее именем. Имена отдельных констант отделяются друг от друга запятыми, а вся совокупность констант, составляющих данный перечисляемый тип, заключается в круглые скобки. Обьединяется в одну группу в соответствии с каким - либо признаком вся совокупность значений, составляющих перечисляемый тип.
-
Например, перечисляемый тип Rainbow(РАДУГА) объединяет скалярные значения: RED, ORANGE, YELLOW, GREEN, LIGHT_BLUE, BLUE, VIOLET (КРАСНЫЙ, ОРАНЖЕВЫЙ, ЖЕЛТЫЙ, ЗЕЛЕНЫЙ, ГОЛУБОЙ, СИНИЙ, ФИОЛЕТОВЫЙ). Traffic_Light (СВЕТОФОР) объединяет скалярные значения RED, YELLOW, GREEN (КРАСНЫЙ, ЖЕЛТЫЙ, ЗЕЛЕНЫЙ). Перечисляемый тип описывается в разделе описания типов, который начинается со служебного слова type, например: type Rainbow = (RED, ORANGE, YELLOW, GREEN, LIGHT_BLUE, BLUE, VIOLET);
-
Каждое значение является константой своего типа и может принадлежать только одному из перечисляемых типов, заданных в программе. Так, перечисляемый тип Traffic_Light не может быть определен в одной программе с типом Rainbow, так как оба типа содержат одинаковые константы. Описание переменных, принадлежащих к скалярным типам, которые объявлены в разделе описания типов, производится с помощью имен типов. Например: type Traffic_Light= (RED, YELLOW, GREEN); var Section: Traffic_Light; Это означает, что переменная Section может принимать значения RED, YELLOW или GREEN.
-
Переменные перечисляемого типа могут быть описаны в разделе описания переменных, например: var Section: (RED, YELLOW, GREEN); При этом имена типов отсутствуют, а переменные определяются совокупностью значений, составляющих данный перечисляемый тип. К переменным перечисляемого типа может быть применим оператор присваивания: Section:= YELLOW;
-
Упорядоченная последовательность значений, составляющих перечисляемый тип, автоматически нумеруется, начиная с нуля, поэтому к перечисляемым переменным и константам могут быть применены операции отношения и стандартные функции Pred, Succ, Ord. Переменные и константы перечисляемого типа не могут быть элементами списка ввода или вывода.
-
Интервальный тип (тип-диапазон). Отрезок любого порядкового типа может быть определен как интервальный или ограниченный тип. Отрезок задается диапазоном от минимального до максимального значения констант, разделенных двумя точками. В качестве констант могут быть использованы константы, принадлежащие к целому, символьному, логическому или перечисляемому типам. Скалярный тип, на котором строится отрезок, называется базовым типом. Минимальное и максимальное значения констант называются нижней и верхней границами отрезка, определяющего интервальный тип.
-
Нижняя граница должна быть меньше верхней. Над переменными, относящимися к интервальному типу, могут выполняться все операции и применяться все стандартные функции, которые допустимы для соответствующего базового типа. При использовании в программах интервальных типов данных может осуществляться контроль за тем, чтобы значения переменных не выходили за границы, введенные для этих переменных в описании интервального типа. type Dig1 =’0’..’9’; Dig2=48..57;
-
Type Days=(mo,tu,we,th,fr,sa,su); WeekEnd=sa..su; Var w:WeekEnd; Begin ….. W:=sa; … End; Ord(w) – вернет значение 5, Pred(w) – приведет к ошибке.
-
High(x)- возвращает максимальное значение типа-диапазона, к которому принадлежит х. Low(x) - возвращает минимальное значение типа-диапазона, к которому принадлежит х. Var k:integer; Begin WriteLn(Low(k),’…’,High(k)); End. Результат –32768 …32767
-
Вещественные типы В отличие от порядковых типов, значения которых всегда сопоставляются с рядом целых чисел и, следовательно, представляются в ПК абсолютно точно, значения вещественных типы определяют произвольное число лишь с некоторой конечной точностью, зависящей от внутреннего формата числа.
-
Длина Назва- Кол-во Диапазон ние значащих десятичного цифр порядка. -------------------------------------------------------------------- 4 Single 7… 8 Real 11…12 -39… +38 Double 15…16 -324…+308 Extended19…20 -4951…+4932 Comp 19…20 -2*10 в 63 степ.+1… +2*10 в 63 степ.-1
-
Вещественное число занимает от 4 до 10 смежных байт и имеет следующую структуру в памяти ПК. S- знаковый разряд числа E –экспоненциальная часть M- мантисса S | E | M
-
Мантисса m имеет длину от 23 (для SINGLE) до 63 (для EXTENDED) двоичных разрядов, что и обеспечивает точность 7.. .8 для SINGLE и 19.. .20 для EXTENDED десятичных цифр. Десятичная точка (запятая) подразумевается перед левым (старшим) разрядом мантиссы, но при действиях с числом ее положение сдвигается влево или вправо в соответствии с двоичным порядком числа, хранящимся в экспоненциальной части, поэтому действия над вещественными числами называют арифметикой с плавающей точкой (запятой).
-
Доступ к типам SINGLE, DOUBLE и EXTENDED возможен только при особых режимах компиляции. Эти типы рассчитаны на аппаратную поддержку арифметики с плавающей точкой и для их эффективного использования в состав ПК должен входить арифметический сопроцессор. Компилятор Турбо Паскаля позволяет создавать программы, работающие на любых ПК (с сопроцессором или без него) и использующие любые вещественные типы. В процессе запуска Турбо Паскаль проверяет состав аппаратных средств и выявляет наличие или отсутствие сопроцессора.
-
В некоторых случаях бывает необходимо отключить автоконтроль. Для этого перед запуском Турбо Паскаля следует дать такую команду ДОС: set 87=N команда set 87=Y напротив, включает автоконтроль - эта команда активна по умолчанию. Арифметический сопроцессор всегда обрабатывает числа в формате EXTENDED, а три других вещественных типа в этом случае получаются простым усечением результатов до нужных размеров и применяются в основном для экономии памяти.
-
Тип REAL оптимизирован для работы без сопроцессора. Если Ваш ПК оснащен сопроцессором, использование типа REAL приведет к дополнительным затратам времени на преобразование REAL к EXTENDED. Поэтому никогда не используйте REAL на ПК с сопроцессором, т.к. дополнительные затраты времени на преобразование типов могут свести на нет все преимущества сопроцессора. При разработке программ, критичных ко времени счета, следует заменять его типами SINGLE или DOUBLE: по сравнению с типом REAL скорость вычислений на машинах с сопроцессором в этом случае увеличивается в 2...3 раза. Если в ПК нет арифметического сопроцессора, скорость обработки данных всех вещественных типов приблизительно одинакова.
-
Особое положение в Турбо Паскале занимает тип СОМР, который трактуется как вещественное число без экспоненциальной и дробной частей. Фактически, СОМР - это «большое» целое число со знаком, сохраняющее 19...20 значащих десятичных цифр (во внутреннем представлении СОМР занимает 8 смежных байт). В то же время в выражениях СОМР полностью совместим с любыми другими вещественными типами: над ним определены все вещественные операции, он может использоваться как аргумент математических функций и т.д. Наиболее подходящей областью применения типа СОМР являются бухгалтерские расчеты: денежные суммы выражаются в копейках или центах и действия над ними сводятся к операциям с достаточно длинными целыми числами.
-
Нет комментариев для данной презентации
Помогите другим пользователям — будьте первым, кто поделится своим мнением об этой презентации.