
- •6. Алгоритмы и программы
- •6.1. Алгоритм и алгоритмический процесс
- •6.1.1. Основные свойства алгоритмов:
- •6.1.2. Способы записи алгоритма
- •6.1.3. Схемы алгоритмов и программ
- •6.2. Переменная и постоянная величина Выражения
- •6.3. Присваивание
- •6.4. Основные этапы решения задач на эвм
- •6. 5. Алгоритмизация. Базовые алгоритмические структуры
- •6.5.1. Реализация базовых структур в языке Pascal
- •6.5.2. Реализация базовых структур в языке qBasic
- •Операторы тела цикла
- •6.6. Ввод - вывод
- •6.6.1.Ввод-вывод данных на языке Pascal
- •Var X, y: integer; {Описание переменных X, y целочисленного типа}
- •6.6.2. Ввод-вывод данных на языке qBasic
- •6.7. Алгоритмы линейной и разветвляющейся структуры
- •Решение задачи 6.3. На языке Turbo Pascal:
- •6.8. Циклические алгоритмы
- •Input "Введите натуральное м : " , m
- •Print : print "о т в е т : Сумма этих чисел равна "; s
- •6.9. Итерационные циклы
- •6.10. Массивы
- •6.11. Вложенные циклы
- •6.12. Подпрограммы
- •6.12.1. Параметры подпрограмм
- •6.12.2. Подпрограммы в языке Pascal
- •Операторы функции, один из которых
- •6.12.3. Подпрограммы в языке Basic
- •6.13. Рекурсия
- •6.14. Логические операции с числами
- •6.15. Работа с символьной информацией
- •6.15.1. Работа с символьной информацией в языке Basic
- •6.15.2. Работа с символьной информацией в языке Pascal
6.12. Подпрограммы
Подпрограмма - это программа, которая выполняется в составе других программ. В сложных программах в виде подпрограммы чаще всего определяют функционально самостоятельный фрагмент алгоритма, который возможно используются неоднократно.
Подпрограмма выполняется после ее вызова. Программа, выполнившая вызов подпрограммы, называется главной или вызывающей программой по отношению к подпрограмме.
Подпрограммы могут быть двух типов: функции и процедуры. Обычно подпрограммы обладающие значением называют функцией, а не обладающие значением – процедурой.
Вызов функции может являться операндом в выражении, т.к. возвращает некоторое значение, которое и используется при вычислении значения выражения. Вызов процедуры может записываться только как самостоятельный оператор.
В предыдущих главах мы говорили о стандартных функциях, например, в языке Pascal операция извлечения квадратного корня из величины x реализуется вызовом стандартной функции sqrt (x). Можно записать выражение, содержащее вызовы функций sqrt с разными аргументами, называемыми фактическими параметрами функции:
z= (sqrt (x) +sqrt (y)) / 2;
Подпрограммы, как и переменные должны быть описаны. Описание подпрограммы называется определением подпрограммы и состоит из заголовка подпрограммы и тела подпрограммы.
В заголовке подпрограммы определяется имя подпрограммы и ее формальные параметры – список входных и/или выходных переменных с указанием их типов. В теле подпрограммы определяются действия, которые будут выполнены после ее вызова.
При вызове подпрограммы определяются ее фактические параметры. Выполнение подпрограммы заканчивается при достижении последнего оператора тела подпрограммы и осуществляется возврат в вызывающую программу в точку, следующую за вызовом подпрограммы.
6.12.1. Параметры подпрограмм
В заголовке подпрограммы определяется тип каждого формального параметра. При обращении к подпрограмме происходит согласование параметров: порядок и типы формальных параметров в определении подпрограммы и порядок и типы фактических параметров при вызове функции должны соответствовать. После вызова подпрограммы выполняются ее операторы, где фактические параметры подставляются вместо формальных.
Параметры предназначены для передачи входных и выходных данных (переменных) подпрограммы. Согласование формальных и фактических параметров может осуществляться по значению и по ссылке (по адресу). Входные параметры передаются по значению, а выходные – по ссылке.
В первом случае при выполнении подпрограммы значение фактического параметра присваивается соответствующему формальному параметру. Используется только значение фактического параметра, любые изменения параметра в подпрограмме не влияют на его значение в вызывающей программе.
Во втором случае фактический параметр заменяет формальный параметр. Изменения параметра в подпрограмме меняют его значение в вызывающей программе.
6.12.2. Подпрограммы в языке Pascal
Определение процедуры имеет вид:
{Заголовок процедуры:}
Procedure <имя процедуры > (<перечень формальных параметров>);
{Тело процедуры:}
<определение переменных процедуры>
Begin
Операторы процедуры
End;
Вызов процедуры имеет вид:
<имя процедуры> (<перечень фактических параметров>);
Примеры заголовков процедур:
Procedure F (X: Real; Var Z: Real); - процедура F от входного вещественного параметра X и выходного вещественного параметра Z;
Procedure Pfakt (k: Integer; Var f: Integer); - процедура Pfakt с входным целочисленным параметром k и выходным целочисленным параметром f.
Примеры вызова процедур F и Pfakt:
Var A, B: Real;
N, P: Integer;
….
A:=10.5; F (A, B);
N:=5; Pfakt (N, P);
Определение функции имеет вид:
{Заголовок функции}
Function <имя > (<перечень формальных параметров>): <тип результата>;
{Тело функции}
<определение переменных функции>
Begin