بتـــــاريخ : 2/22/2011 8:08:28 PM
الفــــــــئة
  • الحـــــــــــاسب
  • التعليقات المشاهدات التقييمات
    0 2227 0


    لغة Cpp للمبتدئين: الخطوات الاولى. FAQ - أكثر الاسئلة شيوعا. ..

    الناقل : elmasry | العمر :42 | الكاتب الأصلى : الشمري | المصدر : www.arabteam2000-forum.com

    كلمات مفتاحية  :

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

    هذا الموضوع عبارة هن دليل للمبتدئين في هذه اللغة وهو أشبه ما يكون بـ FAQ ( أكثر الاسئلة شيوعا ).

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

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

    وملاحظة أخيرة : لقد تكلمت في هذا الموضوع عن Visual Cpp 2005 , وكل ماقلته عن هذا المترجم ينطبق على Visual Cpp 2008 .


    1- ما هو الفرق بين لغة السي والسي بلس ؟


    لغة السي ظهرت قبل لغة السي بلس . بالتالي لغة السي بلس هي إمتداد للغة السي .
    فكل الامور الموجودة في السي ستجدها في السي بلس لكن العكس غير صحيح .

    2- ما هو الفرق بين
    Cpp و Borland Cpp .
    Cpp و Visual Cpp
    CPP و CPP.NET
    CPP و ؟؟؟؟؟؟ . ؟


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

    3 - هل أتعلم السي أو أتعلم السي بلس وهل اذا تعلمت واحدة منهما اكون قد تعلمت الاخرى ؟

    نصيحة :
    لاتقل : أريد ان اتعلم السي .. ثم اتعلم السي بلس . ومن هذا الكلام .
    فالان أغلب الكتب والدروس هي تدمج السي بالسي بلس او لنقل تركز على السي بلس .
    لانك اذا تعلمت فقط السي تكون قد قطعت 75% من المشوار .
    اما اذا تعلمت السي بلس فانك تكون قد قطعت 100% من المشوار .


    ( من هنا وصاعدا وفي هذا الموضوع اذا رأيتني اكتب " لغة السي" فاني اعني السي والسي بلس لا افرق بينهما )

    4- ماهي حدود لغة السي ( او السي بلس بلس ) ؟
    ليس أمامك حدود فكل شيء تستطيع عمله باستخدام هذه اللغة . ( هذا بشكل عام ولا علينا من الامور الدقيقة ) .
    فمثلا برامج التصميم كالفوتوشوب والثري دي ماكس . من انتاج هذه اللغة ,
    90% من برامج اللينكس هي من انتاج لغة السي .
    لاتنسى أيضا برمجة الالعاب .. اللغة الرئيسية لبرمجة الالعاب هي لغة السي بلس

    5- أنا تعلمت لغة برمجة اخرى في السابق ( مثل لغة الفيجوال بيسك او لغة الدلفي او الجافا ) .. هل من الممكن أن يفيدني هذا بشيء عندما أتعلم لغة السي ؟

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

    لكن يجب عليك أن تكون مستعدا للتأقلم مع لغة السي .. فستجد بعض الاختلافات والفروق .. وتحتاج وقت لاتقانها .

    6- ماهي المدة التي أحتاجها لاتقان لغة السي ؟

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

    7- أريد تعلم هذه اللغة واشتريت ونزلت وقرأت كتب ... وانا متحمس جدا .. لكن أين أكتب الكود ؟ ؟ ألا يوجد برنامج للغة السي يقوم بتحويل الكود الى برنامج ؟

    شكر : للاخ AmR EiSa لتعديله على هذا الجواب:

    حسنا, أنت تحتاج لشرح بعض المصطلحات :
    البرنامج الذي تكتب فيه ( كود لغة السي ) تستطيع أن تكتبه بأي محرر نصوص .. وليكن المفكرة .. ولكن توجد برامج توصف بأنها بيئة تطوير IDE .. والذي يقوم بتحويل الكود الى ملف معين يسمى (COMPILER) الكومبايلر او المترجم او المصرف ...
    طبعا لن اتكلم عن linker والامور الاخرى .. هذه ستعرفها انت اذا بدأت في تعلم اللغة .
    ببساطة .. وباختصار .. نسمي البرامج اللي تكتب فيها الكود وتحولها الى تطبيق بالمترجم .

    أما اذا أردت مزيد من التفصيل .. فنقول :
    يوجد عدة مترجمات .. مثلا مترجمات مايكروسوف و أيضا البورلاند .. وايضا GCC وغيرها .
    ثم يوجد ما يسمى بالرابط linker .. المترجم والرابط يقومان في النهاية بإنشاء الملف التطبيقي .
    وتترجم الكود عن طريق موجه الاوامر ..

    ولكن يوجد برامج تحتوي على واجهة . تختصر لنا الطريق وتعتمد على تلك المترجمات .. وتوصف هذه البرامج بأنها IDE ( بيئة تطوير لغة السي ) .


    مسألة أخرى وهي أنواع ملفات السي بلس :
    ملفات السي كثيرة وتختلف من مترجم الى آخر ..
    ولكن أهمها :
    ملف إمتداده
    .cpp - c

    ملف إمتداده
    .h او hpp . ( ويسمى الملف الرأسي ( header file )

    ويوجد ملف ثالث هو الذي يقوم بتجميع مشروعك .. يعني لنفرض عندك 15 ملف cpp و 15 ملف h من الصعب أن تفتحها كلها يدويا
    بالتالي يوجد ملف ثالث يختلف من مترجم لاخر يقوم بتجميع مشروعك من هذه الملفات :
    ملف امتداده :
    .dsw او dsp وهو من ملفات مترجم الفيجوال سي 6 .
    dev وهو من ملفات المترجم dev-cpp . وغيرها ....


    نعود مرة أخرى للمترجمات .. الاسئلة والأجوبة التالية ستوضح لك أي مترجم تختار وكيف تعمل عليه .



    8- ما أفضل المترجمات ؟


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

    أما المترجمات فهي :

    1- Visual Cpp :
    وهو عدة اصدارات .. 6 ثم 2003 ثم 2005 ,والان 2008 وكلها من انتاج مايكروسوفت .. يوجد اصدار مجاني لكن لا انصح به لان ينقصه عدد من المكتبات الاضافية ,
    لذلك حاول الحصول على النسخة الكاملة .. المترجم هو أفضل المترجمات حاليا للويندوز.


    2- ِC++ builder : ( شكر للاخ B.M.AbdelAziZ على الاضافة)
    http://www.codegear....ucts/cppbuilder
    غير مجاني .. ولست متأكد بعد من وجود نسخة مجانية .
    من يملك معلومات أكبر عنه فليزودني بها أو يعدل على هذا الموضوع

    3- Dev-cpp :
    هو عبارة عن محرر IDE يستخدم المترجم MinGW .. هو كاف لمن يريد تعلم لغة السي بلس وبرمجة تطبيقات الويندوز .. وهو مجاني .

    4- CodeBlocks:
    أيضا هو عبارة عن IDE يعني محرر .. وستخدم مترجمات أخرى .. منها MinGW .. أيضا مجاني ويعمل على الويندوز و لينكس .
    http://www.codeblocks.org/


    9- أريد تطبيق أول برنامج لي في لغة السي بلس .. باستخدام Visual Cpp 6 .. هل من الممكن المساعدة ؟

    اقرأ هذا الدرس .
    المترجم :
    visual c++ 6

    10- أريد تطبيق أول برنامج لي في لغة السي بلس .. باستخدام Visual Cpp 2005 .. أو Visual Cpp 2008 , هل من الممكن المساعدة ؟


    اقرأ هذا الدرس

    11- أريد تطبيق أول برنامج لي في لغة السي بلس .. باستخدام Dev-Cpp .. هل من الممكن المساعدة ؟


    اقرأ هذا الدرس

    12- طفشت من الشاشة السوداء .. هل يمكنني أن أطور برامج مرئية فيها أزرار ورسومات ؟

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

    1- Win32 API :
    هي عبارة عن مجموعة من الدوال والتراكيب التي منها تم بناء نظام الويندوز .. موجودة في ملفات DLLs مثل GDI .. ( التعريف ليس دقيق) .
    أي شيء تراه في الويندوز أمامك هو نتيجة لدالة من هذه الدوال .. الجافا والسي شارب والاسمبلي .... كلها ومن اجل انشاء برنامج مرئي .. تستخدم الWin32 API بشكل مباشر أو غير مباشر ..

    ميزة الWin32 API هي أنها الأساس والقاعدة .. لو فهمتها فهمت أصول البرمجة لويندوز , كما يمكن تطوير برامج من خلالها باستخدام Dev-Cpp أو Visual Cpp , ويكفيك تعلم لغة السي فقط لتتعلمها .
    وعيوبها .. أنها طويلة + خاصة لنظام الويندوز .

    2- MFC :
    مكتبة تقوم بتغليف الWin32 API بطريقة كائنية OOP ..
    ميزتها أنها أسهل من Win32 API فقط لمن هو وصل لدرجة الاحتراف في السي بلس بلس ..وفهم الOOP, وعيوبها أنها خاصة بالويندوز وخاصة بمترجمات مايكروسوفت Visual Cpp .

    3- QT :
    تعمل على أكثر من نظام .. وعيوبها انها مجانية فقط للمشاريع الغير تجارية + لاتعمل على Visual Cpp انما على المترجمات المجانية الاخرى . ( أنا هنا أتكلم عن النسخة المجانية من qt ) .


    4- .. عشرات المكتبات الاخرى ... لايتسع المقام لذكرها .



    13- أريد تطبيق أول برنامج لي باستخدام Win32 API .. باستخدام Visual Cpp 6 .. هل من الممكن المساعدة ؟

    قريبا ان شاء الله .


    14- أريد تطبيق أول برنامج لي باستخدام Win32 API .. باستخدام Visual Cpp 2005/2008.. هل من الممكن المساعدة ؟

    اقرأ هذا الدرس ( الجزء الأول منه يشرح ماتريد)


    15- أريد تطبيق أول برنامج لي باستخدام Win32 API .. باستخدام Dev-Cpp .. هل من الممكن المساعدة ؟

    اقرأ هذا الدرس ( الجزء الثاني منه يشرح ماتريد)


    16- أريد تطبيق أول برنامج لي باستخدام MFC .. باستخدام Visual Cpp 6 .. هل من الممكن المساعدة ؟
    قريبا ان شاء الله .

    17- أريد تطبيق أول برنامج لي باستخدام MFC .. باستخدام Visual Cpp 2005/2008. هل من الممكن المساعدة ؟

    اقرأ هذا الدرس

    18- أريد تطبيق أول برنامج لي باستخدام QT.. باستخدام Dev-Cpp .. هل من الممكن المساعدة ؟


    برنامجك الأول مع Qt .. باستخدام Codeblock أو Dev-Cpp


    19- كانت برامجي تعمل وبشكل رائع في الفيجوال سي 6 , لكن وما أن تحولت الى Visual Cpp 2005 وقمت باعادة ترجمة تلك البرامج .. حتى ظهرت لدي أخطاء لاتعد ولاتحصى ... مالسبب في ذلك ومالحل ؟

    قريبا ان شاء الله .


    20- يوجد في الفيجوال بيسك شيء اسمه ocx .. وفي الجافا تقدر تضيف مكتبات ..
    وفي السي شارب تقدر تضيف مراجع .. فهل يوجد في السي بلس طريقة لاضافة مكتبات خارجية ؟


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

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

    - اذا كانت المكتبة مفتوحة المصدر .. مثل مكتبة tinyxml ..فتستطيع الاستفادة منها ووبساطة بأن تنسخ الملفات cpp و h الى مجلد مشروعك وثم تستدعي الملفات المطلوبة include ..

    - اذا كانت المكتبة مغلقة المصدر , binary , فأنك ستجد أنه تتكون من ثلاثة أجزاء رئيسية في الغالب :

    1- ملفات رأسية header files .
    2- ملفات المكتبات وامتداداها في Visual Cpp هو .lib أما امتدادها في الMinGW (في Dev-cpp ) هو .a
    3- ملفات dll ( غالبا) حيث هذا يعني ان الربط سيكون ديناميكي ,, وليس ستاتيكي .

    كل IDE ( محرر) له طريقة في ربط المكتبات ... وكل مكتبة في الغالب ستشرح لك طريقة الربط .. في النهاية طريقة الربط واحدة في 90% من المكتبات .

    21- هل يوجد مثال عملي على كيفية ربط مكتبة .. في الفيجوال سي 6 ؟

    قريبا ان شاء الله .

    22 - هل يوجد مثال عملي على كيفية ربط مكتبة .. في الفيجوال سي 2005 ؟

    قريبا ان شاء الله .

    23- هل يوجد مثال عملي على كيفية ربط مكتبة .. في Dev-Cpp ؟

    قريبا ان شاء الله .

    24- ماهي ال STL ؟
    هي تقوم بما تقوم به ال Data Structures , ويقابلها في الجافا Collection .
    مكتبة تكون موجودة مع أي مترجم محترم ,, :D ..

    مواضيع ذات صلة :
    ++C المتقدمة: مكتبة STL
    الطريق إلى إحتراف التعامل مع STL



    25- ماهي ال ATL ؟

    نرجو المساعدة في اجابة هذا السؤال .

    26- هل توجد مكتبات لتحميل وتحويل عدة أنواع من الصور ؟

    قريبا ان شاء الله .


    27- هل توجد مكتبات للتعامل مع الملفات المضغوطة ؟

    قريبا ان شاء الله...

    28- هل توجد مكتبات للتعامل مع ملفات الxml .
    قريبا ان شاء الله...

    29- هل توجد مكتبات للتعامل مع الشبكات وبرمجياتها ؟
    قريبا ان شاء الله...

    30- هل توجد مكتبات للتعامل مع برمجة الجرافكس وعالم الجرافكس ؟
    قريبا ان شاء الله...

    31- هل توجد مكتبات لانشاء تطبيقات فيزيائية ؟
    قريبا ان شاء الله...

    32- هل توجد مكتبات لانشاء قواعد بيانات و/أو ادارتها ؟
    نرجو المساعدة في اجابة هذا السؤال ..


    33- أين ممكن أن أجد شرح لجميع مكتبات السي والسي بلس القياسية ؟

    http://www.cplusplus.com/reference/

    http://www.cppreference.com/

    http://msdn2.microso...y/3bstk3k5.aspx



    34- ماهي المراحل التي يمر بها البرنامج بلغة ++C قبل تنفيذه؟
    بواسطة : time1
    يمر البرنامج بلغة سي ++ بست مراحل قبل تنفيذه وهي :

    المرحلة الاولى :
    كتابة البرنامج Edit .
    المرحلة الثانية:
    مرحلة ماقبل الترجمة او المعالجة Preprocess
    المرحلة الثالثة :
    الترجمة Compile
    المرحلة الرابعه:
    الربط Link
    المرحلة الخامسة.
    التحميل Load
    المرحلة السادسة .
    التنفيذ Execute

    كتابة البرنامج ,وفيها تتم كتابة البرنامج بواسطة محرر النصوص الخاص بالمترجم والذي سيقوم بالتدقيقات والبحث عن الاخطاء اللغوية , اما الاخطاء المنطقيه فهي تتم من خلال تجريب البرنامج والبحث عن المخرجات والتمعن فيما اذا كانت تماثل المخرجات العقلية ام لا .

    بعدها تتم عملية ماقبل الترجمة الفعلية او المعالجة وعندها يتم التعامل مع مجموعة من التوجيهات والاجراءات الواجب تنفيذها على نص البرنامج قبل عملية الترجمة , اي ( معالجة البرنامج قبل عملية الترجمة ) وتشبه هذه العملية المعالجة الاولية لمحرر النصوص وتعمل هذه العملية على الاضافات اللازمة والتعديلات اللازمة على البرنامج المصدري .
    بعدها تتم عملية الترجمة : اي تحويل البرنامج المكتوب بلغة السي ++ إلى لغة الالة . اي تحويل الكود من لغة سي ++ إلى لغة الالة , ولكن هذا الكود غير قابل للتنفيذ حتى الان .
    مرحلة الربط . وهي ربط النصوص مع بعضها بالطرق المنطقيه , اي : ان برامج سي ++ تحتوي على استدعاء دوال تم تعريفها في اماكن مختلفه مثل : المكتبات المعيارية , او المكتبات الخاصة بمجموعة من المبرمجين لتسهيل العمل عليهم مستقبلا ً .
    يحتوي الملف المراد ترجمته على نقص في عملية الترجمة فيقوم الرابط بعملية الربط بين النقص الحاصل في الملف المراد ترجمته واماكن تواجد النصوص الناقصه , وهذا يعني الربط بين استدعاء الدالة ومكان تعريفها .
    ينشأ لنا بعد ذلك ملف تنفيذي يمثل الصورة الاساسية للبرنامج , بعدها تأتي عملية التحميل .
    التحميل : ونقصد بهذا المفهوم تحميل البرنامج إلى الذاكرة لتنفيذه ويقوم بهذه العملية المحمل الذي ينقل الملف التنفيذي إلى الذاكرة , وبعدها يبدا الحاسب بتنفيذ البرنامج بشكل متسلسل حيب التعليمات , اي تعليمة تلو الاخرى حسب اشراف وحدة المعالجة CPU

    ========
    تم بحمد الله .

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

     
    ملف مرفق(ملفات)
     
    ملف مرفق  cpp_ide___com.zip (280.53كيلو )

    كلمات مفتاحية  :

    تعليقات الزوار ()