Герберт Шилдт - C# 4.0: полное руководство Страница 31

Тут можно читать бесплатно Герберт Шилдт - C# 4.0: полное руководство. Жанр: Компьютеры и Интернет / Программирование, год -. Так же Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте «WorldBooks (МирКниг)» или прочесть краткое содержание, предисловие (аннотацию), описание и ознакомиться с отзывами (комментариями) о произведении.
Герберт Шилдт - C# 4.0: полное руководство

Герберт Шилдт - C# 4.0: полное руководство краткое содержание

Прочтите описание перед тем, как прочитать онлайн книгу «Герберт Шилдт - C# 4.0: полное руководство» бесплатно полную версию:
В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

Герберт Шилдт - C# 4.0: полное руководство читать онлайн бесплатно

Герберт Шилдт - C# 4.0: полное руководство - читать книгу онлайн бесплатно, автор Герберт Шилдт

// Выполнение цикла for в отрицательном направлении.

using System;

class DecrFor {

  static void Main() {

    int x;

    for(x = 100; x > -100; x -= 5)

    Console.WriteLine(x);

  }

}

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

for(count=10; count < 5; count++)

x += count; // этот оператор не будет выполняться

Данный цикл вообще не будет выполняться, поскольку первоначальное значение переменной count, которая им управляет, сразу же оказывается больше 5. Это означает, что условное выражение count < 5 оказывается ложным с самого начала, т.е. еще до выполнения первого шага цикла.

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

// Выяснить, является ли число простым. Если оно

// непростое, вывести наибольший его множитель.

using System;

class FindPrimes {

  static void Main() {

    int num;

    int i;

    int factor;

    bool isprime;

    for(num = 2; num < 20; num++) {

      isprime = true;

      factor = 0;

      // Выяснить, делится ли значение переменной num нацело.

      for(i=2; i <= num/2; i++) {

        if((num % i) == 0) {

          // Значение переменной num делится нацело.

          // Следовательно, это непростое число,

          isprime = false;

          factor = i;

        }

      }

      if(isprime)

        Console.WriteLine(num + " — простое число.");

      else

        Console.WriteLine("Наибольший множитель числа " + num + " равен " + factor);

    }

  }

}

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

2    — простое число

3    — простое число

Наибольший множитель числа 4 равен 2

5 — простое число

Наибольший множитель числа 6 равен 3

7 — простое число

Наибольший множитель числа 8 равен 4

Наибольший множитель числа 9 равен 3

Наибольший множитель числа 10 равен 5

11 — простое число

Наибольший множитель числа 12 равен 6

13 — простое число

Наибольший множитель числа 14 равен 7

Наибольший множитель числа 15 равен 5

Наибольший множитель числа 16 равен 8

17 — простое число

Наибольший множитель числа 18 равен 9

19 — простое число

Некоторые разновидности оператора цикла for

Оператор цикла for относится к самым универсальным операторам языка С#, поскольку он допускает самые разные варианты своего применения. Некоторые разновидности оператора цикла for рассматриваются ниже.

***Применение нескольких переменных управления циклом

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

// Использовать запятые в операторе цикла for.

using System;

class Comma {

  static void Main() {

    int i, j;

    for(i=0, j = 10; i < j; i++, j--)

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

  }

}

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

i и j : 0 10

i и j : 1 9

i и j : 2 8

i и j : 3 7

i и j : 4 6

В данном примере запятыми разделяются два оператора инициализации и еще два итерационных выражения. Когда цикл начинается, инициализируются обе переменные, 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;

Перейти на страницу:
Вы автор?
Жалоба
Все книги на сайте размещаются его пользователями. Приносим свои глубочайшие извинения, если Ваша книга была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.
Комментарии / Отзывы
    Ничего не найдено.