Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
10
Добавлен:
09.03.2016
Размер:
158.72 Кб
Скачать

Var a,b:integer;

function f(x:integer):integer;

begin f:=x; a:=0 end;

function g(var x:integer):integer;

begin g:=x; x:=0 end;

{ ********* main program ********** }

begin

ClrScr;

a:=1; writeln(' 1) ',a+f(a));

writeln(' 2) ',f(a)+a);

b:=2; writeln(' 3) ',g(b)=g(b))

end.

Пример 4.

program exzampl4;

var c:char;

procedure p(x,y:char);

begin

y:=succ(x)

end;

procedure q(x:char;var y:char);

begin

y:=succ(x)

end;

{ ********** main program *********** }

begin

c:='+'; p('2',c);

writeln(' 1) ',c);

c:='+'; q('2',c);

writeln(' 20 ',c)

end.

Пример 5.

program exzampl5;

var a,b,c:integer;

procedure p(var x,y:integer);

var c:integer;

begin

c:=x; x:=y; y:=c

end;

procedure q(var x,y:integer);

begin

c:=x; x:=y; y:=c

end;

{ ********** main program ************ }

begin

a:=1; b:=2; c:=3;

p(a,b); writeln('a=',a,' b=',b,' c=',c);

a:=1; b:=2; c:=3;

q(a,b); writeln('a=',a,' b=',b,' c=',c);

end.

Пример 6.

program exzampl6;

var a:integer;

function f(x:real):real;

begin

f:=x;

if x<0 then f:=f+1

end;

procedure p(var x,y:real);

begin

x:=x*y

end;

{ ********** main program ************* }

begin

p(a,f(-7)); writeln('a=',a)

end.

Пример использования подпрограммы ввода двумерных массивов из различных файлов.

Пусть заданы две матрицы A(2x3) и B(3x3):

Для начала следует создать два файла a.pas и b.pas, в которые записать коэффициенты матриц A и B соответственно.

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

uses crt;

type matr=array[1..3,1..3] of integer;

Var a,b:matr;

i,j:byte;

procedure input(var c:matr; m,n:byte; f:string);

var i,j:byte;

t:text;

begin

assign(t,f);

reset(t);

for i:=1 to m do

for j:=1 to n do read(t,c[i,j]);

close(t)

end;

begin

clrscr;

input(a,2,3,'a.pas');

input(b,3,3,'b.pas');

for i:=1 to 2 do begin

for j:=1 to 3 do write(' ',a[i,j]);

writeln

end;

writeln;

for i:=1 to 3 do begin

for j:=1 to 3 do write(' ',b[i,j]);

writeln

end;

end.

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

Задание:

В массивах A(8) и B(5) найти произведение элементов. элементы массива, где это произведение окажется меньше – увеличить в два раза.

uses crt;

const a:array[1..8] of real=(-2.3,4.2,-1.5,5.7,0.8,6.1,3.5,9.7);

b:array[1..5] of real=(10.3,7.2,0.04,-3.6,-4.1);

Var I:byte;

function mult(c:array of real):real;

Var I:byte; p:real;

begin

p:=1;

for i:=low(c) to high(c) do p:=p*c[i];

mult:=p

end;

begin

clrscr;

if mult(a)<mult(b) then begin writeln('massiv A');

for i:=1 to 8 do begin

a[i]:=a[i]*2;

write(' ',a[i]:5:1)

end

end

else begin writeln('massiv B');

for i:=1 to 5 do begin

b[i]:=b[i]*2;

write(' ',b[i]:5:1)

end

end

end.

ответ

Соседние файлы в папке Lecture_Pascal