Программирование в школе – всегда тема очень сложная для понимания. И хотя именно эта тема имеет очевидное практическое применение (а отсутствие такового – причина для ученика, чтобы заявлять, что это ему знать не надо), мало кто из учеников изучает ее с желанием.
Чтобы немного разнообразить изучение программирование, предлагаю несколько уроков посвятить “занимательному” программированию.
Я предлагаю ученикам создать собственные игры. Конечно, консольные.
И первая из них – это “Угадай число”.
Компьютер “загадывает” число из указанного диапазона. Задача пользователя – отгадать это число. Пользователь вводит свой вариант ответа, компьютер отвечает, как введенное число относится к загаданному (больше, меньше или равно). На отгадывание дается определенное количество попыток.
Примерный текст на экране:
Задание для учеников можно сформулировать так.
Самостоятельно сделайте следующее:
- Наберите в среде программирования исходный код приложения (размещен дальше по заданию).
- Дополните код, добавив в него еще два уровня сложности.
- Исправьте ошибку программиста (угадывание не прекращается, если число потраченных попыток превысило допустимое значение).
Подсказка
until (chislo=number)or(popytki=max); - Доработайте программу таким образом, чтобы в случае неудачной игры пользователю выводилось сообщение о том, что он не угадал число.
- Доработайте программу таким образом, чтобы после завершения игры пользователю предлагалось либо завершить игру, либо начать заново. Во втором случае на экране должен снова появиться выбор сложности.
Исходный код проекта:

Полный исходный код программы со всеми исправлениями
program guessnumber;
var
b,uroven, chislo, popytki, number, max :integer;
begin
randomize;
writeln('###############################');
writeln('##### Игра "Угадай число" #####');
writeln('###############################');
repeat
writeln;
uroven:=0;
popytki:=0;
while (uroven<1) or (uroven>4) do //Защита от неправильно введенного уровня
begin
writeln('Выберите уровень сложности:');
writeln('1 - Числа от 1 до 10, 3 попытки');
writeln('2 - Числа от 1 до 50, 5 попыток');
writeln('3 - Числа от 1 до 100, 8 попыток');
writeln('4 - Числа от 1 до 1000, 15 попыток');
readln(uroven);
end;
if uroven =1 then begin chislo:=random(10)+1; max:=3 end;
if uroven =2 then begin chislo:=random(50)+1; max:=5 end;
if uroven =3 then begin chislo:=random(100)+1; max:=8 end;
if uroven =4 then begin chislo:=random(1000)+1; max:=15 end;
repeat
inc(popytki);
write('Попытка ',popytki,' Ваше число? ');
read(number);
if number>chislo then writeln(' Я загадал число поменьше') else
if number<chislo then writeln(' Я загадал число побольше') else
writeln('Вы угадали!')
until (chislo=number)or(popytki=max);
if (chislo<>number)and(popytki=max)then writeln('К сожалению, Вам не удалось отгадать число. Я загадал ',chislo);
writeln('Хотите сыграть еще раз? Если да, введите 1, если нет, то 0');
readln(b);
until b=0;
end.
Успехов в программировании!
