www.mazika4ever.tk

هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

اهلا وسهلا بك يا في منتدى مزيكا للابد ///// آخر عضو مسجل فى المنتدى https://mazika4ever.ace.st/u9575 فمرحباً به.


    دورة تعليم C++

    mr-fogy
    mr-fogy
    مشرف سابق


    ذكر
    المشاركات : 1050
    العمر : 35
    موقع سكنك : الجيزة
    وطيفتك : صيدلى
    مزاجى اليوم : دورة تعليم C++ 8010
    المهنة : دورة تعليم C++ Pharma10
    الهواية : دورة تعليم C++ Chess10
    تاريخ التسجيل : 30/01/2007
    نقاط التميز : 6508
    السٌّمعَة : 0

    دورة تعليم C++ Empty دورة تعليم C++

    مُساهمة من طرف mr-fogy السبت أبريل 28, 2007 11:06 pm

    المقدمة

    طُوِّرت لغة الـ C++ في باديء الأمر بغرض كتابة نُظُم التشغيل، وهي عبارة عن النسخة المطورة والمحسنة من لغة الـ C .
    ولكن لا تقتصر مهام هذه اللغة على ذلك فقط، فإمكاناتها غير محدودة، واستعمالاتها لا نهائية، وهي تستخدم حاليا في كتابة معظم المكونات الداخلية للأنظمة مثل الويندوز واللينكس، كما وتستخدم في كتابة بعض البرامج الإضافية مع النظام مثل الآلة الحاسبة ولعبة (ماسحة الألغام Mine Sweeper) من ويندوز، وباستطاعتكم ان تجدوا نسخاً أخرى من هذه اللعبة مكتوبة من قِبَل مبرمجين محترفين ومتوسطين، ولكنها لا تضاهي نسخة ويندوز حيث تم تطويرها على يد مجموعة من المبرمجين المحترفين مجتمعين..

    تقوم لغة الـ C++ على مفردات قريبة للغة الإنسان مما يجعلها سهلة ومستساغة مع الممارسة المستمرة، وبالإمكان تعلم اساسياتها حتى لو كان المتعلم في المرحلة الابتدائية على أن يكون ملماً باللغة الانجليزية (حاسبوا على دي يا جماعة دورة تعليم C++ Wink).

    بإمكانكم معرفة المزيد عن تاريخ هذه اللغة باختصار في هاتين الصفحتين:
    http://mathbits.com/MathBits/CompSci...on/history.htm
    http://www.cplusplus.com/info/history.html

    ولمن يريد المزيد من المعلومات بإمكانه زيارة هذه الصفحة:
    http://en.wikipedia.org/wiki/C++

    mr-fogy
    mr-fogy
    مشرف سابق


    ذكر
    المشاركات : 1050
    العمر : 35
    موقع سكنك : الجيزة
    وطيفتك : صيدلى
    مزاجى اليوم : دورة تعليم C++ 8010
    المهنة : دورة تعليم C++ Pharma10
    الهواية : دورة تعليم C++ Chess10
    تاريخ التسجيل : 30/01/2007
    نقاط التميز : 6508
    السٌّمعَة : 0

    دورة تعليم C++ Empty رد: دورة تعليم C++

    مُساهمة من طرف mr-fogy السبت أبريل 28, 2007 11:07 pm

    الدرس الأول

    قبل أن نكتب أي برنامج، يجب بدايةً أن نفهم ما هو البرنامج وما هي مكوناته..
    فالبرنامج هو عبارة عن مجموعة من الأوامر التي تؤدي في مجملها وظيفة معينة، لذلك يتحتم على المبرمج أن يفكر في هدف برنامجه وطريقة عمله قبل كتابته، والارتجال في هذه الحالة يجعل كتابة برنامج جيد أمراً صعباً للغاية، فبرامج الـ C++ تعتمد وبشكل كبير على التنظيم والترتيب، فأحياناً قد تؤدي العشوائية في الكتابة لإنتاج برنامج مبهم لا يستطيع حتى كاتبه أن يفهمه..

    ولكي نبدأ بكتابة أي برنامج، علينا أولا أن نحدد الأوامر التي سنقوم باستعمالها، حيث لا تأتي هذه الأوامر من العدم، فكل أمر نستخدمه في الـ C++ مخزن في (مكتبة Library) وهي عبارة عن مكان يخزن فيه مجموعة من الأوامر المترابطة، وأهم مكتبة والتي لن نستغني عنها في كل برامجنا هي مكتبة (iostream)، وهي اختصار لـ ( input and output stream)، وهي المكتبة التي تحتوي على أوامر الإدخال والإخراج وما يتعلق بهما..

    ومن أهم الأوامر الموجودة في هذه المكتبة:
    cin : وهو أمر إدخال يحث البرنامج على استقبال المدخلات من لوحة المفاتيح، وهو يقوم باستقبال المدخلات إلى أن يستقبل مساحة فارغة كأن ينقر المستخدم زر space أو Enter أو Tab أو أي زر آخر يترك مساحة فارغة.
    cout : وهو أمر إخراج يحث البرنامج على طباعة رمز أو جملة أو رقم على الشاشة.
    endl : وهو اختصار لـ End Line وهو أمر يحث المؤشر على الشاشة أن ينزل سطراً واحداً من موضعه الحالي.

    بدايةً، نفتح صفحة جديدة جاهزة للبرمجة:

    دورة تعليم C++ 61108_01171729406

    دورة تعليم C++ 61108_11171729406


    أولا: نختار من قائمة File اول خيار New
    ثانيا: بعد أن تظهر لنا شاشة New ، نختار نافذة Files
    ثالثا: نختار C++ source file من القائمة
    رابعا: نكتب اسم الملف الذي سيحتوي البرنامج
    خامسا: نحدد المكان الذي يتم تجميع البرنامج فيه وحفظه
    ثم نضغط Ok فتظهر لنا نافذة بيضاء لنبدأ بالكتابة فيها.

    وعند كتابة البرنامج، نقوم أولا بتحديد المكتبات التي سنستخرج منها الأوامر المطلوبة، ثم نحدد الأوامر التي سنستخدمها:

    دورة تعليم C++ 61108_01171732249

    في السطر الأول حددنا المكتبة المراد استخدامها بالأمر include، ولاحظوا أنها تصبح باللون الأزرق بشكل تلقائي عند كتابتها، فإذا لم تتلون فعليكم بتصحيحها. ولاحظوا اننا نسبق كلمة include بعلامة الهاش # ونضع اسم المكتبة بين قوسين مدببين <>

    وفي السطور الثاني والثالث والرابع حددنا الأوامر التي نريد استخدامها باستخدام أمر using والذي يتلون بالأزرق أيضا، ثم نكتب std متبوعة بنقطتين فوق بعض مرتين دون مسافة بينهما :: ثم نكتب اسم الأمر المطلوب مع ملاحظة إنهاء الجملة بالرمز ; ومن دونه لن يستطيع المُجَمِّع تنفيذ الجملة.

    ولكن بالامكان التخلي عن هذه السطور الثلاثة والاستعاضة عنهم بسطر واحد:
    ;using namespace std

    وهو أمر يسمح لكم باستخدام جميع الأدوات داخل المكتبة ولكنه يحجز مساحة أكبر من الذاكرة عند تنفيذ البرنامج، ولكنه لن يؤثر حاليا حيث ستكون جميع برامجنا صغيرة إلى أن ننتقل إلى مستوى أعلى من البرمجة.

    وبعد ذلك بإمكاننا البدء في كتابة قلب البرنامج، وهو عبارة عن function اسمه main، وسنتعلم عن الـ functions في موضوع آخر، أما بالنسبة لـ main فهو قلب أيّ برنامج ويجب توافره في جميع البرامج لكي تعمل.
    ونبدأ بأول سطر في main وهو السطر الذي يفتحه ويشير إلى بدايته:
    } ()int main
    نكتب أولا كلمة int وسنتعلم عنها في الدرس القادم إن شاء الله، ثم نكتب main ونتبعه بقوسين دائريين، ثم نضع قوساً مموجا } ليدل على بداية main ، وسنتعلم سبب فتح main بهذه الطريقة في مراحل متقدمة بإذن الله، ويكفي حاليا أن نعلم أن main يبدأ بهذه الطريقة.

    وبعد القوس } سنكتب قلب البرنامج وذلك ما سنبدأ بتعلمه في الدرس القادم ان شاء الله، ثم ننهي البرنامج بعبارة:
    ;return 0
    ثم نغلق main بقوس آخر {

    دورة تعليم C++ 61108_01171733744

    أو

    دورة تعليم C++ 61108_01171734611

    mr-fogy
    mr-fogy
    مشرف سابق


    ذكر
    المشاركات : 1050
    العمر : 35
    موقع سكنك : الجيزة
    وطيفتك : صيدلى
    مزاجى اليوم : دورة تعليم C++ 8010
    المهنة : دورة تعليم C++ Pharma10
    الهواية : دورة تعليم C++ Chess10
    تاريخ التسجيل : 30/01/2007
    نقاط التميز : 6508
    السٌّمعَة : 0

    دورة تعليم C++ Empty رد: دورة تعليم C++

    مُساهمة من طرف mr-fogy السبت أبريل 28, 2007 11:09 pm

    الدرس الثاني

    الآن وبعد أن تعرفنا على البنية الأساسية لأي برنامج، نستطيع أن نبدأ بتعلم كتابة البرامج.. وأي برنامج يقوم باستقبال مدخلات وإخراج مخرجات أو يقوم بكلتا العمليتين معاً..

    أولاً: المدخلات:
    وسيلة الإدخال الرئيسية التي سنستخدمها ستكون لوحة المفاتيح keyboard ، ولكن لوحة المفاتيح تستطيع إدخال أنواع كثيرة من المدخلات، لذلك فقد تم تخصيص رمز لكل نوع، فكل رمز يدل على نوع المدخل ومساحته في الذاكرة، فمثلاُ تقوم بعض الأنظمة بتخزين الأرقام الصحيحة في 8-bit من الذاكرة، بينما تقوم بتخزين الأرقام الحقيقية (التي تحتوي على فاصلة عشرية) في 16-bit من الذاكرة، لذلك يجب تحديد نوع المدخل قبل التعامل معه.. والأنواع الرئيسية الأكثر استخداماً هي:
    int : وهو اختصار لكلمة integer ، ومعناها مجموعة الأعداد الصحيحة -3 ، -2، -1 ، 0 ، 1 ، 2 ، 3
    double : وهو مجموعة الأعداد الحقيقية -1.4 ، 5.6 ، 3.456
    char : وهو مجموعة الحروف والرموز s ، H ، * ، $ ، o
    وسنتعرف على أنواع أخرى لاحقاً بإذن الله..

    والآن، عندما أريد استقبال أي قيمة من المستخدم، يجب أن أحجز لتلك القيمة مساحة في الذاكرة، ولكي يتعرف البرنامج على مكان هذه القيمة في الذاكرة يجب أن يكون لها اسم مميز، ونسمي هذه العملية "التعريف" أو "التصفير" "initialization" ، وهي تكون كالآتي:
    ;int x
    فنكتب نوع المدخل أولا، وقد حددناه بنوع int ، ثم نكتب اسم المدخل الذي يجب أن لا يبدأ برقم ولا أن يحتوي فراغات في منتصفه، فاسم 2ab مثلاً غير مقبول لأنه يبدأ برقم، واسم s k غير مقبول لأنه يحتوي فراغاً، ولكن يمكن تغييرهم إلى ab2 و s_k ، فوجود الرقم في الوسط أو النهاية لا يضر، ووضع شرطة تربط الفراغات لا تضر أيضا.
    وفي هذه الجملة قمت بحجز مساحة في الذاكرة تكفي لعدد صحيح وأعطيتها اسم x ، وبإمكاني أن أعين لها قيمة الآن، ولا أحتاج أن أكتب نوع x مرة أخرى داخل البرنامج بعد أن حددت نوعه أول مرة (أنظر المثال).
    ويمكن الآن تعيين قيمة للمتغير x من قِبَل المبرمج أو المستخدم. ففي حال أراد المبرمج والذي هو انت تعيين قيمة المتغير (variable) ما عليه إلا استخدام الأمر = ، فمثلاً إذا أردت أن أحدد قيمة x منذ البداية، أكتب:
    ;int x = 5
    [right]وإذا أردت تحديده لاحقا بعد التعريف، فلا أحتاج أن أحدد نوعه:
    ;x = 5
    [right]أما إذا أردت مستخدم البرنامج أن يدخل قيمة المتغير بنفسه، فهنا يأتي دور أمر الإدخال cin ، وهو الأمر الذي يحث البرنامج على استقبال مدخل من لوحة المفاتيح، ويكون أمر الإدخال كالتالي:
    ;cin >> x
    [right]نكتب أمر الإدخال cin أولاً، ثم نتبعه بقوسين مدببين متجهين إلى الداخل، ثم نتبعهما باسم المتغير المراد تخزين المدخل فيه، ثم ننهي الجملة بالرمز ; ، ولاحظوا أننا نستخدم قوسين إلى الداخل << مع أمر الإدخال cin ، وقوسين إلى الخارج >> مع أمر الإخراج cout .

    ثانياً: المخرجات:
    وعند الإخراج نستخدم أمر cout ، ويقوم أمر cout بطباعة المتغيرات والنصوص على الشاشة، ففي حال أردت طباعة متغير، ما علي سوى كتابة اسمه، لتظهر قيمته على الشاشة، كالآتي:
    ;cout << x
    [right]نكتب أمر الإخراج cout ثم نتبعه بقوسين مدببين إلى الخارج، ثم نتبعه باسم المتغير المراد طباعته على الشاشة، وننهي الجملة بالرمز ; ، وإذا أردنا المؤشر أن ينزل للسطر التالي لنطبع من جديد، ما علينا إلا أن نتبعه بالأمر endl والذي يجب أن يسبق بقوسين آخرين، كالآتي:
    ;cout << x << endl
    [right]أما إذا أردنا أن نطبع نصاً من اختيارنا، فنسلك نفس الطريقة، مع استبدال المتغير بالنص المطلوب وتوسيط النص بين الأقواس الصغيرة " " (Double Quotation) ، كالآتي:
    ;"cout << "This is an example
    [right]وبإمكاننا طباعة النصوص والمتغيرات بجملة واحدة كالآتي:
    ;cout << "Variable x is equal to " << x << endl
    [right]
    ثالثاً: تنفيذ البرنامج:
    عند تنفيذ البرنامج، نقوم بالضغط على زر compile دورة تعليم C++ 61108_01171828005 أو زر build دورة تعليم C++ 61108_11171828005 من شريط المهام (محدد بالأحمر في الصورة)، سيطلب منك البرنامج الموافقة على إنشاء مشروع (بناء الملفات المكون منها البرنامج)، اضغط موافق، ثم اضغط على زر excute دورة تعليم C++ 61108_01171828140 ليبدأ البرنامج بالعمل، أنظر المثال:

    دورة تعليم C++ 61108_21171828005


    دورة تعليم C++ 61108_11171828140

    استخدمت في هذا البرنامج نفس البنية الأساسية التي ذكرناها في الدرس الأول، ثم كتبت قلب البرنامج داخل main ، وفي السطر الأول قمت بتعريف متغير اسميته x وأعطيته قيمة ابتدائية 5، ثم أعطيت الأمر بطباعة قيمة x وجعلت المؤشر ينزل سطراً واحدا، وكما تلاحظون في الشاشة السوداء فلقد كتب البرنامج قيمة x وهي 5 ثم بدأ الكتابة من السطر التالي.. وبعد ذلك عينت قيمة أخرى لـ x وهي 6 باستخدام الأمر = مع ملاحظة أني لم أحدد نوع x مرة أخرى حيث حددتها في بداية البرنامج بنوع int . ثم أمرت بطباعة قيمة x مرة أخرى مع نزول المؤشر سطراً واحداً، وتلاحظون في الشاشة السوداء أن البرنامج طبع 6 في السطر الثاني وهي قيمة x الحالية.. ثم أمرت البرنامج بطباعة نص ":Enter an integer number" ومعناه (أدخل عددا صحيحاً، مع ملاحظة أن البرنامج لا يفهم النص، ولكنه يقوم بطباعته فقط)، وفي السطر التالي أمرت البرنامج باستقبال قيمة من المستخدم وتعيينها لـ x ، فقمت بإدخال الرقم 8 وضغطت زر Enter ، فقام البرنامج بتعيين القيمة التي أدخلتها لـ x .. ثم أمرت البرنامج بطباعة x والنزول سطرا واحدا، وتلاحظون في الشاشة السوداء أنه طبع القيمة التي عينتها لـ x ..

    وبهذا ينتهي الدرس الثاني بحمد الله، وستجدون البرنامج في أسفل الموضوع، يمكنكم فتح برنامج جديد كما ذكرنا في الدرس الأول ونسخ هذا البرنامج فيه وتشغيله وتجريبه ورؤية النتائج بأنفسكم، وأنا بانتظار أسألتكم وتعليقاتكم..

    لا تنسوني بالدعاء يا إخواني جزاكم الله خيراً
    دورة تعليم C++ Biggrin


    [/right]

    [/right]

    [/right]

    [/right]

    [/right]

    [/right]

    [/right]


    #include <iostream>

    using namespace std;

    int main() {

    int x = 5;

    cout << x << endl;

    x = 6;

    cout << x << endl;

    cout << "Enter an integer number: ";
    cin >> x;

    cout << x << endl;

    return 0;
    }




    mr-fogy
    mr-fogy
    مشرف سابق


    ذكر
    المشاركات : 1050
    العمر : 35
    موقع سكنك : الجيزة
    وطيفتك : صيدلى
    مزاجى اليوم : دورة تعليم C++ 8010
    المهنة : دورة تعليم C++ Pharma10
    الهواية : دورة تعليم C++ Chess10
    تاريخ التسجيل : 30/01/2007
    نقاط التميز : 6508
    السٌّمعَة : 0

    دورة تعليم C++ Empty رد: دورة تعليم C++

    مُساهمة من طرف mr-fogy السبت أبريل 28, 2007 11:10 pm

    الدرس الثالث

    سنقوم في هذا الدرس إن شاء الله بتدعيم الدرسين الأول والثاني حتى نأخذ صورة أوضح عن الأوامر الرئيسية المستخدمة في الـC++ وكي نستطيع أن نبدأ في كتابة برامج أكثر تعقيداً..
    وسنتعلم أكثر عن أوامر cin و cout ..

    أولاً: cin :
    كما تعلمنا سابقاً فإن أمر cin يقوم باستقبال المدخلات من لوحة المفاتيح وقد استخدمناه في أحد الأمثلة، لكن ماذا لو أردنا أن نستقبل أكثر من مدخل من لوحة المفاتيح دون الحاجة إلى كتابة أكثر من أمر لذلك.. باستطاعتنا أن نستقبل أكثر من مدخل بأمر cin بكتابة الأمر متبوعاً بالمدخلات مع فصل كل مدخل عن الآخر بقوسين مدببين إلى الداخل، فمثلا لو أردت تعيين مدخلات للمتغيرات x و y و z بغض النظر عن انواعهم المختلفة، فكون x عددا صحيحاً أو y حرفاً لن يؤثر في العملية، فالأمر سيكون كتالي:
    ;cin >> x >> y >> z
    وعند تنفيذ البرنامج، سيقوم بتعيين كل مدخل بالترتيب بعد استقبال مساحة فارغة من لوحة المفاتيح، فلو قام المستخدم بإدخال (8) ثم (space) ثم (a) ثم (space) ثم (5) ثم (Enter)، فسيعين البرنامج 8 لـx و a لـy و5 لـz . مع ملاحظة أن أمر cin يتعامل مع جميع المساحات الفارغة بنفس الطريقة، فلسنا ملزمين بإدخال (space) أو (Enter) أو (Tab) أو غيرها من المساحات الفارغة بشكل معين، فهو يتقبلها جميعا بنفس الطريقة.

    ثانياً: cout :
    نعرف مما سبق أن أمر cout يقوم بطباعة المعلومات على الشاشة، وهو من الأوامر البسيطة سهلة التعامل. ويمكننا أن ننفذ مجموعة من الأوامر في جملة واحدة كما فعلنا مع أمر cin ، فلو أردنا أن نطبع المتغيرات الثلاثة دفعة واحدة على الشاشة، نستخدم نفس الطريقة المستخدمة في أمر cin مع اختلاف اتجاه الأقواس:
    ;cout << x << y << z << endl
    وستكون النتيجة على الشاشة كالتالي:
    8a5
    ونلاحظ أن جميع المتغيرات طبعت متلاصقة، حيث أن إضافة الفراغات بينهم تعتمد على كاتب البرنامج، وبإمكاننا إضافة الفراغات على شكل نصوص كالتالي:
    ;cout << x << " " << y << " " << z <<endl
    وستكون النتيجة كالتالي:


    دورة تعليم C++ D16c8c40ed



    في الدرس القادم إن شاء الله سنتعلم عن أمر endl وعن الأوامر المتعلقة بالنصوص..
    mr-fogy
    mr-fogy
    مشرف سابق


    ذكر
    المشاركات : 1050
    العمر : 35
    موقع سكنك : الجيزة
    وطيفتك : صيدلى
    مزاجى اليوم : دورة تعليم C++ 8010
    المهنة : دورة تعليم C++ Pharma10
    الهواية : دورة تعليم C++ Chess10
    تاريخ التسجيل : 30/01/2007
    نقاط التميز : 6508
    السٌّمعَة : 0

    دورة تعليم C++ Empty رد: دورة تعليم C++

    مُساهمة من طرف mr-fogy السبت أبريل 28, 2007 11:10 pm

    الدرس الرابع

    في هذا الدرس سنتعلم عن أمر endl والأوامر النصية الأساسية، ويمكن اعتبار هذا الدرس امتداداً لموضوع cout . ولكن أولاً سنضيف إضافات أخيرة على موضوع cout .

    باستطاعة أمر cout تنفيذ العمليات الحسابية، فمثلاً لو أردت أن أطبع على الشاشة مجموع المتغيرين x و y ، فما علي سوى كتبة العملية الحسابية داخل أمر cout ، وسيطبع على الشاشة النتيجة النهائية فقط. فلو كان x يساوي 5 و y يساوي 6 ، ثم كتبت الأمر كالتالي:
    ;cout << x + y << endl
    فستكون النتيجة على الشاشة كالتالي:
    11
    ولا يحصل في هذه العملية أي تغيير لقيمة المتغيرات الأصلية. وبإمكاننا تضمين العمليات الحسابية ضمن مخرجات أخرى، كالتالي:
    ;cout << "The product of 5 and 6 = " << x * y << endl
    وستكون النتيجة على الشاشة كالتالي:
    The product of 5 and 6 = 30

    والآن ننتقل إلى الدرس الجديد:

    كما ذكرنا سابقاً فإن أمر endl هو اختصار لعبارة end line وهو يحث المؤشر على النزول للسطر التالي، وهو يستخدم مع أمر cout فقط، ولاحظوا أن أمر endl لن يعمل مع أمر cout إلا إذا فصلناه عن باقي المخرجات بالأقواس المدببة، كالتالي:
    ;cout << "My name is: " << x << endl
    ولا يشترط أن يقع أمر endl في نهاية الجملة، فيمكن أن يقع في البداية أو المنتصف أو النهاية:
    ;cout << endl << "1" << endl << "2" << endl << "3" << endl
    وستكون النتيجة كالتالي، مع ملاحظة أن أول سطر سيكون فارغاً حيث أننا بدأنا الأمر بـ endl :

    1
    2
    3
    هذا كل ما يجب معرفته عن أمر endl .. والآن إذا نظرنا لآخر أمر كتبناه، سنجد أن إدراج أمر endl في كل مرة للنزول سطراً واحداً يجعل الأمر طويلاً ومربكاً، وهنا يأتي دور الأوامر النصية، فالأوامر النصية هي عبارة عن رموز تكتب ضمن النصوص وتؤدي غرضاً معيناً ولا تظهر على الشاشة عند تنفيذ البرنامج.
    وأهم هذه الأوامر:
    n\ : وهو اختصار لـ new line ، وهو يعمل عمل endl .
    t\ : وهو اختصار لـ Tab ، وهو يعمل عمل الزر Tab .
    "\ : وهو أمر يسمح لنا بطباعة الرمز " على الشاشة.
    // : وهو أمر يسمح لنا بكتابة التعليقات في البرنامج دون أن تكون جزءاً تنفيذياً منه.
    وسأقوم بشرح جميع هذه الأوامر، في المثال التالي:

    دورة تعليم C++ 61108_01172836698

    دورة تعليم C++ 61108_11172836698

    وقد أضفت الأرقام الملونة على الصور لتسهيل تتبع نتيجة كل أمر. والآن نبدأ بتحليل البرنامج من البداية:
    نلاحظ أني عرَّفت المتغيرين x و y في بداية البرنامج رغم أني لم استخدمهما، وذلك لتوضيح أمرين، أولهما أن البرنامج لن يتأثر بوجود المتغيرات أو عدمها إذا لم يتم استخدامها، ولكنها تستهلك من مساحة من الذاكرة، فالأفضل عدم تعريف أي متغير لست بحاجة إليه؛ أما الأمر الثاني فهو أن بالإمكان تعريف أكثر من متغير بأمر واحد مع فصلهما برمز الفاصلة , وإنهاء الجملة بالرمز ; مع ملاحظة أن هذا الأمر لن يعمل إلا إذا كانت جميع المتغيرات المشتركة في التعريف من نفس النوع كما في المثال (int) .
    وستلاحظون في السطر الثاني أن الجملة باللون الأخضر، وذلك لأني بدأت الجملة بالرمز // وهو عبارة عن شرطتين مائلتين وظيفتهما منع البرنامج من تنفيذ ما يكتب بعدهما في نفس السطر، وتستخدم للتوضيح لا أكثر، وسترون أني أضفت توضيحات قبل كتابة كل أمر باستخدام هذا الرمز، وتساعد هذه الطريقة المبرمج على فهم البرنامج وتذكره بحيث يسهل عليه تعديله. ولا تؤثر التعليقات الخضراء في طريقة تنفيذ البرنامج بأي شكل، فوجودها مثل عدمها بالنسبة للبرنامج.
    وفي السطر الثالث قمت بطباعة الأرقام من 1 إلى 5 تحت بعض باستخدام أمر endl .
    ثم أضفت أمر ;cout << endl لأترك فراغاً بعدها حتى لا تختلط مع المخرجات من الأمر الذي يليه.
    ثم قمت بطباعة الأرقام مرة أخرى ولكن باستخدام أمرn \ ، ونلاحظ أن هذا الأمر يكون ضمن النص، أي بين علامتي النص " " ، ولذلك أسمي هذا الأمر (أمر نصي). ولاحظوا اني لم أترك فراغاً بين الأمر وبين الأرقام، حيث أن البرنامج يميز أمر n\ حتى لو لم يسبق بفراغ، وإذا سبقته أو لحقته بفراغات فإن البرنامج سيقوم بطباعة الفراغات على الشاشة.
    وبعد ذلك، طبعت الأرقام وفصلتها عن بعضها بأمر t\ والذي يعمل عمل الـTab حيث يترك فراغات متساوية بين المخرجات، وأنهيت الجملة بأمر n\ لكي ينزل المؤشر إلى السطر التالي، وأضفت أمر endl ليترك السطر فارغاً ويتوجه للسطر الذي يليه.
    وفي آخر أمر قمت بطباعة نص بين علامتي الاستشهاد " " ، وكما علمنا فإن النصوص تكتب بين العلامتين " "، ويقوم البرنامج بطباعة ما بينهما دون طباعتهما، ولذلك إذا أردنا طباعتهما، فعلينا أن نستخدم الأمر "\ كما في المثال.

    وفي الموضوع المقبل إن شاء الله، سنبدأ بدراسة موضوع
    If Statement
    mr-fogy
    mr-fogy
    مشرف سابق


    ذكر
    المشاركات : 1050
    العمر : 35
    موقع سكنك : الجيزة
    وطيفتك : صيدلى
    مزاجى اليوم : دورة تعليم C++ 8010
    المهنة : دورة تعليم C++ Pharma10
    الهواية : دورة تعليم C++ Chess10
    تاريخ التسجيل : 30/01/2007
    نقاط التميز : 6508
    السٌّمعَة : 0

    دورة تعليم C++ Empty رد: دورة تعليم C++

    مُساهمة من طرف mr-fogy السبت أبريل 28, 2007 11:11 pm

    الدرس الخامس

    If - Else Statements

    statement هي عبارة عن جملة تقبل الخطأ أو الصواب، فمثلاً لو قلت (محمد يزن 60 كيلو جراماً) فبإمكاننا أن نعتبر هذه الجملة statement لأنها بالإمكان أن تكون صحيحة وبالإمكان أن تكون خاطئة، بغض النظر عن صحتها. أما إذا قلت (هذه لوحة جميلة) فلا نستطيع أن نقرر ما إذا كانت هذه الجملة صحيحة أم خاطئة حيث أن شخصاً غيري قد لا يراها جميلة، وفي هذه الحالة لا تعتبر هذه الجملة statement .
    أما if فتعني باختصار "لو"، و else تعني "وإلا" أو "سِوى" . وسنفهم لماذا سمي هذا الأمر بـ if - else statement عندما نتعلم كيفية استخدامه.

    نحن نستخدم الـ if - else statement بشكل رئيسي للمقارنة والتفضيل بين أمرين. فمثلاً لو أردت أن أكتب برنامجاً يقوم باستقبال عددين، ثم يقوم بطياعة العدد الأكبر على الشاشة، فلا بد أن يقوم هذا البرنامج بمقارنة العددين أولاً ليستطيع أن يقرر أيهما أكبر. وسنقوم بذلك باستخدام الأمر if ، وهو من الأوامر سهلة الاستعمال والتي سنعتمد عليها بشكل كبير في معظم البرامج المستقبلية.

    عند كتابة البرنامج، سنقوم أولاً بتعريف متغيرين، ولنجعلهما a و b . ثم سنطبع على الشاشة جملة تطلب من المستخدم إدخال عددين صحيحين، ثم سنجعل البرنامج يقوم بمقارنتهما، وأخيراً سيقوم بطباعة العدد الأكبر على الشاشة، ولكن سنقوم بدمج عمليتي المقارنة والطباعة معاً، كالتالي:

    دورة تعليم C++ 61108_01173391851
    وبملاحظة الجزء الجديد في أسفل البرنامج، سنجد أنه ذا تسلسل منطقي:
    (if (a > b
    ;cout << a << endl
    وتعني بعبارة أخرى "لو كان a أكبر من b ، اطبع a على الشاشة، ثم:
    else
    ;cout << b << endl
    وتعني "وإلا، اطبع b على الشاشة.
    ومعنى الجملة كاملة "لو كان a أكبر من b اطبع a على الشاشة، وإذا لم يكن أكبر، اطبع b على الشاشة.
    فعندما نكتب أمر if نضع بجانبه قوسين ونضع بينهما المقارنة التي نريدها، ثم نتبعه بالأمر المراد تنفيذه، فيقوم أمر if باختبار العبارة التي بين القوسين، فإذا كانت صحيحة فإنه يقوم بتنفيذها، وإذا كانت خاطئة فإنه يتجاهلها وينتقل إلى الأوامر التي تليها. وعندما نريد تنفيذ أحد أمرين فإننا نتبع أمر if بأمر else ، ويقوم أمر else بتنفيذ الأمر المكتوب بعده مباشرة إذا كانت العبارة التي بين القوسين خاطئة، فلو لم يكن a أكبر من b ، فذلك يعني أن b أكبر من a بالتأكيد، لذلك جعلنا أمر else يقوم بطباعة b في حال لم يكن a أكبر من b .

    compound if statement

    وكلمة compound تعني "مركّب" أو أكثر تعقيداً، وهو يختلف اختلافاً طفيفاً عن المثال السابق، فلو نظرنا إلى المثال السابق، سنجد أن أمر if لا يقوم إلا بتنفيذ أمر واحد، وهو طباعة a ، وأمر else أيضاً ليس له غير وظيفة واحدة وهي طباعة b . ولكن إذا أردنا أمر if أو else أن ينفذا أكثر من أمر واحد عند تحقق شرطهما، فعلينا أن نجعل مجموعة الأوامر التي نريدها بين قوسين متعرجين { } .
    فمثلاً لو أردنا البرنامج أن يقوم بطباعة الرقم الأكبر ومربعه، فسنحتاج إلى أمرين (يمكن تنفيذ هذه العملية بأمر واحد، ولكننا سنستخدم أمرين لنوضح المثال)، وسيصبح البرنامج كالتالي:

    دورة تعليم C++ 61108_01173393546

    ونلاحظ، أننا إذا لم نضف القوسين، فإن البرنامج لن يعمل، حيث أن إزالة القوسين تعني أن أمر if ينفذ أمراً واحداً فقط، فسيعتبر البرنامج أمر (cout << a << endlدورة تعليم C++ Wink فقط هو التابع لأمر if ، وسيكون أمر (cout << a*a << endlدورة تعليم C++ Wink أمراً منفرداً يتم تنفيذه دون الاعتماد على أي أمر آخر، وبهذا لن يكون لوجود أمر else أي معنى، حيث أنه لا يعمل إلا إذا سبقه أمر if مباشرة بدون أوامر أخرى تفصل بينهما.

    وبإمكاننا كتابة أمر if بطريقة أخرى أسرع، ولكن لا يمكن استخدامها إلا في حالة أن يكون أمر if ينفذ أمراً واحداً، ويمكن استخدام هذه الطريقة مع أي أمر، فلو أردنا طباعة العدد الأكبر، سنكتب:
    ;cout << (a > b ? a : b) << endl

    دورة تعليم C++ 61108_01173394828

    ومعنى تلك الجملة مثل سابقتها في المثال الأول تماماً "إذا كان a أكبر من b اطبع a ، وإلا اطبع b " .

    أما إذا أردنا أن نعين العدد الأكبر إلى متغير آخر، وليكن x ، فسيكون ذلك كالتالي:
    ;(x = (a > b ? a : b


    فابستطاعتنا استخدام هذه الطريقة في الكثير من العمليات البسيطة لتوفير الوقت وتقليل الكتابة ليصبح البرنامج أوضح وأسهل للقراءة.


    وبهذا ينتهي هذا الدرس، وفي الدرس القادم سنتعلم كيف نستفيد من أمر if أكثر وأكثر إن شاء الله..
    mr-fogy
    mr-fogy
    مشرف سابق


    ذكر
    المشاركات : 1050
    العمر : 35
    موقع سكنك : الجيزة
    وطيفتك : صيدلى
    مزاجى اليوم : دورة تعليم C++ 8010
    المهنة : دورة تعليم C++ Pharma10
    الهواية : دورة تعليم C++ Chess10
    تاريخ التسجيل : 30/01/2007
    نقاط التميز : 6508
    السٌّمعَة : 0

    دورة تعليم C++ Empty رد: دورة تعليم C++

    مُساهمة من طرف mr-fogy السبت أبريل 28, 2007 11:11 pm

    الدرس السادس

    Nested if-else statement


    سنتعلم في هذا الدرس طريقة أخرى لاستخدام الـ if-statement ، وهو تكملة للدرس السابق.

    تعلمنا في الدرس السابق كيف نقوم بالمقارنة بين حالتين باستخدام الـ if-statement ، ولكن هذه الطريقة لا تعمل عندما نريد المقارنة بين أكثر من حالتين، فمثلاً، في المثال السابق قام البرنامج باختبار ما إذا كان العدد الأول أكبر من الثاني أو العكس، ولكنه لم يختبر ما إذا كانا متساويين. وفي هذه الحالة نستخدم أمر else if ، وسنفهم طريقة استخدامه من المثال التالي الذي سيقوم بإخبارنا ما إذا كان أحد العددين أكبر من الآخر أو ما إذا كانا متساويين.

    دورة تعليم C++ 61108_01173980339

    وقمنا في هذا البرنامج باختبار ما إذا كان العدد الأول أكبر من العدد الثاني، فإذا كانت الجملة صحيحة فإن البرنامج يطبع أن العدد الأول أكبر من الثاني، وإذا لم تكن صحيحة فإنه ينتقل للأمر الذي يليه (else if)، ثم يختبر ما إذا كان العدد الأول أصغر من الثاني فإذا تحققت الجملة فإنه يطبع هذه المعلومة على الشاشة، وأخيراً إذا لم تتحقق أي من الجملتين، فبلا شك يكون العددان متساويين ويقوم البرنامج بطباعة هذه المعلومة. ونلاحظ أننا نستخدم if فقط في أول جملة، ثم نستخدم else if في الجملة التي تليها، وبإمكاننا استخدامها قدر ما نريد كأن يكون لدينا مقارنة بين خمس أو ست حالات أو أكثر، ونختم آخر جملة بأمر else فقط. وكتبنا في آخر كل أمر طباعة الرموز "n\n\" وهي تجعل المؤشر ينزل سطرين، حيث أن أمر n\ يجعله ينزل سطراً واحداً كما ذكرنا سابقاً.
    كما ونلاحظ أننا لا نستطيع استخدام الطريقة السريعة التي تعلمناها في الدرس الماضي (cout << a>b ? a : b; ) في المقارنة بين أكثر من حالتين، حيث أنها لا تقبل إلا المقارنة بين أمرين فقط.

    ومن الأمور التي يجب أن نعرفها أيضاً هي كيفية المقارنة بين متغيرين من حيث التساوي أو عدمه، حيث أن أمر (=) لا يكتب داخل أمر if مثل ما يكتب خارجه. ولكن هذه المرة سنقارن بين حروف وليس أرقاماً حتى نُبيَِن إمكانية المقارنة بين الحروف.

    دورة تعليم C++ 61108_01173981478

    ونلاحظ أننا عندما نريد اختبار ما إذا كان المتغيرين متساويين فإننا نكتب رمز يساوي مرتين == ، بينما إذا أردنا أن نختبر ما إذا كانا غير متساويين فإننا نكتب علامة تعجب ملحوقة بعلامة التساوي =! . كما ونلاحظ أننا أنتهينا بأمر else if وليس else فقط كما ذكرنا أعلاه، وقد تعمدت ذلك لإيضاح أن إضافة else ليس ضرورياً في النهاية، فلو كتبنا مجموعة من المقارنات مبدوءة بـ if وباقيها else if دون إضافة else في النهاية فإن البرنامج سيقوم باختبار جميع الحالات وإذا لم تتحقق أي واحدة منها فإنه سينتقل للأمر التالي وسيكمل البرنامج وكأن شيئاً لم يكن، ولكن إذا أضفنا أمر else في النهاية وكتبنا بعده أمراً آخر، فإنه يقوم باختبار جميع الحالات التي تتبع أمر if و else if ، فإذا لم تتحقق أي منها فإنه يقوم بتنفيذ الأمر التابع للأمر else بغض النظر عن محتواه.

    اعذروني إخوتي إذا كان الشرح صعب الفهم، ولكن صدقوني هذا الموضوع في غاية السهولة وتطبيقه أسهل، ولكن عليكم التدرب عليه حتى تعتادوا على استخدامه،
    mr-fogy
    mr-fogy
    مشرف سابق


    ذكر
    المشاركات : 1050
    العمر : 35
    موقع سكنك : الجيزة
    وطيفتك : صيدلى
    مزاجى اليوم : دورة تعليم C++ 8010
    المهنة : دورة تعليم C++ Pharma10
    الهواية : دورة تعليم C++ Chess10
    تاريخ التسجيل : 30/01/2007
    نقاط التميز : 6508
    السٌّمعَة : 0

    دورة تعليم C++ Empty رد: دورة تعليم C++

    مُساهمة من طرف mr-fogy السبت أبريل 28, 2007 11:12 pm

    الدرس السابع

    سيكون هذا الدرس تكلمة للدرس السابق، حيث سنتعلم أسلوب nested if-statements ، حيث أننا في هذا الدرس سنضع أكثر من نص if-statement داخل بعض حتى نفهم طريقة عمله. وسيقوم برنامجنا هذه المرة باستقبال مُدْخَل من المستخدم، وهو عدد صحيح، ثم سيقوم بالتأكد ما إذا كان العدد زوجياً أو فردياً، فإذا كان زوجياً، فسيتأكد إذا كان يقبل القسمة على 4 ، أما إذا كان فردياً، فسيتأكد إذا كان يقبل القسمة على 3، وسيطبع النتيجة على الشاشة. وهذا هو البرنامج:

    دورة تعليم C++ 61108_01175860909
    بدأنا البرنامج بالطريقة الاعتيادية، كتبنا اسم المكتبة التي سنأخذ منها الأوامر iostream ، وكتبنا الأمر الذي يسمح لنا باستخدام هذه الأوامر namespace ، ثم كتبنا فاتحة البرنامج ()main . وبعد ذلك عرفنا المتغير الذي سنخزن الرقم الذي سيستقبله البرنامج فيه. وبعد ذلك جعلنا البرنامج يطبع أمراً على الشاشة يحث المستخدم على إدخال عدد صحيح. ثم طبعنا سطراً فارغاً على الشاشة، وبدأنا في التحقق من العدد:
    (if (a%2 == 0
    والرمز "%" معناه "باقي القسمة"، ولمن لا يعرف ما هو باقي القسمة، لو فرضنا أننا أردنا باقي قسمة 7 على 4، نكتب (4%7)، وكلنا نعرف أن السبعة لا تنقسم على الأربعة من دون كسور، ولكننا نستخدم أعداداً صحيحة ولا نستخدم الكسور، فيكون ناتج القسمة 1 والباقي 3، أي أن الـ7 يوجد بها 4 واحدة فقط، ويتبقى فيها 3. ولذلك عندما نريد التحقق ما إذا كان عددٌ ما زوجياً، فإننا نتأكد من باقي قسمته على 2، فلو كان ينقسم على الـ2 من دون باقي، أي أن الباقي يساوي 0، فنعرف أن هذا العدد زوجي، وهذا هو معنى الأمر المكتوب أعلاه.
    وبعد هذا الأمر كتبنا قوساً متموجاً "}" يشير إلى بداية مجموعة الأوامر المتعلقة بأمر if المكتوب أعلاه. وداخل القوس بدأنا أمر if آخر ليتأكد ما إذا كان العدد يقبل القسمة على 4، فإذا كان يقبل القسمة فإنه يطبع على الشاشة المعلومة التي تفيد أن العدد زوجي وينقسم على 4، وإذا لا يقبل القسمة على 4، يطبع المعلومة التي تفيد أن العدد زوجي ولكنه لا يقبل القسمة على 4. ثم كتبنا قوساً متموجاً معاكساً "{" يشير إلى نهاية الأوامر المتعلقة بأمر if .
    وبعد ذلك كتبنا أمر else ، ونلاحظ أن أمر else هذا تابع لأول أمر if كتبناه، حيث أن أوامر if الأخرى مكتوبة بين القوسين التابعين للـ if الأولى، فيكون معنى أمر else هنا "إذا لم يكن العدد ينقسم على 2، أي إذا كان فردياً". ثم فتحنا قوساً آخر يشير إلى بداية مجموعة الأوامر المتعلقة بأمر else ، ثم كررنا نفس العملية في أمر if الأول ولكن تأكدنا هذه المرة إذا كان العدد يقبل القسمة على 3 أم لا، وطبعنا المعلومات المتعلقة بذلك على الشاشة.

    وهذه أمثلة للنتائج التي يعرضها البرنامج:

    دورة تعليم C++ 61108_01175861745

    دورة تعليم C++ 61108_11175859850
    mr-fogy
    mr-fogy
    مشرف سابق


    ذكر
    المشاركات : 1050
    العمر : 35
    موقع سكنك : الجيزة
    وطيفتك : صيدلى
    مزاجى اليوم : دورة تعليم C++ 8010
    المهنة : دورة تعليم C++ Pharma10
    الهواية : دورة تعليم C++ Chess10
    تاريخ التسجيل : 30/01/2007
    نقاط التميز : 6508
    السٌّمعَة : 0

    دورة تعليم C++ Empty رد: دورة تعليم C++

    مُساهمة من طرف mr-fogy السبت أبريل 28, 2007 11:12 pm

    الدرس الثامن


    (Repetition (Loop


    كلمتا repetition و loop يعنيان التكرار. فمثلاً لو أردنا أن نجعل البرنامج أن ينفذ عملية معينة أكثر من مرة، بإمكاننا كتابة الأمر أكثر من مرة متتالية، ولكن لو أردناه أن يكرر العملية عشرات أو مئات المرات أو أكثر، فمن الصعب كتابة الأمر كل هذا العدد من المرات، ففي ذلك مشقة كبيرة، كما أنه سيبطئ البرنامج وسيستهلك مساحة من الذاكرة نحن في غنى عنها، لذلك نستخدم أسلوب التكرار، ونقوم بذلك بعدة أوامر لكل منها خصائصه، وسندرسهم واحداً تلو الآخر بمشيئة الله..

    أولاً: while loop :
    وهو أمر تكرار يرمز له بـ while ، ومعناها (عندما، أو طالما)، وسنفهم معناها أكثر من المثال إن شاء الله.



    دورة تعليم C++ 61108_01176585018



    وفي هذا البرنامج قمنا بتعريف متغير اسمه counter بمعنى عدّاد (وكما نعلم فإنه مجرد اسم ويمكن استبداله بأي اسم آخر، ولكن نستخدمه للتوضيح فقط)، وعينا له القيمة صفر. ثم كتبنا أمراً باستخدام الأمر while كالتالي:
    (while (counter < 10
    ;counter = counter + 1
    ومعناه (طالما أن counter أصغر من 10 نفذ الأمر التالي). وعندما يصل المؤشر عند تنفيذ البرنامج إلى السطر الموجود فيه أمر while فإنه يتحقق من الشرط الذي بين القوسين أولاً، فإذا تحقق الشرط فإنه ينفذ الأمر الذي يليه، أما إذا لم يتحقق فإنه يتجاهل الأمر ويتخطاه للأمر الذي يليه. وعلينا الحذر في هذه المسألة، فلو وضعنا شرطاً لا يصبح خاطئاً أبداً، فإن التكرار لن يتوقف وسيقوم البرنامج بتنفيذ الأمر نفسه مراراً وتكراراً حتى تمتلئ الذاكرة ويقوم الحاسوب بإعادة نفسه تلقائياً. فمثلاً لو كان الشرط (counter > -1) فإنه لن يتوقف أبداً، حيث أن counter يكون صفر في البداية، ثم يقوم الأمر بزيادته كل مرة، وبذلك يستحيل أن يصبح counter أصغر من أو يساوي صفر. وهذا الخطأ يسمى infinite loop أو التكرار اللانهائي.

    ونلاحظ أن أمر while له مثل خصائص أمر if ، حيث أن له شروطاً بين قوسين، وبإمكاننا تنفيذ أكثر من أمر داخله بواسطة الأقواس المتموجة { } .

    بعد أن نفذنا أمر while قمنا بطباعة counter على الشاشة لنلاحظ الفرق. ثم قمنا بكتابة أمر while آخر يقوم بنفس العملية ولكن مع طباعة قيمة counter في كل مرة يقوم فيها أمر while بالتكرار. مع ملاحظة أننا صفرنا قيمة counter مرة أخرى قبل أمر while . وفي هذا الأمر يقوم أمر while بتنفيذ أمرين، أولاً يقوم بزيادة counter بمقدار 1 ، ثم يقوم بطباعته على الشاشة، فتبدأ قيمة counter من 1 وتنتهي بـ10.



    دورة تعليم C++ 61108_11176585018



    ولاحظوا أن ترتيب الأوامر يُحْدِث فروقاً كبيرة، لذلك يجب التعامل معها بانتباه، فلو غيرنا ترتيب أمري الزيادة والطباعة:


    دورة تعليم C++ 61108_21176585018


    فإن البرنامج سيقوم بطباعة counter أولاً والذي قيمته الابتدائية 0، ثم يقوم بزيادته بعد ذلك، فتصبح النتيجة كالتالي:


    دورة تعليم C++ 61108_01176585062


    بدأت قيمة counter من 0 وانتهت بـ9 . ونلاحظ في كلتا الحالتين أن أمر while يتوقف عندما يختل شرطه (counter < 10) ، أي عندما تصبح قيمة counter = 10 ، حيث أن 9 أصغر من 10 ، ولكن 10 ليست أصغر من 10.


    وهنا ينتهي هذا الدرس..


    عدل سابقا من قبل في السبت أبريل 28, 2007 11:13 pm عدل 1 مرات
    mr-fogy
    mr-fogy
    مشرف سابق


    ذكر
    المشاركات : 1050
    العمر : 35
    موقع سكنك : الجيزة
    وطيفتك : صيدلى
    مزاجى اليوم : دورة تعليم C++ 8010
    المهنة : دورة تعليم C++ Pharma10
    الهواية : دورة تعليم C++ Chess10
    تاريخ التسجيل : 30/01/2007
    نقاط التميز : 6508
    السٌّمعَة : 0

    دورة تعليم C++ Empty رد: دورة تعليم C++

    مُساهمة من طرف mr-fogy السبت أبريل 28, 2007 11:13 pm

    الدرس التاسع

    ثانياً: do-while loop :
    وهو مشابه لـwhile ولكنه يختلف اختلافاً طفيفاً، و do-while تعني "افعل كذا طالما كذا". وسنفهم معنى العبارة أكثر من المثال التالي:

    دورة تعليم C++ 61108_01177530017

    وفي هذا المثال نلاحظ أننا كتبنا كلمة do أولاً ثم فتحنا قوساً متموجاً "}" وكتبنا بداخله الأوامر المراد تكرارها، ثم أغلقنا القوس "{" ، وكتبنا بعده while ووضعنا الشرط بين القوسين (ملاحظة هامة جداً، يجب وضع الرمز ";" بعد شرط while للإشارة إلى نهاية أمر do-while). ومعنى ذلك "افعل ما بين القوسين { } طالما أن شرط while صحيح. فيقوم البرنامج بتنفيذ ما بين القوسين، ثم يصل إلى while فيتحقق من شرطها، فإذا كان صحيحاً فإنه يقوم بتكرار العملية، وإذا كان خاطئاً فإنه يتوقف ويقوم بتنفيذ الأمر الذي يليه. وهذه نتيجة البرنامج:

    دورة تعليم C++ 61108_11177527675

    ونلاحظ أن في أمر التكرار الثاني أنه ينفذ أمرين، الأول طباعة قيمة counter والثاني زيادة counter بواحد، ولذلك فإن أول قيمة يطبعها هي 0 ، وعندما تصل قيمة counter إلى 10 فإنه يتوقف لاختلال الشرط، فتكون آخر قيمة طبعها هي 9. وكما في الدرس السابق، إذا بدلنا ترتيب الأمرين فإن المخرجات تتغير كالتالي:

    دورة تعليم C++ 61108_21177527675

    ونتيجة ذلك:

    دورة تعليم C++ 61108_01177527976

    والفرق الأساسي بين أمر while وأمر do-while هو أن أمر while يقوم أولاً بالتحقق من الشرط ويقوم بتنفيذ الأوامر المطلوبة على أساس ذلك، أما أمر do-while فإنه ينفذ الأمر أولاً، ثم يقوم بالتحقق من الشرط بعد ذلك، لذلك يتم تنفيذ الأمر أول مرة دائماً حتى عندما يكون الشرط خاطئاً. فمثلاً لو غيرنا قيمة counter في أمر التكرار الثاني وجعلناها 10 فإن الشرط سيكون خاطئاً ولكن مع ذلك سيتم تنفيذ الأمر مرة واحدة على الأقل. كالتالي:

    دورة تعليم C++ 61108_01177529560

    وهاهي النتيجة:

    دورة تعليم C++ 61108_21177527976

    وهنا تم التنفيذ مرة واحدة، حيث أن الأمر قام بطباعة قيمة counter أول مرة وكانت 10، ثم قام بزيادتها، وبعد ذلك قام بالتحقق من الشرط فوجدها أكبر من 10 فقام بإيقاف العملية وتنفيذ الأمر التالي. أما لو كانت قيمة counter الابتدائية 9، سيطبعه أول مرة ويقوم بزيادته ليصبح 10، وعندما يقوم بالتحقق من الشرط سيكون خاطئاً فسيتوقف التكرار، ولن يكون لدينا إلا سطر واحد فيه القيمة 9.

      الوقت/التاريخ الآن هو الجمعة سبتمبر 20, 2024 2:42 am