Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
15
Добавлен:
02.04.2015
Размер:
605.17 Кб
Скачать

31

Доказательство опирается на два утверждения:

1.Любая ЧР-функция вычислима на машине Тьюринга.

2.Любая функция, вычислимая на машине Тьюринга, является частично-рекурсивной.

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

32

4.5.Логика доказательства правильности алгоритмов и программ

Создание надежного программного обеспечения для современных информационно-вычислительных систем – это перевод требований технического задания сначала в точные спецификации, а затем в текст программы.

33

Сложность программного продукта как объекта проектирования – основная причина ненадежности программного обеспечения. Для снижения сложности

программного

продукта используют

технологию

модульного

проектирования

или

объектно-

ориентированный подход.

Тестирование – это выявление ошибок,

вкравшихся в программу на разных

стадиях проектирования.

34

Для каждого исходного состояния данных X после завершения шага алгоритма результирующее состояние данных Y должно быть однозначно определенным. Значение Y единственно для заданного X, поэтому множество всех упорядоченных пар (X,Y) определяет программную функцию.

35

Программную функцию f для простой программы P обозначим через [P] и определим выражением

[P]={(X,Y) Y=f(X)},

где X - состояние поля данных до выполнения P, Y - состояние поля данных после выполнения P.

36

1. Последовательные (линейные) структуры

Рассмотрим последовательность двух блоков g={(X,Y)}

p=

X

 

Y

 

Z

 

 

g

 

h

 

 

 

 

 

 

 

Рис.4.2.

и h={(Y,Z)}, изображенную на рис.4.2.

37

Программная функция такой последовательности является композицией двух частных функций h и g:

[P]={(X,Z) Z=h(g(X))}.

Пример

x:= y + z; y:= x - z; z:= -x + y;

Рис.4.3.

4.2. Задана программа в виде последовательности операторов присваивания на алгоритмическом языке PASCAL (рис.4.3). Требуется определить функцию, реализуемую этим алгоритмом.

38

Пусть начальное значение поля данных (x0,y0,z0). Процесс прослеживания состояния поля данных после выполнения каждого оператора называется трассировкой. Его удобно представить таблицей.

Оператор

x

y

Z

 

 

 

 

x:=y+z

x1=y0+ z0

y1=y0

z1=z0

 

 

 

 

y:=x-z

x2=x1

y2=x1-z1

z2=z1

 

 

 

 

z:=-x+y

x3=x2

y3=y2

z3=-x2+y2

 

 

 

 

39

После выполнения первого оператора присваивания первоначальное значение x0 стирается и заменяется новым значением x1=y0+z0, причем значения y и z не меняются, т.е. y1=y0, z1=z0.

После выполнения второго оператора присваивания получаем:

x2 = x1= y0 + z0,

y2 = x1 - z1 = y0 + z0 - z0 = y0,

z2 = z1 = z0.

40

После выполнения третьего оператора присваивания получаем:

x3= x2 = x1 = y0 + z0,

y3 =y2 = y0,

z3 = -x2 + y2 = -y0 -z0 + y0 = -z0.

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

(x0,y0,z0) в поле данных (y0+z0, y0, -z0).

Соседние файлы в папке Электронные лекции 2013