Лекция №3 Ветвления Инструкции и выражения Выражение становится инструкцией, если в конце его поставить точку с запятой. Выражения: a = b + c, i++, printf(...), a + (b = c) Инструкции: a = b + c; i++; printf(…); a + (b = c); Составные инструкции (блоки) Фигурные скобки { и } используются для объединения объявлений и инструкций в составную инструкцию, или блок . Пример: void main() { … } Конструкция if-else Инструкция if-else используется для принятия решения. Да Синтаксис: if (<выражение>) <инструкция1> else <инструкция2> Выражение Инструкция1 Нет Инструкция2 Конструкция if-else Пример №1 if (а > b) z = a; else z = b; Пример №2 if (a > b) z = a; Пример №3 if (a - b != 0) c = a; Пример №4 if (a - b) c = a; Вложенные конструкции Пример №1 if (n > 0) if (а > b) z = a; else z = b; Пример №3 if (n > 0) if (а > z = else z = } { b) a; b; Пример №2 if (n > 0) { if (а > b) z = a; } else z = b; Конструкция Else-If Синтаксис: if (<выражение>) <инструкция> else if (<выражение>) <инструкция> else if (<выражение>) <инструкция> else if (<выражение>) <инструкция> else <инструкция> Конструкция Else-If Пример: if (a > 0) printf("Число положительное\n" ; else if (a < 0) printf("Число отрицательное\n"); else printf("Число равно нулю"); Конструкция switch Конструкция switch используется для выбора одного из многих вариантов. switch (<выражение>) { case <конст-выр>: инструкции case <конст-выр>: инструкции default: инструкции } Конструкция switch Пример: n=3 Результат выполнения программы: switch (n) { Дней в месяце: 31 case 1: d = 31; break; case 2: d = 28; break; case 3: d = 31; break; … case 11: d = 30; break; case 12: d = 31; break; default: d = 0; /* ошибка! Неверный номер месяца! */ } printf("Дней в месяце: %d\n", d); Конструкция switch Пример: n=3 Результат выполнения программы: switch (n) { Дней в месяце: 0 case 1: d = 31; case 2: d = 28; case 3: d = 31; case 4: d = 30; … case 11: d = 30; case 12: d = 31; default: d = 0; /* ошибка! Неверный номер месяца! */ } printf("Дней в месяце: %d\n", d); Конструкция switch Пример: switch (n) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: d = 31; break; case 4: case 6: case 9: case 11: d = 30; break; case 2: d = 28; break; default: d = 0; /* ошибка! Неверный номер месяца! */ } printf("Дней в месяце: %d\n", d); Конструкция switch Пример: float f; … switch (f) { case 0.5: …; break; case 1.5e-2: …; break; } Конструкция switch Пример: switch (n) { case 1: int a = 0; case 2: { int b = 0; … } break; } Условная операция Синтаксис: <выражение> ? <выражение 1> : <выражение 2> Пример №1: z = a > b ? a : b; Эквивалентная примеру №1 if-else конструкция: if (a > b) z = a; else z = b; Пример №2 z = (a > b ? a : b) * c; Безусловный переход Синтаксис goto <метка>; <метка>: if (a == 0) goto error; Z = x / a; if (b == 0) goto error; Z = x / b; … error: printf(“деление на 0”);