Складовий оператор. Умовний оператор. Структура розгалуження. Умовний оператор Навіщо використовувати умовний оператор

Для написання програми мало знати лише мову програмування. Потрібно розуміти і повну конструкцію всього написаного для того, щоб все в результаті працювало правильно. Сьогодні буде розглянуто поняття оператора умовного та його дії у програмуванні. Крім цього, буде корисною інформація і про розгалуження кодів, для яких працює оператор.

Визначення.

Отже, оператор умовний є основою конструкції всієї мови програмування. Саме він дає можливість виконуватись певним зазначеним командам. Правда, для цього необхідні умови істинності або пряма команда від користувача.

Галузь застосування.

Дане визначення застосовується за умови певних умов для виконання команд або команди. Бувають випадки застосування із розгалуженням. Такий напрямок ділиться на три основні конструкції, які застосовуються у програмуванні.

Умовний перехід.

Оператор умовного переходу діє за принципом вибору напряму залежно від істинності умови. Так, якщо в програмі прописано кілька варіантів рішення, саме оператор робитиме вибір, за яким напрямом піти далі. Повернення назад не передбачено. Істинність логічного виразу перевіряється наявністю коду умов, зазначених після слова if. Саме вона найчастіше використовується у різних мовах, позначаючи правильність вибору. Якщо перша вказана умова не підходитиме для виконання завдання, код перевірятиме всі наступні вказівки послідовно, каскадом. Цей процес досить не простий, тому варто розібрати його докладніше.

Форми умовних операторів.

Існує лише три форми такого плану. Розберемо роботу кожної, отже, найпростіший це оператор з однією гілкою. Він являє собою команду if, після якої вказуються умови для виконання, потім then, після якого прописуються команди, які потрібно виконати, і на завершення end, що вказує на кінець коду. Щоб команда пройшла весь шлях від початку і до кінця, спочатку машина перевіряє відповідність умов, прописаних на початку коду і якщо вони підходять, починається виконання другої частини з виконанням команд до того моменту, як машина підійде до кінця, позначеного end. Бувають асемблери, у яких взагалі не вказується кінцеве слово, у них слід обережно прописувати всі команди, уникаючи зайвого. Також така форма написання може бути єдиною доступною.

Більш складний варіант, це оператор із двома гілками програмування. Такий код виглядає наступним чином: слово if, потім умови виконання, після цього слово then і команда для виконання тепер пишеться else та інша команда, якщо перша не підійде, а після всього цього end. Це рішення застосовується до виконання програми у разі. Тобто якщо перша умова не підійде і перша команда не буде виконана, то програма автоматично виконає другу. Такий хід ефективніший, порівняно з першим.

Третій варіант розвитку, це зазначення кількох умов. Він являє собою написання if з визначенням умов, потім then і необхідну команду, після цього else if інша умова, у разі коли перша не підійде і then команда для виконання за другої умови, else if і вказується ще одна умова з виконанням команди після слова then , можна писати ще, а коли всі необхідні умови закінчуються, користувач вказує просто else з умовою, коли жоден з перерахованих варіантів не підійде і виконання команди, після чого закривається словом end.

Загалом оператор має безліч конструкцій, і всі вони виконуються суворо послідовно. Завжди починаючи з першої команди.

На прикладі мови "Паскаль".

Щоб розібрати умовний оператор найзрозуміліше, слід зробити це за допомогою найпопулярнішої мови програмування. У ньому може бути простим і складним. Простий позначається символами типу =,<, >і так далі, а складний є написанням if а>=у then ор:=Sqr(а-у) else write, де вводяться неприпустимі показники.

Концепція перемикача.

Перемикач – це певна команда, яка виконується за умови заданих параметрів. Він працює за наявності як мінімум двох гілок, але задає виконання лише однієї. Умовами в прописаних параметрах він і перемикає виконання певної гілки самостійно. Деякі мови, використовуючи такі параметри, можуть проводити аналогію з текстами. Відрізняється така команда від вищеописаних тим, що повертається тип чи ціле значення, а чи не логічне.

Розвиток оператора.

