Основы программирования на языке Паскаль
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('распечаткамассиваа
b>');
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}
Begin
f:=sqr(ln(a)+sin(b))/(cos(a)*exp(b));
end;
BEGIN writeln ('введите положительные h,x,y,z');
readln(h,x,y,z);
if (x>=1) and (x<3) then writeln('g=',h+f(x,y)) else;
if (x>=3) and (x<5) then writeln('g=',sqrt(h)+f(z,x)) else;
if (x>=5) and (x<=9) then writeln('g=',sqr(h)+f(y,z)) else;
writeln('g=0');
readln; END.
В этой программе описание формулы начинается словом function, имя функции f, результат вычисления функции типа real. Тело функции заключено в операторные скобки begin, end; a, b называются формальными параметрами. В данной функции нам не понадобились разделы описаний.
При выполнении основной программы, которая начинается begin, встречается выражение f(x, y). Встретив такое выражение, машина по имени f определяет, что это обращение к функции. затем машина проверяет совпадение количества и типа фактических параметров (x, y) с формальными (a, b). При их совпадении в тело функции вместо формальных параметров подставляются фактические и тело выполняется, полученный результат используется при вычислении выражения, стоящего в операторе writeln.
Составить программу вычисления при условии, что а<b:
Если a и b не укладываются в заданные пределы, нужно сообщить об этом пользователю и спросить, будут ли другие диапазоны — ответ: "Y, N". Если заданы не те буквы (y, n), повторить вопрос.
Прежде чем писать программу, определимся с функциями:
Другие рефераты на тему «Программирование, компьютеры и кибернетика»:
Поиск рефератов
Последние рефераты раздела
- Основные этапы объектно-ориентированного проектирования
- Основные структуры языка Java
- Основные принципы разработки графического пользовательского интерфейса
- Основы дискретной математики
- Программное обеспечение системы принятия решений адаптивного робота
- Программное обеспечение
- Проблемы сохранности информации в процессе предпринимательской деятельности