28620

Описание и вызов процедур и функций

Доклад

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

Формат описания процедуры имеет вид: procedure имя процедуры формальные параметры; раздел описаний процедуры begin исполняемая часть процедуры end; Формат описания функции: function имя функции формальные параметры:тип результата; раздел описаний функции begin исполняемая часть функции end; Формальные параметры в заголовке процедур и функций записываются в виде: var имя праметра: имя типа и отделяются друг от друга точкой с запятой. Вызов функции в Турбо Паскаль может производиться аналогичным способом кроме того имеется возможность...

Русский

2013-08-20

18.23 KB

0 чел.

Описание и вызов процедур и функций

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

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

procedure имя процедуры (формальные параметры);

 раздел описаний процедуры

begin

 исполняемая часть процедуры

end;

Формат описания функции:

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

 раздел описаний функции

begin

 исполняемая часть функции

end;

Формальные параметры в заголовке процедур и функций записываются в виде:

var имя праметра: имя типа

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

Вызов процедуры производится оператором, имеющим следующий формат:

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

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

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

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

имя функции := результат;

При вызове процедур и функций необходимо соблюдать следущие правила:

  1.  количество фактических параметров должно совпадать с количеством формальных;
  2.  соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу.

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

Рассмотрим использование процедуры на примере программы поиска максимума из двух целых чисел.

var x,y,m,n: integer;

procedure MaxNumber(a,b: integer; var max: integer);

begin

  if a>b then max:=a else max:=b;

end;

begin

  write('Введите x,y ');

  readln(x,y);

  MaxNumber(x,y,m);

  MaxNumber(2,x+y,n);

  writeln('m=',m,'n=',n);

end.

Аналогичную задачу, но уже с использованием функций, можно решить так:

var x,y,m,n: integer;

function MaxNumber(a,b: integer): integer;

  var max: integer;

begin

  if a>b then max:=a else max:=b;

  MaxNumber := max;

end;

begin

  write('Введите x,y ');

  readln(x,y);

  m := MaxNumber(x,y);

  n := MaxNumber(2,x+y);

  writeln('m=',m,'n=',n);

end.


 

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

35269. Метод Гауса рішення системи лінійних рівнянь складання алгоритму 34.5 KB
  Поставте задачу розв’язання системи лінійних рівнянь методом Гауса. Яка умова застосування методу Гауса. Скільки етапів вирішення системи лінійних рівнянь методом Гауса. Що називають прямим та зворотнім ходом методу Гауса...
35270. Тема. Знаходження інтегралу за формулами трапецій. 181 KB
  h void min {double bhSynI; int ni; cout Vvedite nijnii predel : ; cin ; cout Vvedite verhnii predel b: ; cout Vvedite verhnii predel b: ;; cin b; cout Vvedite n: ; cin n; doublex=new double [n]; doubley=new double [n]; h=b n; S=0; x[0]=; fori=1;i =n1;i {x[i1]=x[0]ih; y[i]=1 pow3x[i]x[i]0.5; S=Sy[i]; I=b nSy[0]y[n] 2; cout I= I; } } .
35271. Тема. Знаходження інтегралу за формулами трапецій. 22.5 KB
  h void min { int n; double bhT ; cout Enter bn n ; cin b n; h=b n; doublex=new double[n]; x[0]=; forint i=0;i =n;i {x[i]=x[0]ih;} doubley= new double [n]; for i=0; i =n; i { y[i]=1 sqrtx[i]x[i]0.
35272. Тема. Обчислення інтегралу по формулі Сімпсона. 26 KB
  Обчислення інтегралу по формулі Сімпсона. Навчитися обчислювати інтеграл по формулі Сімпсона; склаcти алгоритм. Обчислити інтеграл по формулі Сімпсона при заданому значенні 16 include iostrem. Які проста та узагальнена формули Сімпсона Сформулюйте ідею методу Якою повинна бути розбивка відрізку на частини Яка оцінка похибки методу Сімпсона Який ступінь точності методу Який зв’язок формули Сімпсона та НьютонаКотеса .
35273. Тема. Метод Крилова побудови власного багаточлена матриці. 36 KB
  h void min { int klj; double [3][3]b[3][3]y0[3]y1[3]y2[3]y3[3]y4[3]yn1yn2yn3yn4Sum1Sum2Sum3Sum4; double x1x2x3x4d0d1d2d3102030213132; cout Vvedite mtritsy endl; fork=0;k =3;k { forl=0;l =3;l cin b[k][l]; } cout Vvedite nylevou vektor endl; fork=0;k =3;k cin y0[k]; fork=0;k =3;k { forl=0;l =3;l { yn1=b[k][l]y0[l]; Sum1=Sum1yn1; } y1[k]=Sum1; } fork=0;k =3;k { forl=0;l =3;l { yn2=b[k][l]y1[l]; Sum2=Sum2yn2; } y2[k]=Sum2; } fork=0;k =3;k {...
35274. Тема: Масиви. Селективна обробка масивів Ціль роботи: вивчити роботу з масивом як зі складеним типом даних 369 KB
  Відповідно до індивідуального завдання розробити алгоритм ініціалізації масиву селективної обробки масиву. 7 Знайти суму позитивних чисел масиву Контрольні запитання 1.Які типи мови С можна і не можна вказувати як тип при оголошенні масиву 4.У яких випадках розмірність масиву при оголошенні можна не вказувати 5.
35275. Тема: Обробка символьних даних Ціль роботи: вивчити і навчитися використовувати масиви символьних даних. 184 KB
  Обладнання: ПКПО Borlnd C Хід роботи 1. Для роботи з рядками використовувати покажчики на тип chr масиви покажчиків.Підготуватися до захисту лабораторної роботи вивчивши питання по даній темі.
35276. Тема: Використання бібліотечних функцій для роботи із символьними даними Ціль роботи: виробити практичні н. 54 KB
  Лабораторна робота № 24 Тема: Використання бібліотечних функцій для роботи із символьними даними Ціль роботи: виробити практичні навички в написанні програм з використанням бібліотечних функцій для роботи із символьними даними. Обладнання: ПКПО Borlnd C Хід роботи ТБ КОТ 1.Підготуватися до захисту лабораторної роботи вивчивши питання по даній темі.Який заголовний файл необхідний для роботи з бібліотечними функціями обробки символьних даних 2.
35277. Вкладені цикли. Багатомірні масиви. Масиви покажчиків 54.5 KB
  Показати використання різних видів синтаксичних конструкцій включаючи індексні вираження і покажчики на тип елементів масиву для доступу до елементів масиву. Поясните організацію збереження елементів масиву.Як відбувається масштабування при послідовному разіменування покажчика імені масиву у процесі доступу до елементів Які синтаксичні конструкції можна використовувати для доступу до елементів масиву 3.Приведіть загальну формулу для масиву Тип Ім'я [N][M][K] при доступі до заданого елемента Ім'я [i][j][k] і поясните її.