На уроці “Запис у файл з Ruby” ви дізнаєтеся, як змусити програму зберігати інформацію у файлі, а не втрачати її після закриття.

Ми навчимося створювати файли та записувати в них дані (важливі і не дуже) за допомогою коду. Виявляється програмно можна записувати дані автоматично. А якщо ще додати цикл, то можна генерувати купу цікавої інформації! Сьогодні розбиратися з такою незвичною темою нам допомагатимуть…. коні.
До нас на урок завітають граційні арабські скакуни, пухнасті поні-непосиди, допитливі лошата-стрибуни і навіть горді фризи з розкішними гривами — тож сьогодні буде швидко, весело й трохи «конячого драйву» у програмуванні!
🐎 🐎 🐎
Папки у Ruby
Що можна зробити з папками? filePath – це шлях до папки, з якою хочемо попрацювати.
puts File.expand_path(__dir__) # покаже, в якій папці файл з програмою
Dir.exist? (filePath) # перевірить, чи папка існує.filePath - шлях до папки
Dir.mkdir(filePath) # створить папку.filePath - шлях до папки
Dir.chdir(filePath) # перейти в іншу папку. filePath - шлях до папки
Dir.pwd # в якій ми папці зараз 
Практика. Дії з папками у Ruby
1: Тож давайте випробуємо всі ці команди. Перевіримо, чи папку з новим ім’ям ще не створили, якщо ні, то ми створимо таку папку. І потім перейдемо в нову папку, щоб там робити нові вправи.
Зауваж, що твій шлях до файлу може відрізнятися від того, що в прикладі
filePath = File.expand_path(__dir__)
puts "Програма тут: #{filePath}"
newDir="Book"
filePath=filePath+"/"+newDir
puts "Нова папка: #{filePath}"
if ! Dir.exist? (filePath) # якщо папка не існує
Dir.mkdir(filePath) # створити папку
end
Dir.chdir(filePath) # перейти в нову папку
puts "Тепер ми тут: #{Dir.pwd}" # в якій папці ми зараз
2: Створіть папку Animals поряд з папкою Book, яку зробили раніше.
3(Додаткове): За допомогою циклу створіть папки horse3, horse5, horse7, horse9 поряд з папкою Book
Файли у Ruby
Модифікатори доступу – це способи відкрити файл, щоб комп’ютер знав, що ми хочемо з ним робити: читати, писати, дописувати чи одразу і те, і те.
Модифікатори доступу до файлів у Ruby

Дії з файлими у Ruby

myfile=File.new(fileName, "a") #створює новий файл з іменем fileName і відкриває доступ на додавання в файл.
myfile=File.new(fileName, "w") #відкриває файл, але перед відкриттям очищає його.
myfile.puts (“Це буде записано в файл”) #записує щось в файл
File.exist?(fileName) # перевіряє чи файл існує
myfile.close # закриває файл після того, як з ним попрацювали4: Створимо файл і запишемо туди щось… наприклад книгу. Але спочатку анекдот:
Василько вихвалявся, що сам написав книгу. І вона вийшла дуже товстою і дуже важкою. Коли його книжку відкрили, то на першій сторінці побачили:


Пролиставши книжку до кінця, на останній сторінці побачили неочікувану розв’язку:

Ми створимо таку ж книжку в нашому файлі:
fileName='myBook.txt'
myfile=File.new(fileName, "w")
content="Василько сів на коня."
myfile.puts (content)
content="Цок-цок, цок-цок, цок-цок, цок-цок,\n"
for i in 1..3
content+="цок-цок, цок-цок, цок-цок, цок-цок,\n"
end
myfile.puts(content)
content="Василько встав з коня."
myfile.puts (content)
myfile.close
5: Замініть модифікатор доступу з “w” на “a”. Запустіть файл кілька разів. Що змінилося ? Чому ?
6: Чому у файл запусуєтсья саме 4 рядки “цок-цок” ? Змініть програму так, щоб запивувалося 35 таких рядків
Практика++. Запис у файл з Ruby
7: Створіть новий файл і запишіть в нього 100 разів цікаву фразу, правило або закон
8: Запишіть у файл візерунок:
🐎
🐎🐎
🐎🐎🐎
🐎🐎🐎🐎
🐎🐎🐎
🐎🐎
🐎
9 (Додаткове): У папці Animals створіть новий файл і запишіть туди список тваринок, які вам подобаються
10 (Додаткове): Створіть по одному файлу у папках horse3, horse5, horse7, horse9 .
В папку horse3 запишіть всі числа від 1 до 100, які діляться на 3.
В папку horse5 запишіть всі числа від 1 до 100, які діляться на 5.
В папку horse7 запишіть всі числа від 1 до 100, які діляться на 7.
В папку horse9 запишіть всі числа від 1 до 100, які діляться на 9.
Спробуйте використати один цикл для цього.

10 (Додаткове): Створіть список з 8ти героїв (фільмів, мультиків…). Створіть два файли yellow.txt та blue.txt – це будуть назви команд. Випадковим чином розподіліть героїв у дві команди: Жовту і Синю. Запишіть склад команди у відповідний файл. Використайте цикл.

Домашня робота
1: Створюємо мультитест! Мультитест – це тест одразу з декількох шкільних предметів. Створіть мультитест і запишіть його у файл. Що треба зробити :
🗂️створіть нову папку і в ній новий файл, в якому будуть завдання тесту. (Створюємо за допомогою ruby!)
🗂️Додайте в файл три запитання з тестовими відповідями (з будь-якого шкільного курсу)

2: Допишіть в файл 10 випадкових прикладів з математики (можуть бути на одну дію).
Щоб отримати випадкові числа використайте : a=rand(1..100) таb=rand(1..100) – записує в змінні а та b випадкове число від 1 до 100
Зробіть цикл, щоб записати їх в файл.
Приклад роботи. Ось так це може виглядати в файлі:


Level Up!
Запис у файл з Ruby
1: Створіть програму, яка генерує веблистівки з привітаннями!
Програма має запитувати кого ми хочемо привітати і давайти вибір з трьох свят, з якими можна вітати (наприклад, Новий Рік, День Народження, Різдво, але можна інші)
Програма створює html файл з привітанням (greating.html). Всередині мають бути базові теги сторінки html і текст в якому вибрану людину вітають з обраним святом.
додайте картинку на сторінку вітання за допомогою ruby.
Щоб протестувати завдання достатньо відкрити html файл в браузері і ви побачите відповідне вітання.
Підказка:
image="http://тут_посилання_на_картинку.jpeg"
content="
<!DOCTYPE html>
<html>
<head>
<meta charset=\"utf-8\">
<title></title>
</head>
<body>
<h1>Привіт, #{name}</h1>
<img src=\"#{image}\">
</body>
</html>
"

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