Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 6 - Условия (if).doc
Скачиваний:
42
Добавлен:
16.03.2015
Размер:
167.42 Кб
Скачать

Лабораторная работа №6 управление условиями

If — маленькое слово с большими возможностями

Это короткое слово имеетбольшой вес. Инструкция if используется в тех случаях, когда необходимо решить, должна ли быть выполнена конкретная инструкция программы (if по-английски значит «если»). Структура if выглядит следующим образом:

if (condition)

instruction;

Этой записью мы говорим: «Если некоторое условие выполняется (является истинным), инструкция должна быть выполнена» (рис.1). То есть, компьютер, встретив ключевое слово if, выполняет инструкцию, следующую за ним, если условие в скобках является истинным.

Рис.1. Структура инструкции if

Если условие не выполняется, компьютер пропускает инструкцию, записанную после if, и переходит к следующим строкам программы. Использование if не будет вызывать у вас затруднений, как только вы запомните основные моменты:

  • условие заключается в круглые скобки;

  • точку с запятой ставят не после условия, а только в конце инструкции;

  • Си относится к языкам свободного формата, поэтому условие и инструкцию можно помещать в одной строке. Разделяя их, мы просто делаем программу более удобной для чтения.

Условия

Условием в инструкции if является сравнение значений: значение переменной или константы сравнивается с литералом, или со значением другой переменной или константы. Сравнение выполняется с помощью одного из следующих операторов отношения:

Оператор

Значение

Пример

==

равно

if (tax == 0.06)

>

больше

if (hours > 40)

<

меньше

if (hours< 40)

>=

больше или равно

if (salary>= 10000)

<=

меньше или равно

if (cost<= limit)

!=

не равно

if (count != 1)

Обратите внимание: когда вы хотите узнать, равны ли два значения друг другу, то должны использовать оператор отношения, состоящий из двух знаков равенства (==) подряд. Если поставить только один знак равенства, компилятор сгенерирует предупреждение, или, реже, ошибку. Единичный знак равенства (=) используется для обозначения присваивания значения переменной.

Простейшая инструкция с использованием if выглядит примерно так:

if (time> 11)

puts("Уже поздно, ступайте домой.");

Здесь говорится: «Если значение переменной time больше 11, тогда следующее сообщение должно быть выведено на дисплей». Если значение переменной time окажется меньше 11, сообщение не появится.

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

gets(name);

if (name == "Адам")

puts("Позвоните домой");

Строковые переменные подробно обсуждаются в работе 8.

В программе, приведенной в Листинге 1, используется инструкция if. Эта программа является вариантом программы, которую мы уже видели в предыдущей главе. В ней рассчитывалась общая стоимость наименования товара с учетом налога на продажи. Здесь добавлен расчет специального налога на предметы роскоши для товаров, цена которых превышает 40000 долларов. Расчет этого налога выполняется в инструкции:

if (cost> 40000.00)

luxury = cost * 0.005;

Листинг 1. Программа расчета стоимости товаров с учетом налога на предметы роскоши.

/*luxury1.c*/

main()

{

float cost, tax, luxury, total;

luxury = 0.0;

printf("Введите цену товара: ");

scanf("%f", &cost);

tax = cost * 0.06;

if (cost > 40000.00)

luxury = cost * 0.005;

total = cost + tax + luxury;

printf("Стоимость единицы товара с учетом налогов составляет %.2f", total);

}

В этих инструкциях говорится: «Если значение переменной cost больше 40000, то переменной luxury присваивается значение, равное значению cost, умноженному на 0.5 процента». Последние две строки инструкций в программе выполняются в любом случае, независимо от того, присутствует налог на предметы роскоши или нет, так как эти строки расположены после точки с запятой, завершающей инструкцию if.

Заметьте, что в начале программы переменной luxury присваивается начальное значение, равное 0, в отличие, например, от переменной tax. Причина в том, что переменной tax в любом случае будет присвоено значение, полученное в результате выполнения математических операций tax = cost * 0.06, а расчет и присваивание значения переменной luxury осуществляется только в том случае, если стоимость превышает 40тысяч долларов. Если условие не соблюдается, расчет не производится. В этом случае, если бы переменная luxury не была инициализирована, в выражение расчета общей стоимости было бы подставлено случайное значение, хранящееся в памяти. Поэтому представляется в высшей степени разумным, если вы всегда будете присваивать начальное значение переменным, которые используются в инструкции if, так же, как это делается при использовании счетчика и аккумулятора.

Используя операторы отношения больше и меньше, удостоверьтесь, что с их помощью вы составили именно те условия, которые необходимы. В приведенном примере налог на предметы роскоши добавляется только в том случае, если цена товара хотя бы на один цент превышает 40 тысяч долларов, то есть если вещь стоит 40 тысяч долларов 1 цент и больше. Если стоимость товара составляет ровно 40 тысяч долларов, налог на предметы роскоши не добавляется. Если бы налогом облагались товары, стоимостью 40 тысяч долларов и выше, следовало бы указать условие:

if (cost>= 40000.00)

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