|
Puts i
End
Приклад. Розглянемо кілька варіантів програми, що обчислює факторіал введеного числа.
Використання оператора while
print "Введіть ціле позитивне число:"
str = gets.chop! # Ввели рядок
num = str.to_i # перетворили в число
if num> 0
i = 1
fact = 1
while i <= num
fact * = i
i + = 1
End
puts "Факторіал числа # {num} дорівнює # {fact}"
Else
puts "Ви ввели непозитивно число"
End
Використання оператора for
print "Введіть ціле позитивне число:"
num = gets.to_i # рядок відразу перетворили в число
if num> 0
fact = 1
For i in 1.. num
fact * = i
End
puts "Факторіал числа # {num} дорівнює # {fact}"
Else
puts "Ви ввели непозитивно число"
End
Використання функції для визначення факторіала
Def fact (n)
f = 1
1.step (n, 1) {| k | f * = k}
Return f
End
print "Введіть ціле позитивне число:"
if (num = gets.to_i)> 0
print "# {num}! = # {fact (num)} \ n"
Else
puts "Факторіал числа # {num} не визначений \ n"
End
В останньому прикладі ми оформили обчислення факторіала у вигляді функції і використовували ітератор step, який забезпечив зміну змінної k з кроком 1.
Приклад. Наведена нижче програма запитує ціле позитивне число і визначає кількість цифр у ньому (зверніть увагу на множинне присвоювання).
print "Введіть ціле позитивне число:"
a, k = gets.to_i, 0
while a> 0
a / = 10; k + = 1 # відкинули останню цифру
End
print "Кількість цифр у введеному числі одно # {k}. \ n"
Приклад. Нехай потрібно ввести з клавіатури масив чисел і надрукувати суму всіх елементів. Наведемо кілька рішень цього завдання.
1. Спочатку введемо кількість елементів масиву, а потім заповнимо його елементами, одним за іншим. Зверніть увагу, що перший елемент масиву має індекс 0, а останній - на одиницю менший, ніж розмірність масиву.
print "Введіть число елементів масиву:"
sn = gets.chop!; n = sn.to_i
b = Array.new (n) # створили масив з n елементів
s = 0 # обнулили суму
for i in 0.. n – 1
print "Введіть # {i +1}-й елемент масиву:"
b [i] = gets.chop!. to_f; s = s + b [i]
End
print "Сума всіх елементів масиву дорівнює", s, "\ n"
2. У цій версії програми всі числа вводяться відразу у вигляді одного рядка, в якій числа відокремлюється один від одного пробілом (наприклад, 23 -34.67 100.5).
Вбудований метод split розділяє рядок на елементи масиву, аргументом цього методу є роздільник (якщо роздільником є пробіл, то можна викликати цей метод без аргументу). Таким чином, якщо б ми домовилися розділяти числа, наприклад, крапкою з комою, то виклик методу виглядав би так: a.split(';').
Для визначення довжини масиву ми застосували метод length (можна замінити на еквівалентний йому метод size).
puts "Введіть масив чисел (розділяючи їх пробілами):"
a = gets.chop!
b = a.split # розбили рядок на окремі числа
s = 0
for i in 0.. b.length – 1
s + = b [i]. to_f
End
puts "Сума всіх елементів масиву дорівнює # {s}"
В Ruby є чотири конструкції, що задаються ключовими словами break, redo, next і retry, які змінюють звичайний порядок виконання циклів. Їх дія описано в наступній таблиці.
break | Негайно припиняє виконання циклу; управління передається на затвердження, розташоване відразу за циклом |
redo | Повторює тіло циклу з початку, не перераховуючи умова виконання циклу (не переходячи до наступного елементу в разі ітератора) |
next | Пропускає частина тіла циклу, наступну за ним, і переходить до наступної ітерації |
retry | Починає виконання циклу з самого початку |
Розглянемо на прикладі ітератора for дію зазначених конструкцій.
for i in 1.. 5 print i break if i == 3 print "*" end | Результат: 1 * 2 * 3 |
for i in 1.. 5 print i redo if i == 3 print "*" end | Результат: 1 * 2 * 33333... виконання циклу не припиняється |
for i in 1.. 5 print i next if i == 3 print "*" end | Результат: 1 * 2 * 34 * 5 * |
for i in 1.. 5 print i retry if i == 3 print "*" end | Результат: 1 * 2 * 31 * 2 * 31 * 2 *... виконання циклу не припиняється |
Приклад. Наступна програма починає повторення циклу спочатку, якщо при введенні вказати символ y.
Дата добавления: 2015-08-09; просмотров: 82 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
When 100 .. 999 | | | Системы сбора и подготовки нефти и конденсата |