أنواع البيانات والسجلات
| English | العربية |
|---|---|
| data type/ˈdeɪtə taɪp/ | نوع البيانات |
| field/fiːld/ | حقل |
| record/ˈrekɔːd/ | سجل |
| record structure/ˈrekɔːd ˈstrʌktʃə/ | بنية السجل |
| dot notation/dɒt nəʊˈteɪʃn/ | ترميز النقطة |
قرار نوع البيانات الأغلى في التاريخ
- في 1960s كانت الذاكرة أغلى من المبرمجين. لتوفير حرفين لكل تاريخ، تم تخزين السنوات بخانتين:
99تعني 1999. - لم يتوقع أحد أن يبقى الكود بعد انقضاء القرن. وقد بقي، وفي 1 يناير 2000 سيقرأ كل حقل من تلك الحقول 1900. أنفقت الحكومات والشركات ما يقدر بـ $300 مليار للتحقق من هذا الخطأ وإصلاحه.
- لم يكن الخطأ خطأ مطبعياً. بل كان نوع بيانات اختُير ذاكرة عام 1965 وحُفظ للتواريخ عام 2000.
- هذه الدرس هو كيفية اختيار النوع المناسب للبيانات، وكيفية تجميع القيم التي تنتمي معاً في سجل.
الأنواع الأساسية الستة
| النوع | يحتفظ به | استخدمه لـ |
|---|---|---|
INTEGER |
رقم صحيح، 42، -7 |
العدّ، الفهارس، أرقام التعريف |
REAL |
رقم بكسر، 3.14 |
القياسات، المتوسطات |
CHAR |
حرف واحد، 'A' |
رمز التقييم، خيار القائمة |
STRING |
أحرف بين علامات اقتباس، "Hello" |
نص |
BOOLEAN |
TRUE أو FALSE |
الأعلام |
DATE |
تاريخ تقويمية | تواريخ الميلاد، المواعيد النهائية |

الكود الوهمي يُسمّي أيضاً نوعين مهيكليين: ARRAY وFILE
أي نوع بيانات يخزن أفضل علم نعم/لا مثل "متوفر في المخزون"؟
العلم له حالتان، لذا BOOLEAN (TRUE/FALSE) هو الخيار الدقيق — ليس النصوص "yes"/"no".
يجب استخدام النوع الحقيقي (الفاصلة العائمة) لتخزين قياس مثل درجة الحرارة.
الأعداد الصحيحة تستخدم للعد الكامل؛ القياسات تستخدم الأعداد الحقيقية.
اختر بناءً على كيفية استخدام القيمة
- النوع يُحدد بما سيفعله البرنامج بالقيمة، وليس بما يبدو عليه.
- عدد الطلاب هو
INTEGER؛ متوسط الصف هوREAL، لأنه يحتوي على جزء كسري؛ ما إذا دفع الطالب هوBOOLEAN. - مؤشر المصفوفة دائمًا
INTEGER. حرف درجة واحد هوCHAR؛ عنوان بريد إلكتروني هوSTRING. - رقم الهاتف هو
STRING: يبدأ بـ0، ولا يجمع أحد رقمين هاتفين أبداً.
طابق كل قيمة مع أفضل نوع بيانات لها.
اختر النوع الدقيق: BOOLEAN للعلم، REAL للقيم الكسرية، INTEGER للعد الكامل، STRING للنصوص.
أي نوع بيانات يجب أن يخزن رقم هاتف مثل 07700 900123؟
سيخسر INTEGER الصفر الأول، ولا يضيف أي برنامج أو يضرب أرقام الهواتف. الأرقام هي نص.
مثال محلول: أعطِ نوع البيانات المناسب
| البيانات | النوع | السبب |
|---|---|---|
| عدد العناصر في المخزون | INTEGER |
عد صحيح |
| سعر عنصر | REAL |
يحتوي على بنسات، جزء كسري |
| ما إذا كان العنصر عرضاً | BOOLEAN |
حالتان فقط |
رمز فئة العنصر، 'F' |
CHAR |
حرف واحد بالضبط |
| اسم المورد | STRING |
نص |
| تاريخ توصيل العنصر | DATE |
تاريخ تقويم |
- اذكر اسم الكود الوهمي، لا لغة البرمجة التي تعرفها:
BOOLEAN، وليسbool؛REAL، وليسfloat.
نوع بيانات فهرس المصفوفة هو دائماً ____.
الفهرس يعد المواقع، لذا فهو عدد صحيح. Names[2.5] ليس لها معنى.
سجلات
- السجل (أو هيكل السجل) يحتوي على مجموعة من عناصر البيانات ذات أنواع مختلفة تحت معرّف واحد. كل عنصر هو حقل.
- استخدمه عندما تصف عدة قيم شيئاً واحداً دائماً: عنصر مخزون، عميل، طالب.
TYPE TStockItem
DECLARE ItemID : INTEGER
DECLARE Category : STRING
DECLARE ItemCost : REAL
DECLARE InStock : BOOLEAN
ENDTYPE

