Назад
Зміст
Вперед
Складений оператор. Операторні дужки
Якщо при деякій умові потрібно виконати декілька операторів, то їх беруть у операторні дужки (begin end). Декілька операторів, взятих у операторні дужки, називаються
складеним оператором. Якщо складений оператор стоїть після then, то символ «;» після
end перед else не ставиться.
Приклади роботи оператору
Оператори, що виконуються, у програмі виділені жирним.
Програма | Результат роботи програми |
Program F1;
var x,y:integer;
begin
x:=10;y:=20;
if x > y then
begin x:=1; y:=2 end
else begin x:=2; y:=1;end;
writeln(x,' ',y);
end.
|
2 1
Пояснення. Виконуються оператори, що стоять після else, а потім writeln
|
Program F2;
var x,y:integer;
begin
x:=10;y:=20;
if x < y then
begin x:=1; y:=2 end
else begin x:=2; y:=1;end;
writeln(x,' ',y);
end.
|
1 2
Пояснення. Виконуються оператори, що стоять після then, а потім writeln
|
Program F3;
var x,y:integer;
begin
x:=10;y:=20;
if x < y then
begin x:=1; y:=2 end
else x:=2; y:=1;
writeln(x,' ',y);
end.
|
1 1
Пояснення. Виконуються оператори, що стоять після then, а потім y:=1 та writeln. Оператор y:=1 виконується, бо він не відноситься до else
|
Program F4;
var x,y:integer;
begin
x:=10;y:=20;
if x < y then
begin x:=1; y:=2 end
else begin x:=2; y:=1; end;
x:=0; y:=0;
writeln(x,' ',y);
end.
|
0 0
Не залежно від значень x та y відповідь завжди буде 0 0, бо оператори x:=0; y:=0
стоять після умовного оператору і виконуються при будь-який умові |
Приклад 1
Дано три цілих числа. Знайдіть середнє арифметичне парних.
Знаходження середнього арифметичного
sa:=0; початкове значення |
if k<>0 then sa:=s/k;
де s – сума чисел, а k – їх кількість |
Дано: Дано три будь-яких цілих числа
Знайти: суму та кількість парних, а потім
поділити суму на кількість
Змінні:
Вхідні:
-
a – перше число
-
b – друге число
-
c – третє число
Вихідні:
Проміжні:
-
s – сума парних
-
k – кількість парних
Всі вхідні дані цілого типу (integer), тому сума теж цілого типу. Кількість завжди цілого типу. Середнє арифметичне дійсного типу (real), бо це результат ділення.
Алгоритм
- Введення чисел a, b, c.
-
Встановлення початкового значення суми, кількості, середнього арифметичного s:=0; k:=0; sa:=0.
-
Перевіряємо кожне число на парність:
- якщо a - парне, то додаємо його до суми s:=s+a та збільшуємо лічильник k:=k+1. Ці два оператори виконуються при одній умові, тому беруться в операторні дужки: перед першим begin
і після другого end. Тобто begin s:=s+a; k:=k+1; end;
- якщо b - парне, то додаємо його до суми s:=s+b
та збільшуємо лічильник k:=k+1;
- якщо c парне, то додаємо його до суми s:=s+c та збільшуємо лічильник k:=k+1.
- Чисел 3, отже, потрібно 3 перевірки, 3 неповних умовних оператора з операторними дужками.
- Для знаходження середнього арифметичного потрібно отриману суму поділити на отриману кількість. Але, якщо всі введені числа будуть непарні, ми отримаємо ділення на 0. Тому перед обчисленням середнього арифметичного потрібно перевірити значення кількості (k). Якщо k<>0, то знаходимо середнє арифметичне sa.
- Виведення sa на екран.
Програма
Var a,b,c,s,k:integer;sa:real;
begin
read(a,b,c); s:=0;k:=0;sa:=0;
if a mod 2=0 then begin s:=s+a;k:=k+1;end;
if b mod 2=0 then begin s:=s+b;k:=k+1;end;
if c mod 2=0 then begin s:=s+c;k:=k+1;end;
if k<>0 then sa:=s/k;
writeln(sa:1:2);
end.
|
Приклади результатів роботи програми
Ввід
|
Вивід
|
1 3 5
|
0.00
|
2 3 6
|
4.00
|
1 7 8
|
8.00
|
2 6 8
|
5.33
|
Блок-схема програми
Приклад 2
Дано два різних числа. Якщо число X < Y, то збільшити X на 1, у протилежному випадку збільшить обидва числа у 10 раз.
Дано: два будь-яких числа
Знайти: змінити ці числа, а потім вивести
обидва числа на екран
Змінні:
Вхідні:
-
x – перше число
-
y – друге число
Вихідні:
-
x – перше число
-
y – друге число
Всі вхідні дані дійсного типу (real)
Алгоритм
- Введення чисел x, y
- Порівнюємо числа:
- якщо x < y, то збільшуємо х на 1 (x:=x+1). Цей оператор буде після then;
- у іншому випадку збільшуємо кожне число у десять разів(x:=x*10; y:=y*10). Ці обидва оператори повинні відноситись до
else, тому беремо їх в операторні дужки (begin x:=x*10; y:=y*10; end;).
- Вивід x, y на екран.
Програма
Var x,y:real;
begin
read(x,y);
if x < y then x:=x+1 else begin x:=x*10;y:=y*10;end;
w riteln(x:1:2,' ',y:1:2);
end.
|
Приклади результатів роботи програми
Ввід
|
Вивід
|
1 3
|
2.00 3.00
|
5 2
|
50.00 20.00
|
4 4
|
40.00 40.00
|
Запам’ятати значення змінної X:
Приклад 3
Дано два різних числа. Складіть програму, яка замінює
менше з двох чисел їх сумою, а більше - їх добутком.
Дано: два будь-яких числа
Знайти: змінити ці числа, а потім вивести обидва числа на екран
Змінні:
Вхідні:
-
x – перше число
-
y – друге число
Вихідні:
-
x – перше число
-
y – друге число
Проміжні:
Всі дані дійсного типу (real).
Алгоритм
- Введення чисел x, y.
- Запам’ятаємо значення x у змінну z. Це потрібно
зробити, бо:
- якщо x< y, то x - менше, а y - більше. Тому потрібно замінити x на x:=x+y, а y на y:=y*x. Але після виконання першого оператору x вже зміниться,
і при виконанні y:=y*x вже буде мати „нове” значення. А нам потрібно помножити y на „старе” значення x. Тому потрібно відразу після вводу запам’ятати введене значення x у змінну z.
- Порівнюємо числа:
- якщо x< y, то x - менше, і потрібно замінити його на x:=x+y, а
більше y замінити на y:=y*z. Для обчислення y старе значення y
домножується на z – старе значення x;
-
в іншому випадку, x - більше, і потрібно замінити його на x:=x*y, а
менше у - на y:=y+z. Для обчислення y до старого значення y додається
z – старе значення x.
- Виведення нових значень x, y на екран.
Програма
Var x,y,z:real;
begin
read(x,y); z:=x;
if x
else begin x:=x*y;y:=y+z;end;
writeln(x:1:2,' ',y:1:2);
end.
|
Приклади результатів роботи програми
Ввід
|
Вивід
|
2 3
|
5.00 6.00
|
5 2
|
10.00 7.00
|
4 4
|
16.00 8.00
|
Приклад 4
Дано дійсні числа a, b, c. З’ясуйте, чи має рівняння
ax2+bx+c=0 корені. Якщо так, то знайдіть їх. У іншому випадку надрукуйте повідомлення, що коренів немає.
Дано: три будь-яких дійсних числа, що є
коефіцієнтами квадратного рівняння
Знайти: корені рівняння, якщо вони є
Змінні:
Вхідні:
-
a – перше число
-
b – перше число
-
c – перше число
Вихідні:
-
x1 – перший корінь
-
x2 – другий корінь
Проміжні:
Всі дані дійсного типу (real).
Алгоритм
- Введення чисел a, b, c.
- Обчислення дискримінанту.
-
Перевіряємо дискримінант:
- якщо d<0, то коренів немає, тому виконується оператор writeln('коренів немає');
- у протилежному випадку обчислюються корені x1, x2 та їх значення виводяться на екран. При d>=0 виконуються три оператори, тому вони беруться в операторні дужки begin
x1:=(-b+sqrt(d))/(2*a); x2:=(-b+sqrt(d))/ (2*a);
writeln(x1:1:2,' ',x2:1:2);
end
Програма
Var a,b,c,d,x1,x2:real;
begin
read(a,b,c); d:=b*b-4*a*c;
if d<0 then writeln('коренів немає')
else
begin
x1:=(-b+sqrt(d))/(2*a);
x2:=(-b-sqrt(d))/(2*a);
writeln(x1:1:2,' ',x2:1:2);
end
end.
|
Приклади результатів роботи програми
Ввід
|
Вивід
|
1 2 3
|
коренів немає
|
4 8 4
|
-1.00 -1.00
|
2 8 3
|
-0.42 -3.58
|
Блок-схема програми
Варіанти задач
- Дано числа x, y. Якщо числа X та Y кратні 5, то збільшить їх на 1, у протилежному випадку нічого не робити.
- Дано числа x, y. Якщо числа X та Y мають різні знаки, то їх подвоїти, у протилежному випадку піднести їх до квадрату.
- Дано числа x, y. Якщо число X у 3 рази більше за Y, то добути з обох чисел квадратний корінь, у іншому випадку піднести числа
до квадрату.
- Дано 3 натуральних числа. Знайти середнє арифметичне тих, що менші за 100.
- Дано два різних числа. Менше з цих чисел замініть 0, а до більшого додайте 1.
- Дано дійсні числа a, b. Якщо a>=b, то кожне число збільшить на 5, у іншому випадку числа зменшіть на 1.
- Дано дійсні числа a, b. Якщо a<=b, то перше число збільшіть у два рази, а до другого додайте 5.
У іншому випадку числа зменшіть на 5.
- Дано два числа. Якщо корінь квадратний з другого числа менше першого числа, то збільшіть перше число
вдвічі, а до другого додайте 5,. У протилежному випадку від першого числа відніміть 10, а друге збільшить у три рази.
- Дано числа x, y. Якщо x належить інтервалу [1, 2], то збільшити його на одиницю, а y присвоїти 0. У протилежному випадку, збільшити y на одиницю, а x присвоїти 0.
- Дано дійсні числа a, b, c. Якщо a>=b>=c, то кожне число збільшіть у два рази.
У інших випадках всі числа замініть їх модулями.
- Дано ціле число x. Якщо воно додатне, знайдіть x2 та
, у іншому випадку надрукуйте слова “не можу”.
- Дано ціле число. Якщо воно трьохзначне, знайдіть та надрукуйте його цифри у стовпчик, у іншому випадку надрукуйте слова “не можу”.
- Дано ціле число. Якщо воно трьохзначне, знайдіть добуток його цифр, у іншому випадку надрукуйте слова “не можу”.
- Дано ціле число. Якщо воно чотирьохзначне, знайдіть суму квадратів його цифр, у іншому випадку надрукуйте слова “не можу”.
- Дано два числа. Складіть програму, що замінює менше з цих чисел модулем різниці, а більше
- модулем добутку цих чисел.
- Дано два числа. Складіть програму, що замінює більше з цих чисел подвоєним добутком, а менше
- півсумою цих чисел.
Назад
Зміст
Вперед