Структура типов данных
Правила записи разделов программы.
Лекция 13
Программа на Паскале начинается с предложения:
Program < имя программы >;
Завершает программу оператор End с точкой. Разделителем операторов является символ точка с запятой ( ; ).
Раздел модулей. Модуль - это специальным образом оформленная программная единица, которая может содержать описание типов данных, описание переменных, процедуры и функции. Основная цель при использовании модулей - разукрупнить программу.
Для использования одного или нескольких модулей в программе необходимо после заголовка записать ключевое слово USES и далее указать список имен модулей, разделяемых запятыми, например:
PROGRAM MYPR1;
USES CRT, GRAPH, PRIN;
Если какой-либо модуль использует другие модули, то в списке модулей его имя должно располагаться после всех используемых им модулей.
Раздел меток. Любой выполняемый оператор может быть помечен меткой. В качестве меток можно использовать целые числа в диапазоне 0…9999 или последовательности букв и цифр, начинающиеся с буквы. Все метки должны быть указаны в разделе меток, например:
LABEL 15, 26, 4, FIN1;
Каждая указанная метка должна появиться в разделе операторов. В разделе операторов метка располагается перед оператором и отделяется от него символом двоеточие (:), например
15 : READ(P, Q);
Раздел констант. В ТР под термином константа понимается конкретное значение того или иного типа, которое зафиксировано в тексте программы и не может быть изменено в процессе выполнения программы. Константы задаются при помощи идентификатора в виде:
Идентификатор константы = значение константы.
Раздел начинается с ключевого слова CONST после которого может быть указано любое количество констант различного типа. Разделитель - запятая. Пример
Const NT=50, KST=20;
Имена констант рекомендуется записывать прописными буквами, чтобы легко отличать их от других переменных.
Числа представляют собой константы целого или вещественного типов. Для записи констант целого типа используется обычная десятичная запись в виде чисел без дробной части в диапазоне.
Вещественные константы записываются в форме чисел с десятичной точкой ( 2.54 ), либо в форме с экспонентой, например
вещественные: c точкой125.3с экспонентой1.253Е2 ,где Е читается как "умножить на десять в степени".
При записи числа с точкой слева и справа от точки должно быть хотя бы по одной цифре.
правильно 0.456 неправильно .456
Строковые константы представляют собой последовательности символов заключенные в апострофы, например 'АВС'. Символ апостроф обозначается двумя апострофами, например
ИС 'К155ИЕ5' соответствует 'ИС ''К155ИЕ5'''.
Раздел типов. Этот раздел предназначен для указания типов данных создаваемых программистом (кроме типов данных предусмотренных в языке программист может создавать собственные типы данных). Типы данных указываются в этом разделе в виде
Идентификатор типа = тип;
Например, если в алгоритме используется массивы из 100 элементов целого типа, то можно определить идентификатор типа для таких массивов в виде
TYPE RM1 = ARRAY [ 1 .. 100 ] OF INTEGER; ,
А затем использовать этот идентификатор при объявлении типов переменных.
Раздел переменных. Для всех переменных, используемых в программе, должен быть указан их тип. Тип переменных указывается в разделе VAR, общая форма которого имеет вид
Var список имен : идентификатор типа ;
. . . . . . . . . . . . .
список имен : идентификатор типа ;
Например, запись вида
Var K, N, M : Integer ;
St, Ph : Extended ;
означает, что в программе используется три переменные (K, N, M) целого типа и две переменные (St, Ph) вещественного типа.
Раздел процедур и функций. В этом разделе размещаются тексты подпрограмм (процедур и функций), используемых в программе.
Раздел операторов. В этом разделе располагается текст главной программы. Раздел операторов начинается с ключевого слова BEGIN и заканчивается словом END.
4.6.1. Типы данных
Типы переменных в ТР делятся на простые и структурные. Используя эти типы программист может создавать свои собственные типы. Структура типов данных Delphi приведена на рис.4.12.1. К простым типам относятся вещественные типы и порядковые типы. Порядковые типы в свою очередь включают в себя: целые типы, символьный тип, булевский тип, отрезок типа, перечислимый тип.
Рис.4.12.1.
К структурным типам относятся: тип массив, файловый тип, множественный тип, тип – запись, указатель, тип – класс.
Для всех переменных в программе должен быть указан тип. Тип переменной определяет набор значений, которые она может принимать и действия, которые над ними можно выполнять.
Заметим, что к переменным всех типов можно применять операции отношения (> >= < <= = <>). Результатом этих операций являются значения TRUE или FALSE.
4.6.2. Вещественные типы.
К вещественному типу относится подмножество вещественнных чисел, которые могут быть представлены в форме с плавающей точкой с фиксированным числом цифр. В ТР есть пять видов вещественных типов отличающихся диапазоном значений, точностью представления числа и длинной ячейки памяти.
Таблица 13.1 Вещественные типы
тип | диапазон | точность | длина |
Single | 2E-45 .. 3E38 | 7 .. 8 | 4 Б |
Real | 3E-39 ..2E38 | 11 .. 12 | 6 Б |
Double | 5E-324.. 1.7E-308 | 15 .. 16 | 8 Б |
Extended | 1.9E-4951 .. 1.1E4932 | 19 .. 20 | 10 Б |
В таблицу не включен вещественный тип СОМР, предназначенный для задач связанных с финансовыми расчетами. Этот тип трактуется как вещественное (чтобы можно было использовать математические функции) число без экспоненциальной и дробной частей.
Пример объявления переменных вещественного типа:
VAR A, B, SUM : EXTENDED;
К данным вещественного типа можно применять арифметические операции
+ - * /
и стандартные функции. Список стандартных функций для данных вещественного типа приведен в таблице 13.2. В этой таблице Integer означает любой целый тип, а Real – любой вещественный тип. Указанная в таблице 13.2 функция Random предназначена для формирования последовательности псевдослучайных чисел.
Таблица 13.2
Обращение | Тип параметра | Тип результата | Примечание |
Abs(x) | Real, Integer | Тип аргумента | Модуль аргумента |
ArcTan(x) | Real | Real | Арктангенс (значение в радианах) с |
Cos(x) | Real | Real | Косинус (угол в радианах) |
Exp(x) | Real | Real | Экспонента (![]() |
Frac(x) | Real | Real | Выделение дробной части числа |
Int(x) | Real | Real | Выделение целой части числа |
Ln(x) | Real | Real | Натуральный логарифм |
Pi | Real | ![]() | |
Random | Real | Псевдослучайное число, равномерно распределенное в диапазоне 0 . . .|1| | |
Random(x) | Integer | Integer | Псевдослучайное целое число, равномерно распределенное в диапазоне 0 . . .(х-1) |
Randomize | Инициализация генератора псевдослучайных чисел | ||
Sin(x) | Real | Real | Синус, угол в радианах. |
Sqr(x) | Real | Real | Квадрат аргумента. |
Sqrt(x) | Real | Real | Корень квадратный |
Round(X) | Real | Integer | Округление до ближайшего целого числа |
Trunc(X) | Real | Integer | Округление в сторону нуля |
Правила.
1. Старшинство операций: * / + - (без скобок, слева направо).
2. Арифметические выражения могут содержать данные целого и вещественного типов. Если хотя бы один операнд в выражении вещественный, то и результат будет вещественного типа.
3. Для операции деления результат всегда вещественного типа.
4.6.3. Порядковые типы.
Эти типы характеризуются следующими свойствами:
- все возможные значения данного порядкового типа представляют собой упорядоченное множество и каждое возможное значение связано с порядковым номером;
- для целого типа порядковым номером является само значение, для остальных типов первое значение имеет номер ноль, следующее 1 и т.д.