Программирование Python по моим конспектам Лекция 1 ч.2
Ну что, привет тем, кто на борту. А тем кто за бортом, добро пожаловать на борт нашего дырявого баркаса.
Я все так же продолжаю переводить с немецкого на русский лекции по питону. И сразу оговорюсь, между этими лекциями я буду вставлять несколько уроков по теоретической информатике, дискретной математике и основных законов булевой алгебры и теории множеств. Так как считаю, что учить программирования без понятия мира информатики- глуповато. Поэтому даю сразу ответы, на возникающие вопросы
-Нет "хелоуворд" будет позже.
-Мне пофиг, что теоретическая информатика вам не нужна, если бы была не нужна- ее бы тогда из Вузов исключили.
Сейчас мы работаем над тем, чтобы понять что такое программирование, и учим основные термины языка. Без этого- никак.
В прошлый раз мы делал вид, что питон - это интересно. Сегодня мы будем делать вид, что умеем включить компьютер и устанавливать на него непосредственно сам питон, и немного познакомимся с работой интерпретатора. И еще мы начнем понимать то, как работает комп. Надеюсь, что я тоже пойму..очень надеюсь..
В прошлый раз мы пытались понять что такое объекты в реальном мире на примере пересылки букета цветов из Москвы в Киев. А сегодня мы попытаемся понять что такое класс.
Повторюсь, что эту темы мы еще долго будем мусолить. Однако некоторые темы требуют "переваривания" и обдумывания в течении нескольких дней.
Итак..вспоминаем наши объекты из прошлой лекции.
Маша: 28 лет
безработная миллионерша
Джамал: 63 года
сотрудник фирмы по продаже цветов в Москве
Тарас: 33 года
сотрудник фирмы по продаже цветов в Киеве
Паша: 25 лет
не единожды судимый придурок, подрабатывает доставкой цветов в Киеве
Светлана: 20 лет
светская львица
А теперь мы разделим наши объекты по определенным свойствам.
Джамал и Тарас- они оба торговцы цветами. Значит они оба содержат одинаковые методы и одинаковые атрибуты (город к примеру). Однако они содержат разные данные. Например, хотя они оба имеют атрибут "город", но в случае Джамала это Москва, а в случае Тараса это Киев. В мире информатики говорят- Джамал и Тарас являются экземплярами класса "торговцы цветами". Таким образом класс- это фундамент объекта. Дальше углубляться не станем пока что (яд нужно принимать мелкими порциями), но начальное понятие объекта и класса нам скоро пригодится.
На этом хватит, и мы оставим это для дальнейшего размышления.
Ну теперь мы приступаем к тому, с чего обычно и начинаются уроки по питону. Непосредственной установке питон на ваши машины. Идем сюда
https://www.python.org/downloads/
качаем питон версии 3. Устанавливаем на машину.
(для Unix систем питон уже установлен, для проверки вводим в консоли
$ python -V и получаем ответ "Python 3.5.2 " (версия может быть другой), если получаем ошибку, устанавливаем питон (в интернете можно найти как это сделать)
Итак, мы установили какую то хрень, которая называется питон к себе на машину, и логично задаемся вопросом..а нахер это нам надо.
Вопрос понял. Отвечаю
Официальный дистрибутив питона (того, что вы скачали и установили) содержит в себе
-Питон интерпретатор. На первой лекции говорили о нем
-IDLE (среда разработки). Проще говоря- блокнот, в котором мы говнокодить будем.
-Модули, которые могут использоваться интерпретатором (пока просто понимаем, киваем, но не заморачиваемся)
-Документация
Питон в интерактивном режиме.
Интерпретатор питона может быть вызван в интерактивном режиме, таким образом, что можно вводить одну строку нашей программы и тут же видеть реакцию интерпретатора на введенную команду (или строку программы).
Выглядит окно интерпретатора в консоли так:
а вот последняя строка, а именно символы ">>>"приглашает нас ввести нашу первую команду. После того как мы ее введем, у нас есть три варианта развития событий.
1. Мы вводим обычное арифметическое выражение 2+2*6, интерпретатор обрабатывает его и дает ответ 14. Важно знать, что правила математики и арифметики играют важную роль. Если вы заметили из примера выше. Сначала умножаем 2 на шесть, а к результату добавляем 2.
2 мы вводим ошибочное выражение, противоречащее правилам арфиметики 2)+6 и получаем ответ с ошибкой. То есть интерпретатор обрабатывая строку движется посимвольный с лева направо, и как только найдет не понятную ему хрень (в данном случае это ")", он начинает орать)
И третий вариант. Мы даем команду, на которую не бывает внешней реакции. Например если мы присвоим переменной a значение 2. Ну присвоили себе и присвоили. Если о шибки нет, значит все ок. И мы можем вводить следующую строку.
В этом моменте многие авторы книг по питону пишут- "я вообще забыл что такое калькулятор, и использую для этого только интерпретатор питона"..ну хз..я не настолько хардкорен. Но если вам нравится- можете юзать.
Таким образом мы можем писать коротенькие программки прямо в консоли, а если у вас стальные яйца, то можно и большие програаамищи.
тоже самое можно делать и в оболочке python-shell в IDLE (среде разработки) которая входит в состав питона, который вы уже установили.
Выглядит python-shell IDLE так. Те же яйца, только на белом фоне. Вы можете так же вводить арифметические задачки, из примеров выше, и получать аналогичный результат.
Однако, есть еще и горячие клавиши в python-shell, а именно
Alt+p- показывает предыдущую команду (шаг назад)
Alt+N - показывает следующую команду (шаг вперед)
На следующей лекции мы перейдем вплотную к изучению объектов, имен, синтаксиса и тд. И только после этого мы перейдем непосредственно к программированию.
Теперь курс теоретической информатики
Итак..попытаемся понять как работает компьютер, точнее основополагающую успеха его работы.
Представляем себе что вы шпион и для связи с агентом вам необходимо в вашей квартире включить свет в окне. Если агент видит свет в окне- он идет на связь. Если нет- соответственно нет.
то
00 -свет выключен, на связь не выходит никто
01 свет включен только в правой комнате. Значит агенту Васе надлежит явиться с докладом
10 свет включен только в левой комнате. Значит аненту Пете нужно прийти и доложить
11 свет горит везде. Приходит агент Джамал (чувак из прошлой лекции)
А теперь вопрос- нахрена я это все рассказываю. Эти самые нолики и единички называться битами. И с помощью битов мы можем закодировать любую информацию. Вот смотрите- мы сейчас с помощью двух битов наладили работы целой конспиративной квартиры. Внутри компьютера все работает аналогично- только количество битов исчисляется тысячами, миллионами и тд. И каждый из этих битов может в определенном этапе времени принимать только одно значение. Создавая тем самым уникальные цепочки битов.
Но как бы заставить это все работать. Как бы заставить машину с помощью всех этих еденичек и ноликов изобразить, скажем число "434"..
Поэтому собрались мудрецы и стали думу думать..думали думали..и выдумали вот что-
берем мы наше число 434. Делим его на 2, а остаток от деления записываем. Получили мы 217..супер, а остаток 2. Делим мы теперь 217 на 2, и выписываем остаток. И так до упора (как на украденной в интернете картинке ниже). Добравшись до упора. мы видем, что наш остаток состоит из единичек и ноликов, который нам просто напросто нужно переписатть наоборот. (или снизу вверх) - это и будет число 434 в двоичной системе счисления. И теперь компьютеру нужно будет всего лишь взять 9 окон(бит) и правильно включить-выключить в них свет.
Попробуйте потренироваться с другими положительными числами. А еще подумайте, сколько бит нужно, чтобы отобразить число 5 или 10 или 300
А на следующем уроке мы узнаем, как отображать числа, которые меньше нуля в бинарном коде, и как расшифровывать бинарный код обратно в число, как и то, что бывают не только двоичные системы счисления, но и много других.
П.С по вашим пожеланиям- пока что делать видео не буду. А когда и стану, то курс лекций будет в ворд файле вместе с видео
Время увлекательных тупых вопросов) Вы пишете "интерпретатор обрабатывая строку движется посимвольно слева направо", а посимвольно двигаясь в примере 2+2*6, он не начинает делать сложение раньше, чем умножение, чтоб одуматься позже и пересчитать? Ну то есть понятно, что там заложены математические принципы и в любом случае программа не накосячит и подсчитает правильно, но как она это сделает? или он все-таки анализирует всё выражение прежде, чем начать его выполнять, и выставляет порядок действий?
Извините, не вычисляйте по айпи :(
Раз уж тут про установку, есть еще софтина JetBrains PyCharm Community Edition, это уже не интерпретатор, а компилятятор. Да и чем-то на Visual Studio смахивает.
З.Ы. это не реклама, тапками не бейте, просто инструмент, который юзаю я для изучения питона.
У вас неточность (описка) в тексте при описании примера с числом 434: "...число 434. Делим его на 2, а остаток от деления записываем. Получили мы 217..супер, а остаток 2." Должно быть написано "остаток 0".
Отличный урок! ТС спасибо! Так держать :) И поржал, и знания получил.
З.Ы. Под какую разрядность лучше качать? У меня обе поддерживаются.
З.Ы.Ы. Там ещё есть "Gzipped source tarball" и "XZ compressed source tarball" - оно нам надо? Или это плюшки/дополнения/неведомая хрень какая-то (не обязательная/нах ненужная)?