Курси програмування для дітей безкоштовно

08. Цикл for та while у Ruby

Цикл for та while у Ruby | Ruby для дітей | ITisFuture

Цей урок буде про цикл for та while у Ruby. Цикли потрібні, щоб програма могла повторювати дії автоматично й працювати розумніше, а не довше.

Сьогодні ми поговоримо про футбол і різноманітні чемпіонати з футболу. Невже футбол може допомогти у вивченні циклів? Цікаво, як. То давайте стартувати матч…

Цикл for та while у Ruby

Цикли в програмуванні використовують для повторення певних дій. У реальному житті прикладами циклів є різні повтори: тиждень, рік або день, а в програмуванні за допомогою циклу можна перебрати всі числа й вибрати, наприклад, ті, що діляться на 3. Всі роки 20 століття і знати ті, в які проводився чемпіонат світу з Футболу. Також у циклі можна перебирати елементи масиву та виконувати з ними потрібні операції. Цикли допомагають уникнути дублювання коду і роблять програми коротшими та зрозумілішими. Без циклів більшість програм були б набагато складнішими та менш зручними для підтримки.

While and For

В Ruby, як і в більшості мов програмування існують різні види циклів. Ми сконцентруємося на while та for, бо вони є чи не в кожній мові програмування і вивчивши їх раз ви зрозумієте механіку у всіх мовах. Про інші види циклів у ruby можна почитати тут.
Як правило немає різниці, використовувати for чи while, вони досить універсальні, але в складніших програмах ви стикнетеся з обома циклами. Тож давайте розглянемо найпростіші приклади:

Цикл for та while у Ruby | Ruby для дітей | ITisFuture

While виконує код (тіло циклу), поки справджується умова. Оператор має такий вигляд:

while умова [do]
  код (тіло циклу)
end
i=0
while i<10
    puts "#{i} I must not write all over the walls!"
    i+=1
end
Цикл for та while у Ruby | Ruby для дітей | ITisFuture

For виконує код (тіло циклу) для кожного значення з заданого діапазону або колекції. Оператор має такий вигляд:

for змінна in діапазон [do]
  код (тіло циклу)
end
for i in 1..10
    puts "#{i} I must not write all over the walls!"
end

У циклах змінна i зазвичай використовується як лічильник — вона показує, на якому кроці цикл зараз. Після кожного проходу i += 1 означає, що значення i збільшується на один. Так цикл рухається вперед і не повторюється вічно.

Тіло циклу відділяють від оголошення циклу за допомогою службового слова do, ознаки кінця рядка, зворотньої косої риски \ або крапки з комою.

Практика. Цикл for та while у Ruby

While

1: Напишемо рекламку такого спорту, як футбол за допомогою while. Виведемо слово ФУТБОЛ 10 разів. Але літери “о” замінимо на ⚽ м’ячики. З кожним разом літер “о” ставатиме все більше:

змінна i дорівнює 0
змінна o дорівнює "⚽️" 
while i менше або = 10
    puts "#{i} ФУТБ#{o*i}Л" 
    збільшити i на 1
end  

Можна додати .center(40) до виводу, тоді він буде виглядати красивіше

Цикл for та while у Ruby | Ruby для дітей | ITisFuture

Яке число треба змінити, щоб програма виводила 24 рядки ?

2: Тепер створімо зворотний таймер, який відраховуватиме час назад. Наприклад, залишилося 10 секунд до старту відкриття Чемпіонату світу.

time=10
while time>0
    puts "#{time} sec"
    sleep(1)
    time-=1
end  
puts "Чемпіонат світу з футболу почався!!"    

Спробуйте переробити програму, так, щоб вона відраховувала 5 секунд, 30 секунд.

For

3: Переробіть програму з таймером так, щоб вона використовувала цикл for.
Використайте for i in 10.downto(1)

4: Тепер черга за циклом for. Наша програма визначатиме ціну квитків на білети. Білети на перший і останній ряд будуть найдешевшими й складатимуть 100 доларів. Передостанній і другий ряд – 200 і так далі. Ряди з 8 до 12 найдорожчі, ціна складатиме 1000 доларів. Наша задача, створити програму, в якій ми опишемо, скільки коштуватиме білет на кожен ряд

