Сьогодні ми розберемо рядки та оператор case у Ruby. Ви дізнаєтеся, як працювати з рядками — словами, фразами й текстом у Ruby. А ще ми розберемо оператор умов case, який допомагає програмі приймати рішення, коли є кілька варіантів дій.
Уявіть, що ви — програміст-працівник банку 💰Треба бути дуже уважним, щоб створювати код для таких установ, аже йдеться про великі гроші й репутацію як банку, так і клієнта.
Депозити, картки й валюти… Сідаймо рахувати грошики 💵💴💶💳.
Готові перевірити, як Ruby може керувати банком разом із вами? 😎

Практика. Рядки та оператор case у Ruby
А що сьогодні буде ???
Сьогодні ми запрограмуємо свій мінібанк! Ми будемо виводити статки клієнта й аналізувати його дані! Поїхали!
Список функцій для роботи з символами й зміною регістру у рядках
# Як вивести окремі символи:
d = "Deposit and credit"
puts d * 3 # вивести рядок тричі
puts d[0] # Виведе нульовий символ
puts d[3] # Виведе третій символ
puts d[-2] # Виведе другий з кінця символ
puts d[0,3] #Виведе від 0-го до 2-го символа(до 3-го невключно)
# Зміна регстру: великі-маленькі літери
str = "СrediT"
puts str.upcase # СREDIT - всі символи великі.
puts str.upcase! # СREDIT - всі символи великі. Рядок зміниться в змінній str
puts str.downcase # сredit - всі символи малі.
puts str.downcase! # сredit - всі символи малі. Рядок зміниться в змінній str
puts str.capitalize # Сredit - Перша літера велика, а далі малі.
puts str.capitalize! # Сredit - Перша літера велика, а далі малі. Зміна у str
b = "CuRreNcy"
puts b.swapcase # даний метод перетворює регістр символів на протилежний, тобто, великі літери в малі, а малі в великі
1: Створіть нового клієнта нашого банку. Для цього спочатку створіть змінні з даними про клієнта. Його ім’я, прізвище, стать, номер банківської картки, expdate (дата закінчення строку дії картки), сvv-код (секретний код картки).

fname="" # first name
lname="" # last name
gender="" # M or F . Male(M) for man, Female(F) for woman
email = "" # client's email
card="" # card number ( 16 digits)
expdate="" # Expiry date for card : 4 digits, 2 for month and 2 for year
cvv="" # Secret CVV code 3 digits2: Виведіть на екран за допомогою функцій, які описані вище:
- – Виведіть дату закінчення дії картки: 20 разів.
- – Ім’я : перша літера велика, інші малі
- – Прізвище: великими літерами
- – Пошту: перша літера велика, інші малі
- – Стать: маленькими
- – Номер картки: розділений пробілами через кожні 4 цифри

Список функцій для роботи з рядками й числами
a="100.80"
puts a.to_i # перетворення рядка символів у ціле число
puts a.to_f # перетворення рядка символів у дійсне число;
puts a.to_s # перетворення числа в рядок;
puts "============================="
str = " abcdefg "
puts "💰#{str.strip}💰" # прибирає пробіли
puts str.size # скільки символів у рядку
puts str.length # скільки символів у рядку
puts "============================="
str="abcdefABCDEF123456"
puts str.delete("abc") # видаляє патерн з рядка
puts str.count("a-z") # кількість літер в рядку, що відповідають умові
3: Створіть такі змінні й пропишіть туди значення. У змінну login додайте кілька пробілів.
login="" # clients login
password="" # clients password
balance ="" # money in bank4: Виконайте такі дії:
- Виведіть: $${login}$$. (Для цього треба буде прибрати пробіли)
- Виведіть кількість символів у змінній password.
- Переведіть balance у дійсне число.
- Виведіть balance без копійок
- Виведіть, скільки у login великих літер.
Скільки грошиків у клієнта? Оператор Case.
Оператор case – це один з варіантів умови. Він порівнює вираз, заданий у case з виразом у when, і виконує тільки той код, умова якого збігається з виразом у case.
Якщо жоден вираз у when не збігається з виразом у case – буде виконано код з else.
age = 11
case age
when 0,1,2,3,4,5,6
puts "Ляля"
when 6 .. 14
puts "Дитяча картка"
when 14 .. 100
puts "Доросла картка"
else
puts "Неправильна дитина"
end
5: Чи помічали ви, що залежно від суми, слово “Гривні” відмінюється (10 гривень, 551 гривня, 92 гривні)?
Давайте зробимо так, щоб програма виводила суму на рахунку клієнта. Але, вона має правильно відмінювати слово “гривні”:
Якщо сума закінчується на 0 або 5,6,7,8,9 – “гривень“
Якщо сума закінчується на 1 – “гривня”
Якщо сума закінчується на 2,3,4 – “гривні”

