36567

Параметры-процедуры и параметры-функции. Процедурный тип

Контрольная

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

Описание процедурных типов имеет форму заголовка процедуры или функции с опущенным её именем: type имя процедурытипа = procedure список формальных параметров ; type имя функциитипа = function список формальных параметров : тип ; Например: type fun =function x:rel:rel; При описании подпрограммы с процедурными параметрами такие параметры указываются формальным именем и соответствующим процедурным типом. Пример процедуры использующей описанный выше процедурный тип fun: procedure print_f n:byte; f:fun; const count = 20; vr X:rel;...

Русский

2013-09-22

30.5 KB

4 чел.

Параметры-процедуры и параметры-функции. Процедурный тип.

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

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

type < имя процедуры-типа> = procedure ( <список формальных параметров>);

type < имя функции-типа> = function( <список формальных параметров>):<тип>;

Например: type fun =function (x:real):real;

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

Пример процедуры, использующей описанный выше процедурный тип fun:

procedure print_f (n:byte; f:fun);

const count = 20;

var X:real; j:integer;

begin window(n, 1, n+20, 25);

for j:=1 to count do begin X:=j*(2*pi/count);writeln(X:5:3, f(x):5:5) end

end {print_f};

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

program grid_functions; { Печать таблицы значений 2-х функций }

uses CRT;

type fun =function (x:real):real;

function sint(x:real):real; {функция sin(x) }

begin sint:=sin(x)

end {sint};

function expcos(x:real); {функция (cos(x)+1)*exp(-x)}

begin expcos:= (cos(x)+1)*exp(-x)

end {expcos};

procedure print_f (n:byte; f:fun); { печать значений функции f}

const count = 20;

var X:real; j:integer;

begin window(n, 1, n+20, 25);

for j:=1 to count do begin X:=j*(2*pi/count);writeln(X:5:3, f(x):5:5) end

end {print_f};

BEGIN { Основная программа } ClrScr;

print_f(1, sint); writeln;

print_f(30, expcos);writeln

END { grid_functions}.

Задача 4.2.6(5)

program alex5;

const n=4;

type mas=array[1..n,1..n]of integer;

var a:mas;

i,j,m:integer;

procedure proc(x:mas;k:integer;var l:integer);

var i:integer;

begin

l:=0;

for i:=1 to n do

if x[i,k]=0 then l:=l+1;

end;

begin

for i:=1 to n do

for j:=1 to n do

read(a[i,j]);

for j:=1 to n do

begin

proc(a,j,m);

if m>0 then for i:=1 to n do

writeln(a[i,j]);

end;

if m=0 then writeln('net stolbcov s nulami');

readln;

readln;

readln;

end.


 

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

72662. Обобщенную структурная схема системы связи для передачи непрерывных сообщений дискретными сигналами 4.64 MB
  Изобразить обобщенную структурную схему системы связи для передачи непрерывных сообщений дискретными сигналами привести подробное описание назначения входящих в нее блоков. Преобразование сообщения и сигналов в системе связи проиллюстрировать качественно приведением временных и спектральных диаграмм...
72664. ρ-метод факторизации Полларда на примере 32-битовых целых чисел 289.58 KB
  Цель работы – рассмотреть основные методы факторизации больших чисел; программная реализация ρ-метода факторизации Полларда; реализация генерации простых чисел; тестирование ускорения ρ-метода факторизации Полларда.
72665. Статистико-экономический анализ себестоимости подсолнечника на примере ЗАО «имени Ленина» и других хозяйств Аннинского, Богучарского и Павловского районов Воронежской области 173.73 KB
  Актуальность темы курсовой работы обусловлена тем, что для получения максимальной прибыли при минимальных затратах, на предприятии необходимо проводить более точный и тщательный анализ системы учёта издержек по видам затрат и состава себестоимости.
72668. Многоэтажное промышленное здание с неполным каркасом 595.33 KB
  Ребристую предварительно напряженную плиту армируют стержневой арматурой класса А-VI с механическим натяжением на упоры форм. К трещиностойкости плиты предъявляют требования III - ей категории. Изделие подвергают тепловой обработке при атмосферном давлении.
72670. Принятие покупочных решений индивидуальным потребителем 500.64 KB
  Актуальность работы состоит также и в том, что изучение спроса играет огромную роль в развитии предприятия и поддержания его конкурентоспособности, причем на всех уровнях: и на микро, и на макро, что особенно важно в условиях развития нашего рынка.