Информатика - Учебное пособие

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

 

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

Транслятор выполняет следующие основные функции:

- синтаксический анализ исходного текста, т. е. поиск ошибок, связанных с неправильной записью программы на входном языке - недопустимые операторы, неправильные последовательности символов, отсутствие необходимых описаний объектов и т. д.;

- вывод на дисплей списка всех обнаруженных синтаксических ошибок;

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

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

После такой трансляции остается лишь запустить программу в машинных кодах   (exe-

файл) на решение и получить результат.

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

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

 

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

Отладка   -   процесс   поиска,   обнаружения   (локализации)   и   устранения   ошибок   в программе.

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

 

ошибки программы

/           |          

/           |          

синтаксические         выполнения   логические

 

О синтаксических ошибках уже говорилось выше.

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

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

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

Итак, можно сформулировать ряд правил отладки программ, которыми обычно руководствуются на практике:

1) в программу можно включить конкретный набор исходных данных для ее контрольной прогонки;

2) при первом запуске программы дать ей в качестве теста задачу с уже известным решением;

3) вставлять в циклические и разветвляющиеся участки программы операторы вывода для контроля основных параметров задачи;

4) широко использовать штатные средства вычислительной системы при отладке программы

(трассировка и т. п.);

5) испытывать свою программу в экстремальных условиях;

6) длинную формулу по возможности следует разбивать на части и записывать несколькими операторами присваивания;

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

7) не жалеть скобок в сложных выражениях.

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

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

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

 

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

- пояснительная записка;

- описание программы;

- текст программы;

- руководство программиста;

- методика испытаний.

Программа с документацией на нее может быть передана в специальный отдел ВЦ, где ее в дальнейшем будут "сопровождать" профессиональные программисты. Сопровождение обычно подразумевает:

- исправление возможных ошибок;

- модификацию программы с целью улучшения ее показателей;

- включение программы в новые системы.

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