• 0
yassine_hell

ماهي فائدة Type énuméré

سؤال

السلام عليكم

ماهي فائدة Type énuméré (enumerated types)فيturbo pascal اذا لا نستطيع عمل read(ln) او write(ln) او حتى اسناد قيمة لها من متغير اخر...

شكرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

3 إجابة على هذا السؤال .

  • 0

اخي هو نوع من البيانات

تخيل انك تريد عمل نوع اسمه اسبوع

هذا النوع من البيانات يمكنك من صنع نوع من البيانات اسمه الاسبوع و فيه كل الايام من الاثنين الى الاحد

للاسف هذا ما اقدر افيدك بيه انا ادرس الباسكال في المدرسه بس عنا استاذ غبي ما يعرف يفهم

عليك بالنت و حتلاقي الاف مين يساعدك

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

على ما اعتقد فهذا النوع من البيانات يشبه الجدوال لانه بكل انديكس توافقه قيمة اما بالنسبة للجدوى من استعماله فلربما للقيمة الصغيرة من الذاكرة التي يستعملها اذا قارناها بالجداول ؛؛ الذي اعرفه هو انه يسمح لك بمعرفة قيمة عن طريق قيمة فمثلا قمنا بتعريف نوع ووضعنا به ايا الاسبوع ،،

type semaine=(lundi,mardi,mercredi,jeudi,vendredi

فمثلا ان كنا لانعرف ماذا يأتي بعد الاثنين هاذا النوع يمكننا من معرفته بهذه الطريقة

(writeln succ(lundi

يضهر في الشاشة الثلاثاء

اتمنى ان اكون قد افدتك والعلم لله

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم...

الأنواع التعدادية (Enumerated Types) توفر ميزتين أساسيتين:

1. إعطاء أسماء للقيم: و هذا يشبه مسألة استخدام الثوابت (Constants)، حيث يكون استخدام اسم القيمة أسهل بكثير من استخدام القيمة نفسها، خاصة مع القيم التي يصعب تذكرها. كما أن استخدام الاسم يدل عادة على المعنى:


Edit1.Color := 65535
Edit1.Color := $00FFFF
Edit1.Color := clYellow

الجمل البرمجية الثلاث السابقة تؤدي إلى نفس النتيجة، و هي تلوين مربع النص باللون الأصفر. لو لم أكتب السطر الثالث و سألنا ماذا سيكون لون مربع النص لما عرفنا الإجابة إلا بعد التجربة (أو إذا كنا نحفظ تلك القيمة)، أما السطر الثالث فهو واضح، حيث أعطينا للقيمة 65535 الاسم clYellow الذي يعني ببساطة اللون الأصفر، و بهذا أصبح الأمر أسهل من حفظ قيمة كل لون في رؤوسنا، و أصبحت الجملة واضحة المعنى بمجرد النظر إليها (هذا الأمر ينطبق على الـ Enumerated Types و الـ Constants).

2. تحديد نطاق القيم المقبولة: أحياناً كثيرة نحتاج إلى التعامل مع قيم محدودة (ضمن نطاق محدود)، و الـ Enumerated Types هي أحسن طريقة لضبط حدود النطاق. لو أن لدينا بارامتراً في دالة أو إجراء و جعلنا نوعه Integer مثلاً فنحن في هذه الحالة نتعامل مع ما يزيد عن 4 مليارات قيمة! صحيح أنه يمكننا التحقق من النطاق باستعمال الجمل الشرطية، لكن ذلك يعني زيادة في الكود.

الدالة التالية - كمثال - تستخدم للحصول على أحد الألوان الستة عشر الأساسية حسب رقم مؤشر للون (و ليس القيمة الفعلية للون)، و هي طريقة مأخوذة من لغة البرمجة القديمة Quick Basic:


type
TMain16Color = (mscBlack, mscNavy, mscGreen, mscTeal, mscMaroon, mscPurple,
mscOlive, mscSilver, mscGray, mscBlue, mscLime, mscAqua,
mscRed, mscFuchsia, mscYellow, mscWhite);
//...
//...
implementation
//...
function QBColor(AIndex: TMain16Color): TColor;
begin
case AIndex of
mscBlack: Result := clBlack;
mscNavy: Result := clNavy;
mscGreen: Result := clGreen;
mscTeal: Result := clTeal;
mscMaroon: Result := clMaroon;
mscPurple: Result := clPurple;
mscOlive: Result := clOlive;
mscSilver: Result := clSilver;
mscGray: Result := clGray;
mscBlue: Result := clBlue;
mscLime: Result := clLime;
mscAqua: Result := clAqua;
mscRed: Result := clRed;
mscFuchsia: Result := clFuchsia;
mscYellow: Result := clYellow;
mscWhite: Result := clWhite;
end;
end;
//...

فبما أننا نريد أن نتعامل مع نطاق من القيم يتراوح فقط بين 0 و 15 فإننا قمنا بتعريف نطاق هذه القيم باسم TMain16Color حتى نتجنب إدخال قيم خارج النطاق (على الأقل بشكل مباشر).

* بالإضافة إلى ذلك فإن هذا النوع من القيم يسهل لنا استعمال الحلقات و جمل التفرع، مثلاً:


var AIndex: TMain16Color;
//...
for AIndex := mscBlack to mscYellow do
//...
//...
case AIndex of
mscRed: //...
mscBlue: //...
//...
end;

و مع ذلك فإنه يمكننا التحويل بين الـ Enumerated Type و النوع Integer (لأن تلك القيم تحفظ كـ Integer). مثلاً:


Edit1.Color := QBColor(TMain16Color(6));

حيث نقوم بتحويل القيمة 6 (و هي Integer) إلى النوع TMain16Color لتمريرها إلى الدالة QBColor.

و أيضاً:


Edit2.Text := IntToStr(Integer(mscOlive));

حيث يتم تحويل القيمة mscOlive من النوع TMain16Color إلى Integer لتمريرها إلى الدالة IntToStr.

نرجو الاستفادة و السلام.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .