Тема уроку: Використання вказівки розгалуження у мові програмування

Мета уроку:
1)    навчальна: навчити розв’язувати задачі з ви¬користанням команди розгалуження та записувати їх мовою програмування.
2)    виховна: виховувати у учнів цікавість до предмета, бережливість, почуття відповідальності
3)    розвиваюча: розвивати у учнів логічне мислення, уяву, увагу, пам¢ять.

Тип уроку:  урок закріплення знань

ХІД УРОКУ
І. Організаційна частина
1)    привітання з учнями
2)    перевірка присутності учнів на уроці
3)    призначення чергових
ІІ. Повідомлення теми та  мети уроку.  Мотивація навчальної діяльності.
Тема нашого сьогоднішнього уроку: „Розв¢язок задач з використанням вказівки розгалуження”
Тобто сьогодні на уроці ми повинні  забезпечити засвоєння правил використання вказівки розгалуження при розв¢язку задач програмування.
Можливо декого з вас зацікавить питання, для чого це вам потрібно?
Досвід практичної діяльності дозволив людині виробити спосіб розв¢язування складних задач, який називається програмуванням. Поняття програми є одним із базових понять інформатики і обчислюваної техніки. Мова програмування вказує, які операції оброблення даних і в якій послідовніості необхідно записати, щоб одержати розв¢язок задачі.
ІІІ. Розв¢язок задач
А зараз ми з вами закріпимо тему минулого заняття. Тобто перейдемо до задач сьогоднішнього уроку.
Задача № 118
Умова: Дано трикутник зі сторонами а, Ь, с. Визначити, який це трикутник: гострокутний, ту¬покутний чи прямокутний.
Для розв’язання цієї задачі необхідно нагадати учням наступне:
1)    з відрізків заданої довжини можна утворити трикутник тільки в тому випадку, якщо сума дов¬жин будь-яких двох відрізків більша за довжину третього відрізка;
2)    якщо з трьох відрізків можна побудувати три¬ кутник, то він буде прямокутним тоді й тільки тоді, коли виконується теорема Піфагора, тобто коли сума квадратів двох сторін дорівнює квадрату тре¬тьої                                    (це співвідношення може виконуватися для однієї пари сторін);
3)    для гострокутного та тупокутного трикутників теорема Піфагора перетворюється на нерівність, причому для гострокутного повинні виконуватись всі три нерівності, а для тупокутного хоча б одна (дійсно, в гострокутному трикутнику всі кути менші за 90°, а в прямокутному та тупокутному хоча б один дорівнює або більше 90° відповідно).
Крім того, очевидно, що довжини всіх сторін не можуть бути від’ємними або нульовими.
Отже, програма для розв’язання цієї задачі має наступний вигляд:
Program Example_118;
Uses crt;
Var a,b,c:real;
Begin
     Clrscr;    (Очищення екрану)
     Wrіte(‘Введіть довжини сторін: ‘);
      Readln(a,b,c);
      If (a<=0) or (b<=0) or (c<=0)
      Then wrіteln (‘Помилка вхідних даних.’)
        Else
           Begin
                 If (a+b<c) or (a-c< b) or (c+b<a)
                  Then writeln (‘3 відрізків отакої, довжини утворити трикутник неможливо.’)
                 Else
                     Begin   
                           If (sqr(a)+sqr(b)=sqr(c)) or
                               (sqr(a)+aqr(c)=sqr(b)) or
                               (sqr(c)+sqr(b)=sqr(a))
                            then
writeln(‘Трикутних прямокутний’);
                            If (sqr(a)+sqr(b) > sqr(c)) and
                                (sqr(a)+sqr(c) > sqr(b)) and
                                (sqr(c)+sqr(b) > sqr(a))
                             then
writeln(‘Трикутник гострокутний’);
                             If (sqr(a)+sqr(b) < sqr(c)) or
                                 (sqr(a)+sqr{c) < sqr(b)) or
                                 (sqr(c)+sqr(b) < sqr(a))
                             then
writeln(‘Трикутних тупокутний’);
                        end
                 End;
              Readkey;,
