Понятие подпрограммы Стандартные процедуры и функции
Определение Подпрограмма - это отдельная функционально независимая часть программы. Любая подпрограмма обладает той же структурой, которой обладает и вся программа.
Задачи подпрограммы избавить от необходимости многократно повторять в тексте основной программы аналогичные фрагменты; улучшить структуру программы, облегчая ее понимание; повысить устойчивость к ошибкам программирования и непредвидимым последствиям при модификациях программы.
Когда использовать подпрограмму? Когда Вы несколько раз перепишите в программе одни и те же последовательности команд, необходимость введения подпрограммы приобретает характер острой внутренней потребности. Иногда слишком много мелочей закрывают главное. Полезно убрать в подпрограмму подробности, заслоняющие смысл основной программы. Полезно разбить длинную программу на составные части - просто как книгу разбивают на главы. При этом основная программа становится похожей на оглавление.
И ещё поэтому: Бывают сложные частные алгоритмы. Полезно отладить их отдельно в небольших тестирующих программах. Включение программ с отлаженными алгоритмами в основную программу будет легким, если они оформлены как подпрограммы. Все, что Вы сделали хорошо в одной программе, Вам захочется перенести в новые. Для повторного использования таких частей лучше сразу выделять в программе полезные алгоритмы в отдельные подпрограммы.
Стандартные подпрограммы Стандартная подпрограмма (процедура или функция) - подпрограмма, включенная в библиотеку программ ЭВМ, доступ к которой обеспечивается средствами языка программирования. Вызывается она по имени с заданием фактических параметров с типом описанным при описании данной процедуры в библиотечке процедур и функций.
Объединение программ и подпрограмм 1. Текст подпрограмм может быть приведен в разделе описания использующей их программы. 2. Подпрограммы группируются в отдельных файлах, имеющих специальную структуру - модулях. Для того чтобы основная программа могла использовать модуль, он должен быть подключен к основной программе.
Структура подпрограммы Соответствует структуре текста основной программы за двумя исключениями: подпрограмма начинается с заголовка, содержащего имя подпрограммы, передаваемые в нее и возвращаемые от нее периметры, запись заголовка подпрограммы отличается от заголовка программы; подпрограмма кончается не точкой, а точкой с запятой.
Процедуры и функции Основное различие между процедурой и функцией состоит в том, что процедура только выполняет какую-либо законченную последовательность действий, не возвращая результата работы в основную программу, а функция и выполняет действия, и возвращает результат. Например, вызов функции M:= MIN (X, Y) вернет в основную программу значение наименьшего из двух чисел и это значение будет присвоено переменной M.
Глобальные и локальные переменные Глобальными называются переменные, объявленные в основной программе и доступные как программе, так и всем ее подпрограммам. Локальными называются переменные, объявленные внутри подпрограммы и доступные только ей самой.
Общая структура программы (продвинутый вариант) Рrogram hh; Label; {описание меток} Const; {описание констант} Type; {описание типов} Var; {описание переменных} Procedure; {описание процедур} Function; {описание функций} Begin end.
Пример программы Program AkulovE; Uses Crt; Var x, y : LongInt; Procedure Input; Begin TextColor(12); writeln('По вызову активизировалась процедура "Input"',#10); TextColor(7); writeln('Введите два числа через пробел - '); readln(x, y); End; { }
Пример программы Procedure Summa; Begin TextColor(14); writeln('Для сложения подключилась процедура "Summa"',#10); x:=x+y; End; { }
Пример программы Procedure Output; Begin TextColor(10); writeln('Заключительная часть. Процедура "Output"',#10,#13); TextColor(7); writeln('Их сумма - ',x); End; { }
Пример программы Begin ClrScr; Input; Summa; Output; readln; End.
Ещё один пример подпрограммы Program Fadeev; Uses Crt; Var A, B : integer; Rez :real; { } Function SredArif(A, B:integer):real; Begin SredArif:=(A+B)/2; End; { }
Продолжение примера Begin ClrScr; write('Введите два числа '); readln(A,B); Rez:=SredArif(A,B); write('Cреднее арифметическое этих чисел равно ',Rez:5:3); readln; End.