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


Тема: створення інформаційних моделей та їх застосування до розв'язування задач мовою С++

Мета: навчитися створювати й втілювати комп'ютерні моделі програми у програми для розв'язування задач у середовищі програмування CodeBlocks з С++.

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

Обладнання: ПК з встановленими ОС і середовищем програмування CodeBlocks, (дана) інструкція.

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

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

Хід уроку

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

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

Питання щодо моделювання

  1. Що таке предметна область дослідження?
  2. Наведіть приклади предметних областей.
  3. Що таке модель об'єкта або явища?
  4. Наведіть приклади моделей.
  5. Для чого створюють моделі?
  6. Чим відрізняють об'єкт і його модель?
  7. Що є спільного у об'єкта та його моделі?
  8. Як класифікують моделі за способом подання?
  9. Які моделі називають матеріальними?
  10. Наведіть приклади матеріальних моделей.
  11. Які моделі називають інформаційними?
  12. Наведіть приклади інформаційних моделей.
  13. Які існують види інформаційних моделей?
  14. Наведіть приклади інформаційних моделей.
  15. Як класифікують моделі за галузями використання?
  16. Наведіть приклади навчальних моделей.
Відомості щодо програмування мовою С++

Рядки програми мовою С++, які розпочинають символом #, є вказівками (директивами) для препроцесора. Інакше кажучи, їх опрацьовують (виконують) до компіляції програми.

Запис програми мовою С++ зазвичай розпочинають вказівкою #include, яку використовують для долучення інших файлів до коду програми. Розглянемо приклади використання такої вказівки:

using namespace std; — вказує на використання як усталено простору назв std.

Основна частина програми мовою на C++ має такий вигляд:

main () { тіло програми }

Усі вказівки тіла програми, записані всередині фігурних дужок, буде автоматично виконано після запуску програми. Після кожної такої вказівки записують крапку з комою.

Оголошення змінних в С++ здійснюють таким чином: спочатку вказують тип даних для обраної змінної, а потім назву цієї змінної.

Запис назви змінної або сталої може містити лише літери латиниці, цифри або нижнє підкреслення і має задовольняти такі вимоги:

Вказівка надання значення має такий вигляд: <назва> = <вираз>;
або <назва1> = <назва2> = … = <назваN> = <вираз>;

Наприклад, int a; float b; char d='s'; bool k=true;

Примітка. В С++ запис оператору надання значення (=) не використовують для позначення рівності при порівнянні значень. Для позначення рівності використовують подвійний запис цього самого символу (==).

Оператор введення (з клавіатури) має такий вигляд:

cin >> змінна >> змінна;

де кількість змінних може бути більшою.

Оператор виведення (на екран) має такий вигляд:

cout << вираз << вираз;

де кількість виразів може бути більшою.

Переведення на новий рядок при виведенні даних на екран здійснюють за допомогою оператора endl;

Наприклад, вказівка:

cout << "Hello, world!" << endl;

виводить привітання: «Hello, world!» і здійснює перехід до нового рядка.

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

setlocale (LC_CTYPE, "ukr");

перед відповідною вказівкою cout.

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

if (<умова>) <оператор1>; else <оператор2>;

Тут оператор — довільний простий або складений оператор, у тому числі й умовний оператор. При справдженні умови (значення логічного виразу true) буде виконано оператор1, інакше (значення логічного виразу false) буде виконано оператор2.

Складну умову записують за допомогою таких операцій:

&& — логічне «і» — результат справджується лише за умови справдження обох висловлювань, між якими записано &&

|| — логічне «або» — результат справджується лише за умови справдження хоча б одного з висловлювань, між якими записано ||;

! — заперечення — результат справджується лише за умови хибності висловлювання, перед яким записано !.

Наприклад, запис 3 < d < 8 записують таким чином:

(3 < d) && (d < 8)

Cкладний операторпослідовність операторів, яку компілятор сприймає один оператор — записують у фігурних дужках, завершуючи кожний з них крапкою з комою:

{ оператор1; оператор2; … операторn; };

Умовний оператор Switch-Case (оператор вибору) використовують у тих випадках, коли залежно від значень якої-небудь змінної треба виконати ті чи інші оператори. Він має такий синтаксис:

switch (<вираз>)
{
  case <значення1> : <оператор1>; break;
  case <значення2> : <оператор2>; break;
  …
  case <значенняn> : <операторn>; break;
  default: <операторn + 1>
};


Тут операторn + 1 буде виконано лише у тому випадку, коли значення виразу не збігається ні з одним зі значенняj. Після кожного логічно відокремленого блоку потрібно використовувати оператор break для виходу з оператора вибору.

