
- •Программирование на языке паскаль Учебное пособие
- •1. Общая характеристика языков программирования
- •1.1. Языки программирования
- •1.2. Трансляторы
- •1.3. История создания языков
- •1.4. Базовые структуры языков программирования
- •Контрольные вопросы
- •2. Описание языка паскаль
- •2.1. Основные объекты языка
- •2.2. Структура Паскаль-программы
- •2.3. Типизация данных
- •2.4. Объявление данных
- •Контрольные вопросы
- •3. Простые операторы. Ввод/вывод данных
- •3.1. Оператор присваивания и выражения
- •3.2. Операторы вызова процедур. Ввод/вывод данных
- •3.2.1. Процедуры ввода read и readln
- •Общая форма записи оператора
- •3.2.2. Процедуры вывода write и writeln
- •Контрольные вопросы
- •Каково назначение процедуры writeln без параметров? Задания для самостоятельной работы
- •Варианты заданий
- •Дополнительные задания
- •4. Структурные операторы. Организация ветвлений и циклов
- •4.1. Составной и пустой операторы
- •4.2. Организация ветвлений. Операторы выбора
- •4.2.1. Оператор ветвления if
- •4.2.2. Оператор варианта case
- •Общая форма записи
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •Дополнительные задания
- •4.3. Организация циклов. Операторы повторения
- •4.3.1. Оператор while
- •4.3.2. Оператор repeat
- •4.3.3. Оператор for
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •5. Организация подпрограмм. Процедуры и функции
- •5.1. Процедуры и их типизация
- •5.1.1. Встроенные процедуры
- •5.1.2. Процедуры пользователя
- •5.1.3. Процедуры без параметров
- •5.1.4. Фактические и формальные параметры
- •5.1.5. Локальные и глобальные переменные
- •5.1.6. Процедуры с параметрами-значениями
- •5.1.7. Процедуры с параметрами-переменными
- •5.1.8. Комбинированные процедуры
- •5.2. Функции пользователя. Рекурсивные функции
- •5.2.1. Определение функции
- •О бщая форма записи заголовка функции
- •5.2.2. Функции пользователя
- •5.2.3. Рекурсивные функции
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •Дополнительные задания
- •6. Массивы. Данные типа array
- •Одномерные массивы
- •Общая форма записи
- •Общая форма записи
- •6.2. Многомерные массивы
- •6.3. Способы работы с массивами
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •Дополнительные задания
- •Обработка литерных величин. Данные типа char и string
- •7.1. Тип данных char
- •Работа программы
- •7.2. Массивы литер
- •7.3. Тип данных string
- •7.4. Строковые функции и процедуры
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •Дополнительные задания
- •8. Множества. Данные типа set
- •О бщий вид регулярного типа
- •8.1. Определение типа set
- •8.2. Операции над множествами
- •8.2.1. Принадлежность множеству
- •8.2.2. Сравнение множеств
- •8.2.3. Действия над множествами
- •8.3. Вывод множеств
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •9. Комбинированный тип. Данные типа record
- •9.1. Оператор типа record
- •9.2. Оператор with
- •9.3. Записи с вариантами
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •10. Файловый тип
- •10.1. Определение и описание типизированного файла
- •Общая форма записи
- •10.2. Типы файлов. Процедура работы с файлами
- •10.3. Основные приемы работы с файлами
- •10.4. Текстовые файлы
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Типизированные файлы
- •Текстовые файлы
- •Программирование графики
- •Основные понятия компьютерной графики
- •Формирование изображения на экране
- •Инициализация графического режима
- •Простейшие графические операторы (процедуры)
- •Основные приемы работы с графикой
- •Работа с цветом
- •Заполнение (закрашивание) произвольной замкнутой фигуры
- •Построение простейших геометрических фигур
- •Контрольные вопросы
- •Задания для самостоятельной работы
- •Варианты заданий
- •Библиографический список
2.3. Типизация данных
Данные – это общее понятие всего того, с чем оперирует ЭВМ. Любой тип данных определяет множество значений, которые может принимать та или иная переменная, и те операции, которые можно к ним применять. Каждая встречающаяся в программе переменная может иметь один и только один тип.
В Паскале имеется три типа данных: простые, составные и специальные. Рассмотрим сначала простой тип данных, представленный на рис. 7.
Начнем рассмотрение с ординальных типов. Под данными ординального типа понимают те, для каждого из которых можно найти их порядковый номер в данном типе. Ординальные типы, таким образом, представляют собой упорядоченные множества.
К любому ординальному значению X применимы три следующие встроенные функции:
ORD (X) – дает порядковый номер, соответствующий X. Результат относится к типу INTEGER.
SUCC (X) – дает следующее за X значение, если X не максимальный элемент соответствующего типа. В последнем случае SUCC(X) суть ошибка.
PRED (X) – дает предыдущее X значение, если только X не минимальный элемент соответствующего типа. В последнем случае PRED (X) суть ошибка.
Рис. 7. Типизация данных
Наиболее простыми из ординальных типов являются предописанные, или встроенные типы: INTEGER, BOOLEAN и CHAR, которые определяют, соответственно, числовые, логические (булевские) и литерные (символьные) величины. К встроенному (но не ординальному) типу данных относится также тип REAL.
Кроме предописанных, в Паскале существует возможность задавать свои типы данных. К ним относятся перечислимый и диапазонный типы. Каждый из них состоит из элементов предописанных типов, однако в совокупности они дают совершенно новый тип.
Перечислимый тип задается перечислением всех своих элементов (см. рис. 8).
Рис. 8. Синтаксическая диаграмма перечислимого типа
Например:
DEN_NED = (MO, TU, WE, TH, FR, SA, SU);
MONETA = (1, 2, 3, 5, 10, 20, 50).
Диапазонный тип представляет собой подмножество одного из ординальных типов (см. рис. 9). Его часто называют еще интервальным.
Рис. 9. Синтаксическая диаграмма диапазонного типа
Например:
DEN_MES = 1..31;
RAB_DEN = MO..SA;
LATBUKW = 'A'..'Z'.
Следует помнить, что при задании диапазонного типа первая константа должна быть меньше второй. Подробнее на задании типов остановимся в разделе «Объявления данных».
Замечание. Все типы, рассмотренные ранее, включая перечислимый и символьный, называются скалярными. Величины, принадлежащие скалярному типу, упорядочены (не путать с ординальностью):
3 < 5; 1.2 > -6.8; 'A' < 'C'; true > false; MO > TH.
2.4. Объявление данных
С помощью объявлений программист сообщает компилятору, какие данные, процедуры и функции пользователя будут задействованы в программе. Описательная часть программы (объявления) состоит из 6 разделов, которые должны располагаться в следующем порядке:
USES – раздел модулей.
LABEL – раздел меток.
CONST – раздел констант.
TYPE – раздел типов.
VAR – раздел переменных.
PROCEDURE (FUNCTION) – раздел процедур и функций.
Любой из перечисленных разделов может в объявлении отсутствовать.
Раздел описания модулей начинается со служебного слова USES, за которым идет перечень используемых в программе модулей типа CRT, DOS, GRAPH и др. Все эти модули находятся в библиотеке модулей и каждый из них поддерживает соответствующий набор встроенных процедур и функций.
Раздел описания меток начинается со служебного слова LABEL, за которым следует список меток, разделяемых запятыми. Меткой может служить любое целое число, содержащее не более четырех цифр, или имя. В конце раздела ставится точка с запятой, например:
LABEL 342,11,1445;
Раздел определения констант начинается со служебного слова CONST. Определение каждой константы содержит идентификатор (имя) константы, знак равенства и значение. Определения отделяются друг от друга точкой с запятой, как показано на рис. 10, например:
const E = 2.7182818; Z = 'информатика'; g = 9.81;
Таким образом, определенные константы принято называть именованными, в отличие от обычных констант программы.
Рис. 10. Синтаксическая диаграмма именованной константы
Раздел определения типов начинается со служебного слова TYPE (см. рис. 11). Каждому определенному типу соответствует имя. Данный раздел применяется для описания нестандартных типов (перечислимых, диапазонных и др.), например:
type COLOR = (black, white, blue, green, red);
DEN = 1..31;
Рис.11. Синтаксическая диаграмма объявления типа
За разделом типов следует раздел описания переменных. Этот раздел начинается со служебного слова VAR (см. рис. 12). При объявлении переменных компилятору указывается, сколько переменных используется в программе, какие у них имена и данные какого типа будут храниться в этих переменных.
Тип переменных может быть как стандартным, так и описанным в разделе TYPE, например:
var X, Y, Z : integer; AD1, AD2 : real;
TEXT : char; Q : DEN; D : 17..76.
Как видно из примера, интервальный тип не обязательно описывать в разделе TYPE, а достаточно это сделать в настоящем разделе. Это замечание касается и других типов данных, о которых речь пойдет ниже.
Рис. 12. Синтаксическая диаграмма объявления переменных