• 0
أحمد أبو عبد البر

الدرس الخامس في لغة Object pascal:المصفوفات

سؤال

بسم الله الرحمن الرحيم

المصفوفات arrays

 

المصفوفة هي عبارة عن صف أو مجموعة من متغيرات ذات نوع واحد، مثلاً إذا قلنا أن لدينا مصفوفة من الأعداد الصحيحة تحتوي على 10 عناصر فإن تعريفها يكون كالتالي

 

 

 

Numbers: array [1 .. 10] of Integer;

 

 

 

ويمكننا وضع قيمة في المتغير الأول في المصفوفة كالتالي:

 

 

 

Numbers[1]:= 30;

 

 

 

ويمكننا وضع قيمة في المتغير الثاني في المصفوفة كالتالي:

 

 

 

Numbers[2]:= 315;

 

 

 

في المثال التالي نقوم بتخزين درجات 10 طلاب ثم عرضها:

 

var  Marks: array [1 .. 10] of Integer;  i: Integer;begin  for i:= 1 to 10 do  begin    Write('Input student number ', i, ' mark: ');    Readln(Marks[i]);  end;  for i:= 1 to 10 do  begin    Write('Student number ', i, ' mark is : ', Marks[i]);    if Marks[i] >= 40 then      Writeln(' Pass')    else      Writeln(' Fail');  end;  Writeln('Press enter key to close');  Readln;end.

 

 

نجد أننا إستخدمنا حلقة for لإدخال وطباعة الدرجات. كذلك قمنا بمقارنة نتيجة كل طالب داخل الحلقة لنعرف الناجح وغير الناجح.

 

 

يمكن تعديل البرنامج السابق لنعرف أكبر وأصغر درجة في الدرجات كالتالي:

 

 

var  Marks: array [1 .. 10] of Integer;  i: Integer;  Max, Min: Integer;begin  for i:= 1 to 10 do  begin    Write('Input student number ', i, ' mark: ');    Readln(Marks[i]);  end;  Max:= Marks[1];  Min:= Marks[1];  for i:= 1 to 10 do  begin    // Get if current Mark is maximum mark or not    if Marks[i] > Max then      Max:= Marks[i];    // Check if current value is minimum mark or not    if Marks[i] < Min then      Min:= Marks[i];    Write('Student number ', i, ' mark is : ', Marks[i]);    if Marks[i] >= 40 then      Writeln(' Pass')    else      Writeln(' Fail');  end;  Writeln('Max mark is: ', Max);  Writeln('Min mark is: ', Min);  Writeln('Press enter key to close');  Readln;end.

 

 

نلاحظ أننا إفترضنا أن الرقم الأول هو أكبر درجة لذلك قمنا بوضعه في المتغير Max كذلك إعتبرنا أنه أصغر درجة فوضعناه في المتغير Min إلى أن يثبت العكس في كلا الحالتين.

 

  Max:= Marks[1];  Min:= Marks[1];

 

 

وفي داخل الحلقة عند طباعة الأرقام العشرة، قمنا بمقارنة كل رقم مع القيم max و min فإذا وجدنا رقم أكبر من max قمنا بإستبدال قيمة max بقيمة الدرجة الحالية ، ونفعل نفس الشيء مع القيمة min.

 

 

نلاحظ في المثال السابق أننا إستخدمنا تعليق مثل:

 

    // Get if current Mark is maximum mark or not

 

وقد بدأنا السطر بالعلامة // وهي تعني أن باقي السطر عبارة عن تعليق لاتتم ترجمته، إنما يستفيد منه المبرمج كشرح حتى يصبح البرنامج مقروء له ولمن يريد الإطلاع على البرنامج.

هذه الطريقة تصلح للتعليق القصير، أما إذا كان التعليق أكثر من سطر يمكس إستخدام الأقواس المعكوفة {} أو الأقواس والنجمة (* *)

 

مثلاً:

 

  for i:= 1 to 10 do  begin    { Get if current Mark is maximum mark or not      check if Mark is greater than Max then put      it in Max }    if Marks[i] > Max then      Max:= Marks[i];    (* Check if current value is minimum mark or not       if Min is less than Mark then put Mark value in Min    *)    if Marks[i] < Min then      Min:= Marks[i];    Write('Student number ', i, ' mark is : ', Marks[i]);    if Marks[i] >= 40 then      Writeln(' Pass')    else      Writeln(' Fail');  end;

 

 

كذلك يمكن الإستفادة من هذه الخاصية بتعطيل جزء من الكود مؤقتاً كالتالي:

 

  Writeln('Max mark is: ', Max); // Writeln('Min mark is: ', Min);  Writeln('Press enter key to close');  Readln;

 

 

في هذا المثال قمنا بتعطيل إجراء طباعة أصغر درجة.

 

 

=================================================

الدورة منقولة من كتاب الأستاذ الفاضل معتز عبد العظيم وما تراه باللون الأخضر فمن زياداتي

تم تعديل بواسطه أحمد أبو عبد البر
0

شارك هذا الرد


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

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

لاتوجد إجابات على هذا السؤال حتى الآن .


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

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