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

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

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

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

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

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

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

5.3.3. Файлы и ввод-вывод Файл — зто структура данных, обладающая двумя особенными свойствами. Е Обычно она располагается на каком-либо внешнем устройстве хранения (магнитная лента или диск, например), и, следовательно, ее размер может быть значительно больше, чем размеры других типов структур данных. 2. Ее время жизни может значительно превышать время выполнения програмл1ы, создавшей ее, Наиболее распространенным типом файлов являются последовательные файлы, но во многих языках также используются файлы прямого доступа и индексно- 224 Глава 5. Элементарные типы данных последователь>сь>е файлы. Две основные задачи, которые выполняют файлы, достаточно очевидны — это ввод и вывод информации, то сеть связь с внешней операционной срсдс>й (см. главу 1), и временное хранение данных в том случае, если недостаточно ресурсов быстродействую>цей памяти. Колшоненты файла часто называются записялси, по в нашей книге мы стараемся нс употреблять этот термин в таком смысле, чтобы нс вносить путаницу с записями, которые являются специфической структурой данных, обсуждаемой в разделе 6.1.6.

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

Кроме того, ооычно не допускаются в качестве компонентов файлов структуры, представляющие собой связанные цепочки объектов или вкл>очаю>цпс значения указателей, потому что по завершении выполнения программы файл остается, а значения указателей лишаются смысла. Когда впоследствии данные считыва>отея из файла, ячеГ>ки памяти, на которые ссылак>тся указатели, вероятно, будут запяты под другие объекты.

Для ввода и вьшода данные обычно представляются в символьном виде. Компонентами файла в таком случае становятся отдельнь>е символы, а сам файл называется текстовым фа>йсолс, в Рааса!, например, сто обозначают гехгй(е. В болышинстве языков для текстовых файлов предусмотрены дополнительные операции ввода-вывода помимо обычных операций над файлами.

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

— Прнчеч. науч ред. 5.3. Составные типы данных 225 цией доступа является доступ к компоненту, следующему непосредственно за ука- зателем, то есть считывание этого компонента. В атом режиме не допускается операций по присваиванию новых компонентов или новых значений существующим компонентам. Спецификация. Основные операции над последовательными файлами таковы. Е 2. 3. 5. Оглкрытие. Как правило, прежде чем как-либо использовать файл, сто нужно открыть. Операция открытия получает в качестве параметров имя файла и режим доступа (чтения или записи).

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

В режиме записи операционная система получает указание создать новый пустой файл или, если файл с таким именем уже существует, уничтожить всю содержащуюся в нем информацию, так чтобы он стал пустым. Указатель текущей позиции устанавливается в начало этого пустого файла. Обычно в языке предусмотрен явный оператор открытия файла, который следует выполнить перед любыми манипуляциями с содержимым файла. В Рааса), например, имеется процедура гезе<, которая открывает файл в режимее чтения, и процедура ген<1 ~е, которая открывает файл для зап иси. И ногда в языке реализована неявная операция открытия, которая выполняется при первой попытке прочитать или записать в файл. Чтение.

Операция чте«ия передает содержимое текущего компонента файла (который обозначен указателем текущей позиции) в определенную переменную программы. Эта передача обычно определена с той жс семантикой, что и операция присваивания компонента файла переменной программы. Зались. Операция записи создает новый компонент в текущей позиции файла (зто всегда конец файла) и передает содержимое программной переменной этому новому компоненту. Опять-таки зта передача обычно также определяется как некоторая форма операции присваивания. Проверка конца <рийла. Операция чтения не может быть выполнена, если указатель текущей позиции дости< конца файла.

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

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

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

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