معرف واحد، أربعة حقول، أربعة أنواع
يُستخدم السجل لـ:
يجمع السجل حقولاً من (على الأرجح) أنواع مختلفة تصف شيئاً واحداً. المصفوفة تحتوي على قيم عديدة من نفس النوع.
الإعلان عن استخدام سجل
TYPE … ENDTYPEيُعرّف النوع. ثم أعلن متغيرات منه، فردية أو كمصفوفة:
DECLARE Item1 : TStockItem
DECLARE Items : ARRAY[1:100] OF TStockItem
- الوصول إلى حقل باستخدام الترميز النقطي، للكتابة والقراءة:
Item1.Category ← "Fruit"
OUTPUT Item1.Category, " costs ", Item1.ItemCost
Items[7].InStock ← FALSE
السجل يجمع الحقول تحت اسم واحد
يجمع السجل الحقول ذات الصلة معاً. كل حقل هو تسمية يمكنك الوصول إليها باستخدام تدوين النقطة — Item1.Category — وليس بفهرس رقمي.
لتعيين حقل Category لمتغير سجل Item1، تكتب:
تدوين النقطة record.field يصل إلى حقل من سجل.
مثال محلل: ملف عضوية النادي
- يحفظ النادي لكل طالب: رقم طالب (سلسلة)، اسماً، وتاريخ ميلاد، وحتى ثلاثة أرقام للأندية. أعلن نوع السجل، ومصفوفة لـ 3000 طالب، واحفظ اسماً في العنصر الأول.
TYPE Student
DECLARE StudentID : STRING
DECLARE Name : STRING
DECLARE DateOfBirth : DATE
DECLARE Club : ARRAY[1:3] OF INTEGER
ENDTYPE
DECLARE Membership : ARRAY[1:3000] OF Student
Membership[1].Name ← "Li Wei"
- الدرجات:
TYPEبالمعرّف وENDTYPE؛ كل حُقل مُعلن بنوع مناسب؛ المصفوفة بحدودها وOF Student؛ الحقل الذي يتم الوصول إليه بال فهرس و النقطتين الرأسيتين.
رتب أسطر إعلان عضوية النادي بشكل صحيح.
عرّف النوع، أغلقه، أعلن متغير أو مصفوفة منه، ثم استخدم الفهرس والنقطة للوصول إلى حقل.
مثال محلل: حدد الخطأ في الإعلان
TYPE TBooking
DECLARE Seats : INTEGER
DECLARE Price
DECLARE Total : STRING
- ثلاثة أخطاء، كل منها درجة: النوع يفتقر إلى
ENDTYPE؛ الحقلPriceليس له نوع بيانات؛ وTotalسيحتوي علىSeats * Price، وهو نتيجة حسابية، لذا لا يمكن أن يكونSTRING. - الأخطاء الثلاثة المعتادة للممتحن: فقدان
ENDTYPE، حقل بدون نوع، وحقل من النوع الخاطئ لما يتم فعله به.
أي مما يلي يعتبر أخطاء في إعلان السجل؟ حدد كل ما ينطبق.
أنواع مختلفة في سجل واحد هي الغرض الأساسي من السجل. الثلاثة أخرى هي الأخطاء التي يضعها مصححو الامتحانات.
سجل، مصفوفة، أو متغيرات عادية
- القيم التي تنتمي دائماً معاً ولها أنواع مختلفة: سجل.
- قيم كثيرة من نفس النوع تحت اسم واحد: مصفوفة (في الدرس التالي).
- جدول من الصفوف حيث يحتوي كل صف على حقول مختلطة: مصفوفة من السجلات،
Members[i].Name. - قيم غير مرتبطة: متغيرات منفصلة. تجميعها لا يفيد شيئاً.
مصفوفة من السجلات تسمح لمعرف واحد بحفظ جدول تكون فيه كل صف يحتوي على حقول من أنواع مختلفة.
Members[i] هو صف واحد (سجل)؛ Members[i].Name هي خلية واحدة. المصفوفة توفر الصفوف، والسجل يوفر الأعمدة المختلطة.
علامات ضائعة
- قيمة نعم/لا هي
BOOLEAN، وليست السلاسل"yes"و"no". - رقم هاتف أو معرف يبدأ بـ
0هوSTRING، ولا يمكن أن يكونINTEGERأبداً. - الأموال في
REALتتراكم فيها أخطاء التقريب؛ تخزن العديد من الأنظمة البناطيق الكاملة كـINTEGER. - كل حقل هو سطر
DECLAREبنوع، وينتهي النوع بـENDTYPE. الفهرس يوضع على المصفوفة، والنقطتان الرأسيتان على الحقل:Members[3].Name.
لقد فهمت الأمر
- ستة أنواع أساسية،
INTEGER،REAL،CHAR،STRING،BOOLEAN،DATE، تُختار حسب ما يقوم به البرنامج بالقيمة - السجل يحمل حقولاً من أنواع مختلفة تحت معرّف واحد:
TYPE … DECLARE field : type … ENDTYPE - أعلن متغيرات أو مصفوفات من النوع، ووصولاً إلى حقل باستخدام الترميز النقطي:
Membership[1].Name ← "Li Wei" - الأخطاء التي يضعها الممتحن: عدم وجود
ENDTYPE، حقل بدون نوع، وحقل من نوع خاطئ لاستخدامه