Реферат: Написание программ вычисления факториалов
Пусть
E=x<y Ù("i : 0 £ i < n : bi < y) .
Тогда
, т.к. i не свободно в Е.
Определение 10.4. wp(x : = e , R) = если domain(e) , то ;
где domain(e) - предикат, описывающий множество состояний, для которых значение выражения е определено.
Примеры 10.3. :
wp(x : =5 , х=5) = (5=5) = Т ,
т.е. любое состояние оператор x : =5 перерабатывает в состояние, на котором предикат х=5 выполняется.
wp(x : =5 , х¹5) = (5¹5) = F ,
т.е. нет такого состояния, которое бы оператор x : =5 , перевел в состояние х¹5 .
wp(x : =x+1 , х<0) = (x+1<0) =(x<-1) .
wp(x : =x´x , х4 =10) = ((x´x)4 =10) = (x8 =10) .
Пусть с - константа, тогда
wp(x : =е , х=с) = (е=с) ,
т.е. оператор x : =е обязательно завершится и даст в результате состояние, где x имеет значение с, если, и только если, значение выражения е при выполнении этого оператора будет равно с .
Пусть с - константа, а х и y - имена двух разных переменных, тогда
wp(x : =е , у=с) = (у=с) ,
т.е. выполнение оператора x : = е не может изменить значение переменной у.
В последнем примере предполагается, что x : =е может изменить только значение переменной х. Вычисление выражения е не может изменить значения никакой переменной, т.е. нет, так называемого, побочного эффекта. Побочный эффект мы рассмотрим позднее в лекции 15.
Запрещение побочных эффектов исключительно важно, т.к. это позволяет рассматривать выражения в программе, так же, как в математике. Это означает, что выражение в программе обладает многими свойствами выражений в математике.
Идея описания семантики оператора в терминах пред- и постусловий применима не только к отдельному оператору, но и к группе операторов. Покажем, что последовательность операторов
t : =х ; x : =y ; y : = t ;
обеспечивает обмен значениями у переменных х и y .
Пусть начальное значение {x=Y , y=X}.
{x=Y Ù y=X}