Содержание.
1. Задание
2. Введение
3. Анализ задания
4. Математическая постановка задачи
4.1 Умножение матрицы на скаляр
4.2 Сложение и вычитание матриц
4.3 Умножение матриц
4.4 Транспонирование матриц
4.5 Поиск максимального (минимального) элемента матрицы
4.6 Формирование вектора из элементов матрицы
4.7 Упорядочивание элементов массива по возрастанию (убыванию) – сортировка
5. Алгоритм основной программы и его описание
6. Текст программы
7. Результаты работы
8. Инструкция пользователя
9. Результат отладки программы
10. Заключение
11. Список литературы
1. Задание.
Составить программу вычисления и преобразования матрицы P=f(A,B,C), где f(A,B,C) – матричное выражение; А, В, С – исходные матрицы, размер и значения элементов которых выбирается произвольно. Матричное выражение для расчёта матрицы Р № 9 и действия по её преобразованию № 5, 18 – выбирать из табл. 1 и 2 в соответствии с номером варианта задания. В программе предусмотреть вывод на печать всех исходных, промежуточных и результирующих матриц, а также результатов преобразования.
Таблица 1
№
Матричное выражение
9
(С*А)Т – 2В
Таблица 2
№
Действие с матрицей Р
5
Сформировать вектор из сумм элементов каждой строки
18
Развернуть одномерный массив по столбцам и расположить элементы полученного вектора по убыванию
2. Введение.
Современные средства вычислительной техники и ЭВМ позволяют существенным образом повысить эффективность деятельности инженеров при решении различных задач. При этом наиболее существенным вопросом является организация взаимодействия пользователя со средствами ЭВМ. В настоящей курсовой работе для этих целей использовался диалоговый режим, что позволило существенным образом упростить процесс отладки программы. В качестве языка программирования выбран изучаемый на занятиях по дисциплине «Информатика» язык программирования Турбо Паскаль. К достоинствам языка Турбо Паскаль следует отнести такие его характеристики, как модульность, универсальность, удобство работы с массивами. Возможность построения дружественного интерфейса в графическом режиме и т.д.
3. Анализ задания.
При решении поставленной задачи необходимо выполнить следующие действия:
1. Ввести значения элементов массива А.
2. Ввести значения элементов массива В.
3. Ввести значения элементов массива С.
4. Умножить матрицу С на матрицу А.
5. Провести транспонирование матрицы (С*А), т.е. вычислить матрицу (С*А)Т=(С*А)Т =К.
6. Умножить матрицу С на скаляр 2: М=2*К.
7. Из матрицы К вычесть матрицу М: Р=К–М.
8. Сформировать вектор из сумм элементов каждой строки.
9. Развернуть одномерный массив по столбцам и расположить элементы полученного вектора по убыванию.
4. Математическая постановка задачи.
4.1. Умножение матрицы на скаляр.
Чтобы умножить матрицу на скаляр, необходимо каждый элемент этой матрицы умножить на скаляр. Например, если требуется вычислить В=d*A, где А и В – матрицы, d – скаляр, то каждый элемент матрицы В определяется по формуле:
bi,j =d*ai,j; i=1,2, .,n; j=1,2, .,m,
где n,m – размеры матриц. Алгоритм умножения матрицы А, состоящей из n строк и m столбцов, на скаляр d приведён на рис.1. Оператор вычисления очередного элемента матрицы-произведения (блок 4) является телом двойного цикла по строкам (параметр i) и столбцам (параметр j). Результатом работы является матрица В того же размера, что и матрица А.
4.2. Сложение и вычитание матриц.
Чтобы сложить (вычесть) две матрицы, необходимо сложить (вычесть) соответствующие элементы этих матриц. При вычислении С=А+-В, где А и В – матрицы, каждый элемент матрицы С определяется по формуле:
сi,j = di,j +- bi,j; i=1,2, .,n; j=1,2, .,m,
где n,m – размеры матриц. Из формулы следует, что складывать (вычитать) можно только матрицы одинакового размера. Алгоритм сложения (вычитания) матриц будет таким же, как на рис.1.
Изменения в алгоритме:
1. Входные параметры: матрицы А и В, их размеры n, m;
2. В блоке 4 вычисляется сi,j= di,j +- bi,j
3. Выходной параметр – матрица В того же размера, что А и В.
4.3. Умножение матриц.
При умножении матриц каждый элемент матрицы-произведения определяется как сумма произведений элементов строки матрицы-множимого на соответствующие элементы столбца матрицы-множителя. Например, если требуется вычислить С=А*В, где А и В – матрицы, то каждый элемент матрицы С определяется по формуле:
Сi,j = aik *b kj, i=1,2, .,n; j=1,2, .,l,
где n – число строк матрицы А; l – число столбцов матрицы В; m – число столбцов матрицы А и строк матрицы В. Из формулы следует, что перемножать можно только такие матрицы, у которых число столбцов матрицы-множимого равно числу строк матрицы множителя, т.е. [aij]n*m*[bij]m*l= [cij]n*l. Алгоритм перемножения таких матриц приведен на рисунке 2. каждый элемент матрицы-произведения вычисляется в блоках 4 – 8 как сумма произведений. В блоке 4 сумма обнуляется, в блоке 6 производится непосредственное суммирование произведений, в блоке 8 накопленная сумма записывается в выходной массив.
4.4. Транспонирование матриц.
Если в матрице А поменять местами столбцы со строками, то получим транспонированную матрицу АТ. Каждый элемент транспонированной матрицы определяется по формуле:
aijT= aji, i=1,2, .,n; j=1,2, .,m.
Транспонирование матрицы можно реализовать двумя способами.
Первый способ следует применять, когда имя транспонированной матрицы не совпадает с именем исходной матрицы, т.е. когда исходная и транспонированная матрицы хранятся в разных областях памяти ЭВМ. Этот алгоритм будет такой же, как на рисунке 1, если в блоке 4 вместо формулы (4.1) записать формулу (4.4).
Второй способ следует применять, когда транспонирование требуется выполнить в той же области памяти, где располагается исходная матрица, т.е. когда транспонированная матрица должна иметь такое же имя, как и исходная (например, для экономии памяти). В этом случае для перестановки элементов необходимо организовать циклический процесс не в полном объёме, как это делается при первом способе, а в половинном, так как в противном случае каждый элемент будет переставлен дважды и, следовательно, исходная матрица останется без изменений.
На рисунке 3 приведён алгоритм транспонирования матрицы А, состоящей из n строк и m столбцов, реализующий просмотр и переустановку только тех элементов, которые расположены выше главной диагонали, так как в блоке 3 переменная цикла j (номер столбца) изменяется от i+1, а не от 1, как при первом способе. В блоке 4 реализуется операция перестановки двух элементов с использованием рабочей ячейки c.
4.5. Поиск максимального (минимального) элемента матрицы.
Алгоритм определения максимального элемента матрицы А, состоящей из n строк и m столбцов, приведен на рисунке 4. в рабочую ячейку am заносится один из элементов массива (блок 2), который вначале предполагается самым большим. Далее путем последовательного сравнения значения am с элементами массива ищется элемент, больший am. Если такой элемент находится, то он записывается в рабочую ячейку am, заменяя ее прежнее значение (блок 6). После просмотра всех элементов исходного массива в ячейке am окажется сохранённым максимальный элемент. Если по условию задачи требуется знать не только величину максимального элемента, но и его координаты, то можно воспользоваться алгоритмом, представленным на рисунке 5. этот алгоритм отличается от предыдущего только тем, что в блоках 2 и 6 сохраняется не сам текущий максимум, а его координаты. Для этого требуются рабочие ячейки im и jm. Если в блоке 5 (рисунки 4 и 5) изменить отношение > на отношение
4.6. Формирование вектора из элементов матрицы.
4.6.1. Пусть требуется «развернуть» матрицу А размерами m*n в одномерный массив (вектор) В по столбцам, т.е. вначале записать в вектор элементы первого столбца исходного массива, затем элементы второго столбца, затем третьего и т.д., в соответствии с формулами:
b1=a11, b2=a21, bn=an1, bn+1=a12, bn+2=a22, ., b2n=an2, ., bm*n=anm.
Алгоритм преобразования матрицы в вектор по правилам (5) заключается в следующем (рисунок 6). Вводится вспомогательная переменная k – номер элемента вектора (в блоке 2 ей присваивается начальное значение k=0). В цикле просмотра элементов исходного массива (блоки 3-7) по столбцам осуществляется подготовка в ячейке k номера очередного элемента вектора и запись k-й элемент вектора В элементов aij (блок 5). На выходе значение kбудет равно числу элементов, записанных в векторе В, т.е. k=m*n.
4.6.2 Пусть требуется сформировать вектор из максимальных элементов строк массива А размерами m*n. Для решения задачи необходимо: 1) реализовать просмотр исходного массива по строкам; 2) в ходе просмотра каждой строки находить максимальный элемент; 3) по окончании просмотра каждой строки записывать найденный максимальный элемент в вектор.
Алгоритм формирования вектора представлен на рисунке 7. Здесь p и q – координаты максимального элемента строки матрицы, i – номер строки матрицы, одновременно i используется для указания номера элемента вектора. Данный алгоритм представляет собой совокупность двух предыдущих алгоритмов: поиска максимального элемента (рис. 5) и преобразования матрицы в вектор (рис. 6). Отличия заключаются в следующем: 1) поиск ведётся не во все матрице, а в каждой её строке, поэтому установка начальных значений координат im и jm осуществляется внутри цикла по строке (блок 3); 2) не требуется дополнительная ячейка k для указания номера элемента в векторе, так как её значение совпадает с номером строки i.
Аналогичным образом решаются и другие задачи, связанные с формированием вектора выходных значений.
4.7. Упорядочивание элементов массива по возрастанию (убыванию) – сортировка.
На практике часто требуется расположить элементы массива в порядке возрастания (убывания) их значений. Такие задачи называются задачами сортировки. Существует большое количество методов сортировки. Отличающихся экономичностью использования памятью ЭВМ, сложностью реализации, скоростью работы и т.д.
Рассмотрим один из методов сортировки элементов вектора B(n) – метод простого обмена («пузырька»). Данный метод прост в реализации, нагляден, быстро работает при малых n. Суть метода заключается в следующем. Начиная с конца массива и двигаясь к его началу, выполняют сравнение пары соседних элементов и перестановку их, если они не упорядочены. За один проход на первом месте в массиве окажется самый маленький (большой) элемент. Каждый последующий проход должен заканчиваться на один элемент раньше и «просеивать» наименьший (наибольший) элемент из оставшихся. Таким образом, для полной сортировки потребуется сделать n-1 проходов, количество перестановок при этом зависит от расположения элементов в исходном массиве. Ниже приведена иллюстрация метода «пузырька».
Исходный массив
i– номер прохода (верхняя граница)
1
2
3
4
5
6
7
44
55
12
42
94
18
6
67
6
6
12
6
12
18
6
12
18
42
6
12
18
42
44
6
12
18
42
44
55
6
12
18
42
44
55
67
94
44
55
12
42
44
55
18
44
55
44
94
18
67
42
94
67
42
67
94
55
67
94
55
67
94
67
94
Число перестановок
6
4
3
2
0
0
0
Исходный массив из 8 элементов расположен по вертикали, и сортировка осуществляется по возрастанию значений его элементов. На первом проходе наверх на первую позицию «всплывает» самый «лёгкий» (наименьший) элемент (6) – «пузырёк», а все остальные «тонут», на втором проходе – «всплывают» уже два элемента: 12 – на вторую позицию и 18 – на пятую и т.д. отсортированные элементы массива отделены от не отсортированных чертой. На четвёртом проходе массив оказывается уже от сортированным, однако, если в алгоритме не предусмотреть специальных мер, будут выполнены оставшиеся 3 прохода, являющиеся холостыми.
На рис.8 приведён алгоритм сортировки массива Bиз nэлементов по возрастанию методом «пузырька». Для исключения холостых проходов в этот алгоритм вводится «флаг» - ячейка Ф (рис.9). В начале каждого прохода «флаг» сбрасывается Ф=0 (блок 3). Если в процессе прохождения будет хотя бы одна перестановка, то флаг поднимается Ф=1 (блок 7), разрешая переход к следующему проходу (блок 8). Если в процессе очередного прохода не будет ни одной перестановки, то флаг останется опущенным, и в блоке 8 управление будет передано на окончание сортировки. Если в алгоритмах, приведённых на рис. 8 (блок 4) и рис. 9 (блок 5), отношение > заменить на отношение 5. Алгоритм основной программы и его описание.
По результатам анализа задания можно составить укрупненную схему алгоритма последовательной структуры (рис. 10).
1
2
3
4
Отладочная печать
матрицы N
5
Отладочная печать
6 матрицы К
Отладочная печать
матрицы М
7
Печать
результирующей
8 матрицы Н
9
Рис. 10. Укрупненная схема алгоритма
решения задачи
Проведём детализацию в последовательности, определяемой нумерацией блоков на рис. 1.
1. Ввод размеров матриц А, В, С. В данном блоке определён ввод размеров квадратных матриц А, В, С (z – размер матриц).
Имя подпрограммы: VVOD
Имя подпрограммы: TRAN
Входные параметры: количество элементов z*z
Входные параметры: А – матрица, размером z*z
I=1(1)z
I=1(1)z
J=1(1)z
J=1(1)z
Ввод элементов
AТ[i,j]=B[j,i]
Выходные параметры: А – матрица размером z*z.
Выходные параметры: В – матрица размером z*z
Рис.11. Детализация блока 2 Рис. 12. Детализация блока 5
схемы алгоритма. схемы алгоритма.
Имя подпрограммы YMN
Входные параметры: А, В – матрицы размером z*z
I=1(1)z
J=1(1)z
S=0
K=1(1)z
S=S+A[i,k]*B[k,j]
C[i,j]=S
Выходные параметры: матрица С размером z*z
Рис. 13. Детализация блока 4
схемы алгоритма
2. Ввод элементов можно представить соответствующей подпрограммой, структурограмма которой приведена на рис.11. Всего должно быть выведено z*z значений для каждого массива.
3. Печать элементов матриц А, В, С (а также отладочная печать). В данном блоке определёна печать значений элементов квадратных матриц А, В, С размером z*z.
4. Умножение матриц удобно представить следующей подпрограммой, структурограмма которой приведена на рисунке 13.
Имя подпрограммы: SCAL
Входные параметры: A – матрица,размером z*z
I=1(1)z
J=1(1)z
B[i,j]=2*A[i,j]
Выходные параметры: А – матрица размером z*z.
Рис. 14. Детализация блока 6 схемы алгоритма
5. Транспонирование матрицы N реализуется подпрограммой по схеме, приведённой на рис. 12.
6. Умножение матрицы С на скаляр можно представить соответствующей подпрограммой, структурограмма которой приведена на рис. 14.
7. Вычитание матрицы М из матрицы К представлено в виде подпрограммы на рис.15.
8. Подпрограмма формирования вектора из сумм элементов каждой строки представлена структурограммой на рисунке 16.
9. Сортировка элементов полученного массива по убыванию и итоговый вывод одномерного массива по столбцам. Подпрограмма представлена в виде структурограммы на рис. 17.
Имя подпрограммы SUM
Входные параметры: А – матрица, размером z*z
I=1(1)z
S=0
J=1(1)z
S=A[i,j]
B[i]=S
Выходные параметры:
В – матрица размером z.
Рис. 16. Детализация блока 8
схемы алгоритма
Имя подпрограммы: VIC
Входные параметры: A, B – матрицы, размером z*z
I=1(1)z
J=1(1)z
C[i,j]=A[i,j]-B[i,j]
Выходные параметры: C – матрица размером z*z.
Рис. 15. Детализация блока 7 схемы алгоритма
Имя подпрограммы: SORT
Входные параметры: А – матрица, размером z
I=1(1)z
C=I
J=1(1)z
A[i]Да
Нет
С=A[i]
A[i]=A[j]
A[j]=C
Выходные параметры:
A – матрица размером z.
Рис. 17. Детализация блока 9 схемы алгоритма
После каждой подпрограммы производится отладочная печать, представленная отдельной подпрограммой, структкрограмма которой изображена на рис. 18.
Имя подпрограммы: VVOD
Входные параметры: А – матрица, размером z*z
I=1(1)z
J=1(1)z
Вывод элементов
Выходные параметры: А – матрица размером z*z.
Рис. 18. Детализация подпрограммы вывода элементов
6. Текст программы.
Программа нахождения одномерного массива, элементы которого расположить по убыванию и вывести в виде столбца, написана на языке Турбо Паскаль. Программа функционирует в среде Турбо Паскаль 7.0.
Исходные данные, имеющие смысл значений элементов массива, вводятся в диалоговом режиме. Вместе с этим значения элементов другого исходного массива вычисляются по заданным формулам.
В процессе получения результирующей матрицы реализованы следующие действия с массивами:
o умножение квадратных матриц размером z*z;
o транспонирование квадратной матрицы;
o умножение квадратной матрицы на скаляр;
o вычитание квадратных матриц.
Для упрощения решения поставленной задачи сформирован массив, каждый элемент которого равен сумме элементов соответствующей строки результирующей матрицы. Далее элементы сортируются в порядке убывания и выводятся по столбцам.
Каждая матричная операция сопровождается печатью соответствующего массива (печать значений элементов квадратной матрицы выполнена в виде подпрограммы).
Окончательный вариант программы имеет следующий вид:
{Программа: Kyrsaс }
{Цель: Развернуть одномерный массив по столбцам }
{расположить элементы полученного вектора по убыванию }
{Переменные: }
{ A, B, C - вводимые массивы }
{ N, K, M, H, Y, X - промежуточные массивы }
{ z - Размер массива }
{ i, j - переменные цикла }
{Программист: Ходыкина Е.Е. группа 215 }
{Проверил: Москвитина О.А. }
Program Kyrsac;
Const
Nmax = 10; {Максимальный размер массива}
Type
Matrix = array [1 Nmax, 1 Nmax] of integer;
Massiv = array [1 Nmax] of integer;
Var
A, B, C, N, K, M, H: matrix;
Y, X: massiv;
i, j, z: integer;
{Процедура ввода элементов массива}
{Параметры: z - размер массива, А - массив}
Procedure Vvod (z: integer; Var A: matrix);
Var
i, j: integer;
Begin {vvod}
For i: = 1 to z do
For j: = 1 to z do
Begin {Ввод элементов}
Write ('[',i,',',j,']=');
Read (A [i, j]);
End; {Ввод элементов}
For i: = 1 to z do
Begin {Вывод элементов}
For j: = 1 to z do
Write (A [i,j]:5);
Writeln
End {Вывод элементов}
End; {vvod}
{Процедура вывода элементов матриц}
{Параметры: А, В - матрицы, z - размер}
Procedure Echo (z: integer; A: matrix);
Var
i, j:byte;
Begin {Echo}
For i: = 1 to z do
Begin
For j: = 1 to z do
Write (A [i,j]:5);
Writeln
End
End; {Echo}
{Процедура умножения матриц}
{Переменные: A, B - начальные массивы}
{C - массив результат, z - размер}
Procedure Ymn (A, B: matrix; z: integer; Var C: matrix);
Var
i, j, k, s: integer;
Begin {Ymn}
For i: = 1 to z do
For j: = 1 to z do
Begin
s: = 0;
For k: = 1 to z do
s: = s + A [i, k] * B [k, j];
C [i, j]: =s
End
End; {Ymn}
{Процедура транспонирования массивов}
{Переменные: А - начальный массив, В - массив результат}
Procedure Tran (A: matrix; z: integer; Var B: matrix);
Var
i, j: integer;
Begin {Tran}
For i: = 1 to z do
For j: = 1 to z do
B [i, j]: = A [j, i]
End; {tran}
{Процедура умножения массива на скаляр}
{Переменные: А - Начальный массив, В - массив результат}
Procedure Skal (A: matrix; z: integer; Var B: matrix);
Var
i, j: integer;
Begin {Skal}
For i: = 1 to z do
For j: = 1 to z do
B [i, j]: = 2 * A [i, j]
End; {skal}
{Прочедура вычитания массивов}
{переменные: A,B - начальные массивы}
{C - массив результат, z - размер}
Procedure Vic (A, B: matrix; z: integer; Var C: matrix);
Var
i, j: integer;
Begin {Vic}
For i: = 1 to z do
For j: = 1 to z do
C [i, j]: = A [i, j] – B [i, j]
End; {Vic}
{Процедура формирования вектора из сумм элементов каждой строки}
{Переменные: A - начальный массив}
{B - массив результат, z - размер}
Procedure Sum (A: matrix; z: integer; Var B: massiv);
Var
i, j, s: integer;
Begin {Sum}
For i: = 1 to z do
Begin
s: = 0;
For j: = 1 to z do
s: = s + A [i, j];
B [i]: = s
End;
For i: = 1 to z do
Write (B [i]: 8)
End; {Sum}
{Процедура сортировки элементов массива по убыванию}
{Переменные: A - массив; z - размер}
Procedure Sort (z: integer; Var A: massiv);
Var
i, j, c: integer;
Begin {Sort}
For i: = 1 to (z – 1) do
Begin
c: = i;
For j: = i + 1 to z do
If A [i] Begin
c: = A [i];
A [i]: = A [j];
A [j]: = c
End
End;
For i: = 1 to z do
Writeln (A [i]: 9)
End; {Sort}
Begin {kyrsac}
Writeln ('Введите размер матриц A, B, C: ');
Read (z);
Writeln;
Writeln ('Введите', z*z: 6, ' элементов для каждой матрицы: ');
Writeln ('Матрица A: ');
Vvod (z, A); {Процедура ввода элементов массива}
Writeln;
Writeln ('Матрица B: ');
Vvod (z, B); {Процедура ввода элементов массива}
Writeln;
Writeln ('Матрица C: ');
Vvod (z, C); {Процедура ввода элементов массива}
Writeln;
Writeln ('Результат умножения матриц С*А: ');
Ymn (C, A, z, N); {Процедура умножения матриц}
Echo (z, N); {Процедура вывода элементов матриц}
Writeln ('Результат транспонирования матрицы (С*А): ');
Tran (N, z, K); {Процедура транспонирования массивов}
Echo (z, K); {Процедура вывода элементов матриц}
Writeln ('Результат умножения матрицы В на 2: ');
Skal (B, z, M); {Процедура умножения массива на скаляр}
Echo (z, M); {Процедура вывода элементов матриц}
Vic (K, M, z, H); {Процедура вычитания массивов}
Writeln ('Полученный массив после преобразований: ');
Echo (z, H); {Процедура вывода элементов матриц}
Writeln;
Writeln ('Вектор сумм элементов каждой строки: ');
Sum (H, z, Y); {Процедура формирования вектора из сумм элементов каждой строки}
Writeln;
Writeln ('Сформированный вектор-столбец по убыванию: ');
Sort (z, Y); {Процедура сортировки элементов массива по убыванию}
Writeln
End. {Kyrsac}
7. Результат работы.
При запуске программы мы получаем следующий результат:
Введите размер матриц А, В, С: 2
Введите 4 элемента для каждой мотрицы:
Матрица А:
[1,1] = 1
[1,2] = 3
[2,1] = 2
[2,2] = 4
1 3
2 4
Матрица В:
[1,1] = 0
[1,2] = 3
[2,1] = 6
[2,2] = 4
0 3
6 4
Матрица С:
[1,1] = 5
[1,2] = 8
[2,1] = 7
[2,2] = 0
5 8
7 0
Результат умножения матриц С*А:
21 47
7 21
Результат транспонирования матрицы (С*А):
21 7
47 21
Результат умножения матрицы В на 2:
0 6
12 8
Полученный массив после преобразований:
21 1
35 13
Вектор сумм элементов каждой строки:
22 48
Сформированный вектор столбец по убыванию:
48
22
8. Инструкция пользователя.
Курсовая работа была выполнена на компьютере следующей конфигурации:
· Процессор Celeron 566 FCPGA;
· HDD 15.3Gb;
· SD-RAM 128Mb;
· Операционная система Microsoft Windows 98;
· Программа на жестком диске занимает память, размером 5Kb.
Программа находится:
A:\kyrsac.pas
Z:\215\Xodikina\kyrsac\kyrsac.pas
9. Результат отладки программы.
Отладка программы производилась с помощью встроенного отладчика. В процессе отладки были выявлены ошибки написания операторов, а также пропуски скобок и точек с запятой.
Для избежания ошибок в вычислениях была предусмотрена печать исходных, результирующих, а так же промежуточных матриц и векторов.
10. Заключение.
При написании этой курсовой работы у меня возникли трудности в оформлении пояснительной записки, а сама программа мне показалась лёгкой. При помощи этой программы можно проверять решения задач с матрицами в высшей математике.
Поскольку первокурсники вряд ли имеют опыт написания курсовых работ, то я предложила бы им в I семестре сделать пробную курсовую работу с нетрудными заданиями, чтобы эта работа была ознакомительной, тогда во II ссеместре браться за серьёзную работу было бы легче.
11. Список литературы.
1. Алгоритмические языки и программирование 1-й семестр: Методические указания /РГРТА; Сост. Л.П. Коричнев, В.С. Новичков. Рязань, 2001. 68 с.
2. Алгоритмические языки и программирование 2-й семестр: Методические указания /РГРТА; Сост. В.С. Новичков, Н.И. Парфилова. Рязань, 2002. 72 с.
3. Демидович В.П., Марон И.А. Основы вычислительной математики. М.: Наука, 1966. 654 с.
4. Новичков В.С., Парфилова Н.И. Паскаль: Учеб. пособие 2-е изд., перераб. и доп. М.: Высшая школа, 1994. 256 с.
5. Фаронов В.В. Турбо Паскаль 7.0: Учебное пособие. М.: Нолидж, 1998. 296 с.