Моделирование двухмерного массива

  • Вид работы:
    Контрольная работа
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    8,83 Кб
  • Опубликовано:
    2016-01-10
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Моделирование двухмерного массива

Введение

Программирование можно рассматривать как искусство, науку, ремесло. Программирование - это искусство получения ответов от машины. Для этого в узком смысле нужно составить специальный код для технического устройства, а в широком - разработать программы на языках программирования, т.е. не просто составить код, а выполнить интеллектуальную работу по составлению высокоразумных программ для решения различных задач во всех сферах человеческой деятельности.

Программирование - процесс описания последовательности действий решения задачи средствами конкретного языка программирования и оформление результатов описания в виде программы. Эта работа требует точности, аккуратности и терпения. Команды машине должны формулироваться абсолютно четко и полно, не должны содержать никакой двусмысленности.

На начальном этапе составлением программ для ЭВМ занимались сами изготовители вычислительных машин. Постепенно, с развитием техники, этот процесс из рутинной работы превратился в интеллектуальную деятельность, сравнимую с искусством, т.к. трудоемкое, ручное составление программ было подобно решению сложных комбинационных задач, которое требовало научных знаний и мастерства. Возникла потребность в людях со специальной подготовкой и особым складом ума, которых называют программистами. Овладев необходимыми знаниями, научившись грамотно и творчески применять их в повседневной работе, программист может стать незаменимым специалистом в своей области деятельности. Отмечается, что «программист должен обладать способностью первоклассного математика к абстрактному и логическому мышлению в сочетании с эдисоновским талантом сооружать все что угодно из 0 и 1. Он должен сочетать аккуратность бухгалтера с проницательностью разведчика, фантазию автора детективов с трезвой практичностью экономиста».

Программист - одна из самых востребованных специальностей в современном обществе.

С 1970-1980-х гг. программирование как новая научная дисциплина занимается методами разработки программных продуктов. [1]

1.Постановка задачи

Постановка задачи - точная формулировка задачи для решения на компьютере с описанием входной и выходной информации. Входной информацией могут служить данные документов ручного заполнения; нормативно-справочная информация или результаты решения других задач, хранимые в базе данных; электрические сигналы, поступающие с датчиков, и другие данные. Выходная информация может быть представлена в виде документа (типа листинга), видеограммы на экране монитора, электрического сигнала для управления конкретным устройством. При постановке функциональной задачи формулируются ее цель, место и связи с другими задачами; уточняются условия решения задачи с использованием средств вычислительной техники; определяются функции обработки входной информации и др. [2]

Дан двухмерный массив размером M x N. Преобразовать его по правилу - все элементы каждого столбца матрицы разделить на максимальный элемент этого столбца. Из первых четырех строк массива сформировать четыре новых вектора (одномерные массивы). Определить разность между наибольшим и наименьшим элементом каждого вектора.

Разработанная программа должна обладать удобным и понятным интерфейсом с использованием графической оболочки и справочной системой. От пёстрости и яркости оформления программы решил отказаться, для меня главным критерием является корректность исполнения поставленной перед программой задачей, а также читаемость данных с экрана монитора.

Ввод исходных данных должен производиться ручным набором, заполнением случайными числами, чтением из внешнего файла. При этом будут введены ограничения на ввод размеров массив, максимальный размер массива 9 х 9, и ограничения на диапазон элемента массива, от -99 до 99. Эти ограничения введены мною потому что, если превысить эти допустимые значения, то программа не корректно выведет на экран таблицу или элементы массива. Но стоит заметить, что эти ограничения никаким образом не влияют на обработку введенных данных, при условии, что не были превышены диапазоны типов данных.

Вывод данных должен быть возможен как на экран, так и сохраняться во внешнем файле. При этом составляется рапорт работы программы, который будет состоять из исходного массива, ново сформированных векторов, а также из максимального, минимального и их разности для каждого вектора.

программа двухмерный моделирование

2. Анализ и исследование задачи, модели

Pascal нетребователен к аппаратному обеспечению, поэтому компьютер Dell Inspiron N5110, с тактовой частотой процессора 2.7 GHz, оперативной памятью 4 Gb и видеокартой NVIDIA GeForce GT 525M, подходит для исполнения на нем практической части курсовой работы.

3. Разработка алгоритма

В данном разделе будет описаны процедуры и функции

Процедура ColorGMu - является подпрограммой процедуры GMu, отвечает за изменение цвета и за выбор действия при нажатии Enter.

Она имеет вид ColorGMu (vk:integer), где vk - это номер, присваивающийся соответственно для каждой клавиши.

.Происходит проверка значения vk

com:=com+1; {Изменение выбора текущей команды}

if com=0 then com:=5; {Ограничение команды}

if com=6 then com:=1; {Ограничение команды}

GMu (com, b); {Исполнение процедуры главного меню с измененными значениями}

.Если vk:=2 то происходит выполнение ниже приведенного фрагмента программы, отвечающей за нажатие клавиши вниз:

com:=com-1; {Изменение выбора текущей команды}

if com=0 then com:=5; {Ограничение команды}

if com=6 then com:=1; {Ограничение команды}

GMu (com, b); {Исполнение процедуры главного меню с измененными значениями}

.Если 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 с.: ил.


Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!