Программирование на языке C для начинающих: оператор if: основы

Условный оператор в одну ветку: сравниваем значение переменных и числовых констант.

Простейший ‘if’

Откройте исходный текст: http://ideone.com/2TrYZz. Рассмотрим, что Вы видите нового для Вас в этом исходном тексте.

В строке №5 используется оператор if. Это оператор проверки условия. Так же его называют условный оператор. Условие для условного оператора в языке C необходимо указывать в круглых скобках. В нашем случае в качестве условия указано очень простое условие:

5 > 2

Очевидно, что это условие истинно.

В нашем случае таким оператором является вызов функции печати (printf). Обратите внимание, что в этой строке используется дополнительный отступ. Отступы в C не являются частью синтаксиса языка. Но их использование абсолютно необходимо для понимания логики работы программы. Так например, в данном случае очевидно, что

printf("True\n");

находится внутри оператора if, а

printf("End\n");

за его пределами

Логика работы условного оператора следующая: если условие истинно, то выполняется оператор указанный после условия. После выполнения этого оператора выполняется следующий оператор. Если условие не выполняется, то оператор указанный сразу после условия пропускается.

То есть, в данном случае, если Вы запустите Вашу программу, то получите на экране сообщение:

True
End

Сообщение True печатается оператором, находящимся внутри if, а сообщение End печатается оператором, которы записан после оператора if.

Задание: Измените условие так, что бы оно оказалось ложным. Убедитесь, что теперь при запуске программы Вы не получаете сообщение ‘True’. Убедитесь, что строка:

End

печатается независимо от того, было ли условие истинным или ложным.

Несколько операторов в случае выполнения условия

Модифицируем Вашу программу так, чтобы в случае, если условие выполняется, выполнялись два каких-то оператора. Например, так: http://ideone.com/HZMxNR. Прежде, чем запускать программу на исполнение, подумайте, что Вы получите в результате?

Если Вы подумали, что получите вот это:

a=0

или вот это:

True
a=5

То в обоих случаях Вы ошибаетесь. Давайте разберемся почему. В данном случае условие ложно и поэтому, оператор в теле оператора if выполнятся не будет. Однако, несмотря на то, что может показаться, что вот этот оператор:

a = 5;

находится внутри оператора if, это неверено. Внутри оператора if по синтаксису языка может находится только один оператор. Его место занимает в нашем случае строка:

printf("True\n");

А следующий оператор, где переменной a присваивается значение 5, уже находится за оператором if и поэтому, он выполняется в любом случае. Точно также, как в предыдущем примере печать сообщения End была за пределами оператора if.

Несмотря на то, что отступы, как я говорил ранее существенно повышают читабельность исходного кода, они могут сыграть злую шутку, что и произошло в этот раз.

Но как же нам выполнить больше одного оператора в случае, если условие выполняется? Для этого мы должны использовать составной оператор. Иногда их еще называют операторные скобки или блок вычислений.

В языке C для этого используются фигурные скобки. Для нашего случая это может выглядеть так:

if (2 > 5) {
    printf("True\n");
    a = 5;
}

или так:

if (2 > 5) 
{
    printf("True\n");
    a = 5;
}

Примечание. Выбор, где именно писать открывающую фигурную скобку: на строке с оператором if, как в первом вараинте или на следующей строке, как во втором варианте, остается на совести разработчика или корпоративного стандарта. Много копий сломано на этом вопросе. Я предпочитаю первый вариант.

Задание: модифицируйте условие так, что бы оно оказалось ложным. Убедитесь, что в случае, если условие не выполняется, переменная a сохраняет значение 0.

Следующий параграф

К оглавлению

Лицензия

Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0)

Programming in C for beginners by Sergey Borisov (AKA risik) is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.

Программирование на языке C для начинающих автор Сергей Борисов (AKA risik) доступна на условиях лицензии Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.

 

One thought on “Программирование на языке C для начинающих: оператор if: основы”

Leave a Reply