Warning: fetch_template() calls should be replaced by the vB_Template class. Template name: copyright in [path]/includes/functions.php on line 4004

Warning: fetch_template() calls should be replaced by the vB_Template class. Template name: copyright in [path]/includes/functions.php on line 4004

Warning: fetch_template() calls should be replaced by the vB_Template class. Template name: copyright in [path]/includes/functions.php on line 4004
دروس موسعة في سي بلس بلس (++c)
 


+ الرد على الموضوع
النتائج 1 إلى 3 من 3

الموضوع: دروس موسعة في سي بلس بلس (++c)

  1. #1
    عـضـو نــشيط
    الحالة: 000 غير متواجد حالياً
    رقم العضوية: 13
    تاريخ التسجيل: Jun 2007
    الأهتمام: كل ما يفيد وينفع
    الاقامة: عالم من وحى خيالى
    المشاركات: 512
    التقييم: 10

    دروس موسعة في سي بلس بلس (++c)

    السلام عليكم ورحمة الله
    أخواني رواد منتديات جود
    أقدم لكم هنا مجموعة دروس في (++C)
    وأتمنى من الجميع الإستفادة والأفادة
    ملحوظة: عند النقل لمنتدى أو موقع يجب دكر المصدر

    سي بلس بلس (++C)

    إن لغة البرمجة سي بلس بلس (++C) هي واحدة من أكثر لغات البرمجة إستخداما و أوسعها إنتشارا بالإضافة إلى جدتها ، لغة سي (C) ، تعتبر لغة سي بلس بلس من لغات البرمجة الكائنية التوجه ، وإن كان من الممكن إستخدامها بشكل Structural او كمزيج من الإثنين.

    تعتبر لغة ++C من لغات البرمجة عالية المستوى كما أنّها من أكثر هذه اللغات انتشاراً ولغات البرمجة عالية المستوى هي اللغات التي ظهرت لتسريع عملية البرمجة حيث أن تعليماتها أقرب ماتكون إلى لغة الإنسان وهذا مايجعل عملية البرمجة أكثر سرعةً وسهولة. تسهّل لغة ++C الأسلوب المهيكل والمنهجي لعملية تصميم البرامج،حيث تتألّف برامج هذه اللغة من مكونات تسمّى الأصناف classes والدوال Functions وبالتالي يمكن تقسيم عمليّة تعلّم لغة ++C إلى قسمين:يعتمد الأول منها على تعلّم لغة ++C نفسها في حين يسمح الثاني بتعلّم كيفية استخدام الأصناف الملحقة بهذه اللغة واستخدام التوابع الموجودة ضمن المكتبة المعياريّة ANSI C

    تاريخ
    طور بيارن ستروستروب (Bjarne Stroustrup), و الذي كان يعمل فى مختبرات بيل, لغة السي++ في الثمانينات كتحسين للغة السي، تشمل السي++ جميع مزايا السي بالأضافة الى مزايا البرمجة الكائنية، تسهّل لغة ++C الأسلوب المهيكل والمنهجي لعملية تصميم البرامج،وتعتمد على الكائنات كبنية أساسية لتشكيل البرامج.


    و مثلها مثل لغة السى, فان السى++ هى لغة متعدده الاستخدامات الا انها مناسبة لبرامج أنظمة التشغيل. و تكتب معظم أجزاء أنظمة التشغيل و برامج مساعدة أنظمة التشغيل باستخدام السى++ و منها نظام جنو لينكس.

    و يتجنب الكثير من المبرمجين لغة السى++ و السى نظرا لشهرتهما كلغات برمجة معقدة. و قد أدى ذلك الى استخدام الكثيرين للغات مثل فيجوال بيسك و ديلفي ثم جافا و سي شارب و الأخيرتين هما مجرد تسهيل (و ليس تطوير) للغة السى++ و بدا فى وقت معين أن لغات مثل الجافا سوف تستولى على سوق البرمجيات التجارية من السى++ مع هجرة عدد كبير من مبرمجى السى++ الى جافا و سى شارب , الا أنه سرعان ما أدرك المبرمجون أن السى++ هى السبيل الوحيد لانتاج برامج تجارية قوية و سريعة و تؤدى المطلوب منها بكفاءة و بأقل عدد من الأخطاء.

    بين السى و السى++
    - تدعم السى++ السى بشكل كامل(نظريا أو هذا ما تقوله الشركات المنتجة للمترجمات) و عمليا يمكن لمعظم برامج السى أن تترجم بواسطة مترجمات سى++ و لهذا تسمى هذه المترجمات بمترجمات سى/سى++. - الا أن الأمر لا يخلو من بعض المشاكل غير المتوقعه, مثلا قد يحدث أن تسمى متغيرا باسم new و هى كلمة محجوزه فى سى++ و ليست محجوزة فى سى.

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

    و هذا بالاضافة الى بضعة اضافات أخرى مثل :

    - مكتبات جديدة لأداء مهام الادخال و الاخراج تعتمد على الكائنات.

    - كلمة iniline التى تضمن الاجراء الفرعى فى الأساسى بدلا من استدعائه.

    - استخدام الاشاره // لتضمين الملاحظات بطول سطر واحد.

    سبب صعوبتها
    ربما تعود أسباب صعوبة لغتى السى و السى++ لأسباب تاريخية أكثر منها واقعية و هو ما يردده المبرمجين المعتادين على استخدام السى++ و هذا يعود بنا الى أصل لغة السى و هى لغة السى بى ال CPL و التى اشتهرت بشدة تعقيدها مما تسبب فى ابتعاد المبرمجين عنها فتم تطويرها و تبسيطها الى لغة سميت BCPL و لم تلقى الكثير من النجاح و لكنها تطوت الى لغة البى B و عندما أرادو تطويرها سموها سى( و هذا هو أصل تسمية السى) , و بالطبع ورثت السى++ خصائص لغة سى. الا أنه لا يمكن انكار أن مفاهيم مثل المؤشرات pointers , و الاشارات هى مفاهيم مربكة للمبرمج المبتدىء , بالضافة الى مفاهيم التوارث Inheritance و تعدد الشكل polymorphism و القوالب Templates التى تربك حتى المبرمجين المحترفين. و كذلك لا تقدم سى++ الحماية الكافية للمبرمج كى لا يقع فى أخطاء التشغيل التى قد تتسبب فى توقف الحاسوب عن العمل. كيف؟

    فى لغة الفيجوال بيسك مثلا عندما تحدد مصفوفة بحجم 20 عنصرا مثلا كلأتى :

    Dim A(20) As Integer

    ثم تحاول معالجة العنصر رقم 21 مثلا فسوف يبادرك محرك الفيجوال بيسك برسالة خطأ و يتوقف برنامجك. أما فى السى++ فاذا عرفت مصفوفة بنفس الحجم : int a[20] // integer a from 0-19 not from 0-20 و عندما تحاول الوصول الى العنصر رقم عشرين مثلا تكون قد تعديت حدود المصفوفة الى جزء من الذاكرة ربما تكون مخصصة لبرنامج أخر أو معلومات حساسة لنظام التشغيل. و المشكلة الأخرى التى تربك الكثيرون أن أول عنصر بالمصفوفة هو 0 و ليس 1 و حجمها 20 أى أن العنصر الأخير هو 19 و ليس 20 مثل البيسك.

    سبب قوتها

    المعروف أنه كلما اقتربت لغة البرمجة من لغة الحاسوب (Machine Code) كلما زادت قوتها و ما يمكن أن تفعلة بها و فى الوقت نفسه كلما زادت صعوبتها و تعقيداتها , و فى السابق كان المبرمجون يضطرون الى كتابة برامج معينة بلغة التجميع (أسمبلي) لأنها كانت اللغة الأقرب للحاسوب الا أن ذلك كان أمرا فى غاية التعقيد و الصعوبة. و مع ظهور أنظمة التشغيل بدءا بيونكس بدأت بإستخدام لغة سي بدل من لغة أسمبلي في تطوير برامجها، وبظهور مبدأ البرمجة الكائنية التوجه، وإزدياد حجم البرامج المستخدمة وعدم كون سرعة تطبيق البرمجيات قضية حرجة، وإنتشار فكرة إعادة إستخدام البرمجيات بشكل كبير مع مبدأ البرمجة الكائنية التوجه، أصبحت السى++ بديلا جيدا للغات سابقة من ضمنها لغة التجميع ولغة سي وغيرها من اللغات التقليدية يريح المبرمجين من عنائها و فى الوقت نفسه لا تدفع بالمبرمج الى تقديم التنازلات التى تتطلبها لغات مثل بيسك و كوبول و باسكال و غيرها. و رغم أن السى و السى++ هما فى النهاية لغات عالية المستوى الا انه قد تم تصنيفهم كلغات متوسطة بين اللغات العالية المستوى مثل بيسك و كوبول و لغة التجميع و تسمى ب لغات متوسطة المستوى Intermediate Language و تم اعتبار السى كمستوى ثالث بين مستوى رابع و مستوى ثانى ( لغة التجميع أو أسمبلي) . و يتطرف بعض المبرمجين أكثر من ذلك و يصفون السى و السى++ بأنها لغة تجميع نقالة Portable Assembly.

    سي بلص بلص: الدرس الأول

    اي برنامج في العالم, عندما يتم ترجمته الى لغة الآلة, هو مجموعة من الاوامر المتسلسلة بشكل منطقي, و لا بد من نقطة بداية لهذه السلسلة من الأوامر ليبدأ الحاسوب بتنفيذ البرنامج.

    في لغة السي و السي بلص بلص, هذه النقطة هي بداية الدالة main
    كود:
    int main()
    {
        //code here
    }

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

    ما المقصود بالدالة؟
    جرت العادة عند كتابة برامج طويلة الحجم نوعا ما, ان يقسم البرنامج الى عدة اجزاء صغيرة, يمكن اعتبار كل جزء منها "بريمج" صغير, ينفذ اوامر معينة, فبذلك تسهل عملية البرمجة.
    عادة هذه البريمجات تمسى functions او procedures او subroutines حسب اللغة المستخدمة, في السي و السي بلص بلص فإنها تسمى functions, و عند ترجمتها الى العربية اصبحت "دالة", رغم انها حسب رأيي لا تعبر عن المعنى الصحيح.

    بهذا المفهوم, فإن البرنامج نفسه ككل, ما هو الا دالة كبيرة, لذلك فالبرنامج يبدأ عند بداية الـmain و ينتهي عند نهايتها.

    بالنسبة للسطر

    //code here
    فهو ليس سوى تعليق comment يتم اهماله عند ترجمة البرنامج, حيث إن أي سطر يبدأ بخطين مائلين // يعتبر تعليقا و هو طريقة مناسبة لكتابة اي شيء داخل البرنامج مثل شرح عن كيفية عمل جزء معين من البرنامج وما الى ذلك.

    فالحد الأدنى لأي برنامج هو هذه الأسطر:

    كود:
    int main()
    {
    
    }
    و هذا في الحقيقة هو برنامج صالح للترجمة و التنفيذ, و هو ببساطة لا يفعل شيئا, مجرد برنامج فارغ.

    -------------------------------
    الكتابة على الشاشة
    إن الأوامر الأكثر إنتشارا للكتابة على الشاشة هي أمر cout ، وهو عبارة عن stream ، والأمر موجود ضمن مكتبة iostream ، والتي من إسمها والذي يعني Input Output Stream ، أي تيار المدخلات والمخرجات المستمر.

    مثال
    كود:
    cout <<"hello world";

    المتغيرات
    تستخدم المتغيرات لتخزين القيم. وبشكل أكثر تقنية، المتغير يربط بين شيء (بالمعنى العام، أي قيمة معينة، رقم أو حرف أو غيره) وإسم يميزه (إسم المتغير) بحيث يمكن الوصول لهذا "الشيء" أو القيمة لاحقا، فيمكن وصفه أنه "تسمية" للأشياء لتسهيل الوصول إليها.

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

    تستخدم لغة سي وسي بلس بلس مجموعة من أنواع المتغيرات المعرفة مسبقا للتسهيل على المبرمجين، وتشتمل هذه الأنواع على:

    العدد الصحيح int
    العدد الصحيح، والذي يتم تعريفه بإستخدام int والتي هي إختصار لكلمة integer هو نوع من المتغيرات الذي يمكنه أن يحمل قيمة عدد صحيح ، قد يكون سالبا وقد يكون موجبا، وهو محدود بـ 16 أو 32 بت. وبشكل إفتراضي ، فإن المتغيرات من نوع int يمكن أن تحمل قيم سالبة وموجبة، وفي حال أردت أن يتم إستخدام القيم الموجبة فقط يمكن إضافة كلمة unsigned، فإن ذلك سيزيد آخر قيمة موجبة يمكن تخزينها إلى الضعف.

    مثال

    كود:
    unsigned int y;
    long int z;
    int w=5,a,b;
    هنا يمكنك أن تلاحظ الإعلان عن متغير من نوع int إسمه x في السطر الأول، ثم متغير آخر من نوع int ولكنه غير حامل لإشارة ، وبالتالي لا يحمل إلا قيم موجبة وذلك في السطر الثاني، وفي السطر الثالث يتم الإعلان عن متغير إسمه z ومن نوع long int، أي عدد صحيح مكون من 32 بت على الاقل، وفي السطر الأخير تلاحظ الإعلان عن ثلاثة متغيرات من نوع int، الأول هو w وتم إرساء القيمة 5 له، وتبعه على ذات السطر إعلن عن متغيران آخران هما a و b.

    الحروف char
    الحروف يتم تعريفها بإستخدام النوع char والذي هو إختصار لكلمة character، وهو يحمل قيمة رقم معين بين 0 و 255 بحيث يعني كل رقم من هذه الأرقام حرفا معينا، وتسمى القيم من 0 إلى 127 بقيم ASCII. وبحسب التريف ، فإن char يحمل قيما عددية صحيحة، مما يسمح بإستخدامه لتخزين الأرقام التي دون 255، ولكن ذلك يعني أيضا بأن قيمه قد تكون سالبة أو موجبة، ولتأكيد كونها سالبة أو موجبة ، أضف كلمة signed او unsigned إلى جانب إعلانك عن متغير من نوع char.

    الأعداد الكسرية Floating-point types
    عندما نحتاج لتخزين عدد غير صحيح، أي عدد كسري، فإننا نستخدم الأنواع float و double و long double. وهي أنواع لا تخلتف إلا في مدى دقة تخزينها للقيم والحدود القصوى للقيم التي يمكن تخزينها فيها. ف float بشكل عام يتكون من 32 بت، و double من 64 بت. و long double قد يكون أكبر من ذلك، ولكنه قد يكون بذات طول double.


    وهناك نوع خاص آخر يسمى void. وفي الحقيقة لا يسمح لك بإستخدام متغيرات من نوع void . ولكن هناك إستخدامات عديدة ل void، منها تمكين دالة ما من عدم إرجاع إي قيمة للبرنامج. و void لم تكن موجودة قبل أن تدخل ضمن لغة C القياسية عام 1989.

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

    لتعريف الثوابت تستخدم كلمة const والتي تعني ثابت أو مستمر مدموجة مع نوع الشيء الذي نود التعامل معه (أي نوع المتغير) وقيمته! قد يجد البعض أن كون الثابت هو متغير لا يمكن تغيير قيمته جملة عديمة المعنى، ولكن لو إعتبرنا أن الثابت عبارة عن قيمة متغير تبقى تحمل ذات القيمة بإستمرار، قد تكون الأمور أوضح.

    لإنشاء ثابت من نوع ما، لنفرض أنه ثابت عدد صحيح، ونود تسميته x وإسناد القيمة 7 إليه فإننا نكتب :

    كود:
    const int x = 7;

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

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

    بماذا تختلف const عن #define ؟
    قد يعرف البعض أن هناك طريقة لتعريف أسماء لقيم بإستخدام #define، هذه الطريقة تجعل المجمّع (الترجمان أو كومبايلر) يستبدل كل تعريف define يجده بالقيمة المعطاة، ولكنه لا يعطي لها نوعا محددا. على النقيض من const.

    العمليات الأساسية
    العمليات الأساسية، ترجمة لمصطلح operators، هي العمليات التي يمكن القيام بها على المتغيرات والكائنات بشكل عام، وهي تشمل الآتية:



    -------------------------------
    للقراءة يستخدم مجموعة الأوامر التي تقرأ من وسائط الإدخال القياسية، مثلا cin ، ولكن عليك التذكر بأن عند القراءة فأنت تحتاج/ين إلى مكان لتخزين القيمة المقروءة، فمثلا في حال اردت قراءة رقم صحيح يمكنك ان تكتب

    كود:
    cin>>x;
    الدوال الرياضية لأستخدام الدوال الرياضية يجب تضمين ملف الرياضيات math.h الذي يحتوي الدوال الأساسية لأتمام العمليات والمعادلات الرياضية.

    الدوال المثلثية

    كود:
     acos(double)
    ; 
    double asin(double);
    
    double atan(double);
    
    double cos(double);
    
    double sin(double);
    
    double sinh(double);
    
    double tan(double);
    
    double tanh(double);
    تم نقل هذا الموضوع من منتديات بوابة العرب التعليمية

    لكى تعم الفائده على الجميع

    ـ

    سُـبٌحَــانَ الـلٌـــه وَبِـحَـمٌـده سُـبٌحَــان الـلٌــه الـعَـظِـيـِـٌم




  2. #2
    عــضــو مــاسـي
    الحالة: Moataz غير متواجد حالياً
    رقم العضوية: 17
    تاريخ التسجيل: Jun 2007
    الأهتمام: ¤ّ,¸¸,ّ¤؛PLaYinG FOoT BaLL¤ّ,¸¸,ّ¤؛
    الاقامة: √ .ٍ.ٍ.ٍNo mercY .ٍ.ٍ.ٍ √
    المشاركات: 3,138
    التقييم: 10

    شكرا حسام علي البرنامج
    [align=center]
    - - - Tell me how you gonna be without me - - -
    ''’’’ AlônE Incômplété ‘‘‘'' No L0ve AnD No l0ver ‘‘‘''
    [/align]

  3. #3
    عـضـو نــشيط
    الحالة: 000 غير متواجد حالياً
    رقم العضوية: 13
    تاريخ التسجيل: Jun 2007
    الأهتمام: كل ما يفيد وينفع
    الاقامة: عالم من وحى خيالى
    المشاركات: 512
    التقييم: 10

    بسم الله الرحمن الرحيم

    السلام عليكم ورحمة الله وبركاته

    العفو يا قلبى بس ده درس :ي

    تقبل تحياتى
    ـ

    سُـبٌحَــانَ الـلٌـــه وَبِـحَـمٌـده سُـبٌحَــان الـلٌــه الـعَـظِـيـِـٌم




+ الرد على الموضوع

المواضيع المتشابهه

  1. ما هي دروس الحياة التي على البشر أن يتعلّموها؟
    بواسطة Miss.good news في المنتدى المنتديات العامة
    مشاركات: 8
    آخر مشاركة: 05-11-2008, 10:59 PM
  2. ثمانية دروس !!
    بواسطة baby face في المنتدى المنتديات العامة
    مشاركات: 2
    آخر مشاركة: 08-06-2007, 04:58 PM

ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك

دردشة مصرية

شات مصري

تبادل نصي

تبادل نصي

تبادل نصي

تبادل نصي

تبادل نصي

تبادل نصي