Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции информатика - Семестр 2.doc
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
516.1 Кб
Скачать

Лекция 10. Процедуры и функции в Паскаль.

Современный подход к разработке программ поощряет явное оформление в виде подпрограммы любого достаточно самостоятельного и законченного программного фрагмента.

Подпрограмма - это часть программы, оформленная в виде отдельной синтаксической конструкции и снабженная именем. 'Вызов' подпрограммы, т. е. Выполнение действий, заданных в подпрограмме в виде операторов, может быть произведен в некоторой точке программы посредством указания имени. Сосредоточив в одном месте программы подробное описание некоторых 'технических' аспектов вычислений в остальной программе достаточно указать из имена, не конкретизируя отдельные части. Любая подпрограмма может содержать описания некоторой совокупности локальных объектов - констант, типов, переменных и т. д.

Структура подпрограммы практически точно повторяет структуру Pascal - программ (часть подобна целому). При описании подпрограммы в общем случае необходимо задать три основные компоненты:

  • интерфейс подпрограммы, то есть информацию, необходимую для ее вызова (активизации);

  • локальный контекст подпрограммы - совокупность описаний (рабочих) объектов, с которыми осуществляются действия;

  • операторы, составляющие смысл подпрограммы.

И нтерфейс сосредоточен в заголовке. Описание локальных объектов и операторы (алгоритм) составляют ее внутреннюю часть. Можно сказать, что заголовок содержит информацию о том, что делает подпрограмма, а тело подпрограммы описывает, как она это делает.

Рисунок 10.1 - Процедура и функция

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

Например; Procedure sin (var x, y : real);

Procedure stop;

Function max(a, b:byte): byte;

Рисунок 10.2 – Заголовок процедуры

Тип результата

Рисунок 10.3 – Заголовок функции

Объявление переменных можно сформулировать в виде следующих правил:

  • имена объектов, описанных в некотором блоке, считаются известными в пределах данного блока, включая и все вложенные блоки;

  • эти объекты должны быть уникальными в пределах блока.

Лекция 11. Параметры в процедурах.

11.1 Механизм параметров.

В заголовке процедуры или функции может быть задан список формальных параметров в круглых скобках. Каждый параметр считается локальным.

Идентификаторы формальных параметров можно считать условными обозначениями в теле программы тех реальных параметров, которые будут переданы в подпрограмму при ее вызове.

Примеры заголовков процедур и функций: Function max (A: Vector; n:byte):real; Procedure sum (a, b :matrix; var c: matrix); Procedure move (var s, d; n:word);

Рисунок 11.1 - Список формальных параметров и описание параметров

Но есть и ограничения, типы формальных параметров должны обозначаться идентификаторами.

Procedure max (var A: array [1..10] of byte); - недопустимое объявление. Если необходимо передать в подпрограмму параметр с типом, определенным программистом, то используется идентификатор.

Type

MyArray = array [1..10] of byte;

….

Procedure Max (var A:MyArray);

….

Из приведенных синтаксических диаграмм следует, что в списке формальных параметров программ допустимы по крайней мере три способа их задания.

  1. Параметры, перед которыми отсутствует служебное слово var и за которыми следует идентификатор типа.

  2. Параметры, перед которыми указано var и за которыми следует тип.

  3. Параметры, за которыми следует слово var и которые не имеют типа.

Эти три способа задания формальных параметров отражают три различных способа передачи параметров: первый способ называется передачей параметров по значению, второй способ - передачей параметров по ссылке, третий способ - передачей не типизированных параметров по ссылке.