на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Основы программирования на языке Паскаль
p align="left">Программа Prim 27 работает аналогично программе Prim 26b, однако выводит элементы, лежащие на дополнительной диагонали.

Program Prim28;

Var i,j,min,m,n,k:integer;

a:array[1..20,1..10] of integer;

b:array[1..10] of integer;

BEGIN writeln('ввести m,n'); readln(m,n);

for i:=1 to m do {m - количество строк }

for j:=1 to n do {n - количество столбцов}

Begin writeln('ввести a[', i ,', ', j,']');

readln(a[i , j]); end;

{ вывести элементы массива а }

for i:=1 to m do

Begin writeln;

for j:=1 to n do

write(a[i,j],' '); end;

min:=32767; {максимальное integer, чтобы в последующем сравнивать}

{и заносить в min все элементы a[i,j], которые меньше min}

for i:=1 to m do

for j:=1 to n do

if a[i , j]<min then Begin min:=a[i , j]; k:=i; end;

writeln(' строка, содержащая наименьший элемент');

for j:=1 to n do

write(' a[', k ,',', j ,']=',a[k , j]);

readln; END.

Программа Prim 28 находит в массиве строку размером до 20х10, содержащую наименьший элемент.

Program Prim29;

Var i,j:integer; a:array[1..5, 1..7] of integer;

b:array[1..7] of integer;

c:array[1..5] of integer;

BEGIN for i:=1 to 5 do

for j:=1 to 7 do

begin writeln('введите a[',i,',',j,'] элемент матрицы а');

readln(a[i,j]); end;

for j:=1 to 7 do

begin writeln('введите b[',j,'] элемент вектора b');

readln(b[j]); end;

for i:=1 to 5 do {начало перемножения матрицы на вектор}

begin c[i]:=0;

for j:=1 to 7 do

c[i]:=c[i]+ a[i,j]*b[j]; end;

{конец перемножения матрицы на вектор}

writeln('распечатка массива а');

for i:=1 to 5 do

begin writeln; {начать новую строку}

for j:=1 to 7 do

write(' ',a[i,j]); end; writeln;

 writeln('распечатка массива b');

for j:=1 to 7 do

write(' ',b[j]); writeln;

writeln('результирующий массив с');

for i:=1 to 5 do

write(' ',c[i]);

readln; END.

Программа вводит матрицу А размером 5х7 и вектор размером 7 элементов, затем их перемножает по правилу Сi = Сi + a[i,j]b[j] и выводит пять элементов массива С.

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

Program Prim29a;

Var i,j,n,m:integer; a:array[1..50,1..70] of integer;

b:array[1..70] of integer;

c:array[1..50] of integer;

BEGIN writeln('ввести количество строк и столбцов');

readln(n,m);

for i:=1 to n do

for j:=1 to m do

begin writeln('ввести a[',i,',',j,'] элемент матрицы а');

readln(a[i,j]); end;

for j:=1 to m do

begin writeln('ввести b[',j,'] элемент вектора b');

readln(b[j]); end;

for i:=1 to n do {начало перемножения матрицы на вектор}

begin c[i]:=0;

for j:=1 to m do

c[i]:=c[i]+ a[i,j]*b[j]; end;

{конец перемножения матрицы на вектор}

writeln('распечатка массива а');

for i:=1 to n do

Begin writeln; {начать новую строку}

for j:=1 to m do

write(' ',a[i,j]); end; writeln;

writeln('распечатка массива b');

for j:=1 to m do

write(' ',b[j]); writeln;

writeln('результирующий массив с');

for i:=1 to n do

write(' ',c[i]);

readln; END.

Программа Prim 29a тоже перемножает матрицу на вектор. Здесь матрица может иметь размеры до 50х70, соответственно вектор B может иметь размер до 70, а вектор С - размер до 50 элементов.

7. Подпрограммы

7.1. Общие положения

В практике программирования часто встречаются ситуации, когда одну и ту же группу операторов необходимо выполнить в различных местах программы, неважно, что при этом по-разному будут называться исходные данные и результаты работы этих операторов. Важно, что эти группы операторов выполняют одну и ту же работу. Например, в различных местах программы необходимо вычислить корни квадратного уравнения, причем в одном месте это будет уравнение ax2+bx+c=0, в другом - sz2+tz+p=0, в третьем - ky2+ly+n=0 и т.д. В этом случае алгоритм вычисления корней уравнения в программе можно писать один раз в виде подпрограммы, а использовать его многократно. Блок-схема такой программы без применения подпрограммы изображена на рис. 7.1.

Блок-схема алгоритма с использованием подпрограммы изображена на рис. 7.2.

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

Функции применяют тогда, когда результат работы подпрограммы один. Обращение к функции может записываться в выражениях, например: (а+b)/cos(x). Здесь cos(x) есть обращение к подпрограмме типа "функция", правда, стандартной, а не написанной пользователем. Встретив имя cos, машина с входной величиной x обращается к подпрограмме, вычисляет с помощью ряда функцию cos(x) (см. программу в подразд. 4.4.), и результат этой работы в виде значения функции возвращается в арифметическое выражение. Функция может иметь несколько входных параметров, но всегда один результат. Процедура также может иметь несколько входных параметров, но несколько результатов. Несколько - это 0, или 1, или 2, или 3 и т.д. результатов. Обращение к процедуре состоит из отдельного оператора. Например, обращение к процедуре, вычисляющей корни квадратного уравнения, может иметь вид: root(a, b, c, x1, x2);

Подпрограммы, как функции, так и процедуры могут быть стандартными, например sin(x), cos(x), sqrt(x), succ(y), ord(y) и т.п.; библиотечными, которые становятся доступными при подключении модулей и библиотек (см. далее), а также определены пользователем, т.е. написаны программистом для решения своей задачи.

7.2. Подпрограммы-функции, определенные пользователем

Функции пользователя описываются в разделе описания функций и процедур основной программы. Описание функции строится как законченная программа, т.е. может состоять из заголовка и шести разделов: описания, меток, констант, типов, переменных, функций и процедур и раздела операторов. Заканчивается описание функции символом точка с запятой.

Написать программу, вычисляющую с помощью подпрограммы-функции, выражение:

f1(x)=x+256.4; f2(y)=y+256.4; f3(z)=z+256.4;

Program Prim30;

Var

x,y,z,f1,f2,f3:real;

function f(x:real):real; {заголовок функции;}

{ f - имя функции, это же и имя}

{результата, х - формальный параметр}

Begin f:=(x+256.4); end; {тело функции}

BEGIN {начало основной программы}

writeln('ввести x,y,z'); readln(x,y,z);

f1:=f(x); {обращение к подпрограмме f с фактическим параметром x}

f2:=f(y); {обращение к подпрограмме f с фактическим параметром y}

f3:=f(z); {обращение к подпрограмме f с фактическим параметром z}

writeln(f1:20,f2:20,f3:20); readln; END.

Написать программу, вычисляющую G:

Оформим вычисления в виде подпрограммы-функции:

Program Prim31;

Var h,x,y,z,g:real;

function f(a,b:real):real; {входные формальные параметры a,b}

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.