Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Оператор if

Пустой оператор

Блок или составной оператор

Лекция

Состав операторов языка C#, их синтаксис и семантика унаследованы от языка С++. Любое выражение, завершающееся точкой с запятой является оператором.

С помощью фигурных скобок несколько операторов языка (возможно, перемежаемых объявлениями) можно объединить в единую синтаксическую конструкцию, называемую блоком или составным оператором:

{ оператор_1... оператор_N}

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

Пустой оператор - это "пусто", завершаемое точкой с запятой. Он используется когда по синтаксису оператор требуется, а по смыслу- нет. Иногда полезно рассматривать отсутствие операторов как существующий пустой оператор. Синтаксически допустимо ставить лишние точки с запятой, полагая, что вставляются пустые операторы. Например, синтаксически допустима следующая конструкция:

for (int j=1; j<5; j++) //оператор цикла {;;;}; //пустой оператор

Она может рассматриваться как задержка по времени, работа на холостом ходе.

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

Как в С++ и других языках программирования, в языке C# для выбора одной из нескольких возможностей используются две конструкции - if и switch. Первую из них обычно называют альтернативным выбором, вторую - разбором случаев.

Синтаксис оператора if:

if(выражение_1) оператор_1;else if(выражение_2) оператор_2... else if(выражение_K) оператор_Kelse оператор_N

Выражения if должны заключаться в круглые скобки и быть булевого типа. По правилам синтаксиса языка С++, then-ветвь оператора следует сразу за круглой скобкой без ключевого слова then, типичного для большинства языков программирования. Каждый из операторов может быть блоком - в частности, if-оператором. Поэтому возможна и такая конструкция:

if(выражение1) if(выражение2) if(выражение3)...

Ветви else и if, позволяющие организовать выбор из многих возможностей, могут отсутствовать. Может быть опущена и заключительная else-ветвь. В этом случае краткая форма оператора if задает альтернативный выбор - делать или не делать - выполнять или не выполнять then-оператор.

Семантика оператора if проста и понятна. Выражения if проверяются в порядке их написания. Как только получено значение true, проверка прекращается и выполняется оператор (это может быть блок), который следует за выражением, получившим значение true. С завершением этого оператора завершается и оператор if. Ветвь else, если она есть, относится к ближайшему открытому if.

Примеры оператора if:

if (a<0) b=1;

if (a<b&& (a>d||a= =0)) b=++; else {b*=a;a=0;}

if (a<b) if (a<c) m=a; else m=c; else if (b<c) m=b; else m=c;

Следует избегать проверки вещественных величин на равенство, вместо этого лучше сравнивать модуль их разности с некоторым малым числом:

float a,b;

if (a= =b) // не рекомендуется

if (Math.Abs(a-b)<1e-6)…//надежно!

Оператор switch (переключатель)

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

switch(выражение){ case константное_выражение_1: [операторы_1 оператор_перехода_1]... case константное_выражение_K: [операторы_K оператор_перехода_K] [default: операторы_N оператор_перехода_N]}

Выполнение оператора начинается с вычисления выражения. Тип выражения чаще всего целочисленный (включая char) или строковый. Затем управление передается первому оператору из списка, помеченному константным выражением, значение которого совпало с вычисленным.

Каждая ветвь переключателя должна заканчиваться явным оператором перехода, а именно оператором break, goto или return:

Выражение в switch должно иметь целочисленный тип (включая char) или строковый.

Ветвь default может отсутствовать. Заметьте, по синтаксису допустимо, чтобы после двоеточия следовала пустая последовательность операторов, а не последовательность, заканчивающаяся оператором перехода. Константные выражения в case должны иметь тот же тип, что и switch-выражение.

Семантика оператора switch такова. Вначале вычисляется значение switch-выражения. Затем оно поочередно в порядке следования case сравнивается на совпадение с константными выражениями. Как только достигнуто совпадение, выполняется соответствующая последовательность операторов case-ветви. Поскольку последний оператор этой последовательности является оператором перехода (чаще всего это оператор break), то обычно он завершает выполнение оператора switch. Если значение switch-выражения не совпадает ни с одним константным выражением, то выполняется последовательность операторов ветви default, если же таковой ветви нет, то оператор switch эквивалентен пустому оператору.

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


Пример

using System;

 

namespace l1

{

class Program

{

static void Main(string[] args)

{

int a, b, c;

a = 2;

b = 3;

if (a < b) Console.WriteLine("a Меньше b");

//Следующая инструкция ничего не отобразит на экране

if (a == b) Console.WriteLine("Этого текста никто не увидит");

Console.WriteLine();

c=a-b;//Переменная с содержит -1

Console.WriteLine("с содержит -1");

if (c<0) Console.WriteLine("Значение с отрицательно");

else if (c>=0) Console.WriteLine("Значение с неотрицательно");

Console.WriteLine();

c = b - a;//Переменная с содержит 1

Console.WriteLine("с содержит 1");

if (c < 0) Console.WriteLine("Значение с отрицательно");

else Console.WriteLine("Значение с неотрицательно");

Console.ReadKey();//Ожидание нажатия клавиши

}

}

}

 

Пример case

Console.WriteLine("Впиши номер Лабы");

string y = Console.ReadLine(); считывание строки

switch (Convert.ToInt16(y)) //Получение номера варианта

{

case 1:

laba1(); //Запуск функции лаба по работе с массивом двумерным

break;

case 2: laba2();

break;

case 3: laba3();

break;

case 4: laba4(); //Лаба одномерный массив

break;

case 5: laba5();

break;

default: Console.WriteLine("Такой лабы нету повторите попытку");

break;

}

<== предыдущая лекция | следующая лекция ==>
Тема 2.1. Меркантилизм | Выбор баз распределения накладных расходов
Поделиться с друзьями:


Дата добавления: 2014-01-05; Просмотров: 728; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.017 сек.