Этапы решения задачи на ЭВМ
Решение любойзадачи на ЭВМ состоит из нескольких этапов, среди которых основными являются следующие:
1) постановка задачи;
2) формализация (математическая постановка задачи);
3) выбор (или разработка) метода решения;
4) разработка алгоритма (алгоритмизация);
5) составление программы (программирование);
6) отладка программы;
7) вычисления и обработка результатов.
Последовательное выполнение перечисленных этапов составляет полный цикл разработки, отладки и счета программы. Приведенное разделение является условным. Рассмотрены наиболее общие и необходимые этапы. Вместе с указанными пользователь ЭВМ в процессе решения задачи может выполнять также такие этапы, как выбор языка программирования, описание структуры данных, оптимизация программы, тестирование, документирование и др.
Постановка задачи. При постановке задачи первостепенное внимание должно быть уделено выяснению конечной цели и выработке общего подхода к исследуемой проблеме: выяснению, существует ли решение поставленной задачи и единственно ли оно; изучению общих свойств
рассматриваемого физического явления или объекта; |анализу возможностей конкретной ЭВМ и данной системы программирования. На этом этапе требуется глубокое понимание существа поставленной задачи. Правильно сформулировать задачу иногда не менее сложно, чем ее решить.
Формализация.Формализация, как правило, сводится к построению математической модели рассматриваемого явления, когда в результате анализа существа задачи определяются объем и специфика исходных данных, вводится система условных обозначений, устанавливается принадлежность решаемой задачи к одному из известных
классов задач и выбирается соответствующий математический аппарат. При этом нужно уметь сформулировать на языке математики конкретные задачи физики, механики, экономики, технологии и т.д. (Для успешного преодоления этого этапа требуются не только солидные сведения из соответствующей предметной области, но и хорошее знание вычислительной математики, т.е. тех методов, которые могут быть использованы при решении задачи на машине.)
Полная постановка многих сложных задач невыполнима средствами вычислительной техники. Поэтому эти задачи нужно упрощать. Грамотное упрощение задачи невозможно без хорошего представления о том, какие факторы и параметры наиболее важны для изучаемой задачи, а какие — менее существенны. При этом также очень важно знать, какая из возможных расчетных схем может привести к упрощениям вычислительного характера, обусловленным выбором вычислительного метода.
Если имеющихся средств недостаточно, тогда необходимо разработать, новый подход, новые методы исследования.
Выбор метода решения. После того как определена математическая формулировка задачи, надо выбрать метод ее решения. Вообще говоря, применение любого, метода приводит к построению ряда формул и к формулировке правил, определяющих связи между этими формулами. Все это разбивается на отдельные действия так, чтобы вычислительный процесс мог быть выполнен машиной. При выборе метода надо учитывать, во-первых, сложность формул и соотношений, связанных с тем или иным численным методом, во-вторых, необходимую точность вычислений и характеристики самого метода. На выбор метода решения большое влияние оказывают вкусы и знания самого пользователя.
Этот этап — важнейший в процессе решения задачи. С ним связаны многочисленные неудачи, являющиеся результатом легкомысленного подхода к ошибкам вычислений. При решении задачи на ЭВМ необходимо помнить, что любой получаемый результат является приближенным! Если известен алгоритм точного решения, то кроме случайных ошибок (сбоев в работе ЭВМ) возможны ошибки, связанные с ограниченной точностью представления чисел в
ЭВМ. При вычислениях, заключающихся в нахождении результата с заданной степенью точности, возникает дополнительная погрешность, которую, если возможно, оценивают на данном этапе (до выхода непосредственно на ЭВМ). Эта погрешность определяется выбранным численным методом решения задачи.
Разработка алгоритма. Данный этап заключается в разложении вычислительного процесса на возможные составные части, установлении порядка их следования, описании содержания каждой такой части в той или иной форме и последующей проверке, которая должна показать, обеспечивается ли реализация выбранного метода. В большинстве случаев не удается сразу получить удовлетворительный результат, поэтому составление алгоритма проводится методом «проб и устранения ошибок» и для получения окончательного варианта требуется несколько шагов коррекции и анализа.
Как правило, в процессе разработки алгоритм проходит несколько этапов детализации. Первоначально составляется укрупненная схема алгоритма, в которой отражаются наиболее важные и существенные связи между исследуемыми процессами (или частями процесса). На последующих этапах раскрываются (детализируются) выделенные на предыдущих этапах части вычислительного процесса, имеющие некоторое самостоятельное значение. Кроме того, на каждом этапе детализации выполняется многократная проверка и исправление (отработка) схемы алгоритма. Подобный подход позволяет избежать возможных ошибочных решений.
Ориентируясь на крупноблочную структуру алгоритма, можно быстрее и проще разработать несколько различных его вариантов, провести их анализ, оценку и выбрать наилучший(оптимальный).
Эффект поэтапной детализации алгоритма во многом зависит от того, как осуществляется его структуризация: расчленение алгоритмического процесса на составные части, что должно определяться не произволом пользователя (программиста), а внутренней логикой самого процесса. Каждый элемент крупноблочной схемы алгоритма должен быть максимально самостоятельным и логически завершенным в такой степени, чтобы дальнейшую его детализацию можно было выполнять независимо от детализации остальных элементов. Это упрощает процесс проектирования алгоритма и позволяет осуществлять его разработку по частям одновременно нескольким людям.
В процессе разработки алгоритма могут использоваться различные способы его описания, отличающиеся по простоте, наглядности, компактности, степени формализации, ориентации на машинную реализацию и другим показателям. В практике программирования наибольшее распространение получили:
1) словесная запись алгоритмов;
2) псевдокод (формальные алгоритмические языки);
3) схемы алгоритмов;
4) структурограммы (диаграммы Насси— Шнейдермана).
Разработка алгоритмов является в значительной степени творческим, эвристическим процессом, как правило, требует большой эрудиции, изобретательности, нестандартных и нетрадиционных подходов к решению задачи.
Составление программы. Представление алгоритма в форме, допускающей ввод в машину и последующий перевод на машинный язык, относится к этапу составления программы (программированию), т.е. разработанный алгоритм задачи необходимо изложить на языке, который будет понятен ЭВМ непосредственно или после предварительного машинного перевода. От выбора языка программирования зависит процесс отладки программы, во время которого программа принимает окончательный рабочий вид. Таким языком может быть язык программирования Паскаль.
Отладка программы. Составление программы представляет собой трудоемкий процесс, требующий от исполнителя напряженного внимания. Практика показывает, что в вычислениях следует избегать поспешности и придерживаться золотого правила: «лучше меньше, да лучше». Но на предыдущих этапах столько возможностей допустить ошибку,
что, как бы мы тщательно ни действовали, первоначально составленная программа обычно содержит ошибки и машина или не может дать ответа, или приводит неправильное решение.
Отладка начинается с того, что программа, аккуратно записанная на бланке, проверяется непосредственно лицом, осуществившим подготовку и программирование задачи. Выясняется правильность написания программы, выявляются смысловые и синтаксические ошибки и т. п. Затем программа вводится в память ЭВМ и ошибки, оставшиеся незамеченными, выявляются уже непосредственно с помощью машины.
Опытный пользователь ЭВМ знает, что необходим действенный контроль над процессом вычислений, позволяющий своевременно обнаруживать и предотвращать ошибки. Для этого используются различного рода интуитивные соображения, правдоподобные рассуждения и контрольные формулы. Начинающий пользователь часто считает отладку излишней, а получение контрольных точек - неприятной дополнительной работой. Однако очень скоро убеждается, что поиск пропущенной ошибки требует значительно большего времени, чем время, затраченное на контроль.
Гарантией правильности решения может служить, например:
а) проверка выполнения условий задачи (например, для алгебраического уравнения найденные корни подставляются в исходное уравнение и проверяются расхождения левой и правой частей);
б) качественный анализ задачи;
в) пересчет (по возможности другим методом).
Для некоторых сложных по структуре программ процесс отладки может потребовать значительно больше машинного времени, чем собственно решение на ЭВМ, так как плохо спланированные процессы алгоритмизации, программирования и отладки приводят к ошибкам, которые могут быть обнаружены лишь после многократных проверок.
Вычисления и обработка результатов. Только после того как появится полная уверенность, что программа обеспечивает получение правильных результатов, можно
приступать непосредственно к расчетам по программе. Непосредственное решение задачи на ЭВМ не требует обязательного участия пользователя. Эта работа выполняется оператором ЭВМ. Порядок работы на машине при решении задачи обстоятельно описывается в инструкции к программе. После завершения расчетов наступает этап использования результатов вычислений в практической деятельности или, как говорят, этап внедрения результатов. Интерпретация результатов вычислений снова относится к той предметной области знаний, откуда возникла задача.