Файл: Понятие переменной в программировании. Виды и типы переменных.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 05.04.2023

Просмотров: 282

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Такой указатель обозначается словом nil и присваивается любой ссылочной переменной.

Для выполнении операции присваивания записывается код:

p := nil;

значение p определено и равняется nil, что и значит, что p вообще не указывает на переменную.

Над ссылочными переменными допускаются всего 3 операции: проверка на неравенство и равенство. Эти операции проверяют, могут ли ссылаться два указателя на одну переменную, и обозначаются символами '=', '<>':

in := p11=p12;

if p11 <> nil then ...

Существует также 2 способа доступа к имеющимся переменным.

Первый способ – это обращение к переменной с помощью её имени, так называемый прямой способ.

Второй – обращение по переменной к её адресу, которая содержится в указателе. Этот способ доступа называют косвенным.[3]

Для обращения к переменным по их адресу, что находится в ссылочных переменных, используют операцию "разыменование".

Когда к ссылочной переменной обращаются по её имени, получим адрес переменной для базового типа. Но когда после имени указателя ставится символ '^', то получим доступ к указанной переменной на которую и указывает этот указатель. Исходя из этого операторы

i := i + 1;

p^ := p^ + 1;

полностью идентичны и выполняют аналогические действие.

Записи, которые позволяют получить доступ к переменным по указателю, называются операцией разыменования.

В таком случае "указателя на указатель" возможно применять многократное разыменование:

pp1^^

Разыменование ссылочных переменных, значением которой является nill, является недопустимым, поскольку в данном случае не существует переменных, на которые ссылается указатель.[14]

Все переменные, что необходимо указывать в объявлении переменных и которые могут обозначаться идентификаторами, Вирт назвал статическими переменными.

Такие переменные используются в случае, когда память, применяемая программой, известна в момент её написания. Само распределение памяти для таких статических переменных производится автоматически и подчинено дисциплине стека.

Но существует также ряд задач, у которых невозможно предсказывать размер памяти прямо в момент написания программ. В таких задачах необходим совсем другой подход: переменные надо формировать динамически, не связывая их с структурой программ.

Поскольку средств для явного описаний переменных нет, то обратиться к ним по именам невозможно. Одним методом обращения к этим переменным является применение ссылочных имена, создаваемых при формировании разных динамических переменных. Паскаль даёт возможность как образовать так и удалить такие переменные в произвольный момент работы программы, сообразуясь при этом с потребностями задачи.[14]


Переменные в программе, созданием и уничтожением для которых может управлять программист, называют динамическими переменными.

Во время выполнения программ оперативная память компьютера может быть разделена на 3 части:

– область памяти для которой размещается программный код программы;

– область памяти выделяемая при статических переменных – так называемая "статическая память". Место для всех статических переменных выделяется автоматически, а также подчинено стековой дисциплине – а именно последовательному заполнению выделенной памяти. Поэтому статическую память часто называют стековой памятью.

Так как размещение переменной в этой области может иметь случайный характер, то эту область называют кучей. По умолчанию динамическая память занимает весь доступный объём оперативной памяти ПК.

Для создания динамической переменной используется процедура New.

Основным параметром данной процедуры считают переменную ссылочного типа:

New(p);

При выполнении такого оператора:

1) в динамической памяти выделяется место для переменной целого типа;[8]

2) ссылочной переменной p присваивается указатель на организованную динамическую переменную.

В результате получим динамическую переменную. Поскольку имени (идентификатора) она не имеет, поэтому прямое обращение к ней просто невозможно. Один способ, это косвенное обращение к ней путём разыменования переменной p, содержащей указатель на эту динамическую переменную:[13]

p^ := 28;

Процедура New применяется также в функциональной форме:[7]

p := New(pin);

В данном случае параметром New будет ссылочный тип.

Динамические переменные могут создаваться в ходе выполнения самой программы, в зависимости от надобности решаемой задачи. В случае, если в них необходимость отпадает, во избежаниях переполнения динамической памяти, то их нужно уничтожить.

Освобождение динамических переменных осуществляется при помощи процедуры Dispose, в которой параметром является ссылочная переменная, что содержит ссылку на удаляемую переменную:

Dispose(p);

После выполнения этой процедуры значение для ссылочной переменной становится совсем неопределённым.

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

Такая ситуация может быть скрытой причиной для сбоев программы. Поэтому, при использовании динамических переменных, саму кучу нужно контролировать при помощи специальных процедур.


MaxAvail: longint;

Эта процедура определяет наибольшую непрерывную, свободную область в куче. Сама куча формируется случайным алгоритмом, и представляет собой последовательности занятых и незанятых частей памяти. Поэтому в различных случаях результатом функции может быть разное значение.

MemAvail: longint;

Функция определяет общий размер свободного участка в куче.

Рассмотрим программу, которая с помощью ссылочного типа данных выводит коды символов

Program P1;

Uses Crt;

Var

p: ^char;

j: byte;

Begin

clrscr;

new(p);

for j:=0 to 255 do

begin

p^:=chr(j);

write(j:3,'=',p^);

end;

dispose(p);

repeat until keypressed;

End.

В третьем разделе курсовой работы выполнено рассмотрение ссылочного типа данных в языке программирования высокого уровня Паскаль, описаны особенности применения указателей (указатель на указатель, нулевой указатель), приведен пример использования ссылочного типа данных.

Заключение

Турбо Паскаль со своим появлением на рынке инструментального программного обеспечения совершил революцию в сфере программирования. До этого предпочтение при изучении алгоритмизации и программирования отдавалось Бейсику – дешевому, простому и легко усвояемому языку.

Паскаль был аппаратно зависимым языком программирования, дорогим и сложным при обращении. С появлением версии Турбо Паскаля положение изменилось в корне. Замечательным в Турбо Паскале является не язык, а программное окружение, где теперь можно применять Паскаль и которое может обеспечить пользователю комфорт, высокую скорость работы.

Вместе с успехом Турбо Паскаля в секторе программных продуктов также связано и развитие разных пакетов, облегчающих применение языка Паскаля для очень разных целей.

Сама концепция Паскаля разработана Н. Виртом, очень быстро получила широкое распространение благодаря ее легкости изучения, наглядности составленных текстов программ.

Со временем фирма Borland завершила линию продуктов языка Турбо Паскаль и перешла к созданию системы визуальной разработки для ОС Windows - Delphi.

Несмотря на все это, Турбо Паскаль сохранит свое значение отличного языка для начального знакомства с миром программирования. Это все связано как с четкой логической структурой языка, так и с возможностями, которые позволяют применять Турбо Паскаль для вычисления разнообразных задач.

В работе были реализованы задачи:

– рассмотрены основные понятия теории языков программирования;