Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


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




 

i

 

и

 

j:

 

 

 

i

 

и

 

j:

 

 

 

i

 

и

 

j:

 

 

 

i

 

и

 

j:

 

 

 

i

 

и

 

j:

 

 

 

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

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

// Использовать запятые в операторе цикла for для // выявления наименьшего и наибольшего множителя числа.

using System; >

class Comma {

static void Main() { int i, j;

Int smallest, largest; int num;

num = 100;

smallest = largest = 1;

for(i=2, j=num/2; (i <= num/2) & (j >= 2); i++, j—) {

if((smallest == 1) & ((num % i) == 0)) smallest = i;

if ((largest == 1) & ((num % j) == 0)) largest = j;

}

Console.WriteLine("Наибольший множитель: " + largest);

Console.WriteLine("Наименьший множитель: " + smallest);

}

}

Ниже приведен результат выполнения этой программы.

Наибольший множитель: 50 Наименьший множитель: 2

Благодаря применению двух переменных управления циклом удается выявить наименьший и наибольший множители числа в одном цикле for. В частности, управляющая переменная i служит для выявления наименьшего множителя. Первоначально ее значение устанавливается равным 2 и затем инкрементируется до тех пор, пока не превысит половину значения переменной num. А управляющая переменная j служит для выявления наибольшего множителя. Ее значение первоначально устанавливается равным половине значения переменной num и затем декрементируется до тех пор, пока не станет меньше 2. Цикл продолжает выполняться до тех пор, пока обе переменные, i и j, не достигнут своих конечных значений. По завершении цикла оба множителя оказываются выявленными.

Условное выражение

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

// Условием выполнения цикла может служить любое выражение типа bool.

Using System;

class forDemo {

static void Main() { int i, j;

bool done = false;

for(i=0, j=100;!done; i++, j—) {

if(i*i >= j) done = true;

Console.WriteLine("i, j: " + i + " " + j);

}

}

}

Ниже приведен результат выполнения этой программы.

 

I, j

 

0 100

 

i/ j

 

1 99

 

I, j

 

2 98

 

I, j

 

3 97

 

If j

 

4 96

 

A j

 

5 95

 

A j

 

6 94

 

A j

 

7 93

 

j

 

8 92

 

A j

 

9 91

 

Ir j

 

10 90

 

В данном примере цикл for повторяется до тех пор, пока значение переменной done типа не окажется истинным (true). Истинное значение переменной done устанавливается в цикле, когда квадрат значения переменной i оказывается больше или равным значению переменной j.

Отсутствующие части цикла

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

// Отдельные части цикла for могут оставаться пустыми.

Using System;

class Empty {

static void Main() { int i;

for (i = 0; i < 10;) {

Console.WriteLine("Проход №" + i);

i++; // инкрементировать переменную управления циклом

}

}

}

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





Поделиться с друзьями:


Дата добавления: 2016-12-03; Мы поможем в написании ваших работ!; просмотров: 325 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Наука — это организованные знания, мудрость — это организованная жизнь. © Иммануил Кант
==> читать все изречения...

4405 - | 4154 -


© 2015-2026 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.