Четверг, 28.11.2024, 19:42
Приветствую Вас, Гость |
Меню сайта
Наш опрос
Нужен ли форум на этом сайте?
Всего ответов: 1313
Статистика

Онлайн всего: 4
Гостей: 4
Пользователей: 0

Операторы ветвления

Оператор ветвления(условия) – оператор управления, осуществляющий выполнение одного и только одного составного оператора из двух возможных в зависимости от условия.
 Синтаксис оператора ветвления:
 if (условие){ составной оператор №1 }
 else { составной оператор №2 }

 Если составной оператор в основной или альтернативной ветви оператора управления содержит только один простой оператор, то фигурные скобки можно опустить. В таком случае синтаксис оператора ветвления примет вид:
 if(условие) простой оператор №1;
 else простой оператор №2;

 Основное предназначение оператора ветвления в языке СИ – реализация разветвляющихся алгоритмов. Например, фрагмент программы, для вычисления функции:   Y(x)=x*x,при x<0 и Y(x)=2*x, при x>=0
  double x,y;
  printf("Введите значение Х: ");
  scanf("%lf”,&x);
  if(x<0.0) y = x*x;
   else y = 2.0*x;
  printf("Результат: %lf\n”,y);

 При построении программ с несколькими подряд идущими операторами ветвления необходимо учитывать следующее правило: оператор else относится к последнему оператору if. Например, рассмотрим фрагмент программы:
  if(x>10.0) y = 2*x+5;
  if(y<z) y = fabs(x);
   else y = 2.5*x;
 Если необходимо нарушить этот порядок (т.е. ветвь else отнести к первому оператору if), то необходимо второй оператор if включить в составной оператор прямой ветви первого оператора if:
  if(x>10.0)
  {
   y = 2*x+5;
   if(y<z) y = fabs(x);
  } else y = 2.5*x;
 В программировании часто встречается необходимость создания каскадных операторов ветвления. Синтаксис такой структуры имеет вид:
  if (условие № 1) составной оператор № 1
   else if (условие № 2) составной оператор № 2
    ...
     else if (условие № N) составной оператор № N
      else составной оператор № N+1

 Например, фрагмент программы, для вычисления функции:Y(x)=x*x,при x<0 и Y(x)=2*x, при 0<=x<5, Y(x)=x+5, при x>5
  double x, y;
  printf("Введите значение Х: ");
  scanf("%lf",&x);
  if (x<0.0) y = x*x;
   else if (x<5) y = 2.0*x;
    else y = x + 5.0;
  printf("Результат: %lf\n",y);

 Правила форматирования. Альтернативная ветвь оператора ветвления всегда указывается на новой строке с отступом:
  if(...) ...
   else ...

 Если в прямой или альтернативной ветви оператора ветвления находятся один простой оператор, то он указывается на той же строке:
  if(...) оператор № 1;
   else оператор № 2;

 Если в прямой или альтернативной ветви оператора ветвления находятся составные операторы, то следует придерживаться следующего форматирования:
  if(условие)
  {
   оператор № 1;
   ...
   оператор № N;
  }
  else
  {
   оператор № N+1;
   ...
  }
 ИСКЛЮЧЕНИЕ: если операторы в прямой и альтернативной ветви имеют краткую запись, то допускается оператор ветвления записывать в одну строчку:
 if(условие) оператор №1; else оператор №2;

Оператор выбора  Давайте разберем работу оператора if на примере, пусть нам дается число, а нам нужно вывести (почитать о функциях ввода/вывода в СИ) соответствующий этому числу день недели(5 - пятница, 7- воскресенье и тд). программа будет иметь вид:
  int n;   //переменная для хранения номера дня недели
  printf("Введите номер дня:");
  scanf("%d",&n);  
//считываем число
  if(n==1) printf("Понедельник\n");  //проверяем, если n равно 1 то выводим слово "понедельник"
   else if(n==2) printf("Вторник\n"); // тоже выполняется для вторника, ну и тд для остальных дней недели
    else if(n==3) printf("Среда\n");
     else if(n==4) printf("Четверг\n");
      else if(n==5) printf("Пятница\n");
       else if(n==6) printf("Суббота\n");
        if(n==7) printf("Воскресенье\n");
         else printf("Неправильный номер!\n");

 Такие действия можно заменить оператором выбора – оператор управления, осуществляющий выполнение одного или нескольких действий. Синтаксис оператора выбора в СИ:
  switch(выражение)  //выражение - численная переменная или функция возвращающая число
  {
   case значение1: оператор1;
   case значение2: оператор2;
   ...
   case значениеN: операторN;
   default: оператор N+1;
  }

 ПРИМЕЧАНИЕ: чаще всего выполнение всех оператором после совпадения не нужно, поэтому в таком случае после операторов пишут ключевое слово break, которые выйдет из оператора ветвления switch. Программа о днях недели с использованием оператора switch выглядит так:
  int n;   //переменная для хранения номера дня недели
  printf("Введите номер дня недели: ");
  scanf("%d",&n);  
//считываем число
  switch(n)   //преверяем n, т.е в зависимости от его значения выполнится одна из следующих строк
  {
   case 1: {printf("Понедельник\n"); break;}  
//если n равно 1, то выполниться эта строка
   case 2: {printf("Вторник\n"); break;}  // а если 2, то эта. ну и т.д
   case 3: {printf("Среда\n"); break;}
   case 4: {printf("Четверг\n"); break;}
   case 5: {printf("Пятница\n"); break;}
   case 6: {printf("Суббота\n"); break;}
   case 7: {printf("Воскресенье\n"); break;}
   default: printf("Неправильной номер!\n”);
  }

Правила форматирования  При написании программ использующих оператор switch, следует придерживаться некоторых правил форматирования:
Общий формат оператора:
  switch(...)
  {
   операторы
  }

 Каждый оператор case должен быть написан с отступом от switch и начинаться с новой строки. Если же оператор после case большой, то он записывается в несколько строк, выглядит это так:
  case константа:
  {
   Оператор № 1;
   ...
   Оператор № N;
   break;
  }

  Теперь можно почитать о циклах в СИ.
Форма входа
Поиск
Мы в сети
Реклама
Для того чтобы не видеть рекламу в правом верхнем углу сайта пройдите простую процедуру регистрации
ФОРУМ
У нас наконецто появился форум! Добро пожаловать! Будьте первыми, задайте направление форуму! =)
--- Не стесняемся - заходим на форум! ---