Спочатку умовний оператор був командою, яка визначала подальший перехід на потрібну мітку. Команда була виразом, який визначався як селектор та здійснювала повернення цілого значення та умови переходу. При її виконанні відбувалося обчислення номера мітки з усього списку і машина зверталася саме на обчислення зазначеного напрямку. Таку конструкцію можна зустріти і досі, наприклад, у «Бейсіку» та «Фортрані». Незважаючи на те, що багато хто вже використовує іншу конструкцію для обчислень, ця все ще ефективна.

Сучасна модель написання умовного оператора складніша за попередню і, відповідно, трохи триваліша в часі обчислення. Вона є послідовною вказівкою масиву команд з необхідними адресами. Безумовний перехід від одного до іншого забезпечує незалежність часу обчислення кількості зазначених міток.

Перемикач у сучасних мовах також може бути таблицею переходу. Складається таблиця з команд, що переміщують машину на зазначені фрагменти. Визначається команда написанням case або swithc, а в деяких випадках обох слів відразу.

Логіка обчислень умовних виразів.

Вплив виконання логічного висловлювання надає логіка, прийнята кожному з випадків. Можна виділити два напрями – повне та неповне. Перше проводить розрахунок всіх заданих параметрів і після цього І. Друге вважає всі параметри окремо і за вказівкою «істина» задіює наступну команду. Працює при АБО.

"розвилка".
Розгалужуєтьсяназивається такий алгоритм, в якому вибирається один із кількох можливих варіантів обчислювального процесу. Кожен подібний шлях називається гілкою алгоритму.

Ознакою алгоритму, що розгалужується, є наявність операцій перевірки умови. Найчастіше для перевірки умови використовується умовний оператор if.

if може використовуватися у формі повної або неповної розвилки.

У разі неповного розвилки якщо Умоваістинно, то Блокоперацій1 виконується, якщо Умовахибно, то Блокоперацій1 не виконується.

У разі повного розвилки якщо Умоваістинно, то виконується Блокоперацій1 , інакше виконується Блокоперацій2 .

Блокоперацій може складатися з однієї операції. У цьому випадку наявність фігурних дужок, що обмежують блок, не є обов'язковою.

Приклад на C:

1
2
3
4
5
6
7
8
9
10
11
12
13
14


#include
int main()
{
int k; // оголошуємо цілу змінну k
printf("k="); // Виводимо повідомлення
scanf("%d", &k); // вводимо змінну k
if (k >= 5) // якщо k>5
printf("%d >= 5", k); // Виводимо "ЗНАЧЕННЯ> = 5"
else // інакше
printf("%d< 5" , k); // виводимо "ЗНАЧЕННЯ< 5"
getchar(); getchar();
return 0;
}


Результат виконання

Оператор if може бути вкладеним.

Приклад на C:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

#define _CRT_SECURE_NO_WARNINGS // для можливості використання scanf
#include
#include
int main() (
int key;
system("chcp 1251");
system("cls"); // Очищаємо вікно консолі
printf();
scanf("%d", &key);
if (key == 1) // якщо key = 1
printf( "\n Вибрано перший пункт"); // Виводимо повідомлення
else if (key == 2) // інакше якщо key = 2
printf( "\n Вибрано другий пункт"); // Виводимо повідомлення
else // інакше
printf(); // Виводимо повідомлення
getchar(); getchar();
return 0;
}

Результат виконання





При використанні вкладеної форми оператора if опція else зв'язується з останнім оператором if. Якщо потрібно зв'язати опцію else з попереднім оператором if , внутрішній умовний оператор полягає у фігурних дужках:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

#define _CRT_SECURE_NO_WARNINGS // для можливості використання scanf
#include
#include // Для використання функції system
int main() (
int key; // оголошуємо цілу змінну key
system("chcp 1251"); // Переходимо в консолі російською мовою
system("cls"); // Очищаємо вікно консолі
printf( "Введіть номер пункту, 1 або 2: ");
scanf("%d", &key); // Вводимо значення змінної key
if (key != 1) ( // якщо key не дорівнює 1
if (key == 2) // якщо key дорівнює 2
printf( "\n Вибрано другий пункт"); // Висновок повідомлення
} // якщо key - не 1 і не 2, то нічого не виводиться
else // інакше, якщо key дорівнює 1
printf( "\n Вибрано перший пункт"); // Висновок повідомлення
getchar(); getchar();
return 0;
}


