Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИТ(Лек)МФ+ФГГиНД(2).docx
Скачиваний:
18
Добавлен:
11.04.2015
Размер:
617.66 Кб
Скачать

4.2. Программирование задач с функциями

Заголовок описания функцииимеет вид:

function Func ( SFP1 : T1 ; … ; SFPN : TN ) : T ;

где function– функция,Func– имя функции,SFP1– список формальных параметров 1-й, SFPN– список формальных параметровN-й,T1– тип параметров в 1-м списке,TN– тип параметров вN-м списке,T– тип значения, возвращаемого функцией.

Это означает, что задаётся подпрограмма-функция с именем Func, зависящая от формальных параметров из списка SFP1 типа T1 , … из списка SFPN типа TN , а также вычисляющая значение типа T.

Вызов функциииз другой части программы имеет вид:

Func(SFP )

где Func – имя функции,SFP – список фактических параметров.

Это означает, что вычисляется значение функции Func, зависящей от фактических параметров из списка SFP, причём вызов функции может осуществляться в составе выражения.

Задача 1.

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

Программа.

Program z1;

Var

A:array[0..100] of real;

B,C,x:real;

i,n:integer;

Function Step(a,b:real):real;

begin

Step:=exp(b*ln(a));

end;

Begin

read(n,x);

for i:=0 to n do

read(A[i]);

B:=Step(2.1,5)+Step(7,0.3);

C:=0;

for i:=0 to n do

C:=C+A[i]*Step(x,i);

writeln(B,C);

End.

4.3. Программирование задач с процедурами

Заголовок описания процедурыимеет вид:

procedure Proc ( SFP1 : T1 ; … ; SFPN : TN ) ;

где procedure– процедура,Proc– имя процедуры,SFP1– список формальных параметров 1-й, SFPN– список формальных параметровN-й,T1– тип параметров в 1-м списке,TN– тип параметров вN-м списке.

Это означает, что задаётся подпрограмма-процедура с именем Proc, зависящая от формальных параметров из списка SFP1 типа T1 , … из списка SFPN типа TN, а также выполняющая какие-либо действия.

Вызов процедурыиз другой части программы имеет вид:

Proc(SFP )

где Proc – имя процедуры, SFP – список фактических параметров.

Это означает, что выполняются действия в теле процедуры Proc, зависящей от фактических параметров из списка SFP, причём вызов процедуры не может осуществляться в составе выражения.

Задача 2.

Условие задачи. В двумерном массиве A из 3 строк и 4 столбцов вычислить сумму и произведение отрицательных элементов с использованием подпрограммы-процедуры, именованных констант и типов данных.

Программа.

Program z2;

Const m=3; n=4;

Type TT=array [1..m,1..n] of real;

Var A:TT; i,j:integer; s,p:real;

Procedure SumPro(B:TT; m,n:integer; var s,p:real);

var i,j:integer;

begin

s:=0; p:=1;

for i:=1 to m do

for j:=1 to n do

if B[i,j]<0 then

begin

s:=s+B[i,j];

p:=p*B[i,j];

end;

end;

Begin

for i:=1 to m do

for j:=1 to n do

read(A[i,j]);

SumPro(A,3,4,s,p);

writeln(s,p);

End.

4.4. Программирование задач с файлами

Файлы– упорядоченные наборы данных различного типа, хранящиеся в памяти.

В языке Pascalфайлы бывают:

  1. Текстовые (типа Text).

  2. Типизированные (типаFile of …).

  3. Нетипизированные (типаFile).

Для текстовых файлов обычно применяются следующие стандартные процедуры:

  1. Assign(FP,F)– связь файловой переменнойFPс именем файлаF.

  2. Reset(FP)– открытие файла, связанного с файловой переменнойFP, для чтения.

  3. ReWrite(FP)– открытие файла, связанного с файловой переменнойFP, для записи новых данных с удалением старых.

  4. Append(FP)– открытие файла, связанного с файловой переменнойFP, для записи новых данных с добавлением к старым.

  5. Close(FP)– закрытие файла, связанного с файловой переменнойFP.

  6. Read(FP,P1,…,PN)– ввод значений переменныхP1, … ,PNиз файла, связанного с файловой переменнойFP.

  7. ReadLn(FP,P1,…,PN)– ввод значений переменныхP1, … ,PNиз файла, связанного с файловой переменнойFP, и перевод указателя в файле на новую строку.

  8. Write(FP,V1,…,VN)– вывод значений выраженийV1, … ,VNв файл, связанный с файловой переменнойFP.

  9. WriteLn(FP,V1,…,VN)– вывод значений выраженийV1, … ,VNв файл, связанный с файловой переменнойFP, и перевод указателя в файле на новую строку.

Задача 3.

Условие задачи. Ввести матрицу A размером 33 из файла a1.txt, заменить в ней элементы выше главной диагонали на нули, а затем вывести эту матрицу в файл a2.txt.

Программа.

Program z3;

Var

A:array[1..3,1..3] of real;

i,j:integer;

f1,f2:text;

Begin

assign(f1,'a1.txt');

assign(f2,'a2.txt');

reset(f1);

rewrite(f2);

for i:=1 to 3 do

for j:=1 to 3 do

read(f1,A[i,j]);

for i:=1 to 3 do

for j:=1 to 3 do

if i<j then A[i,j]:=0;

for i:=1 to 3 do

begin

for j:=1 to 3 do

write(f2,A[i,j]);

writeln(f2,'');

end;

close(f1);

close(f2);

readln;

End.

Контрольный пример.

Исходные данные:

.

Результаты:

.