|
||||||||||||||||||||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Условный оператор ifРассматриваемая группа операторов позволяет организовать ветвление в программе. Часто, например, необходимо в зависимости от того или иного результата реализовать одну либо другую группу операторов (инструкций). В языке СИ для этих целей используются операторы if (если) – else (иначе), switch (переключатель) и goto (идти к). Оператор if имеет вид: if (проверка условия) инструкция1; else инструкция2; Если условие в скобках принимает истинное значение, выполняется инструкция1, а если ложное – инструкция2 (см. рис. 1).
Например: if (a>b) z=a; else z=b; Необходимо обратить внимание на точку с запятой после z=a. Здесь она обязательна, поскольку за if должна следовать инструкция, которая всегда заканчивается точкой с запятой. В операторе if слово else может отсутствовать. В этом случае, если условие в скобках принимает истинное значение, выполняется инструкция 1, а если ложное, то инструкция 1 пропускается и управление передается следующему оператору по тексту программы. Например: if (num>10) num=2*num; printf(“%d\n”,num); Оператор вывода будет выполняться всегда, а оператор присваивания только в том случае, если условие будет истинным. Операции отношения, используемые для сравнения, приведены в таблице 1.
Таблица 1
Не следует путать операцию отношения «==» с операцией присваивания «=». Рассмотрим простейшую программу: #include <stdio.h> #include <conio.h> #include <math.h> #include <iostream.h> main() { int a,b; puts(“Введите значения a и b”); scanf(“%d %d”, &a,&b); if (a>b) puts(“a больше b”); else puts(“a меньше или равно b”); /*демонстрация оператора if – else*/ if (a==b) puts(“a равно b”); /*демонстрация оператора if без слова else*/ getch (); return 0; } Если для выполнения программы ввести числа 5 и 3, то на экране появится строка: а больше b При введении чисел 5 и 5, на экране появится две строки: a меньше или равно b a равно b Иногда в условном операторе после ключевых слов if или else следует инструкция if, ее называют вложенной. Слово else всегда относится к ближнему предшествующему ему if. Также после ключевых слов if и else вместо одной инструкции может быть записано несколько инструкций, которые должны заключаться в фигурные скобки. Например, в if (n>0) if (a>b) z=a; else z=b; else относится к внутреннему if, что и показано с помощью отступов. Если требуется иная интерпретация, необходимо должным образом расставить фигурные скобки: if (n>0) { if (a>b) z=a; } else z=b; В данном примере else относится к внешнему if. В сложных конструкциях, содержащих много if и else, уместно вложенные if обрамлять фигурными скобками. Вместо вложенных конструкций if–else часто целесообразно использовать сложные выражения для проверки условия. Сложные выражения получаются путем объединения нескольких простых отношений с помощью логических операций. В языке СИ имеются три логические операции, приведенные в таблице 2.
Таблица 2
Операция! имеет очень высокий приоритет, он выше, чем умножения, и только круглые скобки имеют более высокий приоритет. Приоритет операции && выше, чем операции ||, а обе они имеют более низкий приоритет, чем операции отношения. Поэтому выражение a>b&&b>c||b>d будет интерпретировано так: ((a>b)&&(b>c))||(b>d), т.е. b находится в промежутке между c и a или b больше d. Пример #include <stdio.h> #include <conio.h> #include <math.h> #include <iostream.h> main() { float x, y; printf("Input x\n"); scanf ("%f", & x); if (x > 0) y = x*x + 1; else y = x + 4; printf ("x=%f y=%f", x, y); getch (); return 0; } Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.009 сек.) |