Управление циклом. Команды break и countinue




Циклы в Си-шарп

 

Циклы служат для многократного повторения некоторого фрагмента кода.
В Си-шарп есть четыре оператора циклов: for, while, do-while, foreach.

Цикл с параметром — Цикл for C#

Этот цикл используется тогда, когда наперёд известно, сколько повторений цикла (количество итераций) нужно сделать. Он имеет следующую структуру:

 

for (инициализация счетчика; условие продолжения; порядок выполнения)
{
//блок кода, который будет повторяться
}

1. Инициализация — установка начальных параметров счётчика;

2. Условие — условие выхода из цикла, как только оно вернёт ложь — произойдёт выход из цикла;

3. Порядок выполнения — команда увеличения счётчика.

 

Пример программы, которая выводит на экран числа 0, 1, 2, 3, 4:

static void Main(string[] args)
{
for (int i = 0; i < 5; i++) // цикл выполнится 5 раз
{
Console.WriteLine(i);
}
}

Сначала происходит создание и инициализация счетчика, i=0. Дальше идет проверка условия (i < 5), если результат будет «истина», то дальше выполняется блок кода в теле цикла. В конце итерации происходит изменение значения счетчика (в данном примере увеличение на единицу). После этого вновь происходит проверка условия и так далее. Когда условие будет «ложь», цикл работу завершит.


Пример программы, которая находит и выводит на экран сумму элементов массива:

static void Main(string[] args)
{
int[] numbers = { 4, 7, 1, 23, 43 };
int s = 0;
for (int i = 0; i < numbers.Length; i++)
{
s += numbers[i];
}
Console.WriteLine(s);
Console.ReadKey();
}

Пример цикла for, когда счетчик уменьшается после каждой итерации:
for (int i = 5; i > 0; i--) //выполнится 5 раз
{
Console.WriteLine(i);
}

Счётчик можно изменять не только на единицу. Пример программы, которая выводит чётные числа (по число 50):

for (int i = 0; i <= 50; i+=2) //выполнится 26 раз
{
Console.WriteLine(i);
}


Цикл с предусловием — Цикл while C#

Слово while переводится, как «пока», что хорошо его характеризует. Он продолжает выполнятся до тех пор, пока «истинно» некоторое условие. В данном случае действия цикла повторяются до тех пор, пока выполняется указанное условие. Этот цикл функционирует по принципу: «Сперва думаем, после делаем». Он имеет такую структуру:

 

while (условие продолжения)
{
//блок кода, который будет повторяться
}

Сначала проверяется условие, а дальше выполняется блок кода.
Пример той же программы, которая выводит на экран числа 0, 1, 2, 3, 4:

 

int i = 0;
while (i < 5)
{
Console.WriteLine(i);
i++;
}

Цикл может выполнятся «вечно», если задать всегда истинное условие:
while (true)
{
Console.WriteLine("Вечный цикл");
}


Цикл с постусловием — Цикл do while


Этот тот же цикл while, только здесь сначала выполняется блок кода, а уже потом идет проверка условия. Это гарантирует хотя бы один проход цикла.
do
{
//блок кода, который будет повторяться
}
while (условие продолжения);


Пример программы, которая не завершит работу, пока с клавиатуры не введут число 5:

 

static void Main(string[] args)
{
int number;
do
{
Console.WriteLine("Введите число 5");
number = Convert.ToInt32(Console.ReadLine());
}
while (number!= 5);
}


Перебор коллекций — Цикл foreach

Оператор цикла foreach в Си-шарп служит для перебора элементов коллекции. К коллекциям относятся массивы, списки List и пользовательские классы коллекций. В данном операторе не нужно создавать переменную-счетчик для доступа к элементам коллекции, в отличии от других циклов. Оператор foreach имеет следующую структуру:


foreach ([тип] [переменная] in [коллекция])
{
//тело цикла
}

Пример программы, в которой находится сумма элементов массива с использованием цикла foreach:

 

static void Main(string[] args)
{
int[] numbers = { 4, 7, 13, 20, 33, 23, 54 };
int s = 0;

foreach (int el in numbers)
{
s += el;
}
Console.WriteLine(s);
Console.ReadKey();
}