Цикл for та while у Ruby | Ruby для дітей | ITisFuture

План:
1. Подумайте, за що має відповідати лічильник циклу. Створіть цикл for, які лічить і виводить на екран номер.
2. Створіть умову в середині циклу, яка буде виводити номер ряду і ціну квитка. План умови (без урахування циклу):

  if i==1
    price=⚽⚽⚽⚽
    puts "Ряд #{i}. Ціна квитка #{price}$"  
  elsif i in 2..7
    price=⚽⚽⚽⚽
    puts "Ряд #{i}. Ціна квитка #{price}$" 
❓❓❓❓
  else
    ❓❓❓❓
  end    
end

3. Подумайте над оптимізацією (покращенням) вашої програми:
🥅⚽ чи є рядки, які повторюються? Як уникнути цього?
🥅⚽(Ускладнене) Зараз мінімальна ціна 100 доларів і всі формули працюють від цього. Але якщо вона зміниться ? Чи зручно буде редагувати велику кількість коду? Змініть програму так, щоб мінімальна і максимальна (1000) ціна вказувалася один раз і зберігалася у змінних. Далі змініть мінімальну і максимальну ціну й перевірте, що всі ціни оновилися.

Цикли для списків

5: В цьому завданні ми подивимося, як цикли працюють зі списками. У нас є список команд-учасників ЧС 2022. Завдання два:
⚽ Вивести всі команди, розділивши їх м’ячиками.
⚽ Команди треба розділити на групи. Команди будуть змагатися у своїх групах, а потім найкращі пройдуть на наступний етап. Скопіюйте собі код нижче. В списках a,b,c,d,e,f,g,h будуть зберігатися групи, коли ми їх створимо випадковим чином.

**В реальності і команд і груп більше, як можете побачити на фото, та ми сконцентруємося на 8-х. Також в списку можливі команди, на момент написання статті остаточний список невідомий

teams = ['США', 'Канада', 'Мексика',        # господарі ЧС 2026
    'Бразилія', 'Аргентина', 'Уругвай', 'Франція', 'Німеччина', 'Іспанія', 
    'Англія', 'Португалія', 'Італія', 'Нідерланди', 'Бельгія', 'Хорватія', 
    'Польща', 'Україна', 'Швейцарія','Данія', 'Сербія', 'Швеція','Японія', 
    'Австралія', 'Іран','Південна Корея', 'Єгипет', 'Нігерія','Марокко',
     'Туніс', 'Саудівська Аравія', 'Гана', 'Сенегал' ]

a=[]
b=[]
c=[]
d=[]
e=[]
f=[]
g=[]
h=[]
####    Тут буде ваш код
puts "Група A #{a} "  
puts "Група B #{b} "  
puts "Група C #{c} "  
puts "Група D #{d} "  
puts "Група E #{e} "
puts "Група F #{f} "
puts "Група G #{g} "
puts "Група H #{h} "

Спробуйте зробили завдання самостійно. Якщо не виходить, скористайтесь підказками:

#### 1 Всі рядки програми перемішані, вам треба лише змінити порядок
end
    print "⚽️#{t}⚽️"
puts ""
for t in teams

#### 2. План програми розподілення по групах
лічильник і встановлюємо в початкове значення
Перемішуємо список команд і записуєно в ту ж, або нову змінну (teams.shuffle)
while доки_i_менше_дивжини списку #teams.length
    #якщо і ділиться на 8 з остачею 0, то додаємо таку команду у групу А: 
    (i%8==0)?a.push(teams[i]):nil
    #якщо і ділиться на 8 з остачею 1, то додаємо таку команду у групу B: 
    #і так далі... 
    збільшити і на1
end

shuffle – перемішує елементи в списку. Далі треба поділити на групи. Їх всього 8. В першій групі знаходяться команди, індекс яких ділиться на 8 націло. В другій – ті, індекс яких ділиться на 8 з остачею 1, і так далі.

