Умовні оператори в C: If, Else, вкладені If з прикладом

⚡ Розумний підсумок

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

  • 🔤 Оператор If: Оператор if виконує свій блок лише тоді, коли умова має ненульове значення true, тоді як нуль означає false.
  • 🔀 Якщо-інакше: Конструкція if-else додає гілку false, запускаючи один блок, коли умова істинна, та інший, коли вона хибна.
  • 🇧🇷 Реляційні оператори: Шість операторів (<, <=, >, >=, ==, !=) створюють логічні вирази, які перевіряє кожна умова.
  • 🪜 Драбина «Інакше-якщо»: Вкладена сходинка else-if перевіряє кілька виразів зверху вниз і запускає першу справжню гілку або else за замовчуванням.
  • Тернарний оператор: Умовний вираз ?: записує компактну умову if-else, яка повертає одне з двох значень в одному рядку.
  • 🤖 Допомога AI: GitHub Copilot створює та перевіряє логіку if-else, позначає відсутні дужки та пропонує чистіші умови.

Умовний оператор C: IF, IF Else та вкладений IF Else

Що таке умовний оператор у C?

Умовні оператори в програмуванні на C використовуються для прийняття рішень на основі умов. Умовні оператори виконуються послідовно, коли навколо операторів немає умови. Якщо ви встановите певну умову для блоку операторів, потік виконання може змінитися на основі результату, оціненого умовою. Цей процес називається прийняттям рішень у мові «C».

на відміну від цикли в C що повторюють код, умовні оператори вибирають один шлях.

У програмуванні на C умовні оператори можливі за допомогою таких двох конструкцій:

  1. Якщо заява
  2. Оператор if-else

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

Якщо заява

Це одне з потужних умовних тверджень. Оператор If відповідає за зміну потоку виконання програми. Оператор If завжди використовується з умовою. Умова спочатку оцінюється перед виконанням будь-якого оператора всередині тіла If. Синтаксис оператора if такий:

 if (condition) 
     instruction;

Умова оцінюється як істинна або хибна. True завжди ненульове значення, а false це значення, яке містить нуль. Інструкції можуть бути окремою інструкцією або блоком коду, укладеним у фігурні дужки { }.

Наступна програма ілюструє використання конструкції if у програмуванні на C:

#include<stdio.h>
int main()
{
	int num1=1;
	int num2=2;
	if(num1<num2)		//test-condition
	{
		printf("num1 is smaller than num2");
	}
	return 0;
}

вихід:

num1 is smaller than num2

Наведена вище програма ілюструє використання конструкції if для перевірки рівності двох чисел.

Блок-схема оператора If в C

  1. У наведеній вище програмі ми ініціалізували дві змінні за допомогою num1, num2 зі значенням 1, 2 відповідно.
  2. Потім ми використали if із тестовим виразом, щоб перевірити, яке число найменше, а яке найбільше. Ми використали реляційний вираз у конструкції if. Оскільки значення num1 менше за num2, умова оцінюватиметься як істина.
  3. Таким чином, він надрукує оператор всередині блоку If. Після цього управління вийде за межі блоку і програма завершиться з успішним результатом.

Реляційний Operaторс

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

  • < — менше ніж
  • <= — менше або дорівнює
  • > — більше ніж
  • >= — більше або дорівнює
  • == — дорівнює
  • != — не дорівнює

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

Наприклад:

int x = 41;
x =x+ 1;
if (x == 42) {
   printf("You succeed!");}

Вихід:

 You succeed

Майте на увазі, що умова, яка має ненульове значення, вважається істинною.

Наприклад:

int present = 1;
if (present)
  printf("There is someone present in the classroom \n");

вихід:

There is someone present in the classroom

Оператор If-Else

Блок-схема оператора C If-Else

Оператор if-else є розширеною версією If. Загальна форма if-else така:

if (test-expression)
{
    True block of statements
}
Else
{
    False block of statements
}
Statements;

У цьому типі конструкції, якщо значення тестового виразу дорівнює true, то буде виконано блок операторів true. Якщо значення тестового виразу дорівнює false, то буде виконано блок операторів false. У будь-якому випадку, після виконання, керування буде автоматично передано операторам, що знаходяться поза блоком If.

Наступні програми ілюструють використання конструкції if-else:

Ми ініціалізуємо змінну деяким значенням і напишемо програму, щоб визначити, менше чи більше десяти це значення.

Давайте розпочнемо.

#include<stdio.h>
int main()
{
	int num=19;
	if(num<10)
	{
		printf("The value is less than 10");
	}
	else
	{
		printf("The value is greater than 10");
	}
	return 0;
}

вихід:

The value is greater than 10

