Паскаль (язык программирования): различия между версиями

[отпатрулированная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Помогите!!!!
Метки: с мобильного устройства из мобильной версии
Строка 290:
</source>
 
/Pascal C# C++ Pyton.
==== Указатели ====
Пожалуйста пишите по понятней¡!¡ я понел что нужно ставит в конце точку•
Паскаль поддерживает использование [[Указатель (тип данных)|указателей]] (типизированные <code>^тип</code> и нетипизированные <code>pointer</code>):
<source lang="pascal">
type
a = ^b;
b = record
x: Integer;
y: Char;
z: a;
end;
var
pointer_to_b:a;
</source>
Здесь переменная <code>pointer_to_b</code> — указатель на тип данных <code>b</code>, являющийся записью. Типизированный указатель может быть определён (''опережающее определение'') перед объявлением типа, на который он ссылается. Это одно из ''исключений'' к '''правилу''', которое гласит, что ''любой элемент (константа, тип, переменная, процедура, функция) должен быть объявлен перед тем, как используется''. Введение этого исключения позволяет организовывать ''рекуррентные'' определения структур данных, в том числе такие, как [[Линейный список|линейные списки]], [[стек]]и, [[Очередь (программирование)|очереди]], деревья, включая указатель на запись в описание этой записи (см. также: нулевой указатель — <code>nil</code>).
 
Для типизированного указателя определена операция '''разыменования''' (её синтаксис: <code>указатель^</code>).
 
Чтобы создать новую запись и присвоить значение <tt>10</tt> и символ <tt>A</tt> полям <code>x</code> и <code>y</code> в ней, необходимы следующие операторы:
<source lang="pascal">
new(pointer_to_b); { выделение памяти указателю }
 
Var
pointer_to_b^.x := 10; { разыменовывание указателя и обращение к полю записи }
Code:
pointer_to_b^.y := 'A';
chat:
pointer_to_b^.z := nil;
...
dispose(pointer_to_b); { освобождение памяти из-под указателя }
</source>
Для целей обращения к полям записей и объектов можно также использовать оператор <code>with</code>, как показано в примере:
<source lang="pascal">
new(pointer_to_b);
 
with pointer_to_b^ do
begin
x := 10;
y := 'A';
z := nil
end;
...
dispose(pointer_to_b);
</source>
 
==== Процедурный тип ====