Управление памятью

Автор: Пользователь скрыл имя, 04 Марта 2013 в 20:04, доклад

Краткое описание

Дин.перем.-это часть ОПамяти,доступная в момент работы программы.Все используемые до этого переменные явл.статистическими.Указание типа в данном разделе предполагает выделение соответствующ.размера под переменную в момент запуска программы,при этом дин.переменные предполаг.выделение области памяти под них по желании пользователя,т.е в опред.момент работы программы.

Файлы: 1 файл

Документ Microsoft Office Word.docx

— 41.98 Кб (Скачать)

1)Дин.перем.-это часть ОПамяти,доступная в момент работы программы.Все используемые до этого переменные явл.статистическими.Указание типа в данном разделе предполагает выделение соответствующ.размера под переменную в момент запуска программы,при этом дин.переменные предполаг.выделение области памяти под них по желании пользователя,т.е в опред.момент работы программы.Описание и доступ к динамич.переменным производится через указатели. Любой указатель связан с некоторым типом данных,поэтому наз.типизированным.Для опред-я указателя исп.спец.символ ^.Пр-р Var x:^integer,x(указ-ль ссылка) y:^real;z:^array [1..100] of char; Доступ к таким переменным осущ. след.записью: x^:=15  y^:=315-х;z^[10]:=’a’;т.к дин.память чаще всего исп.для хранения и обработки массивов большой размерности,то для организации таких массивов исп.списки.Список-это последоватльность эл-тов в который каждый эл-т списка имеет указ-ль на соседний эл-т,что позволяет просматривать,доставлять и удалять эл-ты по мере необходимости.Кол-во ссылок может быть разное,при этом выдел. линейн. и кольцевые списки с 1ой или 2мя связями.Для реализации списочной структуры исп. след.форма записи:Type p=^t,t=record;info:integer;next:p end;

 

4)В качестве наиболее  распростр. структур на базе лин.однонапр.списков исп.стек и очередь.Любая из указанных структур  характерна использованием только 2 операций:добавление и удаление эл-та из структур.Стек.Данная структура основана на работе со списком,для которого выполн.правило:эл-т,пришедший последним,извлекается первым. Операции, выполняемые над стеками, имеют свои спец. названия: добавление элемента в стек (push) и удаление из стека (pop).  Если элемент i помещается в стек S, то вып. операция push(s,i). Операция i=pop(s) удаляет верхний элемент из стека и присвоит его значение переменной i.Заметим, что число элементов в стеке не известно (по определению стека). Поэтому при помещении нового элемента в стек не должно возникать никаких трудностей. В случае, если стек содержит 1 элемент и этот элемент удаляется из стека, то в результате выполнения этой операции ни 1 элемент не содержится больше в стеке. Такой стек наз. пустым. Очевидно, что операция удаления элемента из стека не может быть выполнена для пустого стека. Поэтому перед тем как вып. операцию удаления из стека необходимо убедиться в том, что стек не пустой. Для этого введем спец. операцию empty(s). Эта операция проверяет явл. ли стек пустым. Результатом выполнения этой операции будет логическая переменная, которая принимает значение “истина”, если стек пуст, и значение “ложь” в противном случае.

5) В качестве наиболее распростр. структур на базе лин.однонапр.списков исп.стек и очередь. Очередью наз. дин. структура, у которой в каждый момент времени доступны 2 эл-та: 1ый и последний. Из начала очереди эл-ты можно удалять, а к концу - добавлять.Последовательность обработки эл-тов очереди хорошо отражают аббревиатуры LILO (Last In Last Out - "последним вошел, последним вышел") и FIFO (First In First Out - "первым вошел, первым вышел").Реализовать очередь также можно при помощи массива, хотя здесь уже не удастся полностью избежать перемещения его компонент. Пусть k-я компонента массива хранит начало очереди, а (k+s)-я - ее конец. Тогда можно приписать новый элемент очереди в (k+s+1)-ю компоненту массива, а при удалении элемента из начала очереди ее голова сдвинется в (k+1)-ю компоненту. В процессе работы может оказаться, что вся очередь  "сдвинулась" к концу массива, и ее снова нужно вернуть к началу. В этом случае и потребуется s перемещений компонент массива (s - это текущая длина очереди).Операции.Для очереди должны быть определены следующие операции:

empty(<нач_очереди>):boolean

- проверка очереди на пустоту;

add(<кон_очереди>,<нов_эл-т>):<кон_очереди>

- добавление элемента  в конец очереди;

take_beg(<нач_очереди>):<тип_эл-тов_очереди>

- считывание значения  первого элемента;

take_end(<кон_очереди>):<тип_эл-тов_очереди>

- считывание значения  последнего элемента;

del(<нач_очереди>):<нач_очереди>

- удаление элемента из  начала очереди.


