Главная » Статьи » Програмування » C | [ Добавить статью ] |
Сейчас мы с вами познакомимся с оператором, который позволяет превратить обычную линейную программу в программу «мыслящую». Данный оператор позволяет проверить какое-то утверждение (выражение) на истинность и в зависимости от полученного результата произвести то или иное действие. Для начала рассмотрим общий синтаксис данного оператора:
Основные принципы работы оператора if.1. В качестве утверждения или выражения может выступать какая-либо конструкция, содержащая логические операторы или же арифметическое выражение. • if(X>Y) – обычное утверждение, будет истинным, если X действительно больше Y
• if(A>B&&A<C) – комбинированное утверждение, состоящее из двух частей, будет истинно, если обе части будут верными
• if(A-B) – арифметическое выражение, будет истинным, если А не равно B, т. к. в противном случае (если они равны) их разность даст нуль, а нуль это ложь
• if(++A) - арифметическое выражение, будет истинным, если А не равно -1, т. к. если А равно -1 увеличение на 1 даст нуль, а нуль это ложь
• if(A++) - арифметическое выражение, будет истинным, если А не равно 0, т. к. в данном случае используется постфиксная форма инкремента, сначала произойдет проверка условия и будет обнаружен нуль, а потом увеличение на единицу.
• if(A==Z) - обычное утверждение, будет истинным, если A равно Z • if(A=Z) – операция присваивания, выражение будет истинным, если Z не равно нулю Примечание: Типичная ошибка. Очень часто
вместо операции проверки на равенство ==, по невнимательности указывается
операция присваивания =, и смысл выражения может радикально измениться. Такая
банальная опечатка может привести к некорректной работе всей программы.
Рассмотрим два казалось бы идентичных примера.
Правильный пример.
Пример с ошибкой.
2. Как вы уже успели заметить, если содержимое круглых скобок будет являться истиной, то выполнится действие 1, заключенное в фигурные скобки конструкции if, при этом действие 2 блока else будет проигнорировано. 3. Если же содержимое круглых скобок ложно, выполнится действие 2, заключенное в фигурные скобки конструкции else, при этом действие 1 будет проигнорировано. 4. Конструкция else является необязательной. Это означает, что если нет необходимости делать что-либо при ложности утверждения, данную конструкцию можно не указывать. Например, программу, использующую защиту против деления на нуль, можно записать таким образом:
5. Если к блоку if или else относится только одна команда, то фигурные скобки можно не указывать. С помощью этого правила сделаем программу еще короче:
Мы только что познакомились с условным оператором if и обсудили основные принципы его действия. Прежде чем переходить рассмотрению специфических особенностей if и практическим примерам, сделаем небольшое отступление и посмотрим на еще один оператор, с помощью которого можно поставить простое условие. Примечание: Будьте внимательны: оператор if и
оператор else неразрывны!!! Попытка вписать между ними строку кода, приведет к
ошибке на этапе компилляции.
Фрагмент кода с ошибкой.
Тернарный оператор.Некоторые условия являются очень примитивными. Например, возьмем нашу программу деления двух чисел. Она проста и с точки зрения действий и с точки зрения кода. На операторы if и else приходится по одной строке кода - действия. Такую программу, можно упростить еще больше, используя тернарный оператор. Для начала рассмотрим его синтаксис:
Принцип действия прост - если УТВЕРЖДЕНИЕ ИЛИ ВЫРАЖЕНИЕ - истина, выполняется ДЕЙСТВИЕ1, если - ложь, выполняется ДЕЙСТВИЕ2. Давайте рассмотрим деиствие данного оператора на примере:
Не правда ли, код стал еще оптимальнее!? Для закрепления полученной информации приведем еще один, более сложный, пример. Программа, будет определять, какое из двух чисел, введенных пользователем является большим, а какое меньшим.
Итак, давайте твердо уясним следующее: Если условие и действия от него зависящие, достаточно просты, будем использовать тернарный оператор. Если же нам необходима сложная конструкция, то, безусловно, используем оператор if. | |||||||||||||||||||||||||||||||
Просмотров: 749 | |
Всего комментариев: 0 | |