Перечисление

Перечислимым называют тип, в котором описан набор пар, состоящих из символьного имени (набора именованных констант, который называется списком перечислителя) и числового значения. Перечислимые типы относятся к типам значениям. Ключевое слово enum используется для объявления перечисления. По умолчанию первому перечислителю задано значение, равное нулю, а значение каждого последующего оператора увеличивается на 1.

Пример

using System;

class Program

{

enum Days { Sat, Sun, Mon, Tue, Wed, Thu, Fri };

static void Main()

{

Console.WriteLine(Days.Tue);

Console.WriteLine((int)Days.Tue);

}

}

В результате программа распечатает на экране

Tue

 

Пример использования перечисления см. также в п. 5 (Пример 5.5).

 

1.7. Основные операторы

 

К основным операторам отнесем операторы, которые позволяют описать типовые структуры алгоритмов:

условный оператор if реализует разветвление, т.е. переход на тот или другой блок (последовательность операторов) кода,

оператор цикла for реализует циклы с известным количеством повторений,

операторы цикла while и do-while реализуют циклы по условию (while – с предусловием, do – с постусловием),

оператор цикла foreach используется для организации последовательной обработки элементов массива, рассматривается в п. 3,

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

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

Перечисленные операторы являются управляющими операторами, т.к. они управляют последовательностью исполнения строк программы.

К группе основных операторов отнесем также оператор присваивания, при помощи которого происходят изменения значений переменных программы (этот оператор рассмотрен выше).

Рассмотрим более подробно каждый из перечисленных операторов.

1.7.1. Условный оператор if позволяет выбрать одну из двух ветвей вычислительного процесса

Общий вид оператора

 

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

{

Операторы1;

}

[Else

{

Операторы2;

}]

Выражение в скобках после if является логическим выражением, значением которого является одно из двух логических значений true (истина) или false (ложь). В первом случае выполняются Операторы1, во втором – Операторы2. Вторая ветвь (Операторы2) может отсутствовать. Об этом говорит наличие квадратных скобок в определении оператора. (То, что заключено в квадратные скобки, не является обязательным.) После выполнения какой-либо одной из ветвей условный оператор считается выполненным. Наличие фигурных скобок не является обязательным, если какая-либо ветвь содержит один оператор, в котором нет объявления переменных. Однако, рекомендуется фигурные скобки использовать всегда, что делает структуру программы более наглядной.

Например,

int i = 1, x;

if (i <= 10)

{

x = 5;

}

else

x = 0;

Console.WriteLine(x);

Если требуется выполнить более одного оператора после if или после else, то их все обязательно помещают внутри скобок {}. Эти операторы образуют блок. Например,

int i = 15, x;

if (i <= 10)

{

x = 5;

Console.WriteLine(x);

}

else

{

x = 2;

Console.WriteLine(x);

}

Каждый из двух блоков условного оператора (наличие обоих блоков необязательно) может содержать любые операторы, в том числе условные операторы. Если условный оператор входит в состав блока Операторы1, выполняемого после if, то он записывается и выполняется по общим правилам. Если проверка условия осуществляется после else, то используется оператор else if (условие), использование которого демонстрирует следующая схема:

 

if (условие1)

{

Операторы1;

}

else if (условие2)

{

Операторы2;

}

[else

{

Операторы3;

}]

Если истинно условие1, то выполняются Операторы1 и условный оператор заканчивает работу. Если условие1 ложно, то проверяется условие2, и, если оно истинно, то выполняются Операторы2, в противном случае выполняются Операторы3, если присутствует последний else,или конструкция не выполняет никаких действий. Последний else всегда относится к последнему if, для которого еще не было соответствующего else. Например,

int a = -4, x = 0;

if (a > 5)

x = 1;

else if (a > 0 )

x = 2;

else

x = 3;

Console.WriteLine(x);

В результате при a = 3 будет x = 2; при a = - 4 будет x = 3.

Замечания. 1. В рассмотренном примере после каждого условия следует один оператор и фигурные скобки необязательны.

2. В языке C# существует упрощенный вариант записи условного оператора, называемый оператором проверки, который можно использовать в выражении. Общий вид оператора проверки

(условие) ? значение1: значение2;

Например,

int i = 4>m? 6 : 8;

Здесь, если, например, m = 9, то условие не выполняется (имеет значение false) и переменной i будет присвоено значение 8. При использовании оператора проверки следует помнить о правилах приоритета, т.к. в этом операторе могут использоваться арифметические, логические операторы и операторы отношений.

1.7.2. Оператор цикла for предназначен для выполнения одного оператора или группы (блока) операторов заданное количество раз.

Общий вид оператора for

 

for ([ инициализация]; [условие];[приращение])

{

Операторы;

}

Если в цикле выполняется один оператор, то фигурные скобки необязательны. Однако, их рекомендуется использовать и в этом случае для повышения наглядности. Например,

 

using System;

class Program

{

static void Main()

{

for (int i = 1; i<=5; i++)

{

Console.WriteLine(i);

}

Console.ReadKey();

}

}

В последовательные строки будут выведены натуральные числа от 1 до 5.

Оператор for выполняется следующим образом: переменной цикла i присваивается начальное значение 1. Проверяется условие. Здесь при i = 1 оно выполняется (имеет значение true). Далее выполняется оператор в цикле и на консоль выводится значение 1. Затем i увеличивается на 1 и снова проверяется условие, И так до тех пока не станет i > 5 (условие получает значение false) и происходит выход из цикла. Заметим, что первая проверка условия производится перед первым выполнением оператора (операторов), расположенных после for и таким образом возможна ситуация, когда этот оператор (операторы) не будет выполнен ни разу. Цикл for относится к циклам с предусловием.

Все параметры оператора for являются необязательными (при определении оператора каждый параметр заключен в квадратные скобки) и, следовательно, могут отсутствовать либо по отдельности, либо все вместе. При этом организация цикла (в той или иной мере) возлагается на программиста. Например,

for (int i = 1; ; i++)

{

if (i <= 5)

break;

Console.WriteLine(i);

}

Console.ReadKey();

Здесь проверка условия происходит внутри цикла и прерывание выполнения цикла происходит при помощи оператора прерывания break. Оператор continue возобновляет выполнение цикла с первого оператора, игнорируя следующие за ним операторы. Например,

for (int i = 1; ; i++)

{

Console.WriteLine(i);

if (i<=5)

continue;

else

break;

}

Console.ReadKey();

Здесь пока i не достигло 5 цикл возобновляет свою работу с самого начала. При i>5 выполнение цикла прервется оператором break.

Примеры использования цикла for в программах см. также в п. 2.

1.7.3. Оператор while реализует цикл по условию с проверкой условия до первого прохождения цикла (цикл с предусловием). В отличии от цикла for количество проходов цикла while неизвестно до начала выполнения цикла. Общий вид цикла

While (условие)

{

Операторы

}

Операторы выполняются пока условие имеет значение true. Например:

 

using System;

class Program

{

static void Main()

{

int i = 1;

while (i<6)

{

Console.WriteLine(i);

i++;

}

Console.ReadKey();

}

}

 

В последовательные строки выводятся числа от1 до 5.

Внутри цикла, как и для цикла for, могут быть операторы break, прерывающий цикл, и continue, передающий управление на следующую итерацию. Их использование аналогично.

1.7.4. Операторы цикла do-whileреализуют цикл по условию с проверкой условия после первого прохождения цикла (цикл с постусловием). Общий вид цикла

do

{

Операторы

}

While (условие);

Операторы выполняются до тех пор пока условие имеет значение true. Например:

using System;

class Program

{

static void Main()

{

int i = 1;

do

{

Console.WriteLine(i);

i++;

}

while (i < 6);

Console.ReadKey();

}

}

Результат выполнения программы будет тот же, что и в предыдущем примере.

Цикл можно прервать оператором break. Для перехода непосредственно к оператору вычисления выражения While (проверке условия) используется оператор continue.

Примеры программ с использованием циклов по условию см. в п.2.

 

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

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

{

case n1:

Операторы1

break;

case n2:

Операторы2

break;

. . .

case nn:

ОператорыN

break;

[default:

Операторы

break;]

}

