Программа 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.