Цикл перебора foreach
Цикл foreach используется для просмотра всех объектов из некоторой группы данных, например массива, списка или другого контейнера. Он будет рассмотрен при изучении тем: Контейнеры, итераторы, массивы.
Рекомендации по выбору оператора цикла
Операторы цикла взаимозаменяемы, но можно привести некоторые рекомендации по выбору наилучшего в каждом конкретном случае.
Оператор do while обычно используют, когда цикл требуется обязательно выполнить хотя бы раз, например, если в цикле производится ввод данных.
Оператором while удобнее пользоваться в тех случаях, когда либо число итераций заранее неизвестно, либо очевидных параметров цикла нет, либо модификацию параметров удобнее записывать не в конце тела цикла.
Оператор for предпочтительнее в большинстве остальных случаев. Однозначно — для организации циклов со счетчиками, то есть с целочисленными переменными, которые изменяют свое значение при каждом проходе цикла регулярным образом (например, увеличиваются на 1).
“Ловушки” на циклах
Примеры цикла for
for (k=5;k<100;k=k+7)
for (c=’z’; c>=’a’;c--)
double x,y,eps=0.00001; for (y=1.,x=0.1,xn=1.; xn>eps;xn*=x,y+=xn)
Пример: Вычислить сумму нечетных и количество четных чисел. Завершить ввод после ввода 10 чисел или ввода трех четных чисел.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int i, j, k, n = 0;
for (i = 0, j = 0; (i < 10 && j <3); i++)
{
k = Convert.ToInt32(Console.ReadLine());
if ((k % 2)==0) { j++; continue; }
n += k;
}
Console.WriteLine("Сумма нечетных= {0} Количество четных= {1}", n, j);
Console.ReadKey(); } }}
Пример вычисления суммы первых 6 членов ряда:
S=1+1/2+1/4+1/8+…
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int k;
double res, x;
for (res = 0, x = 1, k = 0; k < 6;res+=1/x,k++,x=x*2)
{
Console.WriteLine("res= {0} при k= {1} \n", res, k);
}
Console.ReadKey(); } }}
Пример вывода на экран чисел кратных 10 но меньше 100:
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
for (int a=0;a<100;a++)
{
if (a % 10!=0) continue;
Console.WriteLine("a= {0}", a);
}
Console.ReadKey();
}
}
}
Ошибки:
int a=0;
while(a<50);
{
//вывод а
a++;
}
int a=1;
while(a!=50)
{
//вывод а
a+=2;
}
int a=0;
while(a<100)
{
if (a%10) continue; //зацикливание при а=1
//вывод а
a++;
}