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

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

скачати

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

1. Призначення і синтаксис
Оператор умови if-else служить для вибору напрямку роботи програми в залежності від умов, що склалися в даній точці програми на момент її виконання.
Загальна форма запису умовного оператора
if (<умова>)
{
<Блок операторів 1>;
}
else
{
<Блок операторів 2>;
}
Якщо на момент виконання <умова> істинно, програма передає управління <блоку операторів 1> і, далі, першому оператору за межами конструкції if-else. При цьому "блок операторів 2> не виконується. Інакше, якщо <умова> брехливо, виконується <блок операторів 2>, а <блок операторів 1> пропускається. Відповідна блок-схема
SHAPE \ * MERGEFORMAT
блок операторів 1
умова
блок операторів 2
true (+)
false (-)


Фігурні дужки в синтаксисі оператора 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 T0 = -273; / / оголошуємо і ініціалізували T0
float Tc, Tk; / / оголошуємо речові Tc і Tk
cout <<»Vvedite Tc =»; / / виводимо запрошення
cin>> Tc; / / запитуємо Tc
if (Tc <T 0) / / перевіряємо умову Tc <T0
{
cout <<»Tc <T0!»; / / умова істинна, виводимо на
} / / Екран повідомлення про помилку
else
{
Tk = Tc-T0; / / умова помилкова, розраховуємо
cout <<«Tk =» <<Tk; / / Tk і виводимо на екран
}
getch (); / / затримка до натискання на клавішу
return 0; / / завершення програми
}
/ / -
Наберіть наведений вище код, відкомпілюйте його і запустіть програму на виконання. Дослідіть результати роботи при різних значеннях T C.
2. Скорочені варіанти запису
При програмуванні повсякденного є ситуація, коли потрібні деяку дію у відповідь на сформовані умови (наприклад, якщо отримані невірні вихідні дані від користувача, то видати повідомлення про помилку і вийти з програми). У таких випадках у програмах на C + + може використовуватися скорочений запис оператора умови з відсутнім блоком else. Загальна форма такого запису
if (<умова>)
{
<Блок операторів>;
}
Тут у разі істинності умови управління передається блоку операторів у фігурних дужках. У разі хибності умови цей блок пропускається. Відповідна блок-схема відрізняється від попередньої відсутністю одного «плеча»
SHAPE \ * MERGEFORMAT
блок операторів
умова
true (+)
false (-)

Інший варіант скорочення застосовується у разі, коли який-небудь з блоків 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. Необхідно вивести на екран найбільше з цих чисел.
Рішення. Один з можливих алгоритмів вирішення цього завдання показаний на наступній блок-схемі.
SHAPE \ * MERGEFORMAT
(A> b)?
true (+)
false (-)
початок
введення a, b, c
(B> c)?
(A> c)?
висновок c
висновок b
висновок c
висновок a
true (+)
true (+)
false (-)
false (-)
кінець

Схема може бути реалізована програмно за допомогою вкладених операторів 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) АБО (kl = nm)» - атака слона на пішака,
· Інакше фігури в безпеці.
/ / - Шахова композиція -
# 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;
}
/ / -
Додати в блог або на сайт

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

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


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