📋 بطاقة الدرس
| المادة | الإعلام الآلي (Informatique) |
| المستوى | الثانية ثانوي (شعبة تقني رياضي) |
| الوحدة | البرمجة بلغة Pascal — السجلات (Records) |
🎯 أهداف التعلم
- فهم مفهوم السجل (Record) في لغة Pascal وأهميته
- تعريف نوع سجل باستخدام الكلمة المفتاحية Record
- التعامل مع حقول السجل (Fields) باستخدام النقطة (.)
- استخدام السجلات مع المصفوفات لإنشاء قواعد بيانات بسيطة
- كتابة برامج متكاملة تستخدم السجلات
📍 تمهيد
عندما نريد تخزين بيانات مركبة عن شخص أو منتج، كاسم ورقم هاتف وعنوان، فإننا نحتاج إلى هيكل بيانات يجمع هذه المعلومات المتنوعة في كيان واحد. السجل (Record) في لغة Pascal يتيح لنا ذلك. السجل هو نوع بيانات مركب يجمع عدة عناصر (حقول) قد تكون من أنواع مختلفة (Integer, String, Real, …).
📖 أولاً: تعريف السجل
يتم تعريف السجل باستخدام الكلمة المفتاحية Record داخل Type:
📝 تعريف سجل طالب
Type
TEtudiant = Record
Nom: String[30];
Prenom: String[20];
Age: Integer;
NoteMoyenne: Real;
Adresse: String[50];
End;
Var
etudiant1, etudiant2: TEtudiant;
📖 ثانياً: التعامل مع حقول السجل
للوصول إلى حقل معين في السجل، نستخدم النقطة (.) بين اسم المتغير واسم الحقل:
📝 مثال: إدخال وعرض بيانات سجل
Begin
Write('Enter le nom: ');
ReadLn(etudiant1.Nom);
Write('Enter l\'age: ');
ReadLn(etudiant1.Age);
Write('Enter la moyenne: ');
ReadLn(etudiant1.NoteMoyenne);
WriteLn('Nom: ', etudiant1.Nom);
WriteLn('Age: ', etudiant1.Age);
WriteLn('Moyenne: ', etudiant1.NoteMoyenne:0:2);
ReadLn;
End.
📖 ثالثاً: مصفوفة من السجلات
يمكن إنشاء مصفوفة من السجلات لتخزين بيانات مجموعة من العناصر:
📝 مثال: قائمة طلاب
Const
N = 5;
Type
TEtudiant = Record
Nom: String[30];
Note: Real;
End;
Var
etudiants: Array[1..N] of TEtudiant;
i: Integer;
Begin
For i := 1 To N Do
Begin
Write('Nom etudiant ', i, ': ');
ReadLn(etudiants[i].Nom);
Write('Note: ');
ReadLn(etudiants[i].Note);
End;
WriteLn;
WriteLn('Liste des etudiants:');
For i := 1 To N Do
WriteLn(etudiants[i].Nom, ' - ', etudiants[i].Note:0:2);
ReadLn;
End.
📖 رابعاً: السجلات مع العبارة With
لتسهيل الوصول إلى حقول السجل، نستخدم العبارة With التي تسمح بكتابة أسماء الحقول دون تكرار اسم المتغير:
📝 استخدام With
With etudiant1 Do
Begin
Nom := 'Ali';
Prenom := 'Mohamed';
Age := 17;
End;
// بدلاً من:
// etudiant1.Nom := 'Ali';
// etudiant1.Prenom := 'Mohamed';
✏️ تمرين تطبيقي
عرف سجلاً للمنتجات يحتوي على: رقم المنتج (Integer)، اسم المنتج (String[40])، السعر (Real)، الكمية (Integer). ثم اكتب برنامجاً يقرأ بيانات 3 منتجات ويعرض قيمة المخزون الإجمالي (سعر × كمية لكل منتج).
🟢 انقر هنا لرؤية الحل
Program GestionStock;
Type
TProduit = Record
Code: Integer;
Nom: String[40];
Prix: Real;
Quantite: Integer;
End;
Var
produits: Array[1..3] of TProduit;
i: Integer;
total: Real;
Begin
For i := 1 To 3 Do
Begin
WriteLn('Produit ', i);
Write('Code: '); ReadLn(produits[i].Code);
Write('Nom: '); ReadLn(produits[i].Nom);
Write('Prix: '); ReadLn(produits[i].Prix);
Write('Quantite: '); ReadLn(produits[i].Quantite);
End;
total := 0;
For i := 1 To 3 Do
total := total + (produits[i].Prix * produits[i].Quantite);
WriteLn('Valeur totale du stock: ', total:0:2);
ReadLn;
End.
💡 خلاصة
السجلات (Records) في Pascal تسمح بتجميع بيانات متنوعة في كيان واحد. يتم تعريفها باستخدام Record...End داخل Type. نصل إلى الحقول باستخدام النقطة (.) أو العبارة With. يمكن دمج السجلات مع المصفوفات لإنشاء قواعد بيانات بسيطة. السجلات أساسية لفهم البرمجة المهيكلة والتحضير لبكالوريا تقني رياضي.
📍 دروس مشابهة
- الدوال والإجراءات في لغة Pascal (Fonctions et Procédures) — الثانية ثانوي — إعلام آلي
- المصفوفات (Tableaux) في لغة Pascal — أحادية وثنائية البعد — الثانية ثانوي — إعلام آلي
مدونة التربية و التعليم في الجزائر – دروس، فروض، نتائج امتحانات مدونة التربية والتعليم في الجزائر | تحضير الدروس، فروض واختبارات، نتائج البكالوريا وBEM، مسابقات التوظيف، والتوجيه المدرسي للطلاب وأولياء الأمور.