Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 6. Циклы_с ловушками.doc
Скачиваний:
6
Добавлен:
02.05.2019
Размер:
70.66 Кб
Скачать

Цикл перебора foreach

Цикл foreach используется для просмотра всех объектов из некоторой группы данных, например массива, списка или другого контейнера. Он будет рассмотрен при изучении тем: Контейнеры, итераторы, массивы.

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

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

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

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

Оператор for предпочтительнее в большинстве остальных случаев. Однозначно — для организации циклов со счетчиками, то есть с целочисленными переменными, которые изменяют свое значение при каждом проходе цикла регулярным образом (например, увеличиваются на 1).

Ловушки” на циклах

Примеры цикла for

  1. for (k=5;k<100;k=k+7)

  2. for (c=’z’; c>=’a’;c--)

  3. 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();

}

}

}

Ошибки:

  1. int a=0;

while(a<50);

{

//вывод а

a++;

}

  1. int a=1;

while(a!=50)

{

//вывод а

a+=2;

}

  1. int a=0;

while(a<100)

{

if (a%10) continue; //зацикливание при а=1

//вывод а

a++;

}