نوع‌های سفارشی (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.

چرا نوع سفارشی؟

خلاصه

این مبحث بخشی از دوره آموزش کامل پاسکال است.

ابزارهای مرتبط