Скачать презентацию Программирование и основы алгоритмизации Лекция 5 Указатели Скачать презентацию Программирование и основы алгоритмизации Лекция 5 Указатели

L5.pptx

  • Количество слайдов: 26

Программирование и основы алгоритмизации Лекция 5 Программирование и основы алгоритмизации Лекция 5

Указатели. Освобождение памяти • Процедура Dispose не освобождает память явно, а передает указание объекту Указатели. Освобождение памяти • Процедура Dispose не освобождает память явно, а передает указание объекту Memory. Manager

Указатели • Передача параметров в функцию – По ссылке • С использованием ключевого слова Указатели • Передача параметров в функцию – По ссылке • С использованием ключевого слова var – По значению

Классы • Ссылочный тип данных • При выполнении операции присваивания копируется только ссылка на Классы • Ссылочный тип данных • При выполнении операции присваивания копируется только ссылка на адрес в памяти

Классы как ссылочный тип • var My. Var: TMy. Class; Выделена ли память? Классы как ссылочный тип • var My. Var: TMy. Class; Выделена ли память?

Классы как ссылочный тип • My. Var. Create; //выделение памяти • My. Var. Free; Классы как ссылочный тип • My. Var. Create; //выделение памяти • My. Var. Free; //Освобождение памяти

Классы как ссылочный тип • Объявление объектной переменной некоторого типа. • Создание объекта вызовом Классы как ссылочный тип • Объявление объектной переменной некоторого типа. • Создание объекта вызовом метода конструктора класса. • Использование объекта по назначению. • Освобождение объекта. – FREE (можно вызывать несколько раз у одного и того же объекта) • Or – Destroy

Классы и Структуры • Структура так же как и класс может иметь поля, но Классы и Структуры • Структура так же как и класс может иметь поля, но не имеет методов • Структура не является ссылочным типом данных Type Customer=record; Name: string; Age: integer; end;

Свойства • Обращение к свойствам происходит так же как и к полям. • Свойства Свойства • Обращение к свойствам происходит так же как и к полям. • Свойства в отличие от полей не хранят данные, а управляет данными посредством операций чтения и записи

Свойства type TDelimited. Reader = class FActive: Boolean; procedure Set. Active(const AActive: Boolean); property Свойства type TDelimited. Reader = class FActive: Boolean; procedure Set. Active(const AActive: Boolean); property Active: Boolean read FActive write Set. Active; end;

Свойства • READ-only свойства • WRITE-only свойства Свойства • READ-only свойства • WRITE-only свойства

Интерфейс семантическая и синтаксическая конструкция в коде программы, используемая для специфицирования услуг, предоставляемых классом Интерфейс семантическая и синтаксическая конструкция в коде программы, используемая для специфицирования услуг, предоставляемых классом или компонентом. Интерфейс = Объект – Реализация

Интерфейсы могут содержать свойства и методы. Интерфейсы не могут содержать поля и реализацию методов. Интерфейсы могут содержать свойства и методы. Интерфейсы не могут содержать поля и реализацию методов. Интерфейс является ссылочным типом данных

Интерфейс Type IText. Reader = interface function Next. Line: Boolean; property Active: Boolean; end; Интерфейс Type IText. Reader = interface function Next. Line: Boolean; property Active: Boolean; end;

Интерфейс var career_1: ICareer; career_2: ICareer; begin career_1: =Mts. Create; career_2: =Megafon. Create end; Интерфейс var career_1: ICareer; career_2: ICareer; begin career_1: =Mts. Create; career_2: =Megafon. Create end;

Интерфейс • Классы реализуют (имплементируют) интерфейс • Класс может реализовывать несколько интерфейсов Интерфейс • Классы реализуют (имплементируют) интерфейс • Класс может реализовывать несколько интерфейсов

Список Type List. Item=class(TObject) Data: string; next: List. Item; End; Список Type List. Item=class(TObject) Data: string; next: List. Item; End;

Список • Указатели – Head – Current Список • Указатели – Head – Current

Список: создание procedure Create. List(data: string) begin If head=nil then begin head: =Data. Item. Список: создание procedure Create. List(data: string) begin If head=nil then begin head: =Data. Item. Create; head. Data: =data head. Next: =nil; end;

Список Добавление procedure Add. List. Item(data: string) var tmp: List. Item; begin if head=nil Список Добавление procedure Add. List. Item(data: string) var tmp: List. Item; begin if head=nil Create. List(data); else begin current: =head; while current. next<>nil do current: =next; tmp: =List. Item. Create(); tmp. data: =data; tmp. Next: =nil; current. Next: =tmp; end;

Список: удаление procedure Delete. List() var tmp: List. Item; Begin current: =head; while current<>nil Список: удаление procedure Delete. List() var tmp: List. Item; Begin current: =head; while current<>nil do begin tmp: =current; current: =current. Next; tmp. Free(); end;

Список Поиск function Search(data: string): string Var tmp: List. Item; begin current: =head; while Список Поиск function Search(data: string): string Var tmp: List. Item; begin current: =head; while current. Data<>data current: =current. next; result: =current; end;

Стек • Стек — структура данных, в которой доступ к элементам организован по принципу Стек • Стек — структура данных, в которой доступ к элементам организован по принципу LIFO ( last in — first out, «последним пришёл — первым вышел» ). Чаще всего принцип работы стека сравнивают со стопкой тарелок: чтобы взять вторую сверху, нужно снять верхнюю.

Стек 5 4 PUSH 5 4 4 3 3 2 2 1 1 POP Стек 5 4 PUSH 5 4 4 3 3 2 2 1 1 POP

Очередь — структура данных с дисциплиной доступа к элементам «первый пришёл — первый вышел» Очередь — структура данных с дисциплиной доступа к элементам «первый пришёл — первый вышел» (FIFO, First In — First Out). Добавление элемента (принято обозначать словом enqueue — поставить в очередь) возможно лишь в конец очереди, выборка — только из начала очереди (что принято называть словом dequeue — убрать из очереди), при этом выбранный элемент из очереди удаляется.

Очередь 5 4 en. Queue 5 3 4 2 3 1 de. Queue 2 Очередь 5 4 en. Queue 5 3 4 2 3 1 de. Queue 2 1 1