Схема организации хранения данных и программ в ОЗУ RAM 0 640 KB MS-DOS Turbo Pascal Программа Русификатор Сегмент кода Сегмент данных max 64 КБ Динамически.

Презентация:



Advertisements
Похожие презентации
Элементы ЯПВУ. УКАЗАТЕЛИ. C / С++Pascal Вся динамическая память в Pascal это сплошной массив байтов (куча). Адрес начала кучи храниться в переменной HeapOrg,
Advertisements

Ссылочные типы Описание ссылочных типов ::= Например type PINT = integer; C = char; Описание ссылочных переменных var p: PINT; r1, r2: real; p integer.
Динамические структуры данных Для практики программирования важны 2 фактора (конфликтующих друг с другом): в ремя выполнения программы о бъем занимаемой.
Элементы ЯПВУ. УКАЗАТЕЛИ. C / С++ Pascal Вся динамическая память в Pascal это сплошной массив байтов (куча). Адрес начала кучи храниться в переменной HeapOrg,
Глава 10. УКАЗАТЕЛИ И ДИНАМИЧЕСКАЯ ПАМЯТЬ Распределение памяти для выполняемого кода программы Динамическая память Указатели Типизированные и нетипизированные.
Глава 10. УКАЗАТЕЛИ И ДИНАМИЧЕСКАЯ ПАМЯТЬ Распределение памяти для выполняемого кода программы Динамическая память Указатели Типизированные и нетипизированные.
Графика в Turbo Pascal ГБОУ СПО «КСТ», г. Калуга преподаватель Шамрина Ольга Николаевна.
ЦИКЛ «ДО» i:=1,n действия … FOR i:=1 TO n DO Begin Действия End; …
Построение точки и отрезков прямых. Для построения точки служит процедура PutPixel(X,Y, цвет) Для построения точки служит процедура PutPixel(X,Y, цвет)
Указатели Динамические структуры данных. 2 Статические данные переменная (массив) имеет имя, по которому к ней можно обращаться размер заранее известен.
ПАСКАЛЬ Операторы ввода, вывода и присваивания. Структура программы и.
Анимация Анимация - компьютерная имитация движения с помощью изменения (и перерисовки) формы объектов или показа последовательных изображений с фазами.
Двумерные массивы. Заполнение и вывод элементов. Понятие. Двумерный массив – это массив с двумя измерениями (прямоугольные таблицы, матрицы). Пример:
Элементы ЯПВУ. УКАЗАТЕЛИ. УКАЗАТЕЛЬ – это переменная, значением которой является адрес какого-то объекта в памяти компьютера (обычно, другой переменной).
3. Дана прямоугольная матрица, элементами которой являются целые числа. Поменять местами ее строки следующим образом: первую строку с последней, вторую.
Вложенные циклы. Если телом цикла является циклическая структура, то такие циклы называются вложенными.
Нетипизированный файл рассматривается в Паскале как совокупность символов или байтов. Выбор char или byte не играет никакой роли, важен лишь объем занимаемых.
Циклы с предусловием Pascal. Цикл - это многократное повторение последовательности действий по некоторому условию. это многократное повторение последовательности.
Цикл со счетчиком. Ц ИКЛ СО СЧЕТЧИКОМ FOR управляющая переменная:= a TO n DO операторы;(если an) Здесь a – начальное значение управляющей переменной;
По трем сторонам треугольника (a, b, c) вычислить площадь треугольника ( S ) p : = (a + b + c) / 2 начало конец ввод a, b, c вывод S S : = p (p - a) (p.
Транксрипт:

Схема организации хранения данных и программ в ОЗУ RAM KB MS-DOS Turbo Pascal Программа Русификатор Сегмент кода Сегмент данных max 64 КБ Динамически выделяемая память heap= куча В сегменте данных располагаются все глобальные переменные, описанные в программе (секция var)

Указатели Сегмент данных данные p В переменной-указателе хранится адрес, по которому располагаются данные в динамической памяти nil – «нулевой» адрес

Указатели в Pascalе Типизированные Нетипизированные ^integer ^string ^real pointer

Типизированные указатели new(p); - выделяет в динамической памяти область и заносит её адрес в переменную p dispose(p); - освобождает выделенную ранее область в динамической памяти p^ := …; - пример обращения к данным, лежащим по адресу, хранящемуся в p

Типизированные указатели var a,b: integer; p: ^integer; begin new(p); a:=3; b:=5; p^:=a+b; writeln(p^); dispose(p); end. abp 8 35

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

Нетипизированные указатели GetMem(p,size); - выделяет в динамической памяти область размером size байт и возвращает её адрес в переменную p FreeMem(p,size); - освобождает занятую ранее область в динамической памяти

Использование динамической памяти при анимации «простой» объект – можно перерисовывать при анимации «сложный» объект – долго перерисовывать при анимации

Использование динамической памяти при анимации Идея использования динамической памяти при анимации: 1)рисуем объект 2)сохраняем его изображение в динамической памяти 3)используем сохранённое изображение для анимации

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) – координаты левого верхнего угла

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.

Л/р «Pac-Man» фаза 1 фаза 2 фаза 0 ф 1 ф 2 яблоко