28616

Подпрограмма

Доклад

Информатика, кибернетика и программирование

Функции Другой вид подпрограммыфункцияоформляется аналогично процедуре. Отличительные особенности функции: она имеет только один результат выполнения но может иметь несколько входных параметров; результат обозначается именем функции и передаётся в основную программу. Функция оформляется в следующем виде: Function имя функции формальные параметры: тип: тип значения функции; Var . Вызов функции можно делать непосредственно внутри выражения.

Русский

2013-08-20

21.26 KB

1 чел.

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

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

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

  1.  Когда Вы несколько раз перепишите в программе одни и те же последовательности команд, необходимость введения подпрограммы приобретает характер острой внутренней потребности.
  2.  Иногда слишком много мелочей закрывают главное. Полезно убрать в подпрограмму подробности, заслоняющие смысл основной программы. Полезно разбить длинную программу на составные части - просто как книгу разбивают на главы. При этом основная программа становится похожей на оглавление.
  3.  Бывают сложные частные алгоритмы. Полезно отладить их отдельно в небольших тестирующих программах. Включение программ с отлаженными алгоритмами в основную программу будет легким, если они оформлены как подпрограммы.
  4.  Все, что Вы сделали хорошо в одной программе, Вам захочется перенести в новые. Для повторного использования таких частей лучше сразу выделять в программе полезные алгоритмы в отдельные подпрограммы.

Подпрограммы могут быть стандартными, т.е. определенными системой, и собственными, т.е. определенными программистом.

Стандартная подпрограмма (процедура или функция) - подпрограмма, включенная в библиотеку программ ЭВМ, доступ к которой обеспечивается средствами языка программирования. Вызывается она по имени с заданием фактических параметров с типом описанным при описании данной процедуры в библиотечке процедур и функций.

Из набора стандартных процедур и функций по обработке одного типа информации составляются модули. Каждый модуль имеет своё имя (мы уже хорошо знакомы с модулями Crt, Graph). Доступ к процедурам и функциям модуля осуществляется при подключении этого модуля (Uses Crt, Graph).

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

Процедуры

Структура процедуры имеет следующий вид:

Procedure <имя процедуры>(формальные параметры : их тип);

Var

    (локальные переменные)

begin

     . . .

end;

Процедура вызывается по имени:

<имя процедуры> (фактические параметры);

Значение каждого фактического параметра при вызове процедуры передаётся формальному параметру. Временно управление передаётся процедуре. После завершения работы процедуры управление возвращается в основную программу.

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

Заголовок процедуры может выглядеть так:

PROCEDURE GG(a,b,c:integer); вызываться так: GG(3,n,m)

Здесь a,b,c-формальные параметры, а 3, n, m-фактические параметры

Таким образом в процедуру передаются значения: a=3, b=n, c=m

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

Например:

Procedure express(a,b,c : real; var x,y:real);

Var

  z : real;

begin

  z:=a+ b+ c;

  x:=sqr(z);

  y:=sqrt(z);

end ;

Эту процедуру можно вызвать следующим образом:

express(7.6, 6.8, 9.5, x1, x2);

Формальные входные параметры a, b, c принимают значения соответствующих фактических параметров a=7.6; b=6.8; c=9.5.

При этих значениях выполняется процедура. Результатом выполнения процедуры являются x, y, которые передают свои значения соответствующим фактическим параметрам x1, y1. Таким образом в основной программе будем иметь x1=20, y1=22.

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

Функции

Другой вид подпрограммы-функция-оформляется аналогично процедуре. Отличительные особенности функции: она имеет только один результат выполнения (но может иметь несколько входных параметров); результат обозначается именем функции и передаётся в основную программу. Функция оформляется в следующем виде:

Function <имя функции>(формальные параметры: тип): тип значения функции;

Var

  . . .

Begin

  . . .

End.

Вызывается функция по её имени с указанием фактических параметров.

Вызов функции можно делать непосредственно внутри выражения. При вызове функции тип не указывается.

Различие между процедурами и функциями

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

Program ProcedureAndFunction;

Uses

 Crt;

Var

 a, b, SumNumbers : integer;

Procedure Summa1(Var Sum: integer; a, b : integer);

Begin

 Sum:= a+b;

End;

 

Function Sum(a, b : integer) : integer;

Begin

 Sum:= a+b;

End;

 

Begin

 ClrScr;

 a := 12;

 b := 15;

 Summa1(SumNumbers, a, b);

 writeln ('С помощью процедуры сумма чисел равна ',SumNumbers);

 writeln ('С помощью функции сумма чисел равна ',Sum(a, b));

End.

Вызов процедуры производится по ее имени. Наряду с параметрами-значениями a и b, которые подлежат сложению, в списке параметров присутствует параметр-переменная Sum, который содержит возвращаемое процедурой значение - сумму. Функция же имеет только два параметра. Это связано с тем, что само имя функции представляет собой идентификатор параметра, значение которого после окончания работы функции равно результату вычисления. Этот параметр соответствует параметру-переменной Sum процедуры. При объявлении функции ей в соответствие ставят определенный тип данных - тип возвращаемого функцией значения.

Объявление функции

Function Sum(a, b : integer) : integer;

внешне похоже на объявление переменной Sum типа integer. Тип функции объявляется следом за списком параметров - после закрывающейся скобки этого списка и двоеточия.

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

SumNumbers:= Sum(a,b);

Если не обращать внимания на наличие списка параметров, то этот оператор выглядит как присвоение переменной SumNumbers значения переменной Sum. Компилятор, кончно же, знает, что Sum - это имя функции (т.к. определение предшествует использованию) и организует вычисления соответствующим образом. Точно так же, как константа или переменная, вызов функций может использоваться в списках параметров оператора write (см. программу), что для процедур невозможно.

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

Итак, из вышесказанного возьмите на заметку следующее:

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


 

А также другие работы, которые могут Вас заинтересовать

31150. Какова структура массового сознания 20.5 KB
  Структура массового сознания три уровня перевернутый треугольник 1Ядро МС Когнитивное бессознательное нижний выражается в эмоциях чувствах спонтанных действиях инстинктивном поведении. Здесь появляются стереотипы 3Уровень выражения массового сознания верхний общественное мнение обществ настроение.
31151. Что такое архетип 21 KB
  Механизм действий А: Архетипы широко используются в коммерческой деятти. Люди работающие в области СО рекламы и маркетинга знают чтобы сообщение произвело впечатление на ЦА нужно чтобы в этом сообщении имел место опред архетип. Потому что чек лучше воспринимает то сообщение в кот заложен наиболее близкий ему архетип.
31152. Каковы свойства архетипов 20 KB
  Свойства: 1 Универсальность А свойственны каждому чеку; 2 Культурная обусловленность А; 3 Устойчивость.
31153. Что такое стереотип 20 KB
  Стереотип- устойчивое представление о каких-л. объектах, свойствах той или иной соц. группы. (пример: свои – чужие. Чужие – любые другие, не входящие в твою группу)
31154. Каковы свойства стереотипа 20 KB
  Пример: свои чужие. Чужие любые другие не входящие в твою группу Свойства С: Стереотипы неиндивидуальны это групповое явление.
31155. Что такое слухи и как они связаны с феноменом массы 21.5 KB
  Свойства слухов: 1Высокая степень обобщенности; 2привязка ко времени и среде своего возникновения. 3наличие свежей новости; 4неофициальность; 5Слух сохраняет свою связь со всеми перечисленными типами соц сообщений; 6однократная воспроизводимость Второй раз одному и тому же лицу слух не пересказывается; 7подвергается дальнейшей трансляции. Слушающий впоследствии становясь говорящим передает этот слух новому слушающему.
31156. Каковы информационные предпосылки распространения слухов 23 KB
  Наиболее активными распространителями слухов явл люди формальная деятть кот играет в организации далеко не первую роль но кот хотят показать свою значимость и влияние.Чувство солидарности кот выражается в стремлении помочь коллегам друзьям знакомым предупредить их и дать возможность самим или совместно подготовиться к встрече с неприятным событием.Побуждение других к поддержке себя и своей позиции подталкивание к групповым действиям кот распространитель слуха не решается совершить сам в одиночку.
31157. Каковы психологические предпосылки распространения слухов 21.5 KB
  Чувство солидарности человека распространяющего слух.Слух как стремление человека найти союзников.Личная неприязнь злоба на определенного человека. Такой мотив побуждает человека распространять негативные слухи о своем недруге .
31158. Каковы разновидности слухов? Приведите примеры различных видов 23 KB
  Такие слухи не создаются целенаправленно возникают спонтанно.По эмоциональной характеристике: 1Слухжелание такой слух обычно выдает желаемое за действительное. Этот слух люди сами того не осознавая ждут и поэтому с легкостью ему верят.