LXF168Raspberry Pi. Программирование:
Olkol (обсуждение | вклад) (→Raspberry Pi Программируйте свой Pi на Scratch и Python) |
Olkol (обсуждение | вклад) (→Решение проблем) |
||
(не показаны 6 промежуточных версий 1 участника) | |||
Строка 11: | Строка 11: | ||
Мы напишем простую программу для рисования линий на экране с помощью клавиш управления курсором. Первое, что нам нужно – создать код, который позволит перемещать по экрану картинку с котом. Мы воспользуемся тремя отдельными блоками, каждый из которых будет запускаться по нажатию клавиши. | Мы напишем простую программу для рисования линий на экране с помощью клавиш управления курсором. Первое, что нам нужно – создать код, который позволит перемещать по экрану картинку с котом. Мы воспользуемся тремя отдельными блоками, каждый из которых будет запускаться по нажатию клавиши. | ||
− | [[Файл: |left | | + | [[Файл:LXF168.tut_rpi.scratch_opt.jpeg |left |400px |thumb|> Рис. 1. Блоки окрашены в разные цвета — чтобы было понятнее, из какого меню их выбрать.]] |
Нажмите Control [Управление], затем перетащите в скрипты блок When Space Key Pressed [При нажатии клавиши пробела]. Так создается скрипт, который запускается по нажатию пользователем этой клавиши. В выпадающем списке измените Space [Пробел] на Right Arrow [Стрелка вправо] и перетащите под него Move 10 steps [Переместить на 10 шагов]. Тогда при нажатии стрелки вправо кот будет перемещаться. Затем создайте похожие скрипты, с которыми кот будет сворачивать вниз при нажатии стрелки вниз и вверх при нажатии стрелки вверх. На рис. 1 показано, как это должно выглядеть. Теперь мы можем перемещаться во всех направлениях, и осталось добавить блок, отвечающий за прорисовку линий. Мы не будем рисовать постоянно, поэтому воспользуемся действиями Scratch pen up [поднять карандаш] и pen down [опустить карандаш]. Когда карандаш опущен, кот оставляет за собой след, когда поднят – не оставляет. | Нажмите Control [Управление], затем перетащите в скрипты блок When Space Key Pressed [При нажатии клавиши пробела]. Так создается скрипт, который запускается по нажатию пользователем этой клавиши. В выпадающем списке измените Space [Пробел] на Right Arrow [Стрелка вправо] и перетащите под него Move 10 steps [Переместить на 10 шагов]. Тогда при нажатии стрелки вправо кот будет перемещаться. Затем создайте похожие скрипты, с которыми кот будет сворачивать вниз при нажатии стрелки вниз и вверх при нажатии стрелки вверх. На рис. 1 показано, как это должно выглядеть. Теперь мы можем перемещаться во всех направлениях, и осталось добавить блок, отвечающий за прорисовку линий. Мы не будем рисовать постоянно, поэтому воспользуемся действиями Scratch pen up [поднять карандаш] и pen down [опустить карандаш]. Когда карандаш опущен, кот оставляет за собой след, когда поднят – не оставляет. | ||
Строка 18: | Строка 18: | ||
Чтобы переводить карандаш из одного состояния в другое, нам нужен код, который бы помнил состояние карандаша. В программах для этого используются переменные. Переменная – это участок памяти, куда можно записать и откуда можно считать данные. | Чтобы переводить карандаш из одного состояния в другое, нам нужен код, который бы помнил состояние карандаша. В программах для этого используются переменные. Переменная – это участок памяти, куда можно записать и откуда можно считать данные. | ||
[[Файл:LXF168.tut_rpi.scratc_opt2.jpeg | |thumb|400px|> Рис. 3. Блоки If…Then позволяют вашей программе принимать решение, и это краеугольный камень программирования.]] | [[Файл:LXF168.tut_rpi.scratc_opt2.jpeg | |thumb|400px|> Рис. 3. Блоки If…Then позволяют вашей программе принимать решение, и это краеугольный камень программирования.]] | ||
− | [[Файл: | + | [[Файл: LXF168.tut_rpi.scratc_opt3.jpeg ||thumb|400px|> Рис. 4. Точно так же можно добавить фигуры в набор инструментов для рисования.]] |
− | + | ||
Прежде чем воспользоваться переменной, надо велеть компьютеру выделить под нее память. Мы также дадим ей имя, чтобы обращаться к ней в командах. Зайдите в Variables [Переменные], нажмите Make a Variable [Создать переменную] и укажите ее имя. После этого вы увидите набор команд для изменения или использования этой переменной. Теперь мы можем хранить данные, и нужно велеть компьютеру менять свое поведение в зависимости от значения переменной. Это делает блок If…Else [Если...То]. Он проверяет, истинно ли выражение. Если да, выполняется первый блок кода, если нет – второй. В нашей программе мы проверяем переменную pen. Если она равна 0, мы опускаем карандаш и устанавливаем ее в 1, а иначе поднимаем карандаш и устанавливаем ее в 0. Так можно переключаться между двумя состояниями с помощью пробела. Взгляните на рис. 3 – вот как должна выглядеть программа. Обратите внимание на оператор = в выражении if. Оно означает, что первый блок кода выполняется, только если переменная pen содержит (equals) 0, в противном случае (else) выполняется второй блок. | Прежде чем воспользоваться переменной, надо велеть компьютеру выделить под нее память. Мы также дадим ей имя, чтобы обращаться к ней в командах. Зайдите в Variables [Переменные], нажмите Make a Variable [Создать переменную] и укажите ее имя. После этого вы увидите набор команд для изменения или использования этой переменной. Теперь мы можем хранить данные, и нужно велеть компьютеру менять свое поведение в зависимости от значения переменной. Это делает блок If…Else [Если...То]. Он проверяет, истинно ли выражение. Если да, выполняется первый блок кода, если нет – второй. В нашей программе мы проверяем переменную pen. Если она равна 0, мы опускаем карандаш и устанавливаем ее в 1, а иначе поднимаем карандаш и устанавливаем ее в 0. Так можно переключаться между двумя состояниями с помощью пробела. Взгляните на рис. 3 – вот как должна выглядеть программа. Обратите внимание на оператор = в выражении if. Оно означает, что первый блок кода выполняется, только если переменная pen содержит (equals) 0, в противном случае (else) выполняется второй блок. | ||
Строка 45: | Строка 44: | ||
» Day Dream Scratch – еще и прекрасный инструмент для создания анимации. http://scratch.mit.edu/projects/cremeglace/40150 | » Day Dream Scratch – еще и прекрасный инструмент для создания анимации. http://scratch.mit.edu/projects/cremeglace/40150 | ||
− | + | ==Python== | |
+ | {{Врезка|right|Заголовок= Модули расширения|Ширина=40%|Содержание= | ||
+ | Одна из лучших особенностей Python – количество модулей расширения для него. Существуют способы добавить дополнительную функциональность, которой вы можете воспользоваться. Хотя, возможно, не все они подходят новичкам, все равно стоит посмотреть, что вы сможете сделать, когда лучше познакомитесь с языком. Вот наши пять главных модулей Python. | ||
+ | |||
+ | » pyGames Игры – это круто, программирование – тоже круто, а программировать игры, видимо, круче всего. Этот модуль поможет создать собственные игры для убивания времени. | ||
+ | |||
+ | » pyGTK Рано или поздно вы захотите уйти из командной строки и создавать графические программы. Этот модуль поможет создавать их для GTK. | ||
+ | |||
+ | » pyQT GTK – это прекрасно, если вы пользуетесь Gnome, но пользователям KDE больше понравится этот модуль. | ||
+ | |||
+ | » RPi.GPIO В Raspberry Pi есть набор входов и выходов общего назначения [General Purpose Input and Output – GPIO] для связи с внешним миром. Этот модуль поможет ими пользоваться. | ||
+ | |||
+ | » NumPy Для умников, которые любят математику! С ним легко манипулировать цифрами. }} | ||
+ | Scratch отлично подходит для изучения основ программирования, но рано или поздно вы упретесь в его ограничения. Теперь мы рассмотрим популярный язык общего назначения Python. Первое, что о нем нужно знать – в отличие от Scratch, он полностью текстовый. Не то что на нем нельзя создавать графические программы – просто код программы представляет собой текст, а не перетаскиваемые блоки. | ||
+ | |||
+ | Поэтому, чтобы написать программу, откройте текстовый редактор. Подойдет любой; по умолчанию в Raspberry Pi есть Leafpad, им мы и воспользуемся; но если вы продолжите программировать, стоит поэкспериментировать с другими и найти самый подходящий для себя (у новичков в Python довольно популярен Geany). Обратите внимание, что текстовые процессоры, такие как LibreOffice Write или Abiword, не подойдут: они нарушат форматирование. | ||
+ | |||
+ | Создайте новый файл в Leafpad и добавьте в первую строку следующее: | ||
+ | |||
+ | #!/usr/bin/python | ||
+ | |||
+ | Эта строка, несколько загадочно называемая «шапкой», велит системе запускать наш файл с помощью программы python в каталоге /usr/bin/. Эту строку нужно указывать в начале всех своих программ. | ||
+ | |||
+ | Теперь перейдем к внутренностям программирования. У программистов есть давняя традиция первой писать программу, выводящую на экран слова “Hello World!”, и мы не будем изменять ей. Оставьте вторую строку пустой (это не обязательно, но так код лучше читается), а в третьей напишите: | ||
+ | |||
+ | print “Hello World!” | ||
+ | |||
+ | и сохраните свой труд в файле hello.py. Для запуска программы откройте терминал и перейдите в каталог, где вы сохранили файл. Выполните команду chmod a+x hello.py, чтобы сказать системе, что файл исполняемый, и введите ./hello.py для его запуска. На экране должно появиться Hello World! | ||
+ | |||
+ | Программа показывает, что система работает правильно, но проку от нее немного. Как и в проекте Scratch, добавим немного пользовательского ввода. Однако с Python нужно добавить переменную для сохранения того, что ввел пользователь. Удалите строку Hello World (оставив только «шапку») и добавьте строку: | ||
+ | |||
+ | name = raw_input(‘What is your name [Как вас зовут]? ‘) | ||
+ | |||
+ | В этой строке создается переменная name, отображается сообщение Как вас зовут?, и введенные пользователем данные сохраняются в name. Сообщение мы заключили в обратные кавычки, чтобы компьютер знал, что это одна строка текста. Затем мы можем воспользоваться этой переменной, чтобы вывести чуть более персональное сообщение оператором print: | ||
+ | |||
+ | print ‘Hello’, name | ||
+ | |||
+ | Так как компьютер выполняет команды по очереди, эта команда должна быть ниже предыдущей. Если расположить их в обратном порядке, программа выдаст ошибку, так как мы пользуемся переменной до того, как она создана. Теперь сохраните файл и наберите ./hello.py в командной строке для запуска программы. | ||
+ | |||
+ | ===Решения, решения=== | ||
+ | |||
+ | Наша программа стала чуть более функциональной, но все равно довольно нежизненна. Она лишь выполняет те же два действия и завершается. Чтобы она стала полезна, нужно добавить действие с принятием решения, когда компьютер смотрит на то, что ввел пользователь, и в зависимости от этого выполняет разные действия. | ||
+ | |||
+ | Помните блок if в Scratch? То же самое есть и здесь. Базовая структура блока такова: | ||
+ | |||
+ | if <expression> : | ||
+ | |||
+ | <indent> code block | ||
+ | |||
+ | Здесь <expression> нужно заменить выражением, которое может быть истинным или ложным. Например, 1 > 2, или, что полезнее, num > 2, где num – переменная. В нашем случае мы проверим, что в качестве имени введено конкретное значение: | ||
+ | |||
+ | if name == ‘Бен’ : | ||
+ | |||
+ | Почему == ? Ну, компьютеры (да и программисты) не любят неопределенности. У каждого символа или слова должно быть только одно значение, иначе можно запутаться. = используется для присвоения переменной значения, поэтому для проверки на равенство нужно что-то еще. Опять же, «Бен» заключено в обратные кавычки, чтобы компьютер знал: это текст. Двоеточие означает, что выражение закончилось и сейчас мы скажем компьютеру, что делать. | ||
+ | |||
+ | Команде if может понадобиться выполнять больше одной строки кода – значит, нужен способ объединять код в блоки. В Python для этого используются отступы (Python в этом отношении более или менее уникален, и это кость в горле для ненавистников Python). В качестве отступов можно использовать пробелы или табуляцию, но в одном проекте важно пользоваться чем-то одним, потому что значение имеет не размер, а число отступов. Лично я использую отступ на два пробела, потому что меня учили так, и я ничего не хочу менять. | ||
+ | |||
+ | Итак, что должен сделать компьютер, если name == ‘Бен’? Ну, разумеется, мы должны поприветствовать Бена соответственно: | ||
+ | |||
+ | if name == ‘Бен’ : | ||
+ | |||
+ | print “Бен, you’re awesome [ну ты крутой]” | ||
+ | |||
+ | Обратите внимание на два пробела в начале второй строки, а также на двойные кавычки. Двойные кавычки нужны потому, что внутри фразы есть апостроф. Другим людям мы тоже грубить не будем, поэтому добавим блок else, выполняемый во всех случаях, когда условие в if ложно: | ||
+ | |||
+ | else : | ||
+ | |||
+ | print ‘Hello’, name | ||
+ | |||
+ | Последняя возможность, которую мы добавим в программу – цикл. Он очень похож на цикл из программы на Scratch, только что выполняется не 24 раза, а до тех пор, пока мы не велим ему остановиться. Для этого воспользуемся циклом while и следующим синтаксисом: | ||
+ | {{Врезка|right|Заголовок=Интерактивный режим |Ширина=20%|Содержание= | ||
+ | |||
+ | Пока что скрипты на Python мы запускали, но это не единственный способ. С ним также можно работать в интерактивном режиме: вводим строку, Python ее обрабатывает, вводим следующую, и т. д. Это отличный способ быстро что-нибудь опробовать. Для входа в оболочку Python просто наберите python в командной строке. Закончив, наберите exit() для возврата в обычную оболочку. | ||
+ | |||
+ | В интерактивном режиме нам было особенно удобно экспериментировать с новыми библиотеками и запускать отдельные команды, как в Bash. | ||
+ | |||
+ | После выхода из интерактивного интерпретатора вся ваша работа исчезнет, поэтому программы лучше писать в текстовом редакторе, как мы и делали на нашем уроке. }} | ||
+ | while <expression> : | ||
+ | |||
+ | <indent>code block | ||
+ | |||
+ | Мы можем остановить программу, введя имя quit. Поэтому наш цикл while будет таким: | ||
+ | |||
+ | while name != ‘quit’ : | ||
+ | |||
+ | ===Решение проблем=== | ||
+ | |||
+ | Не спрашивайте меня – почему, но восклицательные знаки в программировании часто означают отрицание (not). Тем не менее, небольшая проблема все равно остается. Если поместить цикл перед присвоением name = raw_input…, появится сообщение об ошибке: дескать, неизвестно, что это за переменная name. А если поместить цикл после присвоения, имя будет запрошено всего однажды, а далее цикл продолжит бесконечно выплевывать приветствия. | ||
+ | |||
+ | Чтобы решить эту проблему, можно просто присвоить name пустую строку перед циклом while. Тогда сообщение об ошибке исчезнет, и цикл начнет работать. Теперь наша маленькая программа выглядит так: | ||
+ | |||
+ | #!/usr/bin/python | ||
+ | |||
+ | name = ‘’ | ||
+ | |||
+ | while name != ‘quit’ : | ||
+ | |||
+ | name = raw_input(‘Как вас зовут? ‘) | ||
+ | |||
+ | If name == ‘Бен’ : | ||
+ | |||
+ | print “Бен, ну ты крутой” | ||
+ | |||
+ | else : | ||
+ | |||
+ | print ‘Hello’, name | ||
+ | |||
+ | Обратите внимание: перед каждой строкой print уже четыре пробела – потому, что у каждой строки два отступа: один для цикла while и один для оператора if. Можете сохранить файл под именем hello.py, как и прежде, и запустить его командой ./hello.py. | ||
+ | |||
+ | {{Врезка|right|Заголовок= Куда же теперь податься?|Ширина=98%|Содержание= | ||
+ | Если вы следовали за мной и вам понравилось писать программы, вы, наверное, задумались, что делать дальше. Что ж, и Scratch, и Python отлично подходят для начала, и прежде всего нужно выбрать язык себе по душе. Если это Scratch, лучше всего начать с http://scratch.mit.edu. Здесь вы найдете для изучения множество проектов других пользователей и видеоруководства по среде разработки. | ||
+ | Python гораздо популярнее в реальном мире, и вы сможете найти массу ресурсов по нему. На официальном сайте (www.python.org) есть руководство, которое хорошо объясняет язык, но слегка суховато. | ||
+ | Есть несколько отличных книг по этой теме (например, “Dive into Python [Ныряем в Python]”, которая прилагается на DVD этого номера журнала и которую вы сможете прочитать бесплатно на www.diveintopython.net). | ||
− | + | Подписчики бумажной версии Linux Format найдут все наши предыдущие руководства по Python в архивах на www.linuxformat.com и в нашей серии «Концепции программирования», где мы рассказываем о главных идеях, лежащих в основе программирования. }} | |
Текущая версия на 17:34, 10 ноября 2018
|
|
|
Raspberry Pi: Программы
Содержание |
[править] Raspberry Pi Программируйте свой Pi на Scratch и Python
Бен Эверард помогает освоить два стандартных языка, входящих в Raspbian, и написать пару простых программ.
На этом уроке мы вернемся к изначальной идее Raspberry Pi: обучению пользователей новым технологиям. На следующих четырех страницах мы кратко пройдемся по двум языкам программирования, входящим в Raspbian, рекомендуемый дистрибутив для Pi. Если у вас нет Pi, вы все равно можете следовать за нами – просто установите эти языки через менеджер пакетов. Если вы не программировали раньше, не переживайте: мы начнем буквально с нуля [англ. from scratch, – прим. пер.].
Scratch – прекрасный язык для изучения основ программирования: с ним не нужно беспокоиться о совершенстве кода. Так как программа пишется путем перетаскивания блоков в скрипт, не придется запоминать ни одной команды.
Мы напишем простую программу для рисования линий на экране с помощью клавиш управления курсором. Первое, что нам нужно – создать код, который позволит перемещать по экрану картинку с котом. Мы воспользуемся тремя отдельными блоками, каждый из которых будет запускаться по нажатию клавиши.
Нажмите Control [Управление], затем перетащите в скрипты блок When Space Key Pressed [При нажатии клавиши пробела]. Так создается скрипт, который запускается по нажатию пользователем этой клавиши. В выпадающем списке измените Space [Пробел] на Right Arrow [Стрелка вправо] и перетащите под него Move 10 steps [Переместить на 10 шагов]. Тогда при нажатии стрелки вправо кот будет перемещаться. Затем создайте похожие скрипты, с которыми кот будет сворачивать вниз при нажатии стрелки вниз и вверх при нажатии стрелки вверх. На рис. 1 показано, как это должно выглядеть. Теперь мы можем перемещаться во всех направлениях, и осталось добавить блок, отвечающий за прорисовку линий. Мы не будем рисовать постоянно, поэтому воспользуемся действиями Scratch pen up [поднять карандаш] и pen down [опустить карандаш]. Когда карандаш опущен, кот оставляет за собой след, когда поднят – не оставляет.
[править] Применим переменные
Чтобы переводить карандаш из одного состояния в другое, нам нужен код, который бы помнил состояние карандаша. В программах для этого используются переменные. Переменная – это участок памяти, куда можно записать и откуда можно считать данные.
Прежде чем воспользоваться переменной, надо велеть компьютеру выделить под нее память. Мы также дадим ей имя, чтобы обращаться к ней в командах. Зайдите в Variables [Переменные], нажмите Make a Variable [Создать переменную] и укажите ее имя. После этого вы увидите набор команд для изменения или использования этой переменной. Теперь мы можем хранить данные, и нужно велеть компьютеру менять свое поведение в зависимости от значения переменной. Это делает блок If…Else [Если...То]. Он проверяет, истинно ли выражение. Если да, выполняется первый блок кода, если нет – второй. В нашей программе мы проверяем переменную pen. Если она равна 0, мы опускаем карандаш и устанавливаем ее в 1, а иначе поднимаем карандаш и устанавливаем ее в 0. Так можно переключаться между двумя состояниями с помощью пробела. Взгляните на рис. 3 – вот как должна выглядеть программа. Обратите внимание на оператор = в выражении if. Оно означает, что первый блок кода выполняется, только если переменная pen содержит (equals) 0, в противном случае (else) выполняется второй блок.
[править] Введение в циклы
Теперь можно перемещать кота и рисовать картину, но ведь здорово было бы добавлять готовые фигуры, например, кружки? Сейчас мы это сделаем. Хотя с технической точки зрения мы добавим 24-сторонний многоугольник – он очень похож на круг.
Это делается так: сначала move forward 10 [переместиться вперед на 10 шагов], затем rotate 15 degrees [повернуть на 15 градусов], затем снова forward 10 [переместиться вперед на 10 шагов], затем rotate 15 degrees [повернуть на 15 градусов] и так далее, пока не получится окружность. Можно поместить в код 24 пары строк, и код будет работать, но это не очень хорошо: и выглядит некрасиво, и требует много времени на создание, а если вы решите изменить размер окружности, придется это делать в 24 местах.
Взамен мы применим цикл. Это блок, который повторяет сам себя. Есть несколько видов циклов – некоторые повторяются, пока некое выражение не станет ложным (нечто вроде многократно повторяемой команды if); но мы воспользуемся тем, который повторяется заданное количество раз.
Внутри цикла нам нужны всего две команды: move forward 10 и rotate 15. Подробности показаны на рис. 4. Ваша первая программа на Scratch готова! Файл проекта есть на DVD и на www.linuxformat.com/archives.
Программирование – не самоцель, а способ заставить компьютер делать то, что нам нужно, и теперь вас ограничивает только воображение. Можете написать стрелялку, рабочее приложение или нечто футуристическое, для чего и названия еще нет. Чтобы разбудить ваше воображение, вот несколько проектов из Интернета (если у вас установлен Flash, их можно запустить в браузере):
» Super Mario Galaxy Бегаете по свету, собирая звездочки. http://scratch.mit.edu/projects/Dolfus555/162167
» Wipeout На основе телешоу. Графика так себе, но играть весело. http://scratch.mit.edu/projects/awesomestickdude/1149306
» Space War 4 Старая стрелялка космических кораблей с вертикальной прокруткой. http://scratch.mit.edu/projects/illusionist/879463
» Snake Chamber Познакомьтесь с генетикой и разведением змей! http://scratch.mit.edu/projects/DewleafWolf/2758178
» Day Dream Scratch – еще и прекрасный инструмент для создания анимации. http://scratch.mit.edu/projects/cremeglace/40150
[править] Python
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Scratch отлично подходит для изучения основ программирования, но рано или поздно вы упретесь в его ограничения. Теперь мы рассмотрим популярный язык общего назначения Python. Первое, что о нем нужно знать – в отличие от Scratch, он полностью текстовый. Не то что на нем нельзя создавать графические программы – просто код программы представляет собой текст, а не перетаскиваемые блоки.
Поэтому, чтобы написать программу, откройте текстовый редактор. Подойдет любой; по умолчанию в Raspberry Pi есть Leafpad, им мы и воспользуемся; но если вы продолжите программировать, стоит поэкспериментировать с другими и найти самый подходящий для себя (у новичков в Python довольно популярен Geany). Обратите внимание, что текстовые процессоры, такие как LibreOffice Write или Abiword, не подойдут: они нарушат форматирование.
Создайте новый файл в Leafpad и добавьте в первую строку следующее:
- !/usr/bin/python
Эта строка, несколько загадочно называемая «шапкой», велит системе запускать наш файл с помощью программы python в каталоге /usr/bin/. Эту строку нужно указывать в начале всех своих программ.
Теперь перейдем к внутренностям программирования. У программистов есть давняя традиция первой писать программу, выводящую на экран слова “Hello World!”, и мы не будем изменять ей. Оставьте вторую строку пустой (это не обязательно, но так код лучше читается), а в третьей напишите:
print “Hello World!”
и сохраните свой труд в файле hello.py. Для запуска программы откройте терминал и перейдите в каталог, где вы сохранили файл. Выполните команду chmod a+x hello.py, чтобы сказать системе, что файл исполняемый, и введите ./hello.py для его запуска. На экране должно появиться Hello World!
Программа показывает, что система работает правильно, но проку от нее немного. Как и в проекте Scratch, добавим немного пользовательского ввода. Однако с Python нужно добавить переменную для сохранения того, что ввел пользователь. Удалите строку Hello World (оставив только «шапку») и добавьте строку:
name = raw_input(‘What is your name [Как вас зовут]? ‘)
В этой строке создается переменная name, отображается сообщение Как вас зовут?, и введенные пользователем данные сохраняются в name. Сообщение мы заключили в обратные кавычки, чтобы компьютер знал, что это одна строка текста. Затем мы можем воспользоваться этой переменной, чтобы вывести чуть более персональное сообщение оператором print:
print ‘Hello’, name
Так как компьютер выполняет команды по очереди, эта команда должна быть ниже предыдущей. Если расположить их в обратном порядке, программа выдаст ошибку, так как мы пользуемся переменной до того, как она создана. Теперь сохраните файл и наберите ./hello.py в командной строке для запуска программы.
[править] Решения, решения
Наша программа стала чуть более функциональной, но все равно довольно нежизненна. Она лишь выполняет те же два действия и завершается. Чтобы она стала полезна, нужно добавить действие с принятием решения, когда компьютер смотрит на то, что ввел пользователь, и в зависимости от этого выполняет разные действия.
Помните блок if в Scratch? То же самое есть и здесь. Базовая структура блока такова:
if <expression> :
<indent> code block
Здесь <expression> нужно заменить выражением, которое может быть истинным или ложным. Например, 1 > 2, или, что полезнее, num > 2, где num – переменная. В нашем случае мы проверим, что в качестве имени введено конкретное значение:
if name == ‘Бен’ :
Почему == ? Ну, компьютеры (да и программисты) не любят неопределенности. У каждого символа или слова должно быть только одно значение, иначе можно запутаться. = используется для присвоения переменной значения, поэтому для проверки на равенство нужно что-то еще. Опять же, «Бен» заключено в обратные кавычки, чтобы компьютер знал: это текст. Двоеточие означает, что выражение закончилось и сейчас мы скажем компьютеру, что делать.
Команде if может понадобиться выполнять больше одной строки кода – значит, нужен способ объединять код в блоки. В Python для этого используются отступы (Python в этом отношении более или менее уникален, и это кость в горле для ненавистников Python). В качестве отступов можно использовать пробелы или табуляцию, но в одном проекте важно пользоваться чем-то одним, потому что значение имеет не размер, а число отступов. Лично я использую отступ на два пробела, потому что меня учили так, и я ничего не хочу менять.
Итак, что должен сделать компьютер, если name == ‘Бен’? Ну, разумеется, мы должны поприветствовать Бена соответственно:
if name == ‘Бен’ :
print “Бен, you’re awesome [ну ты крутой]”
Обратите внимание на два пробела в начале второй строки, а также на двойные кавычки. Двойные кавычки нужны потому, что внутри фразы есть апостроф. Другим людям мы тоже грубить не будем, поэтому добавим блок else, выполняемый во всех случаях, когда условие в if ложно:
else :
print ‘Hello’, name
Последняя возможность, которую мы добавим в программу – цикл. Он очень похож на цикл из программы на Scratch, только что выполняется не 24 раза, а до тех пор, пока мы не велим ему остановиться. Для этого воспользуемся циклом while и следующим синтаксисом:
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
while <expression> :
<indent>code block
Мы можем остановить программу, введя имя quit. Поэтому наш цикл while будет таким:
while name != ‘quit’ :
[править] Решение проблем
Не спрашивайте меня – почему, но восклицательные знаки в программировании часто означают отрицание (not). Тем не менее, небольшая проблема все равно остается. Если поместить цикл перед присвоением name = raw_input…, появится сообщение об ошибке: дескать, неизвестно, что это за переменная name. А если поместить цикл после присвоения, имя будет запрошено всего однажды, а далее цикл продолжит бесконечно выплевывать приветствия.
Чтобы решить эту проблему, можно просто присвоить name пустую строку перед циклом while. Тогда сообщение об ошибке исчезнет, и цикл начнет работать. Теперь наша маленькая программа выглядит так:
- !/usr/bin/python
name = ‘’
while name != ‘quit’ :
name = raw_input(‘Как вас зовут? ‘)
If name == ‘Бен’ :
print “Бен, ну ты крутой”
else :
print ‘Hello’, name
Обратите внимание: перед каждой строкой print уже четыре пробела – потому, что у каждой строки два отступа: один для цикла while и один для оператора if. Можете сохранить файл под именем hello.py, как и прежде, и запустить его командой ./hello.py.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить |