- •Курсовая работа
- •Задание
- •2.3 Компиляция и использование модулей 22
- •2.5 Пример модуля 30
- •Перемножение двух матриц 35
- •2.1 Общая структура модуля
- •2.3 Компиляция и использование модулей
- •Компиляция модулей: tpu-файлы
- •Компиляция: поиск модулей. Файл turbo.Tpl
- •2.4 Стандартные модули
- •2.5 Пример модуля
- •2.5 Синтаксические диаграммы
- •I, j: byte;
2.5 Синтаксические диаграммы
В данном заключительном разделе приводятся синтаксические диаграммы для конструкций, рассмотренных в этой главе. Кроме того, здесь показана полная синтаксическая диаграмма для программы (рисунок 5,6,7,8,9,10,11,12,13).
Рисунок 5 – программа
Рисунок 6 - модуль
Рисунок 7 – заголовок модуля
Рисунок 8 – интерфейс модуля
Рисунок 9 - спецификация использования
Рисунок 10 – элемент интерфейса
Рисунок 11 – реализация модуля
Рисунок 12 - Элемент рализации
Рисунок 13 – инициализация модуля
Практическая часть
3 Перемножение двух матриц
Задание:
Заданы двумерные матрицы размерностью 6x5 элементов, заполненные случайными числами из диапазона [1, 100]. Перемножить их элементы, имеющие одинаковые индексы, и вывести результаты на экран и записать в файл «output.txt».
Что бы выполнить данное задание мы будем использовать PascalABC.NET — это язык программирования Паскаль нового поколения, включающий классический Паскаль, большинство возможностей языка Delphi, а также ряд собственных расширений.
Код программы будет таким
const
n = 6;
m = 5;
var
a: array[1..n, 1..m] of integer;
b: array[1..n,1..m] of integer;
c: array[1..n,1..m] of integer;
i, j: byte;
sum: integer;
t: text;
begin
assign(t, 'output.txt');
randomize;
for i := 1 to n do
begin
for j := 1 to m do
begin
a[i, j] := random(100);
b[i, j] := random(100);
end;
writeln
end;
for i := 1 to n do
begin
for j := 1 to m do
begin
write(a[i, j]:3);
end;
writeln
end;
writeln;
for i := 1 to n do
begin
for j := 1 to m do
begin
write(b[i, j]:3);
end;
writeln
end;
writeln;
for i := 1 to n do
begin
for j := 1 to m do
begin
c[i,j] := a[i, j]*b[i, j];
write(c[i, j]:8);
end;
writeln
end;
rewrite(t);
for i := 1 to n do
begin
for j := 1 to m do
begin
write(t,c[i,j]:8)
end;
writeln(t)
end;
close(t);
readln
end.
Описание программы :
const
n = 6;
m = 5;
var
a: array[1..n, 1..m] of integer;
b: array[1..n,1..m] of integer;
c: array[1..n,1..m] of integer;
i, j: byte;
sum: integer;
t: text;
определение переменных
begin
assign(t, 'output.txt'); открытие файла output для записи
randomize; включения рандома
for i := 1 to n do цикл по i от 1 до n
begin
for j := 1 to m do цикл по j от 1 до m
begin
a[i, j] := random(100); заполняется матрица а рандомно от 1 до 100
b[i, j] := random(100);
end;
writeln
end;
for i := 1 to n do цикл по i от 1 до n
begin
for j := 1 to m do цикл по j от 1 до m
begin
write(a[i, j]:3); выводим на экран матрицу а
end;
writeln
end;
writeln; вывели пустую строку для разделения двух матриц
for i := 1 to n do цикл по i от 1 до n
begin
for j := 1 to m do цикл по j от 1 до m
begin
write(b[i, j]:3); выводим на экран матрицу b
end;
writeln
end;
writeln; вывели пустую строку для разделения двух матриц
for i := 1 to n do цикл по i от 1 до n
begin
for j := 1 to m do цикл по j от 1 до m
begin
c[i,j] := a[i, j]*b[i, j]; матрица c заполняется перемножением элементов матриц a и b с одинаковыми элементами
write(c[i, j]:8);
end;
writeln
end;
rewrite(t); открываем файл output для перезаписи (удаляем все что было в нем написано ранее)
for i := 1 to n do цикл по i от 1 до n
begin
for j := 1 to m do цикл по j от 1 до m
begin
write(t,c[i,j]:8) заполняем файл output матрицой c
end;
writeln(t)
end;
close(t); закрываем файл output
readln
end.
В результате мы получаем в оке вывода(рисунок 14):
Рисунок 14
После чего программа записывает сама все в папку output.
Блок-схема программы будет выглядеть следующим образом (рисунок 15):
Начало
