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

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

ПРОЦЕДУРЫ И ФУНКЦИИ. Любая реальная задача требует, как правило, разработки программы, сложной по структуре и содержащей большое количество операторов





 

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

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

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

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

Процедуры и функции, предусмотренные в языке программирования, называются типовыми и их программы либо встроены в систему программирования (как, например, процедуры Read, Write, функции Sin, Sqr, Sqrt и т.д.), либо могут быть вызваны при подключении соответствующей библиотеки (например, процедура Clrscr находится в библиотеке CRT).

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

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

 

ПРОЦЕДУРЫ

 

Структура процедуры по форме совпадает со структурой программы, то есть содержит заголовок, раздел объявлений объектов процедуры и раздел операторов:

Procedure имя_процедуры[(список параметров)];{Заголовок }

{раздел объявления локальных объектов процедуры:

констант, типов, переменных:}

Const…

Type…

Var…

Begin

{операторная часть или тело процеуры}

End;

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

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

2)ко второй группе относятся формальные параметры, значения которыхмогут как вводиться, так и выводиться из процедуры, то есть передаваться основной программе, так как они являются результатом работы процедуры. Такие формальные параметры в заголовке процедуры записываются, начиная со слова Var. Это указывает на то, что их значения при обращении к процедуре обязательно передаются основной программе.

Например, в заголовке процедуры proc1

Procedure proc1(b,k:integer;x:real; Var s1,s2:real );

переменные b,k,x – только входные; переменные s1,s2 – могут быть и входными, но также являются и выходными, то есть в них записываются те результаты выполнения процедуры, которые передаются основной программе, вызывающей эту процедуру.

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

Proc1(5,17,25.3, R1,R2); - означает, что переменными b,k,x присваиваются соответственно числа 5, 17, 25.3, а результаты выполнения процедуры присваиваются переменным R1,R2, которые должны быть объявлены в основной программе и поэтому называются глобальными.

Пример 11. В программе вводятся N вещественных чисел и каждое число возводится во вторую и в четвертую степень. Результаты выдаются на монитор. Исходные числа и результаты расчета представим в виде одномерных массивов. В программе предусмотрим создание процедуры vect_kv формирования вектора (одномерного массива) квадратов чисел. Эту процедуру объявим в основной программе. В целом программа будет выглядеть так:

Program main_1;

Type T=array[1..20] of real;

Var {Раздел объявления переменных основной программы: объявляются глобальные переменные i, j, k, mas_ish, mas_rez2, mas_rez4 и процедура vect_kv:}

i,j,k:integer;

mas_ish, mas_rez2, mas_rez4:array[1..20] of real;

procedure vect_kv(n,:integer; A:T; Var B:T);

{Здесь n,A – должны задаваться из вызывающей программы при обращении к процедуре, В – передаваться в вызывающую программу как результат работы процедуры, поэтому формальный параметр В предваряется словом Var}

{Объявление локальных переменных процедуры:}

var i:integer; {Это не ошибка, а коллизия обозначений: здесь i – локальная переменная, область действия которой ограничивается только телом процедуры. При выходе из процедуры ее значение становится неопределенным. Совпадение имени локальной переменной i с именем глобальной переменной i, объявленной в основной программе, только по форме, но в принципе это разные переменные. В случае совпадения имен глобальной и локальной переменной при вхождении программы в процедуру действие такой глобальной переменной приостанавливается, а при выходе из процедуры ее значение восстанавливается. Для устранения недоразумений рекомендуется задавать не совпадающие имена локальных и глобальных переменных }

{Раздел операторов процедуры, то есть тело процедуры:}

Begin

for i:=1 to n do B[i]:=sqr(A[i]);

End;

begin {Начало операторной части основной программы}

write(‘Задайте количество элементов исходного массива K=’);

read(k);

writeln(‘введите элементы массива’);

for j:=1 to k do

begin write(‘Элемент ’, j,’-й: ’); read(mas_ish[j])

end;

{Вызов процедуры для формирования массива квадратов исходных чисел::}







Дата добавления: 2015-10-19; просмотров: 378. Нарушение авторских прав; Мы поможем в написании вашей работы!




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


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


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


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

Тема: Кинематика поступательного и вращательного движения. 1. Твердое тело начинает вращаться вокруг оси Z с угловой скоростью, проекция которой изменяется со временем 1. Твердое тело начинает вращаться вокруг оси Z с угловой скоростью...

Условия приобретения статуса индивидуального предпринимателя. В соответствии с п. 1 ст. 23 ГК РФ гражданин вправе заниматься предпринимательской деятельностью без образования юридического лица с момента государственной регистрации в качестве индивидуального предпринимателя. Каковы же условия такой регистрации и...

Седалищно-прямокишечная ямка Седалищно-прямокишечная (анальная) ямка, fossa ischiorectalis (ischioanalis) – это парное углубление в области промежности, находящееся по бокам от конечного отдела прямой кишки и седалищных бугров, заполненное жировой клетчаткой, сосудами, нервами и...

Менадиона натрия бисульфит (Викасол) Групповая принадлежность •Синтетический аналог витамина K, жирорастворимый, коагулянт...

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

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

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