Пособие по ИиИТ

Глава 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". По щелчку на этой кнопке окно исчезает, и только после этого продолжается исполнение программы.

В качестве списка вывода можно использовать:

При составлении программы может потребоваться, чтобы компьютер спрашивал какие-либо исходные данные у пользователя. Для этого используют команды ввода. В ЛогоМирах есть команда "спроси":

спроси <список>
question <список>

Выполняя такую команду, компьютер показывает окно диалога с текстом вопроса (<список> -- он формируется так же, как список вывода), рамкой для ввода ответа и кнопками "OK" и "Отменить". Человек должен набрать ответ, а затем щелкнуть на кнопке "OK". Теперь можно этот ответ как-то использовать. Чаще всего его помещают в переменную с помощью уже известной вам команды "пусть", например,

пусть “x ответ
make “x answer

Вот примеры процедуры с использованием команд ввода и вывода:

это знакомство
спроси [Привет! Как тебя зовут?]
пусть “имя ответ
сообщи (пред [Приятно познакомиться,] :имя “!]
конец

это уравнение
пиши [Решение уравнения вида ax+b=0]
спроси [Чему равен коэффициент a?]
пусть “a ответ
спроси [Чему равен коэффициент b?]
пусть “b ответ
пусть “x 0 - :b / :a
сообщи пред [Корень уравнения x=] :x
конец

Контрольные вопросы

  1. Что такое переменная? Чем она характеризуется?
  2. Для чего служит операция присваивания? Как записывается в Лого команда присваивания?
  3. Как записываются в Лого арифметические выражения?
  4. Как будет выглядеть выражение в компьютерной записи?
  5. Какому математическому выражению соответствует запись: (5 + :x) / 3 / (:y - 1)?
  6. По каким командам осуществляется обмен сообщениями между компьютером и пользователем?

Примечания

  1. Единственный в Лого составной тип -- список -- позволяет хранить последовательность произвольного количества значений. Брать и добавлять элементы списка можно только в начале и в конце
  2. Константа (число) и переменная -- частные случаи выражений
Предыдущая Содержание Следующая