Результат виконання





Тернарні операції

Тернарна умовна операціямає 3 аргументи і повертає свій другий чи третій операнд залежно від значення логічного виразу, заданого першим операндом. Синтаксис тернарної операції у мові Сі

Умова? Вираз1: Вираз2;


Якщо виконується Умова, то тернарна операція повертає Вираз1, в іншому випадку - Вираз2 .

Тернарні операції, як і умови операції, можуть бути вкладеними. Для поділу вкладених операцій використовуються круглі дужки.

Наведений вище приклад з використанням тернарних операцій можна подати у вигляді

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

#define _CRT_SECURE_NO_WARNINGS // для можливості використання scanf
#include
#include // Для використання функції system
int main() (
int key; // оголошуємо цілу змінну key
system("chcp 1251"); // Переходимо в консолі російською мовою
system("cls"); // Очищаємо вікно консолі
printf( "Введіть номер пункту, 1 або 2: ");
scanf("%d", &key); // Вводимо значення змінної key
key == 1? printf( "\n Вибрано перший пункт") :
(key == 2 ? printf( "\n Вибрано другий пункт") :
printf( "\n Перший і другий пункти не вибрані"));
getchar(); getchar();
return 0;
}

Оператор розгалуження switch (оператор множинного вибору)

Оператор if дозволяє здійснити вибір лише між двома варіантами. Для того, щоб робити вибір одного з декількох варіантів, необхідно використовувати вкладений оператор if . З цією ж метою можна використовувати оператор розгалуження switch.

Загальна форма запису

switch (Цілий Вираз)
{
case Константа1: Блок Операцій1;
break;
case Константа2: Блок Операцій2;
break;
. . .
case Константаn: Блокопераційn;
break;
default: Блок ОпераційЗа замовчуванням;
break;
}

Оператор розгалуження switch виконується таким чином:

  • обчислюється ЦілийВираз у дужках оператора switch;
  • отримане значення порівнюється з мітками ( Константами ) в опціях case , порівняння проводиться до того часу, доки знайдено мітка, відповідна обчисленому значенню целочисленного виразу;
  • виконується Блокоперацій відповідної мітки case;
  • якщо відповідну мітку не знайдено, то виконається Блок ОпераційЗа замовчуванням описаний в опції default.

Альтернатива default може бути відсутня, тоді не буде зроблено жодних дій.
Опція break; здійснює вихід з оператора switch та перехід до наступного за ним оператора. За відсутності опції break будуть виконуватися всі оператори, починаючи з позначеного даною міткою і закінчуючи оператором опції default .

Константи в опціях case мають бути цілого типу (можуть бути символами).

Умовні операторидозволяють вибирати для виконання ті чи інші частини програми, залежно від деяких умов. Якщо, наприклад, у програмі використовуються речові змінні x і z і на якомусь етапі розв'язання задачі потрібно обчислити z=max(x, y), то бажаний результат виходить в результаті виконання або оператора присвоювання z:=x, або оператора присвоювання z:=y. Оскільки значення змінних x і y заздалегідь невідомі, а визначаються у процесі обчислень, то програмі необхідно передбачити обидва ці оператора присвоювання. Однак насправді має виконатися один із них. Тому в програмі має бути вказівка ​​про те, в якому випадку треба вибирати для виконання той чи інший оператор присвоєння.

Цю вказівку природно сформулювати з використанням відношення x>y. Якщо це відношення при поточних значеннях x і y справедливе (приймає значення true), для виконання повинен вибиратися оператор z:=x; в іншому випадку для виконання повинен вибиратися оператор z:=y (при x=y байдуже, який оператор виконувати, так що виконання оператора z:=y в даному випадку дасть правильний результат).

Для завдання подібного роду обчислювальних процесів, що розгалужуються, в мовах програмування існують умовні оператори. Розглянемо повний умовний операторПаскаля:

if B then S1 else S2

Тут if(якщо), then(те) і else(інакше) є службовими словами, У- Логічне вираження, а S1і S2- Оператори.

Виконання такого умовного оператора в Паскалі зводиться до виконання одного з операторів S1 або S2, що входять до нього: якщо задана в операторі умова виконується (логічний вираз В приймає значення true), то виконується оператор S1, в іншому випадку виконується оператор S2.

