Читаем Песни о Паскале полностью

Здесь DIV и MOD – это ключевые слова языка. Примеры деления и нахождения остатка показаны ниже (в комментариях указаны результаты).


      N := 10 div 2; { =5 }       M := 10 mod 2; { =0 }

      N := 10 div 3; { =3 }       M := 10 mod 3; { =1 }

      N := 10 div 4; { =2 }       M := 10 mod 4; { =2 }

      N := 10 div 5; { =2 }       M := 10 mod 5; { =0 }

      N := 10 div 6; { =1 }       M := 10 mod 6; { =4 }


Как видите, операции с целыми числами дают целый результат даже при делении, поскольку дробная часть отбрасывается.

Числовые переменные и выражения можно сравнивать между собой на равенство (=), неравенство (<>), больше (>), меньше (<), больше или равно (>=), меньше или равно (<=). При сравнении получается, как всегда, булев результат, например:


var X, Y: integer;

      B: Boolean;

begin

      X:=5;       Y:=10;

      B:= X=Y; { B = FALSE }

      B:= X

      B:= X=Y-5; { B = TRUE }

end.


А как быть с вводом и выводом числовых данных, нет ли тут сложностей? К счастью, нет. Так же как и строки, числовые данные вводятся процедурой Readln, а печатаются процедурами Write и Writeln, например:


      Readln(X);

      Writeln(X);

      Writeln(’Y=’, X+10);


В последнем операторе на экран выводится строковая константа ’Y=’ и результат сложения X+10.

Теперь вы снабжены всем необходимым для написания экзаменатора.

Алгоритм экзаменатора

Прежде всего, уточним алгоритм создаваемой программы. Живой экзаменатор сам придумывает примеры для умножения. Но нам это пока не под силу – маловато знаний – отложим этот вариант до следующей главы. А пока экзаменуемый будет сам «создавать себе проблемы», то есть будет вводить сомножители по запросу программы вручную. Пример диалога может выглядеть, например, так:


Первый сомножитель A = 7

Второй сомножитель B = 7

Произведение A*B = 47

Ошибка, повтори таблицу умножения!


И так далее. Здесь выделенные курсивом числа 7, 7 и 47 пользователь ввел сам. Разумеется, что задания надо решать многократно, в цикле. Для выхода из цикла нужен какой-то признак, сигнал. Пусть таким сигналом будет ввод нуля в качестве ответа. Тогда блок-схема программы получается такой (рис. 37).



Рис.37 – Блок-схема программы проверки таблицы умножения

Обратите внимание на условие в операторе цикла REPEAT-UNTIL, – оно равно FALSE. Такой цикл будет продолжаться бесконечно, и выйти из него можно лишь процедурой BREAK, как показано на блок-схеме.

Экзаменатор, первый вариант

Вот теперь все готово для написания следующей программы.


{ P_14_1 – экзаменатор таблицы умножения, первый вариант }

var A, B, C : integer; { сомножители и произведение }

      R: Boolean; { результат сравнения }

      S: string;       { сообщение для вывода на экран }

begin

      repeat

      { ввод сомножителей и произведения }

      Write(’Первый сомножитель A = ’); Readln(A);

      Write(’Второй сомножитель B = ’); Readln(B);

      Write(’Произведение A*B = ’); Readln(C);

      if C=0 then break; { завершение цикла, если C=0 }

      { проверяем правильность вычисления }

      R:= A*B=C; { R=true, если верно }

      if R

      then S:= ’Молодец, правильно!’

      else S:= ’Ошибка, повтори таблицу умножения!’;

      Writeln(S);

      until false; { бесконечный цикл }

end.


Запустите программу и проверьте её работу. В следующий раз мы научим её придумывать сомножители, – так будет честнее. А пока подведем итоги.

Итоги

• Для вычислений в Паскале предусмотрены данные числового типа (INTEGER).

• К данным целого типа могут применяться четыре арифметических операции, а также операция нахождения остатка от деления.

• В результате сравнения численных данных получается булев результат, который может быть применен везде, где проверяется условие.

• Числовые данные вводятся оператором Readln и выводятся операторами Write и Writeln;

• Числовым переменным нельзя присваивать строковые значения и наоборот: строковым переменным нельзя присваивать числовые значения.

А слабо?

А) Найдите ошибки в следующей программе и объясните их.


var N, M : integer;

      S : string;

begin

      N:= ’10’;

      S:= N + 5;

      M:= S – 1;

      if S=N then;

end.


Перейти на страницу:

Похожие книги

Сломанная кукла (СИ)
Сломанная кукла (СИ)

- Не отдавай меня им. Пожалуйста! - умоляю шепотом. Взгляд у него... Волчий! На лице шрам, щетина. Он пугает меня. Но лучше пусть будет он, чем вернуться туда, откуда я с таким трудом убежала! Она - девочка в бегах, нуждающаяся в помощи. Он - бывший спецназовец с посттравматическим. Сможет ли она довериться? Поможет ли он или вернет в руки тех, от кого она бежала? Остросюжетка Героиня в беде, девочка тонкая, но упёртая и со стержнем. Поломанная, но новая конструкция вполне функциональна. Герой - брутальный, суровый, слегка отмороженный. Оба с нелегким прошлым. А еще у нас будет маньяк, гендерная интрига для героя, марш-бросок, мужской коллектив, волкособ с дурным характером, балет, секс и жестокие сцены. Коммы временно закрыты из-за спойлеров:)

Лилиана Лаврова , Янка Рам

Современные любовные романы / Самиздат, сетевая литература / Романы