Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MLTA_shpory2.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
1.49 Mб
Скачать

50.Алгоритмические логики. Принципы построения алгоритмической логики. Алгоритмическая логика Хоара.

{A} S1{B}, {C} S2{D}, BC

{A} S1 S2{D}

В начале 70-х годов XX века возникли алгоритмические логики. Цель — описание семантики языков программирования. Алгоритмические логики включают высказывания вида {} S {}, читающиеся как «если до выполнения оператора S было выполнено , то после него будет ». Эти логические языки практически одновременно изобретены Р.У.Флойдом (1967), К.Хоаром (1969) и представителями польской логической школы (А.Сальвиницкий и др. (1970)). Принципы построения алгоритмической логики L0. Память в L0 разделена на ячейки. Каждая ячейка имеет идентификатор, представляющий собой слово из латинских букв и цифр и начинающийся с буквы. Ячейки содержат натуральные числа. Программа в L0 состоит из операторов. Исходный оператор — присваивание: х := е, где х — идентификатор, а е — выражение, составленное из идентификаторов и натуральных чисел. Пусть состояние памяти после присваивания удовлетворяет условию А(х), где А — формула формальной арифметики. Тогда состояние, которое было до присваивания, опишем формулой А(х|е). (К примеру, если А(х) — это х < 2 и х := х + 1, то А(х | х + 1) — это х + 1 < 2. Следовательно, чтобы после присваивания х := х + 1 стало истинным х < 2, требуется, чтобы до присваивания выполнялось неравенство х + 1 < 2, т.е. |= {х + 1 < 2}х := х + 1{х < 2}.) Иначе говоря, имеем высказывание {А(х|е)}х := е{ А(х)}. Пусть два оператора S1, S2 выполняются один за другим. Тогда этому соответствует логическая запись вида . Условный оператор IF A1  S1  A2  S2  ... An  Sn FI, где A1, ... An — логические выражения, построенные из отношений е1 = е2, е1 > е2 при помощи логических связок; Si — последовательность операторов. Проверяются формулы Ai при настоящем состоянии памяти. Если ни одна из Ai не истинна, то фиксируется ошибка. Если же некоторые Ai истинны, то выбирается одна их них (неважно как) и выполняется соответствующая последовательность операторов Si». Цикл DO A1  S1  A2  S2  ... An  Sn OUT B1  T1  B2  T2  ...  Bm  Tm OD. Выполняется оператор цикла следующим образом. Проверяются формулы A1, ... An,B1,...,Bm при настоящем состоянии памяти. Если ни одна из них не истинна, то фиксируется ошибка. Если же некоторые истинны, то выбирается одна их них (неважно как). Если выбрана Ai, то выполняется соответствующая последовательность операторов Si и выполнение цикла возобновляется. Если выбрана Bi, то выполняется соответствующая последовательность операторов Ti и выполнение цикла завершается. Алгоритмическая логика Хоара. Основой для логики выводов правильных программ служат аксиомы Хоара (правила верификации). Они допускают интерпретации в терминах программных конструкций. Аксиомы Хоара определяют предусловия как достаточные условия, гарантирующие, что исполнение соответствующего оператора при успешном завершении приведет к желаемым постусловиям.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]