Розробка уроку — практичної роботи

Тема: cтворення комп’ютерної моделі процесу взаємопов’язаного функціонування двох чи більше об’єктів.

Мета:

Після виконання роботи учень повинен:

Обладнання: ПК з встановленими ОС, JDK і середовищем програмування мовою Java (подальші ілюстрації подано для NetBeans).

Структура уроку

  1. Організаційний момент
  2. Актуалізація опорних знань
  3. Інструкція з ТБ
  4. Вироблення практичних навичок
  5. Підведення підсумків уроку
  6. Домашнє завдання

Хід уроку

1. Організаційний момент
Вітання з класом. Перевірка готовності учнів до уроку.

2. Актуалізація опорних знань

Згадаймо деякі факти з математики й фізики, необхідні для побудови комп'ютерної моделі взаємодії кількох дисків (куль), які рухаються у межах прямокутника (прямокутного паралелепіпеда), відбиваючись від його стінок і злипаючись у момент дотику в одну. Для моделі плоских фігур (дисків) в усіх формулах нижче потрібно вилучити вирази з аплікатою z.

Відстань між точками A(xA , yA , zA) i B(xB , yB , zB) дорівнює такому виразу:

((xAxB)2 + (yAyB)2 + (zAzB)2)1/2,

де піднесення до степеня 1/2 означає видобування арифметичного (невід'ємного) кореня квадратного.

Координати C(xC , yC , zC) середини відрізка з кінцями A(xA , yA , zA) i B(xB , yB , zB) задовольняють такі рівності:

xC = (xA + xB) / 2;     yC = (yA + yB) / 2;     zC = (zA + zB) / 2,

які еквівалентні таким:

xA = 2xCxB ;     yA = 2yCyB ;     zA = 2zCzB .

Рівномірний прямолінійний рух матеріальної точки у 3-вимірному означає таку зміну координат з плином часу t:

x(t) = x(0) + vx t ;     y(t) = y(0) + vy t ;     z(t) = z(0) + vz t ,

де:
x(t), y(t), z(t) — координати у момент часу t;
vx, vy, vz — сталі проєкції швидкості на осі координат.

Пружне відбивання від площини {x = a} матеріальної точки, яка, крім моменту удару, рухається рівномірно і прямолінійно, означає таке:

Внаслідок цього у довільний момент часу після відбивання відрізок, який сполучає відбиту і невідбиту точки:

Позначимо:

Наступні перетворення формулами задають перехід від властивостей невідбитої до властивостей відбитої матеріальної точки:

(x₀ , y₀ , z₀) (2a – x₀ , y₀ , z₀),        (vx , vy , vz) ( – vx , vy , vz).

Якщо замість матеріальної точки розглянути кулю радіуса r з координатами центра (x₀ + r, y₀ + r, z₀ + r), формули будуть такими самими, як і для матеріальної точки, крім формули для абсциси x. Маємо еквівалентність з відбиванням матеріальної точки, що збіється з центром кулі:

У загальному випадку маємо: x₀ 2(ar ∙ sign vx) – x₀.

Заміною літер "x", "y", "z" з поданих вище формул можна отримати формули для відбивання від площини {y = a} або {z = a}.

Закони збереження маси й імпульсу класичної механіки при "злипанні" двох куль в одну призводять до справдження таких рівностей:

m = m1 + m2;

x = (m1 x1 + m2 x2) / m;
y = (m1 y1 + m2 y2) / m;
z = (m1 z1 + m2 z2) / m,

vx = (m1 v1x + m2 x2x) / m;
vy = (m1 v1y + m2 x2y) / m;
vz = (m1 v1z + m2 x2z) / m,

де:

m — маса кулі — результату "злипання";
m1 , m2 — маси куль до зіткнення;
x1 , y1 , z1 — координати центра кулі маси m1, якби вона не "злиплася" з іншою;
x2 , y2 , z2 — координати центра кулі маси m2, якби вона не "злиплася" з іншою;
x, y, z — координати центра мас системи двох куль — центру результату злипання;
vx , vy , vz — координати швидкості центра мас системи двох куль — центру результату злипання;
v1x , v1y , v1z — координати швидкості кулі маси m1 до зіткнення;
v2x , v2y , v2z — координати швидкості кулі маси m2 до зіткнення.

3. Вивчення нового матеріалу
Ознайомитися з описом від початку і до прикладу 1 включно та з прикладом 25.

4. Інструктаж з ТБ
5. Вироблення практичних навичок


Завдання 1. Створити проект «Колонія водоростей», в якому є спочатку кілька персонажів — колоній одноклітинних зелених водоростей однакової маси, які буде зображено кругами однакового радіусу. Вони рухаються прямокутним полем рівномірно і прямолінійно до дзеркального відбивання від його меж або до дотику двох колоній, після якого відбувається злипання і перетворення двох на одну колонію при збереженні маси й імпульсу руху (сума добутків мас і швидкостей). Радіус зображення пропорційний кореню квадратному маси колонії (тобто маса пропорційна площі відповідного зображення), а його центр є центром мас двох колоній, що злипаються.

Швидкість зміни кадрів 10 на секунду.

У початковий момент (виконання програми):

Вказівки до виконання

  1. Завантажити середовище програмування NetBeans.

    Тут і далі проілюстровано англомовний інтерфейс версії 12.3 NetBeans при ОС Linux Mint 20 Mate. Російськомовний інтерфейс буде використано, якщо мовою інтерфейсу операційної системи буде російська. Наразі україномовний інтерфейс для Netbeans не передбачено.

  2. Cтворити проєкт graphtest:

    • або натиснути клавіші Ctrl + Shift + N,
      або натиснути кнопку New Project,
      або використати вказівку меню;

    • у вікні діалогу New Project (Создать проект) вибрати:
      • в області Cathegories (Категории) — Java with Ant;
      • в області Projects (Проекты) — Java Application (Приложение Java);
      і натиснути кнопку Next (Далее);


    • у вікні діалогу New Java Application (Новое Приложение Java) здійснити таке:
      • ввести назву graphtest у поле Project name (Имя проекта);
      • за вказівкою викладача:
        • встановити прапорець Use Dedicated Folder for Storing Libraries
          (Использовать отдельную папку для хранения библиотек);
        • у полі Liraries Folder (Папка с библиотеками) вказати місце
          розташування теки бібліотек ;
      • клацнути по кнопці Finish (Готово);


    • отримати такий вигляд вікна програми.

  3. Замінити вміст файлу Graphtest.java на інший, раніше розглянутий у прикладі створення анімації з використанням класів Timer і TimerTask.

  4. Вилучити з файлу Graphtest.java вказівки роботи із зображеннями та лічиль­ником кадрів j, замінити назву вікна на "Модель дисків, що злипаються".

  5. Зберегти проект: або використати вказівку меню Файл / Сохранить всё, або натиснути кнопку з такою самою назвою на панелі інструментів.

  6. Перевірити працездатність проекту, запустивши на виконання: натиснувши або клавішу F6, або кнопку Run Project (Запустить проект) на панелі інструментів. У вкладенні Output (Вывод), розташованому в нижній частині вікна середовища програмування, прочитати повідомлення про успішне виконання пакету і час роботи або повідомлення про помилки. У разі неправильної роботи програми виправити помилки у коді програми. При потребі порівняти створений код з очікуваним.

  7. Створити файл Ball.java:

    • в контекстному меню пакунку graphtest вибрати New / Java Class... (Новый / Класс Java);


    • у вікні діалогу New Java Class:
      • в області Class Name (Имя класса) ввести Ball;
      • в області Package (Пакет) ввести graphtest;
      • натиснути кнопку з написом Finish (Готово);

  8. У файлі Ball.java описати об'єкт, що моделюватиме диск:

    • загально-доступні дійснозначні властивості (public float):
      • абсциса центра;
      • ордината центра;
      • приріст абсциси;
      • приріст ординати;
      • радіус;
      • квадрат радіуса;
    • метод move — переміщення у наступне розташування прямолінійним рівномірним рухом з можливим відбиванням від меж прямокутної області.

    Якщо після введення програми з'являться червоні позначки ліворуч, потрібно натиснути лівою кнопкою миші на позначці для вибору підказки. Порівняти з очікуваним.

  9. Внести зміни у код Graphtest.java.

    1. Запровадити такі загальнодоступні властивості класу Graphtest:

        public static int
           w = 360, // ширина прямокутної області
           h = 360, // висота прямокутної області (без висоти заголовку)
           r = 10,  // початкове значення радіуса круга 
        vmax = 5,   // верхня межа початкової швидкості
           n = 20,  // початкова кількість кругів
           d = 24;  // висота заголовку вікна
        Ball [] ball = new Ball[n];
    2. В конструктор класу Graphtest внести зміни:
      • вказати розміри вікна w, h+d;
      • створити масив кругів;
      • задати початкові значення властивостей кругів без перетинів.

      Примітка. Якщо учень не знає, як розташувати круги без перетинів, він може розташувати круги з перетинами і застосувати процедуру злиття дисків для отримання початкового стану. Але таке відхилення від плану понижує оцінку на 1 бал.

    3. В переозначення методу paint внести зміни:
      • створити буфер зображення розміру (w, h+d);
      • заповнити його чорним тлом;
      • подати зображення зелених кругів.

    4. У код класу Step внести зміни після вказівки repaint:
      • застосувати метод move до перших n дисків;
      • застосувати таку заготовку коду:
        j=0;
        while ((j<n-1) && (0<n))
        { k=j+1;
          while (k<n)
          { if (/* умова перетину кругів */)
            { /* "склеювання" круг */)
              n--;
              k--;
            }
            k++;
          }
          j++;
        }
        для обчислення оновлених координад центрів кругів.
  10. Перевірити працездатність програми. У разі потреби змінити код.

  11. Зберегти проект і повідомити вчителя про завершення роботи.

6. Підбиття підсумків уроку
Виставлення оцінок.

7. Домашнє завдання
У разі потреби завершити роботу над програмою. Порівняти з демонстраційним розв'язанням.

Завдання 2. Створити програму «Папуги», в якому є такі персонажі: Рудий Кіт та 6 папуг — по два червоного, жовтого та зеленого кольору. Папуги сидять по колу, їх занумеровано послідовними натуральними числами від 1 до 6. Рудий Кіт — у центрі кола. З інтервалом 3 секунди Кіт називає два різні випадкові натуральні числа у межах від 1 до 6 включно — номери папуг. Якщо ці папуги однакового кольору, нічого не відбувається. Інакше, якщо їхній колір різний, вони змінюють свій колір на один і той самий, який відмінний від кольору їх обох. Зображення знайти або виготовити самостійно.


Текст упорядкував Олександр Рудик.