الدرس السابع – عبارات الاختبار الشرطي-2

سلسلة من الدروس في لغة البرمجة ++C

الدرس السابع – عبارات الاختبار الشرطي-2

الدالات المنطقية

في المثلث القائم يكون الضلع الوتر أكبر من كلا الضلعين القائمتين، أي في المثلث القائم ABC

الضلع AB  هو وتر إذا كان:  AB > AC

                       و إذا كان: AB > BC

نعبر عن ذلك بلغة الـ C++ كما يلي:

#include<iostream>

using namespace std;

int main()

{

            int AB,BC,AC;//Triangle sides

            cout<<“Enter the triangle sides”;//prompt

            cin>>AB>>BC>>AC;

            //test

            if(AB > BC)

                        if(AB > AC)

                                    cout<<“AB is the chord”<<endl;//Output

return 0;

}

يمكن دمج الشرطين معاً باستخدام الدالة المنطقية AND، يعبر عن الدالات المنطقية بلغة الـ C++ :

الدالة المنطقية

التمثيل بلغة الـ C++

AND

&&

OR

||

NOT

!

يصبح الكود السابق باستخدام الدالات المنطقية كما يلي:

#include<iostream>

using namespace std;

int main()

{

            int AB,BC,AC;

            cout<<“Enter the triangle sides”;//prompt

            cin>>AB>>BC>>AC;

            //test

            if(AB > BC && AB > AC)

                                    cout<<“AB is the chord”<<endl;//Output

return 0;

}

مثال: اكتب برنامج يقوم بالتحويل من سيليسيوس إلى فهرنهايت (Celsius to Fahrenheit) و بالعكس علماً أن معادلة التحويل هي كالتالي:

Fahrenheit = ((Celsius * 9) / 5) + 32;

Celsius = ((Fahrenheit – 32) * 5) / 9;

****************************

#include<iostream>

using namespace std;

int main()

{

            int fahrenheit,celsius;

            char choice;

            cout<<“Enter ‘f’ to convert from celsius to fahrenheit or Enter ‘c’ to convert from fahrenheit to celsius”<<endl;//prompt

            cin>>choice;

            if(choice == ‘f’ || choice == ‘F’)//convert into Fahrenheit

            {

                        cout<<“Enter the temperature to be converted”<<endl;//prompt

                        cin>>celsius;

                        fahrenheit = ((celsius * 9) / 5) + 32;//remark: celsius * 9 / 5 + 32

                        cout<<“temperature in fahrenheit is:”<<fahrenheit<<endl;//Output

            }

            else if(choice == ‘c’ || choice == ‘C’)//convert into Celsius

            {

                        cout<<“Enter the temperature to be converted”<<endl;//prompt

                        cin>>fahrenheit;

                        celsius = ((fahrenheit – 32) * 5) / 9;// (fahrenheit – 32) * 5 / 9

                        cout<<“temperature in celsius is:”<<celsius<<endl;//Output

            }

            else

                        cout<<“Bad choice ..!”<<endl;

return 0;

}

ملاحظة: في السطر 13 حيث كتب التعليق يمكن الاستغناء عن الأقواس فلا حاجة لها و ذلك اعتماداً على أولوية العمليات الحسابية حيث تأتي عمليات الضرب و القسمة كأولوية أعلى عن الجمع و الطرح و تنفذ العملية في اليسار بأولية عن العملية في اليمين.

مثال: تحديد الرقم إن كان من مضاعفات السبعة.

#include<iostream>

using namespace std;

int main()

{

            int number;

            cout<<“Enter a number”;//prompt

            cin>>number;

            if( number % 7 == 0)//test the number

                        cout<<” the number is a multiple of 7″<<endl;//Output

            else

                        cout<<” the number is n’t a multiple of 7″<<endl;//Output

            cout<<“Thank you for using C++”;

return 0;

}

وظيفة: ارسم المخطط التدفقي و اكتب برنامج يحسب الراتب بعد الزيادة على رواتب الموظفين والعاملين علماً بأن الزيادة هي:

–         30 % لمن راتبه المقطوع أقل من 10000 ليرة.

–         20 % لمن راتبه المقطوع أكثر من 10000 ليرة.

–         1500 ليرة للجميع.

–         تأخذ ضريبة الدخل بقيمة 10% من قيمة الراتب المقطوع لمن يزيد راتبهم عن 10000 ليرة بعد الزيادة.

–         تضاف قيمة 1500 ليرة بدل محروقات لقيمة الراتب المقطوع.

الخيارات المتعددة

عند وجدود أكثر من قرار مرتبط بأكثر من قيمة للشرط المختبر فبإمكاننا استخدام الخيارات المتعددة Switch Case.

