Чтение онлайн

на главную - закладки

Жанры

Шрифт:

Первые компьютеры назывались электронными вычислительными машинами (ЭВМ). Хотите – верьте, хотите – нет, но тогда на них не документы печатали и не фильмы смотрели, а вычисляли. С тех пор компьютеры научились многому и даже обыгрывают в шахматы чемпионов мира, однако, их способность к счету по-прежнему в цене.

Поможем

братьям нашим меньшим

Пора и нам обратиться к вычислительным талантам компьютера. Не будем тратить попусту время, и по ходу дела соорудим полезную программу. Вы сможете испытать её на живом человеке, если найдёте первоклашку, зубрящего таблицу умножения. Уверен, что он с удовольствием подвергнет себя такому испытанию. Итак, наша очередная программа – экзаменатор. Суть её проста: компьютер предлагает ученику два числа и ждет от него ответа – произведения этих чисел. За правильный ответ ученика поощряют, а иначе его ждет «нахлобучка».

Числа и действия с ними

Скажу честно: знакомых нам типов данных – STRING и BOOLEAN – не хватит для решения поставленной задачи. Для вычислений в Паскале припасены другие типы данных, один из которых называется INTEGER, что переводится как целое. Из названия следует, что переменные такого типа могут хранить целые числа (положительные и отрицательные), например 10, 25, -14. Переменные целого типа объявляют следующим образом:

var N, M : integer;

Таким переменным можно присваивать выражения целого типа, состоящие из чисел, арифметических операций, скобок и других переменных, например:

N := 19; M :=-25;

M := 20 + 3*N;

К арифметическим операциям относятся:

• сложение (+) и вычитание (–);

• умножение (*) и деление (DIV);

• нахождение остатка от деления (MOD).

Здесь 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<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 = 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.

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

Поделиться:
Популярные книги

Владеющий

Злобин Михаил
2. Пророк Дьявола
Фантастика:
фэнтези
8.50
рейтинг книги
Владеющий

Газлайтер. Том 1

Володин Григорий
1. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 1

Безумный Макс. Ротмистр Империи

Ланцов Михаил Алексеевич
2. Безумный Макс
Фантастика:
героическая фантастика
альтернативная история
4.67
рейтинг книги
Безумный Макс. Ротмистр Империи

Мастер темных Арканов

Карелин Сергей Витальевич
1. Мастер темных арканов
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Мастер темных Арканов

Низший

Михайлов Дем Алексеевич
1. Низший!
Фантастика:
боевая фантастика
7.90
рейтинг книги
Низший

Сирота

Ланцов Михаил Алексеевич
1. Помещик
Фантастика:
альтернативная история
5.71
рейтинг книги
Сирота

Чиновникъ Особых поручений

Кулаков Алексей Иванович
6. Александр Агренев
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Чиновникъ Особых поручений

Черный Маг Императора 8

Герда Александр
8. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 8

Привет из Загса. Милый, ты не потерял кольцо?

Лисавчук Елена
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Привет из Загса. Милый, ты не потерял кольцо?

Контрактер Душ

Шмаков Алексей Семенович
1. Контрактер Душ
Фантастика:
фэнтези
попаданцы
аниме
5.20
рейтинг книги
Контрактер Душ

Болотник 2

Панченко Андрей Алексеевич
2. Болотник
Фантастика:
попаданцы
альтернативная история
6.25
рейтинг книги
Болотник 2

Хозяин Теней 2

Петров Максим Николаевич
2. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Хозяин Теней 2

Невеста на откуп

Белецкая Наталья
2. Невеста на откуп
Фантастика:
фэнтези
5.83
рейтинг книги
Невеста на откуп

На границе империй. Том 7. Часть 3

INDIGO
9. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.40
рейтинг книги
На границе империй. Том 7. Часть 3