إعلان
دورة تطوير التطبيقات باستخدام لغة JavaScript في هذه الدورة ستتعلم لغة جافا سكريبت, استخدام مكتبة React.js, بناء API الموقع بواسطة Node.js, تطوير تطبيق جوال باستخدام React Native, و في نهاية الدورة ستتعلم تطوير تطبيق محادثة شبيه بتطبيق WhatsApp. تعلم الآن
دورة تطوير واجهات المستخدم في هذه الدورة ستتعلم لغة HTML و لغة CSS و لغة JavaScript. من ناحية التطبيق العملي ستتعلم طريقة بناء واجهة متجر إلكتروني مكون من ست صفحات, تحويل خمسة تصاميم PSD إلى صفحات ويب, بناء واجهة مستخدم تشبه موقع يوتيوب, بناء لوحة تحكم إحترافية. تعلم الآن
تطوير تطبيقات باستخدام لغة بايثون في هذه الدورة ستتعلم أساسيات البرمجة بلغة بايثون وصولاً إلى التعامل مع أشهر أطر العمل (Flask و Django) و ستتعلم كيف تبني متجر إلكتروني يمكن للمستخدمين البيع و الشراء من خلاله. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة PHP في هذه الدورة ستتعلم لغة PHP من الصفر, استخدام إطار العمل Laravel بشرح مفصّل و عملي, كيفية تطوير شبكة اجتماعية تشبه Instagram, بناء API لتطبيق جوال وفق أسلوب RESTful, تطوير موقع إعلانات مبوبة, تطوير نظام إدارة محتوى CMS كامل. تعلم الآن
دورة تطوير تطبيقات الويب باستخدام لغة Ruby في هذه الدورة ستتعلم البرمجة بلغة Ruby إنطلاقاً من أبسط المفاهيم وحتى بناء تطبيق حقيقي, إستخدام إطار العمل Ruby on Rails بشرح مفصّل و عملي, بناء تطبيق حقيقي عبارة عن شبكة اجتماعية تشبه تويتر, تطوير مجتمع الكتروني يشبه حسوب I/O. تعلم الآن
دورة علوم الحاسوب هذه الدورة معدة لتكون مدخل لعلوم الحاسوب و لغات البرمجة حيث ستتعرف فيها على أنظمة التشغيل و ستتعمق في نظام لينكس و في كيفية التعامل معه من خلال موجه الأوامر, بالإضافة إلى قواعد البيانات و أساسيات الشبكات و الخوادم و مبادئ الحماية والأمان في الويب. تعلم الآن

    C++ التعامل مع الأعداد

    مفهوم التعامل مع الأعداد في C++

    هناك الكثير من الدوال الجاهزة في C++ التي يمكن استخدامها لإجراء عمليات حسابية. بعض هذه الدوال يمكن استخدامها بشكل مباشر لأنها تعتبر معروفة بالنسبة لمترجم اللغة بشكل إفتراضي و بعض الدوال بحاجة لأن تضّمنها بنفسك أولاً حتى تتمكن من استخدامها.

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

    #include <cmath>
    	

    هذا السطر يعني أننا نريد إضافة محتوى الملف cmath في البرنامج مما يجعلنا قادرين على استخدام الدوال الموجودة فيه.

    دوال الملف cmath في C++

    الجدول التالي يحتوي على دوال الملف cmath الأكثر استخداماً.

    إسم الدالة مع تعريفها
    abs(x) ترجع القيمة المطلقة ( Absoulte Value ) للعدد الذي نمرره لها مكان البارامتير x.
    تابع القراءة »
    fabs(x) ترجع القيمة المطلقة للعدد الذي نوعه float و الذي نمرره لها مكان الباراميتر x.
    تابع القراءة »
    floor(x) ترجع العدد الصحيح الأصغر أو الذي يساوي العدد الذي نمرره لها مكان الباراميتر x.
    تابع القراءة »
    ceil(x) ترجع العدد الصحيح الأكبر أو الذي يساوي العدد الذي نمرره لها مكان الباراميتر x.
    تابع القراءة »
    rint(x) ترجع أقرب عدد صحيح للعدد الذي نمرره لها مكان الباراميتر x.
    تابع القراءة »
    fmax(x, y) ترجع العدد الأكبر بين العددين اللذين نمررهما لها مكان الباراميترين x و y.
    تابع القراءة »
    fmin(x, y) ترجع العدد الأصغر بين العددين اللذين نمررهما لها مكان الباراميترين x و y.
    تابع القراءة »
    fmod(x, y) ترجع الرقم الذي يتبقى من قسمة قيمة البارامتير x على قيمة البارامتير y.
    تابع القراءة »
    pow(x, y) تضاعف قيمة الباراميتر x بقيمة الباراميتر y ثم ترجع الناتج.
    تابع القراءة »
    sqrt(x) ترجع قيمة الجزر التربيعي (Square Root) للعدد الذي نمرره لها مكان الباراميتر x.
    تابع القراءة »
    cbrt(x) ترجع قيمة الجزر التكعيبي ( Cube Root ) للعدد الذي نمرره لها مكان الباراميتر x.
    تابع القراءة »
    fdim(x, y) إذا كانت قيمة x أكبر من قيمة y ترجع الفارق بينهما و الذي يساوي x-y, مع الإشارة إلى أنها ترجع الفارق كعدد إيجابي دائماً ( Positive Number ).
    غير ذلك ترجع صفر مهما كانت قيمة الأعداد المدخلة.
    تابع القراءة »
    fma(x, y, z) ترجع قيمة x * y + z مع الحفاظ على أي رقم موجود بعد الفاصلة.
    تابع القراءة »
    hypot(x, y) ترجع قيمة وتر المثلث ( Hypotenuse ).
    أي ترجع قيمة sqrt(x2 +y2) مع الحفاظ على أي رقم موجود بعد الفاصلة.
    تابع القراءة »
    exp(x) ترجع قيمة ex, أي قيمة المتسارع ( Exponential ) للعدد الذي نمرره لها مكان الباراميتر x.
    تابع القراءة »
    expm1(x) ترجع قيمة ex - 1, أي قيمة المتسارع ( Exponential ) للعدد الذي نمرره لها مكان الباراميتر x ناقص واحد.

    تابع القراءة »
    log(x) ترجع قيمة loge(x), أي قيمة اللوغاريتم ( Logarithm ) للعدد الذي نمرره لها مكان الباراميتر x.
    تابع القراءة »
    log2(x) ترجع قيمة log2(x), أي قيمة اللوغاريتم الثنائي ( Binary Logarithm ) للعدد الذي نمرره لها مكان الباراميتر x.
    تابع القراءة »
    log10(x) ترجع قيمة log10(x), أي قيمة اللوغاريتم العشري ( Decimal Logarithm ) للعدد الذي نمرره لها مكان الباراميتر x.
    تابع القراءة »
    sin(x) ترجع قيمة جيب الزاوية أو الجيب ( Sine ) للعدد الذي نمرره لها مكان الباراميتر x.
    تابع القراءة »
    asin(x) ترجع قيمة الجيب العكسي أو جيب الزاوية القوسي ( Arc Sine ) للعدد الذي نمرره لها مكان الباراميتر x.
    تابع القراءة »
    asinh(x) ترجع قيمة جيب الزاوية الزائدي أو الجيب الزائدي ( Hyperbolic Sine ) للعدد الذي نمرره لها مكان الباراميتر x.
    تابع القراءة »
    cos(x) ترجع قيمة جيب التمام ( Cosine ) للعدد الذي نمرره لها مكان الباراميتر x.
    تابع القراءة »
    acos(x) ترجع قيمة جيب التمام العكسي أو جيب تمام الزاوية القوسي ( Arc Cosine ) للعدد الذي نمرره لها مكان الباراميتر x.
    تابع القراءة »
    cosh(x) ترجع قيمة جيب التمام الزائدي ( Hyperbolic Cosine ) للعدد الذي نمرره لها مكان الباراميتر x.
    تابع القراءة »
    tan(x) ترجع قيمة الظل أو ظل الزاوية أو المماس ( Tangent ) للعدد الذي نمرره لها مكان الباراميتر x.
    تابع القراءة »
    atan(x) ترجع قيمة الظل العكسي أو ظل الزاوية القوسي ( Arc Tangent ) للعدد الذي نمرره لها مكان الباراميتر x.
    تابع القراءة »
    tanh(x) ترجع قيمة الظل الزائدي أو المماس الزائدي ( Hyperbolic Tangent ) للعدد الذي نمرره لها مكان الباراميتر x.
    تابع القراءة »

    ملاحظة

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

    طريقة توليد أرقام عشوائية في C++

    في حالات كثيرة قد تحتاج إلى توليد قيم عشوائية في برامجك و قد تكون بحاجة إلى تحديد نطاق الأعداد العشوائية التي ترغب في توليدها, فمثلاً في لعبة الزهر قد ترغب في الحصول على قيمة عشوائية بين 1 و 6.


    الدالة rand()

    للحصول على رقم عشوائي, يمكنك استخدام دالة إسمها rand() موجودة في الملف stdlib.h كالتالي.

    المثال الأول

    Main.cpp
    #include <iostream>
    #include <stdlib.h>
    
    using namespace std;
    
    int main()
    {
    	// هنا قمنا بطباعة رقم عشوائي
        cout << "Random number: " << rand();
        
    	return 0;
    }
    		

    سنحصل على نتيجة عشوائية تشبه النتيجة التالية عند التشغيل.

    Random number: 41
    		

    إذا قمنا بتشغيل البرنامج مرة ثانية سنحصل على نفس النتيجة السابقة كالتالي.

    Random number: 41
    		

    إذا قمنا بتشغيل البرنامج مرة ثالثة سنحصل على نفس النتيجة السابقة كالتالي.

    Random number: 41
    		

    إذاً استخدام الدالة rand() لوحده لا يضمن أن تحصل على رقم عشوائي مختلف في كل مرة تقوم فيها بتشغيل البرنامج.
    لهذا السبب بالتحديد, عليك أن تعلم مترجم لغة C++ بأن يعيد تغيير الإحتمالات العشوائية عند تشغيل البرنامج و قبل استداعاء الدالة rand() و هذا ما سنتعلمه الآن.


    الدالتين srand() و time()

    الدالة srand() تستخدم لتغيير سلسلة القيم العشوائية التي سيتم توليدها عند استدعاء الدالة rand() مما يجعلك تحصل على قيم عشوائية مختلفة عن القيم التي حصلت عليها في المرة السابقة التي قمت فيها بتشغيل البرنامج.

    إفتراضياً, الدالة rand() تستخدم المدى srand(1) في كل مرة يتم فيها تشغيل البرنامج, لهذا كنا نحصل على نفس القيم العشوائية عند البرنامج.

    لتمرير رقم مختلف للدالة srand() و بشكل تلقائي, يمكنك تمرير عدد الثواني الموجودة من 1-1-1970 و حتى وقت الجهاز الحالي و هذا تحصل عليه من خلال استدعاء الدالة time(0) و تمريرها للدالة srand() كما سنرى في المثال التالي.

    ملاحظة: لاستخدام الدالة srand() يجب تضمين الملف stdlib.h و لاستخدام الدالة time() يجب تضمين الملف time.h.

    المثال الثاني

    Main.cpp
    #include <iostream>
    #include <stdlib.h>
    #include <time.h>
    
    using namespace std;
    
    int main()
    {
    	// هنا قمنا بتغيير سلسلة القيم العشوائية التي سيتم توليدها
    	srand(time(0));
    	
    	// هنا قمنا بطباعة رقم عشوائي
        cout << "Random number: " << rand();
        
    	return 0;
    }
    		

    سنحصل على نتيجة عشوائية تشبه النتيجة التالية عند التشغيل.

    Random number: 1537
    		

    إذا قمنا بتشغيل البرنامج مرة ثانية سنحصل على نتيجة عشوائية مختلفة عن النتيجة السابقة كالتالي.

    Random number: 1579
    		

    إذا قمنا بتشغيل البرنامج مرة ثالثة سنحصل على نتيجة عشوائية مختلفة عن النتيجة السابقة كالتالي.

    Random number: 1621
    		

    المثال التالي يوضج طريقة تحديد أعلى و أدنى قيمة عشوائية يمكن أن يتم إرجاعها.

    المثال الثالث

    Main.cpp
    #include <iostream>
    #include <stdlib.h>
    #include <time.h>
    
    using namespace std;
    
    int main()
    {
        // هنا قمنا بتغيير سلسلة القيم العشوائية التي سيتم توليدها
        srand(time(0));
    
    	// هنا قمنا بإنشاء رقم عشوائي بين 1 و 10
        int x = rand() % 10 + 1;
    
        // هنا قمنا بطباعة رقم عشوائي
        cout << "Random number: " << x;
    
        return 0;
    }
    
    		

    سنحصل على رقم عشوائي بين 1 و 10 كالتالي عند التشغيل.

    Random number: 3
    		
    إعلان

    Eqla3Tech.com

    شروحات مكتوبة حول لغات البرمجة و تقنية المعلومات باللغة العربية مقدمة من إقلاع تك.

    لغة جافا لغة ++C قواعد البيانات نظام ويندوز نظام لينكس الشبكات تقنية المعلومات الأمن السيبراني

    الدورات

    أدوات مساعدة

    الأقسام

    دورات
    مقالات أسئلة مشاريع كتب