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

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

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

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

Однако имеется соглашение, по которому за последним символом строки помещается нуль-символ (~0). Транслятор С добавляет нуль-символ в ко- нец каждой строковой константы. Например, и конец строки «В конце этой строки стоит нуль-символ> при компиляции будет добавлен нуль-символ, тоесть при раз- мещении символов строки в массиь" в него будет добавлен еше один элемент, со- держаший нуль-символ.

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

Разные способы представле- ния строк предполагают и разные лопустимые операции работы с этими объектами. Существует множество разнообразных операций, применяемых к строкам. Не- которые наиболее важные операции перечислены ниже. 1. Конкатенация (объединение). Конкатенация — это операция, объединяющая две строки в одну длинную. Например, если знак ( ( обозначает конкатенацин>, то результатом выполнения операции "ВЕСЕК" ( / "НЕА0" будет строка "ВЕОЕКНЕА0" >, Болван.

— >>»ичеч. лчвс р«д. 218 Глава 5. Элементарные типы данных 2. Операции о>ппошеиий со строками. К строкам можно применять обычные опе- рации отношения (равно, больее-чев, веньке-чек), Как сказано в разде>лс 5.2А, базовое множество символ<>в упорядочено при помощи схемы сортировки. Эту схему можно применить и к строкам, в результате чего получится правило лексикографического (алфавитсого) упорядочения: строка А меньше строки В (то есть предшествует строке В), если первый символ в А меньше первого символа в В; если эти символы совпадают, то второй символ А меньше второго символа В и т. д. При этом иногда, если одна из сравниваемых строк длиннее, вторая удлиняется при помощи пробелов, чтобы их длины были одинаковыми.

3. Выбор поде>проки при помощи певиц>генного индекса. Обработка строковых данных часто вклгочает в себя выделение нз строки непрерывной подстроки. Например, строка может начинаться с некоторого количества пробелов или содержать слона, разделенш >с пробелами и знаками препинания. Для облегчения работы с подстроками во многих языках предусмотрена операция, позволяюп1ая выделить подстроку по указанным позициям ее первого и последнего символа в исходной строке пли по позиции первого символа и длине выделяемой подстроки. Например, оператор языка ЕОКТКА>ьг'ЛЕХТ - БТк(б: 101 присваивает переменной йЕХТ подстроку, состоящую из пяти символов строки 5Тк с шестого по десятый включительно.

Слгысл операции выбора подстроки иногда неочевиден, особенно если разрешено ее использовать с обеих сторон от символа операции присваивания (то есть соответствующая ей функция может возвращать как г-значсние, так н рзпачсние выделешгой подстроки, что позволяет присвоить выбрашюй подстроке новое значение). Рассмотрим следующее выражение языка ЕОКТКАН: 5ТЯ11 51 = 5ТЩ1 1+41 которое может быть использовано для того, чтобы передвинуть подстроку, которая начинается с позиции! и имеет длину 5, па место первых пяти позиций этой жс строки.

Если подстроки, которые задействованы в этом выражении, перекрываются, то требуется болыпая аккуратность в определении смысла этой операции. 4. Форма>пирование ввода-выводи. Исходное назначение операций пад строка- ми символов — помощь в форматировании данных для вывода или в разбиении форматированных данных ввода на более мелкие компоненты. В языках ЕО КТ КАК и С, например, предусмотрено большое количество операций, преследуюгцих эти цели. 5. Выбор подстроки на основе гопостпавления с образцом. Часто бывает так, что точная позиция требуемой подстроки неизвестна, но известно се положение по отношению к другим подстрокам. Например, возможно, мы захотим получить первый отличный от пробела символ строки, или последовательность символов после десятичной точки, или слово, следующее за слоном ТНЕ.

Опер щия сопоставления с образцом использует в качестве аргумента образепв специальную структуру данных, определян>щую вид искомой подстроки (например, ее длину или то, что она состоит из последовательности десятичных пифр), и, возможно, дру~ие подстроки, примыкающие к искомой (например, десятичная точка после искомой полстроки или последовательность 5.3.

Составные типы данных 219 предшествующих ей пробелов). Вторым аргументом операции сопоставления с образцом является сама строка символов, и которой будет производиться поиск требуемой подстроки, соответствующей заданному образцу, Мы уже встречались с операцией сопоставления с образцом и нашем обзоре языка Рег!, когда рассматривали регулярныс выражения (см. раздел 3,3.3). 6. Динамические строки. Значения строк могут быть как статическими, так и динамическими. Рог! является примером языка, и котором допускаются оба варианта. Строка 'САВВ' статическая, и оператор рт пс ' 1АВС ', цапсчатаст значение этой строки, то есть 1АВС.

Но строка "ТАВС" динамическая, и в результате выполнения оператора ргрпт "ЗАВС". сначала будет вычислено значение строки, которое равно значению строковой переменной 1АВГ, а потом оно уже будет напечатано'. Неограниченная длина, но содержимое размещается в блоках фиксированной длины Фиксированная длина Строки хранятся Строки хранятся Ш 10 и Е по 4 символа в слове с заполнением пробелами оставшихся А Т ! Н свободными байтов хранится в ее начале в блоках фиксированной длины — в одном слове содержится 4 символа, оставшиеся свободными позиции заполняются и абелами Т 1,Н Тгу,' р Переменная длина, ограниченная сверху Текущая нмаксимальная длины строки хранятся в начале строки Неограниченная длина,но содержимое размещается в блоках переменной длины Строка хранится как непрерывный массне символов.

Заканчивается нуль-сиыволоы Рис. 5.5. Представление строк а памяти Реализация. Каждый из трех описанных иышс способов представления символьных строк по-своему решщзустся и памяти компьютера, как показано на рпс. 5 5. Представление и памяти отдельных символов обсуждается и разделе 5 2 4. Предш вил си не для строк фиксированной длины имеет существенное значение, так как служит основой для храцсппя упакованного вектора символов (полробпее см. раздел 6.1.5), г(ля строк перемен пой длины с заданной максимальной длиной пред- В Ргп спинозы с срок а олннарных кавычках трак~ухгтся так, как онн а ~~ай запалы, ~огла как строки а авайаых кавычках — всего ашш, болг с упобная занять опара~гни шмгтанонкн в строку символов зпачспнн гкалнрных нсргьггннех н нгргнснных чаггтгвов.

— Примеч. науч ргд 220 Глава 5. Элементарные типы данных ставлеиие использует дескриптор, указываю<ций максимальную и фактическую длину строки, содержащейся в данном объекте. Дчя представлеиия неограничениых по длиис строк может использоваться либо связаи лая цепочка объектов дав иых фиксированной длины, либо непрерывный массив символов, Второй из уяомяиутых способов исцользустся в языке С и часто требует динамического управления ресурсами памяти во время выполнения программы. Обычно аппаратная часть поддерживает только самое простое представлецис— строки фиксированной длины, а для реализации остальных способов требуется црограммиое моделирование. Такие операции иад строками, как коикатецация, выбор подстроки и согюставлеиис с образцом обычно требуют полного программного модслироваиия.

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

Для этого язык должен црсдоставля и некоторые сцсциальиые возможности. В Элементарный тил даицых указатель (этот тип также иазывается ссылочлым). Объект данных указатель содержит ссылку иа мсстоцоложецие другого объекта данных (то сеть его йзиачсиис) или может солержать также цусгой указатель(обычно обозначаемый щ1 или ли<1). Указатели — втообычиые объекты лап цых, которые мо< ут быть как п рос гыми ц среме иль< ми, так и компонентами массивов и записей, 2. Олериция создалия объектов даццых фиксироваииого размера, таких как массивы, зашюи и злсмситарцыс объскгы.

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

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

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