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

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

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

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

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

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

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

if (<умова>)

{

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

}

else

{

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

}

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

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

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

операція

знак операції

приклад запису на C / С + +

більше

>

A> B

менше

<

C <2

більше або дорівнює

> =

k> = 0

менше або дорівнює

<=

i <= 10

одно

==

x == y

не дорівнює

! =

D! = 0

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

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

/ / - Kelvin vs Celsius -

# Pragma hdrstop

# Include <iostream. H> / / для потокового В / В

# Include <conio.h> / / для консольного В / В (getch)

# Pragma argsused

int main (int argc, char * argv [])

{

float T 0 = -273; / / оголошуємо і ініціалізували T 0

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

cout <<»Vvedite Tc =»; / / виводимо запрошення

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

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

{

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

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

else

{

Tk = Tc - T 0; / / умова помилкова, розраховуємо

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

}

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

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

}

/ / -

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

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

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

if (<умова>)

{

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

}

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

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

if (<умова>)

оператор 1;

else

оператор 2;

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

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

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

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

A) правильний запис


if (a <= b)

{

if (x! = 0)

cout <<»x! = 0»;

else

{

x = 1;

y = 0;

}

}

else

{

a = b;

cout <<a;

}


Б) помилковий запис


if (a <= b)

{

if (x! = 0)

cout <<»x! = 0»;

else

{/ / Початок else

x = 1;

y = 0;

}

else

{

} / / Кінець else

a = b;

cout <<a;

}


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

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

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

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

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

# Pragma hdrstop

# Include <iostream.h>

# Include <conio.h>

# Pragma argsused

int main (int argc, char * argv [])

{

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

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

cin>> a;

cout <<«Vvedite b -»;

cin>> b;

cout <<«Vvedite c -»;

cin>> c;

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

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

cout <<»max =« <<a; / / то виводимо на екран a

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

cout <<»max =« <<c; / / виводимо з

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

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

cout <<»max =« <<b; / / то виводимо b

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

cout <<»max =« <<c; / / виводимо з

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

return 0;

}

/ / -

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

4. Складові логічні вираження

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

логічна операція

знак в С + +

найменування знака

І

& &

подвійний амперсанд

АБО

| |

подвійна вертикальна риса

НЕ

~

тильда

Зокрема, вираз «a <b <c» сформулюємо як «a менше b, і b менше c». На С + + це буде записано як (a <b) & & (b <c). У тексті програми відповідний оператор буде мати вигляд

if ((a <b) & & (b <c))

{

... ... ...;

}

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

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

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

  • слон і пішак у «безпеки».

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

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

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

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

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

# Pragma hdrstop

# Include <iostream.h>

# Include <conio.h>

int main (int argc, char * argv [])

{

int n, m, k, l;

cout <<«Koordinaty beloi peshki:« <<endl;

cout <<»vvedite n -»;

cin>> n;

cout <<»vvedite m -»;

cin>> m;

cout <<«Koordinaty chernogo slona:« <<endl;

cout <<»vvedite k -»;

cin>> k;

cout <<»vvedite l -»;

cin>> l;

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

cout <<endl <<«Atakovan chernyi slon!»;

else

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

cout <<endl <<«Atakovana belaya peshka!»;

else   / / Ні атаки

cout <<endl <<«Figury v bezopasnosti»;

getch ();

return 0;

}

/ / -

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Лабораторна робота
56.6кб. | скачати


Схожі роботи:
Оператор умови if else
Оператор циклу for
Оператор присвоювання
Оператор ЕОМ на заводі
Оператор зсуву в гільбертовому просторі
Оператор ЕОМ отч т про проходження практики на заводі
Вирази і умовний оператор IF Оператори циклів Масиви та підпрограми
колективного захисту від зброї масового знищення ЗМЗ В водій БТР НО навідник-оператор
Поняття і види угод Умови дійсності угод Умови і строки угод
© Усі права захищені
написати до нас