- •Конспект лекций
- •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 Ваша первая программа
5. Подпрограммы (процедуры и функции)
Подпрограмма – относительно самостоятельная часть программы, имеющая свое имя и выполняющая определенные действия.
Подпрограммы повышают надежность и наглядность программ, т.к. позволяют разрабатывать и отлаживать каждый блок программы независимо (например, разными людьми).
Структура подпрограммы почти полностью повторяет структуру всей программы и состоит из следующих частей:
заголовок подпрограммы
раздел описаний
тело подпрограммы
В Паскаль имеются два вида подпрограмм – процедуры и функции. Они отличаются назначеием и способом их использования. Процедуры служат для выполнения определенной последовательности действий, направленных на изменение программной обстановки (изменение значений переменных, ввод/вывод данных и т.п.). Функции для вычисления значения выражения.
5.1 Процедуры
procedure <имя> (список формальных параметров);
<раздел описаний>;
begin
<тело процедуры>;
end;
Пример 1: Процедура вычисления и вывода на экран куба числа.
procedure cub(x: real);
var y: real;
begin
y:=x*x*x;
writeln(y);
end;
Указание имени процедуры в программе приводит к активизации процедуры и называется ее вызовом. Сразу после активизации процедуры начинают выполняться входящие в нее операторы. После выполнения последнего оператора процедуры управление передается в основную программу и далее выполняются операторы, следующие за вызовом процедуры. Процедура может вызываться в основной программе неоднократно.
Например:
cub(5);
…
readln(z);
cub(z);
Для обмена информацией между основной программой и процедурой используются параметры, которые придают процедуре универсальность.
Пример 2: Программа, выводящая на экран следующее:
*********
a=1 b=1
*********
a=2 b=4
*********
a=3 b=9
*********
a=4 b=16
*********
var a,b: integer;
procedure Stars; {без параметров}
var i: integer;
begin
for i:=1 to 9 do write(‘*’);
writeln;
end;
begin
Stars;
for a:=1 to 4 do
begin
b:=sqr(a);
writeln(‘a=’,a,’ b=’,b);
Stars; {вызов процедуры Stars }
end;
end.
Пример 3:
var a,b: integer;
procedure Stroka(ch: char, n: integer);
var i: integer;
begin
for i:=1 to n do write(ch);
writeln;
end;
begin
Stroka(‘+’,4);
for a:=1 to 3 do
begin
b:=sqr(a);
writeln(‘a=’,a,’ b=’,b);
Stroka(‘*’,8);
end;
end.
Разберем вызов процедуры Stroka(‘*’,8): ‘*’ и 8 – фактические параметры (т.е. те, которые указаны в скобках после имени процедуры при ее вызове), они присваиваются при вызове формальным параметрам ch и n (т.е. тем, которые указаны в скобках после имени процедуры при ее описании).
Замечание: количество, порядок и тип параметров при вызове процедуры должны совпадать с количеством, порядком и типом параметров, заданным при описании процедуры.
Результат на экране:
++++
a=1 b=1
********
a=2 b=4
********
a=3 b=9
********