КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Теоретические сведения. Условный операторимеет сокращенную форму:Условный операторимеет сокращенную форму: if (выражение_условие) оператор; где в качестве выражения_условия могут использоваться: арифметическое выражение, отношение и логическое выражение. Оператор, включенный в условный, выполняется только в случае истинности (т.е. при ненулевом значении) выраж-ния_условия. Пример: if (х < 0 && х > -10) х=-х: Кроме сокращенной формы, имеется еще и полная форма условного оператора: if (выражение_условие) оператор _1; else оператор _2; Здесь в случае истинности выражения-условия выполняется только оператор_1, при нулевом значении выражения-условия выполняется только оператор_2. Например: if (x > 0) b=х ; Else b=-х; Оператор в сокращенном варианте оператора if, и оператор_1 и оператор 2 в полном операторе if могут быть как отдельными, так и составными операторами. Например, при решении алгебраического уравнения 2-й степени ax2+bx+c=0 действительные корни имеются только в случае, если дискриминант (b2~4ас) неотрицателен. Следующий фрагмент программы иллюстрирует использование условного оператора при определении действительных корней х1, х2 квадратного уравнения: ............... d=b*b- 4*а*с; /* d - дискриминант*/ if (d>=0.0) { xl=(-b+sqrt(d))/2/a; х2=(-b-sqrt(d))/2/а; printf("\n Корни: xl=%e, x2=%e", xl, х2); } Else printf("\n Действительные корни отсутствуют."); Во фрагменте предполагается, что переменные d, b, a, xl, х2 - вещественные (типа floatлибо double).До приведенных операторов переменные а, b, с получили конкретные значения, для которых выполняются вычисления. В условном операторе после ifнаходится составной оператор, после else- только один оператор - вызов функции printf(). При вычислении корней используется библиотечная функция sqrt() из стандартной библиотеки компилятора. Ее прототип находится в заголовочном файле math.h. Операции отношений (сравнения): < меньше, чем (ранг 6); , > больше, чем (ранг 6); <= меньше или равно (ранг 6); >= больше или равно (ранг б); == равно (ранг 7); != не равно (ранг 7). Операнды операций отношений должны быть арифметического типа или могут быть указателями. Результат целочисленный: 0 (ложь) или 1 (истина). Последние две операции (операции сравнения на равенство) имеют более низкий приоритет по сравнению с остальными операциями отношений. Таким образом, выражение (х < В ==А < х) есть 1, когда значение х находится в интервале от А до В и А<В либо х, А, В равны. (Вначале вычисляются х<В и А<х, к результатам применяется операция сравнения на равенство ==.) Логические бинарные операции: && - конъюнкция (И) арифметических операндов или отношений (ранг 11. Целочисленный результат 0 (ложь) или 1 (истина); || - дизъюнкция (ИЛИ) арифметических операндов или отношений (ранг 12). Целочисленный результат 0 (ложь) или 1 (истина). (Вспомните о существовании унарной операции отрицания '!'.) Результаты отношений и логических операций: 3<5 равняется 1; 3>5 равняется 0; 3=5 равняется 0; 3!=5 равняется 1; 3!=5 || 3=5 равняется 1; 3+4>5 && 3+5>4 && 4+5>3 равняется 1. Условная трехместная операция (ранг 13). В отличие от унарных и бинарных операций условная тернарная операция используется с тремя операндами. В изображении условной операции применяются два символа '?' и ':' и три выражения-операнда: выражение_1 ? выражение_2 : выражение_3 Первым вычисляется значение выражения_1. Если оно истинно, т.е. не равно нулю, то вычисляется значение выражения_2, которое становится результатом. Если при вычислении выражения_1 получится 0, то в качестве результата берется значение выражения_3. Классический пример: х < 0 ? -х : х; Выражение возвращает абсолютную величину переменной х.
|