Главная » Просмотр файлов » Г. Шилдт - С#4.0 Полное руководство

Г. Шилдт - С#4.0 Полное руководство (1160795), страница 24

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

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

Напомним, что ветвь г(е Еап1г не является обязательной. Когда она не нужна, ее можно просто опустить. Переход последовательности операторов, связанных с одной ветвью саве, в следующую ветвь саве считается ошибкой, поскольку в С() должно непременно соблюдаться правило недопущения "провалов" в передаче управления ходом выполнения программы. Именно поэтому последовательность операторов в каждой ветви саве оператора вы1гсЬ оканчивается оператором Ьгеаи.

(Избежать подобных "провалов", можно также с помощью оператора безусловного перехода посо, рассматриваемого далее в этой главе, но для данной цели чаще применяется оператпр Ьгеа)г.) Когда 128 Часть!. Язык С() в последовательносги операторов отдельной ветви саяе встречается оператор Ьсеа)с, происходит выход не только из этой ветви, но из всего оператора ян1ссЬ, а выполнение программы возобновляется со следующего оператора, находящегося за пределами оператора яийссЬ. Последовательность операторов в ветви с(ел ап1С также должна быть лишена "провалов", поэтому она завершается, как правило, оператором Ьгеа)с.

Правило недопущения "провалов" относится к тем особенностям языка СФ, которыми он отличается от С, С н- и )ауа. В этих языках программирования одна ветвь саяе может переходить (т.е, "проваливаться" ) в другую. Данное правило установлено в СФ для ветвей саве по двум причинам. Во-первых, оно дает компилятору возможность свободно изменять порядок следования последовательностей операторов из ветвей саяе для целей оптимизации.

Такая реорганизация была бы невозможной, если бы одна ветвь саяе могла переходить в другую. И во-вторых, требование завершать каждую ветвь саяе явным образом исключает непроизвольные ошибки программирования, допускающие переход одной ветви саяе в другую. Несмотря на то что правило недопущения "провалов" не допускает переход одной ветви саяе в другую, в двух или более ветвях саяе все же разрешается ссылаться с помощью меток на одну и ту же кодовую последовательность, как показано в следующем примере программы.

Пример "проваливанин" пустых ветвей саяе. ояьпэ зуяпеао с1аяя Нтргусаяеясапра11 ( ясасьс чоьг) Маза() ( ьпг Гог(а=14 1 < 51 14а) ян1гсЬ(1) ( саве 1: саве 2: саяе 3: Сопяо1е.иг1ое11пе("1 равно 1, 2 или 3"); Ьхеак4 саяе 4: Сопяо1е.нг1геЫпе("1 равно 4"); Ьгеак1 ) Ниже приведен результат выполнения этой программы. 1 равно 1, 2 или 3 равно 1, 2 или 3 равно 1, 2 или 3 равно 4 Если значение переменной 1 в данном примере равно 1, 2 или 3, то выполняется первый оператор, содержащий вызов метода ИгзгеЬТпе ( ) . Такое расположение нескольких меток ветвей с аз е подряд не нарушает правило недопущения "провалов"; поскол ьку во всех этих ветвях используется одна и та же последовательность операторов.

Расположение нескольких меток ветвей саяе подряд зачастую применяется в том случае, если у нескольких ветвей имеется общий код. Благодаря этому исключается излишнее дублирование кодовых последовательностей. Глава 5. Управляющие операторы 129 Вложенные операторы зьвхйсЬ Один оператор знассЛ может быть частью последовательности операторов другого, внешнего оператора зилссЛ, И такой оператор зиассЛ называется вложенным. Константы выбора внутреннего и внешнего операторов зньгсЛ могут содержать общие значения, не вызывая никаких конфликтов. Например, следующий фрагмент кода является вполне допустимым. знаксЛ(сЛ() ( сазе 'л': сопзоге.хгьгеьгпе("эта ветвь л — часть "внешнего оператора зньгсЛ."); знггсЛ(сЛ2) ( сазе 'Л': Сопзоье.нгьвеЬьпе("Эта ветвь Л вЂ” часть "внутреннего оператора знггсЛ") Ьгеа)н сазе 'В': конец внутреннего оператора знтосЛ Ьгеа)м сазе 'В': Оператор цыкла аког Оператор Гог уже был представлен в главе 2, а здесь он рассматривается более подробно.

Вас должны приятно удивить эффективность и гибкость этого оператора. Прежде всего, обратимся к самым основным и традиционным формам оператора гог. Ниже приведена общая форма оператора гог для повторного выполнения единственного оператора. Гог(инициализация) условие; итерация) оператор; А вот как выглядит его форма для повторного выполнения кодового блока: Гог (инициализация) условие; итерация) ( последовательность операторов; ) где инициализация, как правило, представлена оператором присваивания, задающим первоначальное значение переменной, которая выполняет роль счетчика и управляет циклом; условие — это логическое выражение, определяющее необходимость повторения цикла; а итерация — выражение, определяющее величину, на которую должно изменяться значение переменной, управляющей циклом, при каждом повторе цикла. Обратите внимание на то, что эти три основные части оператора цикла аког должны быть разделены точкой с запятой.