На каждой итерации в переменную el последовательно записывается элемент коллекции. На первой итерации значение переменной el равно “4”, на второй итерации - “7” и т.д.

Как и в других циклах, в foreach можно использовать операторы break и continue.

Данный оператор стоит использовать для получения (чтения) данных из коллекции. Не стоит использовать его для добавления или удаления элементов из коллекции, иначе вы получите исключение (ошибку) Collection was modified; enumeration operation may not execute.

Управление циклом. Команды break и countinue

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

Пример программы, которая проверяет, есть ли в массиве число кратное 13-ти. Найдя такое число, нет смысла дальше проверять остальные элементы массива, и здесь мы используем оператор break:

static void Main(string[] args)
{
int[] numbers = { 4, 7, 13, 20, 33, 23, 54 };
bool b = false;
for (int i = 0; i < numbers.Length; i++)
{
if (numbers[i] % 13 == 0)
{
b = true;
break;
}
}
Console.WriteLine(b? "В массиве есть число кратное 13": "В массиве нет числа кратного 13");
Console.ReadKey();
}


Оператор continue

Данный оператор позволяет перейти к следующей итерации, не завершив до конца текущую.

Пример программы, которая находит сумму нечетных элементов массива:

 

static void Main(string[] args)
{
int[] numbers = { 4, 7, 13, 20, 33, 23, 54 };
int s = 0;
for (int i = 0; i < numbers.Length; i++)
{
if (numbers[i] % 2 == 0)
continue; //переход к следующей итерации
s += numbers[i];
}
Console.WriteLine(s);
Console.ReadKey();
}


Домашнее задание

когда присылаете мне В Контакте выполненное задание. пишите тему. Например, Циклы. задача №1. Циклы. Задача №2 и т.д.

Задача 1. За каждый месяц банк начисляет к сумме вклада 7% от суммы. Напишите консольную программу, в которую пользователь вводит сумму вклада и количество месяцев. А банк вычисляет конечную сумму вклада с учетом начисления процентов за каждый месяц.

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

Convert.ToDecimal(Console.ReadLine()) (сумма вклада будет представлять тип decimal).


Задача 2. Перепишите предыдущую программу, только вместо цикла for используйте цикл while.

Задача 3. Напишите программу, которая выводит на консоль таблицу умножения.

Задача 4. Напишите программу, в которую пользователь вводит два числа и выводит результат их умножения. При этом программа должны запрашивать у пользователя ввод чисел, пока оба вводимых числа не окажутся в диапазоне от 0 до 10. Если введённые числа окажутся больше 10 или меньше 0, то программа должна вывести пользователю о том, что введённые числа недопустимы, и повторно запросить у пользователя ввод двух чисел. Если введённые числа принадлежат диапазону от 0 до 10, то программа выводит результат умножения.

Для организации ввода чисел используйте бесконечный цикл while и оператор break.

Задача 5. Выдать на экран сообщение «Выберите город для жилья: Москва, Санкт-Петербург, Париж. Введите первую букву названия города».
Программе нужно найти город, начинающийся с заданной буквы. Для перебора массива используйте цикл foreach.

После нахождения города предусмотреть вывод сообщений в зависимости от найденного города:

- Москва - вывести сообщение "А денег хватит?"

- Санкт-Петербург - вывести сообщение "А денег точно не хватит!"

- Париж - вывести сообщение " Мечтать не вредно... "

- перед завершением программы вывести сообщение "А нам и дома хорошо."

Задача 6. Вычислить факториал при помощи while.

Задача 7. Составить программу поиска четырехзначных чисел, которые при делении на 47 дают в остатке 43, а при делении на 43 дают в остатке 37.

 

Тип decimal нельзя смешивать с типами float и double в выражении. В этом случае, если требуется выполнить арифметические операции или операции сравнения или равенства, необходимо явно преобразовать операнды из типа или в тип decimal, как показано в следующем примере:

double a = 1.0;

decimal b = 2.1m;

Console.WriteLine(a + (double)b);

Console.WriteLine((decimal)a + b);

 



Поделиться:




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

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-06-05 Нарушение авторских прав и Нарушение персональных данных


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