Читаем Учись программировать полностью

# «number». Помните, что «write» это (в настоящий момент) число

# сотен, которые нужно вывести. Прибавив «hundreds» к «numString»,

# мы добавляем после неё строку ' hundred'. Так, например, если

# мы сначала вызвали englishNumber с 1999 (т.е. «number» = 1999),

# затем в этой точке «write» будет равен 19, а «left» равен 99.

# Наиболее лениво в этом месте было бы заставить englishNumber

# вывести нам 'nineteen', а затем мы выведем ' hundred',

# и потом оставшаяся часть englishNumber выведет 'ninety–nine'.

if left > О

# Так, мы не выводим 'two hundredfifty-one'… numString = numString + ' ' end end

write = left/Ю # Сколько десятков осталось вывести?

left = left – write*10 # Вычтем эти десятки.

numString

end

puts

englishNumber(

0)

puts

englishNumber(

9)

puts

englishNumber(

10)

puts

englishNumber(

11)

puts

englishNumber(

17)

puts

englishNumber(

32)

puts

englishNumber(

88)

puts

englishNumber(

99)

puts

englishNumber(100)

puts

englishNumber(101)

puts

englishNumber(234)

puts

englishNumber(3211)

puts

englishNumber(999999)

puts

englishNumber(1000000000000)

zero

nine

ten

eleven

seventeen

thirty-two

eighty-eight

ninety-nine

one hundred

one hundred one

two hundred thirty-four

thirty-two hundred eleven

ninety-nine hundred ninety-nine hundred ninety-nine one hundred hundred hundred hundred hundred hundred

Ааааа…. Это гораздо, гораздо лучше. Программа довольно компактная, вот почему я добавил в неё так много комментариев. Она даже работает с большими числами… хотя не совсем так хорошо, как можно было надеяться. Например, я полагаю, для последнего числа было бы гораздо лучше вернуть значение 'one trillion', или даже 'one million million' (хотя все три значения правильные). В сущности, вы можете сделать это прямо сейчас…

Попробуйте ещё кое-что

• Доработайте englishNumber. Во-первых, добавьте тысячи. Так она должна возвращать ' one thousand ' вместо ' ten hundred ', а также ' ten thousand ' вместо 'one hundred hundred'.

• Ещё доработайте englishNumber. Теперь добавьте миллионы, чтобы вам возвращалось ' one million ' вместо ' one thousand thousand '. Затем попробуйте добавить миллиарды и триллионы. Насколько далеко вы сможете зайти?

• А как насчёт weddingNumber? Она должна работать почти также, как englishNumber, но только она должна вставлять повсюду слово «and», возвращая что-то наподобие ' nineteen hundred and seventy and two ', или как там это должно выглядеть в приглашениях на свадьбу? Я бы привёл вам больше примеров, но я сам не совсем это понимаю. Вам возможно, понадобится обратиться за помощью к устроителю свадеб.

• «Девяносто девять бутылок пива…” Используя englishNumber и вашу старую программу, напечатайте стихи этой песни, на этот раз правильно. Накажите ваш компьютер: пусть она начнётся с 9999. (Однако не задавайте слишком большое число, так как выводить всё это на экран займёт у компьютера достаточно много времени. Сто тысяч бутылок пива занимает приличное время; а если вы зададите миллион, вы накажете и себя тоже!

Мои поздравления! К этому моменту, вы стали настоящим программистом! Вы изучили всё, что нужно, чтобы составлять огромные программы с чистого листа. Если у вас есть идеи, какие бы программы вы сами хотели бы написать, попробуйте воплотить их!

Конечно, составлять всё с чистого листа может оказаться довольно медленным процессом. Зачем же тратить время на написание кода, который кто-то уже написал? Вы бы хотели, чтоб ваша программа оправляла электронную почту? Вы бы хотели сохранять и загружать файлы на свой компьютер? А как насчёт генерирования web- страниц для учебника, где примеры кода в самом деле выполняются каждый раз, когда загружается страница? ;) В Ruby есть много различных видов объектов, которые мы можем использовать и которые помогут нам писать программы лучше и быстрее.

<p>9. Классы</p>
Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных