АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Write(' Комментарий: '); Readln(S_t)

end;

Begin Fam:='И.И.Иванов'; Dat:='06.12.95'; {Dat - фактический параметр }

VIZ(Dat); { вызов процедуры } Readln END.

 

Если процедура описана в другом файле с именем, например, F_PR. pas, то ее можно подключить к программе, указав в разделе описания директиву: {$I F_PR. pas}

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

 

uses DOS; { подключение модуля DOS }

Procedure Date_Time;

var y, m, d, d_w:word; h, min, sec, hund: word; {локальные параметры }

Begin

GetDate(y,m,d,d_w); {вызов процедуры DOS, возвращающей параметры даты }

GetTime(h,min,sec,hund); { процедура, возвращающая параметры времени }

writeln('сегодня: ');

writeln('_':10, d, ' число');

writeln('_':10, m, ' месяц');

writeln('_':10, y, ' год');

writeln('день недели: ', d_w); { d_w= 0 - воскресенье, и т. д. }

writeln('Время: ');

writeln('_':6, h, ' часов');

writeln('_':6, min, ' минут');

Writeln('_':6, sec, ' секунд'); readln

end;

Begin Date_Time end.

 

В практических задачах часто пишутся процедуры, возвращающие значения элементов массивов. Приведем пример процедуры расчета "N" значений функции, например, Y= 4*Sin(x)+7*Cos(x); в заданном диапазоне x1<=x<=x2, при N<=100 и равномерной разбивке диапазона.

 

type r_1000= array[1.. 1000] of real; { задается тип r_1000 }

var Z: r_1000; x1, x2: real; n: word;

Procedure Mas_Y(var Y:r_1000; x1,x2:real; n:word); {Y - параметр-

переменная}

var i: word; x, dx: real; { локальные параметры }

Begin

If (n>1000) or (n<2) then begin

writeln('Длина массива >1 и не должна превышать 1000');

Readln; Halt end;

i:=0; x:=x1; dx:=(x2-x1)/(n-1); { dx - шаг изменения аргумента }

If dx<= 0 then begin

writeln('x2 должно быть больше x1'); Readln; Halt end;

While x<x2 do begin

i:= i+1; x:= x1 + dx*(i-1); Y[i]:= 4*Sin(x)+7*cos(x)

End

end;

begin Writeln('Введите значения х1,х2, (x2>x1)'); Readln(x1, x2);

Writeln('Введите значение 1 <n<= 1000 '); Readln(n);

Mas_Y(Z, x1, x2, n); { вызов процедуры, возвращающей массив "Z" }

End.

Здесь тип формального параметра "Y" задается в разделе описания типов внешней программы и совпадает с типом фактического параметра "Z", значения элементов которого возвращаются во внешнюю программу.

 

Оператор Halt прерывает выполнение всей программы, даже если он используется внутри процедуры. Применение оператора Exit внутри процедуры вызывает прерывание процедуры, но не внешней программы.

Приведем пример процедуры вывода массива чисел в файл:

 

Type M_30х30_r= array[1..30, 1..30] of real; { задается тип M_30х30_r }

var x: M_30х30_r; i, j, n, m: byte;

{----------------------------------------------------------------}

Procedure Wr_M(a: M_30х30_r; name_f: string; n, m: byte);

Var i, j: byte; { a - массив NxM, n<=30, m<=30 }

f: text; { name_f - имя файла }

begin assign(f, name_f); rewrite(f);

For i:= 1 to n do begin writeln(f);

For j:= 1 to m do write(f, a[i,j]:6:2) end;


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)