Основы программирования на языке Паскаль
Методическое пособие - Компьютеры, программирование
Другие методички по предмету Компьютеры, программирование
?ю строку}
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 имя ф