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

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

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

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


 

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

33151. Появление театрального танца в России. Первый публичный театр. Петровские ассамблеи 16.8 KB
  Сводилось к показу бальных танцев в украшенных бытовых одеждах которые исполняли только мужчины. Возникла сложность с актерами исполнителями танцев. Театр не устраивал Петра: отсутствие исполнителей недостаточный интерес широких масс к иноземному искусству непонятность репертуара и формы танцев Петр обратил свое внимание на перевоспитание ближайшего окружения решил что в этом направлении могут помочь танцы. Назывались учителями танцев учтивств и кумплиментов.
33152. Романтический образ Тальони 15.04 KB
  В 1832 году в Парижской Опере был впервые показан балет Филиппо Тальони Сильфида. Этот балет Тальони сочинил для своей дочери знаменитой балерины Марии Тальони. Предполагается что впервые поднялась в танце на пальцы и Мария Тальони.
33153. Методические рекомендации по работе с разными категориями детей. Поддержание дисциплины в отряде 48.5 KB
  Если один взрослый запретил чтолибо а другой разрешил если один сказал: Надо сделать так а второй – Нет подругому это приводит тому что ни один вожатый не имеет авторитета в глазах детей и отряд становится неуправляемым. В лагере педагогам приходится достаточно часто сталкиваться с проблемой агрессивного поведения детей. На разных возрастных этапах проявление агрессивности у детей различно.
33154. КОЛЛЕКТИВНЫЕ ТВОРЧЕСКИЕ ДЕЛА 17 KB
  Тогда ты и сам сможешь придумать дела. малым группам; многое зависит от того кто станет ведущим этого дела; экономь время Времени на подготовку не должно быть много или мало: только в “самый разâ€. Творческая подготовка конкурсов и дел участие в общелагерных делах.
33155. Мозговой штурм. Деловая игра для педагогов 34 KB
  Один из вариантов методики мозгового штурма хорошо знаком нам по любимой не одним поколением телезрителей передаче Что Где Когда. Я думаю что для начинающего психолога мучительно размышляющего над вопросом как ему начать работу с педагогами методика мозгового штурма может стать первым шагом в этом направлении.Хочу предложить один из самых простых вариантов методики мозгового штурма который может быть реализован на педагогическом совете в процессе психологического тренинга учителей или как отдельное специальное мероприятие.
33156. НАЗВАНИЯ ОТРЯДОВ И ДЕВИЗЫ 39.5 KB
  ОбаНа Мы не панки не шпана мы ребята ОбаНа. Обана Обана это чудо Обана это класс мы живем совсем не худо вы соскучитесь без нас.
33157. Никогда не заблудишься ! (дополнение к Ориентированию) 20 KB
  Крона деревьев лучше развита на юге. Кора березы на юге эластичнее и светлее. Пологий склон муравейника на юге.
33158. Проведение смены для очень маленьких детей ( самый маленький и предпоследний отряд в лагере - 6-8 лет ) 72 KB
  Команды каждый раз меняем. Под словом эстафета понимается прохождение команды детей по маршруту по карте на которой отмечены места где находятся этапы. Команды одновременно выбегают с начальной точки и проходят все этапы по порядку но начальные этапы сдвинуты и команды встречаются только вовремя перебежек с этапа на этап. Под КВН понимается такое мероприятие в котором участвует несколько команд им выдаются задания и или команда целиком выполняет его или часть команды или по одному участнику.
33159. Клуб «Пластилиновые краски» 119.5 KB
  Ход занятия: Ребята вспоминают приемы рисования пластилином. Ход занятия: Знакомство 10 мин. 10 мин. 30 мин.