Студопедия

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

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

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






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






     

    Значение логического выражения задается следующим рекурсивным определением. Для любого состояния выполнения 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 :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.