Управление передается оператору case, номер которого совпадает со значением оператора switch. После выполнения операторов соответствующего case, выполняется оператор break и управление передается за пределы оператора switch. Если ни одно значение из n1, n2,..., nn не совпадает со значением выражения switch, то управление передается на операторы, следующие за default. Если default отсутствует, управление передается за пределы оператора switch. (См., например, программу Примера 2.22.)

1.7.6. Оператор безусловного перехода gotoпередает управление помеченному оператору. Общий вид оператора

gotoметка;

Метка – идентификатор, после которого располагается двоеточие. Размещается в отдельной строке перед оператором, которому будет передано управление при выполнении оператора goto.Например:

goto label1;

. . .

label1:

Console.WriteLine(“конец”)

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

Может использоваться также для явного перехода к какой-либо строке case в операторе switch вместо break.

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

{

case n1:

Операторы1

break;

case n2:

Операторы2

goto case n1;

. . .

case nn:

ОператорыN

break;

[default:

Операторы

break;]

}

 

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

1.7.7. Составной операторили блок– это несколько операторов, заключенных в фигурные скобки. Составные операторы (блоки) уже использовались в приведенных выше примерах программ на циклы. Внутри составного оператора можно объявлять переменные (локальные переменные блока составного оператора). Они будут доступны только внутри блока составного оператора.

 

1.8. Ввод-вывод

1.8.1. Ввод данных осуществляется следующим образом: из входного потока при помощи метода ReadLine (класса Сonsole) считывается строка символов. Ее значение присваивается какой-либо переменной типа string . Далее это символьное значение при помощи метода Parse, который есть у каждого встроенного типа значения, преобразуется в числовую форму представления соответствующего типа (для типа double: double.Parse или для тапа int: int.Parse). В случае ошибочного указания типа будет выдано сообщение об ошибке.

Например, для типа int:

int a;

string s = Console.ReadLine();

a = int.Parse(s);

Console.WriteLine(a);

В окне Локальные отображаются локальные переменные a и s (имя, значение, тип), после выполнения приведенного фрагмента кода.

При вводе строки символов в переменную символьного типа (типа string) никакого преобразования не требуется. Например:

string s = Console.ReadLine();

int i = int.Parse(s);

Console.WriteLine ("i= {0:d}",i);

string g = Console.ReadLine();

Console.WriteLine ("g= {0}",g);

Console.ReadKey();

Здесь предполагается вывод с использованием формата (см. п. 1.8.2).

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

int i = int.Parse(Console.ReadLine());

Если на клавиатуре набрать, например, 7 (7 появляется на экране) и нажать клавишу [Enter], то переменная i получит значение 7. Это значение далее выводится на консоль (экран). При этом производится перевод строки. Далее в соответствии с приведенным кодом следует набрать строку символов (строка появится на экране) и нажать клавишу [Enter]. Введенная последовательность символов будет присвоена переменной g и следующим оператором выведена на консоль.

Замечание. При вводе чисел с дробной частью для отделения дробной части используется запятая (зависит от настроек в окне Панель управления окна Региональные стандарты).

Можно в одной строке разместить значения нескольких переменных, разделив их, например, пробелами. В этом случае требуется так называемый разбор строки (метод Split, см. п. 6) с целью извлечения цепочек символов между пробелами. Такой способ ввода используется в п.3 при работе с массивами.

1.8.2. Вывод данныхосуществляется с использованием метода WriteLine (или Write)(класса Сonsole). После выполнения WriteLineпроизводится перевод строки и последующий вывод происходит в новую строку. После выполнения Write перевода строки не происходит. Вывод будет продолжен в текущую строку.

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

Вывод может быть организован с использованиемформата. В этом случае оператор вывода имеет следующий вид

WriteLine (["строка формата",] список вывода);

Квадратные скобки [] означают необязательный параметр, т.е. строка формата может отсутствовать, но только в том случае, если в списке вывода один элемент. При выводе нескольких элементов использование формата обязательно.

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

В строке формата для каждого выводимого значения в фигурных скобках указывается:

  • номер выводимого элемента n (нумерация начинается с 0); порядок вывода может не совпадать с порядком следования элементов в списке вывода;
  • количество позиций m, в которые должно быть выведено значение элемента списка вывода (необязательный параметр);
  • код форматирования k (необязательный параметр).







Дата добавления: 2015-02-07; просмотров: 754;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.05 сек.