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

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

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

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

Оператор вхдк с условием м]зеп приводит к завершению цикла, в котором он появился, только если выполняется указанное условие. Например, приведенный выше цикл можно переписать так: 1оор ехдс нЪеп Я0М >= 100001 епс$1оорг 32о Глава 7.

Структуры управления иа уровне операторов Любой цикл можно обозначить меткой, и если метка цикла включена в оператор ахзс. то управление передается оператору, находящемуся непосредственно после ука.—.ной метки. Рассмотрим следующий сегмент кода: :СТЕК 1ООР: Еок ЕОХ 1п 1 .. ИАХ ЕОХЯ 1оор :ХМЕЛ 1ООР: Рок СОЕ Еп 1 ..

МАХ СОЬЯ 1оор ЯБМ := ЯОИ + МАТ(((ОХ, СО1); ехдс ОСТЕ(( 1ООР нцеп ЯОМ > 1000.0; епс( 1оор ТХХЕй ЕООР) впс( 1оор ООТЕй 1ООРз 'том примере оператор ем1Ф представляет собой оператор условного перехода на :гвый оператор после внешнего цикла.

Возможен вариант, когда оператор вждк ис.-.ьзуется вместо выражения: еждс нЬеп ЯОИ > 1000.0) том случае его можно рассматривать как оператор условного перехода на первый -.Ратор после внутреннего цикла. Заметим, что операторы ехдк часто используются .. обработки необычных или ошибочных условий. Языки С, С++ и Моди!а-2 имеют безусловные операторы выхода, не содержащие ме~Ькеа)< в языках С и С++ и оператор ЕХТТ в языке Мот(ц!а-2); в языках - . ВТЭКАМ 90 и )ача, как и в языке Ада. есть операторы безусловного выхода с метками тератор ЕХТТ в языке ГОйТКАИ 90 и оператор Ьквв)с в языке )ача), однако в языке .

з целью перехода может быть любой внешний составной оператор. Языки С и С++ имеют механизм управления сопкдпие, передающий управление .жайшему внешнему циклу. Этот оператор не является оператором выхода из цикла. - позволяет пропустить оставшиеся операторы цикла при текущей итерации без прегзщення выполнения цикла. Например, рассмотрим следующий фрагмент кода; н)з11е (ацат < 1000) ( 9еспект(ча1це); ЕЕ (ча1це < О) сопсдпие) ацтп += ча1це; -онцательное значение приведет к пропуску оператора присваивания и передаче управ-:.лия в начало цикла. С другой стороны, в следующем фрагменте отрицательное значе- е приведет к завершению цикла: иЬ11в (вцт < 1000) ( 9егпехт (ча1це) т ЕЕ (ча1це < О) Ькеа'и) зим += ча1це; В языках РОСТКАМ 90 и )ача есть операторы, подобные оператору сопайпие, но, томе того, они могут содержать метки, указывающие, какой именно цикл должен быть гозолжен.

329 7.4. Операторы цикла Операторы ехсг и Ькее)с обеспечивают наличие нескольких выходов из циклов, что иногда мешает читабельности программ. Однако необычные условия, которые приводят к необходимости завершить выполнение цикла, встречаются так часто, что существование таких конструкций вполне оправданно. Более того, читабельность от этого серьезно не страдает, поскольку целью всех таких выходов является первый оператор после цикла, а не просто оператор, расположенный где-то в программе. Оператор Ькее)с языка абака является исключением из этого правила, поскольку его целью может быть любой внешний составной оператор.

У.4.4. Циклы, основанные на структурах данных Нам осталось рассмотреть только один дополнительный вид циклических струюур— циклы, зависящие от структур данных. Эти циклы управляются количеством элементов в структуре данных, а не счетчиком или булевским выражением. Такие операторы есть в языках СОММО)ч Ы5Р и Рег). В языке СОММО)ч Ы5Р функция с)о11яг выполняет повторяющиеся операции над простыми списками, представляющими собой наиболее распространенную структуру данных в программах на языке ЫБР. Вследствие этого ограничения функция с)о11вг является автоматической, т.е. она всегда неявно выполняет повторяющиеся операции над элементами списка.

Эта функция вызывает выполнение ее тела один раз лля каждого элемента списка. Оператор 1огеасй языка Рег! аналогичен функции йо11вг в языке СОММО)ч ).)5Р; он выполняет повторяющиеся операции над элементами списков или массивов. Например, епажев = ("ВоЬ", "Саго1", "Тес)", "Вее1хеЬцЬ")г хокеесЬ Дпаве [впажея) ( рг1пг 3пажег Более общий оператор цикла, основанный на структурах данных, использует структуры данных и функцию, определенные пользователем, для выполнения операций над каждым элементом структуры. Такая функция называется итератором ()гегагог).

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

При первом выполнении оператора цикла, определенного пользователем, следует выполнить специальный вызов итератора, чтобы получить первый элемент дерева. Итератор должен всегда помнить, какой элемент был обработан последним, чтобы обойти все узлы только по одному разу. Таким образом, итератор должен помнить предысторию. Оператор цикла, определенный пользователем, завершается, когда итератор больше не может найти ни одного элемента. Конструкцию х'ог языков С, С++ и 1ача в силу ее высокой гибкости можно использовать для имитации оператора цикла, определенного пользователем.

Предположим, что программа должна обработать узлы бинарного дерева. Если корень дерева обозначен переменной гоог, и функция ггачегзе устанавливает свои параметры так, чтобы они ЗЗО Гдово 7. Структуры управления но уровне операторов . ыывали на следующий элемент дерева в требуемом порядке, можно использовать сле- ": ащий оператор: гог (рсг = гоог( рсг == пц11) сгачегве(рсг) ) ( Э этом операторе функция г гачегее представляет собой итератор. Оператор цикла, определенный пользователем, играет более важную роль в объектно:гиентпрованном программировании, чем в ранних парадигмах программирования. При-; на этого заключается в том, что пользователи в настоящее время обычно конструируют зхтрактные типы данных для структур данных.

В таких случаях оператор цикла, опреде-енный пользователем, и его итератор должны быть созданы автором абстракции данных, -.:скольку представление объектов данного типа пользователю не известно. В языке С+~ «..ераторы для типов, определенных пользователем, или классов часто реализуются либо -врез дружественные функции класса, либо как отдельные классы итераторов. 7.5.

Беэусловный переход Оператор безусловного перехода передает управление выполнением в указанное ° есто программы. 7.$.1. Проблемы безусловного перехода Наиболее жаркие дебаты, связанные с разработкой языков программирования. в коне (960-х годов шли вокруг вопроса, должен ли безусловный переход быть неотьемле:й частью любого языка программирования высокого уровня, и если да, то следует ли ::.раничивать его использование. Безусловный переход. или оператор до(о, является самым мощным оператором -равлення потоком выполнения программы.

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

Эти проблемы непосредственно вытекают из способности оператора кого вынужлать выполнение любого оператора в программе вслед за любым другим оператором, образуя -эследовательность выполнения программы, независимо от того, предшествует ли этот : тератор первому оператору или следует за ним в тексте программы. Читабельность явтяется наилучшей, когда порядок выполнения операторов почти совпадает с порядком, в -втором они приводятся в программе — в нашем случае это может означать порядок зыполнения "сверху-вниз", к которому мы привыкли. Ограничение операторов яо(о та. им образом, чтобы они могли передавать управление в программе только вниз, частич.о решает проблему.

Подобные ограничения позволяют операторам яо(о передавать , правление в некоторые разделы программы в ответ на ошибки или необычные условия, чо не позволяет использовать их для построения циклов любого вида. 331 7.5. Безусловный первход Несмотря на то что некоторые думающие люди еше раньше предлагали ограничить использование операторов 8о1о, именно Эдсгер Дийкстра дал компьютерному сообществу первое получившее широкое распространение разъяснение опасности операторов безусловного перехода.

В своем письме он писал: "Оператор 8о1о сам по себе слишком примитивен; он слишком похож на предложение запутать программу' (О!)кз!га, 1968а). На протяжении первых нескольких лет после публикации точки зрения Дийкстры на оператор його большое количество людей публично выступали за то, чтобы либо прямо запретить.

либо по крайней мере ограничить использование операторов його. Среди тех, кто не поддерживал предложение о полном исключении оператора його. был Доналд Кнут (Попа!6 Кпцгп), объяснявший, что бывают случаи, когда эффективность оператора 8о1о перевешивает его вред для читабельности (Кпцзп, 1974). Было разработано несколько языков программирования, не содержавших оператора його, — например, языки Моди!а-2 н Зача. Однако самые современные популярные языки программирования включают операторы 8ого.

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

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

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

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