Алгоритм розв'язання вищезазначеної задачі обчислення z = max(x, y) можна задати у вигляді умовного оператора Паскаля

if x>y then z:= x else z:= y

При формулюванні алгоритмів дуже типовою є така ситуація, коли на певному етапі обчислювального процесу якісь дії треба виконати тільки при виконанні деякої умови, а якщо ця умова не виконується, то на даному етапі взагалі не потрібно виконувати жодних дій. Найпростішим прикладом такої ситуації є заміна поточного значення змінної на абсолютну величину цього значення: якщо x<0, то необходимо выполнить оператор присваивания x:= - x; если же x>=0, то поточне значення x має залишитися без змін, тобто. на даному етапі взагалі не треба виконувати будь-які дії.

У таких ситуаціях зручна скорочена форма запису умовного оператора в Паскалі:

if B then S

Правило виконання скороченого умовного оператора Паскалядосить очевидно: якщозначення логічного виразу є true, товиконується оператор S; в інакшеніяких інших дій немає.

У мові програмування Паскаль в умовному операторі між thenі else, а також після elseза синтаксисом може стояти лише один оператор. Якщо ж при виконанні (або невиконанні) заданої умови треба виконати деяку послідовність дій, їх треба об'єднати в єдиний, складовий оператор, тобто. укласти цю послідовність дій у операторні дужки begin... end (це важливо!). Якщо, наприклад, при x< y надо поменять местами значения этих переменных, то умовний операторбуде записано наступним чином у Паскалі:

if x then begin r:=x; x:=y; y:=r end

Наявність скороченої форми умовного оператора Паскалявимагає великої обережності під час використання. Наприклад, умовний оператор

if B1 then if B2 then S1 else S2

допускає, взагалі кажучи, два різні трактування:

  • як повний умовний оператор Паскалявиду

if B1 then begin
if B2 then S1 end
else S2

  • як скорочений умовний оператор Паскалявиду

if B1 then begin
if B2 then S1 else S2 end

За правилами Паскаля має місце друге трактування, тобто. вважається, що кожне слово elseвідповідає першому попередньому слову then. Для уникнення можливих помилок та непорозумінь можна порекомендувати у всіх подібних випадках чітко виділяти бажану форму умовного оператора Паскаляшляхом взяття в операторні дужки.

Оператор вибору Паскаля

Оператор вибору Паскалядозволяє вибрати одне з кількох можливих продовжень програми. Параметром, яким здійснюється вибір, служить ключ вибору – вираз будь-якого порядкового типу.

Структура оператора вибору у Паскалі така:

Case<ключ_выбора>of
<список_выбора>
end

Тут case, of, else, end– зарезервовані слова (випадок, інакше, кінець);

  • <ключ_выбора>- Вираз порядкового типу;
  • <список_выбора>- одна або більше конструкцій виду:
    • <константа_выбора>: <оператор>;
  • <константа_выбора>- константа того ж типу, що й вираз
    • <ключ_выбора>;

<операторы>- Довільні оператори Паскаля.

Оператор вибору Паскаля працює в такий спосіб. Спочатку обчислюється значення виразу<ключ_выбора>, а потім у послідовності<список_выбора>Знаходиться константа, що дорівнює обчисленому значенню. Виконується оператор, який слідує за знайденою константою, після чого оператор вибору завершує роботу. Якщо у списку вибору не буде знайдено константу, що відповідає обчисленому значенню ключа вибору, керування передається операторам, які стоять за словом else. Частина else<оператор_иначе>можна опустити, тоді за відсутності у списку вибору потрібної константи нічого очікувати виконано жодних дій, і оператор вибору просто завершить свою роботу.

Наприклад, складемо програму, яка за номером дня тижня виводить на екран його назву:

Приклад програми з використанням Case of

Program dni_nedeli;
Var n: byte;
Begin
Readln(n);
Case n of
1: writeln("понеділок");
2: writeln("вівторок");
3: writeln("середовище");
4: writeln("четвер");
5: writeln("п'ятниця");
6: writeln("субота");
7: writeln("неділя");
else writeln("дня тижня з номером", n,"ні");
  end;
end.

Слід пам'ятати, що всі константи зі списку вибору мають бути різними.

