Электронная версия курса лекций по дисциплине "Информатика", страница 12

Приведенное описание использует терминологию программирования (цикл, параметр цикла, и т. д.). Можно описать работу алгоритма, используя вместо терминологии программирования термины задачи, например, вместо словосочетания параметр цикла – аргумент заданной  в условии задачи функции и т.д. Для опытного программиста по сравнению со словесным описанием алгоритма более предпочтительной является использование схемы, как более компактной и наглядной формы представления алгоритма. Итак схема алгоритма позволяет понять, в какой последовательности выполняются отдельные операции по нахождению решения задачи. Но она не содержат ответа на вопрос, почему указанный алгоритм позволяет найти правильное решение. Поэтому и целесообразно при разработке алгоритмов, более сложных, чем  приведенный алгоритм, прилагать к схеме пояснение, служащее для ответа на указанный вопрос.

4.5  Протокол испытания схемы алгоритма.

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

Пусть в рассмотренной схеме  пропущен блок 6. Рассмотрим процесс нахождения ошибки при составлении протокола испытания схемы алгоритма. Протокол рекомендуется составлять, последовательно фиксируя результаты выполнения каждого блока схемы алгоритма:

a=2; b=1; xn=-1; xk=2; dx=1;

x:=xn (x=-1);

х£ хк (-1 £ 2 – выражение истинно);

y:=ax+b (y=2*(-1)+1=-1);  вывод: х=-1 у=-1;

 х£ хк (-1 £ 2 – выражение истинно);

y:=ax+b (y=2*(-1)+1=-1);  вывод: х=-1 у=-1;

х£ хк (-1 £ 2 – выражение истинно);

y:=ax+b (y=2*(-1)+1=-1);  вывод: х=-1 у=-1;

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

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

4.6  Таблица соответствия обозначений в схеме алгоритма и программе.

В схеме алгоритма

В программе

dx

хн

xn

хк

xk

4.7  Программа на языке Паскаль.

{...}

program whilep;

var

a,b,x,y,xn,xk,dx:real;

begin

write('введите значения переменных a,в,xn,xk,dx: ');               readln(a,b,xn,xk,dx);

writeln('Исходные данные: a=',a:4:2,' b=',b:4:2,' xn=',xn:4:2,     

           ' xk=',xk:4:2,’ dx=',dx:4:2);

writeln('Результат табулирования функции y=ax+b: ');

x:=xn;

while x<=xk do

begin

     y:=a*x+b;

     writeln(' x=',x:6:2,' y=':20,y:4:2);

     x:=x+dx

end;

readln

end.

4.8  Анализ соответствия схемы алгоритма и программы.

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

4.9  Особенности конструкции while:

    а) Поскольку используется предусловие, то тело цикла может быть не выполнено ни разу;

    б)  В качестве предусловия записывается условие выполнения цикла, а не выхода из него;

    в) Тип и значение параметра цикла являются произвольными;

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

Вопрос 3

Конструкция повторение с постусловием (repeat …until) («ДО»)

В этой конструкции используются служебные слова языков Паскаль и Delphi:

·  Repeat – повторение;

·   until –до тех пор пока не станет истинным условие выхода из цикла.

1  Запись конструкции в виде схемы с использованием блока решение.

выход

 
 


2  Описание работы конструкции «ДО» .

При входе в конструкцию условие выполнения цикла не проверяется.  Поэтому тело цикла выполняется как минимум один раз.

Если условие выхода из цикла истинно, то осуществляется выход из цикла. Если ложно, то опять выполняется тело цикла. Тело цикла выполняется до тех пор, пока не станет истинным условие выхода из цикла. После этого осуществляется выход из цикла.

3  Запись конструкции на языке Паскаль и Delphi:

repeat

    серия операторов

until    условие выполнения цикла ;

 Даже в случае, если  серия операторов  состоит не из одного оператора, то операторные скобки  begin – end   не являются обязательными.  Это  исключение из общего  следующего правила языка программирования: если в некоторой конструкции находится серия операторов, то их нужно взять в операторные скобки begin – end. Наличие исключения объясняется тем, что нижняя граница серии операторов (тела цикла) явно обозначена словом until. Поэтому отпадает необходимость заключать серию операторов, в операторные скобки begin – end, хотя их использование не будет являться ошибкой. Таким образом, в данной конструкции роль операторных скобок выполняют ключевые слова языка программирования repeat и until.

4  Пример решения предыдущей задачи с использованием конструкции повторение с постусловием (repeat…until)

4.1  Схема  алгоритма решения  задачи.

 


4.2  Программа решения задачи с использованием конструкции repeat … until.

program repeatp;

var     a,b,x,y,xn,xk,dx:real;

begin

write('введите значения переменных a,в,xn,xk,dx: '); readln(a,b,xn,xk,dx);

writeln('Исходные данные: a=',a:4:2,' b=',b:4:2,' xn=',xn:4:2,

            ' xk=',xk:4:2,' dx=',dx:4:2);

writeln('Результат табуляции функции y=ax+b: ');