Я готуюсь до курсу інформатики. Алгоритмізація та програмування



Сторінка4/9
Дата конвертації19.02.2016
Розмір1.47 Mb.
1   2   3   4   5   6   7   8   9

УРОК 13. Вказівка розгалуження

Мета уроку дати поняття про структурні оператори, вказівку розгалуження (повну та скорочену форми) і поняття про прості та складені умови.


Теоретичний матеріал
Структурні оператори являють собою угрупування, побудовані з інших операторів за чітко визначеними правилами. Всі структурні оператори поділяються на три групи складені; умовні; повтору.
Складений оператор — це група з довільного числа операторів, відокремлених один від одного крапкою з комою. Ця група обмежена опера-торними дужками begin і end.
Формат опису
begin
<оператор >;
<оператор >;
end;
Складений оператор сприймається як єдине ціле і може знаходитися в будь-якому місці програми.
Умовні оператори забезпечують виконання або невиконання деякого оператора, групи операторів або блоку залежно від заданих умов. Використовуються умовні оператори в таких алгоритмах, де можливі кілька варіантів розв’язання задачі залежно від початкових умов. У мові Паскаль можливе використання двох умовних операторів if та case.
Умовний оператор (команда розгалуження) є одним із найпоширеніших засобів, що змінюють лінійний порядок виконання операторів програми. Він може набувати таких форм
Перша (або повна) форма
if < умова >
then
begin
<серія 1>;
end
else
begin
<серія 2>;
end;
Друга (або скорочена) форма команди розгалуження
if < умова >
then
begin
<серія >;
end;
У повній формі команди умовного переходу виконується <серія 1>, якщо умова істинна, і <серія 2>, якщо вона хибна. В скороченій формі серія виконується тільки у випадку, якщо умова істинна, інакше команда розгалуження закінчується і виконується наступний за нею оператор.
Один оператор if може входити до складу іншого. У цьому випадку говорять про вкладеність операторів. При вкладеності операторів кожне else відповідає then, що йому передує.
Умова—вираз булівського типу, тобто це речення, на яке можна відповісти «так» або «ні». Умова може бути простою або складеною. Складені умови утворюються з простих за допомогою логічних операцій and, or, not, причому очевидно, що службове слово or використовується, якщо необхідне виконання хоча б однієї умови, а службове слово and - якщо необхідне одночасне виконання всіх умов.
Наприклад, моя подруга запросила мене до кінотеатру. Але я люблю дивитись тільки фантастику та ще й не впевнена, що в мене вистачить грошей на квиток. Отже, до кінотеатру я потраплю тільки якщо там йде кінофільм відповідної тематики та в мене вистачить грошей на квиток.
Другий приклад. Ми отримуємо подарунок від батьків на одне зі свят день народження, Новий рік або День Святого Валентина. Отже, якщо сьогодні один з перелічених днів (мій день народження або 1 січня або 14 лютого), я отримаю подарунок. При цьому очевидно, що не обов’язково народжуватися на Новий рік або на День Святого Валентина.
Службове слово not виконує заперечення умови, тобто, якщо вона була істинною, то стає хибною і, навпаки якщо була хибною — стає істинною. Наприклад, якщо на вулиці не (англійською not) йде дощ, то я залишу вдома парасольку. В цьому випадку «йде дощ» - умова, яка може бути істинною чи хибною в залежності від погоди на вулиці. А слово не заперечує цю умову, тобто робить її хибною, якщо дощ дійсно йде, і навпаки — істинною, якщо дощу немає.
Примітка на цьому етапі можна запропонувати дітям придумати свої приклади простих та складених умов, причому особливу увагу звертайте на правильне використання службових слів «та», «або», «ні».
При написанні програм мовою Паскаль у записі умов можуть використовуватися всі можливі операції відношення (дорівнює, не дорівнює, менше, більше, не більше, не менше тощо). Результат виразу має булівський тип. Наприклад
(х > 4) and (x < 10)
При х = 5 ця умова буде істинною, а при х = 25 — хибною.
ЗАДАЧА № 81
Умова задачі Обчислити значення логічних виразів.
1) х<у
При х = - 2.5, у = 0.1 ця умова буде істинною (запропонуйте дітям вибрати такі значення х та у, при яких ця умова буде хибною).
2) a and not (b — с)
При а = false, b =false, c = true умова буде хибною (false), тому що при з’єднанні двох умов службовим словом and, якщо одна з умов хибна, то й вся умова хибна (зверніть увагу дітей на те, що це легко запам’ятовується, якщо перекласти слово and українською). Дійсно, якщо хоч одна з умов, поєднаних словом «та», не є істинною, то й весь логічний вираз буде хибним.
3) not (a and b) or b = a
При а = true, b = false ця умова буде істинною, тому що (a and b) — хибна (одна з умов хибна); not (a and b) — істинна (заперечність хибності); not (a and b) or b = a — істинна (бо якщо з двох поєднаних службовим словом or умов хоч одна істинна, то весь вираз істинний).
4) not (a and (x < у)) or (x < 0)
При а = true, x = -0.1, у = 0.7 умова буде істинною, тому що друга з умов (х < 0) буде істинною, а при з’єднанні двох умов службовим словом or достатньо одній з них бути істинною, щоб весь логічний вираз був істинним (тобто значення умови (not (a and (x < у))) можна не обчислювати).
ЗАДАЧА № 82
Умова задачі Записати у вигляді логічних виразів висловлювання, наведені нижче
а) значення х не належить інтервалу (0; 1)
(х <= 0) or (х >= 1);
б) точка М(х,у) лежить у другій чверті координатної площини
(х < 0) and (у > 0);
в) точка М(х, у) лежить усередині або на межі одиничного круга зцентром у початку координат
(sqr(x) + sqr(у) <= 1);
г) координати дійсного вектораx(xr xr xj утворюють неспадну послідовність і всі вони невід’ємні
(х1 <= х2) and (х2 <= хЗ) and (x1 >= 0) and (x2 >= 0) and (хЗ >= 0) ;
ґ) 3 > В > С > 0,1
(З > В) and (В >= С) and (C > 0.1) .
ЗАДАЧА № 84
Умова Записати за допомогою умовного оператора виконання дій
а) дійсне значення х замінити абсолютною величиною
if х < 0
then x = -х;
б)менше з двох дійсних значень х та у (або будь-яке з них, якщо вонирівні) замінити нулем
if х < у
then х = 0
else у = 0;
в) присвоїти змінній х значення 0, якщо її початкове значення належалоінтервалу (0,2)
if (0 <= х) and (x <= 2)
then x = 0;
Домашнє завдання
• за підручником прочитати сторінки 47—52;
• вивчити означення, що прочитані на лекції;
• Задачі № 80, № 82 (2, 5, 7, 9), № 84 (3, 5, 6). Для учнів, що маютьвисокий рівень знань, бажано запропонувати задачу № 83.