Будь-якому з операторів списку вибору може передувати не одна, а кілька констант вибору, розділених комами. Наприклад, наступна програма при введенні одного із символів "y" або "Y" виведе на екран "Так", а при введенні "n" або "N" - слово "Ні".

Приклад програми з використанням Case of з кількома змінними

Var ch: char;
Begin
Readln(ch);
Case ch of
N, n: writeln("Так");
Y, y: writeln("Ні");
End;
End.

Очевидно, що розглянуті вище програми можна записати за допомогою вкладених або послідовно розташованих умовних операторів, але в подібних завданнях використання оператора вибору є більш простим. Основна відмінність умовного оператора від оператора вибору полягає в тому, що в умовному операторі умови перевіряються одна за одною, а в операторі вибору значення ключа вибору безпосередньо визначає одну з можливостей.

Лабораторна робота

На тему: " Оператор умови if - else "


1. Призначення та синтаксис

Оператор умови if-else служить вибору напрями роботи програми залежно та умовами, що склалися у цій точці програми на даний момент її виконання.

Загальна форма запису умовного оператора

if ( <условие>)

<блок операторов 1>;

<блок операторов 2>;

Якщо на момент виконання<условие>істинно, програма передає управління<блоку операторов 1>і далі першому оператору за межами конструкції if-else. При цьому<блок операторов 2>не виконується. Інакше, якщо<условие>хибно, виконується<блок операторов 2>, а<блок операторов 1>пропускається. Відповідна блок-схема


Фігурні дужки в синтаксисі оператора if-else використовуються для виділення в тексті блоків 1 і 2. Намагайтеся розташовувати дужку, що закриває, під відкриває для покращення читання програмного коду. Для цієї ж мети текст усередині фігурних дужок необхідно зміщувати праворуч на кілька позицій.

Як умову в операторах if-else можуть використовуватися будь-які логічні вирази, що набувають значення «істинно» або «хибно» (true – false). Нижче наведено таблицю із зазначенням найпростіших операцій порівняння цілих та дійсних чисел

приклад 1.Потрібно написати програму, яка переводить температуру за шкалою Цельсія TC (°С) в температуру за Кельвіном T K (К). Значення T C вводиться користувачем із клавіатури.

Рішення. Використовуємо відому формулу перетворення - T K = T C - T 0 де T 0 = -273 ° С - температура абсолютного нуля. Вважатимемо введене T C некоректним, якщо воно менше T 0 .

// – Kelvinvs Celsius –

#include // для потокового В/В

#include // для консольного В/В (getch)

#pragma argsused

floatT0 = -273; // Оголошуємо та ініціалізуємо T0

floatTc, Tk; // оголошуємо речові Tc і Tk

cout<<» VvediteTc=»; // выводим приглашение

cin>>Tc; // Запитуємо Tc

if ( Tc < T 0) // перевіряємо умову Tc

cout<<» Tc < T0!»; // условие истинно, выводим на

} // екран повідомлення про помилку

Tk = Tc-T0; // Умова хибна, розраховуємо

cout<< «Tk =» << Tk; // Tk и выводим на экран

getch(); // Затримка до натискання клавіші

return 0; // Завершення програми

Наберіть наведений вище код, відкомпілюйте його та запустіть програму на виконання. Досліджуйте результати роботи з різними значеннями T C .

2. Скорочені варіанти запису

При програмуванні повсякденною є ситуація, коли потрібна деяка дія у відповідь на умови, що склалися (наприклад, якщо отримані невірні вихідні дані від користувача, то видати повідомлення про помилку і вийти з програми). У разі в програмах на C++ може використовуватися скорочений запис оператора умови з відсутнім блоком else. Загальна форма такого запису

if ( <условие>)

<блок операторов>;

Тут у разі істинності умови керування передається блоку операторів у фігурних дужках. У разі помилковості умови блок пропускається. Відповідна блок-схема відрізняється від попередньої відсутністю одного «плеча»


Інший варіант скорочення застосовується у разі, коли якийсь із блоків if або else складається тільки з одного оператора. У цьому випадку допускається відсутність фігурних дужок, що обмежують блок.

if ( <условие>)

оператор 1;

оператор 2;

