В процессе решения задачи с применением компьютера пользователь самостоятельно или с помощью специалистов проходит ряд этапов.
Рассмотрим последовательность прохождения этапов на примере простой задачи.
На первом этапе формулируются условия задачи (концептуальная модель), например, в словесной форме: функция f(x) должна получить значение, равное единице, если переменная х больше нуля, и нуль, если переменная х принимает другие значения.
На втором этапе производится математическая постановка задачи (математическая модель):
- определяются исходные (вводимые) данные и их типы. В нашем случае к исходным данным относится переменная х, которая может принимать целые и вещественные (содержащие дробную часть) значения. В качестве типа для переменной х выбираем вещественный, поскольку данный тип включает в себя и целые значения тоже;
- решение задачи описывается в виде аналитических зависимостей. Для нашей задачи
- определяются конечные (выводимые) данные и их типы. В нашем случае конечными данными (результатом решения) является значение функции f(x) целого типа.
На третьем этапе осуществляется разработка алгоритма. Алгоритмизация выступает как связующее звено между "домашними" этапами решения задачи и непосредственно общением человека с компьютером.
На четвертом этапе решения задачи алгоритм переводится в программу, записанную на языке высокого уровня. Ниже приводятся программы на языках Pascal и QBasic, которые реализуют данный алгоритм.
Pascal:
Program zadacha;
Var x: real; f : integer;
Begin
Read (x); WriteLn ('x=', x);
If x>0 Then f :=1
Else f :=0;
WriteLn ('f=', f);
End.
QBasic:
REM zadacha
DEFSNG X: DEFINT F
INPUT X: PRINT "X=", Х
IF X>0 THEN F=1 ELSE F=0
PRINT "F=", F
END
На пятом этапе программа водится в память компьютера, осуществляются ее отладка и решение.
Больше всего времени, как правило, требуется на выполнение последнего этапа. Это связано с тем, что здесь устраняются ошибки, допущенные пользователем на предыдущих этапах решения задачи. Не очень страшно, если это ошибки синтаксиса или семантики, они достаточно легко устраняются. Гораздо хуже наличие алгоритмических ошибок, выявить которые значительно труднее, а для их устранения иногда проще разработать новый алгоритм и написать новую программу, чем исправить существующую.