Єдина Країна!

Головне меню

Наша кнопка

Українські уроки про ІТ

Друзі

Підтримка української армії


Головна Програмування - C++ Базовий курс програмування на С++. Урок 6. Оператори if та switch. Тернарний оператор

Базовий курс програмування на С++. Урок 6. Оператори if та switch. Тернарний оператор
Написав Joker   
Неділя, 21 грудня 2014 23:09
Переглядів: 8539

Сьогодні ми вивчимо:

  1. Оператор if
  2. Оператор switch
  3. Тернарний оператор.

Оператор if

Зараз ми навчимося писати програми і змусимо їх думати Smile.  Даний оператор if перевіряє певний вираз на істинність і в залежності від результату перевірки виконуються ті чи інші обчислення.
Для початку розглянемо синтаксис.
if (вираз_для_перевірки)
{
Обчислення_1;
}
else
{
Обчислення_2;
}

вираз_для_перевірки – конструкція яка містить логічні або ж арифметичні оператори.

обчислення_1 – фрагмент програми який виконається тільки в тому випадку, коли результатом вираз_для_перевірки поверне значення true.

обчислення_2 – фрагмент програми який виконається тільки в тому випадку, коли результатом вираз_для_перевірки поверне значення false.

Якщо виконується обчислення_1, то обчислення_2 просто ігноруються.

Якщо виконується обчислення_2, то ігноруються обчислення_1.

Давайте розглянемо просту програму яка може слугувати прикладом.
#include <iostream>
#include <conio.h>
using namespace std;

int main ()
{
int n,x;

cin >> n >> x;
 
 if (n>x)
 {
 cout << "n > x" << endl;
 }
 else
 {
 cout << "x>n" << endl;
 }

 
_getch();
retrun 0;
}

Комбіновані твердження:

Як бути коли вам потрібно перевірити чи число належить діапазону від 5 до 10 (5<x<10) ? Це твердження можна розкласти на 2 простіші:

1)    X>5                            2) X<10

Також, з попереднього уроку, ми знаємо логічні оператори об’єднання. Перевірити такий діапазон можна так:

If (X>5 && X<10)


r
Нюанси:

На вашу думку, як комп’ютер зрозуміє такий вираз:

if (a-b)

Давайте розмірковувати разом. Комп’ютер перевіряє вираз який знаходиться у круглих дужках, тобто а-b. Результат перевірки може бути true або false.

Також ми знаємо, що false = 0 та true !=0

Тепер можна сказати, якщо a-b = 0, то виконається фрагмент коду записаний у блоці після else. Якщо ж a-b відмінне від 0, то це істина і виконається фрагмент коду прописаний після if.

 

Можливі помилки:

Пам’ятайте, якщо ви хочете перевірити чи одна змінна така сама (дорівнює) іншій, то це виглядатиме так:

if(a == b)

А не так (неправильно)

if(a = b)

Також варто пам’ятати, що не можна розривати оператори if та else, це призведе до помилки на етапі компіляції. Але блок else можна повністю опустити. Тобто синтаксис такий:

if (Вираз)
{
Обчислення_1
}
// Продовження програми

Цей код рівносильний такому:

if (Вираз)
{
Обчислення_1
}
Else
{  }
// Продовження програми

 

Драбинка if-else

Давайте вчитися на прикладах. Для прикладу, покупець купує певний товар. Товар, вартість якого більша 500 грн. , отримує знижку у 5%. Якщо товар коштує 1000 і більше, то знижка - 10 %. Також ми знаємо, що покупець купує тільки один товар. Потрібно вирахувати суму покупки з урахуванням знижки.

Для цього найкраще використовувати драбинку if-else.

Синтаксис:

if (перевірка_1)
{
Код_1
}
else if (Перевірка_2)
{
Код_2
}
else
{
Код_3
}

