Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Процедуры




ПРОЦЕДУРЫ И ФУНКЦИИ ПОЛЬЗОВАТЕЛЯ

Если в программе возникает необходимость частого обращения к некоторой
группе операторов, выполняющих действия или вычисляющих значение какого-ли­
бо выражения, то рационально сгруппировать такую группу операторов в само­
стоятельный блок, к которому можно обращаться, указывая его имя. Такие разра­
ботанные программистом самостоятельные программные блоки называются под­
программами пользователя.
Они являются основой модульного программирова­
ния. Разбивая задачу на части и формируя логически обособленные модули как
процедуры и функции, программист реализует основные принципы широко ис­
пользуемого в практике системного подхода и методов нисходящего программиро­
вания.,

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

зозвращает главной программе результат (подпрограмма-процедура не возвращает ibho результирующего значения).

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

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

' Описание процедуры включает заголовок (имя) и тело процедуры. Заголовок состоит из зарезервированного слова procedure, идентификатора (имени) процеду­ры и необязательного, заключенного в круглые скобки, списка формальных пара­метров с указанием типа каждого параметра. Имя процедуры — идентификатор, уникальный в пределах программы. Тело процедуры представляет собой локаль­ный блок, по структуре аналогичный программе. Общая структура описания проце­дур и функций иллюстрируется следующими синтаксическими диаграммами.

Описание процедуры:

Описание функции:

Заголовок процедуры:

Заголовок функции:

Описания меток, констант, типов и т. д. действительны только в пределах дан­ной процедуры. В теле процедуры можно использовать любые глобальные кон­станты и переменные.

В качестве примера опишем процедуру, которая прерывает, выполнение про­
граммы и выдает соответствующее сообщение об ошибке: г

В данной процедуре пользователя использована переменная Msg типа string, в которой хранится текст сообщения о характере ошибки, вызвавшей прерывание программы. Для прерывания выполнения программы используется стандартная процедура Halt из стандартного библиотечного модуля System.

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

В разделе описания программы описываются константа Limit, ограничиваю­щая количество вводимых чисел; в разделе описания переменных описываются пе­ременные Count, Item, Sum типа integer. Затем в блоке описания записана директи­ва компилятору {$1 ABORT.PAS}, указывающая, что при компиляции данной про­граммы в нее нужно включить в качестве процедуры программу ABORT.PAS.

В начале программы обнуляются значения количества введенных чисел Count и их сумма Sum. Потом выполняется цикл, пока очередное вводимое число меньше предельного, заданного значением константы Limit. Сначала устанавливается но­мер очередного числа, затем на экран выводится приглашение "Введите 1—е (2—е и т.п.) число", считывается значение числа с клавиатуры в переменную Item. Затем проверяется условие Item<0.

Если условие выполняется, то вызывается внешняя процедура Abort, которой передается фактический параметр-значение "введено отрицательное число". Это значение присваивается формальному параметру Msg процедуры Abort. Процедура Abort выводит на экран сообщение "Ошибка: и печатает текст сообщения — значе­ние параметра Msg "введено отрицательное число", после чего вызывает стандарт­ную процедуру Halt(l), которая прерывает выполнение программы.

Если условие Item<0 не выполняется, то значение суммы Sum увеличивается на значение введенного числа Item, и управление передается в заголовок цикла для проверки условия Count < Limit. Если условие соблюдается, то тело цикла выпол­няется еще раз, иначе цикл завершается, а управление в программе передается на оператор, следующий за циклом, т. е. за резервированным словом end;, обозначаю­щим окончание составного оператора в теле цикла. После этого на экран выводится

сообщение "Сумма введенных чисел равна" и печатается значение переменной Sum. На этом выполнение программы завершается.

Упражнение 1. Запустите интегрированную среду программирования. Введите в пер­вое окно редактора текст программы DemoProc, а во второе окно — текст процедуры Abort и запишите файлы на диск под соответствующими именами.

Примечание. Чтобы открыть новое окно в пункте File главного меню интегрированной среды программирования, выберите опцию New. Для перехода из одного окна в другое на­жимайте F6.

Откомпилируйте файл DemoProc. Если появятся сообщения об ошибке, внеси­те исправления и откомпилируйте вновь. После того как компиляция выполнится успешно, задайте для просмотра в окне отладчика величины Sum, Item и выраже­ние Count < Limit. Для того чтобы одновременно на экране наблюдать окна с тек­стами программы и процедуры, а также окно просмотра значений переменных в пункте Window главного меню интегрированной среды, задайте опцию Tile. На­жатием клавиши F7 запустите программу на исполнение в пошаговом режиме с за­ходом в процедуры. Экран компьютера будет выглядеть, как показано на рис. 7.1.

Нажимая клавишу F7, наблюдайте за значениями переменных и выражениями в окне просмотра.

В ответ на запрос "Введите число" введите отрицательное число и обратите внимание на соблюдение условия Item < 0, вследствие чего из основной программы вызывается процедура Abort. При этом в формальный параметр процедуры — пе­ременную Msg передается значение сообщения "Введено отрицательное число". Результатом действия процедуры будет вывод на экран сообщения "Ошибка: введе­но отрицательное число" и прерывание работы программы.

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

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




Поделиться с друзьями:


Дата добавления: 2015-05-09; Просмотров: 526; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.