Приклад повідомлення буде:
На вашому рахунку 1240 гривень
Перше, що нам знадобиться, це перевірка останньої цифри. Тож можемо останню цифру записати у змінну lastm. Ось приклад початку програми. За допомогою case запишіть у змінну uah слово гривні у відповідній формі
lastm=balance[-1].to_i
puts lastm
...
puts "На вашому рахунку #{balance} #{uah}"Тернарний оператор
Тернарний оператор придумали для коротких умов, коли є тільки два варіанти для вибору:
умова? якщо_true : якщо_false
mood = day == "Friday" ? "Супер, скоро вихідні! 🎉" : "Тримаємося! 💪"
Такий оператор можна замінити і звичайнісіньким if, але погодьтеся, умова в один рядок виглядає стильно
Якщо умова виконана, спрацює те, що стоїть між питанням і двокрапкою, якщо не виконано те, що після двокрапки.
6: Давайте перевіримо чи наш пароль надійний.
Додаймо перевірки надійності пароля. Якщо кожне з цих правил виконується, то пароль надійний.
🔑Має від 8-ми символів
🔑Має хоча б маленьку латинську літеру (Підказка: password.count(“a-z”)>0)
🔑Має хоча б велику латинську літеру
🔑Має хоча б одну цифру
🔑Має хоча б один спецсимвол
(Підказка: ( password =~ /.*[[:^alnum:]]/ ))

Приклад коду для першої перевірки нижче. Додайте інші перевірки, скористайтеся підказками.
puts "Перевірка пароля"
password="1234ds434"
a=password.length>=8?"+":"-"
puts "#{a} Довжина паролю більше 8-ми символів"



Домашня робота
1: Створіть змінну для національності клієнта банку nationality з таким значенням:
nationality =”ukraInian”
Виведіть значення змінної:
– великими літерами
– малими літерами
– перша літера велика, решта малі
– 10 разів під ряд
Приклад:
UKRAINIAN ukrainian Ukrainian
ukrainianukrainianukrainianukrainianukrainianukrainianukrainianukrainianukrainianukrainian
2: Давайте перерахуємо збереження клієнта(змінна balance) в долари. Курс долара зараз приблизно 42 (1 долар = 42 гривні). Програма має перевести гроші на рахунку клієнта в долари та сказати скільки це.
Зробіть так, щоб програма виводила суму на рахунку клієнта в доларах і правильно відмінювала слово “долар”.
Якщо сума закінчується на 0 або 5,6,7,8,9 – “доларів”
Якщо сума закінчується на 1 – “долар”
Якщо сума закінчується на 2,3,4 – “долари”
В завданні можна не зважати на копійки, округлити до цілого.
Приклад:
У вас на рахунку 244 долари
3: Перевірка пароль.Код нижче – це перевірки з класної роботи
Допишіть цей код так, щоб також перевіряти чи пароль :
– Має хоча б велику латинську літеру
– Має хоча б одну цифру
Також виведіть на екран “Пароль надійний”, якщо пароль відповідає всім вищезазначеним вимогам (тим, що в прикладі й тим, які ви дописали). І “Пароль не надійний”, якщо хоча б одна з вимог не виконується.

puts "Перевірка пароля"
password="1234ds434"
a=password.length>=8?"+":"-"
puts "#{a} Довжина паролю більше 8-ми символів"
b=password.count("a-z")>0? "+":"-"
puts "#{b} Хоча б одна мала літера"
c=( password =~ /.*[[:^alnum:]]/ )? "+":"-"
puts "#{c} Хоча б один спецсимвол" 
Підказка:



Level Up!
Рядки та оператор case у Ruby
1: Перевірте, чи правильне значення змінної expdate та cvv. Це мають бути 4 цифри та 3 цифри відповідно.
2: В змінну а записано текст, в якому всі слова починаються на одну букву.
– Виведіть на екран кількість символів в цьому тексті
– Поміняйте регістр для всього тексту. (Малі букви мають стати великими, а великі малими)
– Виведіть текст без літер М та м
P.s. Всі ці команди описані в тексті уроку
a="Марічка – маленька мандрівниця, мрійниця. Мріє мандрувати морями, милуватися мальвами, милозвучною музикою.
Марійка може майстерно малювати маки, морозник, магнолію, майори, мімозу, мигдаль. Малярство – мрія Марійчиного майбутнього.
Матуся Марійки, Мирослава Михайлівна, милується мистецькими малюнками маленької майстрині, має машину “Мазда”.
Мандруючи, Марійка милується метеликами, мурашками, морськими медузами. Має муркотика Мурзика – м’якенького, миленького, метушливого.
Марійчина мова, мов мелодія, милозвучна. Мир – Марійчина мрія."
3: Депозит для клієнта. Давай розрахуємо, скільки грошей матиме клієнт в різний час, якщо покладе свої гроші на депозит. Поточна ставка депозиту в гривнях – 16% річних. Це означає, що якщо гроші пролежать на депозиті рік, то до суми додадуть ще 16% від суми. Ось приклад змінної, в якій зберігаються гроші клієнта:
a = 4327
to_f нам допоможе рахувати з копійками.
Виведіть на екран:
💰Суму у клієнта на рахунку зараз
💰Скільки грошей банк додасть до суми за рік (відсотки)
💰Скільки всього грошей буде на рахунку за рік
Приклад роботи:
Сума у клієнта на рахунку: 4327.0
За рік він заробить: 692.32
Через рік на його рахунку буде всього: 5019.32


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