Студопедия — Процедуры и функции
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

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






 

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

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

Роль подпрограмм выполняют процедуры и функции.

Процедура - именованная последовательность инструкций, реализующая некоторое действие.

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

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

Подпрограммы в Pascal имеют параметры.

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

Формальные - параметры, указываемые при описании (имена, под которыми будут фигурировать передаваемые данные внутри подпрограммы) и их типы.

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

Фактические - параметры, указываемые при вызове подпрограммы.

Формат описания процедуры:
Procedure < Имя процедуры> (< Имя форм. Параметра 1>: < Тип>;
< Имя форм. параметра 2>: < Тип>?);
< Раздел описаний>
Begin
< Тело процедуры>
End;

Раздел описаний может иметь такие же подразделы, как и раздел описаний основной программы. Однако описанные там объекты «видимы» лишь в этой процедуре. Они локальные, как и имена формальных параметров.

Глобальные - доступные для использования объектыдля подпрограммы, описанные ранее в разделе описаний основной программы и не переопределенные в процедуре.

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

Function < Имя функции> (< Имя форм. параметра 1>:

< Тип>; < Имя форм. параметра 2>: < Тип>?):

< Тип результата>;
< Раздел описаний>
Begin
< Тело функции>
End;

В теле функции обязательно должна быть хотя бы команда присвоения такого вида: < Имя функции>: =< Выражение>;

Вызов процедуры представляет в программе самостоятельную инструкцию: < Имя процедуры> (< Фактический параметр 1>, < Фактический параметр 2>?);

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

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

Пример 14: Из 3х введенных чисел найти максимальное.

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

Program Fn;
Var
A, B, C: Real;
Function Max(A, B: Real): Real; {Описываем функцию Max с формальными}
Begin {параметрами A и B, которая принимает }

If A> B Then Max: =A {значение максимального из них }
Else Max: =B {Здесь A и B - локальные переменные }

End;
Begin

Writeln('Введите три числа');
Readln(A, B, C);
Writeln('Максимальным из всех является ', Max(Max(A, B), C))

End.

Обратите внимание на краткость тела программы и на прозрачность действий внутри функции. Формальные параметры A и B, используемые в подпрограмме, не имеют никакого отношения к переменным A и B из основной программы.

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

В первом случае: значение переменной - фактического параметра при вызове подпрограммы присваивается локальной переменной, являющейся формальным параметром подпрограммы. Что бы ни происходило с локальной переменной, это никак не отразится на соответствующей глобальной.

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

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

Пример 15: Расположить в порядке неубывания три целых числа.

Program Pr;
Var
S1, S2, S3: Integer;
Procedure Swap(Var A, B: Integer); {Процедура Swap с параметрами-переменными}
Var C: Integer; {C - независимая локальная переменная}
Begin
C: =A; A: =B; B: =C {Меняем местами содержимое A и B}
End;
Begin

Writeln('Введите три числа');
Readln(S1, S2, S3);
If S1> S2 Then Swap(S1, S2);
If S2> S3 Then Swap(S2, S3);
If S1> S2 Then Swap(S1, S2);
Writeln('Числа в порядке неубывания: V', S1, S2, S3)

End.







Дата добавления: 2014-11-12; просмотров: 533. Нарушение авторских прав; Мы поможем в написании вашей работы!



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

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

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

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

Классификация ИС по признаку структурированности задач Так как основное назначение ИС – автоматизировать информационные процессы для решения определенных задач, то одна из основных классификаций – это классификация ИС по степени структурированности задач...

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

Тема 5. Анализ количественного и качественного состава персонала Персонал является одним из важнейших факторов в организации. Его состояние и эффективное использование прямо влияет на конечные результаты хозяйственной деятельности организации.

Билет №7 (1 вопрос) Язык как средство общения и форма существования национальной культуры. Русский литературный язык как нормированная и обработанная форма общенародного языка Важнейшая функция языка - коммуникативная функция, т.е. функция общения Язык представлен в двух своих разновидностях...

Studopedia.info - Студопедия - 2014-2024 год . (0.01 сек.) русская версия | украинская версия