Case c что это за программа

Условные конструкции позволяют направить ход программы по одному из возможных путей в зависимости от условия. В языке Си есть несколько операторов, которые позволяют это сделать.

Оператор if

Оператор if проверяет истинность условия, и если оно истинно, выполняет блок инструкций. Этот оператор имеет следующую сокращенную форму:

if (условие) инструкция;

В качестве условия может выступать любое выражение, которое возвращает число. Если это выражение возвращает ненулевое значение (то есть выражение истинно), то выполняется последующая инструкция:

#include int main(void)

Здесь у нас две условных конструкции if . В качестве инструкции в обоих случаях выполняется функция printf. И в обоих случаях условие представляет просто число. В первом случае «условие» равно 1, то есть «истинно» (любое число, кроме 0, представляет истину). Поэтому на консоль будет выполняться функция printf , которая выведет на консоль строку «Hello C».

А во втором случае «условие» равно 0, то есть «не верно/ложно». Поэтому инструкция printf(«Hello World n») НЕ будет выполняться.

Язык C++ с нуля | #9 Конструкция switch case в c++.

В приведенном выше примере в качестве условий выступали числа 1 или 0. Однако в реальности в качестве условий выступает результат некоторых выражений, обычно, операций сравнения или логических операций. Однако все они в конечном счете возвращают либо 0 (условие не верно) или ненулевое значение (условие верно). Используем операции сравнения:

#include int main(void)

Здесь также используются две условных конструкции if. В первом случае n == 20 условие не верно, оно возвращает 0, так как значение переменной n не равно 20, поэтому поэтому последующая инструкция printf(«n = 20 n») не будет выполняться.

А во втором случае операция сравнения n == 10 возвратит 1, так как условие истинно, поэтому будет выполняться инструкция printf(«n = 10 n») .

Если в конструкции if необходимо выполнить не одну, а несколько инструкций, то эти инструкции оформляются в блок кода с помощью фигурных скобок:

#include int main(void) < int x = 60; if(x >50) < printf(«if statement n»); printf(«x is greater than 50 n»); >return 0; >

Здесь проверяем, больше ли переменная х чем 50. И если это условие истинно, выполняем последующий блок из двух инструкций

Условия могут более сложные:

#include int main(void) < int x = 50; int y = 60; if (x >20 y < 100) < printf(«the condition is truen»); >return 0; >

Здесь проверяем больше ли значение переменно х чем 20 и меньше ли значение переменной y чем 100. Поскольку здесь два условия соединяются операцией , то общее условие будет истинно, если одновременно верны оба условия.

Выражение else

Но что, если мы хотим определить две пары действий: одни выполняются, если условие истинно, а другие, если условие ложно? В этом случае можно использовать другую форму конструкции if — if..else :

Язык си с нуля | #17 Оператор switch case в си.


if(условие) инструкция_1 else инструкция_2

После оператора else мы можем определить набор инструкций, которые выполняются, если выражение_условия ложно, то есть возвращает 0. То есть если условие истинно, выполнится инструкция после оператора if , а если это выражение ложно, то выполняется инструкция после оператора else .

int x = 60; if(x > 60) printf(«x is greater than 60 n»); else printf(«x is less or equal 60 n»);

Однако в данном случае у нас есть три условия: переменная x может быть больше 60, меньше 60 и равна 60. Для проверки альтернативных условий мы можем вводить выражения else if :

Читайте также:
Iiko программа для общепита что это

int x = 60; if(x > 60) printf(«x is greater than 60 n»); else if (x < 60) printf(«x is less than 60 n»); else printf(«x is equal 60 n»);

То есть в данном случае мы получаем три ветки развития событий в программе.

И также если после операторов должен идти набор инструкций, то эти инструкции оформляются в блок кода:

#include int main(void) < int x = 60; if(x >60) < printf(«if statement n»); printf(«x is greater than 60 n»); >else if (x < 60) < printf(«else if statement n»); printf(«x is less than 60 n»); >else < printf(«else statement n»); printf(«x is equal 60 n»); >return 0; >

Конструкция switch

Другую форму организации ветвления программ представляет конструкция switch. case . Она имеет следующую форму:

switch(выражение)

После ключевого слова switch в скобках идет сравниваемое выражение. Значение этого выражения последовательно сравнивается со значениями после оператора сase . И если совпадение будет найдено, то будет выполняться данный блок сase .

В качестве констант после оператора case могут выступать значения типов char, int и unsigned

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

