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

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

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






 

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

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

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

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

Процедуры и функции, предусмотренные в языке программирования, называются типовыми и их программы либо встроены в систему программирования (как, например, процедуры 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; просмотров: 357. Нарушение авторских прав; Мы поможем в написании вашей работы!



Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

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

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

Тема: Изучение приспособленности организмов к среде обитания Цель:выяснить механизм образования приспособлений к среде обитания и их относительный характер, сделать вывод о том, что приспособленность – результат действия естественного отбора...

Тема: Изучение фенотипов местных сортов растений Цель: расширить знания о задачах современной селекции. Оборудование:пакетики семян различных сортов томатов...

Тема: Составление цепи питания Цель: расширить знания о биотических факторах среды. Оборудование:гербарные растения...

Деятельность сестер милосердия общин Красного Креста ярко проявилась в период Тритоны – интервалы, в которых содержится три тона. К тритонам относятся увеличенная кварта (ув.4) и уменьшенная квинта (ум.5). Их можно построить на ступенях натурального и гармонического мажора и минора.  ...

Понятие о синдроме нарушения бронхиальной проходимости и его клинические проявления Синдром нарушения бронхиальной проходимости (бронхообструктивный синдром) – это патологическое состояние...

Опухоли яичников в детском и подростковом возрасте Опухоли яичников занимают первое место в структуре опухолей половой системы у девочек и встречаются в возрасте 10 – 16 лет и в период полового созревания...

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