266.07K
Category: programmingprogramming

PascalABCNet. Процедуры

1.

PascalABCNet.
Процедуры.

2.

§ План
0
Введение
1
Область действия имён
2
Передача параметров.
3
Параметры-переменные и параметры-значения
4
Формальные и фактические параметры

3.

§ Введение
Весьма поэтичное объяснение понятия подпрограмма дал В.Ф. Очков:
"Подпрограмма - это припев песни, который поют несколько раз, а в
текстах песен печатают только один раз".
Т.е. если есть необходимость многократно совершать одни и те же
действия, то вполне логично описать их единожды, а потом лишь ставить
на них ссылку.
Именно такой смысл имеет использование подпрограмм.
Подпрограмма - это в первую очередь программа. Со всеми
полагающимися полноценной программе атрибутами:
именем,
разделами описания меток (label),
разделами описания констант (const),
разделами описания типов (type),
разделами описания переменных (var)
и даже со своими (вложенными) функциями и процедурами.

4.

§ Введение
procedure <имя процедуры> (<параметры>);
label
<метки>;
const
<описание констант>;
type
<описание типов данных>;
var
<описание переменных>;
<процедуры и функции>;
begin
<основное тело процедуры>;
end;

5.

§ Введение
Подпрограмма - это последовательность операторов, которые
определены и записаны только в одном месте программы, однако их
можно вызвать для выполнения из одной или нескольких точек
программы.
Программа, содержащая подпрограммы, называется главной (головной).
Каждая подпрограмма определяется уникальным именем.
В языке Pascal имеется два вида подпрограмм: Процедуры и функции.
Мы с вами будем разбирать процедуры. С функциями мы познакомимся
позже.

6.

§ Введение
var
a, b, c: integer;
procedure sum(x, y: integer; var z: integer);
begin
z := x + y;
end;
процедура
begin
write('Введите два числа: ');
readLn(a, b);
sum(a, b, c); {процедура вызывается своим именем, которое вы
написали после зарезервированного слова procedure в описании}
writeLn(c);
end.

7.

§ Введение
Работа программы с процедурами заключается в следующем:
Как только в теле программы встречается имя процедуры с параметрами,
выполнение «главного» тела прекращается, и управление
вычислительными процессами передается процедуре. После выполнения
процедуры осуществляется возврат на оператор основной программы,
следующий за вызовом процедуры.

8.

§ Область действия имён
Глобальные переменные - это типы данных, константы и переменные,
объявленные в начале программы до объявления любых подпрограмм.
Эти переменные будут видны во всей программе, в том числе и во всех ее
подпрограммах.
Глобальные переменные существуют на протяжении всего времени
работы программы.
Локальные переменные объявляются внутри какой-нибудь
подпрограммы и "видны" только этой подпрограмме и тем
подпрограммам, которые были объявлены как внутренние для нее.
Локальные переменные не существуют, пока не вызвана подпрограмма, в
которой они объявлены, а также после завершения ее работы.

9.

§ Область действия имён
Побочный эффект
Поскольку глобальные переменные видны в контекстах всех блоков, то их
значение может быть изменено изнутри любой подпрограммы.
Этот эффект называется побочным, а его использование очень
нежелательно, потому что может стать источником непонятных ошибок в
программе.
Чтобы избежать побочного эффекта, необходимо строго следить за тем,
чтобы подпрограммы изменяли только свои локальные переменные (в
том числе и параметры-переменные).

10.

§ Область действия имён
Совпадения глобальных и локальных имен допустимы, поскольку к
каждому локальному имени неявно приписано имя той подпрограммы, в
которой оно объявлено.
Если имеются глобальная и локальная переменные с одинаковым
именем, то изнутри подпрограммы к глобальной переменной можно
обратиться, приписав к ней спереди имя программы:
<имя_программы>.<имя_глобальной_переменной>
Например (локальной переменной здесь присваивается значение
глобальной):
a := prog.a;

11.

§ Передача параметров
В стандарте языка Паскаль передача параметров может производиться
двумя способами - по значению и по ссылке. Параметры, передаваемые
по значению, называют параметрами-значениями, передаваемые по
ссылке - параметрами-переменными. Последние отличаются тем, что в
заголовке процедуры перед ними ставится служебное слово var.

12.

§ Параметры-переменные и параметрызначения
Параметры-значения. Другими словами, передача параметров по
значению. Копия фактического параметра становится значением
соответствующего формального параметра. Внутри процедуры можно
производить любые действия с данным формальным параметром
(допустимые для его типа), но эти изменения никак не отражаются на
значении фактического параметра, то есть каким он был до вызова
процедуры, то таким же и останется после завершения ее работы
Параметры-переменные. Другими словами, передача параметров по
ссылке. Это те формальные параметры, перед которыми стоит
идентификатор var. Передается адрес фактического параметра
(обязательно переменной), после этого формальный параметр становится
его синонимом. Любые операции с формальным параметром
выполняются непосредственно над фактическим параметром.

13.

§ Формальные и фактические параметры
При описании процедуры указывается список формальных параметров.
Каждый параметр является локальным по отношению к описываемой
процедуре, к нему можно обращаться только в пределах данной
процедуры (в нашем примере х, у, z — формальные параметры).
Фактические параметры — это параметры, которые передаются
процедуре при обращении к ней (а, b, с — фактические параметры).
Число и тип формальных и фактических параметров должны совпадать с
точностью до их следования.
English     Русский Rules