Выполнение цикла гог будет продолжаться до тех пор, пока проверка условия дает истинный результат. Как только эта проверка даст ложный результат, цикл завершится, а выполнение программы будет продолжено с оператора, следующего после цикла Гог. Цикл гог может продолжаться как в положительном, так и в отрицательном направлении, изменяя значение переменной управления циклом на любую величину. В приведенном ниже примере программы выводятся числа', постепенно уменьшающиеся от 100 до -100 на величину 5. 130 Часть (. Язык С№ // Выполнение цикла Гог в отрицательном направлении.

азгпу Буятеш; с1аяя Вестгот ( ятат1с чо10 Маьп() ( тпт хг тот(х = 100; х > †1; х — = 5) Сопяо1е.нг1геЬ1пе(х)г ) ) В отношении циклов гот следует особо подчеркнуть, что условное выражение всегда проверяется в самом начале цикла. Это означает, что код в цикле может вообще не выполняться, если проверяемое условие с самого начала оказывается ложным.

Рассмотрим следующий пример. Гот(сопит=10; соцпт < 5; сопят++) х += сопят; // зтот оператор не будет выполняться Данный цикл вообще не будет выполняться, поскольку первоначальное значение переменной аоц па, которая им управляет, сразу же оказывается больше 5. Это означает, что условное выражение аоцпг < 5 оказывается ложным с самого начала, т.е. еще до выполнения первого шага цикла.

Оператор цикла 2ог — наиболее полезный для повторного выполнения операций известное число раз. В следующем примере программы используются два цикла тот для выявления простых чисел в пределах от 2 до 20. Если число оказывается непростым, то выводится наибольший его множитель. Выяснить, является ли число простым. Вали оно // непростое, вывести наибольший его множитель. цяьпч Буягеш) с1аяя Е1пг(ртгшея ( ятатта чо10 Ма1п() ( ьпт пцшг 1пг ьпт Гастот; Ьоо1 ьяртипе; Гог(пцш = 2; пцш < 20г пцш++) ( тяргтше = тгце; Гастог = 0; // Выяснить, делится ли значение переменной пцш нацело.

Гог(т=2; т <=- пцш/2; 1++) ( 11((пцш Ъ т) == 0) // Значение переменной пцш делитая нацело. // следовательно, зто непроатое чиало. 1ярг1ше = Га1яе; Гастог ) Гвава б. Управляющие операторы 131 15(1яргипе) Сопяо1е.иггсевьпе(оош + " — простое число."); е1яе .Сопво1е.Хггсе)дпе("Наибольший множитель числа " + пцш + " равен " + Гассет) 1 Ниже приведен результат выполнения этой программы. 2 — простое число 3 — простое число Наибольший множитель 5 — простое число Наибольший множитель 7 — простое число Наибольший множитель Наибольший множитель Наибольший множитель 11 — простое число Наибольший множитель 13 — простое число Наибольший множитель Наибольший множитель Наибольший множитель 17 — простое число Наибольший множитель 19 — простое число числа 4 равен 2 числа б равен 3 8 равен 4 9 равен 3 10 равен 5 числа числа числа числа 12 равен б 14 равен 7 15 равен 5 1б равен 8 числа числа числа числа 18 равен 9 Некоторые разновидности оператора цикла Еох Применение нескольких переменных управления циклом В операторе цикла гог разрешается использовать две или более переменных для управления циклом.

В этом случае операторы инициализации и инкремента камсдой переменной разделяются запятой. рассмотрим следующий пример программы. // Использовать запятые в операторе цикла бог. цвтп9 Буягеш( с1аяя Соева ( ясасьс тоге Маьп() ( тпг бог(1=0, 3=101 1 < 3( 1++, 3 †) Сопяо1е.нг1ге11пе("1 и 3: " т 1 + " " + 3)( ) ) Оператор цикла гог относится к самым универсальным операторам языка С)), поскольку он допускает самые разные варианты своего применения.

Некоторые разновидности оператора цикла гог рассматриваются ниже. 132 Часть 1. Язык С№ Выполнение этой программы дает следующий результат. 1 и 7: 0 10 1из:19 1из:28 из:37 1из:46 В данном примере запятыми разделяются два оператора инициализации и еще два итерационных выражения. Когда цикл начинается, инициализируются обе переменные, 1 и 7. Всякий раз, когда цикл повторяется, переменная 1 инкрементируется, а переменная 7 декрементируется. Применение нескольких переменных управления циклом нередко оказывается удобным, упрощая некоторые алгоритмы. Теоретически в операторе цикла бог может присутствовать любое количество операторов инициализации и итерации, но на практике цикл получается слишком громоздким, если применяется более двух подобных операторов.

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

Г/ Использовать запятые в операторе цикла Гог лля выявления наименьшего и наибольшего множителя числа. цв1пд Нувсешг с1авя Сопвпа ( воаоьс чо1С Нагл() ( 1пс 1, 7) ьпс яша11еяс, 1агчевс) 1пя пцш) пцш = 100) вша11евс = 1агдеяс = 1( бог(1=2, 1=пои/2( (1 <= поы2) в (1 >= 2)' 1++ 1 ) ( ьт((вша11евя == 1) я ((пцш Ъ 1) == О)) яша11еяв 18[(1агдево == 1) В ((пцш % 7) == О)) 1агчеяс = 1) сопяо1е.хгьсешпе("наибольший множитель: " + 1вгчеяс)) Сопво1е.нггсесгпе("Наименьший множитель: " + яшв11еяс)) ) ) Ниже приведен результат выполнения этой программы.

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

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

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

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