Как сделать цикл в си шарп

Добавил пользователь Morpheus
Обновлено: 18.09.2024

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

Каждый цикл состоит из

  • блока проверки условия повторения цикла
  • тела цикла


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

В языке Си следующие виды циклов:

  • while — цикл с предусловием;
  • do…while — цикл с постусловием;
  • for — параметрический цикл (цикл с заданным числом повторений).

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

Общая форма записи

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

Пример на Си : Посчитать сумму чисел от 1 до введенного k

Цикл while

Результат выполнения

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

Пример бесконечного цикла

while — цикл с предусловием, поэтому вполне возможно, что тело цикла не будет выполнено ни разу если в момент первой проверки проверяемое условие окажется ложным.

Цикл while может не выполниться ни разу

Например, если в приведенном выше коде программы ввести k=-1, то получим результат

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

Общая форма записи

Цикл do. while — это цикл с постусловием, где истинность выражения, проверяющего Условие проверяется после выполнения Блока Операций , заключенного в фигурные скобки. Тело цикла выполняется до тех пор, пока выражение, проверяющее Условие , не станет ложным, то есть тело цикла с постусловием выполнится хотя бы один раз.

Использовать цикл do. while лучше в тех случаях, когда должна быть выполнена хотя бы одна итерация, либо когда инициализация объектов, участвующих в проверке условия, происходит внутри тела цикла.

Пример на Си . Проверка, что пользователь ввел число от 0 до 10

Цикл do. while

Результат выполнения:

Параметрический цикл for

Общая форма записи

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

  • Инициализация - присваивание параметру цикла начального значения;
  • Условие - проверка условия повторения цикла, чаще всего - сравнение величины параметра с некоторым граничным значением;
  • Модификация - изменение значения параметра для следующего прохождения тела цикла.


Эти три операции записываются в скобках и разделяются точкой с запятой ; ;. Как правило, параметром цикла является целочисленная переменная.
Инициализация параметра осуществляется только один раз — когда цикл for начинает выполняться.
Проверка Условия повторения цикла осуществляется перед каждым возможным выполнением тела цикла. Когда выражение, проверяющее Условие становится ложным (равным нулю), цикл завершается. Модификация параметра осуществляется в конце каждого выполнения тела цикла. Параметр может как увеличиваться, так и уменьшаться.

Пример на Си : Посчитать сумму чисел от 1 до введенного k

Цикл while

Результат выполнения

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

Параметры, находящиеся в выражениях в заголовке цикла можно изменить при выполнении операции в теле цикла, например

>
printf( "sum = %d\n" , sum); // вывод значения суммы
getchar(); getchar();
return 0;
>

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

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

В Си допускаются вложенные циклы, то есть когда один цикл находится внутри другого:

