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

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

Рубрика Программирование, компьютеры и кибернетика
Вид контрольная работа
Язык русский
Дата добавления 10.01.2016
Размер файла 79,7 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

if com=1 then b:=1;

if com=2 then b:=2;

if com=3 then b:=3;

if com=4 then b:=4;

if 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. Тестирование и отладка

Процесс поиска ошибок в программе называется тестированием, процесс устранения ошибок - отладкой. [3]

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

Ниже представлен фрагмент программы с решением проблемы:

GoToXY (57,13); {Определяется позиция курсора}

Read(n); {Осуществляется ввод данных}

GoToXY (57,13); {Определяется позиция курсора}

TextColor(0); {Осуществляется выбор цвета фона, в данной программе черный}

ClrEol; {Осуществляется очистка от начала курсора до конца строки}

В момент ввода данных мы видим введенное нами значение. При нажатии клавиши Enter происходит очистка строки. Этот фрагмент программного кода используется при вводе размерности массива и ручном заполнении массива.

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

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

Ниже представлен фрагмент программы с решением проблемы:

if max<>0 then a1 [i, j]:=a2 [i, j]/max;

if max=0 then a1 [i, j]:=0;

Согласно этому фрагменту для столбца, максимальный элемент которого равен нулю, происходит обнуление столбца.

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

Ниже представлен фрагмент программы с решением проблемы ввода размерности массива:

If (m>=10) or (n>=10) or (m<=0) or (n<=0) then

Begin

If (m>=10) or (n>=10) then

OutTextXY (0,305,'Ошибка. Размер массива не должен превышать размеров 10 х 10');

If (m<=0) or (n<=0) then

OutTextXY (50,325,'Ошибка. Размерность может быть только положительной.');

Delay(1000);

End;

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

Ниже представлен фрагмент программы с решением проблемы ввода элементов массива:

Repeat

Read (a2 [i, j]);

Until (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 с. - Серия: Основы наук.

3. Информатика: Базовый курс / С.В. Симонович и др. - СПб.: Питер, 2003. - 640 с.: ил.

Размещено на Allbest.ru


Подобные документы

  • Изучение способов описания и использования множеств, разработка алгоритма и составление программы для решения задачи. Нахождение в последовательности целых чисел таких, которые встречаются в ней ровно два раза. Набор программы, ее отладка и тестирование.

    лабораторная работа [121,4 K], добавлен 03.10.2010

  • Математическое обоснование метода решения задачи: определенный интеграл, квадратурная формула Симпсона (формула парабол). Словесное описание алгоритма и составление его блок-схемы. Выбор языка программирования. Текст программы решения задачи, ее листинг.

    курсовая работа [593,6 K], добавлен 09.07.2012

  • Понятие линейного программирования и оптимизации. Основы работы в системе MathCAD. Интерфейс пользователя, входной язык и тип данных. Этапы компьютерного математического моделирования. Пример решения оптимизационной задачи средствами программы MathCAD.

    курсовая работа [352,8 K], добавлен 16.10.2011

  • Порядок описание процесса разработки модели для разрешения задачи программирования с помощью средств языка программирования. Структуры данных и основные принципы их построения. Этапы компьютерного моделирования. Этапы и значение написания программы.

    курсовая работа [19,5 K], добавлен 19.05.2011

  • Введение в объектно-ориентированное программирование. Постановка задачи. Описание алгоритма решения в псевдокоде (команды в виде текста на русском языке). Исходный текст программы на С. Тестирование программы. Модификация программы. Полиморфизм.

    курсовая работа [294,0 K], добавлен 08.09.2008

  • Описание алгоритма решения транспортной задачи по планированию перевозки зерна. Ход решения задачи вручную, в программе TORA методом наименьшего элемента, с помощью MS Excel. Разработка программы для решения задачи в общем виде средствами Delphi.

    курсовая работа [2,5 M], добавлен 22.11.2012

  • Создание программы визуализации методов сортировки массива, особенности и направления ее практического применения. Выбор и обоснование среды программирования. Разработка руководства пользователя. Листинг программы и оценка эффективности ее использования.

    дипломная работа [1,0 M], добавлен 15.06.2014

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

    курсовая работа [354,8 K], добавлен 02.03.2014

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

    курсовая работа [223,9 K], добавлен 23.06.2015

  • Составление программы разветвляющейся структуры для вычисления заданной функции. Нахождение произведения чётных и нечётных первых чисел натурального ряда. Приёмы программирования обработки одномерных массивов. Расчет суммы положительных элементов массива.

    контрольная работа [1,3 M], добавлен 20.12.2012

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.