Для запису повторення певних послідовностей вказівок зручно використовувати цикл for:

for
(
  дія до початку циклу;
  умова продовження циклу;
  дія в кінці кожної ітерації циклy
)
{
  вказівка1;
  вказівка2;
  …
  вказівкаN;
}

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


#include   // Приклад програми мовою С++
#include 
using namespace std;
int main()
{
  cout << "Hello, world!" << endl;
  system ("pause"); // система чекає команди на закриття вікна
  return 0;
}

3. Інструктаж з ТБ
4. Вивчення нового матеріалу


Розглянемо етапи розв'язування задач за допомогою комп'ютера: задача — модель — метод — алгоритм — програма — комп'ютер — результати.

  1. Формулювання й уточнення умови задачі. На цьому етапі розглядають досліджуване явище чи об'єкт, формулюють умову задачі, конкретизують, що дано і що потрібно визначити. Задачі можуть бути різними. Наприклад: визначити швидкість руху велосипедиста, площу саду, об'єм тіла; дослідіти траєкторію польоту парашутиста, літака чи ракети; обчислити заробітну платню службовців, дослідити ефективність діяльності фірми. Задають вхідні дані (відстань між містами, довжини сторін, висоту, оклади, кількість працівників тощо). На цьому етапі важливо отримати якнайбільше даних, необхідних для розв'язання задачі.

  2. Створення моделі задачі — формальний запис, що відображає найістотніші властивості досліджуваного об'єкта або явища і зв'язки між даними. Моделями можуть бути креслення чи сукупності формул, які описують зв'язки між даними. Наприклад:
    s = vt — модель прямолінійного рівномірного руху;
    h = gt2/2 — модель вільного падіння.
    Розглянемо таку задачу: «Визначити, скільки метрів сітки потрібно, щоб загородити сад прямокутної форми зі сторонами 24 м і 50 м, і скільки добрив треба придбати, якщо на 1 м2 витрачають 2,5 кг». У цій задачі про сад моделлю є прямокутник, сторони якого задано цілими або дійсними числами (24 і 50), а зв'язок між даними описано такими формулами:

    • S = ab — площа прямокутника дорівнює добутку довжин двох його непаралельних сторін;

    • P = 2(a + b) — периметр прямокутника дорівнює подвоєній сумі довжин двох його непаралельних сторін;

    • m = Sλ — маса необхідного добрива дорівнює добутку площі ділянки на норму витрат добрива (на одиницю вимірювання площі).

  3. Вибір (пошук) методу розв'язування. Методи розв'язування багатох задач випливають з положень конкретних наук: фізики, хімії, математики, біології, економіки тощо. Інколи таке положення записують за допомогою математичної формули. Наприклад, формула s = vt є описом моделі рівномірного руху тіла, однак не є описом методу для визначення часу t чи швидкості v. Методами будуть формули t = s/v, v = s/t.

  4. Запис алгоритму, який однозначно описує послідовність використання формул чи виконання певних дій.

  5. Створення комп'ютерної програмизапису алгоритму розв'язання задачі згідно з правилами зрозумілої для комп'ютера мови програмування. Коли алгоритм створено і описано структури даних, обирають найпридатнішу мову програмування (в нашому випадку С++) і складають програму цією мовою. Програма має бути правильною, результативною, масовою і зрозумілою. Для простих задач правильність програми є очевидною, інколи її можна довести. Але найчастіше у правильності програми переконуються за допомогою комп'ютерних експериментів з тестами — спеціально підібраними вхідними даними, для яких розв'язки задачі відомі. Лише перевірену (протестовану) програму можна вважати розв'язанням поставленої задачі.

  6. Виконання програми на комп'ютері. На цьому етапі зосереджують увагу на особливостях виконавця алгоритмів — обирають комп'ютер з достатніми можливостями, виконують програму, отримують результати. Наприклад, якщо задачу навчального призначення можна реалізувати на шкільному комп'ютері, то задачі моделювання атмосферних явищ чи взаємодії складних систем потребують спеціалізованих суперкомп'ютерів.

  7. Аналіз результатів. На цьому етапі замовник повинен отримати від виконавця максимум інформації про виконання роботи у зручній для сприйняття формі. Результати досліджень подають у вигляді чисел, таблиць, графіків, креслень, малюнків, рекомендацій тощо. Якщо результати достовірні і задовольняють замовника, то дослідження закінчують оформленням звіту і здаванням робіт замовникові. Якщо ж ні, то процес повторюють, починаючи з етапу, на якому припустилися помилки. Найпоширеніші помилки бувають у програмах, даних, у застосуванні методу розв'язування, побудові моделі задачі, у виборі виконавця робіт тощо.

Розглянемо побудову моделі на прикладі такої задачі.

Задача 1. За градусною мірою двох внутрішніх кутів трикутника визначити вид трикутника:

Якщо трикутник рівносторонній, то діагностику «гострокутний» не виводити.

Розіб'ємо задачу на кілька частин.

  1. Введення градусної міри кутів
  2. Визначення, чи є трикутник рівно­стороннім, рівно­бічним чи різно­сторон­нім.
  3. Визначення, чи є трикутник гостро­кутним, тупо­кутним чи прямо­кутним.
  4. Виведення отриманого результату.

Позначимо дані градусні мірі кутів через a і b. Градусну міру задають дійсним числом, тому змінні a, b повинні мати тип дійсного числа: float, double або long double. Для опису запроваджених змінних скористаємося вказівкою:

float a, b;

Для введення з клавіатури значень a, b використаємо таку вказівку:

cin >> a >> b;

Щоб користувач зрозумів, що він повинен робити, перед введенням значень змінних потрібно написати вказівку виведення на екран запрошення ввести змінну:

cout << "Введіть значення градусних мір двох кутів трикутника : " << endl;

Відомо, що сума внутрішніх кутів трикутника дорівнює 180 градусів:

a + b + c = 180.

Звідси, знаючи значення двох кутів трикутника, можна обчислити третій за формулою:

c = 180 – (a + b).

Це означає, що у програмі потрібно запровадити змінну с і відповідним чином визначити її значення:

float c = 180 - a - b;

Для розв'язання задачі нам знадобляться такі відомості з курсу геометрії щодо визначення виду трикутника за співвідношенням між довжинами його сторін:

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

if (a==b && b==c)
     {cout << "Трикутник рiвностороннiй" << endl; return 0;}
else if (a==b || a==c || b==c)
     {cout << "Трикутник рiвнобедренний" << endl;}
else {cout << "Трикутник рiзностороннiй" << endl;}

Згадаймо й таке:

Для визначення виду трикутника щодо величини кутів використаємо умовний оператор:

if (a< 90 && b< 90 && c< 90) {cout <<"Трикутник гострокутний"<< endl;} else
if (a> 90 || b> 90 || c> 90) {cout <<"Трикутник тупокутний"  << endl;} else
if (a==90 || b==90 || c==90) {cout <<"Трикутник прямокутний" << endl;}

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

5. Вироблення практичних навичок

Примітка. Для кожного із наступних завдань 2–4 програму з назвою — номером завдання записувати у вказану вчителем теку. Про успішне виконання кожного завдання повідомляти вчителя підняттям руки.

Задача 2. Створити програму для визначення, чи існує трикутник з даними довжинами сторін a, b, с:

Алгоритм

  1. Вивести повідомлення: «Ввести значення сторін трикутника».

  2. Ввести значення сторін трикутника a, b, c.

  3. При справдженні усіх таких нерівностей:

    0 < a < b + c;
    0 < b < c + a;
    0 < c < a + b

    вивести повідомлення: «Трикутник існує»,
    інакше вивести повідомлення: «Трикутник не існує».

Задача 3. Створити програму перевірки, чи є задане слово паліндромом, тобто чи його читають однаково з обох боків?

Приклад. Слово СОРОС є паліндромом, а слово ФОРОС — ні.

Алгоритм.

  1. Ввести задане слово.

  2. Починаючи з крайніх літер, порівнювати попарно рівновіддалені від боків символи до першої відмінності або досягнення середини слова (використати цикл з передумовою).

  3. Якщо останні порівняні символи збігаються, вивести повідомлення: «Слово — паліндром», інакше вивести повідомлення: «Слово не є паліндромом».

Задача 4. В касі є монети номіналом 2, 5, 10 копійок. Скількома способами можна отримати решту на суму N копійок?

Порада. Задачу можна розв'язати неоптимальним чином. Наприклад, за допомогою двох вкладених циклів за:

— кількостями монет номіналом відповідно 10 і 5 копійок — і перевіркою парності значення такого виразу:
N – 10 j10 – 5 j5.

Порівняти створені розв'язання з демонстраційними: 2, 3, 4.

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

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


Текст упорядкувала Марина Володимирівна Потужна, вчитель інформатики спеціалі­зованої школи № 73 І–ІІІ ступенів з поглибленим вивченням української мови, літератури та українознавства Шевченківського району міста Києва, під час виконання випускної роботи на курсах підвищення кваліфікації з 5.12.2016 по 9.12.2016.