for (i = 0; i // внешний цикл - Цикл1
<
for (j = 0; j // вложенный цикл - Цикл2
; // блок операций Цикла2
>
// блок операций Цикла1;
>

Пример : Вывести числа от 0 до 99, по 10 в каждой строке

Вложенные циклы: вывод чисел от 0 до 99

Результат выполнения

Рекомендации по выбору цикла

При выборе цикла необходимо оценить необходимость проверки условия при входе в цикл или по завершении прохождения цикла.
Цикл с постусловием удобно применять в случаях, когда для проверки условия требуется вычислить значение выражения, которое затем будет размещено в теле цикла (см. выше пример ввода числа от 0 до 10).
Цикл c предусловием используется в случае если все переменные, участвующие в выражении, проверяющем условие, проинициализированы заранее, но точное число повторений цикла неизвестно или предполагается сложная модификация переменных, участвующих в формировании условия повторения цикла.
Если цикл ориентирован на работу с параметром, для которого заранее известно число повторений и шаг изменения, то более предпочтительным является параметрический цикл. Очень удобно использовать параметрический цикл при работе с массивами для перебора элементов.

Операторы прерывания и продолжения цикла break и continue

В теле любого цикла можно использовать операторы прерывания цикла - break и продолжения цикла - continue .

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

Пример на Си : Вывести числа от 0 до 99 ниже главной диагонали

Пример на Си : Вывести числа от 0 до 99 исключая числа, оканчивающиеся на 5 или 8

Оператор continue

Результат выполнения

При вложенных циклах действия операторов break и continue распространяется только на самую внутреннюю структуру, в которой они содержатся.

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

Общая форма записи

Выполнение оператора goto вызывает передачу управления в программе операции, помеченной Меткой . По сути Метка является идентификатором адреса операции, которой должно быть передано управление. Для отделения Метки от Операции используется двоеточие - : .
Метка может располагаться в программе как до оператора goto , так и после него. Имена Меток образуются по тем же правилам, что и имена переменных.

Пример на Си : Вывести все целые числа от 5 до 0.

Оператор goto


Результат выполнения

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

Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы

Бесконечный цикл

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

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

Создать бесконечный цикл крайне просто. Например для того, чтобы сделать бесконечным цикл for, необходимо просто оставить пустые поля в скобках при нём: for ( ; ; ).
Давайте посмотрим, как это выглядит в программе. Для начала мы объявим и инициализируем переменную i нулем. С неё будет вестись отсчёт чисел. Затем идёт цикл for без условий в скобках. Внутри цикла мы сделаем инкремент переменной i, иными словами – прибавим к переменной единицу. Ну и, наконец, так же в цикле будем выводить значение переменной i в консоль.

Оператор цикла for . Общая форма. Примеры решения задач

Содержание

  • 1. Назначение оператора цикла for . Общая форма
  • 2. Разновидности цикла for . Примеры
  • 3. Примеры цикла for , в котором количество итераций заведомо известно
  • 4. Примеры цикла for , в котором количество итераций заведомо неизвестно
  • 5. Понятие вложенного цикла for
  • 6. Примеры решения задач, в которых цикл for есть вложенным в другие циклы

Поиск на других ресурсах:

1. Назначение оператора цикла for . Общая форма

Цикл for предназначен для организации циклического процесса. С помощью цикла for можно организовывать циклический процесс любого типа, в котором:

  • количество итераций цикла заведомо известно;
  • количество итераций цикла неизвестно и определяется на основе выполнения некоторого условия.

Общая форма оператора цикла for

  • инициализация – выражение, инициализирующее переменную-счетчик. Эта переменная определяет количество итераций, которые должны выполниться в цикле;
  • условие – логическое выражение, которое определяет необходимость выполнения следующей итерации цикла. Если условие = true , то выполняется следующая итерация цикла. Если значение условие = false , то происходит прекращение выполнения цикла и переход к следующему оператору, который следует за оператором for ;
  • выражение – некоторое выражение, изменяющее значение переменной-счетчика. Необязательно выражение может изменять значение переменной-счетчика. Также переменная-счетчик может изменять свое значение в теле цикла.

Если оператор цикла for применяется для одного оператора, то в общей форме фигурные скобки можно опустить

здесь оператор – один оператор или одна инструкция.

2. Разновидности цикла for . Примеры

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

Пример 1. В примере опущена часть, которая инициализирует переменную-счетчик. Вычисляется сумма

s = 2 + 4 + 8 + … + 100

Фрагмент кода, решающий данную задачу следующий:

Пример 2. В примере опущена часть, которая проверяет условие выполнения следующей итерации. Пример вычисляет сумму элементов массива A .

Пример 3. В примере опущена часть выражения, которая изменяет переменную-счетчик. Дано вещественное число a и натуральное число n . Вычислить:

Фрагмент кода, решающий данную задачу

Пример 4. В примере цикл for не содержит инициализации и условия. Задано натуральное число n . Определить максимальную цифру этого числа.

Решение данной задачи с использованием цикла for (приложение типа Console Application )

Результат выполнения вышеприведенной программы:

Пример 5. В примере цикл for не содержит условия и выражения. Выход из цикла for осуществляется с помощью инструкции break .

Задан массив B чисел типа float . Найти позицию pos первого элемента массива, значение которого лежит в диапазоне от -5 до +5.

Фрагмент кода, решающий данную задачу

Результат выполнения программы

3. Примеры цикла for , в котором количество итераций заведомо известно

Пример 1. Найти сумму всех целых чисел от 100 до 200. Фрагмент программы, которая решает данную задачу с использованием цикла for следующий:

Пример 2. Дано натуральное число n . Разработать программу, которая находит следующую сумму


Фрагмент кода, решающий данную задачу

Пример 3. Рекурентные соотношения. Последовательность чисел a0 , a1 , a2 , … получается по закону:


Текст программы, которая решает данную задачу, следующий:

В результате выполнения вышеприведенного кода, будет выведен следующий результат

4. Примеры цикла for , в котором количество итераций заведомо неизвестно

Пример 1. Дано вещественное число a . Найти такое наименьшее n , что


Решение задачи для приложения типа Console Application

Выполнение данной программы даст следующий результат

Пример 2. Задано число a (1 a ≤1.5). Найти такое наименьшее n , что в последовательности чисел


последнее число есть меньше чем a .

Ниже приведено решение задачи для приложения типа Console Application

Как видно из вышеприведенного кода, в цикле for в части инициализации помещаются два выражения, разделенных запятой:

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

5. Понятие вложенного цикла for

Цикл for может быть вложенным в любой другой управляющий оператор, которым может быть:

  • оператор условного перехода if ;
  • оператор варианта switch ;
  • оператор цикла for ;
  • оператор цикла while ;
  • оператор цикла do…while .

Количество уровней вложения неограничено.

6. Примеры решения задач, в которых цикл for есть вложенным в другие циклы

Пример 1. В примере цикл for вложен в другой цикл for .

Напечатать числа в следующем виде:

Фрагмент кода, который решает данную задачу для приложения типа Console Application :

Пример 2. Цикл for вложен в цикл while .

Найти все целые числа из промежутка от 1 до 300, в которых ровно 5 делителей.

Цикл while позволяет указать 'пока условие истинно, выполните цикл через следующие команды.

Синтаксис инструкции таков:

Элементом условия является любой предикат. Если значение равно true, выполняется предоставленная команда. Команда может быть одним оператором или блоком кода, окруженным фигурными скобками <>.

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

Условие цикла while проверяется каждый раз, когда код цикла будет обработан. Если условие ложно для первой итерации, тело цикла никогда не будет выполняться. В следующем примере тело цикла игнорируется:

Цикл Do-While

Цикл do-while позволяет указать "выполните этот процесс, пока условие истинно". Синтаксис инструкции аналогичен циклу while, но меняет расположение условия и команды на противоположное:

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

В следующем примере показан цикл do-while, используемый для вычисления факториала.

Дополнительное управление циклом

Как и в случае с циклом for и foreach, доступны команды break и continue. Команда break немедленно останавливает выполнение цикла. Команда continue останавливает выполнение текущей итерации и перезапускает цикл, если условие все еще выполняется.

Читайте также: