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

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

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

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


 

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

23168. Літературний гурт Молода муза 89 KB
  То й не дивно гурток становила молодь вихідці із сіл та провінційних містечок Галичини вчорашні випусники університету або ті що його не закінчили канцеляристи вчителі гімназій чи вільні художники. І все ж таки його положення було краще ніж інших скажімо Яцківа чи Карманського. Нам зашивалися роти в його товаристві бо ми добре знали гостроту його язика та великі відомості з якими не один із нас не міг суперечити Говоріть що врешті відзивався Франко якому хотілося поговорити і забути...
23169. Місце і значення творчості В. Симоненка в українській літературі 24.5 KB
  Симоненка в українській літературі Поезія Василя Симоненка вийшла з глибин народного життя з мужності народу з його горя і героїчної боротьби. Симоненка. Симоненка досить широкий про що свідчить і поезія і художня проза. Симоненка в літературі про значення його поезії Олесь Гончар: Серед літераторів трапляються й такі без яких їхня доба могла б спокійно обійтись нічого істотного не втративши.
23170. Мотиви лiрики Василя Симоненка 30 KB
  Центральною в його творчостi слушно вважається патрiотична тема любовi до України її безталанного народу висловленої з недвозначною вiдвертiстю i в цьому пряме продовження шевченкiвських традицiй поєднана з iдеєю неповторностi людського я . Мiж цими датами напiвголодне довоєнне дитинство лихолiття й злиднi студентське братерство але й нашпигована пильними шукачами ворогiв народу атмосфера лiтературна студiя iменi Василя Чумака скорочено СIЧ творчi суперечки в гуртожитку далi активна участь у роботi Черкаського обласного...
23171. Нацiональний пафос поезiї Олега Ольжича 28 KB
  Звичка оцiнювати творчiсть поетiв за вiдповiднiстю тiй або iншiй iдеологiї зазвичай виправдана. До того ж подiбний пiдхiд нерiдко породжував флюгерiв вiд поезiї що завжди намагаються дотримуватись офiцiйного найзручнiшого курсу. Та все ж таки часом треба переступати через iдеологiчнi забобони й вiдокремлювати подумки поета вiд полiтика в однiй особi талант вiд переконань.
23172. Неокла́сики 34 KB
  На відміну від інших груп Неокласики не дбали про своє організаційне оформлення і не виступали з ідейноестетичними маніфестами. Те що неокласики прагнули впроваджувати в своїй творчості форми та методи грецького й римського мистецтва представникам влади здалось невизнанням радянської дійсності. Неокласики позиціонували себе як естетів і жорстко протиставляли себе народництву і романтизму. Неокласики належать до так званих письменників доби розстріляного відродження.
23173. Неоромантизм поезiї Олени Телiги 28.5 KB
  Але крiм бiльшої наближеностi до дiйсностi неоромантизм мав ще одну суттєву вiдмiннiсть вiд течiїпопередника: полiтичне зумовлення що розкидало естетично близьких митцiв по рiзних таборах революцiйної романтики що iдейно грунтувалася на своєрiдному месiанiзмi свiтової пролетарської революцiї та неоромантизму нацiональновизвольної боротьби що набув розквiту трохи пiзнiше: напередоднi й пiд час Другої свiтової вiйни. Телiгу до боротьби та залишилося в її творчостi назавжди. Скорiше це розмiрковування над ролями чоловiкiв i жiнок що...
23175. ОЛЕГ ОЛЬЖИЧ 34 KB
  Олег Ольжич народився 8 липня 1907 р. після заснування ОУН організації українських націоналістів Ольжич став одним з найактивніших її членів очолив культурний сектор організації а трохи пізніше став заступником голови проводу ОУН. у Львові вийшла збірка Ольжича Рінь.
23176. Cтруктура світогляду 38 KB
  У систему цінностей людини входять уявлення про добро і зло щастя і нещастя мету і сенс життя. Наприклад: життя це головна цінність людини безпека людини це теж велика цінність і т. Ціннісне відношення людини до світу і до самого себе формується в певну ієрархію цінностей на вершині якої розташовуються свого роду абсолютні цінності зафіксовані в тих або інших суспільних ідеалах. які регулюють повсякденне життя як окремої людини так і всього суспільства.