один байт, інші - кілька суміжних. Тому насправді покажчик адресує лише перший байт даних.
Як правило, покажчик зв'язується з деяким типом даних. Такі покажчики називають типізований. Для оголошення типизированного покажчика використовується значок ^, який поміщається перед відповідним типом, наприклад:
var
p1: ^ Integer;
р2: ^ Real;
6. Строкові типи
Тип STRING (рядок) у Паскалі широко використовується для обробки текстів. Він багато в чому схожий на одновимірний масив символів ARRAY [0 .. N] OF CHAR, проте, на відміну від останнього, кількість символів у рядку-змінної може змінюватися від 0 до N, де N - максимальна кількість символів в рядку. Значення N визначається оголошенням типу STRING [N] і може бути будь константою порядкового типу, але не більш 255.
Паскаль дозволяє не вказувати N, в цьому випадку довжина рядка приймається максимально можливої, а саме N = 255.
Рядок у Паскалі трактується як ланцюжок символів. До будь-якого символу в рядку можна звернутися так ж, як до елементу одновимірного масиву ARRAY [0 .. N] OF CHAR, наприклад:
Var
st: string;
.........
if st [5] = 'A' then .....
Найперший байт в рядку має індекс 0 і містить поточну довжину рядка. Перший значущий символ рядка займає другий байт і має індекс 1. Над довжиною рядка можна здійснювати необхідні дії і таким чином змінювати довжину. p> Значення поточної довжини рядка можна не тільки витягати з першого байта самої рядки, але й отримувати з допомогою функції LENGTH (st).
Наприклад:
Var
st: string;
.........
write ('Введіть рядок: '); p> readln (st);
writeln ('Поточна довжина рядка - ', Length (st));
........
Даний фрагмент програми роздрукує поточну довжину введеного рядка.
До рядкам можна застосовувати операцію "+" - зчеплення, наприклад:
st: = 'a' + 'B';
st: = st + 'c'; {St містить "abc"}
Якщо довжина зчепленої рядка перевищить максимально допустиму довжину N, то "зайві" символи відкидаються.
Операції відносини =, <>,>, <,> =, <= Виконуються над двома рядками посимвольний, зліва направо з урахуванням внутрішньої кодування символів. Якщо один рядок менше інший по довжині, відсутні символи короткого рядка заміняються значенням CHR (0). p> Наступні операції відносини дадуть значення TRUE:
'A'> '1 '
'Turbo' <'Turbo Pascal'
'Паскаль'> 'Turbo Pascal'
Всі інші дії над рядками і символами реалізуються за допомогою вбудованих процедур і функцій.
7. Процедурні типи
Основне призначення процедурних типів - дати програмісту гнучкі засоби передачі функцій і процедур в якості фактичних параметрів звернення до інших процедур і функцій.
Для оголошення процедурного типу використовується заголовок процедури (функції), в якому опускається її ім'я, наприклад:
type
Proc1 = Procedure (a, b, с: Real; var d: Real); Proc2 = Procedure (var a, b);
РгосЗ = Procedure;
Func1 = Function: String;
Func2 = Function (var s: String): Real;
Як видно з наведених прикладів, існує два процедурних типу: тип-процедура і тип-функція.
8. Об'єкти
Тип даних Object є базовим в Visual Basic.NET. Це означає, що всі типи даних і типи об'єктів є похідними від нього або безпосередньо, або опосередковано. Це означає також, що будь-який інший тип даних, найпростіший або складовою, може бути перетворений в Object . Якщо параметр Option Strict вимкнений, тип Object може бути використаний як універсального типу даних.
9. Класи
Класами в Object Pascal називаються спеціальні типи, які містять поля, методи і властивості. Як і будь-який інший тип, клас служить лише зразком для створення конкретних екземплярів реалізації, які називаються об'єктами. Важливою відмінністю класів від інших типів є те, що єкти класу завжди розподіляються в купі, тому об'єкт-змінна фактично являє собою лише покажчик на динамічну область пам'яті. У класовою лежать три фундаментальних принципи, які називаються інкапсуляція, спадкування і поліморфізм.
Приклад:
type
TMyClass = class (TObject) Field: Integer;
end;
var
MyClass: TMyClass;
10. Варіанти
Варіант (в Delphi 1 він отсутс твует) - це тип variant, розроблений спеціально для тих випадків, коли на етапі компіляції програміст не може сказати, якого типу дані будуть використовуватися в виразі або як параметри виклику підпрограм. Змінна-варіант займає в пам'яті додаткові 2 байти, в які поміщається інформація про дійсний...