Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
программирование лекции.doc
Скачиваний:
32
Добавлен:
03.12.2018
Размер:
4.85 Mб
Скачать

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

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

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

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

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

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

Прежде всего, известен словесный способ описания алгоритма, который мы можем встретить в любой предметной области. Можно записывать алгоритм в виде схем. Существуют и формальные алгоритмические языки для записи алгоритмов  псевдокоды и так называемые структурограммы (диаграммы Насси-Шнайдермана).

1.1.5 Программирование

На этом этапе алгоритм представляется в форме, понятной ЭВМ, и работа программиста определяется тем, что ему доступно на данной ЭВМ. Выбирается подходящая система программирования, и алгоритм преобразовывается в программу на соответствующем алгоритмическом языке. Данное учебное пособие ориентировано на систему Visual Studio 2010.

1.1.6 Отладка

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

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

Ошибки, которые могут быть допущены в программе, можно подразделить на два вида:

  • синтаксические, появление которых связано с нарушением правил записи языковых конструкций;

  • семантические (смысловые), вызывающие ошибки при выполнении.

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

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

Примерами семантических ошибок могут служить: ошибочное использование знака операции, параметров оператора цикла, метода и обращения к нему, внешнего и внутренних циклов, форматов данных и др. Семантические ошибки устраняются посредством выполнения программы с использованием тщательно подобранных данных, для которых известен правильный ответ. Семантические ошибки могут устраняться путем прогона (прокрутки) программы без машины, моделируя прохождение данных через ЭВМ.

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

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

Функциональные спецификации представляют собой описания, которые ясно показывают, как оперирует программа с входными данными, чтобы достигнуть желаемых результатов. В общем случае функциональные спецификации включают в себя следующие разделы: общее описание системы, словарь данных, описание ввода данных, описание функционирования системы; вычисление; описание вывода данных; описание файлов; прочую информацию. Спецификации должны быть определены четко, чтобы можно было удостовериться, что программа им действительно удовлетворяет.

Модульное представление программ облегчает тестирование. Реальные тесты должны быть подготовлены по функциональным спецификациям до начала программирования модуля. Кроме запланированных тестов нужно использовать и реальные данные из предметной области.

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

Найденные ошибки должны быть исправлены. Если ошибка обнаружена в алгоритме, то в алгоритм и в программу вносятся исправления (главное  чтобы эти исправления не повлекли за собой новые ошибки). Поэтому к исправленному тексту программы целесообразно применять все известные методы проверки.

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

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

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