عرض مشاركة واحدة
قديم 06-04-05, 12:44 am   رقم المشاركة : 4
@شقردي عنيزة@
عضو نشيط






معلومات إضافية
  النقاط : 10
  المستوى :
  الحالة : @شقردي عنيزة@ غير متواجد حالياً

[align=center]الوحدة الثالثة[/align]
[align=right]الاختيار[/align]
[align=right]تمثل الدالة الرئيسية في لغة C++ نقطة الانطلاق لتنفيذ البرنامج، منها يتم تنفيذ الجمل بالتتالي من الأعلى إلى الأسفل كما هو مبين في الصورة التالية:[/align]

[align=right]من خلال الصورة السابقة نلاحظ أنه يتم تنفيذ الجمل بالتتالي(statement 1) ثم الجملة الثانية (statement 2) حتى نصل إلى أخر جملة (statement n) والتي بعد تنفيذها نصل إلى نهاية الدالة الرئيسية وبالتالي إلى نهاية البرنامج. كل جملة من الجمل السابقة تمثل عمل شيء ما مصاغ بلغة C++، فمنها ما قد يكون جملة واحدة تنفذ كأمر واحد، ومنها ما هو جملة مركبة (أوامرها محصورة بين قوسين متعرجين { } تنفذ بالتتالي كجملة واحدة.[/align]
[align=right]الغرض من استخدام جمل الاختيار (Selection) [/align]
[align=right]باستخدام أحد جمل الاختيار (Selection) نصل إلى مفترق الطرق لتقرير ما يجب علينا تنفيذه في الجملة حسب ما يمليه علينا (منطق) حل المشكله التي من اجلها كتب البرنامج.
عملية الاختيار تتم بناء على قيمة (حالة) الشرط (Condition) الموجود في الجملة والذي يؤول إلى أحد قيمتين أي (حالتين):
- خطأ ويمثلها القيمة صفر.
- صح ويمثلها أي قيمة أخرى غير الصفر.
لذلك فإن ما يجب تنفيذه في الجملة يتم بناء على قيمة الشرط الموجودة في هذه الجملة.[/align]
[align=right]أنواع جمل الاختيار (selection) [/align]
[align=right]تتم عملية الاختيار (selection) باستخدام أحد الجمل التالية:
1-جملة if الشرطية
2- جملة switch/ case الشرطية[/align]
[align=right]جملة if الشرطية [/align]
[align=right]
تستخدم الكلمة if للدلالة على بداية جملة اختيارية يتم فيها التحقق من الشرط (condition) الموجود بالجملة لتنفيذ عمل ما.
تعتبر if من الكلمات المحجوزة في معظم لغات البرمجة ومنها سي++للاستخدام في الجمل الاختيارية .

تأتي جملة if في عدة أشكال:
- الشكل البسيط
- الشكل البسيط البديل
- الشكل المتداخل.[/align]
[align=right]الشكل البسيط : if (condition) statement [/align]
[align=right]يتم في هذا الشكل تغير سير البرنامج لتنفيذ شيء ما في حالة تحقق الشرط الموجود في الجملة ثم إكمال ما تبقى من البرنامج كما هو مبين في المخطط الانسيابي الموضح في الصورة التالية:[/align]

[align=right]يتضح من المخطط الانسيابي لجملة if الشرطية البسيطة:
- تغير مسار تنفيذ البرنامج في حالة تحقق الشرط (تغير المسار في الاتجاة الايمن لتنفيذ جملة أو جملة مركبة) لتنفيذ عمل ما ثم الرجوع للمسار الطبيعي لتنفيذ باقي الجمل في البرنامج.
- لم يتغير مسار تنفيذ البرنامج في حالة عدم تحقق الشرط ( مسار التنفيذ من الأعلى إلى الأسفل).[/align]
[align=right]صياغة جملة if الشرطية البسيطة [/align]
[align=right]يمكن صياغة جملة if شرطية بسيطة كالتالي:[/align]

[align=right]تعتبر الجملة السابقة صياغة لجملة if شرطية بسيطة الغرض منها طباعة رسالة للمستخدم عندما تكون x اكبر من y .
تبدا الصياغة لأي جملة شرطية بسيطة بالترتيب التالي:
- الكلمة المحجوزة if
- الشرط ويجب أن يكون محصور بين قوسين ( )
- الجملة التي يراد تنفيذها في حالة تحقق الشرط. عبارة الأخراج (cout )
مثال1:
أكتب برنامج يقوم باستقبال عددين صحيحين ويستخدم if الشرطية البسيطة لطباعة رسائل إلى المستخدم تبين العلاقة بين العددين (اكبر ، اصغر ، يساوي).[/align]
[align=right]المنطق[/align]
[align=right]- عرف المتغيرين (x,y) من نوع عدد صحيح
- أعلم المستخدم بإدخال قيمة المتغير x
- استقبل القيمة المدخلة لتخزينها كقيمة للمتغير x
- أعلم المستخدم بإدخال قيمة المتغير y
- استقبل القيمة المدخلة لتخزينها كقيمة للمتغير y
- استخدم جملة شرطية بسيطة يكون الشرط فيها صحيحاً إذا كانت قيمة المتغير x أصغر من قيمة y وفي حالة تحقق الشرط تطبع رسالة للمستخدم لإشعاره بذلك.
- استخدم جملة شرطية بسيطة يكون الشرط فيها صحيحاً إذا كانت قيمة x اكبر من قيمة y وفي حالة تحقق الشرط تطبع رسالة للمستخدم لإ شعاره بذلك.
- استخدم جملة شرطية بسيطة يكون الشرط فيها صحيحاً إذا كانت قيمة x تساوي قيمة y وفي حالة تحقق الشرط تطبع رسالة للمستخدم لإ شعاره بذلك.
لنطبق هذا المثال على برنامج سي++ عملياً ونتحقق من صحة هذا المثال[/align]

[align=right]انظر إلى الصورة التالية والشاشات التابعة (شاشه1،شاشه2 ،شاشه3) لترى كيفية ترجمة المنطق التالى لحل المثال بلغة C++ .[/align]

[align=right]في الصورة السابقة كود البرنامج بعد أن قمنا بكتابته في بيئة سي++ والان لنقوم بعملية ترجمة المشروع وتنفيذه كما تعلمنا في الدروس السابقة ونتتبع الشاشات الثلاث لنتحقق من الشروط الثلاثة:[/align]
[align=right]- الشاشة الأولى:[/align]
[align=right]أذا كانت قيمة x أصغر من قيمة y : أذا أطبع رسالة للمستخدم تفيد بذلك.
لنفترض أن قيمة x=5 وقيمة y=8 وذلك حسب الشرط المعطى if(x
[align=right]كما نلاحظ من خلال الشاشة السابقة في السطر الأول العباره Enter x value وهي رسالة تطلب من المستخدم إدخال قيمة للمتغير x كما حددنا نحن ذلك أثناء كتابة البرنامج.
في السطر الثاني قام المستخدم بإدخال قيمة للمتغير وهي الرقم 5 ثم بعد ذلك قام بالضغط على زر انتر.
في السطر الثالث ظهرت رسالة تطلب من المستخدم أدخال قيمة للمتغير y كما حددنا نحن ذلك أثناء كتابة البرنامج أيضاً. قام المستخدم بإدخال الرقم 8 ثم بعد ذلك قام المستخدم بالضغط على زر أنتر... الآن تتم عملية المقارنة بالتحقق من الشرط هل x أصغر من y الجواب (نعم) أذا أطبع رسالة تفيد بذلك وهو ما فعلها هذا البرنامج بالضبط حيث تم طباعة الرسالة المصاحبة في حالة الأصغر (x is less than y) حينما تحقق الشرط.[/align]
[align=right] الشاشة الثانية:[/align]
[align=right] إذا كانت قيمة x أكبر من قيمة y لنتحقق من الشرط ، لنفرض أن قيمة x=10 وقيمة y=7 لنرى ذلك من خلال الشاشة الثانية:[/align]

[align=right]كما هو واضح من خلال الشاشة السابقة قيمة المتغير x=10 وقيمة المتغير y=7 كما أفترضنا وبعد أن تحقق البرنامج من عملية المقارنة بين قيمة المتغيريين ووجد أن الشرط قد تحقق قام بطباعة الرسالة المصاحبة
في حالة الأكبرx is greater than y[/align]
[align=right]الشاشة الثالثة:[/align]
[align=right]إذا كانت قيمة المتغير x تساوي قيمة المتغير y ..لنفرض أن قيمة المتغير x=12 وقيمة المتغير y=12 لنرى ذلك من خلال الشاشة الثالثة:[/align]

[align=right]وبالنظر للشاشة الثالثة يتضح تحقق الشرط في جملة if الثالثة حيث تم طباعة الرسالة المصاحبة
في حالة التساوي x is egual to y[/align]

[align=right]مثال2:[/align]
[align=right]استخدم if الشرطية البسيطة لبناء برنامج لمعرفة تقدير طالب حسب البيانات الموضحة في الصورة التالية:[/align]

[align=right]المنطق [/align]
[align=right]- عرف المتغيرmark من نوع عدد صحيح(لتخزين درجة الطالب المدخله)
- عرف المتغير lgrade من نوع حرف (لتخزين قيمة التقدير)
- اطلب من المستخدم إدخال درجة الطالب
- استقبل القيمة المدخله لتخزينها كقيمة للمتغير mark
- استخدم جملة شرطية بسيطة يكون الشرط فيها صحيحاً اذا كانت قيمة mark أصغر من 60 وفي حالة تحقق الشرط اجعل قيمة المتغير lgrade="F"
- استخدم جمله شرطية بسيطة يكون الشرط فيها صحيحاً اذا كانت قيمة mark أكبر او تساوي 60 وفي حالة تحقق الشرط اجعل قيمة المتغير lgrade="D"
- استخدام جملة شرطية بسيطة يكون الشرط فيها صحيحاً اذا كانت قيمة mark أكبر او تساوي 70 وفي حالة تحقق الشرط اجعل قيمة المتغير lgrade="C"
- استخدام جملة شرطية بسيطة يكون الشرط فيها صحيحاً اذا كانت قيمة mark أكبر او تساوي 80 وفي حالة تحقق الشرط اجعل قيمة المتغير lgrade="B"
- استخدام جملة شرطية بسيطة يكون الشرط فيها صحيحاً اذا كانت قيمة mark أكبر او تساوي 90 وفي حالة تحقق الشرط اجعل قيمة المتغير lgrade="A "
- اطبع الدرجة والتقدير بطباعة قيمة المتغير mark وطباعة قيمة المتغير lgrade [/align]

[align=right]أما الآن أنظر إلى البرنامج من خلال الصورة التالية ثم تابع الشاشات الثلاث لترى كيفية ترجمة المنطق بلغة سي++:[/align]

[align=right]بعد ان أنتهينا من عملية كتابة البرنامج نقوم بعملية التنفيذ لمعرفة كيفية الوصول إلى النتائج من خلال هذا البرنامج:[/align]
[align=right]الشاشة رقم1:[/align]

[align=right]كما هو واضح من خلال الصورة التالية قمنا بإدخال القيمة 100 لإختبار الشرط الخامس (اذا كانت قيمة الدرجة المدخله أكبر من 90 المعدل = 'A' بعد أدخال القيمة نضغط على (انتر) لنرى الناتج على الشاشة التالية:[/
align]

[align=right]كما تلاحظون من خلال الشاشة التالية بعد ان قمنا بإدخال الدرجة رقم 100 وبعد عملية التنفيذ يقوم البرنامج أولاً بعملية مقارنة الشرط وكما شرحنا في السابق حيث أتفقنا أن عملية تنفيذ أي برنامج تبدا بالتسلسل أي من الأعلى إلى الأسفل حيث يبدا البرنامج بأختبار القيمة مع الشرط الاول فإذا تحقق الشرط فأنه سوف يطبع الجمله المصاحبه مع الشرط الأول وأذا لم يتحقق الشرط فأنه سوف ينتقل إلى الشرط الثاني ليقوم بعملية التحقق من الشرط فإذا تحقق سوف يطبع الجمله المصاحبه مع الشرط الثاني وهكذا.......حتى أن يتحقق الشرط كما في مثل برنامجنا هذا حيث القيمة المدخلة 100 لا تتحقق الأ مع وصول البرنامج إلى الشرط الخامس if(mark>=90) فبعد أن تحقق الشرط قام البرنامج بتنفيذ الجملة المصاحبة: lgrade='A' ....بمعنى أن الدرجة 100 يقابلها المعدل 'A' .[/align]
[align=right]الشاشة رقم2:[/align]
[align=right]الدرجة المدخلة=70 والتقدير المحسوب C=[/align]

[align=right]الشاشة رقم3: [/align]
[align=right]الدرجة المدخلة =50 والتقدير المحسوب [/align]

[align=right]كما لاحظنا من خلال الشاشات الثلاث السابقه أن البرنامج يعطي النتائج الصحيحة حسب الدرجات المدخله...
سؤال؟
ماذا لو عكسنا ترتيب الجمل الشرطية في البرنامج السابق مع احتفاظنا بالشروط ذاتها في كل الجمل؟ هل يعطي البرنامج النتائج الصحيحة المتوقعه؟
أنتظر الأجابة ولي عوده أن شاء الله في الدرس القادم لمواصلة ماتوقفنا عنده
والسلام عليكم .....[/align]







التوقيع

هي الأيام ..كما شاهدتها دولُ

من سرهُ زمنً ..ساءتهُ أزمانُ