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

5 чел.

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

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

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

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.


 

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

65835. ПРИНЦИПЫ РАЗРАБОТКИ ОПЕРАЦИОННЫХ СИСТЕМ 20.63 KB
  Цель работы изучение основ разработки ОС принципов низкоуровневого взаимодействия с аппаратным обеспечением программирования системной функциональности и процесса загрузки системы. Результаты работы Таким образом ядро системы может оставаться нетронутым злоумышленником во время работы.
65837. Влияние кроссовой подготовки на развитие общей выносливости гиревиков 14-15 лет 352.5 KB
  Разработать методику воспитания общей выносливости с использованием кроссовой подготовки и внедрить ее в учебно-тренировочный процесс гиревиков 14 – 15 лет. Экспериментально проверить и обосновать эффективность кроссовой подготовки на развитие общей выносливости у гиревиков 14 – 15 лет.
65838. ДОСЛІДЖЕННЯ ЛІНІЙНОГО РОЗГАЛУЖЕНОГО ЕЛЕКТРИЧНОГО КОЛА ПОСТІЙНОГО СТРУМУ 420 KB
  Перший закон Кірхгофа стверджує, що алгебраїчна сума струмів в електричному вузлі дорівнює нулю, згідно другого закону – алгебраїчна сума спадів напруг вздовж замкнутого контура дорівнює алгебраїчній сумі електрорушійних сил цього ж контура.
65839. ОСНОВЫ РАБОТЫ С ТЕКСТОВЫМ РЕДАКТОРОМ AWK И ЯЗЫКОМ ПРОГРАММИРОВАНИЯ PERL 38.48 KB
  Цель работы — изучение возможностей, предоставляемых интерактивным текстовым редактором AWK из состава ОС UNIX, а также ознакомление с языком программирования Perl. Использованные теоретические сведения В ходе выполнения лабораторной работы были использованы теоретические...
65840. Профілактичне обслуговування клавіатури та маніпуляторів типу «миша» 542 KB
  Мета: Набути вмінь та навиків при профілактичному обслуговуванні пристроїв вводу інформації Теоретичні відомості Часто зустрічається така ситуація коли кнопки при роботі починають гірше натискатися. Розглянемо порядок профілактики клавіатури. Повторюємо цю операцію 103 або більше разів залежно від типу клавіатури.
65841. Освоение технологии структурного программирования при разработке и создании программы на языке Турбо Паскаль для ветвящегося вычислительного процесса 287.5 KB
  Вычислительный процесс называется ветвящимся, если для его реализации предусмотрено несколько направлений (ветвей). Каждое отдельное направление процесса обработки данных является отдельной ветвью вычислений.
65842. Основы работы с текстовым редактором AWK и языком программирования Perl 52.5 KB
  Для чего в Perl используются операторы привязки? Операторы привязки используются для совершения над строками операций по шаблонам. Например, поиск и замена участка строки, совпавшего с регулярным выражением.
65843. УПРАВЛЕНИЕ ФУНКЦИОНАЛЬНОСТЬЮ ЯДРА ОПЕРЦИОННОЙ СИСТЕМЫ 168.27 KB
  Не вникая в подробности, можно сказать, что схемы идентификации PCI- и USB- устройств парой VendorID — DeviceID по сути одинаковы, поэтому написание своего модуля не составило большой сложности.