Тренуємося, відшліфовуємо навички, складаючи програми з використанням розгалужень
Дано дві сторони прямокутника. Перевірити. чи є він квадратом.
Дане завдання буде легким. якщо ви вчитаєтеся в умову і зрозумієте, що варіантів вибору тут тільки ДВА: квадрат, або НЕ квадрат. Тому, в даному випадку, нам потрібна ПОВНА форма розгалуження. Потрібно отримати одну сторону a
, потім другу b
. Після цього "вмикаємо" розгалуження на перевірку того факту, чи a=b, чи ні. Якщо умова виконується - виводимо повідомлення про те, що наш прямокутник є квадратом, якщо не виконується - виводимо повідомлення про те, що прямокутник НЕ є квадратом. Усе.
Напишіть програму самостійно, а потім перевірте за зразком.
program kvadrat_nekvadrat;
var a,b:real;
begin
write('Введіть першу сторону прямокутника: ');
readln(a);
write('Введіть другу сторону прямокутника: ');
readln(b);
if a=b then writeln('Прямокутник є квадратом!')
else writeln('Прямокутник не є квадратом!')
end.
Скласти програму для обчислення значення виразу:
Ця програма повинна вже містити "обробник помилок", адже ділити на 0 не можна, тому перш ніж обчислювати значення усього виразу потрібно спочатку переірити, чи при таких значеннях a
і b
, які було отримано, значення знаменника a-2b
дорівнює нулю, чи ні. Якщо це так, то нема чого рахувати далі, потрібно виводити повідомлення про неможливість обчислення значення виразу. Ну а якщо знаменник не перетворюється на нуль - тоді обчислюємо значення виразу "по повній програмі" й виводимо відповідь.
Розгляньте скріншот готової програми і розберіться в її елементах:
Зверніть увагу на те, як організоване введення даних (рядки 4-10), а також на те, що знаменник дробу (рядок 14) взято у дужки, оскільки інакше (якщо записати без дужок c/a-2*b
) відповідно до прийнятого в математиці порядку дій (спочатку виконується ділення і множення, а потім віднімання) значення змінної c
буде розділено на значення змінної a
, а потім від результату буде віднято 2*b
, що призведе до помилки.
Обчислити значення виразу
Це завдання аналогічне до попереднього, тож спробуйте впоратися з ним самостійно
program vyraz2;
var x,y,res:real;
begin
writeln('Введіть змінні');
write('x=');
readln(x);
write('y=');
readln(y);
if x-y=0 then writeln('Ділення на нуль!')
else
begin
res:=(x+y)/(x-y);
writeln(res)
end
end.
Обчислити значення складеної функції
Як бачимо, в даному випадку формула, за якою буде обчислюватися значення функції y
, залежить від того, яким було значення аргумента x
. Якщо цей аргумент менший від 5, тоді потрібно піднести його до квадрата, якщо більше або дорівнює 5, тоді просто відняти 5. Оскільки варіантів тільки ДВА, то знову використаємо повну форму розгалуження:
program vyraz3;
var x,y:real;
begin
writeln('Введіть аргумент функції');
write('x=');
readln(x);
if x<5 then y:=sqr(x)
else y:=x-5;
writeln('y=',y)
end.
Обчислити значення складеної функції
Самостійні зусилля - шлях до успіху!
program vyraz4;
var x,y:real;
begin
writeln('Введіть аргумент функції');
write('x=');
readln(x);
if x<0 then y:=7+abs(power(x,3)-10)
else y:=15-sqr(x);
writeln('y=',y)
end.
Можливий і інший варіант:
program vyraz4;
var x,y:real;
begin
writeln('Введіть аргумент функції');
write('x=');
readln(x);
if x<=0 then y:=15-sqr(x); //символ <= означає менше або дорівнює, як в Excel
else y:=7+abs(power(x,3)-10)
writeln('y=',y)
end.
Ну й наостанок, застосуємо наші знання до розв'язання дещо складнішої задачі
Скласти програму для обчислення суми, різниці, добутку або частки двох чисел, в залежності від вибору користувача
Ну, вводимо з клавіатури два числа, а далі... Як розрізнити ЯКУ ДІЮ слід виконувати?
А дуже просто! Відведемо для знака арифметичої дії окрему змінну типу char
(символ) або string
(рядок) і будемо перед виконанням дії перевіряти, що ж там за символ. Якщо там +
- будемо виконувати додавання, якщо *
- будемо множити і т.д.
program calculator;
var a,b:real; op:char; //op - змінна для позначення арифметичного оператора
begin
writeln('Ця програма виконує будь-яку з чотирьох арифметичних дій над двома числами');
writeln('Введіть перше число, потім знак дії (+,-,*,/), потім друге число');
writeln('Після кожного введення натискайте клавішу Enter');
writeln('Ваш приклад: ');
readln(a); //прочитуємо перше число
readln(op); //прочитуємо арифметичний оператор
readln(b); //прочитуємо друге число
if op='+' then write(a,op,b,'=',a+b); //порівняння змінної op з введеним символом
if op='-' then write(a,op,b,'=',a-b);
if op='*' then write(a,op,b,'=',a*b);
{Перш ніж виконувати ділення, спочатку треба перевірити, чи, бува, дільник не дорівнює нулю}
if op='/' then if b=0 then writeln('Ділення на нуль!')
else write(a,op,b,'=',a/b);
end.
Результат роботи програми:
Ну от і все на цей раз. На цьому уроці ми потренувалися створювати програми з розгалуженнями, ознайомилися з поняттям складеної функції і використанням розгалуження для обчислення її значення, в залежності від значення аргумента, а також застосували розгалуження до створення програми з простим вибором подальшого шляху її роботи.
Такого ж типу програму з вибором користувачем того, що треба обчислювати, вам пропонується створити самостійно:
Скласти програму для обчислення за даними сторонами площі або периметра прямокутника за вибором користувача.
Підказки
P=(a+b)∙2
. Отже, нехай програма запитує у користувача одну сторону, потім другу, а після цього просить вибрати, що обчислювати. Якщо користувач введе S
, то програма обчислюватиме площу, якщо P
, то периметр.S
ввести маленьку s
. Що відбулося? Як ви думаєте, чому так?