Програма може містити довільну кількість перевірок ( else if () ). Тобто фрагмент коду 5-8 рядки може бути повторений довільну к-сть разів, але з різними перевірками. Крім цього, заборонено розривати драбинку будь-яким іншим кодом. Це означає, що не можна вставляти будь-який код між рядка 4 і 5, 8 і 9. Якщо код_1, код_2, код_3, складає не більше одного рядка, то фігурні дужки можна забрати. Це правило здійснюється і для інших блоків (для прикладу цикли).

Давайте нарешті розв’яжемо нашу задачу.

#include <iostream>
using namespace std;

int main ()
{
 setlocale (LC_CTYPE, "ukr");

 double price, discount;

 cout << "Введіть ціну товару --> ";
 cin >> price;

 cout << "\n" << "Ваша знижка = ";
 if (price >= 500 && price < 1000)
 {
 discount = 5;
 cout << discount << "%" << endl;
 }
 else if (price >= 1000)
 {
 discount = 10;
 cout << discount << "%" << endl;
 }
 else
 {
 discount = 0;
 cout << discount << "%" << endl;
 }

 cout << "Ви повинні заплатити = " << price - ( price * (discount / 100)) << endl;



return 0;
}

 

Оператор switch

Цей оператор виконує ту ж роботу, що й if-else. І у будь-якій ситуації його можна замінити на оператор. Але не завжди оператор if можна замінити на оператор switch. Головна його відмінність полягає в тому, що у деяких випадках ним просто зручніше користуватися ніж аналогічним if.  Для прикладу потрібно написати програму в якій міститься меню з 3 пунктів. Ми зможемо реалізувати цю задачу за допомогою if, але цю ж задачу ми можемо розв’язати і за допомогою switch і при цьому код буде виглядати краще. Найчастіше цей оператор використовують саме для створення меню.

Синтаксис:

switch (вираз)
{
case значення_1:
Дія_1;
break;
case значення_2:
Дія_2;
break;
default:
дія_помилка;
}

Крім цього, ви можете поставити по закінченню default: ще один break;. Це не призведе до помилки.

Вираз – змінна яка перевіряється. Для прикладу ви записали відповідь користувача у якусь змінну. Саме цю змінну він буде перевіряти.

Значення_1 – перевірка певного критерію зі змінною. Для прикладу значення_1 = 1. Тобто замість значення_1 ми написали 1. Це означає, що ми перевіряємо чи змінна перевірки (та що у виразі) дорівнює 1. Якщо так, тоді ми виконуємо дія_1. Якщо – ні, тоді ми йдемо далі і перевіряємо змінну з наступними case. Якщо жодна перевірка не була успішною, виконається код прописаний у default. Також можна перевіряти символи (Чи змінна дорівнює певному символу)

switch(a)
{
case '!':
cout << "1" <<endl;
break;
case '@':
cout << "@" << endl;
break;
default:
 cout << "^^^^" << endl;
}

 

 

Тернарний оператор

Використовується з тою ж метою що й if, але для примітивних перевірок.

Синтаксис:

Перевірка ? Дія_1 : Дія_2;

Так наш код буде красивішим. І буде займати всього один рядок.

Приклад:

#include <iostream>
using namespace std;
int main ()
{
int b;
cin >> b;
(
(b!=0) ? cout << "Yes" : cout << "No";
Якщо b не дорівнює 0, тоді виведеться Yes, якщо b = 0 – виведеться No.

 

 

Всім дякую за увагу і дякую за ваше терпіння.


( 8 Проголосувало )

Схожі статті:
Новіші матеріали:
Старіші матеріали:

Коментарі
Добавити новий
Залишити коментар
Ім`я:
e-mail:
 
Тема:
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Введіть цей настирливий код
Русская редакция: www.freedom-ru.net & www.joobb.ru

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 

Підписка

Хто онлайн?

Немає
На даний момент 27 гостей на сайті

Український рейтинг
TOP.TOPUA.NET