Приклад виводу оператора If-Else на C

  1. Ми ініціалізували змінну зі значенням 19. Нам потрібно з'ясувати, чи є число більшим або меншим за 10, використовуючи програму «C». Для цього ми використали конструкцію if-else.
  2. Тут ми надали умову num<10, оскільки ми маємо порівняти наше значення з 10.
  3. Як ви можете бачити, перший блок завжди є істинним блоком, що означає, що якщо значення тестового виразу є істинним, то перший блок, який є If, буде виконано.
  4. Другий блок є блоком else. Цей блок містить оператори, які будуть виконані, якщо значення тестового виразу стане false. У нашій програмі значення num більше десяти, тому тестова умова стає хибною, і блок else виконується. Таким чином, наш вихід буде з блоку else, який має значення «Значення більше 10». Після if-else програма завершиться з успішним результатом.

У програмуванні на C ми можемо використовувати кілька конструкцій if-else одна в одній, які називаються вкладенням операторів if-else.

Умовні вирази

Інший спосіб виразити оператор if-else – це ввести оператор ?:. В умовному виразі оператор ?: має лише один оператор, пов'язаний з if та else.

Наприклад:

#include <stdio.h>
int main() {
  int y;
  int x = 2;
   y = (x >= 6) ?  6 : x;/* This is equivalent to:  if (x >= 5)    y = 5;  else    y = x; */
   printf("y =%d ",y);
  return 0;}

вихід:

y =2

Вкладені оператори If-else

Коли потрібна серія рішень, використовується вкладене if-else. Вкладення означає використання однієї конструкції if-else в іншій.

Давайте напишемо програму, щоб проілюструвати використання вкладеного if-else.

#include<stdio.h>
int main()
{
	int num=1;
	if(num<10)
	{
		if(num==1)
		{
			printf("The value is:%d\n",num);
		}
		else
		{
			printf("The value is greater than 1");
		}
	}
	else
	{
		printf("The value is greater than 10");
	}
	return 0;
}

вихід:

The value is:1

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

Вкладений оператор If-else в C

  1. По-перше, ми оголосили змінну num зі значенням 1. Потім ми використали конструкцію if-else.
  2. У зовнішньому операторі if-else задана умова перевіряє, чи число менше 10. Якщо умова істинна, тоді і тільки тоді виконається внутрішній блок. У цьому випадку умова істинна, отже, обробляється внутрішній блок.
  3. У внутрішньому блоці знову є умова, яка перевіряє, чи містить наша змінна значення 1. Коли умова істинна, оброблюється блок If, інакше оброблюється блок else. У цьому випадку умова істинна, отже, виконується блок If, і значення виводиться на екран виведення.
  4. Вищевказана програма виведе значення змінної та завершить роботу успішно.

Спробуйте змінити значення змінна подивіться, як поводиться програма.

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

Вкладені оператори Else-if

Вкладені Else-if сходи в C

Вкладений else-if використовується, коли потрібні багатошляхові рішення.

Загальний синтаксис того, як інакше-якщо сходи будуються в програмуванні на C, такий:

 if (test - expression 1) {
    statement1;
} else if (test - expression 2) {
    Statement2;
} else if (test - expression 3) {
    Statement3;
} else if (test - expression n) {
    Statement n;
} else {
    default;
}
Statement x;

Цей тип структури відомий як сходи else-if. Цей ланцюг зазвичай виглядає як сходи, тому його також називають сходами else-if. Тестові вирази обчислюються зверху вниз. Щоразу, коли знайдено істинний тестовий вираз, виконується пов'язаний з ним оператор. Коли всі n тестових виразів стають хибними, виконується оператор else за замовчуванням.

Подивимося реальну роботу за допомогою програми.

#include<stdio.h>
int main()
{
	int marks=83;
	if(marks>75){
		printf("First class");
	}
	else if(marks>65){
		printf("Second class");
	}
	else if(marks>55){
		printf("Third class");
	}
	else{
		printf("Fourth class");
	}
	return 0;
}

вихід:

First class

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

  1. Ми ініціалізували змінну з позначками. У структурі драбини else-if ми надали різні умови.
  2. Значення зі змінних marks буде порівняно з першою умовою, оскільки воно є істинним, а пов’язане з ним твердження буде надруковано на екрані виводу.
  3. Якщо перша перевірочна умова виявляється хибною, то вона порівнюється з другою умовою.
  4. Цей процес триватиме доти, доки не будуть обчислені всі вирази, інакше керування вийде з ланцюжка операторів else-if, і буде виведено оператор за замовчуванням.

Спробуйте змінити значення та помітите зміну результату.

Поширені запитання

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

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

Так. Логічні оператори об'єднують умови: && вимагає, щоб обидві сторони були істинними, || потребує, щоб хоча б одна сторона була істинною, а ! перевертає результат. Наприклад, якщо (вік > 18 && громадянин) перевіряє дві умови разом за допомогою одного оператора if.

Фігурні дужки необов'язкові, коли тіло оператора є одним, тому C виконує лише наступний рядок. Для двох або більше операторів фігурні дужки потрібні для їх групування. Завжди використовувати фігурні дужки — це безпечна звичка, яка запобігає логічним помилкам.

Обробка короткого замикання зупиняється, щойно результат стає відомим. З &&, хибна ліва частина пропускає праву частину. З ||, справжня ліва частина пропускає праву. Це дозволяє уникнути зайвої роботи та небезпечних операцій.

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

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

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

Підсумуйте цей пост за допомогою: