Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2008, 20:38   #1
Андрю)(@
Пользователь
 
Регистрация: 07.11.2008
Сообщений: 23
По умолчанию Как обозначается NEW и DISPOSE в блоксхеме???

Как обозначаются операторы New и Dispose из данной программы в блоксхеме??
Код:
Program LAB10;
Uses Crt;
Var
a,b,c:^Integer;
I,s:integer;
begin
ClrScr;
New(a); \\вот здесь такая крышечка ^ нужна???
Writeln('Введите первое число');
Readln(a^);
New(b);  \\вот здесь такая крышечка ^ нужна???
Writeln('Введите второе число');
Readln(b^);
New(c);  \\вот здесь такая крышечка ^ нужна???
Writeln('Введите третье число');
Readln(c^);
If (a^<b^) and (a^<c^) then
 writeln('Наименьшее число','  ',a^);
 begin
 If (b^<a^) and (b^<c^) then
 writeln('Наименьшее число','  ',b^);
 If (c^<a^) and (c^<b^) then
 writeln('Наименьшее число','  ',c^);
 end;
 Dispose(a);  \\вот здесь такая крышечка ^ нужна???
 Dispose(b);  \\вот здесь такая крышечка ^ нужна???
 Dispose(c);  \\вот здесь такая крышечка ^ нужна???
 end.
Андрю)(@ вне форума Ответить с цитированием
Старый 08.12.2008, 21:15   #2
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

Советую посмотреть эту тему.

Там много интересного. Однако, отвечая на вопрос:
По-сути, символ ^ для компилятора - он дает ему знать, что работать он будет ни с чем-то "вещественным" (как мы привыкли), а с указателем.
У вас определен тип ^Integer, таким образом мы говорим компилятору, что он будет иметь дело с указателями на память, в которой будут храниться данные типа Integer.
New и Dispose работают с указателями, поэтому при использовании переменной нам не нужно указывать символ содержимого.
Т.е. New(a) выделяет память под хранение типа Integer и возвращает (присваивает) нам адрес, в котором будет записано значение. Dispose(a) в свою очередь освобождает зарезервированное в памяти место.
Иное - вычисления с переменными, помещеными в память. Если мы обратимся к ним на прямую (a:=6), то получим ошибку (не всегда, но в большинстве случаев =)), т.к. память занята каким-то процессом. Поэтому нам нужно записывать в значение по адресу, о чем и говорит знак ^ за переменной. То же самое при чтении таких переменных.
Надеюсь, все понятно
Познавая других, мы познаем себя.
С'est la vie...

Последний раз редактировалось SuperVisor; 08.12.2008 в 21:18.
SuperVisor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему Dispose не освобождает память? DeLorean Общие вопросы Delphi 4 08.04.2008 00:17
Как обозначается корневой каталог программы? BeeX Свободное общение 1 25.11.2007 20:25