#include int main(void) < int x = 2; switch(x) < case 1: printf(«x = 1 n»); break; case 2: printf(«x = 2 n»); break; case 3: printf(«x = 3 n»); break; default: printf(«x is undefined n»); break; >return 0; >

Здесь в качестве сравниваемого выражения выступает переменная x . Ее значение последовательно сравнивается со значениями после операторов case :

  1. сначала программа переходит к выражению case 1 . Но переменная x не равна 1, поэтому выполнение переходит к следующему оператору case.
  2. программа переходит к выражению case 2 . Поскольку переменная x равна 2, то выполняются инструкции данного оператора case:

case 2: printf(«x = 2 n»); break;

Тернарный оператор

Тернарный оператор ?: позволяет сократить определение простейших условных конструкций if и имеет следующую форму:

[первый операнд — условие] ? [второй операнд] : [третий операнд]

Оператор использует сразу три операнда. В зависимости от условия тернарный оператор возвращает второй или третий операнд: если условие равно 1 (то есть истинно), то возвращается второй операнд; если условие равно 0 (то есть ложно), то третий. Например:

#include int main(void) < int x=5; int y=2; int z = x >y ? x-y : x+y; printf(«z = %d», z); // z = 3 return 0; >

Здесь результатом тернарной операции является переменная z. Она имеет следующие операнды:

Источник: metanit.com

Оператор switch (C)

Операторы switch и case помогают управлять сложными условными операциями и операциями ветвления. Оператор switch передает управление в оператор внутри своего тела.

Синтаксис

selection-statement :
switch ( expression ) statement

labeled-statement :
case constant-expression : statement
default : statement

Комментарии

Оператор switch передает управление одному из labeled-statement в своем теле в зависимости от значения expression .

Значения expression и значение каждого constant-expression должны иметь целочисленный тип. Выражение constant-expression должно иметь однозначное константное целочисленное значение во время компиляции.

Управление передается оператору case , значение constant-expression которого соответствует значению выражения expression . Оператор switch может содержать неограниченное число экземпляров case . Однако значения ни одной из пар выражений constant-expression в одном операторе switch не должны совпадать. Выполнение тела оператора switch начинается с первого соответствующего оператора labeled-statement или после него. Выполнение продолжается до конца тела оператора или пока оператор break не передаст управление за пределы тела.

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

switch ( expression ) < // declarations // . . . case constant_expression: // statements executed if the expression equals the // value of this constant_expression break; default: // statements executed if expression does not equal // any case constant_expression >

Читайте также:
Программа адаптации молодого педагога в школе что это

Оператор break можно использовать для завершения обработки определенного оператора с меткой в операторе switch . Он выполняет ветвление до конца оператора switch . Без оператора break выполнение программы продолжается до следующего оператора с меткой. Операторы будут выполняться до достижения оператора break или конца всего оператора. В некоторых случаях может требоваться именно такое поведение.

Оператор default выполняется, если ни одно из значений case constant-expression не равно значению expression . Если оператор default не указан и соответствующий вариант case не найден, ни один из операторов в теле оператора switch не выполняется. Допускается не более одного оператора default . Оператор default не обязательно должен находиться в конце. Он может располагаться в любом месте тела оператора switch . Метка case или default может располагаться только внутри оператора switch .

Выражения switch expression и case constant-expression должны быть целочисленного типа. Значение каждого case constant-expression в теле оператора должно быть уникальным.

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

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

В следующих примерах кода показаны операторы switch :

switch( c )

В этом примере, если переменная c равна ‘A’ , выполняются все три оператора тела switch , так как оператор break перед следующим оператором case отсутствует. Управления передается первому оператору ( capital_a++; ) и продолжается по-порядку во всей остальной части тела. Если переменная c равна ‘a’ , увеличиваются значения переменных letter_a и total . Если переменная c не равна ‘A’ или ‘a’ , увеличивается только значение переменной total .

switch( i )

В этом примере оператор break указан после каждого оператора тела switch . Оператор break вызывает принудительный выход из тела оператора после выполнения одного оператора. Если переменная i равна –1, увеличивается только значение переменной n . Оператор break после оператора n++; передает управление за пределы тела оператора, минуя оставшиеся операторы. Аналогично, если переменная i равна 0, увеличивается только значение переменной z ; если переменная i равна 1, увеличивается только значение переменной p . Заключительный оператор break , строго говоря, не требуется, так как управление передается из тела в конце составного оператора. Он добавлен для единообразия.

Один оператор может содержать несколько меток case , как показано в следующем примере:

switch( c )

В этом примере, если constant-expression значение равно любой букве между ‘a’ и ‘f’ , convert_hex вызывается функция .

Специально для систем Майкрософт

