Головна сторінка Випадкова сторінка КАТЕГОРІЇ: АвтомобіліБіологіяБудівництвоВідпочинок і туризмГеографіяДім і садЕкологіяЕкономікаЕлектронікаІноземні мовиІнформатикаІншеІсторіяКультураЛітератураМатематикаМедицинаМеталлургіяМеханікаОсвітаОхорона праціПедагогікаПолітикаПравоПсихологіяРелігіяСоціологіяСпортФізикаФілософіяФінансиХімія |
РІДІЮЧИ»!!!''..Дата добавления: 2015-10-19; просмотров: 1624
Любая реальная задача требует, как правило, разработки программы, сложной по структуре и содержащей большое количество операторов. Важными в практической работе являются также вопросы скорости и сроков разработки программ. Борьба с размерностью в программировании (то есть сокращение количества операторов в основной программе, упрощение ее структуры) успешно решается разбиением задачи на подзадачи, которые реализуются с помощью подпрограмм. Подпрограмма решает некоторую частную, но достаточно самостоятельную задачу, которая может встречаться неоднократно при решении большой задачи или даже при решении нескольких задач. Деление программы на подпрограммы позволяет сокращать трудоемкость и сроки изготовления программы в целом за счет привлечения к этой работе коллектива программистов и организации параллельной работы над программой. Различаются два вида подпрограмм: процедуры и функции. Процедура –это подпрограмма, результатом выполнения которой является некоторое законченное действие. Например, ввод данных с клавиатуры, вывод данных на монитор, вычисления по формуле или по совокупности формул, очистка экрана монитора и т. д. Функция – это подпрограмма, результатом выполнения которой является единственное значение.Это значение либо присваивается некоторой переменной, либо подставляется в некоторое выражение. Процедуры и функции, предусмотренные в языке программирования, называются типовыми и их программы либо встроены в систему программирования (как, например, процедуры Read, Write, функции Sin, Sqr, Sqrt и т.д.), либо могут быть вызваны при подключении соответствующей библиотеки (например, процедура Clrscr находится в библиотеке CRT). Одним из показателей мощности современных языков программирования является набор типовых функций и процедур, предоставляемых программисту. И развитие конкретного языка программирования обычно направлено на расширение номенклатуры типовых функций и процедур. В дальнейшем будут изложены принципы подключения библиотеки типовых подпрограмм и особенности их использования в программах. Здесь же рассмотрим возможности Cоздание и применение нетиповых (своих) функций и процедур целесообразно при неоднократном их использовании в программе. Если процедуры и функции могут использоваться в различных программах, то их следует оформлять в виде библиотеки, располагая в модулях (UNITS). Подробно об этом будет рассказано в следующем учебном пособии, посвященном программированию на Delphi.
ПРОЦЕДУРЫ
Структура процедуры по форме совпадает со структурой программы, то есть содержит заголовок, раздел объявлений объектов процедуры и раздел операторов: Procedureимя_процедуры[(список параметров)];{Заголовок } {раздел объявления локальных объектов процедуры: констант, типов, переменных:} Const… Type… Var… Begin {операторная часть или тело процеуры} End; Список параметров содержит так называемые формальные параметры, отделяемые друг от друга точкой с запятой. Список формальных параметров заключается в круглые скобки. Квадратные скобки здесь показывают, что параметры процедуры могут отсутствовать ( в этом случае говорят, что «процедура без параметров»). Каждый из формальных параметров - это произвольная переменная с указанием после двоеточия ее типа. Все формальные параметры процедур можно разделить на две группы: 1)к первой группе относятся формальные параметры, значения которых только вводятся при обращении к процедуре из основной программы, то есть они используются как входные переменные;- в заголовке процедуры они описываются как переменные имя:тип; 2)ко второй группе относятся формальные параметры, значения которыхмогут как вводиться, так и выводиться из процедуры, то есть передаваться основной программе, так как они являются результатом работы процедуры.Такие формальные параметры в заголовке процедуры записываются, начиная со слова Var. Это указывает на то, что их значения при обращении к процедуре обязательно передаются основной программе. Например, в заголовке процедуры proc1 Procedureproc1(b,k:integer;x:real;Vars1,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; {Вызов процедуры для формирования массива квадратов исходных чисел::}
|