Программирование в школе – всегда тема очень сложная для понимания. И хотя именно эта тема имеет очевидное практическое применение (а отсутствие такового – причина для ученика, чтобы заявлять, что это ему знать не надо), мало кто из учеников изучает ее с желанием.
Чтобы немного разнообразить изучение программирование, предлагаю несколько уроков посвятить “занимательному” программированию.
Я предлагаю ученикам создать собственные игры. Конечно, консольные.
И первая из них – это “Угадай число”.
Компьютер “загадывает” число из указанного диапазона. Задача пользователя – отгадать это число. Пользователь вводит свой вариант ответа, компьютер отвечает, как введенное число относится к загаданному (больше, меньше или равно). На отгадывание дается определенное количество попыток.
Примерный текст на экране:
Задание для учеников можно сформулировать так.
Самостоятельно сделайте следующее:
- Наберите в среде программирования исходный код приложения (размещен дальше по заданию).
- Дополните код, добавив в него еще два уровня сложности.
- Исправьте ошибку программиста (угадывание не прекращается, если число потраченных попыток превысило допустимое значение).
Подсказка
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.
Успехов в программировании!