Navigation bar
  Print document Start Previous page
 90 of 144 
Next page End  

90
Таким образом можно высказать окончательное 
Утверждение. Конечным результатом выполнения будет
у = х
5
для любых значений х.
Доказательство. Исходя из описания результатов выполнения присваиваний значение у
будет равно
у = v2
x = (v1
v,)
x = ((х
х).(х
х)))
х = x
5
.
Что и требовалось доказать.
Техника анализа и доказательства правильности алгоритмов и программ во многом сов-
падает с техникой доказательства любых других утверждений и состоит в применении следующих
четырех приемов:
разбор случаев;
подбор контрпримеров;
выделение лемм;
индуктивный вывод.
Разбор случаев применяется для анализа результатов выполнения конструкций альтерна-
тивного выбора. В качестве примера проведем анализ приведенного выше алгоритма «выбора»
максимума трех чисел, содержащего выбор альтернатив. 
алг «у = тах(а, b,с)»        
Результаты 
нач 
если а > b то        
при а > b
у := а                
у = а
инес b > с то           
при b > с
у := b                
у = b
инес с > а то           
при с > а
у := с                  
у = с
кесли                
при не (b > с) 
кон
Справа от алгоритма приведены результаты вычислений с указанием условий, при которых
они получаются. На основании этих фактов можно заключить, что конечные результаты вычисле-
ния имеют три варианта:
а, при а > b, 
у =   
b, при b > с и b
а, 
с, при с > а и с
b.
В то же время значение максимума должно быть равно:
а, при а
b и а
с, 
mах =  b, при b
с и b
а,
с, при с
а и с
b.
Во всех трех случаях видны различия в условиях получения и определения максимальных
значений. Покажем, что эти различия существенны и утверждение о том, что алгоритм дает пра-
вильные результаты для всех данных, неверно.
Для опровержения общего утверждения достаточно указать хотя бы один контрпример. В
данном случае утверждение о правильности алгоритма гласило бы: для любых значений перемен-
ных а, b, с конечным было бы значение mах (а, b, с).
Контрпримером в данном случае будут значения: а = 2, b = 1, с = 3. Для этих данных по
определению mах = 3, а по результатам выполнения алгоритма у = 2. Следовательно, в алгоритме
содержится ошибка.
Однако оказывается, что это не единственная ошибка. Более тонкие ошибки вскрывает
второй контрпример: а = 1, b = 1, c = 1. Для этих данных в алгоритме вовсе не определен результат
вычислений у = ? и конечный результат выполнения программы будет непредсказуем!?
Правильное решение этой задачи можно получить применением систематических методов,
составив постановку и описание метода решения.
Сайт создан в системе uCoz