6 (Додаткове): Виведіть на екран 13 разів правило або закон (з будь-якої науки) спочатку за допомогою циклу while, а потім за допомогою for.

Цикл for та while у Ruby | Ruby для дітей | ITisFuture

7 (Додаткове): 🧩 Поки користувач не введе пароль “ruby123”, просіть ввести знову.
Порахуйте кількість спроб зламати пароль.

8 (Додаткове): Намалюйте 🏔️ ASCII-гори:

    ^
   ^^^
  ^^^^^
 ^^^^^^^
^^^^^^^^^

9 (Додаткове): Невідома планета. Створи мапу невідомої планети. На початку програми задаються координати прибульця, наприклад k=2 й p=3. Програма має розташувати прибульця на мапі, а решту координат заповнити випадковими смайликами.
(смайли для зручності: 🟥🟧🟨🟩🟫⬜️⬛️🟪🟦).

🟥🟧🟨🟪🟦🟥🟧🟨🟪🟦
🟧🟨🟪🟦🟥🟧🟨🟪🟦🟥
🟨🟪🟦🟥🟧🟨🟪🟦🟥🟧
🟪🟦👾🟧🟨🟪🟦🟥🟧🟨
🟦🟥🟧🟨🟪🟦🟥🟧🟨🟪
🟥🟧🟨🟪🟦🟥🟧🟨🟪🟦
🟧🟨🟪🟦🟥🟧🟨🟪🟦🟥
🟨🟪🟦🟥🟧🟨🟪🟦🟥🟧
🟪🟦🟥🟧🟨🟪🟦🟥🟧🟨
🟦🟥🟧🟨🟪🟦🟥🟧🟨🟪

10 (Додаткове): Зроби покращення до минулої програми: обери смайлик героя, який шукає прибульця. Випадковим чином програма має обрати координати героя і розмістити його на мапі.
Якщо герой знаходиться на одному рядку чи в одному стовпці з прибульцем – виведіть “Бачу прибульця”. Якщо ні: “Не можу знайти прибульця”

Уроки програмування для дітей. Домашня робота

Домашня робота

1: Матвій і Соломійка зустрілися у дворі перед тренуванням з футболу та зрозуміли, що забули вдома кросівки. Матвій живе на 13 поверсі, а Соломійка на 7-му, світла немає 🔦, тож треба буде пробігтися сходами (Ми їх так розуміємо…😅).
Створіть цикли, які покажуть, які поверхи пробіжить Матвій.
Створіть цикли, які покажуть, які поверхи пробіжить Соломія.
Підказка для циклу for назад: for i in 7.step(1, -1)

Цикл for та while у Ruby | Ruby для дітей | ITisFuture
# Схема програми:
puts "🏃‍♀️ Соломійка на вулиці"
# Цикл для підняття нагору
puts "👟 Соломійка взяла кросівки й біжить вниз!"
# Цикл для спускання сходами
puts "✅ Соломійка дійшла до вулиці"

Приклад роботи (Соломійка):

🏃‍♀️ Соломійка на вулиці
Соломійка на 1-му поверсі
Соломійка на 2-му поверсі
Соломійка на 3-му поверсі
Соломійка на 4-му поверсі
Соломійка на 5-му поверсі
Соломійка на 6-му поверсі
Соломійка на 7-му поверсі
👟 Соломійка взяла кросівки й біжить вниз!
Соломійка на 7-му поверсі
Соломійка на 6-му поверсі
Соломійка на 5-му поверсі
Соломійка на 4-му поверсі
Соломійка на 3-му поверсі
Соломійка на 2-му поверсі
Соломійка на 1-му поверсі
✅ Соломійка дійшла до вулиці

2: Створімо футбольну табличку додавання для числа 2 (Див. нижче). Все як і підручнику, але замість чисел – м’ячі ⚽️. Використайте цикл.

Підказка : (i+2) – саме якщо в дужках, буде гарно працювати.

