Содержание
- 2. Пример использования структурного программирования Структу́рное программи́рование — методология разработки программного обеспечения, в основе которой лежит представление
- 3. Пример использования структурного программирования Декомпозиция на три подзадачи: положить x = a и y = b
- 4. Пример использования структурного программирования В исходной постановке задачи только входные данные a и b, мы ввели
- 5. Пример использования структурного программирования 3. -- a>0, b>=0 положить x=a положить y = b -- НОД(a,
- 6. Получение целой части и остатка отделения --x ≥ 0, y > 0 положить q = 0
- 7. Статическая и динамическая структура программы Каждый алгоритм имеет статическую и динамическую структуру. Статическая структура представляется текстом
- 8. Спецификация программы и правила вывода Любой оператор или изменяет состояние вычислений… или анализирует и принимает решение…
- 9. Спецификация программы и правила вывода - P Спецификация программы: S { P} S { Q }
- 10. Спецификация программы и правила вывода Проектирование должно начинаться с определения спецификации {P} S {Q}, которой должна
- 11. Представим блок-схему этого алгоритма как композицию….. x>=0, y>0 x>=0, y> 0 s1 q = 0; r>=0
- 12. x = q*y + r, r >=y S3 r = r – y; s2 q =
- 13. Правила вывода Правила вывода – это схемы рассуждений, позволяющие доказывать свойства программ. Общий вид: H1,H2,…Hn H
- 14. Второе правило консеквенции: P R, {R} S {Q} {P} S {Q} Например: ((x = y *
- 15. Правила вывода для операторов языка программирования
- 16. Правила вывода для структурных операторов Простейшей формой структурирования является создание составных операторов с помощью последовательной композиции
- 17. Правила вывода для составного и условных операторов
- 18. Правила вывода для условных операторов Если мы хотим доказать истинность утверждения {P} if (B) S1; else
- 19. Правила вывода для условных операторов 2. Если B ложно, то будет выполняться оператор S2. Так как
- 20. Правила вывода для условных операторов Сокращенный условный оператор: if ( B ) S; Блок-схема сокращенного условного
- 21. Правила вывода для условных операторов 2. P ^ ¬B Q
- 22. Итерационная композиция, операторы циклов Оператор цикла с предусловием: while (B) S; B – выражение, S –
- 23. Итерационная композиция, операторы циклов Если P справедливо, когда впервые входим в цикл, то P^B будет справедливо,
- 24. Правило вывода для цикла с постусловием: do S while B; A –P S Q ^ B
- 25. Доказательство правильности алгоритма поиска div и mod Представим блок-схему этого алгоритма с учетом его декомпозиции --
- 26. Доказательство правильности алгоритма поиска div и mod x=q*y + r, r>=y S3 r = r –
- 27. Фрагмент программы
- 28. Рассмотрим вначале цикл, представленный блоком s3 B - это (r >= y) , отрицание B –
- 29. Для этого необходимо доказать, что справедливо соотношение над чертой, в нашем случае где s2 – составной
- 30. Теперь используем правило составного оператора и 2-е правило консеквенции получим
- 31. Использовав эти три соотношения и правило консеквенции, получим соотношение для s1. {(x>=0) (y>0)} s1 {(x =
- 32. Осталось доказать спецификацию для составного оператора { s1;s3}
- 33. Мы доказали частичную корректность алгоритма, так как при доказательстве не использовалось условие y>0. Это условие используется
- 34. Доказательство завершаемости алгоритмов Деление целых неотрицательных чисел. ----------------------------------------- {x >= 0, y > 0} q =
- 35. Доказательство завершаемости алгоритмов Используя условие y > 0, доказали завершаемость алгоритма, Сочетание доказательства частичной корректности алгоритма,
- 36. Умножение двух положительных целых чисел x и y Алгоритм, использующий только операции сложения и вычитания, может
- 37. Соотношения в точках B,C и D отражают суть алгоритма: z используется для накопления суммы, u определяет
- 38. Применяем правила вывода для доказательства правильности алгоритма: Из исходных условий можно записать: ((x>0) ^ (y>0)) ((x*y
- 39. Используем правило вывода для оператора цикла с постусловием {P} S {Q}, Q ^ B P {P}
- 40. Из постусловия этого утверждения следует ((z + u * y = x * y) ^ (u≥0)
- 42. Скачать презентацию