if(выражение)оператор
Обычно под выражением здесь понимают условное выражение, с его помощью сравниваются значения двух величин (например x > yили c == 6). Если такое выражение истинно ( xбольше уили cравно 6), то оператор выполняется. В противном случае он пропускается. Вообще говоря, в качестве условия может быть использовано любое выражение, и если его значение равно 0, то оно считается ложным- дальнейшие детали мы обсудим чуть позже. Оператор может быть простым, как в нашем примере, или составным (блоком), начало и конец которого отмечены фигурными скобками:
if (score > big) printf(" Полная победа!\n"); /* простой оператор */
if (jое > rоn) /* составной оператор */
{
joecash + + ; printf(" Ты проиграл, Рон.\n");
}
Простая форма оператора ifпозволяет выбрать оператор (возможно, составной) или пропустить его. Язык Си предоставляет также возможность выбрать любой из двух операторов путем использования конструкции if-else.
Выбор: конструкция if-else
В предыдущей главе мы привели очень простую программу шифровки сообщений, которая заменяла каждый символ следующим по порядку в таблице ASCII. К сожалению, она заменила даже символ "новая строка", что привело к объединению нескольких строк в одну. Можно исключить эту проблему, написав программу, реализующую простой выбор: если символ - "новая строка", то оставить его без изменений, в противном случае преобразовать его. Вот как это можно запрограммировать на языке Си:
/* код1 */
#include
main( )
{
char ch;
while((ch = getchar( )) != EOF)
{
if(ch =='\n' ) /* оставить символ */
putchar(ch); /* "новая строка" неизменным */
else
putchar(ch + 1); /* заменить остальные символы */
}
}
В прошлый раз был использован файл, содержащий следующий текст:
Good spelling is an aid to clear writing.
Его использование в качестве теста для нашей новой программы приводит к результату:
Ура! Она работает!
Между прочим, совсем несложно написать и программу дешифровки. Скопируйте для этого программу код1, но только замените выражение (ch + 1)на (ch - 1).
Вы обратили внимание на общий вид оператора if-else. Он выглядит следующим образом:
if (выражение)оператор
else
оператор
Если выражение истинно, то выполняется первый оператор, а если ложно, то выполняется оператор, следующий за ключевым словом else. Операторы могут быть простыми или составными. Правила языка Си не требуют отступа в строке, но это стало обычной практикой. Отступ позволяет с первого взгляда заметить те операторы, выполнение которых зависит от проверяемого условия.
Простая конструкция ifпозволяет нам выбирать: выполнить или нет некоторое действие; конструкция же if-elseдает возможность выбрать одно из двух действий. Что делать, если нам требуется осуществить выбор из большого числа вариантов?
Множественный выбор: конструкция else-if
Часто нам приходится осуществлять выбор более, чем из двух вариантов. Чтобы учесть это, мы можем расширить структуру if-elseконструкцией else-if. Рассмотрим конкретный пример. Расценки, назначаемые за коммунальные услуги некоторыми компаниями зависят от количества потребляемой энергии. Приведем расценки, установленные за пользование электроэнергией:
Первые 240 кВт/ч: 0.05418 долл. за кВт/ч
Следующие 300 кВт/ч: 0.07047 долл. за кВт/ч
Свыше 540 кВт/ч: 0.09164 долл. за кВт/ч
Если вас занимает этот вопрос, мы могли бы подготовить программу, вычисляющую стоимость потребляемой энергии. Приведем пример программы, являющейся первым шагом, сделанным в этом направлении:

РИС. 7.1. Операторы ifи if else
/* счет за электроэнергию */
/* вычисляет плату за электроэнергию */
#definе RATE1 0.05418 /* тариф за первые 240 кВт/ч */
#define RATE2 0.07047 /* тариф за следующие 300 кВт/ч */
#define RATE3 0.09164 /* тариф за потребление свыше 540 кВт/ч */
#define BASE1 13.00 /* плата за первые 240 кВт/ч */
#define BASE2 34.14 /* плата за первые 540 кВт/ч */
#define BREAK1 240.0 /* величина, определяющая первое условие ветвления */
#define BREAK2 540.0 /* величина, определяющая второе условие ветвления */
Читать дальше