(Затримка зображення на екрані до натискання будь-якої клавіші) End.
Задача № 120 (2)
Умова: Дано натуральне число N (N>1000). Виз¬начити суму першої і останньої цифр даного числа. Для розв’язання цієї задачі ми скористаємося стандартними операціями цілочисельного ділення та остачі від ділення цілих чисел (операції div та mod).
Нагадаємо, що результатом ділення числа націло на 10 буде ефект відкидання «молодшої» цифри числа (відповідно при діленні на числа 100,1000, 10000 тощо будемо «відкидати» дві, три або чотири цифри числа). Результатом ж операції знаходжен¬ня залишку від ділення на 10 буде остання цифра числа (відповідно при знаходженні залишку від ділення на 100, 1000, 10000 будемо отримувати дві останні, три останні, чотири останні цифри чис¬ла). Наприклад:
234 div 10 = 23
9213 div 100 =92
52 mod 10 = 2
2845 mod 1000 = 845.
Виходячи з усього сказаного, програма буде мати наступний вигляд:
Program Example_120_2;
Uses crt;
Var N, First, Last : word;
{H - дане число; First - перша цифра числа; Last – остання цифра числа)
Begin
     Clrscr;
{Очищення екрану)
     Write(‘Введіть число: ‘);
      Readln(N);
      Last := N mod 10;
      If (N>=0) and (N<10) then First:=0;
       If (N>=10) and (N<100) then First :=N div 10;
      If (N>=100) and (N<1000) then First :=H div 100;
      If (N=1000) then First:=l;
      Writeln{‘Сума першої та останньої цифр дорівнює’, First+Last);
       Readkey;
{Затримка .зображення на екрані до натискання будь-якої клавіші) End.
Задача № 124
Умова: Дано натуральне число N (N799). Визна¬чити, чи правильно, що N3 дорівнює кубу суми цифр цього числа.
Program Example_100_2;
Uses crt;
Var N, С1, С2 :  word;
{N - дане число; C1,C2 - перша та друга цифри числа)
Begin
    Clrscr;
{Очищення екрану)
      Write(‘Введіть число: ‘);
       Readln(H);
       If N>99
       Then writeln (‘Помилка вхідних даних’)
        Else
            Begin
                  C1:=N div 10;
                  C2:=N mod 10;
                  If sqr(N)=sqr(C1-C2)*(Cl+C2)
                  Then writeln (‘Правильно.’)
                   Else Writeln (‘Неправильно.’);
            End;
       Readkey;
(Затримка зображення на екрані до натис¬кання будь-якої клавіші)
End.
Задача № 126 (3)
Умова: Дано натуральне число N (N9999). Враховуючи всі чотири цифри числа, визначити, чи правильно, що воно містить дві пари цифр, що повторюються.
Для розв’язання цієї задачі теж користуємось операціями ділення націло та знаходження залиш¬ку від ділення націло для виділення цифр числа, а потім розглядаємо всі можливі варіанти збігу пар цифр числа:
перша — друга та третя — четверта цифри;
перша — третя та друга — четверта цифри;
перша — четверта та друга — третя цифри.
Program Example_126_3;
Uses crt;
Var N,Cl,C2,C3,C4:word;
{N - дане число; C1,C2,C3,C4 - відповідні цифри числа)
Begin
     Clrscr;         {Очищення екрану)
      Write(‘Введіть число: ‘);
      Readln (H) ;
        If N>9999
      Then writeln(‘Помилка вхідних даних’)
      Else
          Begin
               C1:=N div 1000;
               C2:=N div 100 mod 10;
               C3:=N div 10 mod 10;
               C4:=H mod 10;
               If ((C1=C2) and (C3=C4)) or
                   ((C1=C3) and (C2=C4)) or
                    ((C1=C4) and (C2=C3))
                Then writeln (‘Правильно.’)
               Else Writeln (‘Неправильно.’);
          End;
     Readkey;
{Затримка зображення на екрані до натискання будь-якої клавіші) End.
Задача № 128 (1)
Умова: Квадратний многочлен заданий коефі¬цієнтами а,b,с, де a≥O. Визначити, чи корені відпо¬відного рівняння є парними числами.
Для розв’язання цієї задачі необхідно нагадати дітям алгоритм знаходження коренів квадратного рівняння:
1)    обчислити дискримінант за формулою
D = b2-4 a c;
2)    якщо ми отримали від’ємне число, то коренів для розв’язку квадратного рівняння з даними кое¬фіцієнтами а, Ь, с не існує;
3)    якщо дискримінант невід’ємний, то корені рівняння знаходяться за наступними співвідношеннями:
Парність коренів можна визначити, використо¬вуючи операцію знаходження залишку від цілочисельного ділення на 2 (парне число при цьому у залишку має 0, а непарне — 1). Зверніть увагу на те, що парність або непарність можна визначити тільки для цілих чисел.
 Program Exaraple_128_l;
