Выделение и освобождение динамической памяти
Вся динамическая память в Турбо Паскале рассматривается как сплошной массив байтов, который называется кучей. Физически куча располагается в старших адресах сразу за областью памяти, которую занимает тело программы. Начало кучи хранится в стандартной переменной HEAPORG, конец - в переменной HEAPEND. Текущую границу незанятой динамической памяти указывает указатель HEAPPTR. Расположение кучи в памяти ПК Память под любую динамически размещаемую переменную выделяется процедурой NEW. Параметром обращения к этой процедуре является типизированный указатель. В результате обращения указатель приобретает значение, соответствующее динамическому адресу, начиная с которого можно разместить данные, например: Var i, j: ^integer; r: ^real; Begin New(i); ..... end. Таким образом, значение, на которое указывает указатель, т.е. собственно данные, размещенные в куче, обозначаются значком ^, который ставится сразу за указателем. Если за указателем нет значка ^, то имеется виду адрес, по которому размещены данные. Динамически размещенные данные можно использовать в любом месте программы, где это допустимо для констант и переменных соответствующего типа, например: r^:= sqr(r^) + i^ - 17; Динамическую память можно не только забирать из кучи, но и возвращать обратно. Для этого используется процедура DISPOSE. Например, операторы dispose(r); вернут в кучу 8 байт, которые ранее были выделены указателям R. Как уже отмечалось, параметром процедуры NEW может быть только типизированный указатель. Для работы с нетипизированными указателями используются процедуры: GETMEM (P, SIZE) - резервирование памяти; Здесь Р -- нетипизированный указатель; За одно обращение к куче процедурой GETMEM можно зарезервировать до 65521 байта динамической памяти.
6. Типы данных (целые и вещественные числа). Размер используемой памяти, пределы изменения и точность представляемых данных. Тип данных — фундаментальное понятие теории программирования. Тип данных определяет множество значений, набор операций, которые можно применять к таким значениям и, возможно, способ реализации хранения значений и выполнения операций. Любые данные, которыми оперируют программы, относятся к определённым типам. Чтобы ЭВМ могла при выполнении операций распознавать принадлежность конфигураций к тому или иному типу данных, необходимо при разработке алгоритмов, и особенно программ, прямо указывать эту принадлежность. Достигается это путем явного описания типов используемых данных. В зависимости от типа, заданного в описании переменной, она может принимать текущие значения только указанного типа. ЦЕЛЫЕ типы определяют константы, переменные и функции, значения которых реализуются множеством целых чисел, допустимых в данной ЭВМ. Целое число – это число, не имеющее запятой тип диапазон значений требуемая память ________________________________________________________
Shortint -128.. 127 1 байт
Integer -32768.. 32767 2 байта
Longint -2147483648.. 2147483647 4 байта
Byte 0.. 255 1 байт
Word 0.. 65535 2 байта Над целыми операндами можно выполнять следующие арифметические операции: сложение, вычитание, умножение, деление, получение остатка от деления. Вещественные числа – это числа с запятой, после которой идут десятичные значения. Еще говорят, что они имеют плавающую точку. Компьютер воспринимает вещественное число, как два целых, и делает двойную работу при обработке чисел до запятой, и после нее.
7. Приоритеты выполнения операций при вычислении значений арифметических и логических выражений. Выражение это формальное правило для вычисления некоторого значения. Выражение строится как совокупность операций, выполнение которых приводит к вычислению значения выражения. Главное свойство выражений - возможность иметь значение. В зависимости от типа значения выражения можно разделить на три вида: · численные (арифметические); · логические; · символьные. Рассмотри правила построения выражений каждого из этих видов. Численные (арифметические) выражения Представляют собой совокупность имен переменных, констант, функций, а также других выражений числовых типов, объединенных знаками арифметических операций. В Паскале предусмотрены шесть арифметических операций:
Операция возведения в степень в языке не предусмотрена. В сложных выражениях порядок выполнения операций определяется правилами приоритета: 1. унарная операция not, унарный минус -, взятие адреса @ 2. операции типа умножения * / div mod and shl shr 3. операции типа сложения + - or xor 4. операции отношения = <> < > <= >= in {} Для изменения порядка выполнения операций используют круглые скобки ().
|