switch (variable_tested)

            {

case value1: Decision1;

                        break;

case value2: Decision2;

                        break;

……….

default: Decision;

}

مثال:

#include<iostream>

using namespace std;

int main()

{

int  choice;//variable for choosing

            int l,d;//variables for rectangle l = length d = width

            int b,h;//variables for triangle b = base h = height

            int r;//variable for circle r = radius

            /*………….prompt…………*/

            cout<<“Choose a number 1 , 2 or 3″<<endl;

            cout<<“1: Calculate a rectangle”<<endl;

            cout<<“2: Calculate a triangle”<<endl;

            cout<<“3: Calculate a circle”<<endl;

            cin>>choice;

            /*….. processing the cohice …..*/

            switch (choice)

            {

            case 1://calculate the rectangle

                        cout<<“Enter the length then the width”<<endl;//prompt

                        cin>>l>>d;

                        cout<<“area is:”<<l*d<<endl;

                        cout<<“perimeter is :”<<2*(l+d)<<endl;

                        break;

            case 2://calculate the triangle

                                    cout<<“Enter the base then the height “<<endl;//prompt

                                    cin>>b>>h;

                                    cout<<“area is:”<<0.5*b*h<<endl;

                                    break;

            case 3://calculate the circle

                                    cout<<“Enter the radius “<<endl;//prompt

                                    cin>>r;

                                    cout<<“area is:”<<3.14*r*r<<endl;

                                    cout<<” perimeter is:”<<2*3.14*r<<endl;

                                    break;

            default:

            cout<<“incorrect choice”<<endl;

            }

cout<<“\t \tThanks..”;

return 0;

}

مثال: آلة حاسبة بسيطة جداً.

//very simple calculater

#include<iostream>

using namespace std;

int main()

{

            /*Variables declaration*/

char operation;

float number1,number2,result;

            /*prompt*/

cout<<“Choose the operation you need”<<endl;

cin>>operation;

cout<<“Enter the numbers,please”<<endl;

cin>>number1>>number2;

            /*processing*/

switch (operation)

{

            case ‘+’://Add

                        result = number1 + number2;

           cout<<“result = “<<result;

                        break;

            case ‘-‘://Sub

                        result = number1 – number2;

cout<<“result = “<<result;

                        break;

            case ‘*’://Multiple

                        result = number1 * number2;

     cout<<“result = “<<result;

                        break;

            case ‘/’://Division

                        result = number1 / number2;

           cout<<“result = “<<result;

                        break;

            default:

                        cout<<“This operation is n’t supported”<<endl;

}

return 0;

}

تمرين: نلاحظ أنه عند إدخال عملية غير موجودة لا يكتشف ذلك إلا بعد إدخال الأرقام، عدّل البرنامج السابق ليكتشف أنه العملية غير موجودة قبل إدخال الأرقام.

ملاحظة1: يمكن إجراء عمليات حسابية أو مقارنة و اختبار الناتج باستخدام switch.

ملاحظة2: إن لم تكن القيم المرتبطة بـ case من ذات نوع المتحول فسيتم تنفيذ الجزء default.

Good code:

#include<iostream>

using namespace std;

int main()

{

            int number1, number2;

            cout<<“Enter 2 numbers to be compared”<<endl;

            cin >>number1>>number2;

            switch (number1>=number2)

            {

            case true: // number1 is bigger than number2

                        cout<<“The first is bigger”;

                        break;

            case false: // number2 is bigger than number1

                        cout<<“The second is bigger”;

                        break;

            default: cout<<“i don’t know”;

            }

return 0;

}

Bad code:

#include<iostream>

using namespace std;

int main()

{

            int number1, number2;

            cout<<“Enter 2 numbers to be compared”<<endl;

            cin >>number1>>number2;

            switch (number1>=number2)

            {

            case ‘y’:// number1 is bigger than number2

                        cout<<“The first is bigger”;

                        break;

            case ‘n’: // number2 is bigger than number1

                        cout<<“The second is bigger”;

                        break;

            default: cout<<“i don’t know”;

            }

return 0;

}

About زين العابدين

مهندس حواسيب - معهد IDA - جامعة Braunshweig التقنية.
هذا المنشور نشر في دروس في البرمجة, دروس تعليمية. حفظ الرابط الثابت.

2 ردان على الدرس السابع – عبارات الاختبار الشرطي-2

  1. يقول basem:

    كنت المفكر الدروس مو لعامة الشعب
    شكرا كتير استاذ زين رح ضل متااابع

  2. هلا باسم .. الدروس هنا متاحة للجميع ..
    هلا بكَ مجدداً ..

أضف تعليقاً

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

WordPress.com Logo

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   / تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   / تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   / تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   / تغيير )

Connecting to %s