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

Тема: алгоритми опрацювання величин.

Мета: навчитися складати та виконувати алгоритми з величинами числового типу в середовищі програмування CodeBlocks. Після виконання роботи учень:

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

Хід уроку

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

2. Актуалізація опорних знань
Означити або описати поняття, розглянуті на попередньому уроці й виділені жирним шрифтом у тексті.

Абетка мови С++набір допустимих символів — складається з:

Літери українського алфавіту можна використовувати лише для запису коментарів.

Коментарце частина тексту програми для пояснення програми чи окремих вказівок і не впливає на виконання програми.

Коментар мовою С++ записують так:
// текст коментаря до кінця рядка
/* текст коментаря */

Програми складаються із синтаксичних конструкцій, які називають вказівками (інші назви — оператори, команди, речення). Вказівки будують з неподільних елементів мови: слів, чисел, символів операцій. Слова поділяють на ключові слова й ідентифікатори (назви величин)

Ключові (службові, зарезервовані) слова використовують для запису вказівок і опису об'єктів.

Наприклад: if, else, int, float, const, sqrt тощо. Змінити призначення ключового слова у програмі не можна.

Ідентифікаторце назва, яку надають об'єктам (змінним, сталим, функціям тощо).

Істотною особливістю мови С++ порівняно з іншими мовами є те, що програма складається з функцій, які відіграють роль підпрограм (процедур) в інших мовах.

Головна функція, яка має бути в кожній програмі, — це функція такого вигляду:

int main()
{
 тіло функції;
}


Директиви препроцесоравказівки компілятора, які виконуються на початку компіляції програми і їх відповідно записують на початку тексту програми — у мові С++ починаються із символу #.

Директива #include <назва файлу.розширення> означає приєднання програмного коду зі вказаного файлу.

Найчастіше це стандартні бібліотеки, розташовані у теці INCLUDE і необхідні для виконання вказівок мови С++. Наприклад, для виконання вказівок введення-виведення даних необхідно підключити бібліотеку iostream.h.

Найпростіша програма мовою С++ має такий загальний вигляд:

#include <назва файлу 1.розширення> …
#include <
назва файлу N.розширення>
int main()
 {
  <
тіло функції>;
 }


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

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

Назва величини:

У мові С++ розрізняють малі та великі літери. Наприклад, ідентифікатори sum i Sum — різні.

У програмі С++ всі оголошення об'єктів і вказівки закінчують символом ; (крапка з комою).

Цілі типи

Назва типуОбсяг,
байтів
Діапазон
int2 або 4 –32768..32767 або
–2147483648..2147483647
short int2 –32768..32767
unsigned short int2 або 4 0..65536 або 0..4294967295
long int 4–2147483648..2147483647
unsigned long int40..4294967295

Об'єм пам'яті, яка виділяють під величини типу int та unsigned short int, залежать від розрядності операційної системи: 2 байти в 32-х розрядній і 4 байти в 64-х розрядній системі.

Дійсні типи

Назва типуОбсяг,
байтів
Діапазон
float 4 3.4·10–38..3.4·10+38
double8 1.7·10–308..1.7·10+308
long double10 1.18·10–4932..1.18·10+4932

Для дійсних чисел вказано діапазони зміни абсолютнної величини (модуля). Дійсні числа можна записувати у форматі з фіксованою крапкою (2.56, –0.3) або у науковому форматі (з рухомою крапкою: –0.23e3=–230, 1.45e–2=0.0145)

Логічний тип bool. Змінні цього типу можуть набувати лише величин: false (хибність) і true (істина). Вони займають 1 байт у пам'яті.

Символьний тип char. Змінні цього типу можуть набувати лише величин з кодової таблиці комп'ютера ASCII.

Символьна стала це один символ, узятий в одинарні лапки, або число у 8-, 10- чи 16-й системі числення, яке є кодом символу у таблиці ASCII. Наприклад:

char s='f'; d=102;

3. Вивчення нового матеріалу
Кожне із завдань 1, 2, 3 розв'язувати за допомогою конкурсу ідей, після чого порівнювати отримане розв'язання з поданим демонстраційним.

Завдання 1. Розв'язання рівняння ax + b = 0 на множині дійсних чисел.

Алгоритм

  1. Ввести (зчитати) величини a, b.
  2. Якщо a0, вивести:
    • повідомлення: «Рівняння має єдиний корінь»;
    • величину x = – b/a,
    інакше:
    • якщо b ≠ 0, вивести повідомлення: «Рівняння не має коренів»;
    • інакше вивести повідомлення: «Коренем рівняння є будь-яке число».
Блок-схема
Програма
#include <iostream>
using namespace std;
int main()
{
    double a, b;
    setlocale(LC_CTYPE,"rus");
    cout<<"Введiть a i b - коефiцiенти лiнiйного рiвняння ax + b = 0 \n";
    cin>>a>>b;
         if ( a != 0 ) cout<<"Рiвняння має один розв'язок: "<< -b/a;
    else if ( b == 0 ) cout<<"Будь-яке число є коренем цього рiвняння.";
    else cout<<"Рiвняння не має коренiв.";
    return 0;
}

Завдання 2. Визначити, яка з двох дат передує іншій, не перевіряючи коректність даних.

Алгоритм

  1. При j = 1, 2:
    • ввести вхідні дані dj, mj, yj — число, номер місяця й рік;
    • обчислити nj = dj + 31(mj + 12yj).
  2. Вивести відповідь, виходячи з того, що та дата j передує, для якої число nj менше.
Блок-схема
Програма
#include <iostream>
using namespace std;
int days_in_date(int i)
{
    int d, m, y;
    cout<<"Введiть дату "<<i<<" у форматi (число) (№ мiсяця) (рiк): ";
    cin>>d>>m>>y;
    return d + 31 * ( m + 12 * y);
}
int main()
{
    setlocale(LC_CTYPE,"rus");
    int n1 = days_in_date(1);
    int n2 = days_in_date(2);
    if ( n1 < n2)  cout<<"Перша дата передує другiй";
    if ( n1 > n2)  cout<<"Друга дата передує першiй";
    if ( n1 == n2) cout<<"Перша дата збiгається з другою";
    return 0;
}

Завдання 3. Визначення виду трикутника за градусною мірою двох його кутів.

Алгоритм

  1. Ввести величини A, B.

  2. Обчислити C = 180 – A – B.

  3. Якщо хоча б одна з величин A, B, C не є додатною, вивести повідомлення про те, що трикутника з такими кутами не існує, і завершити виконання програми.

  4. Якщо всі кути будуть однакові, вивести повідомлення про те, що трикутник є рівностороннім, і завершити виконання програми.

  5. Якщо будь-які два кути однакові, вивести повідомлення про те, що трикутник є рівнобедреним, інакше вивести повідомлення, що він є різностороннім.

  6. Якщо один з кутів прямий (градусна міра дорівнює 90), вивести повідомлення про те, що трикутник є прямокутним.

  7. Якщо один з кутів тупий (градусна міра перевищує 90), вивести повідомлення про те, що трикутник є тупокутним.

  8. Якщо усі кути гострі (градусна міра менша ніж 90), вивести повідомлення про те, що трикутник є гострокутним.

Блок-схема
Програма
#include <iostream>
#include <stdlib.h>
using namespace std;
int main()
{
    double a, b, c;
    setlocale(LC_CTYPE,"rus");
    cout<<"Введiть значення двох кутiв трикутника (у градусах) \n";
    cin>>a>>b;
    c = 180 - ( a + b );
    if (( a <= 0 ) or ( b <= 0 ) or ( c <= 0 ))
    {
        cout<<"Такого трикутника не iснує";
        exit(0);
    }
    if (( a == b ) and ( b == c ))
    {
        cout<<"Даний трикутник є рiвностороннiм.";
        exit(0);
    }
    if (( a == b ) or ( b == c ) or ( c == a )) cout<<"Трикутник рiвнобедрений";
    else                                        cout<<"Трикутник рiзностороннiй";

         if (( a == 90 ) or ( b == 90 ) or ( c == 90 )) cout<<" i прямокутний.";
    else if (( a >  90 ) or ( b >  90 ) or ( c >  90 )) cout<<" i тупокутний.";
    else                                                cout<<" i гостокутний.";

    return 0;
}

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

Завантажити інтегроване середовище програмування CodeBlocks і для кожного з розглянутих завдань 1, 2 і 3 робити таке:

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

7. Домашнє завдання

  1. Скласти блок-схему й написати програму для з'ясування, чи існує трикутник з даними довжинами сторін.

  2. Скласти блок-схему й написати програму розв'язання рівняння a/x + b = 0 на множині дійсних чисел.


Текст упорядкувала Домрачева Ольга Федорівна, вчитель Київського спортивного ліцея інтерната Солом'янського району міста Києва, під час виконання випускної роботи на курсах підвищення кваліфікації з 8.09.2013 по 12.09.2013.