أكاديمية الصقر للتدريب

لوحة التميز الأسبوعي
العضو المتميز المشرف المتميز المراقب المتميز المدير المتميز الموضوع المتميز القسم المتميز
العضو المتميز المشرف المتميز المراقب المتميز المدير المتميز الموضوع المتميز القسم المتميز
EM_ACC لا تميز خلال هذه الفترة-- لا تميز خلال هذه الفترة لا تميز خلال هذه الفترة مطلوب كود استخراج بيانات بالمصفوفات اكسيل اسئله واجابات


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





استخدام switch بشروط مرنة

بسم الله والحمد لله والصلاة والسلام على رسول الله أهلا ومرحبا بكم أخوانى الكرام من جديد من المعروف أن الفرق الملاحظ بين ..



13-11-2018 11:30 مساء
Eslam Abdullah
مشرف على لغات برمجة آخرى
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 03-10-2017
رقم العضوية : 852
المشاركات : 1580
الدولة : مصر
الجنس : ذكر
تاريخ الميلاد : 1-9-1995
الدعوات : 5
يتابعهم : 0
يتابعونه : 89
قوة السمعة : 10845
موقعي : زيارة موقعي
عدد الإجابات: 6
 offline 

بسم الله والحمد لله والصلاة والسلام على رسول الله
أهلا ومرحبا بكم أخوانى الكرام من جديد

من المعروف أن الفرق الملاحظ بين switch و if هو مرونة if فى وضع الشروط عديدة ولكن switch أكثر سرعة

فمن المعروف أن switch لا تأخذ إلا قيم ثابته ومحددة وصحيحة
وفى الـ case يجب أن تكون قيمة ثابته constant values أى لا يمكن استخدام المتغيرات ولا يمكن وضع نطاق معين أو تكرار نفس الـ case أكثر من مرة
كل هذا على النقيد يمكن استخدامه بـ if

الا انه اذا امكنك استخدام switch اذا الأفضل استخدامها بدلا من if لانها اسرع فى عملية الـ execution أى عملية التنفيذ
لان الـ cases الخاصة بالـ switch يتم عمل لها evaluation أثناء الـ compilation
أى أثناء فترة ترجمة الكود للكود الخاص بلغة الآلة machine language

أما الـ if ... else الـ conditions أو الـ expressions الخاصة بها يتم عمل الـ evaluation لها أثناء الـ Run time أى أثناء تنفيذ البرنامج بالفعل
لذلك استخدام الـ switch بيكون أسرع من استخدام if ... else

فعلى الرغم من مرونة if وامكانية اضافة شروط منفصلة ومتعددة الا ان switch تعتبر بشكل عام أكثر كفاءة

الان اعرض لكم افكار لاستخدام switch بشكل أكثر مرونة كالمثال المشهور وهو طباعة تقدير الطالب وفقا للدرجة
حيث اضع نطاق للدرجات كالتالى
اقل من 50 يطبع F  وبين 50 و 64 يطبع D  وبين 65 و 74 يطبع C وبين 75 و 84 يطبع B واعلى من 85 يطبع A

اليكم المثال الاول

#include <iostream>
using namespace std;

int main()
{
    int G;
    char M[]={'A','B','C','D','F'};

    cout << "Enter your grade: ";
    cin >> G;
    G=1+(G<85)+(G<75)+(G<65)+(G<50);

    switch (G)
    {
    case 1:                                           //(Range >= 85)
        cout << "Your Grade is: "<<M[0]<<endl;break;
    case 2:                                           //(Range: 75-84)
        cout << "Your Grade is: "<<M[1]<<endl;break;
    case 3:                                           //(Range: 65-74)
        cout << "Your Grade is: "<<M[2]<<endl;break;
    case 4:                                           //(Range: 50-64)
        cout << "Your Grade is: "<<M[3]<<endl;break;
    default:                                          //(Range < 50)
        cout << "Your Grade is: "<<M[4]<<endl;break;
    }
}

هنا فكرة الكود هو عملية جمع بالشروط المحددة للدرجات حيث TRUE يساوى 1 و FALSE يساوى 0
لتكون النتيجة 1 او 2 او 3 او 4 او 5
حيث من 1 الى 4 تخدم الـ cases الموجودة أما 5 تخدم الـ default

ومثال اخر ولكن فكرته اقل مرونة من سابقتها وهو كالتالى

#include <iostream>
using namespace std;

int main()
{
    int G;
    char M[]={'A','B','C','D','F'};

    cout << "Enter your grade: ";
    cin >> G;

    switch (G/5)
    {
    case 20:case 19:case 18:case 17:                   //(Range >= 85)
        cout << "Your Grade is: "<<M[0]<<endl;break;
    case 16:case 15:                                   //(Range: 75-84)
        cout << "Your Grade is: "<<M[1]<<endl;break;
    case 14:case 13:                                   //(Range: 65-74)
        cout << "Your Grade is: "<<M[2]<<endl;break;
    case 12:case 11: case 10:                          //(Range: 50-64)
        cout << "Your Grade is: "<<M[3]<<endl;break;
    default:                                           //(Range < 50)
        cout << "Your Grade is: "<<M[4]<<endl;break;
    }
}

