- •Оглавление
- •Предисловие
- •Введение
- •1. Разветвляющиеся вычислительные процессы
- •If логическое_выражение then оператор1 еlse оператор2;
- •If логическое_выражение then оператор1;
- •Пример 1. Вычислить значение функции y(X)
- •Программа
- •Программа
- •2. Циклические вычислительные процессы
- •2.1. Циклы с заданным числом повторений
- •2.1.1. Вычисление массива значений функции
- •2.1.2. Обработка одномерных массивов
- •2.1.2.1. Поиск наименьшего (наибольшего) элемента массива
- •2.1.2.2. Вычисление суммы и количества элементов массива
- •2.1.2.3. Вычисление произведения элементов массива
- •2.1.2.4. Поиск элементов массива по заданному критерию
- •2.2. Циклы с неизвестным числом повторений
- •2.2.1. Табулирование функции
- •2.2.2 Итерационные вычислительные процессы
- •2.2.3. Вычисление суммы членов бесконечного ряда
- •2.3. Сложные циклы
- •2.3.1. Пример алгоритма, содержащего вложенный цикл
- •Программа
- •2.3.2. Обработка двумерных массивов (матриц)
- •2.3.2.1. Вычисление суммы и количества элементов массива
- •2.3.2.2. Поиск элементов массива по заданному критерию
- •3. Работа с текстовыми файлами
- •Программа
- •4. Функции в языке Pascal
- •5. Процедуры в языке Pascal
- •Программа
- •Программа
- •Исходные данные
- •Результаты
- •6. Модули в языке Pascal
- •Unit имя-модуля;
- •Uses имя-модуля1, имя-модуля2, …, имя-модуляN;
- •Пример модуля (библиотеки) с именем Unitmatr
- •Пример рабочей программы (программы пользователя)
- •Литература Методические пособия кафедры
Исходные данные
Матрица A(3,4) Матрица B(3,3)
5.0 -4.1 9.2 -1.0 -9.0 3.0 4.5
7.3 3.6 8.0 2.2 5.2 -3.8 2.0
-4.7 7.0 6.3 5.2 -4.1 6.0 7.8
Результаты
Массив Z
z[1]= -4.1
z[2]= -1.0
z[3]= -4.7
z[4]= -9.0
z[5]= -3.8
z[6]= -4.1
6. Модули в языке Pascal
Недостатком рассмотренных ранее процедур и функций является необходимость включения их в текст программы.
Для часто используемых численных методов разрабатываются подпрограммы (процедуры и функции), которые хранятся в библиотеках, называемых в языке Pascal модулями [Л1, стр. 65-70].
Каждый модуль должен иметь уникальное имя, используя которое в программе пользователя можно обращаться к библиотеке (модулю).
Заголовок в программной единице, называемой модулем, имеет вид:
Unit имя-модуля;
Например, unit unitmatr;
Следует помнить, что имя файла, в котором записан модуль на языке Pascal, должно совпадать с именем модуля, указанного в заголовке модуля, т.е. для данного примера оно должно иметь вид unitmatr.pas.
После компиляции такой модуль получает имя unitmatr.tpu и хранится на диске.
Для подключения модуля к программе пользователя после заголовка программы нужно записать фразу:
Uses имя-модуля1, имя-модуля2, …, имя-модуляN;
Пример 25. Пусть имеется модуль с именем Unitmatr, содержащий процедуры ввода матрицы, вывода матрицы, вычисления суммы двух матриц, транспонирования матрицы.
Рассмотрим пример рабочей программы, использующей процедуры этого модуля и стандартного модуля Crt.
Пример модуля (библиотеки) с именем Unitmatr
unit unitmatr;
interface
const n=10;
type tmtr=array[1..n,1..n] of real;
procedure inmtr(var x: tmtr; k: integer);
procedure outmtr(x: tmtr; k: integer);
procedure summtr(x1,x2: tmtr; var x3: tmtr; k: integer);
procedure trmtr(x1: tmtr; var x2: tmtr; k : integer);
implementation
var i, j : integer;
procedure inmtr(var x: tmtr; k: integer); {Процедура ввода матрицы}
begin
writeln(k,'x',k);
for i:=1 to k do
for j:=1 to k do read(x[i,j]);
end;
procedure outmtr(x: tmtr; k: integer); {Процедура вывода матрицы}
begin
writeln('Матрица');
for i:=1 to k do
begin
for j:=1 to k do
write(x[i,j]:5:1,' ');
writeln;
end;
end;
procedure summtr(x1,x2: tmtr; var x3: tmtr; k: integer); { Процедура, вычисляющая сумму двух матриц}
begin
for i:=1 to k do
begin
for j:=1 to k do
x3[i,j]:=x1[i,j]+x2[i,j];
end;
end;
procedure trmtr(x1:tmtr;var x2:tmtr;k:integer); { Процедура, выполняющая транспонирование матрицы }
begin
for i:=1 to k do
for j:=1 to k do
x2[i,j]:=x1[j,i];
end;
end.
Пример рабочей программы (программы пользователя)
program usmatr;
uses unitmatr, crt; {Обращение к библиотекам (модулям)}
var d, a, b, c : tmtr;
m : integer;
begin
clrscr; { Обращение к процедуре очистки экрана, содержащейся в
модуле crt}
writeln(‘Ввести размерность матрицы m’);
readln(m);
inmtr(a,m); {Обращение к процедуре ввода матрицы а(m,m)}
inmtr(b,m); {Обращение к процедуре ввода матрицы b(m,m)}
trmtr(b,c,m); { Обращение к процедуре транспонирования матрицы
b(m,m) и записи результата в матрицу c(m,m)}
outmtr(c,m); { Обращение к процедуре вывода матрицы c(m,m)}
summtr(a,b,d,m); { Обращение к процедуре вычисления суммы двух матриц
a(m,m) и b(m,m) и записи результата в матрицу d(m,m)}
outmtr(d,m); { Обращение к процедуре вывода матрицы d(m,m)}
readln;
end.
Исходные данные Результаты
m=4