
- •Язык программирования паскаль
- •I. Общая характеристика языков программирования
- •1.1. Языки программирования
- •1.2. Трансляторы
- •1.3. История создания языков
- •1.4. Базовые структуры языков программирования
- •II. Описание языка паскаль
- •2.1. Основные объекты языка
- •Лексемы
- •Разделители
- •2.2. Структура Паскаль - программы
- •Синтаксическая диаграмма паскаль – программы
- •2.3. Типизация данных
- •Синтаксическая диаграмма
- •2.4. Объявление данных
- •Синтаксическая диаграмма:
- •Синтаксическая диаграмма
- •III. Простые операторы. Ввод/вывод данных
- •3.1. Оператор присваивания и выражения
- •3.2. Операторы процедур. Ввод/вывод информации
- •3.2.1. Процедуры ввода read и readln
- •Общая форма записи
- •3.2.2. Процедуры вывода write и writeln
- •Синтаксическая диаграмма оператора write
- •Синтаксическая диаграмма формата вывода
- •IV. Структурные операторы. Организация ветвлений и циклов
- •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
- •Синтаксическая диаграмма
- •V. Организация подпрограмм. Процедуры и функции
- •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. Рекурсивные функции
- •5.3 Модульное программирование
- •VI. Массивы. Данные типа array
- •Синтаксическая диаграмма
- •6.1 Одномерные массивы
- •6.2. Многомерные массивы
- •6.3. Способы работы с массивами
- •VII. Обработка литерных величин. Данные типа char и string
- •7.1. Тип данных char
- •7.2. Массивы литер
- •7.3. Тип данных string
- •Синтаксическая диаграмма
- •7.4. Строковые функции и процедуры
- •IIX. Комбинированный тип - записи. Данные типа record
- •8.1. Определение типа record
- •Синтаксическая диаграмма
- •8.2. Оператор with
- •Синтаксическая диаграмма
- •IX. Файловый тип
- •9.1. Определение и описание файла
- •9.2. Типы файлов. Процедуры работы с файлами
- •9.3. Буферная переменная
- •9.4. Основные приемы работы с файлами
- •9.5. Текстовые файлы
- •Литература
5.1.2. Процедуры пользователя
При работе с процедурами пользователя необходимо уметь производить два вида деятельности: описание процедуры и обращение к ней в основной программе. Вызов процедуры пользователя осуществляется так же, как и вызов встроенной процедуры - с помощью оператора процедуры, имя которого совпадает с именем процедуры, с указанием списка параметров, если таковые имеются. Описание же процедуры включает в себя разработку подпрограммы и правильное оформление ее заголовка. Остановимся на нем подробнее.
В основной программе все процедуры (а также и функции) пользователя должны быть объявлены. Объявление процедур и функций осуществляется после объявления переменных и перед первым словом BEGIN программы.
Общий вид паскаль-программы
Заголовок программы;
Описание модулей USES;
Описание меток LABEL;
Описание констант CONST;
Описание типа TYPE;
Описание переменных VAR;
Описание процедур и функций PROCEDURE/FUNCTION;
BEGIN
Тело программы (блок);
END.
Процедура, как видно из ее определения, оформляется так же, как и основная программа. Вообще процедуру нужно воспринимать как программу в миниатюре. В свою очередь основная программа может быть легко переделана в процедуру с заменой слова PROGRAM на PROCEDURE. Если процедура объявлена, ее можно использовать в последующих частях программы, просто задавая ее имя, за которым, если необходимо, следует список параметров. Вызов процедуры для основной программы становится новым оператором. Обращение к процедуре активизирует эту процедуру, то есть приводит к выполнению группу операторов, содержащихся в ее теле. После этого управление переходит к оператору, следующему за вызовом процедуры.
Описание процедур будем рассматривать по той же схеме, что и машинные процедуры, а именно: вначале без параметров, далее с параметрами - значениями, с параметрами - переменными и, наконец, комбинированные процедуры.
5.1.3. Процедуры без параметров
Заголовок процедуры без параметров можно описать в виде:
Вызываются же такие процедуры путем написания в основной программе имени этой процедуры. В виде процедуры без параметров оформляются такие подзадачи, у которых нет входных и выходных данных, или же эти данные удобнее передавать с помощью операторов присваивания, READ и WRITE.
Рассмотрим несколько примеров, в которых представлены эти варианты.
Пример 1. Нарисовать три вертикальных квадрата 3х3 с помощью символа "*".
Очевидно, что в этой программе надо выделить рисование квадрата в виде процедуры без параметров, а затем трижды вызвать ее в основной программе:
program RISUNOK;
procedure KVADRAT;
begin
writeln('***');
writeln('* *');
writeln('***');
end;
begin
clrscr; KVADRAT;
writeln; KVADRAT;
writeln; KVADRAT;
end.
Пример 2. Вычислить площадь четырехугольника ABCD
Зная длины сторон четырехугольника и длину одной из его диагоналей, например BD, можно найти по формуле Герона площади двух вспомогательных треугольников и сложить их. Отсюда следует, что в программе надо выделить процедуру вычисления площади треугольника:
program PLOCHAD_1;
var AB,BC,CD,AD,BD,S1,S,a,b,c,p:real;
procedure GERON_1;
begin
p:=(a+b+c)/2;
S:=sqrt(p*(p-a)*(p-b)*(p-c));
end;
begin {*ОСНОВНАЯ ПРОГРАММА*}
read (AB,BC,CD,AD,AC);
a:=AB;b:=AD;c:=BD; GERON_1; S1:= S;
a:=BC;b:=CD;c:=BD; GERON_1; S1:= S1+S;
write(S1);
end.