Урок 3 из 19   Урок 4  

Урок 3: Ваша первая программа «Волшебный шар»

Сегодня мы напишем нашу первую содержательную программу: программу-игрушку «Волшебный шар». Он подскажет ответ на любой жизненный вопрос.

А потом разберем самые популярные ошибки в написании программ и узнаем как находить и исправлять ошибки в программах на ruby.

Магический шар

* * *

Важнейшее правило программирования

«Любая программа начинается с постановки задачи».

Вы не можете написать программу, пока вы не поняли, какой результат от неё ждёте. Продумайте вашу программу до того, как её писать. Это во-первых, облегчит вам работу, во-вторых, ваша программа будет содержать меньше ошибок.

Задача для программы «Волшебный шар»:

Написать программу, которая реализует поведение игрушки волшебный шар.

Чтобы понять как работает шар, посетим страницу Википедии, посвященную магическому шару. Она называется «Magic 8 Ball». Нас здесь интересуют все возможные варианты ответов, один из которых случайным образом должна выбрать программа.

Наша первая программа

Мы создаём, как обычно, папку lesson3 в нашей рабочей папке c:\rubytut. А в ней уже создадим файл 8ball.rb, скопировав варианты ответов из Википедии и оформив это в виде массива ruby.

answers = [
  # Положительные
  "Бесспорно",
  "Предрешено",
  "Никаких сомнений",
  "Определённо да",
  "Можешь быть уверен в этом",

  # Нерешительно положительные
  "Мне кажется — «да»",
  "Вероятнее всего",
  "Хорошие перспективы",
  "Знаки говорят — «да»",
  "Да",

  # Нейтральные
  "Пока не ясно, попробуй снова",
  "Спроси позже",
  "Лучше не рассказывать",
  "Сейчас нельзя предсказать",
  "Сконцентрируйся и спроси опять",

  # Отрицательные
  "Даже не думай",
  "Мой ответ — «нет»",
  "По моим данным — «нет»",
  "Перспективы не очень хорошие",
  "Весьма сомнительно"
]

После этого мы выведем на экран произвольный элемент этого массива с помощью специального метода sample.

Добавьте в вашу программу в конце следующую строчку. И сохраните программу в папке урока.

puts answers.sample

Для того, чтобы запустить эту программу, переходим в консоли в нашу папку

cd c:\rubytut\lesson3

и запускаем программу

ruby 8ball.rb

Как и зачем писать комментарии (в Ruby и не только)

В Ruby комментарии начинаются с # — всё, что идёт после этого символа и до конца строки будет проигнорировано руби. Как будто вы ничего и не писали.

# Тут можно писать всякую ерунду ;)

Коментарии — очень нужная вещь.

Пишите их, чтобы пояснять действия ваших инструкций в программах для вас в будущем или для других людей, которые будут читать ваши программы.

Очень помогает при обучении прежде, чем писать программу, сначала написать всю программу в виде комментариев на русском языке прямо в файле программы. В этих комментариях просто описать все шаги — что и как делает программа.

Отступы в программировании

Для удобства восприятия текста программы их авторы используют отступы. Например, если вы пишете блок между скобками или на нескольких строчках, всегда используйте отступы.

Согласитесь, что такой текст читать гораздо сложнее и непонятнее:

answers = ['один',
'два',
  'три', 'четыре',
'пять'
]

чем такой:

answers = [
  'один',
  'два',
  'три',
  'четыре',
  'пять'
]

В хорошо отформатированном тексте гораздо проще найти и избежать ошибки. Хотя для ruby оба варианта равнозначны.

Sublime обычно сам подсказывает вам правильные отступы. Но их всегда можно сделать вручную клавишей Tab.

Ошибки в программировании

Пока вы новичок — ваши программы часто не будут работать с первого раза из-за досадных ошибок и опечаток. Это нормально, все через это проходят.

Поиск ошибок в программировании

К счастью большинство таких ошибок довольно просто обнаружить и исправить. Можно запустить Ruby в режиме проверки файла, добавив к запуску ключ -c (параметры с минусами, передаваемые в программу часто называют ключами).

Для этого в консоли (находясь конечно в папке с программой) выполните:

ruby -c 8ball.rb

Забытая скобка, забытая запятая, опечатка в названии переменной или метода — это те причины, по которым ваша программа может даже не запуститься. Ни в коем случае не расстраивайтесь, просто читайте текст ошибок и исправляйте ошибки по одной — сверху вниз.

В тексте ошибки вам не нужно понимать всё, что написано. Достаточно в начале найти название файла и после двоеточия цифру. Эта цифра — номер строки, где обнаружена ошибка.

Но обратите внимание, что ошибка может оказаться не ровно на этой строке, а плюс-минус одна строка (пустые строки и комментарии не учитываются!).

Если же плюс–минус одна строка в порядке, то возможно ошибку следует искать в симметричной конструкции. Например, если ошибка в районе строки, где есть символ } или ], или ), то возможно дело в том, что для этой закрывающей скобки нету открывающей. На какой-то совсем другой строке, где она должна быть по смыслу вашей программы.

Точно также ошибки могут проявиться и без всяких ключей, при обычном запуске программы. Искать и исправлять их нужно точно также – по одной, всегда сначала самую верхнюю из списка ошибок. Бывает, что исправление одной самой верхней ошибки автоматически исправляет и все остальные.

После того, как мы написали нашу первую более-менее сложную программу и научились делать разметку и комментарии в тексте программ, а также бороться с опечатками в Ruby — можно переходить к изучению основ программирования.

В следующем уроке мы расскажем вам о переменных в Ruby и операторе if-else.