var X, Y: integer;
B: Boolean;
begin
X:=5; Y:=10;
B:= X=Y; { B = FALSE }
B:= X<Y; { B = TRUE }
B:= X=Y-5; { B = TRUE }
end.
А как быть с вводом и выводом числовых данных, нет ли тут сложностей? К счастью, нет. Так же как и строки, числовые данные вводятся процедурой Readln, а печатаются процедурами Write и Writeln, например:
Readln(X);
Writeln(X);
Writeln(’Y=’, X+10);
В последнем операторе на экран выводится строковая константа ’Y=’ и результат сложения X+10.
Теперь вы снабжены всем необходимым для написания экзаменатора.
Прежде всего, уточним алгоритм создаваемой программы. Живой экзаменатор сам придумывает примеры для умножения. Но нам это пока не под силу – маловато знаний – отложим этот вариант до следующей главы. А пока экзаменуемый будет сам «создавать себе проблемы», то есть будет вводить сомножители по запросу программы вручную. Пример диалога может выглядеть, например, так:
Первый сомножитель A =
Второй сомножитель B =
Произведение A*B =
Ошибка, повтори таблицу умножения!
И так далее. Здесь выделенные курсивом числа 7, 7 и 47 пользователь ввел сам. Разумеется, что задания надо решать многократно, в цикле. Для выхода из цикла нужен какой-то признак, сигнал. Пусть таким сигналом будет ввод нуля в качестве ответа. Тогда блок-схема программы получается такой (рис. 37).
Обратите внимание на условие в операторе цикла REPEAT-UNTIL, – оно равно FALSE. Такой цикл будет продолжаться бесконечно, и выйти из него можно лишь процедурой BREAK, как показано на блок-схеме.
Вот теперь все готово для написания следующей программы.
{ P_14_1 – экзаменатор таблицы умножения, первый вариант }
var A, B, C : integer; { сомножители и произведение }
R: Boolean; { результат сравнения }
S: string; { сообщение для вывода на экран }
begin
repeat
{ ввод сомножителей и произведения }
Write(’Первый сомножитель A = ’); Readln(A);