هنا فكرة الكود هى القسمة على 5 بحيث يكون الناتج بالرقم الصحيح مختلف بين الشروط المحدده بشكل يجعلنا نضع احتمالات قليله
للوصول للنتيجة المرجوه
لكن هنا فى حالة تخطى الرقم 104 تكون النتيجة F وذلك لان النتيجة خرجت عن كل احتمالات الـ cases الموضوعه وF هى النتيجة الافتراضية
لتخطى الامر سيلزم ادخال شروط اخرى وايضا سيحدث تغيير جذرى فى حالة كان الرقم المرجو الوصول اليه مختف
لذلك الطريقة الاولى افضل
الى هنا ينتهى الدرس ، كان معكم اخوكم فى الله اسلام عبدالله

14-11-2018 09:56 صباحا
مشاهدة مشاركة منفردة [1]
Yasser Elaraby
المشرف العام
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 1
المشاركات : 1293
الجنس : ذكر
الدعوات : 13
يتابعهم : 2
يتابعونه : 722
قوة السمعة : 9894
موقعي : زيارة موقعي
عدد الإجابات: 9
 offline 
look/images/icons/i1.gif استخدام switch بشروط مرنة
منور ياغالي اقسام البرمجة الله ينور وفي تقدم دائم
81
تحياتي
 
توقيع :Yasser Elaraby
663013020


14-11-2018 10:34 صباحا
مشاهدة مشاركة منفردة [2]
مهند محسن
عضو ماسي
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 21-03-2018
رقم العضوية : 5025
المشاركات : 454
الجنس : ذكر
تاريخ الميلاد : 19-3-1990
يتابعهم : 2
يتابعونه : 9
قوة السمعة : 846
عدد الإجابات: 8
 offline 
look/images/icons/i1.gif استخدام switch بشروط مرنة
بارك الله فيك استاذى الكريم والى الأمام دائما

14-11-2018 10:37 صباحا
مشاهدة مشاركة منفردة [3]
ali mohamed ali
مشرف على منتدى الاكسيل
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 20-11-2017
رقم العضوية : 1757
المشاركات : 1763
الدولة : مصر
الجنس : ذكر
الدعوات : 2
يتابعهم : 0
يتابعونه : 68
قوة السمعة : 9632
عدد الإجابات: 46
 offline 
look/images/icons/i1.gif استخدام switch بشروط مرنة
أحسنت استاذ اسلام عمل ممتاز وشرح وافى جعله الله فى ميزان حسناتك ومن تقدم الى تقدم وتفوق ان شاء الله
توقيع :ali mohamed ali
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]
ساهم دائماً فى حل أى مشكلة او أستفسار لديك مع إضافة رد بشكره
أو دعوة لمن قدم اليك المساعدة,فالجميع هنا يعمل على مساعدة
 الاخرين لوجه الله وان تحتسب له اجر عند الله

14-11-2018 09:38 مساء
مشاهدة مشاركة منفردة [4]
Eslam Abdullah
مشرف على لغات برمجة آخرى
rating
معلومات الكاتب ▼
تاريخ الإنضمام : 03-10-2017
رقم العضوية : 852
المشاركات : 1580
الدولة : مصر
الجنس : ذكر
تاريخ الميلاد : 1-9-1995
الدعوات : 5
يتابعهم : 0
يتابعونه : 89
قوة السمعة : 10845
موقعي : زيارة موقعي
عدد الإجابات: 6
 offline 
look/images/icons/i1.gif استخدام switch بشروط مرنة
مشكور مروركم الغالى
أستاذى الحبيب ياسر
والأستاذ مهند والأستاذ على
تقبلوا وافر تحياتى وتقديرى 81

15-11-2018 05:00 صباحا
مشاهدة مشاركة منفردة [5]
YasserKhalil
مراقب عام
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 10439
الجنس : ذكر
تاريخ الميلاد : 1-10-1978
الدعوات : 24
يتابعهم : 0
يتابعونه : 534
قوة السمعة : 36372
عدد الإجابات: 252
 offline 
look/images/icons/i1.gif استخدام switch بشروط مرنة
بارك الله فيك أخي الحبيب إسلام ومشكور على موضوعاتك المميزة




الكلمات الدلالية
استخدام ، switch ، بشروط ، مرنة ،


 










اخلاء مسئولية: يخلى منتدى أكاديمية الصقر للتدريب مسئوليته عن اى مواضيع او مشاركات تندرج داخل الموقع ويحثكم على التواصل معنا ان كانت هناك اى إنتهاكات تتضمن اى انتهاك لحقوق الملكية الفكرية او الادبية لاى جهة - بالتواصل معنا من خلال نموذج مراسلة الإدارة .وسيتم اتخاذ الاجراءات اللازمة.
سياسة النشر: التعليقات المنشورة لا تعبر عن رأي منتدى أكاديمية الصقر للتدريب ولا نتحمل أي مسؤولية قانونية حيال ذلك ويتحمل كاتبها مسؤولية النشر.

الساعة الآن 10:22 صباحا