Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика (Delphi) (3 семестр) / лк3_1Подпрограммы.ppt
Скачиваний:
11
Добавлен:
31.03.2015
Размер:
175.62 Кб
Скачать

Пример. Даны две матрицы: а из 3-х строк и 5 столбцов и b из 7 строк и 3 столбцов. Вычислить минимальные значения элементов для каждой строки каждой из этих

матриц. Состав данных программы

Имя

Смысл

Тип

Структура

 

 

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

 

а

заданные матрицы

вещественный

двумерный массив размером 7*5

b

 

 

 

 

 

Выходные данные

 

mina

минимальные

вещественны

одномерный массив из 7

 

значения

й

элементов

 

элементов строк

 

 

minb

матрицы a(b)

 

 

 

 

 

Блок-схема программы

начало

Ввод матрицы а matrin(3,5,’a’,a)

Ввод матрицы b matrin(7,3,’b’,b)

Обработка матрицы а minstr(a,3,5,mina)

Обработка матрицы а minstr(b,7,3,minb)

Вывод minа masout(3,’a’,mina)

Вывод minb masout(7,’b’,minb)

Промежуточных переменных нет: все мелочи – в подпрограммах!

конец

Передача n,m,a

i:=1

нет

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

min[i]:=a[i][1]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j=2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нет

 

 

m

 

 

 

 

 

 

 

да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a[i]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[j]<min[i]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

min[i]=a[i][j]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j=j+1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i=i+1

Передача min

Блок-схема процедуры определения минимальных значений строк матрицы

Программа примера

program primer2_2;

Type matr=array[1..7,1..5] of real; mas= array[1..7] of real; Var a,b:matr; mina,minb:mas; {далее-раздел процедур и функций}

Procedure minstr(Var a:matr; n,m:integer; Var min:mas); Var i,j:integer;

Begin

for i:=1 to n do begin

min[i]:=a[i,1]; for j:=2 to m do

if min[i]>a[i,j] then min[i]:=a[i,j];

end End{minstr};

Программа примера (продолжение)

Procedure matrin(n,m:integer; c:char; Var p:matr); Var i,j:integer;

Begin

Writeln('Введите матрицу ',c,' размером ',n,'*',m); for i:=1 to n do

for j:=1 to m do read(p[i,j]);

readln;

End{matrin};

Procedure masout(n:integer;c:char;Var min:mas); Var i:integer;

Begin

Writeln('Минимальные значения строк матрицы ',c); for i:=1 to n do

writeln(' ',min[i]); End{masout};

Программа примера (продолжение)

Begin {начинается раздел действий программы} matrin(3,5,'a',a);

matrin(7,3,'b',b); minstr( a,3,5,mina); minstr( b,7,3,minb); masout(3,'a', mina); masout(7,'b', minb); readln

End.

ПАСКАЛЬ: ОПИСАНИЕ ФУНКЦИЙ

Заголовок;

function ИмяФункции [(CписокФормалПарам)] :ТипФункции

Блок

Описания (ConstTypeVar

 

 

процедуры и функции)

 

 

begin

 

 

 

Операторы

 

 

 

ИмяФункции :=результат

 

 

end;

 

 

Не разрешены операторы

 

Основное выходное значение

накапливания:

 

вход и неосновные результаты

ИмяФункции:= ИмяФункции+…

 

 

Пример функции

function sum(var v:mas; n:integer):real;

{функция вычисляет сумму первых n (n<=10) элементов массива v}

var s:real; i:integer; begin

s:=0; {sum нельзя использовать для накапливания суммы}

for i:=1 to n do s:=s+v[i]; sum:=s;

end;

Обращение к функции

Обращение к функции производится в выражениях посредством использования указателя фукции:

ИмяФункции[(Список фактических параметров)];

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

Пример. Вычислить значение У:

 

10

 

5

 

 

5

 

 

 

bi 5

 

 

bi

 

ai

 

y

i 1

i 1

 

 

i 1

 

 

 

 

 

 

 

 

10

 

 

 

 

 

 

ai

 

 

 

 

 

 

i 1