52841.fb2
Мета уроку: навчити складати алгоритми з використанням команди розгалуження та записувати їх мовою програмування.
Цей урок можна запропонувати в класах, де рівень підготовки з математики вищий за середній. Як правило, в таких класах кращерозв ‘-язуються задачі, що потребують логічного та образного мислення. Далі пропонується деякі з задач підвищеного рівня складності.
ЗАДАЧА № 120
Умова задачі: Дано натуральне число 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;
{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:=N div 100;
If (N=1000) then First:=l;
Writeln(‘Сума першої та останньої цифр дорівнює’, First+Last);
Readkey;
End.
ЗАДАЧА №128
Умова: Квадратний багаточлен заданий коефіцієнтами а, b, с,де а ≠ 0. Визначити, чи корені відповідного рівняння є парними числами.
Для розв’язання цієї задачі необхідно нагадати дітям алгоритм знаходження коренів квадратного рівняння:
1) обчислити дискримінант;
2) якщо ми отримали від’ємне число, то коренів для розв’язку квадратного рівняння з даними коефіцієнтами а, b, с не існує;
3) якщо дискримінант невід’ємний, то корені рівняння знаходяться.Парність коренів можна визначити, використовуючи операцію знаходження залишку від цілочисельного ділення на 2 (парне число при цьомуу залишку має 0, а непарне — 1). Зверніть увагу на те, що парність абонепарність можна визначити тільки для цілих чисел.
Program Example_128_l;
Uses crt;
Var a,b,c,D,Xl,X2:real;
{a,b,c - коефіцієнти квадратного рівняння; D - дискримінант; XI, X2 - корені квадратного рівняння}
Begin
Clrscr;
Write ( ‘Введіть коефіцієнти квадратного рівняння а,b,с: ‘) ;
Readln(a,b,c);
If a=0
Then writeIn(лПомилка вхідних даних’)
Else
Begin
D:=sqr(b)-4*a*c;
If D<0
Then writeln(‘Рівняння не має розв»язків.’)
Else
Begin
XI:=(-b-sqrt(D))/(2*a); X2:=(-b+sqrt(D))/(2*a);
Writeln(‘Корені рівняння:’);
Writeln(‘Xl=’,X1:8:2);
Writeln(‘X2=’,X2:8:2);
If (round (XI) OX1) or (round(X2) <>X2)
Then writeln(‘Корені рівняння не є цілими числами.’)
else
if (round(Xl) mod 2 =0) and (round(X2) mod 2 =0)
then writeln(‘Корені рівняння парні’)
else writeln(ЛКорені рівняння непарні’);
End;
End;
Readkey;
End.
ЗАДАЧА №130
Умова задачі: Дано дійсні додатні числа а, b, с, х, у. Визначити, чи пройде цеглина з ребрами а, b, с у прямокутний отвір зі сторонами х та у. Проштовхувати цеглину дозволяється лише так, щоб кожне з її ребер було паралельним чи перпендикулярним кожній зі сторін отвору.
Для розв’язання цієї задачі пропонується впорядкувати розміри отвору та розміри цеглини за зростанням, тобто досягти того, щоб було а<=b<=c та х<=у. Тоді перевірка зведеться до порівняння розмірів отвору з найменшими розмірами цеглини (адже ми можемо цеглину розвернути будь-яким боком, щоб проштовхнути її у отвір).
Program Example_130;
Uses crt;
Var a,b,c,x,y,S:real;
(S - допоміжна змінна для обміну місцями значень двох змінних}
Begin
Clrscr;
Write(‘Введіть розміри цеглини: ‘);
Readln(a,b,c);
Write(‘Введіть розміри отвору: ‘) ;
Readln(х,у);
If (a<=0)or(b<=0)or(c<=0)or(x<=0)or(y<=0)
Then writeln(‘Помилка вхідних даних.’)
Else
Begin
{Впорядкування розмірів цеглини)
If а>b
Then Begin S:=а; а:=Ь; 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 writeln(‘Цеглина не пройде у отвір.’)
End;
Readkey;
End.
Домашнє завдання:
• Прочитати сторінки 59—65 запропонованого підручника;
• Задачі № 120, 122, 123, 125, 126 (4,5), 128 (2), 129 (1).