Урок 2. Присваивание и переприсваивание. Ввод и вывод данных.
Итак, мы выяснили, каким образом нужно объявить переменную. Пора записать в нее какие-нибудь данные. Запись данных производится с помощью команды присваивания.
Команда присваивания стирает все данные, которые были ранее записаны в переменную и заменяет ее на новые.
Команда присваивания в общем виде выглядит следующим образом:
Определение: Присвоить переменной значение — значит стереть из области памяти переменной все данные и записать туда новые данные
Команда присваивания в общем виде выглядит следующим образом:
ИмяПеременной=ПрисваиваемоеЗначение
Пример: Чтобы присвоить переменной А значение 230, необходимо написать команду: A=230
Задание 1
- Присвоить переменной А значение 17
- Присвоить переменной B значение 128
- Присвоить переменной C значение 117
- Объявить переменную K как принимающую текстовые значения и присвоить ей значение «Vasya»
- Объявить переменную К и присвоить ей значение True
- Присвоить переменной А значение 17 A=17
- Присвоить переменной B значение 128 B=128
- Присвоить переменной C значение 117 C=117
- Объявить переменную K как принимающую текстовые значения и присвоить ей значение «Vasya»
Dim K as String
K=»Vasya»
Примечание: Весь текст всегда берется в кавычки. Слова True и False к тексту не относятся - Объявить переменную К и присвоить ей значение True
Dim K as Boolean
K=True
Переприсваивание
Иногда требуется не заменить значение переменной, удалив предыдущее, а добавить к нему новое. Для этого существует команда переприсваивания.
Команда переприсваивания в общем виде выглядит следующим образом:
ИмяПеременной=ИмяПеременной+НовоеЗначение
Пример: Чтобы увеличить переменную А на 14, нужно написать команду: A=А+14
Задание 2
- Увеличить значение переменной А на 30
- Уменьшить значение переменной А на 128
- Увеличить значение переменной А в 300 раз
- Объявить переменную K как принимающую целочисленные значения, присвоить ей значение 5, возвести значение этой переменной в степень 3
- Увеличить значение переменной А на 30 А=А+30
- Уменьшить значение переменной А на 128 А=А-128
- Увеличить значение переменной А в 300 раз А=А*300
- Объявить переменную K как принимающую целочисленные значения, присвоить ей значение 5, возвести значение этой переменной в степень 3
Dim K as byte
K=5
K=K*K*K
Ввод и вывод данных
Зачастую в переменную нужно записать не четко известное значение, а некоторое значение, которое будет определяться пользователем. Например, при решении квадратного уравнения у нас нет фиксированных значений а, б и с. Эти значения варьируются в зависимости от уравнения. Для того, чтобы пользователь мог записывать в переменные информацию с клавиатуры, существует специальная команда: Input a
При использовании этой команды пользователь увидит окно с мигающим курсором, в которое он сможет ввести нужное ему значение.
Пример: Объявим переменную a как принимающую целочисленные значения, введем ее с клавиатуры и удвоим:
Dim a as long Объявляем
Input a Вводим с клавиатуры
a=a*2 Удваиваем
Также существует команда, позволяющая вывести на экран какое-нибудь сообщение или содержимое какой-нибудь переменной. Это команда Print «Сообщение» или Print ИмяПеременной
Пример1: Выведем на экран сообщение «Hello, world»
Print «Hello,world»
Пример2: Выведем на экран значение переменной А:
Print A
Задание 3
- Вывести на экран сообщение «наши слоны — самые слонистые»
- Вывести на экран значение переменной К
- Объявить переменную K как принимающую целочисленные значения, присвоить ей значение, введенное с клавиатуры, возвести значение этой переменной в степень 3 и вывести результат на экран
- Вывести на экран сообщение «наши слоны — самые слонистые» Print «наши слоны — самые слонистые»
- Вывести на экран значение переменной К Print А
- Объявить переменную K как принимающую целочисленные значения, присвоить ей значение, введенное с клавиатуры, возвести значение этой переменной в степень 3 и вывести результат на экран
Dim K as byte
Input K
K=K*K*K
Print K
Переменные
Переменные настолько важны в программировании, что оно без них немыслимо. Ведь несмотря на то, что программа – это в первую очередь алгоритмы и логика, они не могут обрабатывать пустоту. Алгоритмы работают с данными, которые хранятся в памяти компьютера и к ним надо как-то обращаться, связываться с ними.
Как раз эту задачу решают переменные. Переменная состоит из имени и значения. Значение – это и есть данные. Через имя переменной мы обращаемся к ячейкам памяти, чтобы получить оттуда данные или изменить их.
Данными может быть любая информация, любой объект. Например, число, слово, спрайт, список. В этом уроке мы будем связывать имена переменных только с числами.
В Scratch ярко-оранжевый раздел «Переменные» содержит несколько блоков:
В программе может быть множество переменных. Поэтому есть кнопка «Создать переменную», при нажатии на которую открывается диалоговое окно, куда надо ввести имя переменной и выбрать, будет ли она доступна всем спрайтам или только текущему. Во втором случае созданная переменная не будет видна остальным спрайтам. Ей сможет пользоваться только один спрайт.
После создания переменную можно выбирать в выпадающих списках блоков раздела «Переменные».
Имя переменной может быть любым. Однако желательно, чтобы оно было описательное. Например, если переменная предназначена для хранения количества мячей, ее лучше так и назвать: «количество мячей» или просто «мячи».
На изображении выше мы видим, что сначала в Scratch есть только одна переменная под именем «моя переменная». Если около нее установить флажок, то ее имя и значение отобразятся на сцене.
Если в процессе выполнения программы требуется то показывать на сцене переменную, то скрывать ее, следует использовать блоки «показать переменную …» и «скрыть переменную …».
Команда «задать значение …» записывает в указанную переменную те или иные данные. Например, число 10.
Команда «изменить на …» в случае чисел изменяет значение переменной на указанную величину. То есть, если переменная содержала число 10, а мы дали команду изменить ее на 2, переменная будет хранить значение 12, а не 2.
Если же переменная содержала 10, а мы хотим присвоить ей значение 2, надо воспользоваться командой «задать значение …».
Рассмотрим как работать с переменными на примере. Пусть в нашем проекте по сцене ходят два спрайта – кот и краб. Ходить они будут в разных направлениях, но с одинаковой скоростью.
Мы пока не знаем точно, какую общую для спрайтов скорость хотим задать. Нам надо протестировать программу при разных скоростях. Если мы будем просто вписывать число в команду «идти … шагов», придется потом изменять ее два раза, у каждого спрайта. Это не совсем удобно, особенно если бы спрайтов было много. Для кого-то можно забыть изменить величину.
Использование переменной решает эту проблему. Достаточно задать ей значение в одном месте, а потом вставить имя переменной во все места, где она используется.
Создадим переменную под именем «скорость», доступную для всех спрайтов. Для этого надо нажать кнопку «Создать переменную» или переименовать существующую переменную, кликнув по ней правой кнопкой мыши и выбрав «Переименовать переменную».
Задать переменной значение можно у любого спрайта, второму значение будет доступно автоматически. Скрипты кота:
Теперь если мы захотим поменять количество шагов за один оборот цикла, достаточно сделать это в одном месте. Там, где задается значение переменной.
Когда выполняются команды «идти шагов», то на место переменной «скорость» на самом деле подставляется ее значение. Например, число 10. В результате получается команда «идти 10 шагов», хотя мы этого не видим.
Более того, с помощью арифметических операций можно видоизменить нашу программу. Пусть краб ходит в два раза медленнее кота. То есть, если у кота скорость 10, у краба она должна быть 5. Если же у кота скорость 8, у краба она должна стать 4.
Для этого воспользуемся блоком с делением из зеленого раздела «Операции». Слева от знака деления поставим переменную «скорость», а справа – число 2.
Получается, что хотя скорость одного спрайта отличается от другого, скорости обоих взаимосвязаны через общую переменную.
Усложним нашу программу. Пусть значение переменной «скорость» задает пользователь. Если он нажмет на клавиатуре число 1, то скорость будет иметь значение 5, а если нажмет на клавиатуре число 2, скорость будет иметь значение 10. Если же человек нажмет 0, скорость должна установиться также в 0, то есть спрайты попросту остановятся.
Тут нам потребуются условные операторы, а также цикл «повторять всегда», чтобы программа всегда ожидала ввода с клавиатуры.
Этот скрипт можно добавить любому спрайту.
Таким образом значение переменной может меняться в процессе выполнения программы в зависимости от тех или иных условий.
Обратите внимание на форму блока, который содержит только имя переменной. Это прямоугольник со скругленными углами. Блоки подобной формы есть во многих разделах вкладки «Код». Например, в секции «Движение» это блоки «положение x», «положение y», «направление»:
Подобные блоки можно назвать встроенными в Scratch переменными. В них записываются значения, которые извлекаются из каких-нибудь объектов. Так в переменную «положение x» записывается значение текущей координаты x спрайта. Мы можем извлекать это значение и использовать его в программе.
Допустим, наш кот, находясь на левой половине сцены, будет скручиваться в одну сторону, а когда находится на правой половине – в другую.
Здесь мы используем переменную «положение x», чтобы проверить, находится кот справа или слева. Вспомним, что 0 – это середина холста. Налево идут значения меньше нуля, направо – больше.
Составьте программу, в которой спрайт оказывается в том месте сцены, над которым была нажата клавиша мышки. При этом на сцене должны отображаться координаты клика (вместо клика также может быть зажатие клавиши мыши).
X Скрыть Наверх
Программирование в Scratch. Курс
Что записывает команда задать переменной значение
оператор присваивания ( пробельные символы до и после оператора — недопустимы )
Обратите внимание: символ = может использоваться как в качестве оператора присваивания, так и в качестве оператора сравнения, конкретная интерпретация зависит от контекста применения.
Пример 4-2. Простое присваивание
#!/bin/bash # Явные переменные echo # Когда перед именем переменной не употребляется символ '$'? # В операциях присваивания. # Присваивание a=879 echo "Значение переменной \"a\" -- $a." # Присваивание с помощью ключевого слова 'let' let a=16+5 echo "Значение переменной \"a\" теперь стало равным: $a." echo # В заголовке цикла 'for' (своего рода неявное присваивание) echo -n "Значения переменной \"a\" в цикле: " for a in 7 8 9 11 do echo -n "$a " done echo echo # При использовании инструкции 'read' (тоже одна из разновидностей присваивания) echo -n "Введите значение переменной \"a\" " read a echo "Значение переменной \"a\" теперь стало равным: $a." echo exit 0
Пример 4-3. Присваивание значений переменным простое и замаскированное
#!/bin/bash a=23 # Простейший случай echo $a b=$a echo $b # Теперь немного более сложный вариант (подстановка команд). a=`echo Hello!` # В переменную 'a' попадает результат работы команды 'echo' echo $a # Обратите внимание на восклицательный знак (!) в подстанавливаемой команде #+ этот вариант не будет работать при наборе в командной строке, #+ поскольку здесь используется механизм "истории команд" BASH # Однако, в сценариях, механизм истории команд запрещен. a=`ls -l` # В переменную 'a' записывается результат работы команды 'ls -l' echo $a # Кавычки отсутствуют, удаляются лишние пробелы и пустые строки. echo echo "$a" # Переменная в кавычках, все пробелы и пустые строки сохраняются. # (См. главу "Кавычки.") exit 0
# Взято из /etc/rc.d/rc.local R=$(cat /etc/redhat-release) arch=$(uname -m)
Назад | К началу | Вперед |
Переменные и параметры. Введение. | Наверх | Переменные Bash не имеют типа |
3. Команда присваивания
Знак «\(:=\)» читается как присвоить и заменяет предыдущее значение переменной, стоящей в левой части на новое, которое находится в правой части.
Знаки «\(=\)» и «\(:=\)» — это разные знаки. Знак равно обозначает равенство двух величин. А знак «\(:=\)» присваивает новое значение переменной.
Если справа от знака присваивания стоит не конкретное значение, а целое выражение, то сначала вычисляется его значение, а потом оно присваивается переменной, находящейся слева от знака.
\(A := 10\);
\(B := (A + 4)/2\).
Ответ: \(B := 7\).
Свойства присваивания:
1. если переменной не присвоено значение, она является неопределённой;
2. присвоенное значение переменной сохраняется до тех пор, пока не будет выполнятся новая операция присваивания с этой же переменной;
3. при присваивании переменной очередного значения, предыдущее значение из памяти стирается.
Даны две коробки с бусинками. В одной коробке только красные бусинки, а во второй только синие, при этом перепутаны цвета коробочек. Красные бусины лежат в синей коробке, а синие в красной.
Как можно поменять местами бусинки? Напишите алгоритм.
Очевидно, для того чтобы пересыпать бусинки из одной коробки в другую, понадобится какая-то третья коробочка.
Введем обозначения.
\(A := krasnye\)
\(B := sinie\)
\(C := net\)
алг коробочки
лит\(A\), \(B\), \(C\)
нач
\(C := krasnye\)
\(A := sinie\)
\(B := krasnye\)
кон
Если бы мы не использовали третью переменную, а решили сразу поменять местами значение переменных, получили бы следующее:
\(B := krasnye\)
А значение переменное \(B\) теперь \(krasnye\), значение \(sinie\) из памяти компьютера уже стёрлось.