Ну что, приступим?
Этот темный прямоугольник - Учебник Хакети-Хак. Нажми Дальше, и начнем!
Управление Учебником
Пока мы не начали, взгляни на кнопки сверху.
Назад. !icon-tutor-back.png! вернет тебя на страницу назад.
Стоп. !icon-tutor-stop.png! запомнит, до какого места ты дошел, и закроет учебник.
Вперед. !icon-tutor-fwd.png! как и ссылка Дальше, переходит к следующей странице.
Как вернуться в учебник
Нажатие на кнопку !icon-tutor-stop.png! "Стоп" приостановит обучение. Чтобы вернуться в учебник, просто нажми на лампочку наверху Хакети-Хак. Ты сразу вернешься в урок, на котором остановился. Попробуй прямо сейчас.
Ладно, хватит. Давай хакать...
Урок Один: Спроси и Сохрани
Начнем с очень простой программы.
- Нажми ссылку Начать новую программу (внизу, в главной белой части Ха-Ха.)
Урок 1A: Спроси
Перепиши вот эту программу в большое белое поле:
# Спрашиваем и говорим
name = ask("Как тебя зовут?")
puts(name)
Нажми Запуск, как только закончишь.
Урок 1A: Ну, что произошло?
Код, который ты написал - это программа на языке Ruby, родном языке Хакети-Хака.
Взгляни-ка на программу. Понятно, как она работает? Как думаешь, что делает команда ask? А для чего нужно слово name?
Урок 1А: Остановимся на этом
Теперь программу нужно Сохранить. Назовем ее Вопрос.
Теперь нажми на логотип Хакети-Хак, чтобы вернуться в главное меню (или на иконку домика на панели вверху).
Урок 1А: Программы, которые ты сохранил
Обрати внимание, что твоя программа теперь есть в списке Сохраненные программы. Там должно быть написано ее название - Вопрос, а под ним - описание: Спрашиваем и говорим. Отлично!
Урок 1А: Замечание о сохранении
В первой строке программы написан короткий комментарий. Комментарии начинаются со знака решетки. Ruby не обращает внимания на комментарии.
Зато Хакети-Хак проверяет начало программы, и если там есть комментарий, он будет считаться описанием. Спасибо, Хакети-Хак'''
Урок 1А: Как работает "Вопрос"
Команда ask, которую мы используем в части А, показывает окошко, в которое пользователь программы может что-нибудь ввести. То что он введет, передается обратно в программу. В части А, ты записал введенный текст в переменную name.
А как Ruby догадался, что ask - это команда, а name - переменная? Он понял это по их положению в "предложениях" твоего кода. Например, переменные создаются при помощи знака "равно". Поскольку после name стоит "равно", значит это переменная.
name = ask("Как тебя зовут?")
Программирование - это, по большей части, просто придумывание правильного порядка вещей.
МЕЖДУ ПРОЧИМ: попробуй заменить вопрос на что-то более неприятное. Пусть твоя программа станет сердитой.
Урок 1Б: Говорим
Нажми на имя своей программы - Вопрос - чтобы вернуться к редактированию. Попробуем сделать с именем еще кое-что.
А вот и новая программа (первые 2 строчки - те же самые):
# Спрашиваем и говорим
name = ask("Как тебя зовут?")
say("В твоем имени #{name.length} букв")
sleep(name.length())
Аккуратно перепиши ее. Обрати внимание, что в кавычах есть знак решетки и фигурные скобки. (Фигурные скобки находятся на тех же клавишах, что и квадратные.)
Урок 1Б: Переписал?
Нажми Сохранить, чтобы сохранить все это. А теперь - Запуск.
Посмотри на вращающуюся полоску внизу. Заметил, что надпись над ней изменилась? Команда say изменяет надпись прямо над полоской!
== Урок 1Б: А зачем это?
Команда say очень полезна - ведь можно сообщить что-нибудь пользователю программы, пока он ждет. Можно сказать посылаем почту или загружаем mp3 или просто тратим время... - смотря что твоя программа делает. Это просто, но это же всего первый урок!
Урок 1Б: Сонное царство
Теперь обрати внимание на команду sleep. Крутящаяся полоска исчезнет, когда программа закончит работу, поэтому команда sleep делает паузу на несколько секунд, чтобы ты успел увидеть полоску и буквы.
Не станем пока объяснять все остальное, но ты можешь запустить программу еще пару раз и попробовать разобраться:
- Что делает name.length?
- Зачем оно окружено такой штукой? #{....}
Урок 1В: Считаем
А теперь опять оставь первые две строчки программы, а после них напиши вот это:
# Спрашиваем и говорим
name = ask("Как тебя зовут?")
1.upto(name.length) do |x|
say "В твоем имени #{x} букв"
sleep 1
end
sleep 10
Обрати внимание на вертикальные черточки в этой программе. В конце третьей строки написано |x|. Две палочки вокруг x - словно горка, по которой соскальзывает x. Вертикальная черточка - как раз над Enter'ом. Нужно нажать Shift и эту клавишу, чтобы набрать черточку. (Русскоязычные пользователи, не забудьте переключиться в английскую раскладку!)
Урок 1В: upto
upto - обычная команда, такая точно как ask и say. Но зачем перед ней точка? Почему она приклеена к цифре 1?
У каждой команды есть перед и зад. Перед команды может быть приклеен к чему-нибудь с помощью точки. Зад команды может быть приклеен к чему-нибудь с помощью скобок.
1.upto(6) do |x|
say("Покажи #{x} пальцев.")
sleep 1
end
Команда upto - это часть любого числа. В нашем случае, она часть числа 1. Представь, что это злая собака, которую хозяин держит за поводок. Точка - это и есть поводок.
Урок 1В: Собака Upto
1.upto(6) do |x|
Вернемся к нашей собаке! Скобки - это рот собаки, которая съела число шесть. Что нужно запомнить: команды принадлежат тем, кто слева от точки. И съедают все, что в скобках. Это дает команде силы, чтобы делать ее работу!! Как Педигри Пал.
"Чего?".upto(6)
Смотри, это не сработает. Потому что у строки в кавычках просто нет собаки по имени upto. upto - только для счета!!
Мы хотим посчитать от 1 до 6 (по английски это будет "1 up to 6"). Очень просто прочесть (для тех, кто знает английский).
Первый урок окончен!
Сейчас у тебя, наверное, куча вопросов, и тебе кажется, что осталась куча всего непонятного. Конечно, осталась! Нельзя же узнать все сразу. Зато кое-что ты узнал:
- Команды делают всякие штуки - как собаки делают всякие штуки.
- Переменные сохраняют штуки.
- Переменную можно создать с помощью знака равно. Так Ruby поймет, что это переменная!
- Команды принадлежат тем, кто слева от точки.
- Команды съедают все, что в скобках, как печенье.
- С командами ask, say, sleep и upto мы немножко разобрались.
Это уже очень хорошо. Отдохни, похвали себя, и пусть все что ты узнал, хорошенько усвоится.
МЕЖДУ ПРОЧИМ: Если хочешь стать еще немножко умнее, попробуй написать такую программу, чтобы текст мигал. Для этого можно использовать команды say и sleep!
Урок Два: Выходим погулять
В Уроке Один мы кое-что спросили и кое-что сказали. Неплохо, неплохо. Но не очень-то полезно, да? Может, заставим компьютер что-нибудь сделать?
Например: давай-ка выглянем на улицу и напишем программу, которая может работать с Интернетом.
Урок 2А: Загрузка
Начни новую программу. (Нажми на иконку с листком на панели инструментов. Она вторая слева.)
# Простой загрузчик файлов.
url = ask("Введите Веб-адрес:")
save_as = ask("Сохранить в файл с именем:")
Web.download(url, save_as)
Сохрани программу как Загрузчик.
Урок 2А: Запуск программы
Эта программа задает два вопроса. В первом окошке с вопросом, нужно набрать какой-нибудь адрес файла в Интернете. Как насчет песенки "Pinball Number Count" Дэда Хенсона?
http://www.deadhensons.com/media/pinball_clip.mp3
Во втором окошке нужно ввести имя для загруженного файла. Например:
pinball.mp3
Что делает эта программа? Можешь сказать это, глядя на код?
Урок 2А: Куда девается файл?
Ты видел, как файл загрузился, так? Теперь надо бы найти, куда. Хакети-Хак хранит загруженные файлы в одной папке, рядом с сохраненными тобой программами. Поищем ее!
%HACKETY_USER%
Перейди в эту папку с помощью Проводника Windows. Можно просто скопировать путь и вставить его в поле пути в Проводнике. Или начать с "Моего Компьютера" и дойти до этой папки.
Урок 2А: Папка с твоими хаками
Теперь ты должен видеть несколько файлов с именами, заканчивающимися на ".rb", и папку под названием Downloads. Вот! Каждый ".rb"-файл - одна из твоих программ. Это настоящие Ruby-программы, которыми ты можешь обмениваться с другими Хакети-хакерами. А если кто-нибудь пришлет тебе свою программу, ты можешь положить ее в эту папку и она появится в Хакети-Хаке!
А теперь загляни в папку Downloads. Отлично! Так держать.
Урок 2А: Библиотека "Web"
Чтобы загрузить MP3, мы использовали команду Web.download. Это обычная команда, такая же как ask и say, только она - часть библиотеки команд "Web" в Хакети-Хаке. (В Ruby, команды еще называются методами. Это так, к слову.)
Для пущей аккуратности, некоторые команды хранятся в библиотеках. Штуки вроде Web.fetch, Web.page и Web.download вроде как относятся к Интернету, поэтому и хранятся в библиотеке Web.
Урок 2А: Насчет твоей собственной библиотеки
В следующих уроках я покажу, как делать свои собственные библиотеки, и как использовать библиотеки других хакеров. Таким образом, в Хакети-Хаке могут использоваться новые команды, которых в нем изначально не было
МЕЖДУ ПРОЧИМ: В Хакети-Хаке есть команда ask_save_file() - это особая разновидность ask. Попробуй-ка изменить третью строку своей программы, используя эту команду.
