Основные этапы решения задач на компьютере
Процесс решения задач на компьютере – это деятельность человека в которой компьютер является необходимым элементом, инструментом, усиливающим и расширяющим интеллектуальные возможности человека. Этот процесс можно представить в виде нескольких последовательных этапов. На долю человека приходятся этапы, связанные с творческой деятельностью – постановкой, алгоритмизацией, программированием задач и анализом результатов, а на долю компьютера – этапы обработки информации в соответствии с разработанным алгоритмом.
Рассмотрим эти этапы на таком простейшем примере: пусть требуется вычислить сумму двух целых чисел и вывести на экран видеомонитора результат.
Первый этап – постановка задачи. На этом этапе требуется хорошо изучить предметную область задачи. Нужно чётко определить цель задачи, дать словесное описание содержания задачи и продумать общий подход к её решению. Для нашей задачи можно предложить такое описание: ввести два целых числа, сложить их и вывести сумму в качестве результата решения задачи.
Второй этап – математическое или информационное моделирование.Цель этого этапа – создать такую математическую модель решаемой задачи, которая может быть реализована на компьютере. Часто математическая постановка задачи сводится к простому перечислению формул и логических условий, однако возможно, что для полученной модели известны несколько методов решения, и тогда следует выбрать лучший из них. Для нашей задачи данный этап будет выглядеть так: введённые в компьютер числа запомним в памяти под именами А и В, затем вычислим сумму этих чисел по формуле А+В, и результат запомним в памяти под именем Summa.
Третий этап – алгоритмизация задачи. На основе математического описания необходимо разработать алгоритм решения.
Алгоритмомназывается точное предписание, определяющее последовательность действий исполнителя, направленных на решение поставленной задачи. В роли исполнителей могут выступать люди, роботы, компьютеры. Способ записи алгоритма зависит от выбора исполнителя. Наглядно алгоритм представляется в виде блок–схем. Алгоритм нашей задачи можно представить так, как показано на рисунке.
Алгоритм должен обладать рядом свойств.
Свойства алгоритма:
- Однозначность алгоритма, под которой понимается единственность толкования исполнителем правил и порядка выполнения действий. Для этого алгоритм должен быть записан командами из системы команд исполнителя. Для нашего примера исполнитель должен понимать такую запись действий, как А + В.
- Конечность алгоритма – обязательность завершения каждого из действий и всего алгоритма в целом. Наш алгоритм обладает этим свойством, так как после выполнения действий ввода исходных данных, вычисления суммы и вывода результата алгоритм завершается.
- Результативность алгоритма, предполагающая, что его выполнение завершится получением определённых результатов. В нашем примере всегда для целых чисел А и В может быть вычислена сумма.
- Массовость, т.е. возможность применения алгоритма к целому классу задач, отвечающих общей постановке задачи. Для того, чтобы алгоритм обладал свойством массовости, следует составлять его с использованием обозначения величин и избегая конкретных значений. Наш алгоритм позволяет правильно посчитать сумму не только для чисел 2 и 3, но и для любой пары целых чисел.
- Правильность алгоритма, под которой понимается способность алгоритма выдавать правильные результаты решения поставленной задачи. В нашем примере используется формула сложения целых чисел, и для любой пары целых чисел результат выполнения алгоритма будет равен их сумме, что и требуется.
Существует несколько типов алгоритмов:
а) Линейный алгоритм – это алгоритм, содержащий несколько шагов, все шаги выполняются последовательно друг за другом от начала до конца.
б) Разветвляющийся алгоритм –это алгоритм, содержащий несколько ветвей, отличающихся друг от друга содержанием вычислений. Последовательность шагов может изменяться в зависимости от условий задачи. Для изменения последовательности шагов используются специальные конструкции языка – операторы перехода.
в) Циклический алгоритм– это алгоритм, содержащий многократное выполнение одних и тех же шагов при различных значениях промежуточных данных.
Четвёртый этап – программирование. Программой называют план действий, подлежащих выполнению исполнителем, в качестве которого может выступать компьютер. От алгоритма программа отличается тем, что записывается на языке понятном для исполнителя. Если исполнителем является компьютер, то программа записывается на одном из языков программирования. В компьютере данные и команды представляются в виде последовательности нулей и единиц. Поэтому, когда говорят о “понятности” языка программирования для компьютера подразумевают наличие специальной программы, способной перевести инструкции языка программирования в последовательность двоичных компьютерных команд. Язык программирования выполняет функции посредника между человеком и ЭВМ и поэтому с одной стороны должен быть удобен для записи алгоритмов в понятной для человека форме, а с другой стороны легко преобразовываться в машинные коды.
Программа и исходные данные вводятся в ЭВМ с клавиатуры с помощью редактора текстов или загружаются в редактор с внешнего носителя, результаты работы программы выводятся на экран дисплея или записываются на носитель информации.
Пятый этап – трансляция программы. Трансляция означает перевод команд языка программирования в компьютерные двоичные коды. На этом этапе происходит проверка программы на ее соответствие правилам (синтаксису) языка программирования и при отсутствии синтаксических ошибок создается исполняемый файл программы. Исполняемый файл содержит инструкции в двоичном коде. Если транслятор обнаруживает в программе несоответствия синтаксису, то исполняемый файл создать не удастся. Программист должен устранить несоответствия (исправить синтаксические ошибки). После этого необходимо проверить программу на наличие логических ошибок. Для этого нужно подобрать систему тестов (набор исходных данных с заранее известным результатом) и сравнить выдаваемые программой результаты с контрольными. Подробнее об этом в следующем разделе.
Шестой этап – тестирование и отладка программы. На этом этапе происходит исполнение программы на ЭВМ, поиск и исправление логических ошибок, то есть ошибок приводящих к неправильной работе программы. При этом программисту приходится выполнять анализ работы программы. Для сложных программ этот этап, как правило, требует гораздо больше времени и сил, чем написание первоначального текста программы.
Отладка программы – сложный и нестандартный процесс. Исходный план отладки заключается в том, чтобы проверить программу на контрольных примерах. Под контрольными примерами подразумеваются различные комбинации исходных данных. Контрольные примеры выбираются так, чтобы при работе были задействованы все ветви алгоритма. Дело в том, что некоторые ошибки в программе могут проявиться только при попытке выполнения конкретных действий. Детализация плана зависит от того, как поведёт себя программа на этих примерах: на одном она может зациклиться, на другом дать явно неверный ответ и т.д. Сложные программы отлаживают отдельными фрагментами.
Седьмой этап – исполнение отлаженной программы и анализ результатов.На этом этапе программист запускает программу и задаёт исходные данные, требуемые по условию задачи. Полученные результаты анализирует постановщик задачи, на основании анализа принимаются решения, вырабатываются рекомендации, делаются выводы.
Возможно, что по итогам анализа результатов потребуется возврат ко второму этапу для повторного выполнения всех этапов с учётом приобретённого опыта. Таким образом, в процессе создания программы некоторые этапы повторяют до тех пор, пока не будет получен алгоритм и программа, удовлетворяющие указанным выше свойствам.