Условные операторы в C: If, Else, вложенный If с примером.

⚡ Умное резюме

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

  • 🔤 Условное выражение: В условном операторе if блок кода выполняется только тогда, когда условие принимает ненулевое значение true, а значение zero означает false.
  • 🔀 Если-иначе: Конструкция if-else добавляет ветвь false, выполняя один блок, когда условие истинно, и другой, когда оно ложно.
  • Реляционные операторы: Шесть операторов (<, <=, >, >=, ==, !=) формируют логические выражения, которые проверяются каждым условием.
  • 🪜 Лестница «если-то»: Вложенная лестница else-if проверяет несколько выражений сверху вниз и запускает первую истинную ветвь или else по умолчанию.
  • Тернарный оператор: Условное выражение ?: записывает компактный оператор if-else, который возвращает одно из двух значений в одной строке.
  • 🤖 Помощь ИИ: 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, условие будет оценено как true.
  3. Таким образом, он напечатает оператор внутри блока If. После этого управление выйдет за пределы блока и программа завершится с успешным результатом.

реляционный OperaTORs

В языке 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

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

Оператор if-else — это расширенная версия оператора if. Общая форма оператора if-else выглядит следующим образом:

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

В такой конструкции, если значение тестового выражения истинно, то будет выполнен блок операторов, содержащий истинное значение. Если значение тестового выражения ложно, то будет выполнен блок операторов, содержащий ложное значение. В любом случае, после выполнения управление будет автоматически передано операторам, находящимся вне блока 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. Этот блок содержит операторы, которые будут выполнены, если значение тестового выражения станет ложным. В нашей программе значение num больше десяти, поэтому условие проверки становится ложным, а иначе выполняется блок. Таким образом, наш вывод будет из блока 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. Значение переменных меток будет сравниваться с первым условием, поскольку оно истинно, и связанное с ним утверждение будет напечатано на экране вывода.
  3. Если первое тестовое условие оказывается ложным, то оно сравнивается со вторым условием.
  4. Этот процесс будет продолжаться до тех пор, пока не будут оценены все выражения; в противном случае управление выйдет за пределы блока else-if, и будет выведено выражение default.

Попробуйте изменить значение и обратите внимание на изменение выходных данных.

Часто задаваемые вопросы (FAQ)

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

Проблема «висячего else» заключается в неоднозначности определения того, к какому типу if относится else, когда операторы if вложены без фигурных скобок. В языке C else всегда соотносится с ближайшим несовпадающим оператором if. Добавление фигурных скобок устраняет эту путаницу.

Да. Логические операторы объединяют условия: && требует, чтобы обе стороны были истинными, || требует, чтобы хотя бы одна сторона была истинной, а ! инвертирует результат. Например, if (age > 18 && citizen) проверяет два условия одновременно в одном операторе if.

Фигурные скобки необязательны, когда тело оператора состоит из одного выражения, поэтому в C выполняется только следующая строка. Для двух и более операторов фигурные скобки необходимы для их группировки. Постоянное использование фигурных скобок — это безопасная привычка, предотвращающая логические ошибки.

При вычислении с коротким замыканием результат прекращается, как только он становится известен. При использовании оператора && ложная левая сторона пропускает правую. При использовании оператора || истинная левая сторона пропускает правую. Это позволяет избежать ненужной работы и небезопасных операций.

Да. Лестница условий else-if оценивается сверху вниз и останавливается на первом истинном условии. Размещение общих условий перед узкими может скрыть узкие случаи, поэтому упорядочивайте тесты от наиболее специфических к наиболее общим.

Да. Искусственный интеллект, помогающий программировать, создает блоки условных операторов на основе комментариев, преобразует длинные цепочки if-else в более понятные структуры и выявляет потенциальные ошибки, например, использование знака = вместо ==. Всегда проверяйте сгенерированную логику, прежде чем доверять ей.

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

Подведем итог этой публикации следующим образом: