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 (см. программу), что для процедур невозможно.

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

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

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


 

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

80623. Прямой, обратный счет. Плоские геометрические фигуры 50.5 KB
  Дети берутся за руки и становятся в круг. А теперь поделитесь хорошим настроением со своими друзьями погладьте друг другу ладошки и пожмите руки дети выполняют действие. Дети рассматривают 6 картинок первые буквы слов образуют слово ракета Какое слово получилось...
80624. Зв’язок слів у реченні між собою за змістом 82 KB
  Мета. Вчити учнів зв’язувати слова у реченні, удосконалювати вміння встановлювати межі речень; розвивати навички написання слів у реченні, формувати орфографічну увагу, виховувати уважне ставлення до природи Обладнання.
80625. Симетричні форми. Симетрія у природі. Послідовність дій під час виготовлення простих симетричних форм із паперу. Практична робота: вирізання деталей виробів симетричної форми; створення аплікацій із вирізаних простих симетричних форм «Грибочок» 30.5 KB
  Мета. Вчити дітей виготовляти предметні аплікації, ознайомити із способом симетричного вирізування. Розвивати просторове уявлення, дрібну моторику. Виховувати емоційне ставлення до результатів своєї праці, інтерес до секретів природи. Обладнання: зображення грибів, кольоровий папір, картон, клей, ножиці, шаблони.
80626. Письмо великої букви Ф 34.5 KB
  Мета: навчити учнів писати велику букву Ф окремоі в словах; розвивати вміння аалізувати, зіставляти, узагальнювати; продовжувати ознайомлювати учнів зі скоромовками; виховувати інтерес до вивченння української мови, Бережливе ставлення до природи.
80627. Здравствуй, гостья Зима! 33.5 KB
  Выпал пушистый снег. На дворах и домах Снег лежит полотном И от солнца блестит Разноцветным огнем. Как в третьей строфе поэт называет снег С чем он его сравнивает Здесь художник использует такое средство художественной выразительности как сравнение когда один объект сравнивается с другим...
80628. Поняття про мову. Українська мова – державна мова України 49.5 KB
  Мета: Розширити уявлення учнів про мову як найважливіший скарб українського народу, про існування різних мов; вчити спостерігати за звучанням, написанням і значенням слів у споріднених мовах. Розвивати усне мовлення учнів, каліграфічні навички письма, поширювати словниковий запас учнів.
80629. Квіти. Музика П.І. Чайковського «Вальс квітів» 46.5 KB
  Удосконалювати техніку читання прозових творів насичених діалогами; продовжувати навчати учнів сприймати на слух, вчити голосом, інтонацією передавати настрій дійових осіб; визначати головного герою, спостерігати за його вчинками. Розширювати коло морально-етичних понять про добро, людяність, красу.
80630. Андрій М’ястківський. Казка про яблуню 89.5 KB
  Мета. Удосконалювати навички усвідомленого, виразного читання художніх творів; формувати вміння знаходити за допомогою вибіркового читання уривки тексту, що характеризують дійових осіб; виховувати працелюбність, бажання вивчати і допомагати природі.
80631. Гори України. Карпати. Рослини і тварини Карпат 49 KB
  Продовжити формувати поняття гори розкрити залежність природи гір від їхньої висоти; ознайомити учнів з характерними особливостями Карпатських гір географічним положенням кліматом рослинним і тваринним світом корисними копалинам; розвивати спостережливість...