نوعهای سفارشی (Types)
تعریف نوع جدید با type، بازههای subrange و شمارشی (enum) برای کد خواناتر.
اسم گذاشتن روی نوعها
با بخش type میتوانید برای نوعها اسم سفارشی بسازید — کد خواناتر و تغییر آسانتر:
نوع ساده (alias)
program Types;
type
TAge = integer; { TAge همان integer است }
TPrice = real;
TName = string;
var
age: TAge;
price: TPrice;
begin
age := 25;
price := 150000.0;
writeln(age, ' ', price:0:1);
end.
قرارداد پاسکال: اسم نوعهای سفارشی با T شروع میشوند (مثل TAge) — از کلمه Type.
بازه (Subrange) — محدود کردن مقادیر
type
TScore = 0..20; { فقط ۰ تا ۲۰ }
TDay = 1..7; { فقط ۱ تا ۷ }
TLetter = 'a'..'z'; { فقط حروف کوچک }
اگر مقدار خارج از بازه بدهید، خطا میگیرید — ایمنی بیشتر!
شمارشی (Enum) — فهرست مقادیر
type
TDay = (Saturday, Sunday, Monday, Tuesday, Wednesday, Thursday, Friday);
TColor = (Red, Green, Blue);
var
today: TDay;
c: TColor;
begin
today := Monday;
c := Green;
writeln(ord(today)); { 2 — شماره در فهرست از صفر }
writeln(ord(c)); { 1 }
end.
مقادیر enum پشت صحنه اعداد ۰، ۱، ۲... هستند اما در کد با اسم میخوانید — خیلی گویاتر از عدد خام!
آرایه با نوع سفارشی
program Week;
type
TDay = 1..7;
THours = array[TDay] of integer;
var
workHours: THours;
i: integer;
begin
workHours[1] := 8; { شنبه }
workHours[2] := 8;
workHours[3] := 6;
workHours[4] := 6;
workHours[5] := 4;
workHours[6] := 0; { پنجشنبه }
workHours[7] := 0; { جمعه }
for i := 1 to 7 do
writeln('Day ', i, ': ', workHours[i], ' hours');
end.
چرا نوع سفارشی؟
- خوانایی:
TScoreازintegerگویاتر است - ایمنی: subrange مقدار نامعتبر را نمیپذیرد
- تغییر آسان: نوع پایه را یک جا عوض کنید
- مستندسازی: کد خودش توضیح میدهد
خلاصه
typeبرای اسم گذاشتن روی نوعها- Subrange:
1..7— محدود کردن بازه - Enum: فهرست مقادیر اسمدار
- قرارداد: اسم نوع با T شروع شود
این مبحث بخشی از دوره آموزش کامل پاسکال است.