Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metod3O.doc
Скачиваний:
16
Добавлен:
14.08.2019
Размер:
6.93 Mб
Скачать

Пример выполнения задания 3

Дана матрица a(4, 4). Получить матрицу b(4, 4) по правилу:

а также произведение элементов строки, содержащей наименьший элемент матрицы.

program lab4;

uses crt;

var к, i, j : integer;

b, a : array [1 .. 4, 1 .. 4] of real;

p, min : real;

begin clrscr;

writeln (введите матрицу d);

for i:=1 to 4 do

for j:=1 to 4 do read (a[i, j]);

min:=a[l, 1]; k:=1;

{формирование матрицы b и в этом же цикле}

{поиск минимального элемента и номера строки,

в которой он находится}

for i:=1 to 4 do

for j:=1 to 4 do

begin

if a[i, j] > 0 then b[i, j]:=2*a[i, j] else

b[i, j]:=0;

if a[i, j] < min then

begin min:=a[i, j];

к:=i

end

end;

p:=1;

for j:=1 to 4 do

p:=p*a[k, j]; {вычисление произведения элементов

k-ой строки}

writeln (вывод b(4, 4));

for i:=1 to 4 do

begin

for j:=1 to 4 do write(b[i, j]:8:2);

writeln

end;

writeln (минимальный элемент = , min :8:2);

writeln (произведение элементов , k, строки =, p:5:2)

readkey

end.

2.5. Организация программ с использованием функций

В алгоритмических языках, в отличие от математического понятия функции, рассматриваются только такие функции, для которых можно задать алгоритм определения их значений. Самостоятельный алгоритм можно оформить как функцию в том случае, если в результате получается одно единственное значение простого типа. Функция, как и процедура, может содержать несколько операторов, несколько входных параметров, но результат ее выполнения только один. Этот единственный результат обозначается именем функции и передается в основную программу.

Описание функции содержится в главной программе после раздела описания переменных (var) и перед началом (begin) программы.

В общем виде функция записывается следующим образом:

function имя(формальные параметры) :тип результата;

Раздел описаний

begin

Раздел операторов

end;

Формальные параметры – это наименования переменных (аргументы описываемой функции), через которые передаются входные данные из программы в функцию. Формальными параметрами функции, как правило, являются параметры – значения.

Само имя функции представляет собой идентификатор - параметр, значение которого после окончания работы функции равно результату вычисления. Тип результата (функции) указывается следом за списком параметров – после закрывающей скобки этого списка и двоеточия.

В разделе операторов функции обязательно должен присутствовать хотя бы один оператор присваивания, в котором переменной с именем, совпадающим с именем функции, присваивается определенное значение, тип которого совпадает с типом результата (функции). Если такого присваивание в разделе операторов функции не выполнено, то функция не возвращает никакого результата (точнее, возвратит произвольный результат).

Например, описания вычисления функции тангенса угла:

function tg(x:real): real;

begin

tg := sin(x)/cos(x)

end;

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

имя функции(фактические параметры ).

При этом вызов функции необходимо делать непосредственно внутри выражения, подобно тому, как используются стандартные встроенные функции, например синус sin(x). Фактические и формальные параметры должны согласовываться

  • по порядку следования,

  • количеству,

  • типам.

Например, вызов ранее описанной функции tg можно произвести так:

a := tg(y);

После выполнения функции выработанный ею результат используется в качестве значения указателя функции в том выражении, в котороe входит этот указатель. При вызове функции передача фактических параметров производится так же, как и при вызове процедуры.

Пример. Заданы стороны двух треугольников MNK (стороны m, n, k) и PLF (стороны p, l, f ). Переменной s присвоить значение –1, если площадь треугольника MNK меньше или равнa площади треугольника PLF, и значение 1 в противном случае.

Вычисление площади треугольников по формуле Герона оформить в виде функции pl.

Примечание. Формула Герона для вычисления площади треугольника со сторонами a, b, c:

,

где , где p – полупериметр треугольника.

program pr1;

uses crt;

var m, n, k, l, p, f, h, q: real;

s : integer;

function pl(a, b, c: real): real;

var r : real;

begin

r:= ( a + b + c ) / 2;

pl:= sqrt (r*(r – a)*(r – b)*(r – c));

end;

begin clrscr;

writeln(‘Введите стороны m, n, k, p, l, f’);

readln(m, n, k, p, l, f );

h := pl(m, n, k);

q := pl(p, l, f );

if h > q then s := 1 else s := –1;

writeln('s=' , s :3);

readkey;

end.

При передаче в функцию массива фактическим параметром является имя массива. Обратим внимание на то, что в заголовке функции для указания типов формальных параметров могут использоваться только имена типов, но не их описания.

Нельзя записать так:

function sum(a: array[1..5] of real; var : real):real;

Пример. Пусть заданы два вектора а(8) и b(12). Вычислить для каждого вектора произведение его элементов.

program pr2;

type vect = array [ 1 .. 12 ] of real;

var a, b: vect;

 ta, tb : real;

. . . . . . . . . . . . . .

function prl(var x: vect; n: integer): real;

var i: integer;

p: real;

begin p := 1;

for i:= 1 to n do

p := p * x[ i ];

pr := p

end;

begin

. . . . . . . . . . . . . . .

ta:= pr(a, 8);

tb:= pr(b, 12);

. . . . . . . . . . . . . . . . .

end.

Пример

Дана матрица А(4,4).

Вычислить

Z= X1X4 +X2X3 + X3X2+ X4X1,

где Xk – наибольшее из значений элементов K – го столбца матрицы A.

Вычисление наибольшего значения оформить в виде функции.

program lab6;

type matr = array[1..4,1..4] of real;

var a: matr; z: real;

 x: array[1..4] of real;

 i, j: integer;

function max(y:matr; k: integer): real;

var m: real; i: integer;

begin

m: = a[1,k];

for i:= 2 to 4 do

if a[i,k]> m then m:= a[i,k];

max:=m

end;

begin

writeln(‘введите матрицу a(4,4)’);

for i:= 1 to 4 do

for j:= 1 to 4 do read(a[i,j]);

for i:= 1 to 4 do x[i] :=max(a,i);

z:=0;

for i:= 1 to 4 do

z := z + x[i] * x[5 – i];

writeln(‘z=’,z:6:2);

readkey;

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]