
- •Введение
- •Рекомендуемая литература
- •1. Алгоритмизация и основные этапы работы на эвм
- •1.1. Основные этапы подготовки решения задач на эвм
- •1.2. Алгоритмы и способы их описания.
- •1.3. Базовые алгоритмические структуры.
- •2. Основы программирования
- •2.1. Машинный код процессора
- •2.2. Классификация языков программирования
- •3. Интегрированная среда разработки (иср) Lazarus
- •3.1 Основные характеристики
- •3.2. Консольное приложение
- •3.3. Характеристика проекта консольного приложения
- •4. Алфавит языка Free Pascal
- •4.1. Типы данных
- •4.2. Выражения
- •4.3. Основные стандартные функции
- •4.4. Процедуры ввода и вывода
- •4.5. Операторы
- •4.6. Массивы.
- •4.7. Подпрограммы.
- •4.8. Модули.
- •5. Контрольная работа «Программирование основных алгоритмических структур на языке Free Pascal»
- •5.1. Задания контрольной работы
- •5.2. Требования по оформлению пояснительной записки
- •Министерство рф по связи и информатизации Поволжский государственный университет телекоммуникаций и информатики
- •Программирование основных алгоритмических структур на языке Free Pascal
- •5.3. Методические указания по выполнению заданий
- •6. Перечень контрольных вопросов
4.1. Типы данных
4.1.1. Классификация типов
Тип является одним из фундаментальных понятий языка Free Pascal. Введение типа дало возможность автоматического поиска ошибок при компиляции, что в итоге приводит к созданию надёжных (корректных) программ.
Типы могут быть стандартными и определяемыми пользователем. Стандартные типы известны компилятору, а потому не нуждаются в объявлении. Напротив, типы, определяемые пользователем, должны быть объявлены в разделе объявлений. Соответствующий подраздел этого раздела начинается со служебного слова type и имеет следующий формат:
type
<имя типа 1> = <определение типа 1>;
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
<имя типа N> = <определение типа N>;
В языке Free Pascal используется 5 групп типов данных – простые, структурированные, процедурные типы, указатели и объекты. Их содержание показано на рис. 6, где затененные блоки соответствуют нестандартным типам. Для первого знакомства с языком достаточно ограничиться наиболее часто используемыми типами.
Рис. 6. Классификация типов данных.
4.1.2. Простые типы.
Целый тип обозначает множество целых чисел. В зависимости от диапазона их значений имеется несколько типов целых чисел. Над целыми значениями допустимы 4 арифметические операции – сложение, вычитание, умножение, деление нацело (дробная часть отбрасывается) и взятие остатка от деления.
Л
Целый
тип
Порядок
Число байт
Byte
0...255
1
Word
0...65535
2
Shortint
-128...127
1
Smollint
-32768...+32767
2
Integer
-2147486648…
+2147487647
4
Символьный тип определяет множество символов, состоящее из 256 различных символов. Каждый символ имеет свой порядковый номер (код), который присваивается ему в соответствии с системой ASCII (американский стандартный код для обмена информацией). Этот номер (код) и является значением символа.
Над значениями символьного типа возможны операции сравнения – >, <, = и т.д. Символьный тип имеет идентификатор Char.
Значения символьного типа, имеющие физическое изображение (т.е. которые можно вывести на печать - символы алфавита и т.п.) заключаются в апострофы. Например, 'x', '+', '>'. Для символов, не имеющих физического изображения (управляющие символы), используется их код с символом # перед ним. Например, #13 (код клавиши <Enter>).
Перечисляемый тип определяется путём явного перечисления всех возможных значений, причём каждое такое значение будет определяться только именем.
Формат записи нового перечисляемого типа:
<имя типа> = (<идентификатор 1, ..., идентификатор N>);
Здесь важен порядок перечисления идентификаторов, т.к. первому идентификатору присваивается порядковый номер 0, второму - 1 и т.д. Кроме того, один и тот же идентификатор можно использовать в определении только одного перечисляемого типа. Например, перечисляемый тип Operat = (Plus, Minus, Divide); образован из строкового типа (смотри ниже). Он говорит о том, что над значениями его типа возможны только три операции: сложение, вычитание и деление.
Тип-диапазон получается в результате сужения допустимого диапазона значений некоторого стандартного типа. Это сужение определяется заданием минимального и максимального значений диапазона.
Формат записи нового типа-диапазона:
<имя типа> = <минимальное значение>..
<максимальное значение>;
Имя типа вводится программистом произвольно, но не из числа зарезервированных слов языка. Например, тип Dozen = 1..12; образован из целого типа, а тип Book = 'a'..'s'; - из символьного типа.
В
Тип
Порядок
Число
байт
Single
-45..+38
4
Real
-39..+38
6
Double
-324..+308
8
Extended
-4951..+4932
10
Comp
-263+1..+263-1
8
4.1.3. Структурированные типы.
Структура объединяет группу разных данных под одним названием. В языках программирования массив является дополнением к структурам. Массив – сложный тип данных, доступ к элементам которого происходит по их положению, по номеру или индексу. При описании массива указывается его размер (число элементов) или верхняя и нижняя границы – диапазон, в рамках которого можно обращаться к элементам массива. Формат объявления массива:
array [<нижняя граница . . верхняя граница>] of <тип>;
Например, массив из пяти элементов типа real объявляется следующим образом:
Ar = array[1..5] of real;
В случае двумерного массива необходимо в квадратных скобках указать нижние и верхние границы по строкам и столбцам. Например,
Matrix = array[1..4,1..4] of real;
Строковый тип определяет множество строк символов. Имеет идентификатор String[n]. Если для String не указан размер, то предполагается длина строки 255. Значения строкового типа заключаются в апострофы. Например, 'язык', 'pro'. Над объектами строкового типа допустима операция конкатенации (сцепления строк) и операция сравнения (какая строка длиннее).
4.1.4. Идентичность и совместимость типов.
В Free Pascal тип переменной определяется при ее описании и не может быть изменен. Переменная может участвовать только в тех операциях, допустимых ее типом. Это приводит к более высокой надежности создаваемых программ.
Типы Т1 и Т2 считаются идентичными, если:
они имеют один и тот же идентификатор типа;
один объявлен эквивалентным другому (один из них может быть автоматически преобразован к другому).
Например:
type
T1 = Boolean;
T2 = T1;
Этот уровень соответствия типов должен соблюдаться между параметрами и аргументами процедур и функций.
Выполнение операций в выражениях, а также операции сравнения требуют, чтобы операнды имели совместимые типы.
Типы Т1 и Т2 совместимы, если выполняется хотя бы одно из следующих условий:
Т1 и Т2 идентичны;
оба типа являются либо целыми, либо вещественными;
один тип представляет собой тип - диапазон другого;
оба типа являются типами - диапазонами какого-то одного типа;
один тип строка, другой символ;
T1 и T2 - процедурные типы с одинаковым количеством попарно эквивалентных параметров и с эквивалентными типами результатов (для функций).
Для оператора присваивания имеется специальное понятие – совместимость по присваиванию. Оператор присваивания считается корректным, если тип переменной в левой части совместим по присваиванию с типом выражения из правой части.