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

Ну да, она работает… но это не очень-то красивая программа. Почему не очень? Ну, потому, что лучшее правило, которое я когда-либо узнал в программировании, – это правило DRY (Don't Repeat Yourself), то есть «Не повторяйся!» Возможно. я бы мог написать небольшую книгу только о том, почему это такое хорошее правило. В нашем случае, мы повторили строку puts 'Какое милое имя! '. Почему это так важно? Ладно, а что если я сделал опечатку, когда переписывал её? Что если я хотел изменить с 'милое' на 'прекрасное' в обеих строках? Я же ленивый, помните? По сути, если я хочу, чтобы программа делала одно и то же, когда она получает 'Chris ' или ' Katy ', тогда она должна действительно делать одно и то же:

puts 'Привет, как Вас зовут?' name = gets.chomp

puts 'Привет, ' + name + '.' if (name == 'Chris' or name == 'Katy')

puts 'Какое милое имя!' end

Привет, как Вас зовут?

Katy

Привет, Katy.

Какое милое имя!

Гораздо лучше. Чтобы заставить это заработать, я применил or. Другие логические операции это and и not. [«ИЛИ», «И» и «НЕ» – Прим. перев.] И когда работаешь с ними, лучшим решением будет всегда использовать скобки. Давайте посмотрм, как они работают:

iAmChris = true

iAmPurple = false

iLikeFood = true

iEatRocks = false

puts

(iAmChris

and

iLikeFood)

puts

(iLikeFood

and

iEatRocks)

puts

(iAmPurple

and

iLikeFood)

puts

(iAmPurple

and

iEatRocks)

puts

puts

(iAmChris

or

iLikeFood)

puts

(iLikeFood

or

iEatRocks)

puts

(iAmPurple

or

iLikeFood)

puts (iAmPurple or iEatRocks) puts

puts (not iAmPurple)

puts (not iAmChris )

true

false

false

false

true

true

true

false

true

false

Единственная из них, которая может обмануть вас, – это операция or. В английском языке мы часто используем «or» в значении «один или другой, но не оба». Например, ваша мама могла бы сказать: «На десерт ты можешь съесть торт или пирожное». Она не предполагала, что вы можете съесть и то и другое! Компьютер, напротив, использует or в значении «один или другой или оба». (Другой способ выразить это: «по крайней мере, один из них – истинный».) Вот почему с компьютерами гораздо веселее, чем с мамами.

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

• «99 бутылок пива на стене…» Напишите программу, которая печатает стихи этой излюбленной классической походной песни: «99 бутылок пива на стене».

• Напишите программу «Глухая бабуля». Что бы вы ни говорили бабуле (чтобы вы ни вводили с консоли), она должна отвечать: АСЬ?! ГОВОРИ ГРОМЧЕ, ВНУЧЕК!, если только вы не кричите ей (вводите слова заглавными буквами). Если вы кричите, она вас слышит (или по крайней мере думает, что слышит) и вопит в ответ: НЕТ, НИ РАЗУ С 1938 ГОДА! Чтобы сделать вашу программу действительно правдоподобной, пусть бабуля кричит каждый раз другой год; например, любой случайный год между 1930 и 1950. (Эта часть необязательная, и вам будет гораздо легче, если вы прочтёте раздел о генераторе случайных чисел в Ruby в конце главы о методах.) Вы не можете остановить разговор с бабулей, пока не прокричите пока.

Подсказка: Не забывайте о chomp/ ' пока ' с символом Enter это не то же самое, что ' пока ' без него/

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

• Улучшите вашу программу «Глухая бабуля»: Что если бабуля не хочет, чтобы вы уходили? Когда вы кричите пока, она может притвориться, что не слышит вас. Измените вашу предыдущую программу так, чтобы вам нужно было прокричать пока три раза в одной строке. Удостоверьтесь в правильности вашей программы: если вы прокричите пока три раза, но не в одной строке, вы должны дальше разговаривать с бабулей.

• Високосные годы. Напишите программу, которая будет спрашивать начальный год и конечный год, а затем выдавать с помощью puts все високосные годы между ними (и включая их, если они также високосные). Високосные годы – это годы, нацело делящиеся на 4 (как 1984 и 2004). Однако, годы, нацело делящиеся на 100, – не високосные (как 1800 и 1900) если только они не делятся нацело на 400 (как 1600 и 2000, которые действительно были високосными). (Да, это всё довольно запутанно, но не настолько запутанно, как если бы июль был в середине зимы, что иногда случалось бы.) [если бы не было високосных годов. – Прим. перев.]

Перейти на страницу:

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

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

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

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

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

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

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

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