m.3oloum

زائرنا الكريم
يرجى التكرم بتسجيل دخولك إذا كنت عضو لدينا بالفعل
وإذا لم تكن كذلك فنحن نتشرف بانضمامك لأسرتنا
شكرا


إدارة المنتدى


m.3oloum
 
الرئيسيةس .و .جبحـثالتسجيلدخول
دليل الطالب
تصويت
ما رأيك بالتصميم الجديد للمنتدى ؟
ممتاز
71%
 71% [ 17 ]
جيد
25%
 25% [ 6 ]
لابأس به
4%
 4% [ 1 ]
غير مناسب
0%
 0% [ 0 ]
مجموع عدد الأصوات : 24
المواضيع الأكثر شعبية
المحاضرة 1 جبر خطي 2
المحاضرة 2 برمجة وخوارزميات
مرجع جبر A first cours in liner algebra رائع جدا
المحاضرة 2 تحليل 2
المحاضرة 1 تحليل متجهي
المحاضرة 1 برمجة وخوارزميات
المحاضرة 3 برمجة وخوارزميات
تاريخ الرياضيات
المحاضرة 1 برمجة وخوارزميات عملي
المحاضرة 1 تحليل 2
المواضيع الأخيرة
» الطابعات وأنواعها
الثلاثاء أبريل 09, 2013 7:10 pm من طرف hana sh

» وحدات التخزين الثانوية {التنظيم المنطقي للسواقات (الذاكرة الميتة)}
السبت أبريل 06, 2013 7:43 pm من طرف rouba kh

» الشاشات وأنظمة الألوان
السبت أبريل 06, 2013 7:43 pm من طرف rouba kh

» رسالة من الخوارزمي إلى نيوتن !
السبت أبريل 06, 2013 7:42 pm من طرف rouba kh

» تطور الرياضيات عند العرب
السبت أبريل 06, 2013 7:42 pm من طرف rouba kh

» ماذا بعد المليون
السبت أبريل 06, 2013 7:41 pm من طرف rouba kh

» التحليل الرياضي
السبت أبريل 06, 2013 7:41 pm من طرف rouba kh


شاطر | 
 

 التسجيلة Record

اذهب الى الأسفل 
كاتب الموضوعرسالة
maya kemara



انثى

عدد المساهمات : 7

نقاط : 9756

السٌّمعَة : 0

تاريخ التسجيل : 21/02/2013


مُساهمةموضوع: التسجيلة Record   الخميس فبراير 28, 2013 9:47 pm

التسجيلة Record
التسجيلة أو record :

يستخدم هذا النمط من بنى المعطيات لتغليف أو كبسلة المعطيات (أي استخدام مجموعة من المعطيات وكأنها كتلة واحدة).

لتوضيح هذا المفهوم نلجأ إلى المثال الآتي :

إذا طرحت مسألة التعامل مع بيانات الطلاب , فإن الطالب يعرف بأسمه الأول وبإسمه الأخير وبعمره وبتاريخ التسجيل وووو...... (أي مجموعة من

المعطيات وسيتم التعامل معها على أنها كتلة واحدة مرتبطة بالطالب).

فإن الأسم الأول والأخير هو من النمط string

الرقم هو من النمط integer

والتاريخ يحوي على ثلاثة أنماط integer : نمط للـDay ونمط للـMonth ونمط للـYear (والذي يعطي أيضاً مفهوم التسجيلة ،حيث يتم التعامل مع التاريخ وكأنه كتلة واحدة تحتوي على ثلاثة أجزاء وهي :اليوم والشهر والسنة).

ولكن بالنهاية فإن المستخدم سيتعامل مع الطالب ككل , فنقوم بصنع غلاف (كبسولة) لبيانات الطالب.

ولحل هذا المشكلة نلجأ إلى التسجيلة Record

سنقوم بإنشاء تسجيلة Record للتاريخ تحوي ثلاثة أنماط integer ثم ننشئ تسجيلة Record للطالب تحوي بيانات الطالب أي الأنماط المختلفة

الكود:
type
  Date=record
    Day:integer;
    Month:integer;
    Year:integer;
  end;
  STD=record
    Fname:string[20];//الإسم الأول
    Lname:string[20];//الإسم الأخير
    Age:integer;//العمر
    RegDate:Date;//تاريخ التسجيل وهو من النمط المعرف بالأعلى
    GPA:real;//معدل الطالب
    statue:Boolean;//حالة الطاب ناجخ أم راسب
  end;

