Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
контрольная работа по ИТ 1курс ЭЭФ.doc
Скачиваний:
8
Добавлен:
15.11.2018
Размер:
386 Кб
Скачать
☆

1.4.2 Подпрограмма-процедура

На Паскале:

procedure <имя процедуры>(<параметры-значения>; var <параметры-переменные>)

Параметры-значения определяют исходные данные для работы подпрограммы.

Параметры-переменные определяют, как правило, выходные данные подпрограммы.

Вызов подпрограммы-процедуры:

<имя процедуры>(<список фактических параметров>)

На Фортране:

subroutine <имя подпрограммы>(<список формальных параметров>)

Вызов подпрограммы-процедуры:

call <имя подпрограммы>(<список фактических параметров>)

Между фактическими и формальными параметрами должно быть соответствие по типу, количеству и порядку следования.

Пример 8. Найти сумму квадратов и кубов чисел от 1 до 10 и от m до n. Нахождение суммы квадратов и кубов чисел оформить в виде процедуры (рис.8).

Рис. 8. Блок-схема решения примера 8

Паскаль-программа:

var

m,n,s1,s2,s3,s4:integer;

procedure sum(a,b:integer; var p,q:integer);

{a, b – параметры-значения, p, q – параметры-переменные}

var

i:integer; {локальная переменная}

begin

p:=0; q:=0;

for i:=a to b do

begin

p:=p+sqr(i);

q:=q+i*i*i

end;

end;

begin

writeln(‘Введите целые числа m и n ‘);

write(‘m=’); readln(m);

write(‘n=’); readln(n);

sum(1,10,s1,s2);

sum(m,n,s3,s4);

writeln(‘сумма квадратов чисел от 1 до 10 равна ’, s1);

writeln(‘сумма кубов чисел от 1 до 10 равна ’, s2);

writeln(‘сумма квадратов чисел от ‘,m,’ до ‘,n,’ равна ’, s3);

writeln(‘сумма кубов чисел от ‘,m,’ до ‘,n,’ равна ’, s4);

end.

1.5. Массивы и файлы

Массив – это упорядоченная совокупность однотипных данных, обозначенных одним именем.

Пример 9. Даны действительные числа a1, …, an. Получить an, an-1, …, a1 (рис.9).

Рис. 9. Блок-схема решения примера 9

Паскаль-программа:

var i, n: integer; t: real;

a: array [1..100] of real;

f,g: file of real;

begin

{связываем файловую переменную f с именем файла на диске}

assign(f,’myfile.dat’);

assign(g,’output.dat’);

{открываем файл для чтения}

reset(f);

{открываем файл для записи}

rewrite(g); n:=0;

{последовательно заносим значения из файла в массив, пока не будет достигнут конец файла}

while not(eof(f)) do

begin {подсчитываем количество значений, хранящихся в файле}

n:=n+1; read(f,a[n]);

end;

for i:=1 to int(n/2) do

{int – целая часть от деления}

begin {меняем местами два элемента массива}

t:=a[i]; a[i]:=a[n-i+1];

a[n-i+1]:=t end;

for i:=1 to n do

{заносим значения элементов массива в файл}

write(g,a[i]); close(f); close(g)

{закрываем файл} end.

2. Указания

Каждый вариант курсовой работы включает в себя две задачи, необходимо разработать алгоритм решения одной из задач на языке Паскаль, второй – на языке Фортран (по выбору студента).

Пример решения задачи:

Даны действительные числа x1, y1, x2, y2, …, x10, y10. Найти периметр десятиугольника, вершины которого имеют соответственно координаты (x1, y1), (x2, y2), …, (x10, y10).

Нахождение длин сторон прямоугольника оформить в виде подпрограммы (рис.10).

Паскаль-программа:

var

x,y:array [1..10] of real;

i:integer;

p,dl:real;

procedure dlstor(a,b:real; var q:real);

begin

q:=sqrt(sqr(a)+sqr(b));

end;

begin

p:=0;

for i:=1 to 10 do

begin

writeln(‘Введите координаты точки ‘);

write(‘x(‘,i,’)=’);

readln(x[i]);

write(‘y(‘,i,’)=’);

readln(y[i]);

dlstor(x[i],y[i],dl);

p:=p+dl

end;

writeln(‘периметр десятиугольника равен ’, p);

end.

Рис. 10. Блок-схема решения примера