6)Ян Лукашевич.Идея данного процесса состоит в преобразовании исходного арифм.выражения в форму записи,где исключ.скобки,а порядок следования операций становится обратным.Полученное таким образом выр-е явл.простым и очередная операция вып. над 2мя предыдущими операндами в порядке их следования.При этом необходимо соблюдать след.правило формир.обратной польской записи.0)для работы исп.2 стека t1 t2. Выражение просматрив.слева-направо и все операнды записыв.в стек t1 а операция в стек t2 согласно их приоритетам.1)В стек t2 операция помещается если ее приоритет>приоритета последней записанной туда операции.Если это неверно то поочередно все операции у которых приоритет< либо =записываемой из стека t2 переписыв. в стек t1.Если в стеке t2 не осталось ни 1ой операции с меньшим приоритетом то процесс перезаписи останавливается когда обнаружено дно стека.Приоритет */ -3  +-  -2  ( -1 =0  2)Левая скобка записывается в стек t2без анализа приоритета. 3)Если в стек t2записыв. ) то все операции до лев.скобки переписыв. из t2 в t1.Сама левая скобка извлекается но не переписывается. 4)При записи знака= в стек t2 все расположенные в нем операции будут переписаны в стек t1,где располагается сформированная обратная польская запись.При выводе все операции в стеке располагаются в обратном порядке следования.

7) В практике программ.инженерии выдел.неск.основн.подходов программировании: -процедурный(алгоритм,шаги) – логич.программ.  –функционал.   –обьектно-ориентир.программ.Развитие программ.техники привело к созданию методов ООП,направленных на автоматизацию задач при разработке больших и сложных систем,чаще всего явл-ся невычислителтными а приложенными к предметной областиДанные методы обеспеч.еще большую структурность,модульность и абстракцию данных.ООп системы более открыты для редактирования,легче поддаются модернизации и развитию. ОО методолгия основана на представлении программы в виде совокупности обьектов,каждый из которых явл. реализацией опр.класса.,а классы образуют иерархию на принципах назледования.

 

 

8)Мод.программ.-это часть структурного подхода к программ. появивш.в начале 60-х гг.Цель-упрощение процесса обработки программ,увеличение надежности и качества.Модуль-это отдельная функционально-законченная программная единица являющаяся частью системы и обладающ. рядом св-в.Любой модуль программирует,компилируется и отлаживается отдельно.Самостоят.исполн.модуль не может при этом из 1ого модуля могут вызыв.другие.Св-ва:1.Каждый модуль реализует 1у ф-цию,т.е явл-ся функционально-законченным. 2.Размер модуля должен быть небольшим(100операторов).3.Модуль имеет 1 вход и 1 выход. 4.Модуль вызывается как другие модулями так и операц.системой. 5.Любой модуль возвращает управление тому кто его вызвал.

 

 

9) Модуль - это автономно компилируемая программная единица, включающая в себя различные компоненты раздела описаний (типы, константы, переменные, процедуры и функции) и, возможно, некоторые исполняемые операторы инициирующей части.Наличие модулей в Turbo Pascal позволяет программировать и отлаживать программу по частям, создавать библиотеки подпрограмм и данных, воспользоваться возможностями стандартных модулей, практически неограниченно увеличивать кодовую (содержащую коды команд) часть программы.Модуль содержит описания типов данных, переменных и других объектов, а также подпрограммы, которые используются в различных программах. Подпрограмму имеет смысл включать в состав модуля в том случае, когда она реализует действие, которое приходится выполнять достаточно часто. Подпрограммы, входящие в модуль, можно написать, отладить и откомпилировать один раз, а использовать многократно.Модули представляют собой прекрасный инструмент для разработки библиотек прикладных программ и мощное средство модульного программирования. Важная особенность модулей заключается в том, что компилятор Турбо Паскаля размещает их программный код в отдельном сегменте памяти. Максимальная длина сегмента не может превышать 64 Кбайта, однако количество одновременно используемых модулей ограничивается лишь доступной памятью, что дает возможность создавать весьма крупные программы.Доступ к описаниям, функциям и процедурам модуля обеспечивает оператор использования Uses, в котором указывается имя модуля. Этот оператор размещается в разделе описаний программы, сразу после заголовка. Если в программе используется не один модуль, а несколько, необходимо указать имена всех модулей, перечислив их через запятую. Исключением является модуль System, ссылка на который необязательна. Этот модуль содержит, в частности, процедуры файлового ввода/вывода, процедуры и функции для работы со строками и некоторые другие.Модуль начинается заголовком unit unit_name;где unit_name – имя модуля, которое выбирается в соответствии с правилами Паскаля. Файл, содержащий модуль, обязан иметь то же имя, что и модуль. Модуль имеет следующую структуру: Unit module_name; Interface; Интерфейсная секция; Implementation; Секция реализации; Секция инициализации.

 

11)В практике программ.инженерии выдел.неск.основн.подходов программировании: -процедурный(алгоритм,шаги) – логич.программ.  –функционал.   –обьектно-ориентир.программ.Развитие программ.техники привело к созданию методов ООП,направленных на автоматизацию задач при разработке больших и сложных систем,чаще всего явл-ся невычислителтными а приложенными к предметной областиДанные методы обеспеч.еще большую структурность,модульность и абстракцию данных.ООп системы более открыты для редактирования,леге поддаются модернизации и развитию. ОО методолгия основана на представлении программы в виде совокупности обьектов,каждый из которых явл. реализацией опр.класса.,а классы образуют иерархию на принципах наследования Из чего следует 1.ООП в кач-ве конструкции программ исп.объекты а не алгоритмы. 2.Каждый объект явл.реализацией какого-то класса 3.Классы ориентированы в иерарх.структуру. 4.ОО подход явл основой .

 

 

