Меню
Разработки
Разработки  /  Информатика  /  Презентации  /  Прочее  /  Условный оператор СИ

Условный оператор СИ

Множественный выбор.

Оператор переключения

09.06.2019

Содержимое разработки

МБУ ДО «Дворец детского творчества» Си/С++. Условный оператор Панченко Надежда Петровна, педагог дополнительного образования г. Дзержинск, Нижегородская обл., 2019 г .

МБУ ДО «Дворец детского творчества»

Си/С++. Условный оператор

Панченко Надежда Петровна,

педагог дополнительного образования

г. Дзержинск, Нижегородская обл., 2019 г .

Меню: Условный оператор; Структура выбора switch .

Меню:

  • Условный оператор;
  • Структура выбора switch .

) оператор1 ; [ else ] Сначала выполняется выражение . Если значение выражения истинно ( не = 0 ), то выполняется оператор1 . Если значение выражения ложно, то выполняется . Значение выражение должно быть заключено в скобки ( ). Это связано с приоритетом операций. Перед else ставиться « ;». Если оператор1 или оператор2 включает в себя несколько операторов, то они д.б. заключены в скобки { }. if (a b) {a=c-b; b=2*a+b;} else {a=b-4*a; b=c+a;} " width="640"

Условный оператор if…else

Инструкция if используется для выбора одного из двух направлений дальнейшего хода программы.

Полная форма имеет вид:

if (выражение ) оператор1 ; [ else ]

  • Сначала выполняется выражение . Если значение выражения истинно ( не = 0 ), то выполняется оператор1 . Если значение выражения ложно, то выполняется .
  • Значение выражение должно быть заключено в скобки ( ). Это связано с приоритетом операций.
  • Перед else ставиться « ;».
  • Если оператор1 или оператор2 включает в себя несколько операторов, то они д.б. заключены в скобки { }.

if (a b) {a=c-b; b=2*a+b;} else {a=b-4*a; b=c+a;}

= = = == != И && ИЛИ || НЕ ! " width="640"

Операции отношения

Математика

СИ

+

+

-

-

=

=

=

==

!=

И

&&

ИЛИ

||

НЕ

!

Задача 1. Найти наибольшее из двух чисел. Ввод данных через клавиатуру .   #include  #include  main () { int a,b;  printf(b) printf(" Большее число %d",a); else printf("Большее число %d",b); getch(); } Задача 2. Найти наименьшее из 3-х чисел . " width="640"

Задача 1. Найти наибольшее из двух чисел. Ввод данных через клавиатуру .

#include

#include

main ()

{ int a,b;

printf(" Задай 2 числа через пробел : ");

scanf("%d %d",&a,&b);

if (ab) printf(" Большее число %d",a);

else printf("Большее число %d",b);

getch();

}

Задача 2. Найти наименьшее из 3-х чисел .

x; if( x 100 ) cout , чем 100\n"; else cout   getch () ; } " width="640"

Применение конструкции if...else

#include

#include

#include

#include  

main()

{

  int x;

  cout x;

if( x 100 ) cout , чем 100\n";

else cout

  getch () ;

}

……… … … .метка : оператор .метка : - М1:, m1: met1:, RM: exit: и т.д. Область действия метки ограничивается функцией, в которой она определена; из этого следует: каждая метка должна быть отлична от других меток в той же самой функции; нельзя передавать управление по оператору goto в другую функцию; по метке можно войти в блок, тело цикла, условный оператор, оператор-переключатель; нельзя с помощью оператора goto передавать управление на конструкцию case и default в теле переключателя. каждая метка должна быть отлична от других меток в той же самой функции; нельзя передавать управление по оператору goto в другую функцию; по метке можно войти в блок, тело цикла, условный оператор, оператор-переключатель; нельзя с помощью оператора goto передавать управление на конструкцию case и default в теле переключателя. " width="640"

Оператор перехода goto

Метка оператора имеет смысл только для оператора goto.

Синтаксис:

goto метка

……… … …

.метка : оператор

.метка : - М1:, m1: met1:, RM: exit: и т.д.