Тут як оператори 1 і 2 можуть бути не тільки прості однорядкові арифметичні дії або оператори введення-виводу, але і складні багаторядкові конструкції, наприклад інші (вкладені) оператори умови або оператори циклу, які будуть розглянуті нижче.

3. Вкладені оператори

Оператори умови можуть бути вкладеними один в одного відповідно до того програмного алгоритму, який вони реалізують. Допускається довільний ступінь їхньої «вкладеності».

Якщо один оператор if-else вкладений в інший, перший оператор входить у другий повністю, а не тільки якоюсь однією своєю частиною if або else. Неприпустимим є часткове перекривання між собою окремих блоків.

У наведеному прикладі один із операторів (виділений напівжирним шрифтом) вкладений в інший. Запис Б) є помилковим через те, що блок else внутрішнього оператора умови частково перетинається з обома блоками if і else зовнішнього оператора.

приклад 2.Користувач вводить з клавіатури три цілі числа a, b, c. Необхідно вивести на екран найбільше цих чисел.

Рішення. Один із можливих алгоритмів вирішення цього завдання показаний на наступній блок-схемі.


Схема може бути реалізована програмно за допомогою вкладених операторів if-else

// - Вибір найбільшого з 3 чисел -

#include

#include

#pragma argsused

int main (int argc, char* argv)

float a, b, c; // Оголошуємо три змінні

cout<< «Vvedite a –»; // вводимзначения a, b, c

cout<< «Vvedite b –»;

cout<< «Vvedite c –»;

if (a>b) // якщо a > b

if (a> c) // якщо a > c

cout<<» max = «<

else // інакше, тобто. якщо a<= с

cout<<» max = «<

else // інакше, тобто. якщо a<= b

if (b>c) // і якщо b > c

cout<<» max = «<

else // інакше, тобто. якщо b<= а

cout<<» max = «<

getch(); // Затримка до натискання будь-якої клавіші

Розберіть блок-схему цього алгоритму та його програмну реалізацію. Модифікуйте алгоритм та програмний код для пошуку найменшого із трьох чисел.

4. Складові логічні висловлювання

Умова оператора if-else може бути виражено у вигляді простого порівняння двох числових значень. Наприклад, дуже поширені подвійні умови, які в математиці записуються у вигляді «a< b < c». Запись означает, что значение b лежит в диапазоне между значениями a и c. В программе такие условия должны быть переформулированы с использованием простых операций сравнения и логических операций «И», «ИЛИ», «НЕ»

