- •Конспект лекций
- •1.4 Общая структура программы
- •1.5 Стандартные процедуры и функции
- •1.6 Процедуры ввода/вывода
- •2. Простые типы данных
- •2.1 Целые типы
- •2.2 Вещественные типы
- •2.3 Cимвольный тип данных
- •2.4 Логический тип данных.
- •2.5 Ограниченные типы
- •2.6 Перечислимые типы
- •2.7 Описание типов
- •2.8 Преобразование типов
- •2.9 Порядок вычисления выражений
- •3. Операторы языка Паскаль
- •3.1 Оператор присваивания
- •3.2 Составной оператор
- •3.3 Условный оператор
- •3.4 Оператор выбора case
- •3.5 Оператор цикла с параметром (цикл for)
- •3.6 Оператор цикла с предусловием (цикл while)
- •1 Вариант:
- •2 Вариант:
- •3 Вариант:
- •3.7 Оператор цикла с постусловием (цикл repeat)
- •3.8 Вложенные циклы
- •3.9 Оператор перехода goto
- •4. Массивы
- •4.2 Сортировка элементов массива
- •4.3 Многомерные массивы
- •5. Подпрограммы (процедуры и функции)
- •5.1 Процедуры
- •5.2 Функции
- •5.3 Области действия имен
- •5.4 Параметры процедур и функций
- •5.5 Побочные эффекты при использовании подпрограмм
- •5.6 Передача массивов в подпрограммы
- •5.7 Параметры-костанты
- •5.8 Массивы открытого типа
- •5.9 Рекурсия в подпрограммах
- •6. Строковый тип данных
- •6.1 Описание строк
- •6.2 Операции со строками
- •6.3 Процедуры и функции для работы со строками
- •7. Стандартные модули Турбо-Паскаля
- •7.1 Модули турбо3 и graph3
- •7.2 Модуль overlay
- •7.3 Модуль dos
- •7.4 Модуль system
- •7.5 Модуль printer
- •7.6 Модуль crt
- •7.7 Модуль graph
- •8. Записи
- •8.1 Определение записи
- •8.2 Оператор над записями
- •8.3 Вложенные записи
- •8.4 Массив записей
- •8.5 Записи с вариантами
- •9. Файлы
- •9.1 Определение файла
- •9.2 Процедуры и функции для работы с файлами
- •9.3 Нетипизированные файлы
- •10. Интегрированная среда Турбо Паскаля
- •10.1 Как начать работу с Турбо Паскалем
- •10.2 Ваша первая программа
1.4 Общая структура программы
Программа на Паскале представляет собой формальную запись алгоритма, приводящую к решению некоторых задач. Программа состоит из заголовка и двух разделов: Раздел описания данных и Раздел описания действий. Действия представляются операторами языка, данные вводятся посредством описаний и определений. Описание данных предшествует описанию действий и должно содержать все объекты, используемые в действиях.
Итак, рассмотрим структуру программы подробнее.
Заголовок программы Program Pr1;
В Турбо-Паскале заголовок программы необязателен и компилятором (см. п.1.1.) игнорируется; Кроме того, в Турбо-Паскале существует еще один раздел – раздел объявления используемых модулей:
Uses Crt, Graph;
который описывается в самом начале текста программы, после заголовка, если таковой имеется.
Раздел описания данных может включать пять подразделов:
описание меток Label M1, Met;
- используются для передачи управления внутри программы,
описание констант Const a=2; c=3.5;
константы – элементы программы, значения которых не меняются в процессе ее выполнения.
В результате приведенного примера описания констант, система отведет две ячейки памяти с именами a и c и занесет в них значения 2 и 3,5 соответственно. При попытке записать в эти ячейки памяти какие-либо значения во время работы программы – система выдаст сообщение об ошибке.
Константы могут быть целыми, вещественными, символьными и строковыми.
Пример:
Const a=5; - целая десятичная.
b=$F; - целая шестнадцатеричная (~15)
c=-0.5; d=7.5E-5; - вещественные (Е или е – показатель степени; 7.5Е–5 = 7.510-5 ).
Обратите внимание: целая часть отделяется от дробной – точкой (а не запятой).
e=’*’; - символьная.
f=’Турбо’; - строковая.
Бывают Типизированные константы – переменные, которым при описании присваивается начальное значение. Могут использоваться как обычные переменные (о типах и переменных см. далее)
Пример:
Const max: integer = 92;
R: real = 2.7;
В результате данного примера описания констант, система отведет две ячейки памяти с именами max и R и занесет в них значения 92 и 2.7 соответственно. Во время работы программы разрешается заносить в такие ячейки новые значения соответствующего типа. В приведенном примере: в ячейку max – целые числа; в ячейку R – вещественные числа.
описание типов Type Mas = array [1..10] of integer;
tp = 1..6;
int = integer;
Под типом данных понимается множество допустимых значений этих данных и совокупность операций над ними. В языке определены несколько стандартных типов данных: integer, real, char, Boolean,… (о стандартных типах Паскаля см. далее в разделе 2). Кроме того, можно описывать и собственные типы в разделе Type (см. также п.2.7).
описание переменных Var x: real; y,z: integer;
p:Boolean;
Переменные – элементы программы, значения которых могут изменяться в процессе ее выполнения. С каждой переменной при ее описании связывается ее тип.
В результате данного примера описания переменных, система отведет четыре пустых ячейки памяти. Во время работы программы:
- в ячейку x можно записывать только вещественные числа из диапазона значений, соответствующего типу Real; {о типах и соответствующих диапазонах см. в разделе 2}
- в ячейки y,z можно записывать только целые числа из диапазона от -32768 до +32767.
При попытке записать в эти переменные значение, например, 32768, система выдаст сообщение об ошибке: выход за границы диапазона типа.
- в ячейку p можно записывать только значения True (истина) или False (ложь).
описание подпрограмм: функций Function F(x: real): real;
и (или) процедур Procedure Alfa;
Процедуры и функции – самостоятельные части программы, имеющие свое имя и выполняющие определенные действия (см. раздел 5).
В программе могут использоваться не все подразделы, а только необходимые для конкретной задачи. Порядок размещения разделов произвольный, можно создавать несколько одинаковых разделов. В любом месте программы можно использовать элементы, описанные ранее по тексту.
Раздел описания данных может вообще отсутствовать.
Раздел описания действий (еще его называют выполняемая часть программы или тело программы)
начинается со слова begin и заканчивается словом end с точкой. Между этими словами записывается последовательность операторов, реализующая алгоритм решения задачи. Операторами называют команды, действия. Выполняемые операторы в языке Паскаль отделяются друг от друга точкой с запятой. Порядок выполнения операторов программы: слева направо сверху вниз.
Пример:
Begin
Write(‘*****’);
End.
Данная программа содержит только одну команду – оператор вывода на экран. В результате ее работы на экране мы увидим строку из 5-ти звездочек: ***** . Раздел описания данных для этой задачи не требуется.
Пример: Программа вычисляет сумму двух заданных чисел и выводит результат на экран.
Несколько забегая вперед скажу, что знак := (присвоить) - это обозначение оператора присваивания, который заносит значение, полученное справа от знака, в ячейку памяти с именем, указанным слева от знака (см. п. 3.1.)
1 вариант: const a=3.5; b=2;
var sum: real;
Begin
sum:=a+b; {складывается содержимое ячеек a и b, результат записывается в ячейку sum }
write(a,’ + ’,b,’ = ’,sum); {на экран выводится: 3.5 + 2 = 5.5}
End.
2 вариант: var a,b,sum: real;
Begin
a:=3.5; b:=2; {в ячейку a заносится число 3.5, в b – число2}
sum:=a+b; {складывается содержимое ячеек a и b, результат записывается в ячейку sum }
write(a,’ + ’,b,’ = ’,sum); {на экран выводится: 3.5 + 2 = 5.5}
End.
3 вариант: var a,b: real;
Begin
a:=3.5; b:=2; {в ячейку a заносится число 3.5, в b – число2}
a:=a+b; {складывается содержимое ячеек a и b, результат записывается в ячейку sum }
write(’ сумма = ’,a); {на экран выводится: сумма = 5.5}
End.
В 3-м варианте к моменту выполнения команды write в ячейке a содержится уже не слагаемое (3.5), а результат (5.5), поэтому вывод слагаемых как в первых двух вариантах невозможен. Таким образом, если слагаемые еще необходимо далее использовать в программе, то для хранения результата надо выделять отдельную ячейку памяти, как в вариантах1 и 2.
Надо понимать, что в каждый момент времени в одной ячейке памяти хранится одно число. Если записать в нее другое число, то предыдущее удаляется.