Microsoft C не ограничивает количество значений case в операторе switch . Это число ограничивается только объемом доступной памяти. ANSI C требует, чтобы в операторе switch можно было использовать не менее 257 меток case .

В Microsoft C расширения Майкрософт по умолчанию (default) включены. Используйте параметр компилятора /Za для отключения этих расширений.

Источник: learn.microsoft.com

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

Условные операторы позволяют управлять потоком выполнения программы, чтобы не выполнялась каждая строка кода, как она следует в программе. Давайте рассмотрим все условные операторы языка C#:

Оператор if

Для организации условного ветвления язык C# унаследовал от С и С++ конструкцию if. else. Ее синтаксис должен быть интуитивно понятен для любого, кто программировал на процедурных языках:

if (условие)
оператор (операторы)
else
оператор (операторы)

Если по каждому из условий нужно выполнить более одного оператора, эти операторы должны быть объединены в блок с помощью фигурных скобок <. >. (Это также касается других конструкций C#, в которых операторы могут быть объединены в блок — таких как циклы for и while.)

Читайте также:
Активный проводник что это за программа

Стоит обратить внимание, что в отличие от языков С и С++, в C# условный оператор if может работать только с булевскими выражениями, но не с произвольными значениями вроде -1 и 0.

В операторе if могут применяться сложные выражения, и он может содержать операторы else, обеспечивая выполнение более сложных проверок. Синтаксис похож на применяемый в аналогичных ситуациях в языках С (С++) и Java. При построении сложных выражений в C# используется вполне ожидаемый набор логических операторов. Давайте рассмотрим следующий пример:

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 < class Program < static void Main(string[] args) < string myStr; Console.WriteLine(«Введите строку: «); myStr = Console.ReadLine(); if (myStr.Length < 5) Console.WriteLine(«nВ данной строке меньше 5 символов»); else if ((myStr.Length >= 5) (myStr.Length символов»,myStr.Length); else Console.WriteLine(«nВ данной строке больше 12 символов»); Console.ReadLine(); > > >

Как видите количество else if, добавляемых к единственному if, не ограничено. Один момент, который следует отметить касательно if: фигурные скобки применять не обязательно, если в условной ветви присутствует только один оператор, как показано в исходном примере.

Оператор switch

Вторым оператором выбора в C# является оператор switch, который обеспечивает многонаправленное ветвление программы. Следовательно, этот оператор позволяет сделать выбор среди нескольких альтернативных вариантов дальнейшего выполнения программы.

Несмотря на то что многонаправленная проверка может быть организована с помощью последовательного ряда вложенных операторов if, во многих случаях более эффективным оказывается применение оператора switch. Этот оператор действует следующим образом. Значение выражения последовательно сравнивается с константами выбора из заданного списка. Как только будет обнаружено совпадение с одним из условий выбора, выполняется последовательность операторов, связанных с этим условием. Ниже приведена общая форма оператора switch:

switch(выражение)

Хотя оператор switch. case должен быть знаком программистам на С и С++, в C# он немного безопаснее, чем его эквивалент С++. В частности, он запрещает «сквозные» условия почти во всех случаях. Это значит, что если часть case вызывается в начале блока, то фрагменты кода за последующими частями case не могут быть выполнены, если только не используется явно оператор goto для перехода к ним. Компилятор обеспечивает это ограничение за счет того, что требует, чтобы за каждой частью case следовал оператор break, в противном случае он выдает ошибку.

Важно отметить, что заданное выражение в операторе switch должно быть целочисленного типа (char, byte, short или int), перечислимого или же строкового. А выражения других типов, например с плавающей точкой, в операторе switch не допускаются. Зачастую выражение, управляющее оператором switch, просто сводится к одной переменной. Кроме того, константы выбора должны иметь тип, совместимый с типом выражения. В одном операторе switch не допускается наличие двух одинаковых по значению констант выбора.

Давайте на примере рассмотрим использование оператора switch:

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 < class Program < static void Main(string[] args) < Console.WriteLine(«Введите язык (C#, VB или C++)»); string myLanguage = Console.ReadLine(); sw1(myLanguage); Console.ReadLine(); >// Данный метод выводит выбор пользователя static void sw1(string s) < switch (s) < case «C#»: Console.WriteLine(«Вы выбрали язык C#»); break; case «VB»: Console.WriteLine(«Вы выбрали язык Visual Basic»); break; case «C++»: Console.WriteLine(«Вы выбрали язык С++»); break; default: Console.WriteLine(«Такой язык я не знаю»); break; >> > >

Источник: professorweb.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru