الجمعة، 10 يناير 2014

تعلم ++ C الجز الاول


تعلم ++C







لغة البرمجة C++  :
تعتبر هذه اللغة من لغات البرمجة القوية , حيث تمكن المبرمج من كتابة مجموعة من الأوامر والايعازات لحل مشكلة معينة . وتتميز هذه اللغة بأنها تمكن المبرمج من كتابة البرامج الموجهة المركبة الأفضل كفاءة . حيث تقسم لغات البرمجة الى قسمين :
1- لغات البرمجة ذات المستوى العالي  High Level Languages    :
     وهي اللغات التي يكتب بها البرنامج بطريقة تكون اقرب إلى لغة الإنسان وبالتالي ابعد من فهم الحاسبة (أعلى من فهم الحاسبة ) . لذلك فأن البرنامج المكتوب بهذه اللغة لا يفهم بصورة مباشرة من قبل الحاسبة . ومن هذه اللغات لغة pascal, fortran ,ada ,algol,…   . إن برنامج لغات المستوى العالي يمر بمرحلتين  قبل التنفيذ :
1-مرحلة الترجمة  Compilation Stage   : يتم في هذه المرحلة تصحيح الأخطاء القواعدية
  والإملائية  للبرنامج .
2-مرحلة التفسير  Interpretation Stage  : حيث يتم في هذه المرحلة تحويل البرنامج الصحيح
   قواعدياً إلى صيغة أخرى مفهومة من قبل الحاسبة والتي تسمى لغة الآلة Machine Language

2-لغات المستوى الواطئ Low Level Languages  :
     وهي اللغات التي يكون فيها البرنامج مكتوب بطريقة تفهم من قبل الحاسبة بصورة مباشرة . هذه اللغة تسمى بلغة الآلة مثل لغة Assembly  . لذلك فأن البرنامج المكتوب بهذه اللغة ينفذ بشكل أسرع لأنه لايمر بالمرحلتين السابقتين .

إن لغة C++  هي لغة وسطية  Middle Level Language  مابين لغات المستوى العالي ولغات المستوى الواطئ . لذلك فأن البرنامج المكتوب بهذه اللغة يترجم وينفذ بشكل أسرع من لغات المستوى العالي .

مكونات لغة C++  :

1- الكلمات المحجوزة Reserved Words
       هذه الكلمات يكون لها صيغ إملائية محدد يجب الالتزام بها عند كتابة البرنامج وإلا يكون البرنامج محتوياً على خطأ ولايمكن تنفيذه . الصيغة الإملائية للكلمات المحجوزة للغة C++ تتكون من مجموعة من الحروف الصغيرة Letters  Lower Case حيث تحتوي لغة C++ على 32 كلمة قياسية وهذه الكلمات لها مكان معين تستخدم فيه للأداء غرض معين مثل :
for , static , if , do , double ,int,…….


 2- المعَرف Identifier   :
    وهو يشمل كل الأسماء التي تعرف من قبل المبرمج في البرنامج مثل أسماء المتغيرات والثوابت والأنواع البيانية واسم البرنامج ويتكون المعرف من حرف واحد على الأقل صغير أو كبير أو         underscore متبوع بسلسلة من الحروف أو الأرقام أو underscore وغير ذلك يعتبر غير مقبول من قبل اللغة ,  مثال
Sum , text1 , a22 ,_ss , ft_2….        مقبول
3a_a , 2Max, m1*, d12$ ,…..      غير مقبول

3-الدوال المكتبية Library functions   :
    وهي تمثل مجموعة من الدوال التي يتم استدعائها من المكتبة الخاصة بها . كل مكتبة في لغة C++   لها مجموعة من الدوال الخاصة بها  لأداء شيء معين مثل مكتبة دوال القراءة والكتابة iostream.h ومكتبة  الدوال الرياضية Math.h ومكتبة معالجة السلاسل الرمزية String.h ,الخ.
وتنقسم مكتبة الدوال الى قسمين :

1-مكتبة الدوال القياسية  Standard library functions
2-مكتبة الدوال الخاصة بالصنف  Class library functions








الهيكل العام لبرنامج لغة C++   :

-         Library Functions Calls .
-         Global Variables Declarations .
-         Subprograms .
<Data Type>    Main( )
{
   Local variables declaration
   Statements code :
       Stat1;
       Stat2;
       Stat3;
         :
         :
       Stat n;
   Return  <value>;
}


ملاحظات:
1-جزء استدعاء الدوال المكتبية  Library Functions Call     :
    يتم في هذا الجزء استدعاء الدوال المطلوب التعامل معها في البرنامج . حيث يوجد هنالك أكثر من نوع من هذه الدوال مقسمة كل واحدة حسب عملها مثل مكتبة دوال القراءة والطباعة ومكتبة الدوال الرياضية ومكتبة الدوال الخاصة بالسلاسل الرمزية ,الخ . حيث يتم استدعاء مكتبة الدوال المطلوبة عن طريق الإيعاز #include     . مثلاً لو أردنا استدعاء الدالة الخاصة بإيعازات  القراءة والطباعة فأن الصيغة تكون كالتالي :
 #include <iostream.h>
2-جزء  تعريف المتغيرات العامة (العالمية) Global Variables Declarations  :
        يمكن تعريف المتغير Variable بأنه عنوان موقع ذاكرة يستعمل لخزن قيمة معينة بشكل مؤقت طول فترة تنفيذ البرنامج , وهذه القيمة المخزونة فيه يمكن أن تكون عدد صحيح سالب أو موجب , عدد كسري سالب أو موجب أو أي رمز مثل الحروف أو الأرقام . أي يجب تحديد النوع البياني للمتغير لتحديد ماهية القيمة المخزونة ,حيث توضع كلمة تدل على النوع البياني قبل اسم المتغير للتصريح عن نوع المتغير .كل جملة تعريف متغير يجب أن تنتهي بفارزة منقوطة لدلالة على انتهاء جملة التعريف  مثلاً :
 int  count ;          ----> here count is Global variable
 لذلك فأن المتغيرات تنقسم بشكل رئيسي إلى قسمين المتغيرات العامة والمتغيرات المحلية . المتغيرات العامة فهي المتغيرات التي تكون معروفة في أي جزء من أجزاء البرنامج , والتي لو أردنا التصريح عنها فيتم ذلك في هذا الجزء . أما المتغيرات المحلية فهي المتغيرات التي يمكن استخدامها فقط ضمن الدالة المعرفة ضمنها تلك المتغيرات .
3-جزء كتابة البرامج الفرعية   Subprograms :
     حيث يتم في هذا الجزء كتابة البرامج الفرعية (الدوال) التي سوف نقوم بدراستها بشكل موسع فيما بعد .
4- الدالة الرئيسية main()   :
     الأجزاء الثلاثة المذكورة أعلاه هي أجزاء اختيارية Optional أي يمكن أن تكتب في البرنامج أو لا تكتب أي هي موجودة في البرنامج عند الحاجة . أما هذا الجزء فهو جزء رئيسي في البرنامج ,فلا يمكن كتابة برنامج  لا يحتوي على الدالة main ,هذه الدالة يمكن أن ترجع قيمة هذه القيمة يجب تحديد نوعها بكلمة تقع قبل كلمة  main.مثل
int Main( )
 هيكل هذه الدالة مقسوم إلى ثلاثة أجزاء محصورة بين قوس بداية الدالة  { وقوس نهاية الدالة }  هذه الأجزاء هي  :
أ-جزء تعريف المتغيرات المحلية Local variable Declaration :
   في هذا الجزء يتم تعريف المتغيرات المحلية ,أي المتغيرات الخاصة بالدالة  main  . لقد تميزت لغة C++  عن باقي اللغات الأخرى بأن هذه المتغيرات يمكن أن تعرف في أي جزء داخل الدالة main ولكن بشرط قبل الجملة التي تستخدم هذه المتغيرات ,أي لا يشترط  تعريف هذه المتغيرات في بداية الدالة . طريقة التعريف نفسها للمتغيرات العامة ولكن مكان المتغيرات مختلف  مثل :
int x ,y;
double  t;
char  g;
يمكن إعطاء قيمة للمتغير أثناء تعريفه , مثل :
int x=100;
char  ch=’A’ ;
ب-جزء كتابة جمل البرنامج  Statements Code :
     هذا الجزء يمثل كتابة الجمل البرمجية الخاصة بلغة C++ , حيث يشترط وضع الفارزة المنقوطة في نهاية كل جملة للدلالة بأن هذه الجملة قد انتهت والذي بعدها جملة جديدة وهكذا إلى أخر جملة في البرنامج .
ج-الإيعاز return : وهو يشير إلى القيمة  التي سوف ترجعها الدالة ,بحيث هذه القيمة يجب أن تكون من نفس النوع البياني ((Data Type  المحدد قبل main . في لغة C++ يمكن للدالة أن ترجع قيمة معينة أو لا ترجع شيء عن طريق وضع كلمة void  قبل main والتي تعني لاشيء . في هذه الحالة تحذف كلمة return  من البرنامج لأنه لا توجد قيمة راجعة .




سنبدأ بكتابة برنامج يعرض نصاً على الشاشة:-


 
//Program 1-1:
//This program will display a message on the screen.
#include<iostream.h>
main ( )
{
      cout <<''welcome to C++ !\n'';
return 0; 
}

الخرج من البرنامج:

welcome to C++ !





بتنفيذ البرنامج ويعود سريعاً للمحرر IDE.
من الآن فصاعداً،  إذا أردت تثبت المخرجات على الشاشة عليك إضافة التالي إلى البرنامج:
#include <conio.h>
في أول البرنامج، وإضافة العبارة:
getch( )
في السطر الذي يسبق العبارة return0



// Program 1-1:
//This program will display a message on the screen.

يبدأ هذا السطر من البرنامج بالشرطة المزدوجة (//) الدالة على أن بقية السطر عبارة عن تعليق (comment)، تضاف التعليقات إلى البرامج لتساعد المبرمج أو أي شخص آخر قد يحتاج إلى قراءة البرنامج على فهم ما الذي يفعله البرنامج، لذا من المستحسن أن يبدأ كل برنامج في لغة C++  بتعليق يوضح الغرض الذي من أجله كتب البرنامج.
تستخدم الشرطة المزدوجة (//) إذا كان التعليق يمتد لسطر واحد فقط single-line comment .
هنالك نوع آخر من التعليقات يتيح لنا كتابة تعليقات تمتد إلى عدة أسطرmulti-line comments  ، نستطيع كتابة التعليق السابق على الصورة:
/* Program 1-1:
 This program will display a message on the screen
*/

يبدأ الرمز */ التعليق وينهيه الرمز */ . نجد أن نهاية السطر لا تعنى انتهاء التعليق لذا يمكننا كتابة ما نشاء من أسطر التعليقات قبل الانتهاء  بالرمز */.


مرشدات المهيئ(Preprocessor Directive)   :-
#include<iostream.h>
يسمى هذا بمرشد المهيئ  Preprocessor directive، وهو عبارة عن تعليمة للمصرف أن يدرج كل النص الموجود في الملفiostream.h  في البرنامج، وهو ملف يجب تضمينه مع أي برنامج يحتوى على عبارات تطبع بيانات على الشاشة أو تستقبل بيانات من لوحة المفاتيح.
يسمى iostream ملف ترويسة (header file)، وهنالك الكثير من ملفات الترويسة الأخرى، فمثلاً إذا كنا نستعمل في برنامجنا دالات رياضية كـ sin( ) وcos( ) نحتاج إلى شمل ملف ترويسة يدعى math.h، وإذا كنا نتعامل مع سلاسل الأحرف سنحتاج للملف string.h. وعموماً هنالك عدد كبير من ملفات الترويسات التي يجب تضمينها على حسب طبيعة البرنامج ، تعتبر ملفات الترويسات جزء مهم من  برامج لغة C++ وسنحتاج إلى شمل الملف iostream.h لتشغيل أي برنامج يقوم بعمليات إدخال وإخراج.
الدالة main :-
main( )                      
يبدأ تشغيل أي برنامج C++ من دالة تدعي main( )، وهي دالة مستقلة ينقل نظام التشغيل التحكم إليها. وهي جزء أساسي في برنامج C++.
 الأقواس بعد main  تشير إلى أن main  هي عبارة عن دالة. قد يحتوى برنامج C++ على أكثر من دالة إحداهما بالضرورة هي main. يحتوى البرنامج السابق على دالة واحدة.
يبدأ تنفيذ البرنامج من الدالة main  حتى لو لم تكن هي الأولى في سياق البرنامج. يتم حصر جسم الدالة main بأقواس حاصرة { }  .
الخرج إلى الشاشة:-
cout<<'' welcome to C++ !\n '';
هذه العبارة (statement) تجبر الحاسوب أن يظهر على الشاشة النص المحصور بين علامتي الاقتباس  ''  .'' ويسمى هذا النص ثابت سلسلي.
يجب أن تنتهي كل عبارة في برنامج C++ بفاصلة منقوطة  ; (semi colon).
الاسم cout  والذي يلفظ كـ C  out   يمثل كائن في C++ مقترن مع الشاشة والعامل << والذي يسمى بعامل الوضع Put to operator يجبر على إرسال الأشياء التي على يمينه إلى أي شئ يظهر على يساره.
الشكل 1-1 يوضح الخرج بواسطة cout.

 








مثال:




//Program 1-2: Output
#include <iostream.h>
main ( )

{
        cout  << 7 << " is an integer.\n";
        cout << 'a' << "is a character.\n";
}



 
الخرج من البرنامج:

7  is an integer.
a  is a character


من خرج البرنامج يتضح لنا الآتي:
1- يتم حصر النص المطلوب ظهوره على الشاشة بين علامتي اقتباس"is an integer ".
2- تتم كتابة الثوابت الرقمية بدون علامتي اقتباس   << 7.
3- يتم حصر حرف واحد مطلوب ظهوره على الشاشة بعلامة اقتباس فردية <<’a’.
تقوم بعض اللغات كـ Basic مثلاً بالانتقال إلى سطر جديد تلقائياً  في نهاية كل عبارة خرج ، لكن C++ لا تفعل ذلك كما أن العبارات المختلفة والموضوعة في أسطر مختلفة لا تؤدي إلى ذلك .
لا ينشئ الكائن cout  أسطراً جديدة تلقائياً، والمخرجات في البرنامج التالي توضح ذلك:-
//Program 1-3:This program displays output on the screen
#include<iostream.h>
main ( )
{
  cout<<10; 
  cout<<20<<30;
  return 0;
}


 



تظهر الخرج:-

102030


حيث يلتصق كل الخرج ببعضه البعض ، لذا من الجيد أن يكون لدينا طرق في C++ للتحكم بطريقة تنسيق الخرج والتي منها تتابعات الهروب(Escape Sequences).
تتابعات الهروب (Escape Sequences):
نلاحظ أنه لم تتم طباعة \n على الشاشة ، \ تسمى الشرطة الخلفية (Back  slash) أو حرف هروب (Escape character) وتسمى هي والحرف الذي يليها تتابع هروب. تتابع الهروب \n يعنى الانتقال إلى سطر جديد حيث يجبر المؤشر على الانتقال إلى بداية السطر التالي ، الآن إليك بعض تتابعات الهروب الشائعة:-
        تتابع الهروب               الوصف
               \n            سطر جديد.
               \t                   مسافة أفقية.
          \b            حرف التراجع back space.
               \\                  لطباعة شرطة خلفية.
               \r            حرف الإرجاع، يجبر المؤشر على الانتقال إلى
                                       بداية هذا السطر.
               \''           لطباعة علامة اقتباس
العبــارة return 0 :-
                 تكتب العبارة return 0;   في نهاية الدالة main( ) . القيمة 0  تشير إلى أن البرنامج انتهى نهاية صحيحة وسيبدو لنا سبب تضمين هذه العبارة واضحا عندما نتعرف على الدوال في C++ بالتفصيل.
مثال آخر لبرنامج C++ :-
إليك الآن مثالاً لبرنامج يستقبل رقمين من المستخدم ويجمعهما ويعرض ناتج الجمع:-


 
// Program 1-4: Addition program     
#include<iostream.h>
#include<conio.h>
main ( )   {
        int integer1, integer2, sum;
        cout <<"Enter first integer\n";
        cin >> integer1;       
        cout <<"Enter second integer\n";
        cin >> integer2;       
        sum= integer1+integer2;                    
        cout <<"sum="<<sum<<endl;
        getch();
return 0;
    } 


 
Enter first integer
7
Enter second integer
3
sum= 10





0 التعليقات:

إرسال تعليق

شارك

Twitter Delicious Facebook Digg Stumbleupon Favorites