Урок 8. Диалоги с черепахой

Принимаем сообщения

Ранее мы уже видели, как робот-черепаха может выводить текст на холст с помощью команды напиши. Однако это не единственная возможность вывода символьной информации. С помощью языка программирования Лого можно запрограммировать черепаху так, что она будет посылать сообщения с помощью специальных диалоговых окон.

Вот одно из таких окон, с написанной на нем любой фразой-сообщением и одной кнопкой ОК.

ask1.png

Такое окно получается в результате выполнения вот такой команды:

сообщение "Эй. Я черепаха. Это сообщение из вашей программы"

Команда сообщение выводит окно, а фраза в кавычках – это то, что будет написано в этом окне. Фраза может быть абсолютно любой. Вместо нее даже может стоять переменная. Например, так:

$привет = "Здравствуйте, ребята!"
сообщение $привет

В результате получится окно с фразой "Здравствуйте, ребята!". Можно поступить еще интересней и передать команде сообщение несколько аргументов.

$привет = "Здравствуйте, ребята!"
$задание = "Сидите и слушайте."
сообщение $привет + " " + $задание

Здесь команде сообщение передается три аргумента: две переменные и одна строка (в кавычках). Строка состоит из одного пробела. Он нужен для того, чтобы отделить первую фразу от второй. С помощью знаков + фразы соединяются между собой. В результате окно сообщения будет содержать фразу "Здравствуйте, ребята! Сидите и слушайте."

Задание

Напишите программу по следующему алгоритму:

  1. Сброс всех параметров.
  2. Сообщение об установке цвета холста.
  3. Команда установки цвета холста в светло-зеленый цвет.
  4. Сообщение о предстоящем выводе на экран линии.
  5. Вывод на экран темно синей линии.
  6. Сообщение о том, что сейчас экран будет очищен.
  7. Сброс всех параметров.

Отвечаем на вопросы

Писать сообщения – это часть того, что можно делать с диалоговыми окнами. На самом деле, на языке Logo можно выводить окна с вопросами. В таких окнах есть сообщение и поле, куда человек пишет свой ответ, а также две кнопки: ОК и Отмена. Вот как это может выглядеть:

ask2.png

Кнопка ОК активируется ("загорается"), когда в пустое поле будет что-нибудь написано. Чтобы получить такое окно, надо выполнить такую команду:

спроси "Что вы хотите?"

Именно благодаря команде спроси получается такое сложно диалоговое окно. То, что идет после кавычек – это сообщение о том, что требуется ввести в пустое поле ввода. Если после этого нажать кнопку ОК, то введенная в поле информация окажется в памяти компьютера. Если нажать Отмена, то ничего нигде не сохранится.

Предположим, что мы что-то ввели в поле и нажали ОК. Где же в памяти компьютера сохранилось, то, что мы ввели, и как черепахе узнать это значение? Все просто – надо использовать переменные. Приведенное выше выражение на самом деле должно быть примерно таким:

$желание = спроси "Что вы хотите?"

Теперь то, что ввел человек в диалоговом окне, будет сохранено в памяти и связано с переменной $желание. Когда потребуется, чтобы черепаха что-нибудь сделала с этими данными, мы можем передавать командам нашу переменную. Например, чтобы вывести загаданное желание на холст достаточно дать такую команду:

напиши $желание

С помощью Лого-черепахи можно запрашивать у пользователя не только словесные фразы, но и числа. Рассмотрим такую программу:

сброс 
сообщение "Установите цвет холста в кодировке RGB."= спроси "Красный"= спроси "Зеленый"= спроси "Синий"
цвет_холста $к,,

Человек получает сообщение о том, что ему сейчас предстоит установить цвет. Далее появляются окна, где он должен ввести числа от 0 до 255 (а потому что RGB). То, что вводит пользователь, запоминается в переменных $к, $з, $с. Поскольку команде цвет_холста надо передавать три числа через запятую, то мы это и делаем. Просто вместо переменных при выполнении будут подставлены числа, которые ввел пользователь.

Задание

Вспомните прошлый урок про конструкцию "Если – иначе". Напишите такую программу:

  1. Сброс параметров.
  2. Спросить у пользователя, сколько ему лет.
  3. Если пользователю больше 18, то сообщить ему, что он уже совершеннолетний по Российскому законодательству.
  4. Иначе, вывести сообщение, где будет указано, сколько лет ему осталось до 18.

Примерный ответ к заданию:

сброс
$возраст = спроси "Сколько тебе лет?"
если $возраст >= 18 {
	сообщение "Ты уже совершеннолетний"
}
иначе {
	$осталось = 18 - $возраст
	сообщение "До совершеннолетия осталось " + $осталось
}

Напишите еще одну программу:

  1. Сброс параметров
  2. Попросите пользователя решить пример 2*2.
  3. Если пример решен правильно, то на холсте должен появиться большой синий квадрат.
  4. Во всех остальных случаях на холсте должно выводиться то, что ввел пользователь, а затем перечеркиваться красной линией.

Примерный ответ к заданию:

сброс
$y = спроси "Сколько будет 2 * 2?"
если $y == 4 {
	цвет_пера 0, 0, 220
	иди 100, 100
	назад 200
	налево 90
	назад 200
	налево 90
	назад 200
	налево 90
	назад 200
	налево 90
}
иначе {
	размер_шрифта 20
	напиши $y
	иди 190, 220
	направление -90
	цвет_пера 255, 0, 0
	назад 100
}

Создано