Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Процедуры и функции (96

..pdf
Скачиваний:
0
Добавлен:
15.11.2022
Размер:
195.17 Кб
Скачать

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Московский государственный технический университет имени Н.Э. Баумана

В.И. Неземский, О.А. Орешкина

ПРОЦЕДУРЫ И ФУНКЦИИ

Методические указания к практикуму «Предметная коррекционная работа по дисциплине “Основы информатики”»

Под редакцией А.Г. Станевского

Москва Издательство МГТУ им. Н.Э. Баумана

2009

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

УДК 681.3 ББК 32.81 H443

Рецензент М.Ю. Барышникова

Неземский В.И., Орешкина О.А.

H443 Процедуры и функции: Метод. указания / Под ред. А.Г. Станевского. – М.: Изд-во МГТУ им. Н.Э. Баумана, 2009. – 28 с.: ил.

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

Для студентов ГУИМЦ, изучающих дисциплины «Основы информатики», «Алгоритмические языки программирования», «Информатика» в программах инклюзивного образования в условиях интегрированного обучения.

УДК 681.3 ББК 32.81

c МГТУ им. Н.Э. Баумана, 2009

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Метод решения хорош, если с самого начала мы можем предвидеть — и далее подтвердить это — что, следуя этому методу, мы достигнем цели.

Г. Лейбниц

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

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

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

Для решения таких задач используется технология нисходящего программирования, которая базируется на методе программирования «сверху вниз». Часто этот метод называют методом пошаговой детализации.

Как правило, программа состоит из нескольких подзадач (фрагментов), которые называют подпрограммами.

Подпрограмма — это блок кода с именем, состоящий из заголовка, объявлений и тела, включающего в себя набор исполнительных операторов.

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

3

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Процедура — это независимая именованная часть программы, которую можно вызвать по имени для выполнения определенных действий.

Структура процедуры повторяет структуру программы. Процедура не может выступать как операнд в выражении. Функция аналогична процедуре, но имеет два отличия:

функция передает в точку вызова единственное значение через имя функции;

имя функции может входить в выражение как операнд.

Все подпрограммы языка Паскаль, которые размещены в модуле SYSTEM, называются стандартными. Примером могут служить стандартные функции: sin, cos, Length и т. д. Всякий раз, когда используется такая подпрограмма, например, функция cos, вычисляющая значение косинуса угла, пользователь не знает, по какому алгоритму вычисляется значение косинуса, для него содержимое подпрограммы скрыто. Подпрограммы лежат в основе методики программирования, называемой сокрытием информации.

В дополнение к стандартным подпрограммам система программирования позволяет пользователю разрабатывать и использовать свои собственные, пользовательские подпрограммы.

Разделение программ на подпрограммы необходимо по следующим причинам.

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

2.Подпрограмма — это прекрасное средство для экономии памяти. Она позволяет исключить дублирование кода и обеспечивает возможность его повторного использования. Каждая подпрограмма существует (описана) в программе в единственном экземпляре, однако обращаться к подпрограмме (вызывать ее) можно многократно из разных точек основной программы.

3.Появляется возможность применять метод структурного программирования (нисходящего программирования). Любая подпро-

4

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

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

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

5.Подпрограммы независимы от внешнего воздействия, кроме передачи значений в подпрограмму.

6.Все, что сделано в программе качественно (например, эффективные и красивые алгоритмы), хочется перенести в новые проекты, и лучше всего это осуществлять в виде подпрограмм.

Все изложенное выше иллюстрирует рис. 1.

На рис. 1 показана программа, состоящая из двух подпрограмм:

Подпрограммы А и Подпрограммы В. В свою очередь, подпрограмма А состоит из нескольких подпрограмм А1. . . АN, которые называются вложенными.

Вложенные подпрограммы — это локальные подпрограммы, текст которых размещен внутри текста подпрограммы более высокого уровня.

Таким образом, каждая подпрограмма представляет некоторый небольшой сценарий конкретных определенных действий, а вся сумма сценариев cоставляет некоторое единое действие — цель. Турбо-Паскаль допускает любой уровень вложенности процедур, но из практических соображений он не должен быть более трех.

Подпрограмма В включает в себя подпрограммы В1 и В2, а подпрограмма В2, в свою очередь, состоит из подпрограмм В21

иВ22.

Обращение к подпрограмме в программе называется вызовом подпрограммы.

Например, АА(а);

ВВ (а, в, с);

Если в программе используется оператор перехода GO TO (что нежелательно), то нужно учитывать, что область действия меток перехода всегда локальна. Нельзя планировать переход с помощью

5

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Рис. 1

оператора GO TO из вложенной процедуры в охватывающую процедуру, в тело программы или из программы в процедуру.

Расположение процедур и функций в программе

Процедуры и функции располагаются в разделе описаний. Описать процедуру и функцию — значит описать их заголовок, объявления и тело:

Program <имя программы>;

{имя программы — это имя файла, в котором} {хранится код программы}

Label {описание меток}

6

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Const {описание констант} Type {описание типов}

Var {описание переменных}

Procedure <имя процедуры> (список формальных параметров); Label {описание локальных меток}

Const { описание констант} Type { описание типов}

Var {описание переменных в подпрограмме}

Procedure<имя процедуры> ( );{описание вложенных внутренних процедур}

begin. . . end;

Function < имя функции> ( ): < тип результата>; {и функций с параметрами}

begin. . . end;

begin

{тело процедуры, блок исполняемых операторов процедуры} end; {конец процедуры}

Function<имя функции>(список формальных параметров):<тип результата>;

Label {описание локальных меток} Const {описание констант}

Type {описание типов}

Var {описание переменных} Procedure <имя процедуры>;

{Описание внутренних (вложенных) процедур и функций} begin

{тело процедуры, блок исполняемых операторов процедуры} end; {конец процедуры}

Function <имя функции> : < тип результата>; {без параметров} begin

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

end; {конец функции}

BEGIN

{операторы программы — это определенные указания,} {которые должен выполнить компьютер, включая} {операторы вызова процедур и функций}

END {конец основной программы}

7

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

Описание процедур и функций

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

Синтаксис заголовка процедуры с параметрами имеет вид:

Procedure <имя>(<список формальных параметров>); [<стандартная директива>].

Функция с параметрами имеет заголовок, который начинается с ключевого слова Function, за которым следует имя функции. После имени в круглых скобках находится список формальных параметров с указанием их типа, и после закрывающей круглой скобки ставятся двоеточие, тип данных результата, который возвращает функция, и точка с запятой.

Синтаксис заголовка функции с параметрами имеет вид:

Function <имя> (<список формальных параметров>):<тип результата функции>; [<стандартная директива>],

где <имя> — имя процедуры/функции (правильный идентификатор);

<список формальных параметров> — список формальных параметров.

Параметры перечисляются в списке через запятую, за последним параметром следует двоеточие и указание типа данных. Параметры различных типов отделяются друг от друга точкой с запятой:

<тип> — тип возвращаемого функцией результата; <стандартная директива> — имя директивы из списка стандарт-

ных директив: ASSEMBLER (ассемблер), EXTERNAL (внешняя), FAR (дальняя), FORWARD (опережающая), INLINE (встроенная), INTERRUPT (прерывание), NEAR (ближняя). Действие директивы распространяется на ту подпрограмму, в заголовке которой директива указана.

[ ] — квадратные скобки указывают на необязательное использование заключенного в них описания.

( ) — в круглых скобках размещаются описания параметров процедуры или функции.

8

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

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

Примеры заголовков процедур и функций с параметрами:

Procedure Circle ( X,Y, Radius : byte); {рисует круг} Procedure Print (Number : integer; ch : char); Function UpCase ( CH : char) : byte;

Function Count (chislo : binary) : boolean;

Список формальных параметров у процедуры или функции может отсутствовать. Такая процедура/функция называется процедурой/функцией без параметров.

Процедура без параметров имеет заголовок, который начинается с ключевого слова Procedure, за которым следуют имя процедуры и точка с запятой:

Procedure <имя>;

Функция без параметров имеет заголовок, который начинается

сключевого слова Function, за которым следуют имя функции, двоеточие, тип результата, который возвращает функция, и точка

сзапятой:

Function <имя>: <тип возвращаемого результата>;

Примеры заголовков процедур и функций без параметров:

Procedure Paint;

Procedure Grafik; Function Stroka : String; Function Svet : Real;

Параметры процедур и функций

Параметры подпрограммы обеспечивают передачу значений в подпрограмму извне. Внутри подпрограммы параметры ведут себя как переменные.

Параметры, указываемые в заголовке процедуры/функции при

ееописании, называются формальными параметрами. Параметры, указываемые при вызове процедуры/функции в

основной программе, называются фактическими параметрами. Фактические параметры подпрограммы — это определенные значения, которые передаются подпрограмме во время вызова процедуры или функции в основной программе.

9

Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»

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

всебя:

параметры-значения,

параметры-переменные,

параметры-процедуры,

параметры-функции,

нетипизированные (бестиповые) параметры;

параметры, передаваемые через открытые массивы. Согласованность при передаче формальных и фактических па-

раметров должна быть осуществлена:

а) по числу (т. е. число формальных параметров должно быть равно числу фактических параметров);

б) по порядку перечисления (следования) в заголовке подпрограммы;

в) по совместимости типов данных.

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

Параметры-значения — это формальные параметры, которые позволяют передавать данные внутрь подпрограмм, но не вовне. В ячейки памяти формального параметра передается копия фактического параметра, которая обратно не возвращается (рис. 2). При описании заголовков процедур/функций перед идентификатором параметров-значений не ставятся никакие дополнительные ключевые слова. В качестве фактического параметра-значения могут использоваться как переменные, так и константы различных типов.

Не допускаются только файловые типы. Вместо параметровзначений можно подставлять непосредственно значения, выраже-

Рис. 2

10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]