⚽️⚽️+⚽️=⚽️⚽️⚽️
⚽️⚽️+⚽️⚽️=⚽️⚽️⚽️⚽️
⚽️⚽️+⚽️⚽️⚽️=⚽️⚽️⚽️⚽️⚽️
⚽️⚽️+⚽️⚽️⚽️⚽️=⚽️⚽️⚽️⚽️⚽️⚽️
⚽️⚽️+⚽️⚽️⚽️⚽️⚽️=⚽️⚽️⚽️⚽️⚽️⚽️⚽️
⚽️⚽️+⚽️⚽️⚽️⚽️⚽️⚽️=⚽️⚽️⚽️⚽️⚽️⚽️⚽️⚽️
⚽️⚽️+⚽️⚽️⚽️⚽️⚽️⚽️⚽️=⚽️⚽️⚽️⚽️⚽️⚽️⚽️⚽️⚽️
⚽️⚽️+⚽️⚽️⚽️⚽️⚽️⚽️⚽️⚽️=⚽️⚽️⚽️⚽️⚽️⚽️⚽️⚽️⚽️⚽️
⚽️⚽️+⚽️⚽️⚽️⚽️⚽️⚽️⚽️⚽️⚽️=⚽️⚽️⚽️⚽️⚽️⚽️⚽️⚽️⚽️⚽️⚽️
⚽️⚽️+⚽️⚽️⚽️⚽️⚽️⚽️⚽️⚽️⚽️⚽️=⚽️⚽️⚽️⚽️⚽️⚽️⚽️⚽️⚽️⚽️⚽️⚽️

3: Виведіть ось такий кораблик з чисел (Підказка: i.to_s):

1
22
333
4444
55555
666666
7777777
88888888
999999999
10101010101010101010

4: Серед глядачів на стадіоні вирішили влаштувати футбольну лотерею. Квитки мають номер від 1 до 1000. Кожен 33-й квиток виграшний (якщо номер квитка ділиться на 33)! Виведіть всі виграшні квитки на екран.

Уроки програмування для дітей ускладнені завдання level up

Level Up!
Цикл for та while у Ruby

1: Ось фото того, як на стадіони вболівальники підтримують Україну. Для цього вони піднімають листи відповідного кольору, щоб сформувати прапор. Нижче я навела код, як за допомогою вкладених циклів можна намалювати наш прапор. Ваша задача схожим чином намалювати інші картинки нижче.

n=12
m=18
for i in 0..n
    print "\n"
    for j in 0..m
       (i in 0..6)? (print "🟦"):(print "🟨")
    end
end  
Цикл for та while у Ruby | Ruby для дітей | ITisFuture

Пояснення коду :
Вкладені цикли — це коли один цикл знаходиться всередині іншого:
зовнішній цикл (з лічильником “і”) відповідає за рядки,
а внутрішній цикл (з лічильником “j”) — за символи в кожному рядку.
У цій програмі зовнішній цикл багато разів переходить на новий рядок, а внутрішній у кожному рядку друкує символи зліва направо; умова всередині вирішує, який смайлик показати. У результаті програма крок за кроком малює фігуру: спочатку рядок, потім символи в ньому, і так багато разів.

А це малюнки, які треба відтворити. Кольори та емоджі можете змінити, ось приклад для використання: 🟥🟧🟨🟩🟫⬜️⬛️🟪🟦).

Цикл for та while у Ruby | Ruby для дітей | ITisFuture

2: За допомогою вкладених циклів виведіть табличку множення в форматі, як на картинці.

Ruby для дітей | ITisFuture
Ruby для дітей | ITisFuture

Підказка: щоб табличка не з’їжджала і виходила рівною, застосуйте .center(3) до змінної, яку виводите. Наприклад у вас змінна “а”, буде: a.center(3)

Мемчики на завершення 😎:

Мем Жарт про ІТ та програмістів | Ruby для дітей | ITisFuture
Мем Жарт про ІТ та програмістів | Ruby для дітей | ITisFuture
Мем Жарт про ІТ та програмістів | Ruby для дітей | ITisFuture

Не зупиняйтесь у вивченні Ruby! До зустрічі на наступних уроках!

Залишити коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *