
- •Тема 2.2. Основные понятия языка программирования высокого уровня Free Pascal
- •Системы программирования
- •Интегрированная среда разработки FreePascal
- •Введение в язык Паскаль Характеристика языка программирования Паскаль
- •Основные понятия технологии программирования
- •Алфавит языка Паскаль
- •Структура программы на Паскале
- •Типы данных
- •Стандартные типы данных
- •Структуры данных
- •Строковый тип
- •Структурированные переменные
- •Представление основных структур программирования на языке Паскаль Операции и выражения
- •Арифметические операции и выражения
- •Логические операции
- •Оператор присваивания
- •Составной оператор
- •Условный оператор
- •Процедура write
- •Процедура ввода
- •Оператор выбора
- •Операторы повторений
- •Оператор цикла с предусловием
- •Оператор цикла с постусловием
- •Оператор цикла с параметром
- •Метки и операторы перехода
- •Работа с массивами
- •Операции над строками
- •Функция Length
- •Функция Upcase
- •Функция Сopy
- •Функция Pos
- •Процедуры Insert и Delete
- •Процедура Str
- •Процедура val
- •Практические примеры работы со строковыми данными
- •Оператор присоединения with
- •Процедуры и функции Паскаля
- •Формальные и фактические параметры
- •Типизированные константы
- •Interface
- •Implementation
- •Interface
- •Interface
- •Implementation
- •Файловый тип данных Типизированные файлы
- •Текстовые файлы
Стандартные типы данных
Следует иметь в виду, что при решении задач ЭВМ оперирует не со значениями, а с их обозначениями, которыми являются конфигурации битов, байтов или слов. Чтобы ЭВМ могла при выполнении операций распознавать принадлежность этих конфигураций к тому или иному типу данных, необходимо при разработке алгоритмов, и особенно программ, прямо указывать эту принадлежность. Достигается это путем явного описания типов используемых данных. В зависимости от типа, заданного в описании переменной, она может принимать текущие значения только указанного типа. Например, если тип переменной A указан как «целый», то она в данный момент времен может иметь любое значение из допустимого множества целых чисел {...–3, –2, –1, 0, 1, 2, 3, ...}; если тип переменной B указан как «логический», то текущее значение может быть одним из двух {истина, ложь}.
Каждый тип данных характеризуется так называемым кардинальным числом – количеством различных значений, принадлежащих типу. Для каждого типа данных должен быть строго определен набор операций, которые можно применять при обработке данных этого типа.
Изначально определенные типы данных называются простыми, причем те из них, которые непосредственно «встроены» в ЭВМ, носят название стандартных типов. Каждый алгоритмический язык программирования предоставляет пользователю набор различных типов элементарных данных, средства их описания и операторы обработки, обеспечивающие выполнение над данными тех или иных действий. Компилятор связывает имя элемента данных с определенным адресом памяти ЭВМ, по которому в процессе выполнения программы хранится значение именованного элемента данных, что освобождает программиста от необходимости знать этот адрес.
Важнейший принцип Паскаля: все используемые в программе имена должны быть описаны до их употребления.Описать идентификатор– это значит указать тип связанного с ним объекта программы.
В каждом языке программирования имеются свои правила записи идентификаторов. Чаще всего это последовательность латинских букв и цифр, начинающаяся с буквы. В Паскале правила записи идентификаторов следующие:
идентификатор может состоять из букв латинского алфавита, цифр, знака подчеркивания;
идентификатор не может начинаться с цифры;
идентификатор не может совпадать ни с одним из зарезервированных слов;
длина идентификатора может быть произвольной, но значащими считаются первые 63 символа.
Например:
A, B, M, N, SUMMA, Z1, Z2, Z3, PRIMA14, FIRST_VALUE.
В стандартном Паскале знак подчеркивания не используется.
К простым типамотносятся:целочисленный, логический, символьный, перечисляемый, интервальный, вещественный. На основе простых типов данных можно строить различные структурированные типы данных любой степени сложности.
Все, используемые в программе объекты, связываются с существующими в языке типами данных в специальном описательном блоке программы. Для описания типов данных используются специальные служебные слова.
Тип целыйсодержит подмножество целых констант, при этом кардинальное число подмножества различается для разных ЭВМ.
В Паскале имеется пять предопределенных целочисленных типов: Shortint (короткое целое), INTEGER (целое), Longint (длинное целое), BYTE (длиной в байт) и WORD (длиной в слово). Справочная информация о всех этих типах целочисленных переменных, доступных в Паскале, с указанием диапазона допустимых значений и размера требуемой для их размещения области памяти, приведена в табл. 11.
Таблица 11. Простые типы данных
Тип |
Допустимые значения |
Формат |
Shortint |
–128..127 |
1 байт со знаком |
INTEGER |
–32768..32767 |
2 байта со знаком |
Longint |
–2147483648..2147483647 |
4 байта со знаком |
BYTE |
0..255 |
1 байт без знака |
WORD |
0..65535 |
2 байта без знака |
В тексте программы целочисленные значения записываются в привычной для любого пользователя форме. Например, числа 5300 и -25 можно записать следующим образом: 5300 (или +5300) и -25.
В Паскале любое значение, относящееся к целочисленному типу, должно быть явно представлено в тексте программы и не должно при этом содержать в себе десятичной точки, т.е. записи вида 53Е+2 или -25.0 являются ошибками. Паскаль позволяет записывать целочисленные значения в шестнадцатеричном формате данных. При необходимости использовать шестнадцатеричное число в тексте программы следует ввести с клавиатуры символ $, после чего непосредственно набрать само число. Например: $F1 или -$70
Если i и j, например, идентификаторы переменной целого типа, то в описательной части программы должна присутствовать запись:
i, j : integer;
Стандартные операции для целых – это четыре действия арифметики: сложение, вычитание, умножение и деление нацело. Последняя операция должна давать целый результат, опуская возможный остаток. Эти операции над целыми числами производятся абсолютно точно, и результатами этих операций снова являются целые числа. В Паскале есть еще две операции над целыми числами: div и mod. Эти операции имеют по два целых операнда (аргумента): если значения a и b неотрицательны и b ≠ 0, то a div b и a mod b – это целое частное и остаток, возникающие при делении a на b. Например,
17 div 3 = 5, 17 mod 3 = 2, 8 div 2 = 4, 8 mod 2 = 0, 1 div 5 = 0, 1 mod 5 = 1.
Эти операции одного старшинства с умножением и делением, что важно иметь в виду при вычислениях выражений.
Тип вещественный(или действительный) обозначает подмножество вещественных констант. В то время как арифметические действия с целыми дают точные результаты, для арифметических действий над вещественными числами (операции сложения, вычитания, умножения, деления) допускается неточность в пределах ошибок округления. В этом и состоит явное различие между типами «целый» и «вещественный», характерное для большинства языков программирования. Для чисел вещественного типа в языке Паскаль определено пять стандартных вещественных типов: вещественный (REAL), с одинарной точностью (SINGLE), с двойной точностью (DOUBLE), с повышенной точностью (EXTENDED) и сложный (COMP). Справочная информация об используемых в Паскале вещественных типах, с указанием диапазона допустимых значений и размера требуемой для их размещения области памяти, приведена в табл. 12.
К вещественному типу данных относится подмножество вещественных чисел, которые могут быть представлены в формате с фиксированной точкой и с плавающей десятичной точкой. Числа с фиксированной точкой записываются в виде целой и дробной частей числа. Например: 5.45, -0.001, 17.0, -9.1919, 0.143. Запись числа не может начинаться или заканчиваться точкой.Числа с плавающей точкойиспользуются для записи чисел, изменяющихся в широком диапазоне значений (от очень маленьких до очень больших). Десятичный порядок числа записывается буквой Е. Например, 65.4Е22 соответствует 65.4 · 1022. Числа с плавающей точкой: 0.547Е+3, 5.47Е+2, 54.7Е+1, 547.0Е0, 5470Е-1, 54700Е-2 представляют одно и тоже число 547.
Таблица 12. Вещественный тип данных
Тип |
Допустимые значения |
Точность |
Формат |
REAL |
2.9 10-39.. 1.710+38 |
11-12 знаков |
6 байт |
SINGLE |
1.5 10-45..3.410+38 |
7-8 знаков |
4 байта |
DOUBLE |
5.0 10-324.. 1.710+308 |
15-16 знаков |
8 байт |
EXTENDED |
3.4 10-4932.. 1.110+4932 |
19-20 знаков |
10 байт |
СОМР |
–9.2 10+18.. 9.210+18 |
19-20 знаков |
8 байт |
Для обработки действительных (вещественных) чисел предусмотрены следующие операции: сложение (+), вычитание (–), умножение (*), деление (/). Операции возведение в степень в Паскале не существует. Если c = ab, то с рассчитывают по формуле с = е(b · ln a).
Если a и b переменные вещественного типа, то в описательной части программы должно присутствовать
a, b : real;
Как уже говорилось, тип переменной позволяет не только устанавливать длину ее внутреннего представления, но и контролировать те действия, которые выполняются над ней в программе. Контроль за использованием переменных – важное преимущество Паскаля перед другими языками программирования, в которых допускается автоматическое преобразование типов. В Паскале почти невозможны неявные преобразования типов. Исключение сделано только в отношении констант и переменных типа INTEGER (целые), которые разрешается использовать в выражениях типа REAL.
Тип логическийсодержит всего два значения, которые обозначаются как истина и ложь (TRUE и FALSE). Слово BOOLEAN описывает логические переменные. Логические переменные используются для хранения результатов логических вычислений. Значения TRUE и FALSE являются по своей сути идентификаторами констант. Для идентификаторов констант FALSE и TRUE имеет место следующее отношение: False < True.
Для булевых переменных разрешены только сравнения “>“ (больше), “<“ (меньше), “>=“ (больше или равно), “<=“ (меньше или равно), “=“ (равно) и “<>“ (не равно). Другими допустимыми операциями являются: логическое сложение (AND), логическое умножение (OR), отрицание (NOT). Переменные типа BOOLEAN занимают 1 байт памяти.
Тип литерный (символьный)включает множество печатаемых символов. Символьный тип CHAR – представляет собой тип данных, предназначенный для хранения одного символа (буквы, знака или кода). В переменную этого типа на компьютере IBM может быть помещен любой из 256 символов расширенного кода ASCII. Это буквы [ ‘A’...’Z’, ‘a’...’z’], цифры [‘0’...’9’ ], знаки препинания и специальные символы. Переменная типа CHAR в памяти занимает 1 байт. Значения для переменных типа CHAR задаются в апострофах. Кроме того, имеется возможность задавать значения указанием числового значения ASCII-кода. В этом случае перед числом, обозначающим код ASCII символа, ставится знак (#). Например, СН:= #65 – присвоение переменной СН символа с ASCII кодом 65, то есть символа ‘A’. Описание символьной переменной:
u, v : char;
Если константа в программе обозначена идентификатором, то ее необходимо объявить в описательной части с помощью служебного слова CONST. Например,
CONST year = 1998; time = 12.05;
year – константа целого типа, так как не имеет в записи числа десятичной точки; time – константа вещественного типа.
Раздел объявления переменных начинается зарезервированным словом VAR, вслед за которым располагаются конкретные переменные. Для объявления переменной необходимо указать имя переменной и ее тип. Например,
VAR
a: INTEGER;
d, c: REAL;
b, e, f, g: CHAR;
Запрет на автоматическое преобразование типов еще не означает, что в Паскале нет средств преобразования данных. Для преобразования данных в языке существуют встроенные функции, которые получают в качестве параметра значение одного типа, а возвращают результат в виде значения другого типа. Для преобразования данных типа CHAR (символ) в целое число предназначена функция ORD, обратное преобразование INTEGER в CHAR осуществляет функция CHR.
В частности, для преобразования REAL в INTEGER имеются даже две встроенные функции такого рода: ROUND округляет REAL до ближайшего целого, а TRUNC усекает REAL путем отбрасывания дробной части.
trunc(3.14) = 3, trunc(-3.14) = -3, trunc(3.7) = 3.
round(3.14) = 3, round(3.7) = 4, round(-3.14) = -3.