Главная » Просмотр файлов » Р.У. Себеста - Основные копцепции языков программирования (2001)

Р.У. Себеста - Основные копцепции языков программирования (2001) (1160794), страница 86

Файл №1160794 Р.У. Себеста - Основные копцепции языков программирования (2001) (Р.У. Себеста - Основные копцепции языков программирования (2001)) 86 страницаР.У. Себеста - Основные копцепции языков программирования (2001) (1160794) страница 862019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Оно часто используется для увеличения счетчика цикла. Описание операционной семантики оператора гог языка приводится ниже. Поскольку выражения в языке С также являются операторами, вычисление выражений показано как вычисление операторов. выражение 1 1оор: зг' выражение 2 = О доФо оцг (тело цикла) выражение 3 йово 1сор оцс: Вот типичный пример цикла со счетчиком в языке С: гог (1пг]ех = О; 1пс(ех <= 10; 1пс)ех++) Яцщ вцл1 + 11вг (1пс(ех) г Все выражения в операторе гог языка С являются необязательными. Отсутствие второго выражения интерпретируется как истинное выражение, так что оператор Гог без второго выражения потенциально является бесконечным циклом.

Если первое и/или третье выражение отсутствуют, то не делается никаких предположений. Например, если отсутствует первое выражение, зто означает, что никакой инициализации не происходит. 324 Глава 7. Структуры управления но уровне опероторов тчетим, что оператор Еок языка С не нуждается в счетчике. Он может легко модеаать перечисление и логические циклические структуры, как показано в следующем :еле. Проектное решение, касающееся оператора дол языка С, было следующим: не суше.

-:-, ет никаких явных счетчиков или параметров цикла. Все переменные, относящиеся к .л). могут изменяться в тела цикла. Выражения вычисляются в порядке, указанном .е Несмотря на тот факт, что это может привести к катастрофе, в языке С лопускает.: -ереход внутрь тела цикла Еок. Оператор хок языка С более гибок, чем аналогичные операторы в других рассмотг:-чых нами языках программирования, поскольку каждое из его выражений может -.. очать составные операторы, которые, в свою очередь, допускают использование не. ° льких счетчиков никла любого типа.

Когда в одном выражении оператора кок исчзьзуются составные операторы, они разделяются запятыми. Все операторы языка С 'еют значения, и эта форма составного оператора — не исключение. Значением такого ..:тавного оператора является значение его последнего компонента. Рассмотрим следующий оператор хоах =:г (соипс1 = О, соцпс2 = 1.01 соипс1 <= 10 ьь соцпс2 <= 100. Оз вцв = ++соипС1 + соцпС2, соцпС2 *= 2.5) Описание операционной семантики этого фрагмента приведено ниже: ссцпс1:= 0 соцпС2 := 0.0 зор: 0 ссцпс > 10 сосо оцс И соипС2 > 100.0 сохо оиС ссипс1 := соипт1 + 1 ашп:= ссопс1 + ссипс2 ссцпС2 := соипС2 " 2.5 до(о 1оор Оператор хок языка С, приведенный выше, не нуждается в теле цикла, а потому и ие ' ест его. Все требуемые действия являются частью самого оператора хок, а не его те.з Первое н третье выражения — это составные операторы.

В обоих случаях вычисляет- : ~ все выражение, но результирующее значение для управления циклом не используется. Оператор йок языка С++ отличается от своего аналога в языке С двумя особенностяи Во-первых, в дополнение к арифметическим выражениям он может использовать бу.евское выражение для управления циклом. Во-вторых, первое выражение может содер- зть определения переменных. Например, хок (дпс соцпх = О; соцпт < 1еп; соцпг++] ( ... ) Область видимости переменной-счетчика цикла такая же, как и у оператора хок в языке Аоа.

Однако в языке С++ область видимости переменной, определенная оператором аок. начинается объявлением этой переменной и заканчивается конном функции, в которой она объявлена. Выражения оператора цикла хок не входят в составной оператор, являющийся телом цикла йок. Объявления переменных в функциях языка С должны 32$ 7.4. Операторы цикле предшествовать выполняемым операторам, так что приведенный выше оператор кок в языке С недопустим. Оператор бок языка )ача аналогичен оператору кок языка С++, за исключением того факта, что выражение, управляющее выполнением цикла, должно быть булевским (Ьоо)сап), и область видимости переменной, определенной в первом выражении, ограничена телом цикла, как и в языке Аг]а. 7.4.2. Логически управляемые циклы Во многих случаях наборы операторов должны выполняться повторно, но управление повторениями основывается на булевских выражениях, а не на счетчике.

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

Среди этих вопросов мало спорных или трудных. ° Управление должно основываться на предварительной или на последующей проверке условий? ° Должен ли логически управляемый цикл представлять собой особый вид цикла со счетчиком или он должен быть отдельным оператором? 7.4.2.2. Примервг Некоторые императивные языки (например, Рааса!, С, С++ н )ача) имеют логически управляемые циклы как с прелварительной, так и последующей проверкой условий, которые не являются особым видом циклов со счетчиком. В языке С++ циклы с предварительной и последующей проверкой условий имеют следующий вид: нМ1в (выражение] тело цикла Возможен также такой вариант: ао тело цикла нЬ11в (выражение) Эти операторы иллюстрируются следующим фрагментом кода на языке С++: вопи = Ог сзп» 1пс]айаг нМ1в (1пс]ас >= О) вам ь= 1пааг) сзп » 1лг]аС) сзп » ча1иег 326 Глава 7.

Структуры управления на уровне операторов с?о га1це /= 10? б 91СБ ь+т и?«11в [ча1це > 0) Заметим, что все переменные в этих примерах являются целочисленными, с?п — это :-знзартный входной поток (клавнатура), ໠— оператор ввода. В варианте с предварительноЯ проверкой условий (и?т11е) оператор выполняется до -е«пор, пока результат выражения является истинным (ненулевым). В языках С, С++ и :;з тело никла с последующей проверкой условий (с?о) выполняется до тех пор, пока : ти) льтат выражения не станет ложным (нулем). Единственное реальное различие между :-ераторами с?о и мп11в заключается в том, что оператор с?о всегда заставляет тело .

«ла выполняться хотя бы один раз. В обоих случаях оператор является составным. эисания операционной семантики этих двух операторов даны ниже: и?«11е а - П11е ' сорт 1оор: 1Я выражение = 0 добро огас [тело цикла] [тело цикла] ак'[выражение) т« 0 йоко 1оор аоео ?оор И в языке С, и в языке С++ допускается переход внутрь тел обоих операторов цикла %-. 1в и т?о. Операторы и?«11в и с?о языка ]ача аналогичны операторам и?11в и тзо в языках С и --.

за исключением того факта, что управляющее выражение в языке ]ача должно быть -евским, и, поскольку язык ]ача не имеет операторов бото, в тело цикла нельзя войти - .ткуэа, кроме его начала. В языке ГОКТКАХ 77 нет логически управляемых циклов с предварительной или по: - з«юшей проверкой условиЯ. То же относится и языку ЕОКТКАХ 90, В языке Ада есть .:-ттчески управляемый цикл с предварительной проверкой условий, но нет цикла с по. '.=?юшей проверкой.

Оператор логически управляемого цикла с последующей проверкой условий евреек-штп11 языка Разса! отличается от операторов т?о-и?«11е в языках С, С++ и .з.з тем, что он имеет противоположную логику управляющего выражения. Тело цикла :-=.познается до тех пор, пока результат управляющего выражения не станет ложным, а -: истинным, как в языках С, С++ и ]ача. Оператор первее-цпе11 необычен, поскольку его тело может представлять собой -'бо составной оператор, либо последовательность операторов. Это единственная т"авляюшая структура в языке Разса!, имеющая такую гибкость.

Она представляет сод еше один пример отсутствия ортогональности в структуре языка Разса[. Циклы с последующей проверкой условия редко бывают полезными и могут быть в -е«отаром смысле опасными, поскольку программисты иногда забывают о том, что тело -=.кого цикла всегда должно выполняться хотя бы один раз. Синтаксическое решение -.ззиестить последующую проверку условий после тела цикла, в котором она имеет се° знтическое значение, помогает избежать подобных проблем, делая логику такого опе: зтора более ясной. 327 7.4.

Операторы цикла 7.4.3. Циклы с механизмами управления, размещенными пользователем В некоторых ситуациях программисту удобно выбирать расположение механизма управления циклом не в начале или конце цикла. Синтаксический механизм, позволяюший пользователю самому определять расположение управления циклом, относительно прост, так что его разработка не представляет трудностей. Наиболее интересный вопрос состоит в том, можно ли выйти из одного или нескольких вложенных циклов.

Вопросы разработки такого механизма приведены ниже. ° Должен ли механизм проверки условий быть неотъемлемой частью выхода из цикла? ° Механизм может появляться в управляемом цикле или только в таком цикле, в котором нет никаких других механизмов управления? ° Выходить можно только из одного тела цикла или из внешних циклов тоже? В некоторых языках, в том числе в языке Ада, есть операторы цикла без управления повторениями; они становятся бесконечными, если программист ие добавит средства управления ими. Бесконечный цикл в языке Аба имеет вид: 1оор епс[ 1оор Оператор ехдк в языке Ада может быть как условным, так и безусловным, кроме того, он может появляться в любом цикле. Ею обший вид приведен ниже: вхьс [метка цикла][нЬеп условие] При отсутствии необязательной части [иЬеп условие] оператор вхдк приводит к завершению выполнения только того цикла, в котором он появился. В качестве примера рассмотрим следующий фрагмент: 1оор Ы БОМ >= 10000 С[зеп ехдц епс[ дкг епс[ 1оор; Здесь при выполнении оператора ехь К управление передается первому оператору после конца цикла.

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

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

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

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