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

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

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






 

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

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

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

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

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

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

Подпрограммы в 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; просмотров: 531. Нарушение авторских прав; Мы поможем в написании вашей работы!



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

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

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

Типы конфликтных личностей (Дж. Скотт) Дж. Г. Скотт опирается на типологию Р. М. Брансом, но дополняет её. Они убеждены в своей абсолютной правоте и хотят, чтобы...

Гносеологический оптимизм, скептицизм, агностицизм.разновидности агностицизма Позицию Агностицизм защищает и критический реализм. Один из главных представителей этого направления...

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

ТЕОРИЯ ЗАЩИТНЫХ МЕХАНИЗМОВ ЛИЧНОСТИ В современной психологической литературе встречаются различные термины, касающиеся феноменов защиты...

Этические проблемы проведения экспериментов на человеке и животных В настоящее время четко определены новые подходы и требования к биомедицинским исследованиям...

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

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