Главная » Просмотр файлов » 1629295407-c61bfe4caba98380ea3e7cdae6295416

1629295407-c61bfe4caba98380ea3e7cdae6295416 (846200), страница 22

Файл №846200 1629295407-c61bfe4caba98380ea3e7cdae6295416 (Шилдт Герберт - Полный справочник по C#) 22 страница1629295407-c61bfe4caba98380ea3e7cdae6295416 (846200) страница 222021-08-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 22)

Это значит, что если первая же проверка условия даст значение ЛОЖЬ, код телацикла не выполнится ни разу. Вот пример:for(count=10; count < 5; count++)x += count; // Эта инструкция не будет выполнена вовсе.Этот цикл никогда не выполнится, поскольку уже при входе в него значение егоуправляющей переменной count больше пяти.

Это делает условное выражение (count< 5) ложным с самого начала. Поэтому даже одна итерация этого цикла не будетвыполнена.Цикл for особенно полезен в тех случаях, когда известно количество егоповторений. Например, следующая программа использует два цикла for для отысканияпростых чисел в диапазоне от 2 до 20. Если число не простое, программа отобразит егосамый большой множитель./*Программа определения простых чисел. Если число не простое,программа отображает его самый большой множитель. */using System;class FindPrimes {public static void Main() {int num;int i;int factor;bool isprime;for(num = 2; num < 20; num++) {Глава 5.

Инструкции управления111}}isprime = true;factor = 0;// Узнаем, делится ли num на i без остатка.for(i=2; i <= num/2; i++) {if((num % i) == 0) {// Если num делится на i без остатка,// значит num — число не простое.isprime = false;factor = i;}}if(isprime)Console.WriteLine(num + " — простое число.");elseConsole.WriteLine("Максимальный множитель числа " +num + " равен " + factor);}Результаты выполнения этой программы имеют такой вид:2 — простое число.3 — простое число.Максимальный множитель числа 4 равен 25 — простое число.Максимальный множитель числа 6 равен 37 — простое число.Максимальный множитель числа 8 равен 4Максимальный множитель числа 9 равен 3Максимальный множитель числа 10 равен 511 — простое число.Максимальный множитель числа 12 равен 613 — простое число.Максимальный множитель числа 14 равен 7Максимальный множитель числа 15 равен 5Максимальный множитель числа 16 равен 817 — простое число.Максимальный множитель числа 18 равен 919 — простое число.Вариации на тему цикла forЦикл for — одна из наиболее гибких инструкций в C#, поскольку она позволяетполучить широкий диапазон вариаций.Использование нескольких управляющих переменных циклаДля управления циклом for можно использовать две или больше переменных.

Вэтом случае инструкции инициализации и итерации для каждой из этих переменныхотделяются запятыми. Вот пример:// Использование запятых в цикле for.using System;class Comma {112Часть I. Язык C#public static void Main() {int i, j;for(i=0, j=10; i < j; i++, j--)Console.WriteLine("i и j: " + i + " " + j);}}Вот как выглядят результаты выполнения этой программы:i и j: 0 10i и j: 1 9i и j: 2 8i и j: 3 7i и j: 4 6Здесь запятыми отделяются две инструкции инициализации и два итерационныхвыражения. При входе в цикл инициализируются обе переменные — i и j. Послевыполнения каждой итерации цикла переменная i инкрементируется, а переменная jдекрементируется. Использование нескольких управляющих переменных в цикле иногдапозволяет упростить алгоритмы. В разделах инициализации и итерации цикла for можноиспользовать любое количество инструкций, но обычно их число не превышает двух.Приведем пример практического использования двух управляющих переменных вцикле for.

Рассмотрим программу, которая находит наибольший и наименьшиймножители числа (в данном случае числа 100). Обратите особое внимание на условиезавершения цикла: оно включает обе управляющих переменных./*Использование запятых в цикле for для определениянаибольшего и наименьшего множителей числа. */using System;class Comma {public 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);Результаты выполнения этой программы выглядят так:Глава 5.

Инструкции управления113Наибольший множитель: 50Наименьший множитель: 2Благодаря использованию сразу двух управляющих переменных в одном цикле forможно найти как наибольший, так и наименьший множитель числа. Для определениянаименьшего множителя используется управляющая переменная i. Первоначально онаустанавливается равной числу 2 и инкрементируется до тех пор, пока ее значение непревысит половину исследуемого числа (оно хранится в переменной num). Для определениянаибольшего множителя используется управляющая переменная j.

Первоначально онаустанавливается равной половине числа, хранимого в переменной num, и декрементируетсядо тех пор, пока ее значение не станет меньше двух. Цикл работает до тех пор, пока обепеременные — i и j — не достигнут своих конечных значений. По завершении циклабудут найдены оба множителя.Условное выражениеУсловным выражением, которое управляет циклом for, может быть любоедопустимое выражение, генерирующее результат типа bool. Например, в следующейпрограмме цикл управляется переменной done.// Условием цикла может быть любое выражение типа bool.using System;class forDemo {public 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);}}}А вот результаты выполнения этой программы:j: 0 100j: 1 99j: 2 98j: 3 97j: 4 96j: 5 95j: 6 94j: 7 93j: 8 92j: 9 91j: 10 90В этом примере цикл for повторяется до тех пор, пока bool-переменная doneимеет значение true.

Эта переменная устанавливается равной true внутри цикла, есликвадрат значения переменной i больше значения переменной j или равен ему.i,i,i,i,i,i,i,i,i,i,i,114Часть I. Язык C#Отсутствие элементов в определении циклаВ C# разрешается опустить любой элемент заголовка цикла (инициализация, условие,итерация) или даже все сразу. Отсутствие некоторых элементов в определении цикла можетдать интересный результат. Рассмотрим следующую программу:// Составляющие части цикла for могут быть пустыми.using System;class Empty {public static void Main() {int i;for(i = 0; i < 10; ) {Console.WriteLine("Проход №" + i);i++; // Инкрементируем управляющую переменную цикла.}}}Здесь отсутствует выражение итерации цикла for.

Вместо него инкрементированиеуправляющей переменной i выполняет инструкция, находящаяся внутри цикла. Это значит,что перед каждым повторением тела цикла выполняется только одно действие: значениепеременной i сравнивается с числом 10. Но поскольку значение i инкрементируетсявнутри цикла, он функционирует нормально, отображая следующие результаты:Проход №0Проход №1Проход №2Проход №3Проход №4Проход №5Проход №6Проход №7Проход №8Проход №9В следующем примере из определения цикла for удалена и часть инициализацииуправляющей переменной.// Определение цикла for состоит из одного условия.using System;class Empty2 {public static void Main() {int i;i = 0; // Убираем из цикла раздел инициализации.}}for(; i < 10; ) {Console.WriteLine("Проход №" + i);i++; // Инкрементируем управляющую переменную цикла.}В этой версии переменная i инициализируется до входа в цикл for, а не в егозаголовке. Обычно программисты предпочитают инициализировать управляющуюпеременную цикла внутри цикла for.

К размещению выражения инициализации заГлава 5. Инструкции управления115пределами цикла, как правило, прибегают только в том случае, когда начальное значениегенерируется сложным процессом, который неудобно поместить в определение цикла.Бесконечный циклОставив пустым условное выражение цикла for, можно создать бесконечный цикл(цикл, который никогда не заканчивается). Например, в следующем фрагменте программыпоказан способ, который используют многие C#-программисты для создания бесконечногоцикла.for(;;) // Специально созданный бесконечный цикл.{// ...}Этот цикл будет работать без конца. Несмотря на существование некоторых задачпрограммирования (например, командных процессоров операционных систем), которыетребуют наличия бесконечного цикла, большинство “бесконечных циклов” — это простоциклы со специальными требованиями к завершению.

Ближе к концу этой главы будетпоказано, как завершить цикл такого типа. (Подсказка: с помощью инструкции break.)Циклы без телаВ C# тело, связанное с циклом for (или каким-нибудь другим циклом), может бытьпустым. Дело в том, что пустая инструкция синтаксически допустима. “Бестелесные”циклы часто оказываются полезными. Например, следующая программа использует“бестелесный” цикл для получения суммы чисел от 1 до 5.// Тело цикла может быть пустым.using System;class Empty3 {public static void Main() {int i;int sum = 0;// Суммируем числа от 1 до 5.for(i =1; i <= 5; sum += i++);}}Console.WriteLine("Сумма равна " + sum);Результат работы этой программы весьма лаконичен:сумма равна 15Обратите внимание на то, что процесс суммирования полностью выполняется внутриинструкции for, поэтому и в теле цикла отпала необходимость.

Особое внимание обратитена итерационное выражение:sum += i++Не стоит пугаться инструкций, подобных этой. Они весьма распространены впрофессиональной среде и легко понимаются, если их разбить на части. Эта инструкцияозначает, что в переменную sum необходимо поместить результат сложения текущегозначения переменной sum и значения переменной i, а затем инкрементировать116Часть I. Язык C#значение переменной i.

Таким образом, предыдущая инструкция эквивалентна следующим:sum = sum + i;Объявление управляющей переменной в цикле forЧасто переменная, которая управляет циклом for, необходима только для этогоцикла и больше никак не используется. В этом случае можно объявить ее в разделеинициализации цикла. Например, следующая программа вычисляет как сумму, так ифакториал чисел от 1 до 5. Управляющая переменная i здесь объявляется в цикле for.// Объявление управляющей переменной в цикле for.using System;class ForVar {public static void Main() {int sum = 0;int fact = 1;// Вычисляем сумму и факториал чисел от 1 до 5.for(int i = 1; i <= 5; i++) {sum += i; // i известна только в пределах цикла.fact *= i;}}}//Но здесь переменная i неизвестна.Console.WriteLine("Сумма равна " + sum);Console.WriteLine("Факториал равен " + fact);При объявлении переменной внутри цикла for необходимо помнить следующее: ееобласть видимости завершается с завершением этого цикла.

Другими словами, областьвидимости этой переменной ограничена циклом for. Вне цикла такая переменнаяпрекращает свое существование. Таким образом, в предыдущем примере переменная iнедоступна вне цикла for. Если нужно использовать управляющую переменную цикла ещегде-то в программе, вы не должны объявлять ее внутри цикла for.Прежде чем двигаться дальше, не помешало бы поэкспериментировать ссобственными вариациями на тему цикла for.Цикл whileОбщая форма цикла while имеет такой вид:while(условие)инструкция;Здесь под элементом инструкция понимается либо одиночная инструкция, либоблок инструкций. Работой цикла управляет элемент условие, который представляет собойлюбое допустимое выражение типа bool. Элемент инструкция выполняется до тех пор,пока условное выражение возвращает значение ИСТИНА.

Как только это условиестановится ложным, управление передается инструкции, которая следует за этим циклом.Глава 5. Инструкции управления117Перед вами простой пример, в котором цикл while используется для вычисленияпорядка заданного целого числа.// Вычисление порядка целого числа.using System;class WhileDemo {public static void Main() {int num;int mag;num = 435679;mag = 0;Console.WriteLine("Число: " + num);}}while(num > 0) {mag++;num = num / 10;};Console.WriteLine("Порядок: " + mag);А вот результаты выполнения этой программы:Число: 435679 Порядок: 6Цикл while работает следующим образом. Проверяется значение переменной num.Если оно больше нуля, счетчик mag инкрементируется, а значение num делится на 10.

Характеристики

Тип файла
PDF-файл
Размер
5,05 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6418
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее