Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Значение логических выражений.






 

Значение логического выражения задается следующим рекурсивным определением. Для любого состояния выполнения S:

E1 = E2(S) = (E1(S) = E2(S))

E1 < > E2(S) = (E1(S) ¹ E2(S))

E1 < E2(S) = (E1(S) < E2(S))

E1 < = E2(S) = (E1(S) ≤ E2(S))

E1 > E2(S) = (E1(S) > E2(S))

E1 > = E2(S) = (E1(S) ≥ E2(S))

E1 OR E2(S) = (E1(S) OR E2(S))

NOT E (S) = NOT E (S)

(E) (S) = E (S)

Операторы в левой части – те, что встречаются в Паскаль-программах. Те, которые в правой части – математические операции. Это определение дает значение каждого ператора по отдельности, но не указывает как будет вычисляться выражение с несколькими операторами. Ассоциативность и приоритет операторов в выражении определяется синтаксическими правилами Паскаля. Программное исчисление требут чтобы все операторы были определены, в противном случае математические свойства такие как коммутативность, (которую мы сипользуем чаще, чем предполагаем) нарушаются.

 

Ввод-вывод логических значений.

 

Логичесике переменные не могут появляться в операторах READ, но логические выражения могут появляться в операторах WRITE. Логические значения преобразуются в символы и выравниваются по правой стороне строки, длина которой зависит от реализации Паскаль-машины (например, 10 символов).

Последовательность операторов:

Condition: = TRUE;

WRITE(Condition);

Добавляет строку † TRUE† в OUTPUT.



 

Поиск в файле.

 

Программа SarahRevere в части 2 распознает слова land и sea в INPUT. Разделы проекта этой программы переработаны с использованием логических перемнных и собраны вновь ниже.

 

PROGRAM SarahRevere(INPUT, OUTPUT);

VAR

W1, W2, W3, W4: CHAR;

Looking, Land, Sea: BOOLEAN;

 

BEGIN {SarahRevere}

BEGIN {Инициализируем W1, W2, W3, W4}

W1: = ‘ ‘;

W2: = ‘ ‘;

W3: = ‘ ‘;

W4: = ‘ ‘;

Looking: = TRUE;

Land: = FALSE;

Sea: = FALSE;

END;

WHILE Looking AND NOT (Land OR Sea)

DO

BEGIN

BEGIN {движение окна, проверка на конец данных}

W1: = W2;

W2: = W3;

W3: = W4;

READ(W4);

Looking: = W4 < > ‘#’

END;

BEGIN {проверка окна на land}

Land: = (W1 = ‘l’) AND (W2 = ‘a’) AND

(W3 = ‘n’) AND (w4 = ‘d’)

END;

BEGIN {проверка окна на sea}

Sea: = (W1 = ‘s’) AND (W2 = ‘e’) AND (W3 = ‘a’)

END;

END;

BEGIN {создание сообщения Sarah}

IF Land

THEN

WRITELN(‘The british are coming by land.’)

ELSE

IF Sea

THEN

WRITELN(‘The british are coming by sea.’)

ELSE

WRITELN(‘Sarah didn’t say.’)

END

END. {SarahRevere}

 

Оператор WHILE управляется выражением:

Looking AND NOT (Land OR Sea)

которое разрешает телу цикла выплняться до тех пор пока значение Looking равно TRUE и оба значения Land и Sea равны FALSE. Looking присваивается значение False когда встречается #:

Looking: = W4 < > ‘#’

Land и Sea присваивается TRUE если W1, W2, W3, W4 содержат соотвествующую строку.

Использование логических переменных сократило программу с 57 строк до 43.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.