- •Волгоград 2006
- •3. Двумерные массивы (матрицы) 24
- •3.1. Объявление двумерных массивов 24
- •3.2. Решение задач с использованием двумерных массивов 25
- •3.2.7. Обработка элементов квадратных матриц, расположенных над и под главными и побочными диагоналями 39
- •1. Общие понятия
- •2. Одномерные массивы (векторы)
- •2.1. Объявление одномерных массивов
- •2.2. Типовые алгоритмы обработки одномерных массивов
- •2.2.1. Ввод одномерного массива в память компьютера
- •2.2.2. Вывод массива на экран
- •2.2.3. Подсчёт суммы, произведения, количества элементов одномерного массива, удовлетворяющих заданному условию
- •2.2.4 Поиск значений среднего арифметического и среднего геометрического элементов массива
- •2.2.5. Обработка элементов одномерного массива, имеющих чётные индексы
- •2.2.6. Формирование нового одномерного массива из элементов другого одномерного массива
- •2.2.7. Нахождение максимального (минимального) элемента одномерного массива
- •2.2.9. Сортировка элементов массива
- •3. Двумерные массивы (матрицы)
- •3.1. Объявление двумерных массивов
- •3.2. Решение задач с использованием двумерных массивов
- •3.2.1. Ввод и вывод на экран двумерного массива
- •3.2.2. Алгоритмы обработки матрицы в целом
- •3.2.3. Алгоритмы обработки отдельных строк или столбцов матрицы
- •3.2.4. Алгоритмы обработки элементов каждой строки матрицы
- •3.2.4. Алгоритмы обработки элементов каждого столбца матрицы
- •3.2.5. Обработка элементов матрицы, расположенных в четных и нечетных строках или столбцах
- •3.2.5. Обработка элементов главной диагонали
- •3.2.6. Обработка элементов побочной диагонали
- •3.2.7. Обработка элементов квадратных матриц, расположенных над и под главными и побочными диагоналями
- •3.2.8. Транспонирование матрицы
- •Иерархическая структура программы
- •Структура программы, использующей подпрограммы
- •Локальные и глобальные идентификаторы
- •Формальные и фактические параметры
- •Способы передачи параметров в подпрограммы
- •Подпрограммы-процедуры Описание процедуры
- •Вызов процедуры
- •Примеры использования подпрограмм-процедур
- •Функции Описание функции
- •Вызов функции
- •Примеры использования подпрограмм-функций
- •Пример решения задачи с использованием подпрограмм
- •Список рекомендуемой литературы
- •Обработка массивов
- •400131 Волгоград, пр. Ленина, 28.
- •400131 Волгоград, ул. Советская,35.
Функции Описание функции
Описание Функция в языке Turbo Pascal состоит из заголовка и тела функции. Так как структура раздела описаний и раздела операторов подпрограммы аналогична структуре соответствующих разделов основной программы, рассмотрим подробно только правила составления заголовка подпрограммы-функции.
Формат заголовка функции:
Function : ;
В качестве формальных параметров функции необходимо указать только входные данные. Правила составления списка формальных параметров для подпрограммы-функции такие же, как и при описании подпрограмм-процедур.
Результат, полученный с помощью функции, возвращается через ее имя и является единственным значением простого, строкового или ссылочного типа. Тип результата указывается в заголовке как <тип результата>.
Примеры заголовков подпрограмм-функций:
Function Summa(x,y:integer):integer;
Function Prizn:boolean; {функция без параметров}
Function ABC(a,b : real; k:integer):real;
Для возврата результата в вызывающий модуль в разделе операторов тела функции должен быть, по крайне мере, один специальный оператор, присваивающий имени функции значение результата <имя_функции>:=<результат>..
Имя функции может присутствовать только в левых частях операторов присваивания в теле функции.
Если функция, кроме вычисления результата, меняет какие либо глобальные данные или производит другие действия, не связанные с вычислениями своего значения, говорят, что функция имеет побочный эффект. Таких ситуаций следует избегать.
Вызов функции
Вызов функции осуществляется как .
Вызов функции может встречаться многократно в разделе исполняемых операторов модулей, которым эта функция доступна. Каждый фактический параметр должен быть определен (т.е. быть описанным и иметь значения) в вызывающем модуле.
Вызов функции не является отдельным оператором (в отличие от вызова процедуры), так как имя функции возвращает определённое значение (результат) в вызывающий модуль. Поэтому вызов функции в программе может встречаться там, где могут встречаться выражения, может быть операндом любого выражения и фактическим параметром при вызове функций и процедур.
Примеры вызовов функций:
m:=ABC(x,y,z);
writeln(’Сумма=’, Summa(a,b));
if Prizn then y:=5;
Примеры использования подпрограмм-функций
Продемонстрируем использование подпрограмм-функций для решения задач, разобранных выше.
Задача 1: найти среднее арифметическое двух пар чисел А и В, С и D.
Program Primer_Function_1;
Var {раздел описания глобальных переменных}
A, B, C, D, S1, S2 : real;
Function Sum (N, M: integer):real; {заголовок функции}
Begin
Sum := (N + M) / 2 {присвоение имени функции вычисленного значения }
End; {конец описания функции}
Begin {начало основной программы}
Writeln(’Введите 4 числа’);
Readln(A,B,C,D);
S1 := Sum (A, B); {вызов функции }
S2 := Sum (C,D) {вызов функции }
Writeln (’S1=’, S1:6:2,’S2=’, S2:6:2)
End.
Задача 2: найти сумму элементов главных диагоналей матриц A(n,n) и B(m,m) (n<=10, m<=15).
Program Primer_Function_2;
Const
Nmax=15;
Type
tmatr=array[1..Nmax, 1..Nmax] of real;
Var {раздел описания глобальных переменных}
A, B: tmatr;
n, m: byte;
Sab :real;
procedure EnterMatr(var matr : tmatr; var nm : byte; ch:char);
var
i, j : byte;
begin
write(‘Введите размерность квадратной матрицы ’,ch);
readln(nm);
writeln(‘Введите элементы матрицы по строкам’);
for i:=1 to nm do
for j:=1 to nm do
begin
write(ch,’[’,i, ’,’,j, ’]=’);
read(matr[i,j]);
end;
end;
Function Summa(const matr : tmatr; nm:byte) : real; {заголовок функции}
Var{раздел описания локальных переменных, используемых в теле функции}
i: byte;
s : real;
begin
s:=0;
for i:=1 to nm do
s:= s+ matr[ i, i ];
Summa := s
end; {конец описания функции}
begin {начало основной программы}
EnterMatr(A, n, ’А’); {вызов процедуры для ввода матрицы А}
EnterMatr(В, m, ’B’); {вызов процедуры для ввода матрицы В}
Sab := Summa (A, n)+ Summa (B,m) ;
Writeln (’Sab=’, Sab:6:2)
end.