Главная » Просмотр файлов » Г. Шилдт - Полный справочник по C#

Г. Шилдт - Полный справочник по C# (1160789), страница 23

Файл №1160789 Г. Шилдт - Полный справочник по C# (Г. Шилдт - Полный справочник по C#) 23 страницаГ. Шилдт - Полный справочник по C# (1160789) страница 232019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

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

Цикл работает до тех пор, пока обе переменные — i и j — не достигнут своих конечных значений. По завершении цикла будут найдены оба множителя.Условное выражениеУсловным выражением, которое управляет циклом for, может быть любое допустимое выражение, генерирующее результат типа bool. Например, в следующей проjpaMMe цикл управляется переменной done.// Условием цикла может быть любое выражение типа bool.using System;class forDemo {public static void Main() {int i, j ;bool done = false;for(i=0,j=100;!done; i++, j — ){• i f ( i * i >= j) done = t r u e ;Console.WriteLineC'i,j : " + i + " " + j);А вот результаты выполнения этой программы:0 1001 992 983 974 965 95i, j: 6 94i, j: 7 93i, j: 8 92i, j: 9 91i, j: 10 90В этом примере цикл for повторяется до тех пор, пока bool-переменная doneимеет значение t r u e .

Эта переменная устанавливается равной t r u e внутри цикла, если квадрат значения переменной i больше значения переменной j или равен ему.114Часть I. Язык С#Отсутствие элементов в определении циклаВ С# разрешается опустить любой элемент заголовка цикла (инициализация, условие, итерация) или даже все сразу. Отсутствие некоторых элементов в определении^цикла может дать интересный результат.

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

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

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

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

В этом случае можно объявить ее в разделе инициализации цикла. Например, следующая программа вычисляет как сумму, так и факториалисел от 1 до 5. Управляющая переменная i здесь объявляется в цикле for.// Объявление управляющей переменной в цикле f o r .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.ЦИКЛ w h i l eОбщая форма цикла while имеет такой вид:whi 1 е (условие) инструкция;Здесь под элементом инструкция понимается либо одиночная инструкция, либоблок инструкций. Работой цикла управляет элемент условие, который представляетсобой любое допустимое выражение типа 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 / 1 0 ;\Console.WriteLine("Порядок: " + mag);IА вот результаты выполнения этой программы:Число: 435679Порядок: 6Цикл while работает следующим образом. Проверяется значение переменной num.Если оно больше нуля, счетчик mag инкрементируется, а значение num делится на 10.Цикл повторяется до тех пор, пока num больше нуля. Когда num станет равным нулю,цикл завершится, а переменная mag будет содержать порядок исходного числа.Подобно циклу for, условное выражение проверяется при входе в цикл while, aэто значит, что тело цикла может не выполниться ни разу.

Это свойство цикла(иллюстрируемое следующей программой) устраняет необходимость отдельного тестиювания до начала цикла.// Вычисление целых степеней числа 2.u s i n g System;class Power {public static void Main() {int e;int result;for(int i=0; i < 10;result = 1;e = i;while(e > 0) {result *= 2;e—;Console.WriteLine("2 в степени " + i +" равно " + result);118Часть I.

Язык С#2222222222Результаты выполнения этой программы выглядят так:в степени 0 равно 1в степени 1 равно 2в степени 2 равно 4в степени 3 равно 8в степени 4 равно 16в степени 5 равно 32в степени б равно 64в степени 7 равно 128в степени 8 равно 256в степени 9 равно 512,Обратите внимание на то, что цикл while выполняется только в том случае, еслизначение переменной е больше нуля. Таким образом, когда е равно нулю, что имеетместо в первой итерации цикла for, цикл while опускается.ЦИКЛ d o - w h i l eТретьим циклом в С# является цикл do-while. В отличие от циклов f o r и while,в которых условие проверяется при входе, цикл do-while проверяет условие при выходе из цикла. Это значит, что цикл do-while всегда выполняется хотя бы один раз.Его общий формат имеет такой вид:do {инструкции;} while {условие);Несмотря на то что фигурные скобки необязательны, если элемент инструкциисостоит только из одной инструкции, они часто используются для улучшения читабельности конструкции do-while, не допуская тем самым путаницы с циклом while.Цикл do-while выполняется до тех пор, пока остается истинным элемент условие,который представляет собой условное выражение.В следующей программе цикл do-while используется для отображения в обратномЛторядке цифр, составляющих заданное целое число.// Отображение в обратном порядке цифр целого числа.using System;class DoWhileDemo {public s t a t i c void Main() {int num;int nextdigit;num = 198;Console.WriteLine("Число: " + num);Console.Write("Число с обратным порядком цифр: " ) ;do {nextdigit = num % 10;Console.Write(nextdigit);Глава 5.

Инструкции управления119num = num / 10;} while(num > 0) ;Console.WriteLine() ;Результат выполнения этой программы выглядит так:•Число: 198Число с обратным порядком цифр: 8 91Вот как работает этот цикл. На каждой итерации крайняя справа цифра определяется как остаток от целочисленного деления заданного числа на 10. Полученная цифра тут же отображается на экране. Затем результат этого деления запоминается в тойже переменной num. Поскольку деление целочисленное, его результат равносилен отбрасыванию крайней правой цифры.

Этот процесс повторяется до тех пор, пока числоnum не станет равным нулю.ЦИКЛ f o r e a c hЦикл foreach предназначен для опроса элементов коллекции. Коллекция — этогруппа объектов. В С# определено несколько типов коллекций, среди которых можновыделить массив. Цикл f oreach рассматривается в главе 7, посвященной массивам.Использование инструкции break для выходаиз циклаС помощью инструкции break можно организовать немедленный выход из цикла,опустив выполнение кода, оставшегося в его теле, и проверку условного выражения.При обнаружении внутри цикла инструкции break цикл завершается, а управление^передается инструкции, следующей после цикла. Рассмотрим простой пример.// Использование инструкции break для выхода из цикла.u s i n g System;c l a s s BreakDemo {public s t a t i c void Main() {/ / Используем break для выхода из цикла.f o r ( i n t i=-10; i <= 10; i++) {i f ( i > 0) break; / / Завершение цикла при iConsole.Write(i + " " ) ;}Console.WriteLine("Готово!");> 0.Эта программа генерирует следующие результаты:-10 -9 -8 -7 -6 -5 -4 -3 -2 - 1 0 Готово!120Часть I.

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

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

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

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