LXF168Raspberry Pi. Программирование:
|
|
|
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
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить |