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

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

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

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

Например, процедуру, выполнявшую сортировку целочисленных массивов, можно было написать только для одною зафиксированного диапазона значений инлексов. В стандарте языка Рааса! (1БО, 1982) предусматривалась лазейка лля решения этой проблемы — совместимые массивы (сопГоппапг аггауз). Эти массивы являются формальными параметрами, содержащими определения типа массива.

Рассмотрим следующий пример: ргооацига виж11вс(чаг вша: 1псе9ег; 11вс : аггау [1оиег .. оррег Ьпсе9ег] об Тпсе9ег); 5.5. Массивы 23! чек Тпоех : зптеаег; Ьеазп в паз: = 0; йок Тпаех := 1оиег ко цррег оо еож := ецж е 11а"[1поех] еп6 Вызов этой процедуры выглядит следуюшим образом: чак всокев : аккау [1..100] ок 1пге0егг хцгл11лл[ецж, лсогеэ) 5.5.4.

Количество индексов массива В языке ЕОКТКАХ! количество инлексов массивов не превышало трех. поскольку во время разработки языка основное значение придавалось эффективности. Конструкторы языка ЕОКТКАХ 1 нашли очень быстрый метод получения доступа к элементам массивов. размерность которых не превышала трех. Начиная с языка ЕОКТКА14[Ч. число возможных измерений массива было увеличено до семи, ио большинство современных языков не содергкат и такого ограничения. Причин для введения ограничений, сушествук1ших в языке ЕОКТКА]ч'.

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

что позволяет создавать многомерные массивы. Такая возлюжность является примером использования ортогональной структуры языка. Рассмотрим следуюшее объявление языка С: дпк шаг[5][с]г Это объяачение созлает целочисленную переменную пае, прелстааляюшую собой массив из пяти элементов. каждый из которых является массивом из четырех элементов. Раьтичие межлу этой переменной и матрицей другого языка, например, языка ЕОКТКА1Ч, ничтожно.

Пользователь практически всегла может игнорировать тот факт. по в действительности переменная г.ас не является матрицей, лишь синтаксис обрашения к отдельному элементу матрицы требует использования пар квадратных скобок. вылеляюших каждый индекс. 5.5.5. Инициализация массива Некоторые языки прелусматривают возможность инициализации массивов во время их размешения в памяти. В языке ЕОКТКАХ 77 вся память размещается динамически, таким образом, возможна инициализация во врел|я загрузки с использованием оператора АТА. В этом языке мы можем. например, получить слелуюшее: '~г~ З0 К ~ тсе (31 0АТА ' ЯТ /О, "-, «/ Массив ЫЯТ инициатизируется значениями из списка, заключенного между символами Глава 5. Типы данных Языки А]Ч5! С и С++ также позволяют инициачизировать их массивы.

но с одной новой особенностью. Например. в объявлении З.пг 11вг [' .= (4, 5, 7, 83]; компилятор сам устанавливает длину массива. Это удобно. но не проходит даром: почобная инициализация не дает системе обнар)живать такие ошибки программирования. .ак случайное использование значения. выходящего за пределы списка. Символьные строки в языках С и С-' реачизованы как массивы сЬаг. Эти массивы чогут быть инициализнрованы строковыми константами; сЬаг гапе [] = "Г есс(1е" х)ассив папе будет солержать восемь элементов. поскольку все строки завершаются .имволом нуля. неявно лобавляемого системой к строковым константам.

Массивы строк в языках С и С++ также могут иннциализироваться строковымн лите",алами, В этом случае массив представляет собой массив указателей на символы. На.ример, сЬаг *папев [] = !"ВоЬ", " ахе", тйагсуе"]; )тот пример иллюстрирует природу символьных литералов языков С и С++. В предыз) шем примере лля инициализации символьного массива с именем папе использовачся строковый литерал, представляющий собой массив типа сЬаг. Однако в следующем за чим примере (папел) литерачы представляют собой указатели на символы. поэтому и .ам массив является массивом указателей на символы.

Например, напев [С] является ) казателем на букву ' В ' в массиве литеральных символов, содержащем символы ' В '. ' э', 'Ь' н символ нуля. В языках Разса! и Мог[о[а-2 инициализация массивов в разделе объявления программы невозможна. В языке Ада предусмотрены лва механизма инициализации массивов в операторе бъявления: перечисление их в том порядке. в котором они лолжны храниться в памяти, л непосредственное присваивание значений соответствующим индексным позициям с помощью оператора => (в языке Аба называемого стрелкой). Рассмотрим следующие команды: ЕТВТ : аггау (1..5) оЕ 1НТЕСЕВ := (1, 3, 5, 7, 9)з В()ИСН : аггау (1..5) ос 1БТЕСЕН := (1 => 3, 3 => 4, окЬагв => О); В первом операторе все элементы массива " 1ВТ содержат инициализированные значечия, присвоенные ячейкам массива в порядке нх появления.

Во втором операторе первый и третий элементы массива инициачизируются с помощью прямого присваивания, а опеэатор оеЬагв использован лля инициализации остальных элементов. Такие наборы значений, заключенных в круглые скобки. называются составными регулярными значениями (айбгейа(е та(цез). 5.5.6. Операции иад массивами Операцией над массивом называется действие, при выполнении которого массив считается елиным целым. В некоторых языках, например, РО[(ТНАХ 77, операции над массивами не предусмотрены. 233 5.5.Мсссивы В языке Ада возможны присваивания массивов, в том числе и те, в которых правая часть является множеством, а не массивом. В этом языке допустима также конкатенация. задаваемая знаком ь.

Конкатенация определена между двумя одномерными массивами и между одномерным массивом и скалярной величиной. Помимо этих операций практически все типы языка Ада содержат встроенные операторы отношений равенства и неравенства. В язык РОйТ)(АХ 90 включено значительное число операций над массивами, названных элементными (е1ешепга1), поскольку они представляют собой операции над парами элементов массива. Например, оператор сложения (ь).

помещенный между двумя массивами, приводит к созданию массива, состоящего из сумм соответствующих пар элементов двух массивов. Операторы присваивания, отношений. арифметические и логические операторы — все они перегружены для массивов любых размеров и видов. В языке РОКТКАХ 90 также есть встроенные, или библиотечные, функции, выполняющие операции умножения, транспонирования матриц и векторного произведения. Массивы и операции над ними являются основным компонентом языка АР(.; этот язык — самый мощный из когда-либо разработанных языков обработки массивов. Тем не менее, вследствие его относительной неизвестности и отсутствия влияния на последующие языки мы ограничимся беглым ознакомлением с его операциями над массивами.

В языке АР) для векторов (одномерных массивов) и матриц определены четыре основные арифметические операции, так же, как и для скалярных операндов. Наприл1ер. выражение А + В разрешено как для скалярных величин А и В, так и для векторов или матриц. Язык АР(. также содержит набор унарных операторов для векторов и матриц„некоторые из которых приведены ниже (и обозначает вектор, а Н вЂ” матрицу).

Фц обращает элементы вектора ч ФН обращает столбцы матрицы М ВН обращает строки матрицы И ЯН транспонирует матрицу Н (строки становятся столбцами и наоборот) ~+М инвертирует матрицу И В языке АР(. есть несколько особых операторов, принимающих в качестве операндов другие операторы. Одним из них является оператор скалярного произведения. указываемый точкой (.).

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

содержащий попарные произведения элементов векторов А и В. Результатом оператора А +.Х В 234 Глава 5. Типы данных является скалярное произведение объектов А и В. Если А и В являются матрицами. то это выражение залает матричное умножение матриц А и В. Особые операторы языка АРЕ фактически являются функциональными формами, рассматриваемыми в главе 14. 5.3.У. Сечения Сечением (яйсе) массива называется некоторая подструктура массива. Например, если А — матрица, то одним из возможных сечений булет первая строка матрицы А, то же относится и к последней строке или первому столбцу. Важно понимать, что сечение не является новым типом данных.

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

Поскольку сечение является подструктурой массива. то обращение к нему требует меньшего числа выражений с индексами, чем обращение ко всему массиву. Каким-то образом пропущенные выражения с индексами должны быть обозначены так. чтобы существующие выражения были связаны с верными индексами. Пропущенный индекс или индексы, входящие в обращение к сечению, иногда указываются звездочками. Рассмотрим следующие объявления в языке ГОКТКАХ 90. 1ИТЕЯЕК НЕСТОВ(1: 10), ИАТ (1: 3, 1: 3), СВВЕ (1: 3, 1: 3, 1: 4) Объект ЧЕСТОК (3: б) является четырехэлементным массивом, содержащим с третьего по шестой элементы вектора ЧЕСТОВ, объект ИАТ(1: 3, 2) является обращением ко второму столбцу матрицы ИАТ; объект ИАТ (3, 1: 3) является ссылкой на третью строку матрицы ИАТ. Все эти обращения могут использоваться как одномерные массивы.

Ссылки на все сечения массива интерпретируются как массивы оставшейся размерности. Таким образом, ссылка на сечение ССВЕ(1: 3, 1: 3, 2) вполне может быть присвоена матрице ИАТ. Сечения могут также использоваться как целевые объекты операторов присваивания. Например, одномерный массив может присваиваться сечению матрицы. Примеры сечениЯ массивов ИАТ и СОВЕ приведены на рис. 5.4. В языке ГОКТКА)ч 90 могут задаваться и более сложные сечения.

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

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

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

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