Процесс решения задач на компьютере - это совместная деятельность человека и ЭВМ. Этот процесс можно представить в виде нескольких последовательных этапов. На долю человека приходятся этапы, связанные с творческой деятельностью — постановкой, алгоритмизацией, программированием задач и анализом результатов, а на долю компьютера — этапы обработки информации в соответствии с разработанным алгоритмом.
Рассмотрим эти этапы на следующем примере: пусть задан массив чисел. Требуется проверить, все ли числа принадлежат заданному интервалу. Интервал задается границами А и В.
Первый этап - постановка задачи. На этом этапе участвует человек, хорошо представляющий предметную область задачи. Он должен четко определить цель задачи, дать словесное описание содержания задачи и предложить общий подход к ее решению. Для задачи проверки чисел, принадлежащих заданному интервалу, человек, знающий, как осуществляется проверка, может описать задачу следующим образом: ввести два целых числа, задающих диапазон проверки, сравнить выбранное число из массива с границами. Если число принадлежит интервалу, то выдать сообщение о принадлежности и, наоборот, выдать сообщение о непринадлежности. Проверить все ли элементы массива просмотрены. Если да, то печать сообщения и конец сравнений. Если нет, то продолжить сравнение.
При этом способе отсутствует наглядность вычислительного процесса, т.к. нет достаточной формализации.
Второй этап - математическое или информационное моделирование. Цель этого этапа - создать математическую модель решаемой задачи, которая может быть реализована в компьютере. Существует целый ряд задач, где математическая постановка сводится к простому перечислению формул и логических условий. Для вышеописанной задачи данный этап приведет к следующему: введенные в компьютер числа интервала запомним в памяти под именами А и В, затем выполним проверку каждого элемента массива на принадлежность диапазону по формуле A<=xi<=B. Если условие не выполнится, то выводим об этом сообщение с последующим завершением задачи. Иначе - сообщение о наличии элементов, входящих в заданный интервал.
Третий этап - алгоритмизация задачи. На основе математического описания необходимо разработать алгоритм решения.
Алгоритмизация - это процесс построения алгоритма решения задачи, результатом которого является выделение этапов процесса обработки данных, формальная запись содержания этих этапов и определение порядка их выполнения.
Алгоритм - это точное предписание, определяющее вычислительный процесс, ведущий от изменяемых начальных данных к решению поставленной задачи.
Четвертый этап — программирование. Программа– это алгоритм, записанный в форме, воспринимаемой машиной. Программа содержит наряду с описанием данных команды, в какой последовательности, над какими данными и какие операции должна выполнять машина, а также в какой форме следует получить результат. Это обеспечивают различные операторы.
Составление программы обеспечивает возможность выполнения алгоритма и соответственно поставленной задачи исполнителем-компьютером.
Пятый этап - ввод программы и исходных данных в ЭВМ. Данные – это факты и идеи, представленные в формализованном виде, позволяющем передавать или обрабатывать эти факты и идеи с помощью некоторого процесса. Оператор - совокупность символов, указывающих операцию и значения, либо местонахождение ее элементов. Переменная - это объект, который в ходе выполнения программы может менять свое значение.
Программа и исходные данные вводятся в ЭВМ с клавиатуры с помощью редактора текстов, и для постоянного хранения осуществляется их запись на гибкий или жесткий магнитный диск.
Шестой этап - тестирование и отладка программы. На этом этапе происходят исполнение алгоритма с помощью ЭВМ, поиск и исключение ошибок. При этом программисту приходится выполнять работу по проверке работы программы, поиску и исключению ошибок, и поэтому для сложных программ этот этап часто требует гораздо больше времени и сил, чем написание первоначального текста программы. Отладка программы - сложный и нестандартный процесс. Исходный план отладки заключается в том, чтобы оттестировать программу на контрольных примерах.
Контрольные примеры стремятся выбрать так, чтобы при работе с ними программа прошла все основные пути блок-схемы алгоритма, поскольку на каждом из путей могут быть свои ошибки, а детализация плана зависит от того, как поведет себя программа на этих примерах: на одном она может зациклиться (т. е. бесконечно повторять одно и то же действие); на другом - дать явно неверный или бессмысленный результат и т. д. Сложные программы отлаживают отдельными фрагментами.
Седьмой этап - исполнение отлаженной программы и анализ результатов. На этом этапе программист запускает программу и задает исходные данные, требуемые по условию задачи.
Полученные в результате решения выходные данные анализируются постановщиком задачи, и на основании этого анализа вырабатываются соответствующие решения, рекомендации, выводы. Например, если при решении задачи на компьютере результат сложения двух чисел 2 и 3 будет 4, то следует сделать вывод о том, что надо изменить алгоритм и программу.
Возможно, что по итогам анализа результатов потребуются пересмотр самого подхода к решению задачи и возврат к первому этапу для повторного выполнения всех этапов с учетом приобретенного опыта. Таким образом, в процессе создания программы некоторые этапы будут повторяться до тех пор, пока мы получим алгоритм и программу, удовлетворяющие показанным выше свойствам.