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




Скачати 89.97 Kb.
НазваЛекция Операторы языка C# Состав операторов языка C#, их синтаксис и семантика унаследованы от языка С++. Любое выражение, завершающееся точкой с запятой является оператором
Дата конвертації19.09.2014
Розмір89.97 Kb.
ТипЛекция
mir.zavantag.com > Философия > Лекция

Лекция 5. Операторы языка C#


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

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


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

{

оператор_1

...

оператор_N

}

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

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


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

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

{;;;}; //пустой оператор

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

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


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

Оператор if


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

if(выражение_1) оператор_1;

else if(выражение_2) оператор_2

...

else if(выражение_K) оператор_K

else оператор_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 (ad||a= =0) ) b=++; else {b*=a;a=0;}

if (a

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

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.

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

/// Определяет период в зависимости от возраста - age

/// Использование ветвящегося оператора if

public void SetPeriod()

{

if ((age > 0)&& (age <7)) period=1;

else if ((age >= 7)&& (age <17)) period=2;

else if ((age >= 17)&& (age <22)) period=3;

else if ((age >= 22)&& (age <27)) period=4;

else if ((age >= 27)&& (age <37)) period=5;

else period =6;}

Этот пример демонстрирует применение ветвящегося оператора if. С содержательной точки зрения он интересен тем, что в поля класса пришлось ввести специальную переменную period, позволяющую в дальнейшем использовать разбор случаев в зависимости от периода жизни:

/// Определяет статус в зависимости от периода - period

/// Использование разбора случаев - оператора Switch

public void SetStatus()

{

switch (period)

{

case 1:

status = "child";

break;

case 2:

status = "schoolboy";

break;

case 3:

status = "student";

break;

case 4:

status = "junior researcher";

break;

case 5:

status = "senior researcher";

break;

case 6:

status = "professor";

break;

default :

status = "не определен";

break;

}

Console.WriteLine("Имя = {0}, Возраст = {1}, Статус = {2}", name, age, status);

}//SetStatus

Этот пример демонстрирует корректный стиль использования оператора switch. В следующем примере показана роль пустых последовательностей операторов case-ветвей для организации списка выражений одного варианта:

public void ExprResult(string operation, int arg1, int arg2, int result)

{

switch (operation)

{

case "+":

case "Plus":

case "Плюс":

result = arg1 + arg2;

break;

case "-":

case "Minus":

case "Минус":

result = arg1 - arg2;

break;

case "*":

case "Mult":

case "Умножить":

result = arg1 * arg2;

break;

case "/":

case "Divide":

case "Div":

case "разделить":

case "Делить":

result = arg1 / arg2;

break;

default:

result = 0;

Console.WriteLine("Операция не определена");

break;

}

Console.WriteLine ("{0} ({1}, {2}) = {3}", operation, arg1, arg2, result);

}//ExprResult

Аналогичный пример программы: //Калькулятор на четыре действия

using System;

namespace ConsoleAppllicationl

{ class Classl

{ static void Main()

{

string buf;

double a, b, res;

Console.WriteLine("Введите первый операнд:" );

buf = Console.ReadLine();

a = double.Parse( buf );

Console.WriteLine( "Введите знак операции");

char op = (char)Console.Read();

Console. ReadLine();

Console.WriteLine("Введите второй операнд:" );

buf = Console. ReadLine();

b = double.Parse( buf );

bool ok = true;

switch (op)

{

case '+' : res = a + b; break;

case '-.' : res = a - b; break;

case '*' : res = a * b; break;

case ' /' : res = a / b; break;

default : res = double.NaN;

ok = false; break;

}

if (ok) Console.WriteLine( "Результат:" + res );

else Console.WriteLine( "Недопустимая операция" ); } } }

Хотя наличие ветви default и не обязательно, рекомендуется всегда обрабатывать случай, когда значение выражения не совпадает ни с одной из констант. Это облегчает поиск ошибок при отладке программы.

Оператор switch предпочтительнее оператора if в тех случаях, когда в программе требуется разветвить вычисления на количество направлений большее двух и выражение, по значению которого производится переход на ту или иную ветвь, не является вещественным. Часто это справедливо даже для двух ветвей, поскольку повышает наглядность программы.
^

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


Операторов перехода, позволяющих прервать естественный порядок выполнения операторов блока, в языке C# несколько:

  • оператор безусловного перехода goto;

  • оператор выхода из цикла break;

  • оператор перехода к следующей итерации цикла continue;

  • оператор возврата из функции return;

  • оператор генерации исключения throw.

Эти операторы могут передать управление в пределах блока, в котором они ис­пользованы, и за его пределы. Передавать управление внутрь другого блока запрещается.
^
Оператор goto

Оператор goto имеет простой синтаксис и семантику:

goto [метка|case константное_выражение|default];

Все операторы языка C# могут иметь метку - уникальный идентификатор, предшествующий оператору и отделенный от него символом двоеточия. Передача управления помеченному оператору - это классическое использование оператора goto. Два других способа использования goto (передача управления в case или default-ветвь) используются в операторе switch, о чем шла речь выше.
^
Операторы break и continue

В структурном программировании признаются полезными "переходы вперед" (но не назад), позволяющие при выполнении некоторого условия выйти из цикла, из оператора выбора, из блока. Для этой цели можно использовать оператор goto, но лучше применять специально предназначенные для этих целей операторы break и continue.

Оператор break может стоять в теле цикла или завершать case-ветвь в операторе switch. Пример его использования в операторе switch уже демонстрировался. При выполнении оператора break в теле цикла завершается выполнение самого внутреннего цикла. В теле цикла, чаще всего, оператор break помещается в одну из ветвей оператора if, проверяющего условие преждевременного завершения цикла:

public void Jumps()

{

int i = 1, j=1;

for(i =1; i<100; i++)

{

for(j = 1; j<10;j++)

{

if (j>=3) break;

}

Console.WriteLine("Выход из цикла j при j = {0}", j);

if (i>=3) break;

}

Console.WriteLine("Выход из цикла i при i= {0}", i);

}//Jumps

^ Оператор continue используется только в теле цикла. В отличие от оператора break, завершающего внутренний цикл, continue осуществляет переход к следующей итерации этого цикла. Оператор continue пропускает все операторы, оставшиеся до конца тела цикла, и передает управление на начало следующей итерации.
Оператор return

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

return [выражение];

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


Схожі:

Лекция Операторы языка C# Состав операторов языка C#, их синтаксис и семантика унаследованы от языка С++. Любое выражение, завершающееся точкой с запятой является оператором iconКончик языка подходит к основанию верхних резцов, напряжен, вибрирует....
Короткая подъязычная уздечка, ограничивающая движение вверх кончика языка и передней части спинки языка
Лекция Операторы языка C# Состав операторов языка C#, их синтаксис и семантика унаследованы от языка С++. Любое выражение, завершающееся точкой с запятой является оператором iconКурс французского языка в четырех томах
Учебник французского языка Г. Може предназначен для изуче- ния французского языка как самостоятельно, так и с преподавате
Лекция Операторы языка C# Состав операторов языка C#, их синтаксис и семантика унаследованы от языка С++. Любое выражение, завершающееся точкой с запятой является оператором iconКурс французского языка в четырех томах
Учебник французского языка Г. Може предназначен для изуче- ния французского языка как самостоятельно, так и с преподавате
Лекция Операторы языка C# Состав операторов языка C#, их синтаксис и семантика унаследованы от языка С++. Любое выражение, завершающееся точкой с запятой является оператором iconБилеты по Истории языка
Понятие лингвистических и экстралингвистических факторов, влияющих на развитие языка. Примеры
Лекция Операторы языка C# Состав операторов языка C#, их синтаксис и семантика унаследованы от языка С++. Любое выражение, завершающееся точкой с запятой является оператором iconВопросы к экзамену по исторической грамматике Предмет исторической...
Основные особенности фонетической системы древнерусского языка к моменту начала письменности (к. 10-нач. 11 вв.). Фонетическая структура...
Лекция Операторы языка C# Состав операторов языка C#, их синтаксис и семантика унаследованы от языка С++. Любое выражение, завершающееся точкой с запятой является оператором iconОсновные гипотезы происхождения языка
Существует много теорий о происхождении языка, которые можно разделить на две основные группы: 1 биологические, 2 социальные
Лекция Операторы языка C# Состав операторов языка C#, их синтаксис и семантика унаследованы от языка С++. Любое выражение, завершающееся точкой с запятой является оператором iconРегламент 3 мин
Санкт-Петербургском Доме национальностей пройдет Семинар «День родного языка», приуроченный к Международному Дню родного языка, учрежденному...
Лекция Операторы языка C# Состав операторов языка C#, их синтаксис и семантика унаследованы от языка С++. Любое выражение, завершающееся точкой с запятой является оператором iconПрограмма проведения Дня сибирскотатарского языка Цель проекта
Цель проекта: сохранение, развитие и популяризация родного языка, национальных традиций и обычаев
Лекция Операторы языка C# Состав операторов языка C#, их синтаксис и семантика унаследованы от языка С++. Любое выражение, завершающееся точкой с запятой является оператором iconПрограмма проведения Дня сибирскотатарского языка Цель проекта
Цель проекта: сохранение, развитие и популяризация родного языка, национальных традиций и обычаев
Лекция Операторы языка C# Состав операторов языка C#, их синтаксис и семантика унаследованы от языка С++. Любое выражение, завершающееся точкой с запятой является оператором iconВиды речевой деятельности
Понятие видов речевой деятельности пришло в методику преподавания родного языка из методики преподавания иностранного языка. Оно...
Додайте кнопку на своєму сайті:
Школьные материалы


База даних захищена авторським правом © 2013
звернутися до адміністрації
mir.zavantag.com
Головна сторінка