
- •Министерство общего и профессионального образования Российской Федерации Уральский государственный технический университет Основы программирования на языке Паскаль
- •Структура программы на паскале
- •Типы данных
- •Правила программирования арифметических операций
- •Арифметические функции
- •Операции отношения (сравнения)
- •Логические операции
- •Приоритет операций
- •Операторы турбо-паскаля ввод и вывод данных
- •Составной оператор
- •Условный оператор
- •Оператор выбора
- •Операторы повторений (циклов) счетный цикл
- •Оператор цикла с предусловием
- •Оператор цикла с постусловием
- •Использование массивов
- •Процедуры и функции
- •Описание и использование функций
- •Описание и использование процедур
- •Взаимодействие подпрограмм
- •Стандартные модули
- •Использование модуля crt
- •Практический пример. Программа "меню"
- •Использование модуля graph
- •Установка цветов
- •Изображение точек и линий
- •Практический пример. Построение графика функции
- •Работа с текстом
- •Практический пример. Построение спирали
- •Программирование с использованием нестандандартных типов данных перечисляемый тип
- •Множества
- •Основы программирования на языке Паскаль
Взаимодействие подпрограмм
Прежде всего условимся, что далее и функции, и процедуры мы будем для краткости называть подпрограммами, поскольку правила их взаимодействия с главной программой и друг с другом одинаковые. Эти правила вытекают из основного правила Паскаля - имя любой подпрограммы должно быть описано перед тем, как оно появится среди исполняемых операторов.
Для примера рассмотрим программу следующей структуры:
Главная программа
<Параметры главной программы>
Подпрограмма А
<Параметры подпрограммы А>
Подпрограмма А1
<Параметры подпрограммы А1>
BeginEnd
Подпрограмма А2
<Параметры подпрограммы А2>
BeginEnd
BeginEnd
Подпрограмма B
<Параметры подпрограммы B>
Подпрограмма B1
<Параметры подпрограммы B1>
BeginEnd
BeginEnd
BeginEnd
Из главной программы можно вызвать и подпрограмму А, и подпрограмму В, но нельзя вызвать ни одну из вложенных в них подпрограмм А1, А2, В1. С другой стороны, из подпрограммы В можно вызвать подпрограмму А, но из А вызвать В нельзя (строго говоря, такая возможность появляется при наличии специального указания).
В Паскале любая подпрограмма может вызывать саму себя. Такой способ вызова называется - рекурсия. В качестве примера рекурсивного обращения вновь рассмотрим вычисление факториала:
FUNCTION F(k: word):word;
Begin
if k=0 then F:=1
else F:=F(k-1)*k;
END;
При входе в какую-либо подпрограмму становятся доступными не только те параметры (имена переменных), которые объявлены в ней, но и те, которые объявлены в подпрограммах более высокого уровня. Параметры, объявленные в главной программе, доступны всем подпрограммам. Однако самой главной программе недоступны параметры, описанные в подпрограммах.
Далее приводится программа, иллюстрирующая процесс взаимодействия подпрограмм.
Program No11;
Const M1='Константа из главной пpогpаммы';
{************************************************************************}
Procedure Proc_A;
Var A: string;
Procedure Proc_A1;
Var A1:string;
Procedure Proc_A2;
Begin
writeln(A+' и '+ A1)
End;
Begin A1:='Пеpеменная из пpоцедуpы A1';
Proc_A2;
End; {конец пpоцедуpы Proc_A1 --------------}
Begin
writeln(M1);
A:='Пеpеменная из пpоцедуpы A';
Proc_A1;
End; {конец пpоцедуpы Proc_A ----------------}
{************************************************************************}
BEGIN
Proc_A;
END.
Было бы целесообразно самостоятельно проследить работу этой программы и установить что и в какой последовательности будет напечатано. Хотя в данном примере все подпрограммы без параметров, программа работает и печатает:
Константа из главной программы
Переменная из процедуры А и Переменная из процедуры А1
Стандартные модули
Турбо-Паскаль имеет большое количество стандартных функций и процедур, с некоторыми из которых мы уже знакомы. Они объединены в группы - стандартные модули. Рассмотрим некоторые модули.
Модуль SYSTEM объединяет процедуры стандартного Паскаля и в частности все те, которыми мы пользовались до сих пор.
Модуль РRINTER содержит процедуры для работы с печатающими устройствами.
Модуль CRT обеспечивает управление текстовым режимом работы дисплея.
Модуль GRAPH содержит графические средства Турбо-Паскаля.
Имеются и другие модули. Стандартные модули расположены в специальных файлах-библиотеках. Их расширение TMP. Только один модуль - SYSTEM - подключается к любой программе автоматически, остальные, если это необходимо, нужно подключать к программам специальной командой
USES <имя модуля>;
Например,
USES CRT;
USES CRT, GRAPH;
Эти команды должны находиться в разделе описаний.