Зокрема, вираз «a< b < c» сформулируем как «a меньше b, и b меньше c». На С++ это будет записано как (a

if((a

приклад 3.На порожній шахівниці в позиції (n, m) знаходиться біла пішака, в позиції (k, l) – чорний слон. Тут перша координата є номер стовпця шахівниці, друга – номер рядка (обидві змінюються в діапазоні від 1 до 8). Оцініть поточну ситуацію відповідно до трьох варіантів

Пішак знаходиться під ударом,

Слон знаходиться під ударом,

Слон і пішака в безпеці.

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

· «((k = n+1) АБО (k = n-1)) І (l = m+1)» - атака пішака на слона,

· «(k+l = n+m) АБО (k-l = n-m)» - атака слона на пішака,

· інакше фігури у безпеці.

// - Шахова композиція -

#include

#include

int main (int argc, char* argv)

cout<<«Koordinaty beloi peshki:«<

cout<<» vvedite n –»;

cout<<» vvedite m –»;

cout<<«Koordinaty chernogo slona:«<

cout<<» vvedite k –»;

cout<<» vvedite l –»;

if(((k==n+1)||(k==n‑1))&&(l==m+1)) // атакований слон

cout<

if((k+l==n+m)||(k-l==n-m)) // атакована пішка

cout<

else // нетатаки

cout<

Продовжуємо вивчати мову програмування Паскаль. Розглянемо першу алгоритмічну конструкцію, яка вивчається щодо мови умова (розгалуження). Стаття призначення для програмістів-початківців, а також для вчителів інформатики. Завдання наприкінці статті допоможуть закріпити знання та перевірити себе.

Алгоритмічна конструкція УМОВИ використовується у тих випадках, коли перед нами стоїть вибір: зробити так чи інакше.

Умова буває:

  1. Неповне
  2. Повне

Неповна умова

Блок-схема неповної умови виглядає так:

Неповна умова

ЯКЩО УМОВИ ПРАВИЛЬНО, ТО ВИКОНАЄТЬСЯ ДІЯ, інакше НІЧОГО НЕ ВІДБУВАЄТЬСЯ

На мові Паскаль дана алгоритмічна конструкція виглядає так:

IF умова THEN дія;

Якщо умова, що стоїть після IFістинно THEN.

Що таке умова?

Умова - це вираз, який може бути або істинним, або хибним. Умова обов'язково містить логічні оператори <, >, =, <=, >=, <>(не дорівнює).

Наприклад:

if a=7 then writeln("Привіт!"); end.

Якщо введене значення змінної aодно 7 , то на екрані ми побачимо слово Вітання!Якщо не однаково, то на екран нічого виводиться не буде.

Розглянемо інший приклад:

var a:integer; begin readln(a); if a=7 then writeln("Привіт!"); writeln("До зустрічі"); end.

Що ми побачимо на екрані, ввівши число 7? Побачимо:

Вітання!
До зустрічі

Що побачимо на екрані, ввівши число 10?

До зустрічі

Чому так? Чому До зустрічі виводиться на екран у будь-якому випадку? Команда

writeln("До зустрічі");

не відноситьсядо конструкції If-Then

var a:integer; begin readln(a); if a=7 then writeln("Привіт!"); writeln("До зустрічі"); / / умова підсвічена блакитним кольором end.

Як зробити так, щоб обидві дії належали до конструкції If-Then?

Необхідно укласти ці дії у так звані операторні дужки: begin ... end;

var a:integer; begin readln(a);

if a=7 then begin writeln("Привіт!");

Writeln("До зустрічі");
end;

end.
Тепер, якщо ми введемо число 10, на екрані нічого не побачимо.

Складна (складна) умова

Іноді доводиться використати складну умову. Для його складання використовуються логічні спілки: andабо or.

  • Якщо ми використовуємо and,то складова умова буде істинною, коли всі прості умови істинні.
  • Якщо ми використовуємо or,то складова умова буде істинною, коли хоча б одна проста умова буде істинною.

Наприклад:

a>7і a<15 на мові паскаль записуватиметься

(a>7) and (a<15)

тобто. обидві умови повинні виконуватися одночасно, щоб складова умова була істинною

(a=7) or (a>15)

Складова умова буде істинною, якщо: або a=7, або a>17.

Завдання:

Використовуючи конструкцію If-Then, знайти максимальну серед трьох введених чисел.

Рішення

var a, b, c:integer; begin readln(a); readln(b); readln(c); if (a>b) and (a>c) then writeln("число", a, "максимальне"); if (b>a) and (b>c) then writeln("число", b, "максимальне"); if (c>a) and (c>b) then writeln("число", c, "максимальне"); end.

Повна умова

Блок-схема повної умови виглядає так:

IF умова THEN дію_1 ELSE дію_2;

  • Якщо умова істинна, то виконується дія, що стоїть після слова Then.
  • Якщо умова хибна, то виконується дія, що стоїть після слова Else.

Якщо дій, які виконуються, якщо умова істинно чи хибно кілька — використовуються операторні дужки.

if умова then begin дія; дія;............... end else begin дія; дія; ................ end;

(перед else точка з комою не ставиться)

Завдання для самостійного виконання:

  1. Сума покупки складає акарбованців. Якщо абільше 1000 рублів, то надається знижка 15%. Вивести на екран суму покупки з урахуванням знижки або повідомлення про те, що знижка не надається.
  2. Відомі площі кола та квадрата. Визначити:
    • чи вміститься коло у квадраті
    • чи вміститься квадрат у колі
  3. Визначити, чи є число адільником числа b
  4. Перевірити, чи належить число, введене з клавіатури, інтервалу (-5;3).
  5. Дано двозначне число. Визначити:
    • чи входить до нього цифра 3
    • чи входить до нього цифра а
  6. Визначити, чи є трикутник із сторонами a, b, c рівнобедреним
  7. Дано три різні числа. Визначити, яке з них (перше, друге чи третє)
    • найбільше
    • найменше
    • є середнім

(список завдань поповнюватиметься)

Не працює