Вспомним недавний пример: сколько лет вам исполнится через два года? Проанализируем, как мы получаем ответ на вопрос.
Самым первым делом мы вспоминаем сколько нам лет сейчас. Держа в уме число прибавляем к нему двойку и запоминаем полученный результат. И лишь потом можем результат озвучить, записать, иными словами - выразить. В процессе важно помнить три переменные - возраст, прибавляемую двойку и результат.
Точно так же работает компьютер.
ХРАНЕНИЕ ЗНАЧЕНИЙ |
Если мы ещё сильней задумаемся о том, как же мы вспомнили возраст, то придём к некому недоумению. Мы просто знаем его. Каким-то образом можем извлечь из глубин мозга эти данные с уверенностью, что извлечённое число и есть наш возраст.
Как мозг вспоминает ту или иную информацию до конца не понятно даже учёным. Существует предположение, что в данном случае задействуется ассоциативное мышление и информация каким-то образом «выдавливается» из памяти характеристиками информации. Например, когда мы "вспоминаем" возраст, характеристиками будут "я", "жизнь", "рождение", "жизненный путь", "хочу котлету".
Слова на самом деле ничего не значат. Каждая здесь написанная характеристика уникальная для каждого из нас: «жизнь» у нас разная, «рождение» - разное и, в конце концов, «я» - совершенно разные!
Если попытаемся вдуматься ещё глубже, начав специально вспоминать разные вещи - домашний адрес, номер телефона близкого человека, пароль к Steam, - удивительно, но мы не сможем понять, как это делается! Просто вспомнили - и всё!
Беда в том, что для компьютера подобный процесс просто не возможен. Устройство не может «просто вспомнить» или «просто запомнить». Ему нужно что-то другое.
ПЕРЕМЕННЫЕ |
Переменная предназначена для хранения значений. Именно с помощью переменных компьютер запоминает какие-либо данные, может извлекать их из памяти, производить вычисления, одним словом, - обрабатывать информацию. Всё, что не помещено в переменные для компьютера просто не существует.
Если продолжить аналогию с человеческой памятью, то переменная - это та же ассоциация, которая позволяет извлечь из памяти какое-либо связанное с этой переменной значение.
Технически переменная является ссылкой на ячейку памяти. Точно такой же, как ссылки в интернете. Вы кликаете мышью на подчёркнутую фразу и попадаете на нужный сайт. В программировании вы указываете имя переменной и действие с ней: компьютер работает со значением, "запомненным" в связке с названием. В примере с ссылкой на сайт сама ссылка будет именем переменной, а содержимое требуемого сайта - значением.
|
Если область именована, значит, у неё есть имя. Ваш Кэп.
ИМЯ И ЗНАЧЕНИЕ |
Каждая переменная определяется своим именем. Имя переменной называется идентификатором. Два разных значения должны храниться под двумя разными идентификаторами.
Значение (или содержимое) переменной может задаваться напрямую, или может вычисляться, то есть являться результатом какого-либо допустимого языком программирования выражения.
|
|
Старайтесь давать такие имена, которые отражают суть хранимого значения. Например, хорошее имя переменной health для хранения значения "жизни" в CS:GO, а money - для хранения суммы денег на покупку оружия и брони.
|
Также для разделения слов в имени переменной используют знак подчёркивания: "_". Например, health_of_player. В этом случае каждое новое слово в идентификаторе записывается с маленькой буквы.
Всё вышенаписанное не мешает нам пользоваться короткими именами переменных - a, b, c, x, y. Если ваша программа небольшая - пользуйтесь односимвольными именами, так проще.
ПРИСВАИВАЕМ ЗНАЧЕНИЕ |
Присвоение значения переменной выполняется с помощью оператора =. Слева от знака указывается имя переменной, справа - значение или выражение.
Сам знак называется оператором присваивания.
Пример:
health = 100
money = 16000
После выполнения двух этих строк в оперативной памяти компьютера будут хранится значения 100 и 16000, доступ к которым мы можем получить с помощью идентификаторов health и money.
Прекращение работы программы приведёт к автоматическому удалению значений из памяти. Таким образом память "очищается" и освободившееся место доступно для использования другими программами, или повторно запущенной нашей.
Для присвоения строкового значения строку нужно взять в парные кавычки.
myName = "Виктор"
Произойдёт аналогичное предыдущему действие, только вместо числа в ячейке памяти будет хранится строка с моим именем.
ВЫЧИСЛЯЕМ ЗНАЧЕНИЕ |
Значения в переменных можно с лёгкостью изменять.
a = 3
b = 5
a = a + 5
b = b + a
print(a + b)
Какое число возникнет на экране?
Ответ
Обязательно контролируйте, чтобы используемая в вычислениях переменная уже существовала в программе.
Например, следующая программа выдаст ошибку:
b = 5
a = a + 5
b = b + a
print(a + b)
Дойдя до строки a = a + 5, Python попытается "вспомнить", чему же равна переменная a. А ничему. Мы её не определили. Пытаться заставить компьютер посчитать "ничего" + 5 не очень доброе занятие.
Для избежания подобной ошибки рекомендую каждую переменную инициализировать в начале программы.
|
Программа, вычисляющая площадь прямоугольника:
a = 30
b = 7
s = a * b
print(s)
Здесь инициализация произошла в строках:
a = 30
b = 7
s = a * b
Переменная s в выражении s = a * b не проинициализирована, но это не страшно, потому что программа короткая. Инициализация происходит в момент вычисления a * b.
БЛОКИ ВВОДА, ОБРАБОТКИ, ВЫВОДА |
Вы ещё не заметили, что в предыдущей программе...
a = 30
b = 7
s = a * b
print(s)
...существуют все три блока: ввод, обработка и вывод? Рассмотрим их.
a = 30
b = 7
Этими двумя строками мы вводим значения в программу для дальнейшей обработки. Программа получила числа, поместила их в переменные с идентификаторами a и b. То есть "запомнила" их.
Почему мы используем короткие имена переменных?
Ответ
s = a * b
В этом месте Python пользуется ресурсами процессора и вычисляет нам значение выражения a * b. То есть программа берёт и подставляет значения, находящиеся в памяти компьютера с идентификаторами a и b.
print(s)
Значения обработаны. Результат получен. Результат занесён в переменную s. Теперь мы не просто можем, но даже обязаны показать результат на экране. Если убрать строку print(s), то программа станет бессмысленной. Где-то в недрах компьютерной памяти в переменной с именем s будет находиться число 210 (30 * 7), но мы его так и не увидим.
Мы можем сократить программу до:
a = 30
b = 7
print(a * b)
...или даже до:
print(30 * 7)
...или даже до:
print(210)
Но делать этого не стоит. Почему?
КОГДА НУЖНО ПОЛЬЗОВАТЬСЯ ПЕРЕМЕННЫМИ |
Всегда!
Рассмотрим недостатки предыдущих версий программ:
print(210)
Мало того, - в этой программе один блок: блок вывода. Полноценная программа всегда содержит все три блока.
print(30 * 7)
Те же аргументы, что и в предыдущем пункте, разве что у нас появился блок обработки данных. Но блока ввода как не было, так и нет.
a = 30
b = 7
print(a * b)
Уже интересней. Мы совместили блок обработки с блоком вывода. Ничего зазорного в этом нет и так делать можно.
Только если у нас программа будет продолжена и нам потребуется "знать" размер площади прямоугольника, то всегда придётся его пересчитывать с помощью a * b, лишний раз заставляя процессор считать.
Если мы оставим s = a * b, то в последующем коде при необходимости станем использовать переменную s для доступа к полученному значению.
a = 30
b = 7
s = a * b
print(s)
Практически идеал, но... Что делает наша программа? Вычисляет площадь прямоугольника! Сообщим об этом пользователю:
a = 30
b = 7
s = a * b
print("Площадь прямоугольника со сторонами", a, " и ", b, "равна", s)
Вот всё мне нравится в последней версии, кроме...
Чтобы посчитать площадь другого прямоугольника, мы должны постоянно изменять первую и вторую строки. Представьте, что ваша бабушка, к примеру, захочет вычислить площадь комнаты? Что вы сделаете? Сможете её научить базовому программированию? Было бы куда проще, если бы компьютер спрашивал данные, мы бы набирали их на клавиатуре и получали бы результат. При каждом запуске программы мы бы могли вычислять разные данные! У - универсальность!
Как раз об этом речь пойдёт в следующей главе. Не переключайтесь!
© 2019-2024 Виктор Трофимов
|