МегаПредмет

ПОЗНАВАТЕЛЬНОЕ

Оси и плоскости тела человека Оси и плоскости тела человека - Тело человека состоит из определенных топографических частей и участков, в которых расположены органы, мышцы, сосуды, нервы и т.д.


Отёска стен и прирубка косяков Отёска стен и прирубка косяков - Когда на доме не достаёт окон и дверей, красивое высокое крыльцо ещё только в воображении, приходится подниматься с улицы в дом по трапу.


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

Замечание. Цикл перебора foreach будет рассмотрен позже.

Вложенные циклы

Циклы могут быть простые или вложенные (кратные, циклы в цикле). Вложенными могут быть циклы любых типов: while, do while, for. Каждый внутренний цикл должен быть полностью вложен во все внешние циклы. «Пересечения» циклов не допускаются.

Рассмотрим пример использования вложенных циклов, который позволит вывести на экран числа следующим образом:

 

static void Main()

{

for (int i = 1; i <= 4; ++i, Console.WriteLine()) //1

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

Console.Write(« « + 2);

}

 

Замечание. В строке 1 в блоке модификации содержится два оператора ++i и Console.WriteLine(). В данном случае после каждого увеличения параметра i на 1 курсор будет переводиться на новую строку.

5. Операторы безусловного перехода

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

5.1.Оператор безусловного перехода goto

Оператор безусловного перехода goto имеет формат:

goto <метка>;

В теле той же функции должна присутствовать ровно одна конструкция вида:

<метка>: <оператор>;

Оператор goto передает управление на помеченный меткой оператор. Рассмотрим пример использования оператора goto:

static void Main()

{

float x;

metka: Console.WriteLine(«x=»); //оператор, помеченный меткой

x = float.Parse(Console.ReadLine());

if (x!=0) Console.WriteLine(«y({0})={1}», x, 1 / x );

else

{

Console.WriteLine(«функция не определена»);

goto metka;// передача управление метке

}

}

 

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

5.2.Оператор выхода break

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

Мы уже применяли оператор break для выхода из оператора switch, аналогичным образом он может применяться для выхода из других операторов.

5.3.Оператор перехода к следующей итерации цикла continue

Оператор перехода к следующей итерации цикла continue пропускает все операторы, оставшиеся до конца тела цикла, и передает управление на начало следующей итерации (повторение тела цикла). Рассмотрим оператор continue на примере.

static void Main()

{

Console.WriteLine(«n=»);

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

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

{

if (i % 2 == 0) continue;

Console.Write(« « + i);

}

}

 

Замечание. Операторы return и throw будут рассмотрены позже.

 

Задания к части №3

Задание 3.1. Измените программу так, чтобы вычислялось наибольшее значение из х и у.

static void Main()

{

Console.Write(“x= “);

float x = float.Parse(Console.ReadLine());

Console.Write(“y=”);

float y = float.Parse(Console.ReadLine());

if (x < y ) Console.WriteLine(“min= “+x);

else Console.WriteLine(“min= “+y);

}

Задание 3.2. Измените программу так, чтобы подсчитывалось количество очков для мишени вида

static void Main()

{

int Ball=0;

Console.Write(“x= “);

float x = float.Parse(Console.ReadLine());

Console.Write(“y= “);

float y = float.Parse(Console.ReadLine());

if (x * x + y * y <=1) Ball = 10; //окружность с радиусом 1

else if (x * x + y * y <= 4) Ball = 5; //окружность с радиусом 2

Console.WriteLine(“Ball= “+ Ball);

}

Задания 3.3.

1. Замените в строке 1 оператор break, на оператор goto case '-' и посмотрите, что произойдет, если в качестве операции ввести +.

2. В условном операторе if уберите ветку else и посмотрите, что произойдет.

static void Main()

{

Console.Write(“OPER= “);

char oper=char.Parse(Console.ReadLine());

bool ok=true;

Console.Write(“A= “);

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

Console.Write(“B= “);

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

float res=0;

switch (oper)

{

case ‘+’: res = a + b; break; //1

case ‘-‘: res = a - b; break;

case ‘*’: res = a * b; break;

case ‘:’: if (b != 0)

{

res = (float)a / b; break;

}

else goto default;

default: ok = false; break;

}

if (ok) Console.WriteLine(“{0} {1} {2} = {3}”, a, oper, b, res);

else Console.WriteLine(“error”);

}

Задание 3.4. Измените программу так, чтобы:

1. числа выводились в обратном порядке;

2. выводились только нечетные числа.

static void Main()

{

Console.Write(“N= “);

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

int i = 1;

while (i <= n) //пока i меньше или равно n

Console.Write(« «+ i++ ); //выводим i на экран, затем увеличиваем его на 1

}

Задание 3.5. Измените программу так, чтобы:

1. числа выводились в обратном порядке;

2. выводились только четные числа.

 

static void Main()

{

Console.Write(“N= “);

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

int i = 1;

do

Console.Write(« « + i++); //выводим i на экран, затем увеличиваем его на 1

while (i <= n); //пока i меньше или равно n

}

Задание 3.6. Измените программу так, чтобы:

1. числа выводились в обратном порядке;

2. выводились квадраты чисел.

static void Main()

{

Console.Write(“N= “);

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

for (int i=1; i<=n;) //блок модификации пустой

Console.Write(“ “ + i++);

}

Задание 3.7. Измените программу так, чтобы таблица содержала n и m столбцов (значения n и m вводятся с клавиатуры).

static void Main()

{

for (int i = 1; i <= 4; ++i, Console.WriteLine()) //1

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

Console.Write(“ “ + 2);

}

 

Замечание. В строке 1 в блоке модификации содержится два оператора ++i и Console.WriteLine(). В данном случае после каждого увеличения параметра i на 1 курсор будет переводиться на новую строку.






©2015 www.megapredmet.ru Все права принадлежат авторам размещенных материалов.