Область действия метки ограничивается функцией, в которой она определена; из этого следует:

  • каждая метка должна быть отлична от других меток в той же самой функции; нельзя передавать управление по оператору goto в другую функцию; по метке можно войти в блок, тело цикла, условный оператор, оператор-переключатель; нельзя с помощью оператора goto передавать управление на конструкцию case и default в теле переключателя.
  • каждая метка должна быть отлична от других меток в той же самой функции;
  • нельзя передавать управление по оператору goto в другую функцию;
  • по метке можно войти в блок, тело цикла, условный оператор, оператор-переключатель;
  • нельзя с помощью оператора goto передавать управление на конструкцию case и default в теле переключателя.
Задача 3 . Определить, принадлежит ли число с , заданному интервалу [ a..b ]. проверять а . Ввод данных через клавиатуру. #include  #include  main () {  int a,b,c;  M1: printf(b) goto M1; if ((ca) && (c else printf("Не принадлежит"); getch(); } Задача 4 . Интервал и число задавать случайными числами. " width="640"

Задача 3 . Определить, принадлежит ли число с , заданному интервалу [ a..b ]. проверять а .

Ввод данных через клавиатуру.

#include

#include

main ()

{

int a,b,c;

M1: printf("Задай интервал и число: ");

scanf("%d %d %d",&a,&b,&c);

if (ab) goto M1;

if ((ca) && (c

else printf("Не принадлежит");

getch();

}

Задача 4 . Интервал и число задавать случайными числами.

Задача 5 . Если числа равны возвести их в квадрат, не равны – найти сумму и произведение. #include  #include  #include  main () {  int a,b,s,p;  printf (

Задача 5 . Если числа равны возвести их в квадрат, не равны – найти сумму и произведение.

#include

#include

#include

main ()

{

int a,b,s,p;

printf ("Задай 2 числа через пробел: ");

scanf ("% d % d ",& a ,& b );

if (a==b) {s=a*a;printf(" квадрат : %d",s);}

else {s=a+b;p=a*b; printf(" сумма : %d произведение : %d",s,p);}

printf("\n Задай 2 числа : "); scanf("%d %d",&a,&b);

if (a!=b) {s=a+b;p=a*b; printf(" сумма : %d произведение : %d",s,p);}

else {a*=a;printf(" Квадрат : %d",a);}

getch();

}

5) m = 10; else m = x*y; if ( xa ) f = sin( x-a ); else f = sin(x); В тернарном варианте это имеет следующий вид: m = k 5 ? 10 : x * y ; f = sin( xa ? x-a : x ); Тернарные операции применяются в тех случаях, когда: используется только полная форма условного оператора; в одной и другой ветви операции (после символов ? и :) можно указать по одному выражению. " width="640"

Тернарная операция ?

Для более компактной записи структуры выбора if / else применяется тернарная операция ? и : .

Общий вид операции следующий:

Выражение1 ? выражение2: выражение3;

Операция выполняется следующим образом:

вычисляется выражение1 , если оно истинно, то выполняется выражение2 , иначе выполняется выражение3 , например:

if (k5) m = 10; else m = x*y;

if ( xa ) f = sin( x-a ); else f = sin(x);

В тернарном варианте это имеет следующий вид:

m = k 5 ? 10 : x * y ;

f = sin( xa ? x-a : x );

Тернарные операции применяются в тех случаях, когда:

  • используется только полная форма условного оператора;
  • в одной и другой ветви операции (после символов ? и :) можно указать по одному выражению.
b ) k = sin( x ); else k = x*x; if( a b ) k = sin( x ); else k = x * x ; " width="640"

1. Короткие операторы

if( a b ) k = sin( x ); else k = x*x;

if( a b ) k = sin( x );

else k = x * x ;

b ) { ... } else {... } if( a b ) { ... } else { ... } или if ( ... ) { ..... } else { ..... } " width="640"

2. Группы коротких операторов

if( a b ) { ... } else {... }

if( a b ) { ... }

else { ... }

или

if ( ... )

{ ..... }

else

{ ..... }

 3. Длинные группы операторов  if (... )   {  .  .  .  } else  {  .  .  .  }

