Если vk:=3 то происходит выполнение ниже приведенного фрагмента программы, отвечающей за нажатие клавиши Enter:
if com=1 then b:=1;com=2 then b:=2;com=3 then b:=3;com=4 then b:=4; com=5 then b:=5;
Здесь происходит присваивание значение b, в соответствии со значением com.
4. Программирование
Язык программирования Pascal (Паскаль) создал в 1970-1971 гг. Никлаус Вирт - профессор Института информатики Высшей политехнической школы Швейцарии. Он разработал этот язык для обучения студентов навыкам программирования. Язык назван в честь французского философа и математика XVII в. Блеза Паскаля, который изобрел вычислительное устройство. Язык быстро получил широкое распространение, т.к. был легок для изучения, четок и логичен, а программы на нем - наглядны и хорошо читаемы.
Язык вобрал в себя все лучшие решения языка Алгол 60, но он стал новым языком, в котором впервые были введены абстрактные типы данных, т.е. введены средства конструирования новых типов данных, интервальные типы данных, средства работы со множествами и др. По сравнению с Алголом он имеет небольшое число операторов и других конструкций, однако позволяет писать достаточно сложные программы, включает средства обработки трехмерной графики. Хотя в языке есть и недостатки - например невозможность использования динамических массивов переменной длины, - Паскаль стал первым языком, в котором четко реализованы принципы структурного программирования. Многие языки, появившиеся позднее, содержат аналогичные Паскалю структуры. На его базе созданы Ада и Модула-2. С этим языком, как правило, знакомится большинство будущих программистов в мире, т.к. он стал интересным и мощным средством программирования прикладных задач и средством обучения программированию как дисциплине, основанной на понятиях, четко отраженных в Паскале. Язык является универсальным, ориентированным на решение задач любого класса.
К 1979 г. в Паскаль группой авторов были внесены изменения, и он был опубликован в окончательном варианте. На язык программирования в 1982 г. появился стандарт ИС07185 (ISO) - Международная организация по стандартизации.
Трансляторы для программ, написанных на Паскале, разработаны для различных компьютеров и в настоящее время имеют много разновидностей. Первый транслятор с языка был создан в 1973 г. С этого времени язык стал популярен. [1]
При создании программы мной не было использовано таких процедур как Halt или Label, их использование затрудняет проверку программы на ошибки и считается плохим тоном программирования.
Возможность выхода из программы только через главное меню и переход в главное меню с любого момента выполнения программы была реализована благодаря циклу с пост условием. Все просто, если пользователь выбирал пункт «Выход», то b:=1, при этом программа не заходит не в одну ветвь основной программы и осуществляется завершение цикла. При нажатии «Esc», когда написано соответствующее сообщение, значение b:=6, при этом программа не заходит не в одну ветвь основной программы, но цикл не завершается, а программа переходит к отметке repeat и программа вновь исполняет процедуру GMu, так как не было выполнено условие b:=1.
5. Тестирование и отладка
При написании программы я столкнулся с проблемой корректного ввода-вывода информации на экран, вводимой с клавиатуры. Проблема заключалась в том, что при включенном графическом режиме мне требовалось работать с процедурой Read. И тогда возникала проблема, при вводе более 20 значений экран начинал прокручиваться вверх, при этом нарушалась визуализация программы. Решение этой проблемы заключается в использовании стандартных процедур модуля CRT - GoToXY и ClrEol.
Ниже представлен фрагмент программы с решением проблемы:
GoToXY (57,13); {Определяется позиция курсора}
Read(n); {Осуществляется ввод данных}
GoToXY (57,13); {Определяется позиция курсора}
TextColor(0); {Осуществляется выбор цвета фона, в данной программе черный}; {Осуществляется очистка от начала курсора до конца строки}
В момент ввода данных мы видим введенное нами значение. При нажатии клавиши Enter происходит очистка строки. Этот фрагмент программного кода используется при вводе размерности массива и ручном заполнении массива.
Отдельно хочу отметить фрагменты программы, отвечающие за проверку и обработку ошибок, когда пользователь нарушает ограничения или когда может возникнуть ошибка при обработке данных.
При обработке столбца, элементы которого либо отрицательны, а хотя бы один из них равен нулю, происходит ошибка деление на ноль, так как наибольший элемент равен нулю.
Ниже представлен фрагмент программы с решением проблемы:
if max<>0 then a1 [i, j]:=a2 [i, j]/max;max=0 then a1 [i, j]:=0;
Согласно этому фрагменту для столбца, максимальный элемент которого равен нулю, происходит обнуление столбца.
Мной было введено ограничение на ввод размеров массив, максимальный размер массива 9 х 9, и ограничения на диапазон элемента массива, от -99 до 99. Эти ограничения введены мною потому что, если превысить эти допустимые значения, то программа не корректно выведет на экран таблицу или элементы массива. Но стоит заметить, что эти ограничения никаким образом не влияют на обработку введенных данных, при условии, что не были превышены диапазоны типов данных.
Ниже представлен фрагмент программы с решением проблемы ввода размерности массива:
If (m>=10) or (n>=10) or (m<=0) or (n<=0) then(m>=10) or (n>=10) then (0,305,'Ошибка. Размер массива не должен превышать размеров 10 х 10');
If (m<=0) or (n<=0) then(50,325,'Ошибка. Размерность может быть только положительной.');(1000);
End;
В этом фрагменте сначала проводится анализ введенных значений размерности массива, если была обнаружена ошибка, то выводиться сообщение об ошибке, согласно обработке введенных значений.
Ниже представлен фрагмент программы с решением проблемы ввода элементов массива:
Repeat(a2 [i, j]);(a2 [i, j]<100) and (a2 [i, j]>-100);
Аналогично сделаны фрагменты программы в процедуре по считыванию массива из файла, отвечающие за обработку и вывод ошибок.
Все выше приведенные ошибки и недочеты были исправлены в ходе тестирования и отладки.
Для проверки правильности работы программы проведем тестовый расчет, согласно которому можно судить о корректной работе приложения.
После запуска программы на экране появляется главное меню, рис. 4. Программа работает в режиме диалога с пользователем. Необходимое действие выбирается клавишами управления курсором и нажатия клавиши Enter.
Главное меню программы
Выберем пункт «Ввод с клавиатуры», далее откроется окно ввода размерности массива, рис 5. Для корректности вывода таблицы введем матрицу общего вида, не квадратную. Например, размером 6х3.
Окно ввода размерности массива
После того, как вы ввели размерность массива, переходим к окну заполнения массива вручную, рис 6. Присутствуют в этом массиве элементы различных знаков, а также столбец, в котором максимальный элемент равен 0 (столбец номер 2).
Рисунок 6 - окно заполнения массива вручную.
После ввода элементов массива, программа выведет пользователю преобразованный массив, рис 7.
Окно вывода преобразованного массива
Следующее окно после того как пользователь нажмет Enter, это окно вывода четырех новых векторов, рис. 8.
Окно вывода новых векторов
При продолжении работы с программой пользователю будет выведен рапорт работы программы и будет предложено сохранить этот рапорт в файл, рис. 9.
Окно сохранения результатов
При успешном сохранении в файл, программа сообщит об этом пользователю, рис 10, после чего программа перейдет в главное меню.
Сообщение об успешном сохранении
Проанализировав данные, которые мы имеем на входе и на выходе из программы можно сказать, что программа работает корректно. Наш проверочный второй столбец, где максимальный элемент ноль, обнулился. Максимальный элемент для каждого столбца определяется правильно. Массив преобразуется согласно правилу - все элементы каждого столбца матрицы разделить на максимальный элемент этого столбца. Максимальный, минимальный и разность для каждого вектора определяется корректно.
Заключение
По результатам тестирований проведенных в пункте 5 можно сказать, что программа работает правильно, четко выполняет поставленные перед ней задачи.
Список литературы
1.Гвоздева, В.А. Введение в специальность программиста: учебник. - 2-е изд., испр. И доп. - М.:ИД «ФОРУМ»: ИНФРА-М, 2014. - 208 с.: ил. - (Профессиональное образование).
2.Новожилов, О.П. Информатика: учебное пособие / О.П. Новожилов. - М.: Издательство Юрайт, 2011. - 564 с. - Серия: Основы наук.
.Информатика: Базовый курс / С.В. Симонович и др. - СПб.: Питер, 2003. - 640 с.: ил.