Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 9 лет назад пользователемАндрей Каменев
2 Схема организации хранения данных и программ в ОЗУ RAM KB MS-DOS Turbo Pascal Программа Русификатор Сегмент кода Сегмент данных max 64 КБ Динамически выделяемая память heap= куча В сегменте данных располагаются все глобальные переменные, описанные в программе (секция var)
3 Указатели Сегмент данных данные p В переменной-указателе хранится адрес, по которому располагаются данные в динамической памяти nil – «нулевой» адрес
4 Указатели в Pascalе Типизированные Нетипизированные ^integer ^string ^real pointer
5 Типизированные указатели new(p); - выделяет в динамической памяти область и заносит её адрес в переменную p dispose(p); - освобождает выделенную ранее область в динамической памяти p^ := …; - пример обращения к данным, лежащим по адресу, хранящемуся в p
6 Типизированные указатели var a,b: integer; p: ^integer; begin new(p); a:=3; b:=5; p^:=a+b; writeln(p^); dispose(p); end. abp 8 35
7 var a: integer; p1,p2: ^integer; begin new(p1); a:=3; p2:=p1; p1^:=a; a:=4; p2^:=2*a; writeln(p1^); dispose(p1); end. ap1p
8 Нетипизированные указатели GetMem(p,size); - выделяет в динамической памяти область размером size байт и возвращает её адрес в переменную p FreeMem(p,size); - освобождает занятую ранее область в динамической памяти
9 Использование динамической памяти при анимации «простой» объект – можно перерисовывать при анимации «сложный» объект – долго перерисовывать при анимации
10 Использование динамической памяти при анимации Идея использования динамической памяти при анимации: 1)рисуем объект 2)сохраняем его изображение в динамической памяти 3)используем сохранённое изображение для анимации
11 GetImage(x1,y1,x2,y2,BitMap); - сохраняет прямоугольную область экрана, заданную координатами (x1,y1,x2,y2) в переменную BitMap ImageSize(x1,y1,x2,y2): word; - возвращает размер памяти, необходимый для хранения прямоугольной области экрана, заданной координатами (x1,y1,x2,y2) PutImage(x,y,BitMap,mode); - выводит на экран сохранённую ранее прямоугольную область экрана в соответствии с установленным в mode режимом вывода, где (x,y) – координаты левого верхнего угла
12 var p: pointer; s,x: word; … begin … s:=ImageSize(10,10,50,50); GetMem(p,s); GetImage(10,10,50,50,p^); ClearDevice; for x:=0 to GetMaxX div 5 do begin PutImage(x*5,100,p^,XORPut); delay(5000); PutImage(x*5,100,p^,XORPut); end; … end.
13 Л/р «Pac-Man» фаза 1 фаза 2 фаза 0 ф 1 ф 2 яблоко
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.