Главная » Просмотр файлов » Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002)

Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801), страница 83

Файл №1160801 Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (Т. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002)) 83 страницаТ. Пратт, М. Зелковиц - Языки программирования - разработка и реализация (4-е издание_ 2002) (1160801) страница 832019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

В основном разработка языка С+« была закопчена к 1986 г., а в июне 1989 г. была вьшущсна вторая всрсия. В 1989 г. в Американском национальном шц титутс стандартов (АЫ81) был создан комитет ХЗ116, который к 1994 г. выпустил черновой стандарт языка, а чсрсз два года — его полнь>й стандарт. 294 Глава 5, Инкапсуляция Обзор языка В.1. С+ — (произносится как «более или менее С») Воэможности. В отличие от С+э С+- — субьективно ориентированный язык.

Каждый экземпляр классаС«-, известный как субъект, имеет скрытые члены, известные как предубеждения или необъявленные предпочтения, которые являются непробиваемыми предпочтениями, которые невосприимчивы к внешним сообщениям, а также открытые члены, известные как хвастовство или амбиции. Следующие операции С перегружены в Сн- так, как приведено ниже: > лучше чем; < хуже чем; » гораздо лучше чем; «забудьте это; ни за что на свете; сравнимы, две разные вещи являются одним и тем же. С+- является строго типизированным языком, основанным на стереотипах и логике, основным постулатом которой является «Я всегда прав».

Булевы переменные истина и ложь (которые в менее реалистичных языках считаются константами) дополнены такими, как а па«ажно и свини тельно, еще менее четко определенными, чем традиционные нечеткие категории Заде. Все булевы величины могут быть объявлены с модификаторами сильный и слабый. Говорят, что слабая импликация «сохраняет отрицание» и была добавлена по требованию Министерс~ва обороны для совместимое~и с будущими версиями языка Аба. Правильно построенные ложные утверждения совместимы в операции присваивания с любыми булевыми переменными.

Циклы что-если и лсчеиу-не управляются специальным условным оператором дане-если-не Х то!за у. С«- поддерживает сокрытие информации и, только среди дружественных классов, обмен сплетнями. Недружественные классы, заимствованные из лексикона языка Е!((е(, могут взаимно уничтожить друг друга путем заключения контрактов. Заметим, что дружественные отношения между классами являются нетранзитивными, непостоянными и не-Абелевыми. Механизмы простого и множественного наследования реализованы с использованием случайных мутаций. Правила лишения наследства [денаследование) подчиняются сложным официальным про~окопам. Помимо базовых, производных, виртуальных и абстрактных классов в С+- поддерживаются внугриугробные классы. В некоторых локальных версиях языка разрешен вывод полигамных и побочных классов.

Свободные связи между классами недопустимы, поэтому введены операции брака и раааоаа: брак(Родитель М1,Родитель Ж1]; //теперь можно выводить дочерние классы //определение класса МуВс!азз зс)азз Мусс!азз; рц)тйс Родитель М1, Родитель Ж1 //незаконнорожденный класс!! вс)азз уоцгВс!азз: рцЫ)с Роди~ель М1, Роди~ель Ж2 развод(Родитель М1, Родитель Ж1); брак(Родитель М1, Родитель Ж2); //теперь это по правилам зс1авз уоцгВс!азз: рыЫ!с Родитель М1, Роди~ель Ж2 Правила, задающие порядок приоритетов операций, могут быть временно отменены с помощью директивы компилятора()рга9ата оит аЬ известной как прагма Кбо ууба1 ! меап» (« Делай то, что я говорю»]. Язык устойчиво сопротивляется А)чБ)фикации. Девиз языка С+ — «Каждый сам для себя стандарт».

Ссылки. Из Ь. Кейу-Воо1)е, "ТПе Оеиуз А! ()~с1)опагу", А! Бхрег(, (Арп! 1991), 51. Перепечатано в Б. Кейу-Воо()е, "ТПе Согпрц1ег Соп1гатйс()влагу", М!Т Ргезв (1995). Воспроизведено с разрешения автора. 6.7. Задачи и упражнения 295 Краткий обзор языка. Язык Сч-ч- является производным от языка С. Основным отличием языка Сч.+ является наличие классов и механизма наследования объектов класса другими классами. При разработке языка Сч-ь руководствовались следующими тремя принципами: 1) использование классов не должно приводить к более медленному выполнению программ по сравнению с программами без классов; 2) программы на С рассматриваются как подмножество программ на Сч-ь, то есть добавление классов нс должно приводить к тому, что какие-либо свойства С нс будут вклгочены в Сч-ч-; 3) не должна снизиться эффективность выполнения программ. Но большей части все три цели были достигнуты.