УРОК 14. Програми з вказівкою розгалуження

Мета уроку навчити складати алгоритми з використанням команди розгалуження та записувати їх мовою програмування.


Практична робота
На початку уроку бажано зробити експрес-опитування за матеріалом попереднього уроку (поняття умови, умови прості та складені, поняття команди розгалуження, її форми, запис мовою програмування та мовою блок-схем). Далі пропонується розглянути типові задачі з використанням команди розгалуження.
ЗАДАЧА № 97
Умова Дано значення дійсних величин а, b, с. Знайти
min((a + b + с) /2, 1/(а2 +l)+l/(b2 +l)+l/(c2 +1)
Використані у програмі змінні, на наш погляд, є очевидними. Тому наводимо програму без пояснень.
Program Example_97_2;
Uses crt;
Var а,Ь,с real;
Rezl,Rez2,Min real; {а,Ь,с - вхідні дамі; Rezl, Rez2 -проміжні обчислення; Міn - результат виконання програми}
Begin
Clrscr; {Очищення екрану}
Write(“Введіть числа а,b,с ‘);
Readln(a,b,c);
Rez=(a + b + с) / 2;
Rez2=sqrt(1/ (sqr (a) +1) + 1/ (sqr (b) +1) +1/ (sqr (c) +1)) ;
If Rezl<Rez2 Then Min=Rezl
Else Min=Rez2;
Writeln(‘Min=’,Min82);
Readkey; {Затримка зображення на екрані}
End.
ЗАДАЧА № 100
Умова Дано значення дійсної величини х. Визначити
х-5___
хг+х-2
На перший погляд діти можуть не зрозуміти, навіщо у цій задачі команда розгалуження. Треба їм нагадати відоме правило ділити на нуль не можна. І тоді розв’язок стає очевидним.
Program Example_100_2;
Uses crt;
Var X,Rezultatreal;
Begin
Clrscr; {Очищення екрану}
Write(‘Введіть значення X ‘);
Readln(X);
If X*X*X+X-2<>0 Then
begin
Rezultat=(X-5)/(X*X*X+X-2);
Writeln(‘Rezultat=’,Rezultat82);
end
Else
Writeln(‘Обчислення неможливі - ділення на нуль!’);
Readkey;
End.
ЗАДАЧА №101
Умова При даному значенні х обчислити
[IMG]_8.jpg[/IMG]
Для розв’язання цієї задачі необхідно пам’ятати, що не можна знайти квадратний корінь з від’ємного числа (зверніть увагу дітей на те, що у прикладі присутні два квадратних кореня).
Program Example_101_4;
Uses crt;
Var X,Rezultatreal;
Begin
Clrscr;
Wrіte(‘Введіть значення Х ‘);
Readln(X);
If (X>=1) and (X*X*X-sqrt(X-l)>=0) Then
begin
Rezultat=sqrt(X*X*X-sqrt(X-l));
Writeln(‘Rezultat=’,Rezultat82);
end
Else
Writeln(‘Обчислення неможливі - від’ємний підкореневий вираз!’) ;
Readkey;
End.
ЗАДАЧА № 107
За рейтинговою системою оцінка визначається таким чином якщо загальний бал учня становить не менше 92% від максимального, то виставляється оцінка 12, якщо не нижче 70%, то — оцінка 8, якщо ж не нижче 50%, то — оцінка 5, в інших випадках - оцінка 2. Визначте оцінку учня, якщо він набрав N балів, а максимальне значення загального балу становить S. У цій задачі можна використати повну або скорочену форму команди розгалуження.
Пропонується розв’язування зі скороченою формою.
Program Example_107;
Uses crt;
Var N,S,Gradeinteger; {N - бали, що набрав учень; S -максимальне значення сумарного балу; Grade - оцінка учня}
Begin
Clrscr;
Wrіte(‘Введіть максимальне значення сумарного балу, що може набрати учень ‘);
Readln(S);
Write (‘Введіть кількість балів, що отримав учень ».) ;
Readln(N);
If (S<=0) or (N<=0) or (N>S)
Then writeln(‘Помилка вхідних даних’)
Else
Begin
N=round(N/S*100); {Знаходження %-відношення балів учня до максимально можливого}
If N>=92 then Grade=12;
If (N<92) and (N>=70) then Grade=8;
If (N<70> and (N>=50) then Grade=5;
If (N<50) then Grade=2;
Writeln(‘Учень отримав оцінку - ‘, Grade);
End;
Readkey;
End.
ЗАДАЧА № 103
Умова На площині дано дві точки (х1 у1 ) та (х2, y2) Визначити, яка з них знаходиться далі від початку координат.
Для розв’язання цієї задачі необхідно скористатися теоремою Піфагорадля знаходження відстані від початку координат до заданої точки (дивись малюнок)
[IMG]_9.jpg[/IMG]
Очевидно, що відстань від початку координат до точки з координатами (х,у) буде обчислюватись наступним співвідношенням

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


Program Example__103;
Uses crt;
Var Xl,Yl,X2,Y2real;
{X1,Y2,X2,Y2 - координати даних точок}
SI, S2real;
{S1,S2 - відстані відповідно до першої та другої точки}
Begin
Clrscr;
Write(‘Введіть координати першої точки ‘);
Readln(XI,Y1);
Write(‘Введіть координати другої точки ‘);
Readln(X2,Y2);
S=sqrt(sqr(Xl)+sqr(Yl)) ;
S2=sqrt(sqr(X2)+sqr(Y2));
If SKS2
Then Writeln(‘Друга точка далі від початку координат’)
Else Writeln(‘Перша точка далі від початку координат’);
Readkey;
End.
Домашнє завдання
• Прочитати сторінки 59—65 запропонованого підручника;
• Задачі № 96 (2), 97 (3), 99, 100 (4), 101 (5), 102 (1), 104, 105.

УРОК 15. Використання вказівки розгалуження

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


На початку уроку повторити поняття умови, умови прості та складені, поняття команди розгалуження, її форми, запис мовою програмування та мовою блок-схем. На цьому уроці пропонується розглянути задачі з використанням команди розгалуження. Звернітьувагу на те, що перед розв ‘язанням цих задач необхідно з учнями розібрати математичну модель задачі, довівши математичні співвідношення, що приведуть до отримання бажаного результату.
ЗАДАЧА № 86
Умова задачі Чебурашка вирішив купити килими, щоб застелити кімнату, в якій він мешкав разом з Геною. їхня прямокутна кімната виявилася розмірами а х b, де а та b—цілі числа. Коли Чебурашка запитав у магазині, які килими є у продажу, то продавець повідомив, що є квадратні килими зі стороною с, де с — ціле число. Яку кількість килимів необхідно придбати Чебурашці, щоб накрити максимальну площу кімнати? Килими не можна накладати та підгинати. Визначити, яка площа кімнати буде не накритою килимами. Передбачити ситуацію, коли розміри килиму перевищують розміри кімнати.
Очевидно, що якщо довжина сторони килиму більша за будь-яку зі сторін кімнати, то застелити її цими килимами неможливо. Крім того, для знаходження кількості килимів, що вміщуються по одній зі сторін кімнати без їх підгинання, необхідно поділити націло довжину кімнати на довжину килиму. Загальна кількість килимів знаходиться за формулою
К = K1 * К2,
де K1 та К2 — кількості килимів, що вміщуються вздовж двох суміжних сторін кімнати.
Площа, що не закрита килимами, визначається як різниця між площею кімнати та площею всіх куплених килимів.
Використані змінні a, b - розміри кімнати; с - розмір килиму; К1, К2 - кількість килимів вздовж однієї та другої стінки відповідно; К — загальна кількість килимів; S - площа кімнати, що не накрита килимами.
Програма, що реалізує алгоритм розв’язку даної задачі, має вигляд
Program Example_86;
Uses crt;
Var a,b,c,Sword;
K,K1,K2 word;
Begin
Clrscr; {Очищення екрану}
Write(‘Введіть розміри кімнати ‘);
Readln(a,b);
Write(‘Введіть розміри килима ‘);
Readln(c);
If (с > a) or (с > b)
Then writeln (‘Кімнату неможливо накрити такими килимами’)
Else
Begin
K=а div с; К2=b div с;
К = К1*К2; S = а*b - К*с*с;
Writeln(‘Кількість куплених килимів ‘, К);
Writeln(‘Площа кімнати, що не накрита килимами ‘, S);
End;
Readkey;
End.
ЗАДАЧА № 89
Умова задачі Від річкового вокзалу відійшли одночасно у протилежних напрямках теплохід та турист. Теплохід рухався зі швидкістю V1 км/ год, а турист по стежці вздовж річки зі швидкістю V2 км/год. Якщо через N годин турист передумає і вирішить попливти річкою назад за теплоходом зі швидкістю V3 км/год, то чи встигне він підсісти на теплохід, який має за графіком зупинку через Y годин після початку руху і стоїть на цій зупинці Z годин? Вважати на те, що всі події відбувалися протягом однієї доби.
Якщо турист на протязі N годин рухався в протилежному напрямку від теплоходу, то відстань між ними в той момент, коли турист вирішив наздогнати теплохід, була наступна
S=(V1+ V2)*N
де V1 та V2 — швидкості теплоходу та туриста відповідно.
Швидкість, з якою турист почне наздоганяти теплохід, — (V3-V1)km за годину, де V3—швидкість, з якою турист попливе навздогін теплохода. Час, який буде у туриста для наздоганяння, (Y-N + Z) годин, тому що зупинка в теплохода буде за розкладом через Угодин після початку руху, але N годин він уже плив, а Z годин теплохід буде стояти на цій зупинці. Тоді за цей час турист пройде відстань
St=(V3-V1)*(Y-N+Z)
Вочевидь, турист встигне підсісти на теплохід тільки в тому випадку, якщо відстань St буде не менше, ніж відстань, на яку теплохід перегнав туриста. Програма, що реалізує запропонований алгоритм, має вигляд
Program Example_89;
Uses crt;
Var Vl,V2,V3real;
N,Y,Z real;
Begin
Clrscr;
Write(‘Введіть швидкості теплоходу та туриста ‘);
Readln(VI,V2);
Write (‘Введіть час, через який турист підсів на теплохід’) ;
Readln(N);
Write(‘Введіть швидкість, з якою турист плив за теплоходом,
час зупинки теплоходу, та тривалість зупинки’) ;
Readln(V3,Y,Z);
If (Vl<=0)or(V2<=0)or(V3<=0)or(N<=0)or(Y<=0)or(Z<=0)
Then writeln(‘Помилкові вхідні дані’)
Else
Begin
S = (V1+V2)*N;
St = (V3-Vl)*(Y-N+Z) ;
If St>=S
Then writeln(‘Турист встигне на теплохід.’)
Else writeln(хТурист не встигне на теплохід.’);
End;
Readkey;
End.
ЗАДАЧА № 90
Умова Жили собі дід і баба, і був у них город прямокутної форми. Довжина городу була А м, а ширина складала В м. Якось дід посварився з бабою і вирішив поділити город порівну. Тепер у діда квадратний город зі стороною С м, відрізаний скраю, а решта дісталася бабі. Визначити, чи не залишилася баба ошуканою та якої форми дістався їй город - прямокутної чи квадратної?
Взагалі задача має дуже простий розв’язок адже бабуся не буде ошуканою в тому випадку, якщо площа городу, що залишилася для неї, не буде меншою, ніж площа дідусевого городу, тобто
C2<=а В-С2
Та це тільки на перший погляд. Насправді в даній задачі може бути велика кількість винятків.
Наприклад, якщо дідусь захоче відрізати собі город зі стороною більшою, ніж сторона загального городу, то це неможливо зробити взагалі. Якщо ж він відріже, то город, що залишиться, може мати квадратну (варіант А), прямокутну (варіант Б) або іншу форми (вариант В) (дивись малюнок)

Програма, що реалізує запропонований алгоритм, має вигляд


Program Example_90;
Uses crt;
Var А,В,Сreal;
Begin
Clrscr;
Write (‘Введіть розміри городу ‘);
Readln(А,В);
Write(‘Введіть довжину сторони дідусевого городу ‘);
Readln(С);
If (A<=0)or(B<=0)or(C<=0) Then writeln (‘Помилкові вхідні дані’)
Else
Begin
If (OA) or (OB)
then writeln(‘Дідусь не зможе відрізати город такого розміру’)
else
begin
If A*B-sqr(C)<=sqr(С) then writeln(‘Бабуся ошукана.’)
else writeln(‘Бабуся не ошукана.’);
If (A<>C) and (B<>C)
Then writeln(‘Город залишився іншої форми’)
Else
If ((A=C)and(B/2=C))or((B=C)and(A/2=C))
then writeln(‘У бабусі квадратний город.’)
else writeln(‘У бабусі прямокутний город.’);
end;
End; Readkey;
End.
ЗАДАЧА № 91
Умова Трьом Товстунам подали на десерт кремові тістечка. Маса одного тістечка —Хкг, а маса Товстунів відповідно X1 кг,Х2 кг та Х3 кг. Перший Товстун з’їв N тістечок. Кожний наступний Товстун з’їдав у два рази більше від попереднього, але при цьому він не міг з’їсти більше половини своєї власної ваги. Скільки тістечок було з’їдено Товстунами за обідом?
Зверніть увагу на те, що другий та третій Товстуни за умовою можуть з’їсти тістечок у два рази більше, ніж попередній Товстун, але не можуть з’їсти більше половини своєї ваги. Тому фактично в задачі необхідно перевірити, чи не перевищує кількість тістечок, що може з’їсти кожний Товстун, дозволену масу, і у відповідності до цього підрахувати кількість тістечок, що були з’їдені.
Наприклад, якщо другий Товстун може з’їсти 2 N тістечок, то вага цієї їжі буде 2 N Хкг. Але за умовою він не може з’їсти більше половини своєї ваги, тобто більше ніж X1 /2 кг. Тому якщо вага тих тістечок, що Товстун може з’їсти, не перевищує поріг X1 /2 кг, то ми до загальної кількості тістечок додаємо всі можливі, тобто 2 N, якщо ж перевищує, то ми додаємо тільки ту кількість тістечок, що не дозволяє перевищити припустимий поріг, тобто X1 /2 /X (дозволена вага їжі поділена на вагу одного «тістечка). Якщо в цьому випадку число вийде нецілим, то це означає, що Товстун з’їв тістечко не повністю. Щоб такого не трапилось, ми робимо відкидання дробової частини після ділення за допомогою функції trunc.
Програма, що реалізує цей алгоритм, має наступний вигляд
Program Example_91;
Uses crt;
Var X,X1,X2,X3real;
N,Counter integer; {N - кількість тістечок, що з’їв перший Товстун; Counter - загальна кількість з’їдених тістечок}
Begin
Clrscr;
Write(‘Введіть вагу тістечка ‘);
Readln(X);
Write(‘Введіть вагу Товстунів (1-го, 2-го та 3-го) ‘);
Readln(X1, Х2, ХЗ);
Write(‘Введіть кількість тістечок, що з’їв перший Товстун ‘) ;
Readln(N);
If (X<=0)or(X1<=0)or(X2<=0)or(X3<=0)or(N<=0)
Then writeln(‘Помилкові вхідні дані’)
Else
Begin
Counter=N; {3’їв перший Товстун}
If N*2*X<=X2/2 Then Counter=Counter+2*N
Else Counter= Counter+ trunc(X2/2/X);
If N*4*X<=X3/2 Then Counter=Counter+4*N
Else Counter= Counter+ trunc(X3/2/X);
Writeln(‘Кількість з’їдених тістечок ‘, Counters
End;
Readkey;
End.
Домашнє завдання
• Прочитати сторінки 59 - 65 запропонованого підручника;
• Задачі №87, 88,93,94.

УРОК 16. Використання вказівки розгалуження

Мета уроку навчити складати алгоритми з використанням команди розгалуження та записувати їх мовою програмування.


Цей урок можна запропонувати в класах, де рівень підготовки з математики вищий за середній. Як правило, в таких класах кращерозв ‘-язуються задачі, що потребують логічного та образного мислення. Далі пропонується деякі з задач підвищеного рівня складності.
ЗАДАЧА № 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,X2real;
{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=’,X182);
Writeln(‘X2=’,X282);
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,Sreal;
(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).
1   2   3   4   5   6   7   8   9


База даних захищена авторським правом ©refs.in.ua 2016
звернутися до адміністрації

    Головна сторінка