الفرق بين Array و Record

Array : تستخدم لحفظ نوع واحد من المعطيات, مثلا: Array [1..100] of integer

Record : تستخدم لحفظ أنواع مختلفة من المعطيات, كما في المثال السابق فقد ضم STD كل من : String, Integer, Real, Boolean و حتى Record ثان.

كيفية التعامل مع Record

لكي نتعامل مع الـ Record , أي نقرأها ونطبعها على الشاشة ,وبفرض لدينا المسألة السابقة , نريد قراءة الإسم الأول والأخير للطالب وتاريخ التسجيل وعمره ..... الخ , فيصبح البرنامج

قراءة بيانات طالب واحد

الكود:
type
  Date=record
    Day:integer;
    Month:integer;
    Year:integer;
  end;
  STD=record
    Fname:string[20];//الإسم الأول
    Lname:string[20];//الإسم الأخير
    Age:integer;//العمر
    RegDate:Date;//تاريخ التسجيل وهو من النمط المعرف بالأعلى
    GPA:real;//معدل الطالب
    statue:Boolean;//حالة الطاب ناجح أم راسب
  end;
var
  VSTD:STD;
begin
  readln(VSTD.Fname);//قراءة الإسم الأول ونلاحظ أننا وصلنا إلى الإسم الأول عن طريق وضع نقطة خلف أسم التسجيلة
  readln(VSTD.Lname);
  readln(VSTD.Date.Day);//نلاحظ كيفية الوصول إلى يوم التسجيل بحيث أننا وضعنا تالايخ التسجيل ضمن تسجيلة منفصلة
  readln(VSTD.Date.Month);
  readln(VSTD.Date.year);
  readln(VSTD.Age);
  readln(VSTD.GPA);
  readln(VSTD.Statue);
end.

طباعة البيانات على الشاشة , يصبح جسم البرنامج

الكود:
begin
  writeln(VSTD.Fname); 
  writeln(VSTD.Lname);
  writeln(VSTD.Date.Day);
  writeln(VSTD.Date.Month);
  writeln(VSTD.Date.Year);
  writeln(VSTD.Age);
  writeln(VSTD.Statue);
 end.

نلاحظ أننا تعاملنا مع طالب واحد , لكن إذا أردنا التعامل مع أكثر من طالب , فنعرف مصفوفة من نمط ٍSTD المعرف من نمط Record

فيصبح البرنامج في حالة قراءة بيانات الطلاب

الكود:
var
    ASTD:array [1..100] of STD;   
    i:integer; 
begin
    for i:=1 to 100 do 
      begin       
        Readln(ASTD[i].Fname);       
        Readln(ASTD[i].Lname);       
        Readln(ASTD[i].Date.Day);       
        Readln(ASTD[i].Date.Month);       
        Readln(ASTD[i].Age);       
        Readln(ASTD[i].statue);   
      end;

في كل مرة نريد التعامل مع الـ Record يجب علينا كتابة أسمها قبل ما نريد التعامل معه من بيانات , ولكن هذا يأخذ وقت ولو كان صغير , ولحل هذه المشكلة , فيوجد تعليمة في الباسكال للتعامل مع التسجيلة , وهي تعليمة With Record Do بحيث نضع اسم التعليمة مكان كلمة Record فيصبح جسم البرنامج

الكود:
With VSTD Do
  begin
    readln(Fanme);// وهكذا مع الأسم الأخير و....الخ , وأيضاً من أجل تعليمة القراءة
    with Date do//قراءة تسجيلة ضمن تسجيلة
      begin
        readln(Day);
        readln(month);
      end;
  end;
//ومن أجل عدد من الطلاب
for i:=1 to 10 do
  With ASTD Do
    begin
      readln(Fname);
    with Date do//قراءة تسجيلة ضمن تسجيلة
      begin
        readln(Day);
        readln(month);
      end;
  end;
الرجوع الى أعلى الصفحة اذهب الى الأسفل
 
التسجيلة Record
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
m.3oloum :: مواد دراسية :: البرمجة :: بُنى المعطيات الأساسية-
انتقل الى:  
 
إدارة منتديات سوريا الرياضيات ترحب بكم يمكنكم التواصل معنا من خلال صفحتنا على الفيس بوك \ syriamath أو على صفحتنا على تويتر @ syriamath كما يمكنكم التواصل معنا من خلال بريدنا الإلكتروني support@syriamath.com

FacebookTwitter
أختر لغة المنتدى من هنا