Компилятор Сч-ч- способен компилировать большинство программ на С, хотя между этими языками все же существует некоторос несоответствие. Строгая типизация Сч-+ действительно более строгая, чем в С. В Сч-ь были добавлены некоторые зарезервированные слова Среди прочих изменений можно отметить добавление новой формы комментариев; дополнительно к С-комментариям /*...*! был добавлен их новый форматгггг, означающий, что все, что следует за символами гг/ до конца строки, является комментарием.

Также расширились возможности ввода н вывода за счет добавления функций обработки потоков с1п и соп1. Добавлены исклк>чсния, перегрузка операций н форма общего класса под названием шаблгои. б.б. Рекомендуемая литература Три классические статьи, в которых рассматриваются центральные концепции программирования — абстракция данных и сокрытие информации, — это 137), [51) и ~86!.

Определение и реализация различных форм абстрактных тинов данных было предметом изучения и темой многочисленных статей в 70-е гг. В 1977 г. на конференции ЛСМ 1122) были описаны языки С1Л), Л1.РНЛЕР и ЕБС).1Р, Первым широко признанным языком с выраженной возыожностьк> определения абстрактных типов данных стал язык Лс)а 157], хотя 5шайгайс опередил в этом отношении Ада почти на десять лет. Но Вп1а111ай стал приобретать статус одного из основных языков программирования только в последнее время, о чем мы расскажем в разделе 7.2А, В большинстве работ, посвященных созда| ~ ию компиляторов, исследукзтся стеки и стратегия статического распределения памяти (см, ссылки в главе 3). б.7.

Задачи и упражнения 1. Пусть у нас имеется связанное представление вектора Ч, как на рис. 6.1. Напишите алгоритм для определения местоположения компонента Чгй). Предполагается, что дескриптор имеет адрес а, его поле с указателем на первый компонент вектора в блоке дескриптора имеет сдвиг ~ и каждый компонент хранится в о~дельном блоке памяти.

В каждом блоке сдвиг поля указателя па слсдук>щий компонент равен 'х. Глава б Инкапсуляция Предположим, что объявление вектора У задано с использованием некоторого перечислясмого типа в качестве набора индексов Например, с1ааатуре - (ггеа». 5орп, зоолог, 5ею ог, Вгадоаге> гп аггау [С1ааатуре! оГ геа1. + Предложите подходящий способ представлспия в памяти вектора В (включая дсскриптор) и выведитс формулу доступа для вычисления местополо>кспия компонента Ч[> !. + Покажите, как изменится способ прсдставлепия и формула доступа, если У будст объявлен как у аггау [Зоп>ог. Вгадоа[е! оГ геа1 Приведитс формулу доступа для вычисления местоположения элемента матрицы Л[! . Л1, развернутой по столбцам, объявление которой выглядит слсдующим образом: А, аггау [[В, ВВ,, [В, .

ВВ,! Многие вычислспия с использованием матриц включа>от в себя последовательную обработку вссх элементов какого-либо столбца или строки. Обычно эта обработка реализована в впдс цикла по одному из индексов ! или ), в котором элементы матрицы А[1. В! обрабатываются последовательно по мсреувсличспия индекса на единицу. В таких случаях независимое вычисление!-значения для каждого элемента А[1. Я в каждом цикле очень неэффективно. Можно гораздо проще вычислить 1-значение злемсцта А[!,,Ц вЂ” через 1-значеппс элемента А[1 - 1, В! (в прсдположспни, что меняется индекс 1). Напишите формулу для такого рскурсивного вычисления адреса злсментов матрицы.

Обобщите эту формулу на случай массива с произволы п>й размерностью для цикла, в котором измспястся произвольный индекс этого массива. В языкс В!МВСй!РТ многомсрныс однородные массивы представлены как векторы указателей, которыс указыва>от на другис векторы, состоящие из указателей и т. д.

Количсство уровнсй этой структуры вскторов совпадает с размерностьк> исходного массива. Числовая и п.рица размером 3 х 4 представлсна векгором с громя укжтатсл ямп, каждый из которых указывает на вектор, состоящий из четырсх элементов. Для такого прсдставления предложите алгоритм доступа к элемснту А[1. В!.

Сравнитс относитсльпую эффективность использованияя памяти и лоступа к элсмен там массива между этим способом представленияия и обычным послсдоватсльным представленном массива. Рассмотрите этот вопрос как для матриц, так и для массивов более высоких размерностей. Для многомсрпых массивов: + прсдложитс способ создания дсскриптора для вскторных сечений, если нместся дескриптор всего массива; + сконструируйте дескриптор времени выполнения для двухмсрных сечсний (плоскостей в трехмсрном массивс), который позволял бы использовать такуа> же формулу доступа, как и для обычных матриц; + в случае произвольного двухмсрного квадратного массива (то ость массива А[п. п!) разработайте дескриптор для всктора, представляющего собой главную диагональ массива (то есть для вектора А[>, 1!).

6.7. Задачи и упражнения 297 7. Поскольку большая часть аппаратных средств компьютеров не обеспечива- ст непосредственную поддержку проверки соответствия значений индексов массива заданному диапазону при доступе к его компонентам, стоимость этой проверки, проводимой каждый раз при обращении к какому-либо компоненту массива, может оказаться достаточно высокой как в отношении времени выполнения, так и в отношении памяти, требуемой для хранения дополнительного кола. Выберите какой-либо известный вам язык программирования и определите для этого языка относительную стоимость (в отношении времени выполнения дополнительного кода и необходимой памяти) проверки индексов при доступе к компонентам двухмерной матрицы А(!,,Ц.

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

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

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

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