Uses crt;
Var a,b,c,D,X1,X2:real; (а,Ь,с - коефіцієнти квадратного рівняння; D — дискримінант; XI, Х2 - корені квадратного рівняння)
Begin
     Clrecr;    {Очищення екрану)
     Write ( ‘Введіть коефіцієнти квадратного рівняння а,Ь,с: ‘);
     Readln(a,b,c) ;
      If a=0
       Then wrіteln ( ‘ Помилка вхідних даних’)
       Else
         Begin
             D:=sqr (b)-4*a*c;
             If D<0
            Then
writeln ( ‘ Рівняння не має розв’язків’ )
               Else
               Begin
                     X1:=(-b-sqrt (D))/(2*a) ;
                     X2:=(-b+sqrt(D))/(2*a) ;
                     Wri teln ( ‘Корені рівняння: ‘ ) ;
                           Wri teln ( ‘Х1=‘ ,X1 : 8 : 2) ,
                                     Writeln(‘X2=‘ ,X2:8:2) ;
                       If (round (XI) 0X1) or < round (X2) 0X2)
                          Then
wrіteln ( ‘Корені рівняння не є цілими числами. ‘ )
                     else
                         if (round (XI) mod 2 =0) and
                               (round (X2) mod 2 =0)
                           then
wrіteln (‘ Корені рівняння парні’)
                        else
wrіteln ( ‘Корені рівняння непарні’);
                          End;
                   End;
              Readkey;
{Затримка зображення на екрані до натискання будь-якої, клавіші)
End.
Задача № 130
Умова: Дано дійсні додатні числа а, b, с, х, у. Визначити, чи пройде цеглина з ребрами а,b,с у прямокутний отвір зі сторонами х та у. Проштовхувати цеглину дозволяється лише так, щоб кожне з її ребер було паралельним чи перпендикулярним кожній зі сторін отвору.
Для розв’язання цієї задачі пропонується впо¬рядкувати розміри отвору та розміри цеглини за зростанням, тобто досягти того, щоб було а<=b<=с та х<=у. Тоді перевірка зведеться до порівняння розмірів отвору з найменшими розмірами цеглини (адже ми можемо цеглину розвернути будь-яким боком, щоб проштовхнути її у отвір).
Program Ехашр1е_130;
Uses crt;
Var a,b,c,x,y,S:real;
(a,b,c - розміри цеглини; x,y - розміри отвору, S — допоміжна змінна
для обміну місцями значень двох змінних)
Begin
     Clrscr;    {Очищення екрану)
      Write ( ‘Введіть розміри цеглини:  ‘) ;
      Readln(a,b,c) ;
      Write ( ‘Введіть розміри отвору: ‘) ;
       Readln(x,y) ;
       If (a<=0) or (b<=0)
or (c<=0) or (x<=0) or (y<=0)
        Then wrіteln ( ‘Помилка вхідних даних.’)
        Else
         Begin 
              If a>b
               Then
                     Begin
                           S:=a; a:=b; b:=S;
                      End;
                 If a>c Then
                      Begin
                           S:=a; a:=c; c:=S;
                       End;
                     If b>c
                    Then
                          Begin
                                S:=b; b:=c; c:=S;
                           End;
                         If x>y
                       Then
                            Begin
                                  S:=x; x:=y; y:=S;
                              End;
                          If (a<=x) and (b<=y)
                          Then
writeln ( ‘Цеглина пройде у отвір.’)
                           else
wri teln ( ‘Цеглина не пройде у отвір . ‘ )
                      End;
                   Readkey;
{Затримка зображення на екрані до натискання будь-якої клавіші) End.
ІV. Підведення підсумків уроку
1.    Аналіз діяльності учнів на уроці.
2.    Виставлення оцінок та їх мотивація
Домашнє завдання:
•    прочитати сторінки 59-65 запропонованого підручника;
•    задачі № 120, 122, 123, 125, 126 (4,5), 128 (2), 129 (1).