02-28-2012، 09:13 AM
نوع های مرکب :
نوع Record :در این نوع شما می توانید مجموع از اوناع متغیرها را داشته باشید.بعنوان مثال شما یک بازی نوشته اید که قهرمان این بازی را کاربر کنترل می کند پس شما باید یک record تعریف نمایید که مختصات آن را درصفحه و مقدار جان باقی مانده را در خود نگه دارد.مانند :
-
برای ساختن یک نمونه از record بالا بدین صورت می نویسیم :
و همچنین می توانید پارامترهای ورودی یک روتین را از این نوع تعریف نمایید :
record نیز می تواند بجای کلمه کلیدی type از var نیز استفاده نمایید :
با قرار دادن dot می توانید به داده های record تعریف شده دسترسی پیدا کنید:
و نکته دیگر در مورد این نوع داده ای که شما نمی توانید مستقیما دونوع متفاوت تعریف شده از record درون هم کپی کنید و یا انتساب دهید.بلکه می بایست مقدارهای داخلی آنها را کپی نمایید.
نوع Array :
آرایه ها بدین صورت تعریف میشوند :
برای تعریف یک آرایه 8*8 که یک آرایه دوبعدی میشود بدین صورت انجام میشود :
که برای ساده ترشدن دوخط کد بالا معادل تکه کد زیر است:
در مثال زیر خانه های خالی از جدول شطرنج مان را میشماریم :
می توان آرایه های چند بعدی داشته باشید ولی به این نکته توجه کنید که آرایه های بعد زیاد حافظه زیادی را اشغال می کنند.
نوع Record :در این نوع شما می توانید مجموع از اوناع متغیرها را داشته باشید.بعنوان مثال شما یک بازی نوشته اید که قهرمان این بازی را کاربر کنترل می کند پس شما باید یک record تعریف نمایید که مختصات آن را درصفحه و مقدار جان باقی مانده را در خود نگه دارد.مانند :
کد:
type heroType = record
positionX, positionY: integer;
health: integer;
end;
برای ساختن یک نمونه از record بالا بدین صورت می نویسیم :
کد:
var hero: heroType;
و همچنین می توانید پارامترهای ورودی یک روتین را از این نوع تعریف نمایید :
کد:
function isHeroDead(hero: heroType): boolean;
begin
if (hero.health <= 0) then
isHeroDead := true;
else
isHeroDead := false;
end;
record نیز می تواند بجای کلمه کلیدی type از var نیز استفاده نمایید :
کد:
var hero: record
positionX, positionY: integer;
health: integer;
end;
با قرار دادن dot می توانید به داده های record تعریف شده دسترسی پیدا کنید:
کد:
...
{ move the hero to the right }
hero.positionX := hero.positionX + 1;
...
و نکته دیگر در مورد این نوع داده ای که شما نمی توانید مستقیما دونوع متفاوت تعریف شده از record درون هم کپی کنید و یا انتساب دهید.بلکه می بایست مقدارهای داخلی آنها را کپی نمایید.
کد:
var a, b: record
x: integer;
end;
begin
...
a := b; { this is not valid }
...
a.x := b.x; { copy element by element instead }
end.
نوع Array :
آرایه ها بدین صورت تعریف میشوند :
کد:
type chessFieldType = array[1..8, 1..8] of integer;
برای تعریف یک آرایه 8*8 که یک آرایه دوبعدی میشود بدین صورت انجام میشود :
کد:
type chessFieldType = array[1..8, 1..8] of integer;
var chessField: chessFieldType;
که برای ساده ترشدن دوخط کد بالا معادل تکه کد زیر است:
کد:
var chessField: array[1..8, 1..8] of integer;
در مثال زیر خانه های خالی از جدول شطرنج مان را میشماریم :
کد:
type chessFieldType = array[1..8, 1..8] of integer;
var chessField: chessFieldType;
i, j, count: integer;
begin
...
{ initialize the chess field to contain some elements }
...
count := 0;
for i:=1 to 8 do
for j:=1 to 8 do
if chessField[i, j] = 0 then count := count + 1;
end.
می توان آرایه های چند بعدی داشته باشید ولی به این نکته توجه کنید که آرایه های بعد زیاد حافظه زیادی را اشغال می کنند.
معبودا مرا ببخش، بخاطر درهایی که کوبیدم ولی هیچکدام خانه تو نبود ...