Рассказать и показать на примере паскаль: 1) что такое absolute и для чего нужна? 2) что такое asm и для чего нужна? 3) что такое constructor и destructor и для чего нужна? 4) что такое implementation и для чего нужна? 5) назовите модули паскаль ( в строке uses, например crt) и какие возможности этот модуль дает? 6) что за тип переменной: указательный (pointer) 7) и на последок: что означает символ @ , #, $ , ^
1) absolute - директива для задания адреса переменной.
Например:
var
a : integer absolute $0040:$0002; //Сеегмент:смещение
2) asm - директива для ассемблерных вставок.
используется в критичных участках кода.
пример:
begin
asm
xor ax, ax
end
end.
3)
Конструктор и деструктор нужны для создания и уничтожения экземпляра класса.
Существуют конструкторы/деструкторы по умолчанию, но если мы хотим заменить его своим, то используются constructor/destructor.
Пишется просто - вместо function/procedure пишется constructor/destructor, ну и в классе прописывается.
type
ooo = class
public
a, b : integer;
constructor create (x, y : integer);
end;
constructor ooo.create (x, y : integer);
begin
a := x;
b := y;
end;
4)
implementation - в модуле обозначает начало исполняемой части, то есть там сами функции, процедуры и инициализация модуля.
Нужна, разумеется, чтобы отделить части модуля друг от друга.
Пример модуля:
Unit embler;
Interface
Procedure AddS (x,y: integer, var z: integer);
Implementation
Procedure AddD (x,y: integer, var z: integer);
begin
z := 2 * x + y;
end;
end.
5) Например, Graph - позволяет работать с графикой,
Math - математические функции, Windows - системные функции.
6) Pointer хранит адрес. По этому адресу можно пойти и взять значение переменной, при этом неважно какого она типа. Там, например может быть массив.
7) @ - берет адрес переменной
^ - обозначение, что это указатель ИЛИ что это разыменование
пример:
var
a : ^integer; // указатель на Integer;
b : integer;
begin
a := @b;
b := a^ + 2; //То же самое, что b := b + 2;
end.