Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции к экзамену ГТК.docx
Скачиваний:
16
Добавлен:
26.09.2019
Размер:
339.82 Кб
Скачать

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.

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

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

.

Результаты:

.