3. Длинные группы операторов

if (... )

{

.

.

.

}

else

{

.

.

.

}

20 && a else { ... } " width="640"

4. Множественный выбор

if ( a == 6 ) { ... }

else if ( a == 8 ) { ... }

else if ( a == 15 ) { ... }

else if ( a 20 && a

else { ... }

  Множественный выбор. Оператор переключения Структура выбора switch

Множественный выбор.

Оператор переключения

Структура выбора switch

Структура выбора switch Общая структура выбора имеет вид: с har k; // k - тип с har switch(k) {  Case const1: { операция 1; .. ; операция N} break;  Case const2: { операция 1; .. ; операция N} break; ……………… .  Case constN: { операция 1; .. ; операция N} break; default: { операция 1; .. ; операция N} break; }

Структура выбора switch

Общая структура выбора имеет вид:

с har k; // k - тип с har

switch(k)

{

Case const1: { операция 1; .. ; операция N} break;

Case const2: { операция 1; .. ; операция N} break;

……………… .

Case constN: { операция 1; .. ; операция N} break;

default: { операция 1; .. ; операция N} break;

}

Выражение, записываемое после ключевого слова switch в скобках, м.б. целого, символьного или перечисляемого типа. Можно указывать целую или символьную константу. Выполнение происходит следующим образом: определяется значение k; сравнивается с 1-й константой на строгое равенство , затем со 2-й и т.д.; если произошло совпадение, то выполняется последовательность операторов, заключённых в {} скобки. . {} скобки можно не ставить, если присутствует 1 оператор; затем команда break  передаёт управление оператору, следующему за switch ; в случае отсутствия совпадение управление передаётся оператору default (умолчание). Если этой метки нет, то при отсутствии совпадений ничего не выполняется. Эта метка необязательна. Основная особенность оператора switch – обязательность break для пропуска остальных ветвей.

Выражение, записываемое после ключевого слова switch в скобках, м.б. целого, символьного или перечисляемого типа. Можно указывать целую или символьную константу. Выполнение происходит следующим образом:

  • определяется значение k;
  • сравнивается с 1-й константой на строгое равенство , затем со 2-й и т.д.;
  • если произошло совпадение, то выполняется последовательность операторов, заключённых в {} скобки. . {} скобки можно не ставить, если присутствует 1 оператор;
  • затем команда break передаёт управление оператору, следующему за switch ;
  • в случае отсутствия совпадение управление передаётся оператору default (умолчание). Если этой метки нет, то при отсутствии совпадений ничего не выполняется. Эта метка необязательна.
  • Основная особенность оператора switch – обязательность break для пропуска остальных ветвей.
Пример 1 Допускается использовать несколько констант для пометки одной группы операторов, например  case 2 :  case 4 :  case 8 : f = sin(x); break; Если группа операторов не завершается оператором break, то будут выполняться все последующие операторы независимо от наличия case с константами до ближайшего break или другого оператора, прерывающего естественную последовательность действий. Иными словами ключевое слово case с константой надо рассматривать как метку для передачи управления.

Пример 1

Допускается использовать несколько констант для пометки одной группы операторов, например

case 2 :

case 4 :

case 8 : f = sin(x); break;

Если группа операторов не завершается оператором break, то будут выполняться все последующие операторы независимо от наличия case с константами до ближайшего break или другого оператора, прерывающего естественную последовательность действий. Иными словами ключевое слово case с константой надо рассматривать как метку для передачи управления.

Пример 2 В следующем операторе:  switch( ch )  {  case 'A' :  case 'B' : x++;  case 'C' :  case 'D' : f = sin(x); break;  case 'E' : f = cos(x); break;  } будет  вычислено:  f=sin(x+1),  при  ch = 'A'  или  'B' ;  f=sin(x ), при  ch = 'C ' или  'D' ;  f=cos(x),  при  ch = 'E'.

Пример 2

В следующем операторе:

switch( ch )

{

case 'A' :

case 'B' : x++;

case 'C' :

case 'D' : f = sin(x); break;

case 'E' : f = cos(x); break;

}

будет вычислено:

f=sin(x+1), при ch = 'A' или 'B' ;

f=sin(x ), при ch = 'C ' или 'D' ;

f=cos(x), при ch = 'E'.

Пример 3 Можно объединять ветви, через список значений, перечисляемые через запятую. switch   (f +k)           {  case 0         : { k ++; break;}  case 3, 8     : { f --; k --; break;}  case 9         :  case 11       : { d = ++ f; break;} default   d = --f;       }

Пример 3

Можно объединять ветви, через список значений, перечисляемые через запятую.

switch   (f +k)          

{

case 0         : { k ++; break;}

case 3, 8     : { f --; k --; break;}

case 9         :

case 11       : { d = ++ f; break;}

default   d = --f;      

}

n; // ввод целого числа switch (n) { case 1 + 5 : cout case 1+10 : cout case 5+10 : cout default : cout } getch ( ); // задерживает экран return 0; // завершает программу } " width="640"

Задача 6. Даны 3 монеты: 1, 5, 10 коп. Написать программу, которая определяет, можно ли набрать заданную сумму, используя только 2 монеты из 3-х.

#unclude

#unclude

main ( )

{

int n;

cin n; // ввод целого числа

switch (n)

{

case 1 + 5 : cout

case 1+10 : cout

case 5+10 : cout

default : cout

}

getch ( ); // задерживает экран

return 0; // завершает программу

}

a b ; // ввод чисел а и b cin z ; // ввод z – знака операции switch (z) { case ‘-‘ : cout case ‘+’ : cout case ‘*’ : cout case ‘/’ : cout default : cout } getch ( ); // задерживает экран return 0; // завершает программу } " width="640"

Задача 7. Калькулятор. Даны 2 числа, получить результат, используя операции: -, +, *, /.

#unclude

#unclude

main ( )

{

char z; int a,b;

cin a b ; // ввод чисел а и b

cin z ; // ввод z – знака операции

switch (z)

{

case ‘-‘ : cout

case ‘+’ : cout

case ‘*’ : cout

case ‘/’ : cout

default : cout

}

getch ( ); // задерживает экран

return 0; // завершает программу

}

Обратить внимание При использовании оператора switch необходимо внимательно следить за правильностью написания ключевого слова default и за тем, чтобы между ключевым словом case и числовой константой обязательно имелся пробел . В противном случае, эти конструкции будут приняты за правильно записанные метки для оператора goto, и компилятор не выдаст никакой диагностики.

Обратить внимание

При использовании оператора switch необходимо внимательно следить за правильностью написания ключевого слова default и за тем, чтобы между ключевым словом case и числовой константой обязательно имелся пробел . В противном случае, эти конструкции будут приняты за правильно записанные метки для оператора goto, и компилятор не выдаст никакой диагностики.

Литература Васильев А.В. Программирование на С++ в примерах и задачах. – Москва: Издательство «Э», 2017. Динман М.И. С++. Освой на примерах. – СПб: БХВ-Петербург, 2006. Подбельский В.В. Язык Си # . Решение задач: учеб. пособие/ - М.: Финансы и статистика, 2014.

Литература

  • Васильев А.В. Программирование на С++ в примерах и задачах. – Москва: Издательство «Э», 2017.
  • Динман М.И. С++. Освой на примерах. – СПб: БХВ-Петербург, 2006.
  • Подбельский В.В. Язык Си # . Решение задач: учеб. пособие/ - М.: Финансы и статистика, 2014.
-75%
Курсы повышения квалификации

Организация и сопровождение олимпиадной деятельности учащихся

Продолжительность 72 часа
Документ: Удостоверение о повышении квалификации
4000 руб.
1000 руб.
Подробнее
Скачать разработку
Сохранить у себя:
Условный оператор СИ (238.5 KB)

Комментарии 0

Чтобы добавить комментарий зарегистрируйтесь или на сайт

© 2008-2024, ООО «Мультиурок», ИНН 6732109381, ОГРН 1156733012732

Учителю!
Огромная база учебных материалов на каждый урок с возможностью удаленного управления
Тесты, видеоуроки, электронные тетради