Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
тюмгу / Лекции КБ ИБАС 1 курс 2 семестр / лекция7 Безопасность 2018.ppt
Скачиваний:
20
Добавлен:
08.12.2019
Размер:
199.68 Кб
Скачать

Операторы if и switch

Оператор if

Синтаксис полной формы имеет вид: if (condition) statement;

else statement;

condition – выражение типа bool, statement – оператор.

Часть else может быть опущена (сокращенная форма оператора).

!! в отличие от Паскаля перед else - точка с запятой.

1

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

if (condition)

{

statement1;

statement2;

statementN;

}

else

{

statement1;

statement2;

statementM;

}

Примечание. Допускается использование вложенных операторов if,

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

2

Оператор switch

Синтаксис оператора имеет вид: switch (expression)

{

case const1: statements break;

case const2: statements break;

case constN: statements break; default: statements break;

}

3

expression – выражение целочисленного типа (char, byte, short, int) или типа string.

Литералы const должны иметь тип, совместимый с типом выражения.

Значения литералов в пределах одного блока не могут совпадать.

При совпадении значения выражения с одним из литералов выполняются ассоциированные с ним операторы.

Если такого совпадения нет, то выполняются операторы ветви default (буквально, по умолчанию).

Эта ветвь необязательна.

4

Вложенные операторы break передают управление оператору, следующему после оператора switch.

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

Именно этому и препятствует оператор break.

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

Для этого просто достаточно пропустить и повторение кода, и оператор break.

Если в некоторой ветви case (default) есть

оператор(ы), то присутствие оператора break

обязательно.

Пример: распознавание гласных и согласных букв:

5

char ch;

Console.Write(“vvedite bukvu: “); ch = (char)Console.Read();

//преобразование для сравнения с символами switch (ch)

{

case ‘a’: case ‘e’: case ‘i’: case ‘o’: case ‘u’: case ‘y’:

Console.WriteLine("glasnaja bukva"); break;

default:

Console.WriteLine("soglasnaja bukva"); break;

}

6

Операторы цикла

Оператор for

Общее синтаксическое представление : for (init; cond; iter) statement;

или

for (init; cond; iter)

{

statement1;

statement2;

statementN;

}

7

init – обычно оператор присваивания, инициализирующий

управляющую переменную цикла - счетчик для управления циклом.

cond имеет тип bool.

Цикл повторяется, пока значение cond истинно (true).

Значение cond проверяется в начале цикла (цикл с предусловием), поэтому если изначально cond имеет значение ложь (false), цикл не выполнится ни разу.

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

Пример 1. Тип управляющей переменной не обязательно должен быть целым.

double k, sum, koren; sum=0;

for(k=1.0; k<10.0; k++)

{koren = Math.Sqrt (k);

sum+=koren;

}

Console.WriteLine(sum);

8

Пример 2. Шаг изменения управляющей переменной может быть произвольным. Так, следующий цикл выводит все числа, кратные 13 от 13 до 1300:

int k;

for(k=13; k<=1300; k+=13) Console.WriteLine(k);

Пример 3. В цикле можно использовать элементы init и iter, состоящие из нескольких операторов (выражений), которые будут выполняться (вычисляться) соответственно в начале цикла и на каждом его шаге.

Для этого достаточно разделить эти операторы (выражения) запятыми.

9

int i, k;

for(i= 0, k=10; i<=k; i++, k--) Console.WriteLine(i + k);

Пример 4. Любой из элементов init, cond, iter или даже все можно пропускать, однако точка с запятой должна присутствовать. При этом пропуск cond приводит к бесконечному циклу, то есть

for (;;) эквивалентно for (; true;)

для остановки можно использовать оператор break, передающий управление следующему после цикла оператору,

10

double limit = 100.5; double k, sum, koren; sum=0;

for(k=1.0;; k++)

{

koren = Math.Sqrt (k); sum+=koren;

if (sum > limit) break;

}

Console.WriteLine(k);

11