Тема: cтворення інформаційних моделей та їх застосування до розв'язання задач мовою Ruby
Мета:
Учень повинен:
мати уявлення про зміст понять:
Обладнання: ПК з встановленими ОС, компілятором мови програмування Ruby, текстовим редактором (бажано з підсвіткою службових слів, наприклад, Sublime Text 2).
Структура уроку
Хід уроку
1. Організаційний момент
Вітання з класом, перевірка присутності учнів. Перевірка виконання домашнього завдання.
2. Актуалізація опорних знань
3. Вивчення нового матеріалу
Побудова моделі — це достатньо складне завдання. Уміння правильно змоделювати задачу корисне не лише під час вивчення інформатики, але й у повсякденному житті. Протягом цього уроку ми розглянемо приклади побудови і опрацювання моделей для конкретних задач, з якими ви вже зустрічались. Будемо діяти за таким планом:
Ознайомитися з умовою задачі або чітко сформулювати її.
Проаналізувати умову задачі, тобто знайти відповіді на такі питання:
Передбачити розв'язання задачі з допомогою комп'ютера. Розв'язання задачу необхідно підготувати до втілення його програмою: підібрати формули, встановити порядок виконання дій тощо. Для алгоритмічно складних задач потрібно сформулювати розв'язання у вигляді, зручному для перекладу алгоритмічною мовою.
Задача 1. За час t = 5 с колесо велосипеда радіусом r = 50 см, зробило n = 20 обертів. Визначити: період обертання, частота обертання, швидкість точок обода.
Умову задачі чітко сформульовано, отже пункт 1 плану виконано.
З умови задачі маємо:
дано:
r — радіус колеса;
t — час, обертання;
n — кількість обертів;
потрібно знайти:
T — період обертання;
u — частоту обертання;
v — швидкість точок ободу;
Сценарій розв'язання задачі: cпочатку побудувати інформаційну модель до задачі; знайти період з яким обертається колесо; визначити частоту оберту; після чого визначити швидкість точок ободу.
Розв'яжемо задачу алгебрично, тобто запишемо алгебричні рівності, що описують рівномірний рух колом).
Алгоритм ґрунтується на таких формулах:
T = t / N;
u = N / t;
v = 2πru — див. рівності v = 2πr/T та 1/T = u.
з операторами надання значень параметрам моделі напочатку програми;
з останнім оператором gets для того, щоб вікно виконання програми закривалося лише після додаткового натискання на клавішу Enter, а не одразу після виведення даних.
Запускаємо створену програму на виконання, використавши Командний рядок (Термінал) або активувавши файл програми у середовищі менеджера файлів клацанням. В останньому випадку розширення rb має бути пов'язаним з компілятором мови Ruby.
Для вхідних даних з умови задачі розрахунки такі:
T = 5 / 20 = 0,25 (c) — період повного обертання колеса;
u = 20 / 5 = 4 (c– 1) — частота обертання колеса;
v ≈ 2 ∙ 3,14 ∙ 0,5 ∙ 4 = 12,56 (м/c) — швидкість точок ободу колеса.
Інакше кажучи, маємо отримати виведення таких чисел: 0.25 4.0 12.56 — по одному в рядку.
Примітка. Якщо в операторах надання значень змінним t і n не написати «.0» наприкінці, то змінні t і n матимуть цілий тип, а ділення t/n буде діленням цілих чисел з часткою-результатом 0.
Задача 2. Два об'єкта А і B рухаються в одному напрямку рівномірно по колу із швидкостями V1 i V2 відповідно, V1 > V2. Відомо, що відстань між ними L (у напрямку руху) і довжина кола С. Знайти час і кількість повних кіл, які зроблять об'єкти А і B до зустрічі.
Умова задачі не вимагає уточнення чи переформулювання.
Аналіз умови задачі учні здійснюють самостійно, після чого звіряють з таким:
потрібно знайти:
t — час зустрічі;
n1 — кількість повних обертів, які зробив об'єкт А до зустрічі;
n2 — кількість повних обертів, які зробив об'єкт В до зустрічі.
Сценарій розв'язання задачі: cпочатку побудувати інформаційну модель до задачі; знайти час до зустрічі; визначити періоди обертання об'єктів і кількості повних обертів об'єктів до зустрічі.
Розв'яжемо задачу алгебрично.
Алгоритм ґрунтується на таких формулах:
t = L / (V1 – V2);
T1 = C / V1 — період обертання об'єкта А;
T2 = C / V2 — період обертання об'єкта B;
n1 = t / T1 = L V1 / (C (V1 – V2));
n2 = t / T2 = L V2 / (C (V1 – V2)).
Створюємо програму мовою Ruby:
з оператором gets.to_f на початку програми — оператором зчитування з клавіатури значення дійсного параметра моделі;
з оператором gets наприкінці програми — для того, щоб вікно виконання програми закривалося лише після додаткового натискання на клавішу Enter, а не одразу після виведення даних.
При вхідних даних 18 26 24 120 — значеннях відповідно L, V1, V2 і C — вихідні дані (значення t, n1, n2) мають бути такими 9.0 1.95 1.8.
Примітка. Якщо використовувати запис =gets.to_i замість =gets.to_f, то відповідна змінна набуватиме цілого типу, а її значення буде результатом відкидання у десятковому записі десяткової крапки і всіх символів праворуч (після неї). Така дія не є ні округленням до цілого, ні визначенням цілої частини. Щоб переконатися у цьому, потрібно лише подивитися на результат виведення простої програми мовою Ruby для таких вхідних даних (по одному числу на кожний з чотирьох випадків): 1.1, 1.8, –1.1, –1.8.
4. Інструктаж з ТБ
5. Закріплення вивченого матеріалу
(самостійна робота)
Задача 3. Кулька на краю нитки з довжиною 1,2 м здійснює рівномірний рух колом. Кут між ниткою та вертикалю дорівнює 30°. Кулька робить 60 обертів за півхвилини. Знайти частоту обертання, швидкість кульки й доцетрове прискорення.
5. Підведення підсумків.
Перевірка виконаних завдань, обговорення відповідей і виставлення оцінок за роботу на уроці.
6. Домашнє завдання:
Вивчити матеріал уроку. У разі потреби доробити задачу 3.
Текст упорядкувала Бондарчук Інна Володимирівна, вчитель школи І–ІІІ ступенів № 309 Дарницького району міста Києва, під час виконання випускної роботи на курсах підвищення кваліфікації з 12.09.2016 по 16.09.2016.