© М.Е. Крекин, 1999, 2002
Глава 6 Как черепашка считает
В этой главе:
- еще раз о переменной;
- что программисты называют присваиванием;
- вычисления в Лого;
- как компьютеру и пользователю обменяться сообщениями.
Вы уже знаете, что переменная -- это некий "ящик" с "табличкой"-именем, в котором может хранится одно значение. Знаете и один из способов "положить" в переменную это значение -- при вызове процедуры с параметром. Настало время более серьезного и подробного разговора как о самих переменных, так и о возможных операциях с ними.
Во-первых, сформулируем определение. Переменная -- это именованная область памяти компьютера для хранения данных, изменяющихся при исполнении программы. Переменная в Лого характеризуется своим именем и значением (во многих языках для переменных в явном виде указывается еще и тип). Мы будем пользоваться только простыми переменными, т.е. переменными, хранящими в каждый момент одно значение18.
Для изменения значения переменной существует специальная операция -- присваивание. Соответствующая команда в Лого:
пусть <переменная> <выражение> make <переменная> <выражение>
Например,
пусть “а :с + 23
Обратите внимание! Перед именем переменной в команде "пусть" стоят кавычки (без пробела). Так в Лого показывается, что мы имеем здесь дело с самим "ящиком", а не тем, что в нем лежало.
При исполнении команды присваивания происходит следующее. Сначала вычисляется значение выражения в правой части (при тех значениях, которые имели переменные непосредственно перед этой командой). Затем результат помещается в заданную переменную. При этом ее старое значение теряется. В качестве примера рассмотрим очень часто встречающуюся команду:
пусть “х :х + 1
Предположим, переменная "х" имела значение 5. Что произойдет? -- Сперва вычисляется значение выражения: :х + 1 = 5 + 1 = 6. Затем полученный результат помещается в переменную "х". Таким образом, как мы видим, при выполнении такой команды значение переменной увеличивается на единицу.
В выражениях можно использовать числа, переменные, арифметические знаки (+, -, *, /), а также некоторые функции, например, квадратный корень (обозначается -- кк). Для указания нужного порядка действий применяют круглые скобки. В Лого все знаки действий отделяются с обеих сторон пробелами. Например, для вычислений по формуле
нужно написать
пусть “z (:x + 3) / (2 * :y).
Выражения могут быть записаны не только в команде "пусть", но и в любых других командах с параметром. Рассмотрим пример.
это фигура :а :n по повтори :n [ вп :а пр 360 / :n ] пп конец
Выполняя такую процедуру, черепашка изобразит правильный многоугольник. У процедуры два параметра: длина стороны (:a) и количество сторон (:n). Угол, на который поворачивается черепашка, вычисляется, поскольку известно, что за :n поворотов она должна сделать полный оборот (360 градусов).
А как сделать, чтобы человек смог увидеть результат вычислений? Для этого служат команды вывода. В ЛогоМирах их несколько, мы будем использовать две.
пиши <список вывода> print <список вывода> pr <список вывода>
При выполнении этой команды сообщения выводятся в текстовое окно -- область на рабочем листе, предварительно определяемую с помощью инструмента "А" (). Все сообщения остаются в этом окне , пока не будет дана команда "сотри_текст" (ст, ct).
В случае использования другой команды:
сообщи <список вывода> announce <список вывода>
появляется сигнальное окно с текстом и кнопкой "OK". По щелчку на этой кнопке окно исчезает, и только после этого продолжается исполнение программы.
В качестве списка вывода можно использовать:
- выражение19;
- текст, заключенный в квадратные скобки;
- одно слово с кавычками перед ним (без пробела);
- любую комбинацию из этих элементов, образованную с помощью функции "предложение":
предложение <список1> <список2> (предложение <список1> <список2>... <списокN>) пред <список1> <список2> (пред <список1> <список2>... <списокN>) sentence <список1> <список2> se <список1> <список2>
При составлении программы может потребоваться, чтобы компьютер спрашивал какие-либо исходные данные у пользователя. Для этого используют команды ввода. В ЛогоМирах есть команда "спроси":
спроси <список> question <список>
Выполняя такую команду, компьютер показывает окно диалога с текстом вопроса (<список> -- он формируется так же, как список вывода), рамкой для ввода ответа и кнопками "OK" и "Отменить". Человек должен набрать ответ, а затем щелкнуть на кнопке "OK". Теперь можно этот ответ как-то использовать. Чаще всего его помещают в переменную с помощью уже известной вам команды "пусть", например,
пусть “x ответ make “x answer
Вот примеры процедуры с использованием команд ввода и вывода:
это знакомство спроси [Привет! Как тебя зовут?] пусть “имя ответ сообщи (пред [Приятно познакомиться,] :имя “!] конец
это уравнение пиши [Решение уравнения вида ax+b=0] спроси [Чему равен коэффициент a?] пусть “a ответ спроси [Чему равен коэффициент b?] пусть “b ответ пусть “x 0 - :b / :a сообщи пред [Корень уравнения x=] :x конец
Контрольные вопросы
- Что такое переменная? Чем она характеризуется?
- Для чего служит операция присваивания? Как записывается в Лого команда присваивания?
- Как записываются в Лого арифметические выражения?
- Как будет выглядеть выражение в компьютерной записи?
- Какому математическому выражению соответствует запись:
(5 + :x) / 3 / (:y - 1) ?
- По каким командам осуществляется обмен сообщениями между компьютером и пользователем?
Примечания
- Единственный в Лого составной тип -- список -- позволяет хранить последовательность произвольного количества значений. Брать и добавлять элементы списка можно только в начале и в конце
- Константа (число) и переменная -- частные случаи выражений
|