Главная » Просмотр файлов » В.Г. Абрамов, Н.П. Трифонов, Г.Н. Трифонова - Введение в язык Паскаль

В.Г. Абрамов, Н.П. Трифонов, Г.Н. Трифонова - Введение в язык Паскаль (1107618), страница 55

Файл №1107618 В.Г. Абрамов, Н.П. Трифонов, Г.Н. Трифонова - Введение в язык Паскаль (В.Г. Абрамов, Н.П. Трифонов, Г.Н. Трифонова - Введение в язык Паскаль) 55 страницаВ.Г. Абрамов, Н.П. Трифонов, Г.Н. Трифонова - Введение в язык Паскаль (1107618) страница 552019-04-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

ЯКОВЛЕВСЕРГЕЙАНДРЕЕВИЧ*16783**400. ЯНОВАЛЕКСЕЙГЕННАДЬЕВИЧ*13985**. . . . *************************************************************ВСЕГО ПРИНЯТО 400 СТУДЕНТОВГЛАВА13ССЫЛОЧНЫЕ ТИПЫДо сих пор мы рассматривали только статические программные объекты.Этим термином обозначаются объекты, которые порождаются непосредственно перед выполнением программы, существуют в течение всего времени ее выполнения и размер значений которых (в смысле объема машинной памяти, необходимой для их размещения) не изменяется по ходу выполнения программы. Статические объекты порождаются с помощьюсоответствующих им описаний.

Например, описание переменной х в разделепеременныхvarх:arrayС1..10Эof real;к а к раз и свидетельствует о том, что в программе вводится в употребление(порождается)статическая переменная регулярного типа (массив),значением которой может быть упорядоченная последовательность из десяти вещественных чисел.Поскольку статические объекты порождаются до выполнения программы и размер их значений известен заранее, то место в памяти машины,необходимое для хранения их значений, можно выделить еще на этапетрансляции исходного текста программы на язык машины.Обратим внимание на следующее обстоятельство. В программе, записанной на алгоритмическом языке, ссылка на программные объекты осуществляется путем указания их имен, т.е. считается, что по имени осуществляется непосредственный доступ к объекту.

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

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

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

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

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

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

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

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

Синтаксически задание ссылочного типа определяется следующим образом:{ задание ссылочного типа >:: = t < имя типа >где стрелка t — это признак ссылочного типа, а (имя типа) — это имя либостандартного, либо ранее описанного типа значений. Значениями переменных определенного таким образом ссылочного типа могут быть ссылки надинамические объекты, причем только того типа, имя которого указанов задании после стрелки. Здесь же обратим внимание на тот факт, что в задании ссылочного типа после стрелки может фигурировать только и м ятипа динамического объекта, но не непосредственное его задание.Переменные ссылочного типа вводятся в употребление обычным путем,с помощью их описания в разделе переменных, а их тип тоже определяетсялибо путем непосредственного задания типа в описании переменных, либопутем указания имени ранее описанного типа, напримерtypeмассив-аггау С 1..1003 of integer;динмас= tMaccHB;varр:tinteger;q:tchar;Рабмас:динмас;В силу этих описаний значением переменной р может быть ссылка на динамический объект целого типа, значением переменной q — ссылка на динамический объект литерного типа, а значением переменной Рабмас ссылка на динамический объект, значением которого является массив изста целых чисел.

У всех этих статических ссылочных переменных есть однаобщая черта — их значения указывают место в памяти соответствующегодинамического объекта, поэтому переменные ссылочного типа часто называют указателями.Связь указателя с объектом схематично можно изобразить следующимобразом:ОбъектНа этой схеме звездочкой изображено значение указателя р, а стрелка,исходящая из этой звездочки, отражает тот факт, что значением указателяявляется ссылка на объект, посредством которой он и доступенв программе.В некоторых случаях возникает необходимость в качестве значения указателя принять такую ссылку, которая не связывает с данным указателемникакого объекта, т.е.

"пустую" ссылку. Такое значение в паскале задаетсяслужебным словом nil и принадлежит любому ссылочному типу. Схематично результат выполнения оператора присваивания р : = nil можно изобразить следующим образом:QТеперь рассмотрим вопрос о том, как же порождается сам динамический объект. Дело в том, что после введения в употребление ссылочнойпеременной в разделе описаний, она не ссылается ни на какой программный объект и даже не имеет в качестве своего значения пустойссылки nil.

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

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

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

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