PDA

View Full Version : سوال: عدم error یک برنامه



yashar666
چهارشنبه 22 آذر 1391, 16:20 عصر
با سلام

چرا این برنامه در محیط pascal استاندارد هم error نمیده ! مگه succ d . بعد اینکه 3 بار حلقه اجرا میشه برای بار 4 رم خارج از محدوده نوع شمارشی من نمیشه ؟


type day=(adine,shanbe,yekshanbe);
var
d:day;
begin
d:=adine;

while ord(d)<7 do
begin
write(ord(d));
d:=succ(d);
end;
end.


خروجی 0123456 میشه !!!!!!

BORHAN TEC
پنج شنبه 23 آذر 1391, 00:36 صبح
سلام
روشی که شما به کار برده اید از لحاظ منطقی خیلی درست نیست و کامپایلر هم یه جورایی حق داره که Error نده!
مثلاً توجه داشته باشید که کد بالا را می توانید به شکل زیر هم بنویسید(این کد از باب مثال عرض شده):
type
TDay = (adine, shanbe=8, yekshanbe=12);
حالا با کد بالا و ادامه دادن کد توقع دارید که دلفی چکار کند؟؟؟:متعجب:
پس در نتیجه کد شما اصلاً کد درستی نیست!:چشمک:
یکی از کارهایی که می توانید انجام دهید به شکل زیر است:
type
Tday = (adine, shanbe, yekshanbe);

var
d: Tday;

begin
d := adine;

while d in [adine..yekshanbe] do
begin
write(ord(d));
d := succ(d);
end;

readln;

end.

و اما روش بهتر::لبخند:
type
TDay = (adine, shanbe, yekshanbe);
TDays = set of TDay;

var
d: TDay;
days : TDays;

begin
d := adine;
days := [adine..yekshanbe];

while d in days do
begin
write(ord(d));
d := succ(d);
end;

readln;

end.

فعلاً بیشتر از این حضور ذهن ندارم. اگه بازم روش بهتری به ذهنم برسه اضافه می کنم.

موفق باشید...