
Выделение памяти для локальных переменных
Локальные переменные создаются при вызове подпрограммы и существуют только во время ее выполнения. Выделение памяти для локальных данных происходит автоматически в начале выполнения подпрограммы, а освобождение этой памяти - как только выполнение подпрограммы заканчивается.
Задача 1. Дан массив A[1 .. 10 ] вещественных чисел. Написать программу поиска суммы элементов массива A.
program Z1_Proc; uses Crt; const N=10; type Massiv = array[1..N] of Real; var M : Massiv; S:Real; i : 1..N; procedure Vvod; begin ClrScr; For i:=1 to N do Begin Write('введи ', i,'-ый элемент => '); Readln(M[i]); End; end; procedure Summa; begin S:=0; For i:=1 to N do S:=S+M[i]; end; begin Vvod; Summa; Write('сумма элементов массива - ',S:5:2); end.
|
program Z1_Func; uses Crt; const N=10; type Massiv = array[1..N] of Real; var M : Massiv; i : 1..N; procedure Vvod; begin
…
end; function Sum:Real; begin Sum:=0; for i:=1 to N do Sum:=Sum+M[i]; end; begin Vvod; Write('сумма элементов массива - ',Sum:5:2); end.
|
Задача2 Напишите программу, которая вычисляет значение функции Z, если указано, что: z=f(a)+f(b)+4f(c) , f(x)=x3+x2-1 |
Задача 3 Даны функции a(x,y)=x+y , b(x,y)=2*x-y и v(a,b)=2*a+3*b. Напишите программу, вычисляющую значение функции v для заданных пользователем x и y. |
Program Z2; var Z:Real; function F(X:Real):Real; begin F:=X*Sqr(X)+Sqr(X)-1; End; Begin Write(‘введи А,B,C => ’); Readln(A,B,C); Z:=F(A)+F(B)+4*F(C); Write(‘Результат вычислений = ‘,Z:5:2); end.
|
program Z3; var Z:Real; function FA(X,Y:Real):Real; begin FA:=X+Y; end; function FB(X,Y:Real):Real; begin FB:=2*X-Y; end; function FV(A,B:Real):Real; begin FV:=2*A+3*B; end; begin Write(‘введи X и Y => ’); Readln(X,Y); {догадайся, что здесь дожно быть } Write(‘V = ’,FV( ):5:2);
end. |
Задача 1. Дан массив A[1 .. 10 ] вещественных чисел. Написать программу поиска суммы элементов массива A.
|
Задача 4. Дан двумерный массив вещественных чисел. Написать программу поиска суммы его элементов .
|
uses Crt; const N=10; type Massiv=array[1..N] of Real; var M:Massiv; S:Real; i:1..N; procedure Vvod(X,Y,Step:Byte; var M:Massiv); begin GotoXY(X,Y); for i:=1 to N do begin ReadLn(M[i]); X:=X+Step; GotoXY(X,Y); end; end; procedure Summa(M:Massiv; var S:Real); begin S:=0; for i:=1 to N do S:=S+M[i]; end; begin ClrScr; Vvod(5,10,5,M); Summa(M,S); GotoXY(30,23); Write('сумма элементов- ',S:5:2); end.
|
uses Crt; const N=10; M=3; type Massiv=array[1..N] of Real; var Tabl:array[1..N] of Massiv; S, Sum:Real; i,t:1..N; procedure Vvod(X,Y,Step:Byte; var M:Massiv); begin GotoXY(X,Y); for i:=1 to N do begin ReadLn(M[i]); X:=X+Step; GotoXY(X,Y); end; end; procedure Summa(M:Massiv; var S:Real); begin S:=0; for i:=1 to N do S:=S+M[i]; end; begin ClrScr; for t:=1 to M do Vvod(5,t+10,5,Tabl[t]); Sum:=0; for t:=1 to M do begin Summa(Tabl[t],S); Sum:=Sum+S; end; GotoXY(30,23); Write('сумма элементов - ',Sum:5:2); end.
|