12) В практике программ.инженерии выдел.неск.основн.подходов программировании: -процедурный(алгоритм,шаги) – логич.программ.  –функционал.   –обьектно-ориентир.программ.Развитие программ.техники привело к созданию методов ООП,направленных на автоматизацию задач при разработке больших и сложных систем,чаще всего явл-ся невычислителтными а приложенными к предметной областиДанные методы обеспеч.еще большую структурность,модульность и абстракцию данных.ООп системы более открыты для редактирования,леге поддаются модернизации и развитию. ОО методолгия основана на представлении программы в виде совокупности обьектов,каждый из которых явл. реализацией опр.класса.,а классы образуют иерархию на принципах назледования Из чего следует 1.ООП в кач-ве конструкции программ исп.объекты а не алгоритмы. 2.Каждый объект явл.реализацией какого-то класса 3.Классы ориентированы в иерарх.структуру. 4.ОО подход явл основой ООП и вкл.след.принципы. Абстрактирование-выдел.сущетсв.хар-к.Ограничение доступа-доступ к внутр.структ.объекта ограничен.Модульность-разделение программ на неск.модулей.Типизация ограничения препятств.замене обьектов. Параллелизм-обработка одновр.выполняемых программ. Истойчивость-св-ва объекта существовать и после завершения программы.

 

13)В общ.случае под объектом понимают некотор.реальность мира:апельсин,склад,чел.В языке Паскаль сущ.тип данных похожих на объект-это запись.type people=record <имя поля>:<тип>…end;  type people=object (<прородитель >) <данные><методы>Объект предст.собой структуру фиксир.числа компонентов,каждый из которых может явл.полем содерж.данные. Св-ва это данные, переменные.Методы-процедуры и ф-ции,некотор.исп.при обработке этих данных.

 

14) Инкапсуляция-объединение данных вместе с процедурами и ф-циями при их обработке, путем использования нового типа данных-объект.. В об-ор программ. код и данные могут быть объединены вместе; в этом случае говорят, что создаётся так назыв. "чёрный ящик". Когда коды и данные объединяются таким способом, создаётся объект (object). Другими словами, объект - это то, что поддерживает инкапсуляцию.Внутри объекта коды и данные могут быть закрытыми (private). Закр. коды или данные доступны только для других частей этого объекта. Т.о., закр. коды и данные недоступны для тех частей программы, которые сущ. вне объекта. Если коды и данные явл. открытыми, то, несмотря на то, что они заданы внутри объекта, они доступны и для других частей программы. Характерной явл. ситуация, когда откр. часть объекта исп. для того, чтобы обеспечить контролируемый интерфейс закрытых эл-тов объекта.На самом деле объект явл. переменной опр. пользователем типа. Может показаться странным, что объект, который объединяет коды и данные, можно рассматривать как переменную. Однако применительно к объектно-ориентированному программированию это именно так. Каждый элемент данных такого типа явл. составной переменной.

 

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

 

16)Полиморфизм-использование имени некоторого одноименного действия всеми объектами в иерархии,но подходящим именно для него способом.  Целью полиморфизма, применительно к объектно-ориентированному программированию, является использование одного имени для задания общих для класса действий

 

17)при обнаружении  вызова к-л метода кампилятор ищет соотв.метод в пределах текущ. объектного типа.Если метод не обнаружен продолжается его поиск в пределах непосредств.прородительского типа.Если метод обнаружен,то вызываются методы, созданные в том объектном типе, где он обнаружен. Если метод опять не обнаружен то вып.дальнейший его поиск по иерарх.структуре вверх.Если указанный метод не обнаруж.нигде то выдается сообщение об ошибке.

 

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

 

19)В описании  объектных типов,где есть вирт.методы должен обяз.присктствовать спец.метод-конструктор,задача которого устан.св-ва объектн.типа.но в момент вызова конструктора устанавл.связь между объектом,вызыв.этот конструктор и таблицей вирт правил этого объектного типа.Вызов конструктора вып до вызова первого из вирт.правил,иначе возник.тупиковая ситуация.Крнструктор обозн.спец.словом Constructor.Кроме конструкторов при организации объектов исп.методы,позволяющие удалить объект и соотв.таблицу вирт.правил из динамики.Данный метод имеет название Done.Удаление динам.объекта предст.собой не просто освобожд.памяти,а и обязат.удаление структур данных на котор.есть ссылки в этом объекте.И процесс удаления предполаг.выполнение корректн.действий над объектом.Поэтому диструктор(destructor)done находит размер соотв.объектного типа и передает его в процедуру.Dispose,который и завершает удаление объекта.

Информация о работе Управление памятью