الدرس الأول
سوف نرى في هذا الدرس أول برنامج مكتوب بلغة C فلا تحاول أن تفهم كل Character مكتوب فيه و لكن انتظر حتى تعتاد على الشكل العام للغة C . و سوف نبدأ في التعرف على جميع العناصر الشائعة الاستخدام في جميع برامج لغة C0
لمحة سريعة:
سوف يعرض هذا الجزء برنامجا صغيرا مكتوبا بلغة C و لكنه متكامل , و فيه كثير من العناصر الشائعة الاستخدام في لغة C , و يعتبر البرنامج التالي في غاية السهولة و لكن حتى لو لم تفهمه الآن فسوف تفهمه لاحقا و تذكر أنّ المرء لا يولد عالماً:
1. /* Prints a message on the screen*/
2. #include
3. main()
4. {
5.
6. printf(“This is my first program in Cn”);
7. return 0;
8.
9. }
بداية و قبل كل شيء نحن نحتاج لكتابة هذا البرنامج إلىC Compiler .( Compiler مصطلح فني يعني أنه يمكن قراءة البرنامج من خلال الكمبيوتر) و يقوم Compiler بترجمة البرنامج بحيث يمكننا تشغيله حينما نرغب في مشاهدة نتائجه. و من أشهر C Compiler المتواجدة هذه الأيام هي Turbo C++ و Borland C++ و كلاهما من إنتاج Borland International .
و نعود للبرنامج السابق, فعند الإنتهاء من كتابة البرنامج السابق باستخدامEditor الخاص بـ C Compiler , نقوم بعملية Compiling و الذي به سنكتشف إن كان هناك خطأ في البرنامج ثم نقوم بتشغيله من خلال Run, حيث ستظر لنا العبارة التالية:
This is my first program in C
و لنبدأ في تحليل الكود السابق خطوة خطوة و نشير أولا إلى أن الأرقام التي هي من (1 إلى 9 ) لا تُكتب في البرنامج و إنما هو للشرح و التوضيح للقارئ فقط:
• السطر( 1): نرى أن هذا السطر بدأ /*....................*/ و تًستخدم هذه الإشارتين لإدراج أي تعليق فيه و لا يقرأ الـ Compiler ما هو مكتوب بينهما و يحبذ كثيرا كتابة التعليقات على البرنامج فهي تشير و تدل على فهم المبرمج للكود الذي يكتبه و أيضا سوف يكون – مستقبلا - من الصعب عند فتح أي برنامج أن تعرف غاية هذا البرنامج مما يضطرك لتشغيله لتعرف وظيفته فمثلا أستطيع في حالة كتابتي لبرنامج يقوم بوظيفة الجمع أن أكتب مثلا:
/* This program use to Sum*/
و بهذه الطريقة نكون قادرين على فهم المراد من البرنامج بمجرد فتح الكود بأنه يخص عملية الجمع لا الطرح أو القسمة مثلا.
• السطر( 2): و نرى في هذا السطر #include و غالبا ما نحتاج إليه في كل برنامج مكتوب بلغة C و دائما توضع قبل main() و تفاديا للشرح الطويل و الصعب في هذه المرحلة فإننا نوجز الكلام في معناه بما يلي:
" عند كتابتنا للسطر السابق فإننا نقول بأن برنامجنا هذا يتضمن ( include) مكتبة ( Library ) اسمها و تعني (Standard input/output header) و وظيفتها هي أن البرنامج لابد من أن يكون فيه مدخلات (Input) أو مخرجات(Output) أو كلاهما و نوضح أكثر فنقول: لابد في حالة بدء أي برنامج أن يطلب من المستخدم أمور فإما أن يقرأ ما هو مكتوب على الشاشة فقط أو أن يقرأ و من ثم يدخل البيانات المطلوبة منه أو أن يدخل البيانات مباشرة فقط من دون ظهور شئ على الشاشة يُقرأ و هو نادر الحصول, و هذه العملية من قراءة أو من إدخال للبيانات كلها تحتاج إلى مكتبة مخصصة لهذه الأوامر وهي .
• السطر( 3 ): و نرى في هذا السطر main() وهذه العبارةmain() function تكون دائماَ نقطة الإنطلاق التي يبدأ الكمبيوتر التشيغل منها و يعتبر أهم جزء في البرنامج المكتوب بلغة C ويجب أن تكون الأقواس التي تلي main بالصورة التالية () و من الخطأ كتابته {} و سنتجنب الحديث عنها حاليا و سوف نتناوله لاحقا.
• السطر( 4 ) و ( 9 ): و نرى في السطر الرابع أنه بدأ { و انتهى } و في وسطهما نكتب كل مانريده ففيهما نكتب الأوامر التي نريد تنفيذها و طبعا توجد شروط لتنفيذ هذه الأوامر فليس كل أمر يفهمه البرنامج و للتمثيل نوضح مايلي:
فقد نطلب من شخص عربي أن يقوم من مكانه فنقول له " قُم " ولكن هذا الأمر لو قلته لشخص صيني مثلا فحتما لن يفهمه و لذا أنت بحاجة إلى أمر من قاموس اللغة الصينية حتى يفهمه, و كذلك الكمبيوتر لا يفهم كل أمر بالصورة المطلقة بل لابد من شروط للأمر نتناول بعضها في النقطة التالية.
• السطر( 6 ): نحن نريد أن نطبع على الشاشة الجملة التالية بحيث يقرأها المستخدم من قبيل العبارة الموجودة :
my first program in C This is
أو أي شئ آخر و كما قلنا فلن يفهم الكمبيوتر هذا الأمر بل لابد من شروط و هي :
1. لابد من أن يسبق هذا الأمر printf و هي صيغة أمر للطبع (print function ) و تعني إطبع الدالة.
2. يجب أن يتبع printf مباشرة الأقواس ( ) و ما بينهما علامتي التنصيص التالية " " بحيث تخرج بالصورة التالية ( " هنا نكتب كل ما نريده " ) و من المهم جداً جداَ أن نضع بعد الأقواس الفاصلة المنقوطة ;
3. و أما بالنسبة n فهي بمثابة الضغط على الزرenter من لوحة المفاتيح keyboard و تعني النزول لسطر جديد.
• السطر( 7 ): و نرى فيه العبارةreturn 0 و منها نقول للكمبيوتر بأن البرنامج قد انتهى و أن القيمة المرجعة هي قيمة صحيحة .
ملاحظة:
1. يمكننا تلخيص عمل هذا البرنامج من خلال المثال التالي:
a. يمكن تشبيه main() بالقائد الأعلى للجيش الذي يكون المصدر الأول للأوامر .
b. إذ يأمر الجنود بإنجاز أوامر معينة حيث نمثل هذه الأوامر بما هو مكتوب في وسط { } .
c. و في نهاية هذه الأوامر يأمر بأن يتم إخباره بأن العمل قد تم و انتهى و في مثالنا نشبهه بـ return 0 .
2. إن هذا البرنامج بما فيه من مصطلحات تحتاج كل منها إلى شرح مفصل و لكن لتفادي التعقيد و لكون الدرس هو الأول فليس من المصلحة البدء بالتفصيل.