Розв’яжіть задачу:
Віктор, Роман, Леонід та Сергій зайняли на математичній олімпіаді чотири перших місця. Коли їх запитали про розподіл місць, вони дали три відповіді:
Сергій – перший, Роман – другий;
Сергій – другий, Віктор – третій;
Леонід – другий, Віктор – четвертий.
Відомо, що у кожній відповіді тільки одне твердження вірне. Як розподілилися місця?
Віктор - 4, Роман - 3, Леонід – 2, Сергій - 1
Уявіть собі, що ви за кермом автомобіля і перед вами стоїть вибір дальшого руху:
або їхати поганою, але коротшою дорогою, або ж гарною, але довшою.
Звичайно, що ваш вибір буде залежати від певних умов: по-перше, чи є у вас зайвий час, по-друге, хто господар автомобіля?
Подібну проблему завжди вирішують оператори розгалуження.
Загальний вигляд повної форми оператора умовного переходу:
if <логічний вираз> then P1 else P2,
де логічний вираз - це вираз, який може набувати одного з двох значень true або false, Р1 та Р2 - це оператори або процедури
Умова
Серія 1
Серія 2
так
ні
Загальний вигляд скороченої форми оператора умовного переходу:
if <логічний вираз> then P,
де значення вказаних параметрів такі самі, як і в повній формі
Умова
Серія
так
ні
Відмінність між двома формами умовного оператора:
в повній
у скороченій
Складений оператор — це конструкція такого вигляду:
begin
<команда 1>;
…
<команда п>;
end;
Складена команда трактується як одна команда.
Складеним оператором називають послідовність кількох операторів або викликів процедур, розділених символом «;» та взятих в операторні дужки begin ... end.
Знайти найбільше з двох заданих чисел А та В
program z1;
var a, b, max: real;
begin
write ('Задайте два будь-які числа: '); readln (a, b);
if a>b then begin writeln ('Перше число більше за друге.');
max:=а; end else
begin
writeln ('Друге число більше або дорівнює першому.'); max:=b end;
writeln ('Це число -' , max:10:5);
end.
Знайти найбільше з трьох попарно різних величин а, b, с
program z2;
var a, b, c, max: real;
begin
write ('Задайте три будь-які числа: '); readln (a, b, с);
if (a>b) and (a>с) then begin writeln ('Перше число більше за інші два.'); max := а; end else if (b>с) then begin
writeln ('Друге число більше за інші два.'); max := b; end else begin writeln (‘Третє число більше за інші два.');
max := с; end;
writeln ('Це число - ', max:6:2);
end.
Схема цього алгоритму
Внутрішній оператор умовного переходу буде виконано тоді і тільки тоді, коли значення логічного виразу зовнішнього умовного оператора матиме значення false. Це означатиме, що значення змінної а не є найбільшим, тому у вкладеному умовному операторі перевіряється лише значення змінної b. Якщо ж і її значення не є найбільшим, то лишається визнати, що найбільшим є значення змінної с.
Варіант 2. Знайти найбільше з трьох попарно різних величин а, b, с
program max ABC;
var a, b, с, max: real; begin
write ('Задайте три будь-які числа: '); readln (a, b, с);
if (a>b) and (a>с) then begin writeln {'Перше число більше за інші два.'); max:=а; end;
if (b>a) and (b>с) then begin writeln ('Друге число більше за інші два.'); max:=b; end;
if (с>a) and (с>b) then begin writeln (‘Третє число більше за інші два.'); max := с; end;
writeln ('Це число - ', max:6:2);
end.
Висновок
Отже, у першому алгоритмі внутрішній оператор розгалуження виконається тільки тоді, коли нас «пропустить» до нього зовнішній оператор розгалуження. Цей принцип можна порівняти із ситом.
У другому варіанті алгоритму всі оператори розгалуження є послідовними. Тобто всі вони виконуватимуться, перевірятимуть значення своїх логічних виразів і вирішуватимуть, виконувати чи ні вказані в них дії. Крім того, треба зауважити, що використані тут оператори розгалуження мають скорочену форму.
Розв'язання
program z3;
var x,y:real;
begin
writeln('Введіть х'); readln(x);
if x < -1 then y:=ln(abs(x)) else
if (x>=-l) and (x
writeln('x=',x:5:2,' y=‘,y:5:2);
end.
Задача 4
Визначити, чи є задане тризначне число паліндромом (паліндром читається однаково зліва на право і справа на ліво, наприклад, паліндромами є числа 121, 282, слово «наган»).
Розв'язання
program palindrom;
var х:Integer;
begin
Wrіte ('Уведіть ціле число:'); readln(x) ;
if х mod 10 = х div 100 then
Write('Уведене число є паліндромом') else Write('Уведене число не є паліндромом');
end.
Повторимо
Який алгоритм називається розгалуженим?
Які умови називаються складеними?
Які логічні операції ви знаєте?
Як записують скорочену форму команди розгалуження?
Які операції відношення можна записувати в умові?
Домашнє завдання
1. Уведіть вік користувача і його стать (1 - жіноча, 2 - чоловіча). Складіть програму, за допомогою якої красиво привітайтеся з користувачем залежно від його віку й статі.
2. Уведіть дійсне число х. Складіть програму, за допомогою якої визначите, чи є воно коренем рівняння:
а) 15х + 100 = 0;
б) 105 х - 10,18 = 0;
в) 12 х3 -2х2 + 6х + 1 = 0;
г) 17 х4 -12х2 + 2х-1 = 0.
3. Задано вік двох приятелів. Складіть програму, за допомогою якої визначите, хто з них старший.
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.