مقدمة عن لغة ++C:
كانت أول بداية للغة السي في
مختبرات شركة AT&T الأمريكية في عام 1972م وكانت البداية كمشروع تولى
الإشراف عليه دينيس ريتشي ( Dennis Ritchie ). وهو يعتبر مخترع لغة السي
باستخدام نظام التشغيل Unix. ولغة سي هي في الأصل لغة قديمة يطلق عليها اسم
BCPL. و BCPL طورت بواسطة مارتن ريتشارد ( Martin Richards ) في كامبرج
عام 1967م والتي بدورها كانت لغة B والتي اخترعت بواسطة كين تومسون.
ولقد
أدت لغة Bإلي تطوير لغة السي في السبعينات.
حيث قام دينيس ريتشي (
Dennis Ritchie ) وأخذ من لغة B أحسن تعليماتها ، وغير في كثير من قيودها ،
وأضاف إليها تعليمات أخرى عديدة وجعل منها لغة برمجة وسماها لغة C.
وبالرغم
من أن لغة C قد أنشأت لاستخدامها في برمجة النظم إلا أنه انتشر استخدامها
كلغة ذات مستوى عالي في تنفيذ البرامج التطبيقية ، ومع ذلك فإن لغة C و C++
تستخدمان كلغة ذات مستوى متدنى وذلك نظراً على توفير المميزات التي توفرها
اللغات في هذا المستوى كالقدرة على التعامل مع العناصر الثنائية bit
مثلاً.
وفي الوقت نفسه تستخدم لغة C و C++ كلغتين ذات مستوى عالي
لقدرتهما على توفير الجمل التحكمية ( Control Statements ) والهياكل
البنائية ( Data Structure ) والتي هي من مميزات اللغات ذات المستوى
العالي.
ولقد تطورت لغة السي تطورات كبيرة واكتسبت شعبية و إقبالاً
ولعل السبب الرئيسي هو شعبية وانتشار نظام التشغيل UINX ، وهو أهم نظام
لتشغيل الحاسبات المتطورة. حيث أن هذا النظام كتب بلغة السي وهذا الأمر
يعتبر مصدر قوة للغة السي بين سائر اللغات الأخرى.
وتعتبر لغة السي
الآن من أشهر اللغات وأكثرها انتشاراً ولكن في الدول المتقدمة ، ولقد بدأ
المبرمجون من كافة الاختصاصات يكتبون برامجهم بها ، وعلى سبيل المثال لا
الحصر :
ظهر كتاب (برامج المايكرو كمبيوتر للمهندسين الكيميائين ) عام
1987م عن دار ماجرو هيل الأمريكية ،مكتوباً من ألفه إلي يائه بلغة السي ،
ومعنى ذلك أنه يفترض أن على جميع المهندسين الكيميائين في أمريكيا يفهمون
لغة السي ، ويتعاملون بها. أضف إلي ذلك أن معظم الشركات ، تطلب في
إعلاناتها مبرمجين بلغة سي.
كانت معيارية لغة سي لعدة سنوات عبارة عن
مصنف Compiler مزود على نظام التشغيل Unix . وبعد انتشار وشيوع الحاسب
الشخصي تم إنشاء العديد من المصنفات للغة سي. ومما يجدر ذكره هنا أنه على
الرغم من تعدد المصنفات كانت هناك توافقية عالية جداً بين أكثرها (INI) وهو
برنامج كتب ليعمل على أحد المصنفات وإنه بلا شك سيعمل مع مصنفات أخرى. ومع
ذلك لأنه لم يكن هناك أي معيار أو مقياس Standard معتمد.
وكانت هناك
بعض التناقضات بين المصنفات ، ولمعالجة هذه المشكلة أسست لجنة في صيف عام
1983م لإنشاء معيار ANSI:
و هي اختصار American National Standards
Institute والتي تعني هيئة القياسات الأمريكية. وكان الدور الأساسي لهذه
اللجنة هو تعريف لغة سي مرة واحدة وللأبد.
وأخذت معالجة توحيد القياس
للغة سي ما يقارب 6 سنوات وهذا أكثر مما كان متوقع. وفي نهاية عام 1989م
ثبت أول معيار للغة سي وسمي ANSI C ، ولغة سي القياسية تسمح بأن يكون الاسم
التعريفي مكوناً من إي عدد من الرموز حتى 31 رمز ، وكانت النسخ الأولى من
هذا المقياس متوفرة في عام 1990م.
1-معنى لغة السي:
تعتبر لغة السي
أحد اللغات ذات المستوى العالي ، وتعد أفضل لغة لكتابة برمجيات النظم التي
تتحكم في المكونات المادية للحاسب مباشرة ، ومعظم نظم التشغيل مكتوبة بلغة
السي مثل:
1-نظام Windows95/98.
2-نظام التشغيل UNIX.
2-
مميزات لغة السي:
1-تعتبر لغة السي لغة سريعة :
وذلك لأنها تتحكم
في المكونات المادية للحاسب مباشرة ، ولذلك تعد نسبياً أسرع تنفيذاً من
اللغات الأخرى.
2-أنها لغة صالحة لأغراض متعددة ( تجارية - علمية -
فنية - أدبية ).
3-للغة السي صورة قياسية معتمدة:
وذلك لأن تطوير
لغة السي تم في شركة واحدة ( Bell ).
ونلاحظ أن الفرق بين نمط و آخر من
أنماط لغة السي هي فروق بسيطة جداً ، بينما نجد أن الفروق كبيرة وكثيرة
بين أشكال وصور لغة مثل لغة البيسك ، لأن كل شركة صانعة لأجهزة الحاسبات
تضع تعليمات خاصة ومختلفة للغة ، وتختلف عما تضعه الشركات الأخرى.
4-تعتبر
لغة السي لغة غنية بالدوال:
وتوفر لغة السي للمبرمج عدداً كبيراً من
دوال الإدخال والإخراج ، والدوال الرياضية والحسابية، وهو الأمر الذي يسهل
عملية بناء البرامج بها.
3-عيوب لغة السي:
1-أنها تعتمد على أسلوب
المترجم والذي يقوم بترجمة البرنامج بأكمله دفعة واحدة ثم يقوم بعرض قائمة
من الأخطاء بعكس لغة البيسك التي تعتمد على أسلوب المفسر حيث يتم تفسير
البرنامج سطر سطر مما يسهل على المستخدم تصحيح الأخطاء بكل سهولة ويسر.
2-هناك
أخطاء لا يستطيع مترجم لغة السي أن يكتشفها.
-ملاحظة هامة: ان لغة C++
ليست هي لغة C مع التشابه الكبير لأوامر ودوال اللغتين
4-رموز لغة
السي:
يبنى برنامج لغة السي من مجموعة من العناصر الآتية:
أ-حروف
أبجدية إنجليزية مثل ( a ,b ,c ,…., z )
ب-الأرقام مثل ( 1 ,2 ,3 , …. ,
9 )
ج-الرموز الخاصة مثل ( + ، - ، < ، > ، ! ، % ، $ ،
<> ، / ، ، ( ) ، [ ] ، , ، # ، & ، * ، ^ )
5-كيفية تشغيل
برنامج لغة C++:
-يوجد برنامج لغة السي على أحد الدليلين ( Borlandc
أوTC )هناك أكثر من طريقة لتشغيل برنامج لغة C++ ومنها:
1- الطريقة
الأولى ( إذا كان برنامج لغة السي موجود داخل الدليل Borlandc): -
من
قائمة ابدأ نختار البرامج ومنها نختار موجه MS-DOS: أ-أكتب السطر التالي:
C:>CDBORLANDC
و سوف يظهر لك الشكل التالي:
C:> BORLANDC> ب- أكتب السطر
التالي:
C:> BORLANDC>CD BIN وسوف يظهر لك الشكل التالي:
C:>
BORLANDC>BIN> ج-أكتب السطر التالي:
C:>
BORLANDC>BIN>BC 1- الطريقة الأولى ( إذا كان برنامج لغة السي موجود
داخل الدليل TC):
-من قائمة ابدأ نختار البرامج ومنها نختار موجه
MS-DOS: أ-أكتب السطر التالي:
C:>CDTC و سوف يظهر لك الشكل التالي:
C:>
TC> ب- أكتب السطر التالي:
C:> TC>CD BIN وسوف يظهر لك الشكل
التالي:
C:> TC>BIN> ج-أكتب السطر التالي:
C:>
TC>BIN>BC 2-الطريقة الثانية ( إذا كان برنامج لغة السي موجود داخل
الدليل Borlandc):
1-من قائمة "أبدا" نختار أمر "تشغيل" فسيظهر لنا
مربع حوار "تشغيل" ونقوم بكتابة السطر التالي في خانة "فتح": C:>
BORLANDC>BIN>BC ثم نقوم بعد ذلك بالضغط على زر "موافق".
2-الطريقة
الثانية ( إذا كان برنامج لغة السي موجود داخل الدليل TC): 1-من قائمة
"أبدا" نختار أمر "تشغيل" فسيظهر لنا مربع حوار "تشغيل" ونقوم بكتابة السطر
التالي في خانة "فتح": C:> TC>BIN>BC ثم نقوم بعد ذلك بالضغط على
زر "موافق".
-الطريقة الثالثة: 1-من قائمة ابدأ نختار البرامج ومنها
نختار مستكشف ويندوز . 2-نختار أما المجلد ( Borlandc أو Tc ) حسب الدليل
الموجود عليه برنامج لغة السي بالجهاز.
3-ونختار منه المجلد الفرعي BIN
ومنها نختار إما :
I- رمز BC ( إذا كان الدليل الموجود عليه برنامج
لغة السي هو Borlandc) II- رمز TC (إذا كان الدليل الموجود عليه برنامج لغة
السي هو TC) -ملاحظات هامة:
1-أسرع طريقة لمعرفة هل إذا كان الجهاز
الذي تستخدمه عليه برنامج لغة السي أم لا:
هناك طرقتين أم عن طريق
برنامج DOS أو عن طريق برنامج Windows:
1-عن طريق برنامج Dos:
نكتب
الأمر التالي عند المحث C:
c:>dir Borlandc أو
c:>dir TC
2-عن طريق برنامج Windows:
من قائمة ابدأ نختار بحث ومنها نختار ملفات
أو مجلدات ونكتب في اسم الملف أما: Borlandc أو Tc.
ونختار بعد ذلك زر
البحث الآن للبحث والتأكد من وجود برنامج لغة السي على الجهاز.
وبعد
ذلك سوف تظهر لك شاشة زرقاء.وتحتوي هذه الشاشة على مجموعة من القوائم
وعددها عشرة قوائم وهي:
1-File-2-Edit-3-Search-4-Run-5-Compile-6-Debug
7-Project-8-Options-9-Window-10-Help. وسوف تلاحظ في أسماء القوائم
الموجودة في شاشة برنامج لغة C++، أن الحرف الأول من اسم أي قائمة يكون حرف
كبير وملون بلون أحمر.(لماذا ؟)
لتعرف الإجابة بنفسك قم بعمل التطبيق
التالي، وأنظر ماذا سيحدث عند القيام بكل من العمليات التالية:
1-أضغط
على مفتاح ALT +F.
2-أضغط على مفتاح ALT +E.
3-أضغط على مفتاح ALT
+H.
هل عرفت الآن لماذا يكون الحرف الأول من اسم أي قائمة حرف كبير
وملون بلون أحمر؟
الجواب: لأنه عند الضغط على مفتاح ALT +F سوف تظهر لك
قائمة ملف(File) وعند الضغط على مفتاح ALT +E سوف تظهر لك قائمة
تحرير(Edit)
وهكذا ستجد أنه عند الضغط على مفتاح ALT +الحرف الأول من اسم القائمة سوف
تفتح لك تلك القائمة.
ولنأخذ على سبيل المثال قائمة ملف(File) ستجد
أنها تحتوي على ما يلي:
1- New 4-Save as 7-Print 2-Open 5-Save all
8-Dos shell 3-Save 6-Change dir. 9-Quit
ستلاحظ أن بعض الحروف
الموجودة ضمن قائمة ملف ملونة بلون أحمر(لماذ1؟)
الجواب:لأنه عند فتح
قائمة ملف(File) والضغط على أي حرف من الحروف الملونة باللون الأحمر سينفذ
لك الأمر الذي اختارته،فمثلاً عند فتح قائمة ملف والضغط على زر حرف N على
لوحة المفاتيح ستجد أنه سوف يظهر لك ملف جديد. وعند الضغط على زر الحرف Q
على لوحة المفاتيح سوف تخرج من برنامج C++ فوراً. وقس على ذلك بالنسبة
لباقي القوائم.
4-الصيغة العامة لبرنامج لغة C++:
دائماً عند كتابة
برامج لغة C++ يجب كتابة الأسطر التالية:
#Include #include main( ) {
clrscr(); الأوامر و المصطلحات;
} 5- شرح مكونات الصيغة العامة
لبرنامج لغة C++:
1-include#يحتوي على): ونقوم بكتابتها في بداية برامج
C++ لكي نذكر أسماء الملفات (Header Files) التي سوف يحتاجها البرنامج.
include#:
هو من أوامر لغة سي ++ ويسمى (المعالج المبدئي)
ملاحظة: يأتي برنامج
لغة السي مزود بمجموعة من ملفات ( Header Files ) و هي تحتوي على مجموعة من
مكتبات الأوامر التي نستخدمها في البرامج، مثل:
أ-iostream.h
ب-stdio.h ج-conio.h وستلاحظ في أسماء مكتبات الأوامر أنه عادة ما يأخذ
القسم الثاني من أسماء الملفات ( Header Files ) الحرف h ( إشارة إلي
header ).
2-: وهي أحد أنواع ملفات ( Header Files ) هي عبارة عن مكتبة
الأوامر الخاصة بوحدة الإدخال ( cin ) و وحدة الإخراج ( cout ).
3-conio.h:
وهي تعتبر مكتبة الأوامر الخاصة بالشاشة وتأتي معها الدالة Clrsdr والتي
تعني مسح الشاشة.
3-main():وهي الدالة الرئيسية المكونة لجميع برامج
لغة C++ وهي أهم دالة في البرنامج وأساس البرنامج. وتبدأ كل برامج لغة C++
التنفيذ بدءا من التابع main() ، ويجب أن يحتوي برنامج لغة C على تابع
main() واحد فقط.
4- { : ويعني هذا الرمز بداية البرنامج.
5-clrscr
: وهو أمر خاص لتنظيف الشاشة ويكون موجود داخل مكتبة conio.h والخاصة
بأوامر الشاشة
6-الأوامر والمصطلحات: المقصود بها تعريف المتغيرات
وإجراء جميع أنواع العمليات الحسابية والرياضية المختلفة.
-وتعتبر
الفاصلة المنقوطة هي أصغر أمر أو تعليمة بلغي السي وتعني نهاية السطر أو
الأمر.
7- } : ويعني هذا الرمز نهاية البرنامج.
6-أهم وحدات
الإدخال والإخراج في برنامج لغة السي:
1-cin>>: وهي عبارة عن
كلمة الإدخال في لغة C++ أو Input. 2-cout<<: وهي عبارة عن كلمة
الإخراج في لغة C++ أو Output.
7-ملاحظات هامة يجب مراعاتها عند كتابة
البرامج بلغة السي :
1-تأكد من كتابة الصيغة العامة للبرنامج بشكل
صحيح.
2-في لغة C++ الأوامر بشكل عام تكتب بحروف صغيرة مثل:cin –cout
وذلك لأن لغة C++ لغة حساسة بالنسبة للحروف، فمثلاً كلمة for من الكلمات
المحجوزة في لغة C++ التي لا يمكن استخدامها في اسم المتغير ولكن كلمة FOR
تختلف تماماً عن كلمة for في لغة C++، حيث يمكننا استخدام كلمة FOR في
كتابة أسماء المتغيرات في لغة C++.
3-تذكر أنه لابد من وضع الفاصلة
المنقوطة في نهاية أي دالة أو تعليمة أو أمر. ولكن تذكر أن جملة for وجملة
if يجب أن لا تضع في نهاية إي منها فاصلة منقوطة.
4-لا تنس تعريف
المتغيرات وخاصة في البرامج التي تطلب منك إدخال إي قيمة.
5-إي برنامج
في لغة C++ لا يخلو من أمر إدخال وإخراج(طباعة).
8-وظائف مفاتيح
الاختصارات في برنامج لغة C++:
1-F2: وتستخدم لحفظ ملف.
2-F3:
وتستخدم لفتح ملف.
3-ALT +BKsp: وتستخدم للتراجع عن العمل الأخير.
4-Shift
+ALT +BKsp: وتستخدم لإعادة كتابة العمل الأخير.
5-Shift +Del:
وتستخدم لقص جزء معين من البرنامج.
6-Ctrl +Ins: وتستخدم لنسخ جزء معين
من البرنامج.
7-Shift +Ins: وتستخدم للصق جزء معين من البرنامج.
8-Ctrl
+Del: وتستخدم لحذف جزء معين من البرنامج.
9-Ctrl +F9: وتستخدم لتشغيل
وترجمة البرنامج.
10-ALT +R: وتستخدم أيضاً لتشغيل البرنامج.
11-ALT
+F5: وتستخدم لعرض النتيجة على الشاشة.
12-ALT +F3: وتستخدم لإغلاق
الملفات المفتوحة.
13-F5: وتستخدم لإعطاء صفحة كاملة أو نصف صفحة.
14-ALT
+X: وتستخدم للخروج من برنامج لغة C++.
مثال1: البرنامج التالي يقوم
بطباعة الجملة This is my first C++ program.: #include main() {
cout<<"This is my first C++ program."; -خطوات تنفيذ البرنامج:
1-نقوم
أولاً بتشغيل برنامج لغة C++ . 2-نقوم بكتابة البرنامج أعلاه كما هو.
3-نقوم
بالضغط على مفتاحي ( ALT+R ) لتشغيل البرنامج ، ثم نقوم بالضغط على مفتاحي
( ALT+F5 ) لعرض النتيجة على الشاشة. ( يمكننا أن نختار من قائمة Run " "
الأمر "Run" )
نتيجة تنفيذ البرنامج:
يقوم هذا البرنامج بطباعة
الجملة التالية على الشاشة : This is my first C++ program.
مثال2:حسب
دراستك للغة C++ قم بكتابة برنامج يقوم بطباعة الجملتين التالتين:
Hello
programmers are you having a good day? ملاحظةبشرط أن تكون كل جملة في
سطر منفصل) الحل:
في لغة C++ تستخدم الدّالة cout<< لطباعة
الرسائل أو المخرجات على الشاشة، حيث أن هذه الدّالة شبيهة بالأمر Write في
لغة باسكال والأمر Print في لغة بيسك. الأسطر التالية تمثّل عملية طباعة
رسالتين على الشاشة:
Cout<<"Hello programmers";
cout<<"are you having a good day?";
الرسائل التي سيتم طباعتها
على الشاشة هي تلك التي بين علامتي الاقتباس ضمن الأقواس الهلالية. لاحظ أن
وظيفة cout<< لا تقوم بطباعة كل جملة في سطر جديد بشكل تلقائي: إذا
قمت بكتابة الأسطر السابقة ثم تنفيذ البرنامج فإنك ستحصل على السطر التالي:
Hello programmersare you having a good day? لاحظ أن الجملتين
تداخلتا عند نهاية الأولى وبداية الثانية. إذا أردت أن تفصل بين الجمل بحيث
تبدأ كل جملة في سطر فإنه يمكنك استخدام الحرفين (أو تسلسل الحروف الخاصة)
في نهاية كل جملة. فمثلاً الأسطر التالية تمثل طباعة نفس الجملة
السابقة ولكن عملية طباعة الجملة ستخرجها في سطرين متتاليين:
cout<<
"Hello programmers "; cout<<"are you having a good day?"; وسنلاحظ
أن عملية الطباعة على الشاشة ستتم بهذا الشكل:
Hello programmers are
you having a good day? ملاحظة : يمكنك استخدام الأحرف الخاصة في أي مكان
في الجملة ولكن بين علامتي الاقتباس. فمثلاً، السطر التالي صحيح ولكن قراءة
الكلمة ستكون بشكل رأسي:
cout<<"P r o g r a m m e r s ";
-نتيجة تنفيذ البرنامج:
هكذا ستظهر الكلمة على الشاشة:
P r o g r a
m m e r s ملاحظة:
-سؤال تطبيقي(1): أكتب برنامج يقوم بطباعة الجملة "
Welcome To City" ؟ -
سؤال تطبيقي(2): أكتب برنامج يقوم بطباعة
الكلمتين التاليتين:
Hello ALI بشرط:
1-أن تطبع كل كلمة في سطر
منفصل
2-أن تطبع الكلمتين على نفس السطر مع ترك مسافة خمسة أحرف بين كل
من الكلمتين.
9-الملاحظات والتعليقات في لغة السي ( Comment ): تستعمل
سائر لغات البرمجة جملاً للتعليقات والملاحظات ، وكذلك لغة السي ، فمثلاً
الجملة التالية:
10 REM This is a comment هي جملة ملاحظة في لغة
البيسك.
-طرق كتابة التعليقات في برنامج لغة السي:
توجد هناك
طريقتين لكتابة التعليقات داخل برنامج لغة السي:
1- باستخدام الرمز
التالي // . مثال على ذلك:
// this is a comment ملاحظة: تذكر ان الرمز
// هي عبارة عن ملاحظات لسطر واحد فقط وكلما وضعت سطر ملاحظات ضع هاتين
العلامتين في بداية السطر.
2-باستخدام الصيغة التالية: /* التعليق يكتب
هنا */ . مثال على ذلك:
/* this is a comment */ وتستعمل جمل التعليق
في إي مكان من البرنامج ، وذلك لإبداء ملاحظة ما ، عند سطر ما في البرنامج
ولا تعتبر جملة تنفيذية ، بمعنى أنها لو حذفت من البرنامج لا يؤثر فيه ذلك
شيئا.ويكمن استخدام أكثر من جملة تعليق في داخل البرنامج الواحد.
سؤال:
ما هو المقصود بهذه العبارة ( تتمتع جملة التعليق بلغة السي بمواصفات
فائقة لا تتوفر في غيرها من اللغات)
-ملاحظات هامة يجب مراعاتها عند
كتابة التعليقات والملاحظات في برنامج لغة السي:
1-لا تترك إي فراغ بين
الشرطة / والنجمة * من جهتي جملة التعليق.
2-يقوم مترجم لغة السي
بإهمال النصوص المستعملة في جمل التعليق إي أنه لا يصححها حتى لو كتبت
بطريقة خاطئة ولا ينفذها أيضاً.
3-يمكن وضع التعليق أو الملاحظة في إي
مكان بالبرنامج وتعتبر الجملة التالية صحيحة:
y=a+b; /*add*/ 4-لا ينصح
بوضع تعليق داخل تعليق لأن ذلك يتسبب في وقوع أخطاء.
مثال3:هذا برنامج
يقوم بإدخال عددين وحساب المتوسط الحسابي لهما وطباعة الناتج.
#include
main() { float a,b,c; cout<<"enter 2 number";
cin>>a>>b; sum=a+b; c=sum/2; cout<<"sum="< }
سؤال:
أكتب برنامج يقوم بإدخال إي رقم ثم يقوم البرنامج إذا كان الرقم موجب
وأكبر من الصفر بإظهار الرسالة التالية ( The Number Is Positive ) وإذا
كان الرقم سالب إي أصغر من الصفر يقوم بإظهار الرسالة (The Number is
Negative) ؟
-إجابة السؤال:
#include #include main() { clrscr();
int x; cout<< " Enter any number"; cin>> x; if ( x>=0)
cout<<" The number"< cout<< The Number "< }
-الصيغة
الثانية لجملة إذا الشرطية ( if statements ): ولهذه الصيغة تأثير الصيغة
السابقة ، فإنه إذا تحقق الشرط تم تنفيذ العبارة الأولى وإذا لم يتحقق
الشرط تم تنفيذ العبارة الثانية المذكورة بعد كلمة else .
-ويمكن تمثيل
هذه الصيغة على النحو التالي:
if ( Condition ) statement1; else
statement2;
كانت أول بداية للغة السي في
مختبرات شركة AT&T الأمريكية في عام 1972م وكانت البداية كمشروع تولى
الإشراف عليه دينيس ريتشي ( Dennis Ritchie ). وهو يعتبر مخترع لغة السي
باستخدام نظام التشغيل Unix. ولغة سي هي في الأصل لغة قديمة يطلق عليها اسم
BCPL. و BCPL طورت بواسطة مارتن ريتشارد ( Martin Richards ) في كامبرج
عام 1967م والتي بدورها كانت لغة B والتي اخترعت بواسطة كين تومسون.
ولقد
أدت لغة Bإلي تطوير لغة السي في السبعينات.
حيث قام دينيس ريتشي (
Dennis Ritchie ) وأخذ من لغة B أحسن تعليماتها ، وغير في كثير من قيودها ،
وأضاف إليها تعليمات أخرى عديدة وجعل منها لغة برمجة وسماها لغة C.
وبالرغم
من أن لغة C قد أنشأت لاستخدامها في برمجة النظم إلا أنه انتشر استخدامها
كلغة ذات مستوى عالي في تنفيذ البرامج التطبيقية ، ومع ذلك فإن لغة C و C++
تستخدمان كلغة ذات مستوى متدنى وذلك نظراً على توفير المميزات التي توفرها
اللغات في هذا المستوى كالقدرة على التعامل مع العناصر الثنائية bit
مثلاً.
وفي الوقت نفسه تستخدم لغة C و C++ كلغتين ذات مستوى عالي
لقدرتهما على توفير الجمل التحكمية ( Control Statements ) والهياكل
البنائية ( Data Structure ) والتي هي من مميزات اللغات ذات المستوى
العالي.
ولقد تطورت لغة السي تطورات كبيرة واكتسبت شعبية و إقبالاً
ولعل السبب الرئيسي هو شعبية وانتشار نظام التشغيل UINX ، وهو أهم نظام
لتشغيل الحاسبات المتطورة. حيث أن هذا النظام كتب بلغة السي وهذا الأمر
يعتبر مصدر قوة للغة السي بين سائر اللغات الأخرى.
وتعتبر لغة السي
الآن من أشهر اللغات وأكثرها انتشاراً ولكن في الدول المتقدمة ، ولقد بدأ
المبرمجون من كافة الاختصاصات يكتبون برامجهم بها ، وعلى سبيل المثال لا
الحصر :
ظهر كتاب (برامج المايكرو كمبيوتر للمهندسين الكيميائين ) عام
1987م عن دار ماجرو هيل الأمريكية ،مكتوباً من ألفه إلي يائه بلغة السي ،
ومعنى ذلك أنه يفترض أن على جميع المهندسين الكيميائين في أمريكيا يفهمون
لغة السي ، ويتعاملون بها. أضف إلي ذلك أن معظم الشركات ، تطلب في
إعلاناتها مبرمجين بلغة سي.
كانت معيارية لغة سي لعدة سنوات عبارة عن
مصنف Compiler مزود على نظام التشغيل Unix . وبعد انتشار وشيوع الحاسب
الشخصي تم إنشاء العديد من المصنفات للغة سي. ومما يجدر ذكره هنا أنه على
الرغم من تعدد المصنفات كانت هناك توافقية عالية جداً بين أكثرها (INI) وهو
برنامج كتب ليعمل على أحد المصنفات وإنه بلا شك سيعمل مع مصنفات أخرى. ومع
ذلك لأنه لم يكن هناك أي معيار أو مقياس Standard معتمد.
وكانت هناك
بعض التناقضات بين المصنفات ، ولمعالجة هذه المشكلة أسست لجنة في صيف عام
1983م لإنشاء معيار ANSI:
و هي اختصار American National Standards
Institute والتي تعني هيئة القياسات الأمريكية. وكان الدور الأساسي لهذه
اللجنة هو تعريف لغة سي مرة واحدة وللأبد.
وأخذت معالجة توحيد القياس
للغة سي ما يقارب 6 سنوات وهذا أكثر مما كان متوقع. وفي نهاية عام 1989م
ثبت أول معيار للغة سي وسمي ANSI C ، ولغة سي القياسية تسمح بأن يكون الاسم
التعريفي مكوناً من إي عدد من الرموز حتى 31 رمز ، وكانت النسخ الأولى من
هذا المقياس متوفرة في عام 1990م.
1-معنى لغة السي:
تعتبر لغة السي
أحد اللغات ذات المستوى العالي ، وتعد أفضل لغة لكتابة برمجيات النظم التي
تتحكم في المكونات المادية للحاسب مباشرة ، ومعظم نظم التشغيل مكتوبة بلغة
السي مثل:
1-نظام Windows95/98.
2-نظام التشغيل UNIX.
2-
مميزات لغة السي:
1-تعتبر لغة السي لغة سريعة :
وذلك لأنها تتحكم
في المكونات المادية للحاسب مباشرة ، ولذلك تعد نسبياً أسرع تنفيذاً من
اللغات الأخرى.
2-أنها لغة صالحة لأغراض متعددة ( تجارية - علمية -
فنية - أدبية ).
3-للغة السي صورة قياسية معتمدة:
وذلك لأن تطوير
لغة السي تم في شركة واحدة ( Bell ).
ونلاحظ أن الفرق بين نمط و آخر من
أنماط لغة السي هي فروق بسيطة جداً ، بينما نجد أن الفروق كبيرة وكثيرة
بين أشكال وصور لغة مثل لغة البيسك ، لأن كل شركة صانعة لأجهزة الحاسبات
تضع تعليمات خاصة ومختلفة للغة ، وتختلف عما تضعه الشركات الأخرى.
4-تعتبر
لغة السي لغة غنية بالدوال:
وتوفر لغة السي للمبرمج عدداً كبيراً من
دوال الإدخال والإخراج ، والدوال الرياضية والحسابية، وهو الأمر الذي يسهل
عملية بناء البرامج بها.
3-عيوب لغة السي:
1-أنها تعتمد على أسلوب
المترجم والذي يقوم بترجمة البرنامج بأكمله دفعة واحدة ثم يقوم بعرض قائمة
من الأخطاء بعكس لغة البيسك التي تعتمد على أسلوب المفسر حيث يتم تفسير
البرنامج سطر سطر مما يسهل على المستخدم تصحيح الأخطاء بكل سهولة ويسر.
2-هناك
أخطاء لا يستطيع مترجم لغة السي أن يكتشفها.
-ملاحظة هامة: ان لغة C++
ليست هي لغة C مع التشابه الكبير لأوامر ودوال اللغتين
4-رموز لغة
السي:
يبنى برنامج لغة السي من مجموعة من العناصر الآتية:
أ-حروف
أبجدية إنجليزية مثل ( a ,b ,c ,…., z )
ب-الأرقام مثل ( 1 ,2 ,3 , …. ,
9 )
ج-الرموز الخاصة مثل ( + ، - ، < ، > ، ! ، % ، $ ،
<> ، / ، ، ( ) ، [ ] ، , ، # ، & ، * ، ^ )
5-كيفية تشغيل
برنامج لغة C++:
-يوجد برنامج لغة السي على أحد الدليلين ( Borlandc
أوTC )هناك أكثر من طريقة لتشغيل برنامج لغة C++ ومنها:
1- الطريقة
الأولى ( إذا كان برنامج لغة السي موجود داخل الدليل Borlandc): -
من
قائمة ابدأ نختار البرامج ومنها نختار موجه MS-DOS: أ-أكتب السطر التالي:
C:>CDBORLANDC
و سوف يظهر لك الشكل التالي:
C:> BORLANDC> ب- أكتب السطر
التالي:
C:> BORLANDC>CD BIN وسوف يظهر لك الشكل التالي:
C:>
BORLANDC>BIN> ج-أكتب السطر التالي:
C:>
BORLANDC>BIN>BC 1- الطريقة الأولى ( إذا كان برنامج لغة السي موجود
داخل الدليل TC):
-من قائمة ابدأ نختار البرامج ومنها نختار موجه
MS-DOS: أ-أكتب السطر التالي:
C:>CDTC و سوف يظهر لك الشكل التالي:
C:>
TC> ب- أكتب السطر التالي:
C:> TC>CD BIN وسوف يظهر لك الشكل
التالي:
C:> TC>BIN> ج-أكتب السطر التالي:
C:>
TC>BIN>BC 2-الطريقة الثانية ( إذا كان برنامج لغة السي موجود داخل
الدليل Borlandc):
1-من قائمة "أبدا" نختار أمر "تشغيل" فسيظهر لنا
مربع حوار "تشغيل" ونقوم بكتابة السطر التالي في خانة "فتح": C:>
BORLANDC>BIN>BC ثم نقوم بعد ذلك بالضغط على زر "موافق".
2-الطريقة
الثانية ( إذا كان برنامج لغة السي موجود داخل الدليل TC): 1-من قائمة
"أبدا" نختار أمر "تشغيل" فسيظهر لنا مربع حوار "تشغيل" ونقوم بكتابة السطر
التالي في خانة "فتح": C:> TC>BIN>BC ثم نقوم بعد ذلك بالضغط على
زر "موافق".
-الطريقة الثالثة: 1-من قائمة ابدأ نختار البرامج ومنها
نختار مستكشف ويندوز . 2-نختار أما المجلد ( Borlandc أو Tc ) حسب الدليل
الموجود عليه برنامج لغة السي بالجهاز.
3-ونختار منه المجلد الفرعي BIN
ومنها نختار إما :
I- رمز BC ( إذا كان الدليل الموجود عليه برنامج
لغة السي هو Borlandc) II- رمز TC (إذا كان الدليل الموجود عليه برنامج لغة
السي هو TC) -ملاحظات هامة:
1-أسرع طريقة لمعرفة هل إذا كان الجهاز
الذي تستخدمه عليه برنامج لغة السي أم لا:
هناك طرقتين أم عن طريق
برنامج DOS أو عن طريق برنامج Windows:
1-عن طريق برنامج Dos:
نكتب
الأمر التالي عند المحث C:
c:>dir Borlandc أو
c:>dir TC
2-عن طريق برنامج Windows:
من قائمة ابدأ نختار بحث ومنها نختار ملفات
أو مجلدات ونكتب في اسم الملف أما: Borlandc أو Tc.
ونختار بعد ذلك زر
البحث الآن للبحث والتأكد من وجود برنامج لغة السي على الجهاز.
وبعد
ذلك سوف تظهر لك شاشة زرقاء.وتحتوي هذه الشاشة على مجموعة من القوائم
وعددها عشرة قوائم وهي:
1-File-2-Edit-3-Search-4-Run-5-Compile-6-Debug
7-Project-8-Options-9-Window-10-Help. وسوف تلاحظ في أسماء القوائم
الموجودة في شاشة برنامج لغة C++، أن الحرف الأول من اسم أي قائمة يكون حرف
كبير وملون بلون أحمر.(لماذا ؟)
لتعرف الإجابة بنفسك قم بعمل التطبيق
التالي، وأنظر ماذا سيحدث عند القيام بكل من العمليات التالية:
1-أضغط
على مفتاح ALT +F.
2-أضغط على مفتاح ALT +E.
3-أضغط على مفتاح ALT
+H.
هل عرفت الآن لماذا يكون الحرف الأول من اسم أي قائمة حرف كبير
وملون بلون أحمر؟
الجواب: لأنه عند الضغط على مفتاح ALT +F سوف تظهر لك
قائمة ملف(File) وعند الضغط على مفتاح ALT +E سوف تظهر لك قائمة
تحرير(Edit)
وهكذا ستجد أنه عند الضغط على مفتاح ALT +الحرف الأول من اسم القائمة سوف
تفتح لك تلك القائمة.
ولنأخذ على سبيل المثال قائمة ملف(File) ستجد
أنها تحتوي على ما يلي:
1- New 4-Save as 7-Print 2-Open 5-Save all
8-Dos shell 3-Save 6-Change dir. 9-Quit
ستلاحظ أن بعض الحروف
الموجودة ضمن قائمة ملف ملونة بلون أحمر(لماذ1؟)
الجواب:لأنه عند فتح
قائمة ملف(File) والضغط على أي حرف من الحروف الملونة باللون الأحمر سينفذ
لك الأمر الذي اختارته،فمثلاً عند فتح قائمة ملف والضغط على زر حرف N على
لوحة المفاتيح ستجد أنه سوف يظهر لك ملف جديد. وعند الضغط على زر الحرف Q
على لوحة المفاتيح سوف تخرج من برنامج C++ فوراً. وقس على ذلك بالنسبة
لباقي القوائم.
4-الصيغة العامة لبرنامج لغة C++:
دائماً عند كتابة
برامج لغة C++ يجب كتابة الأسطر التالية:
#Include #include main( ) {
clrscr(); الأوامر و المصطلحات;
} 5- شرح مكونات الصيغة العامة
لبرنامج لغة C++:
1-include#يحتوي على): ونقوم بكتابتها في بداية برامج
C++ لكي نذكر أسماء الملفات (Header Files) التي سوف يحتاجها البرنامج.
include#:
هو من أوامر لغة سي ++ ويسمى (المعالج المبدئي)
ملاحظة: يأتي برنامج
لغة السي مزود بمجموعة من ملفات ( Header Files ) و هي تحتوي على مجموعة من
مكتبات الأوامر التي نستخدمها في البرامج، مثل:
أ-iostream.h
ب-stdio.h ج-conio.h وستلاحظ في أسماء مكتبات الأوامر أنه عادة ما يأخذ
القسم الثاني من أسماء الملفات ( Header Files ) الحرف h ( إشارة إلي
header ).
2-: وهي أحد أنواع ملفات ( Header Files ) هي عبارة عن مكتبة
الأوامر الخاصة بوحدة الإدخال ( cin ) و وحدة الإخراج ( cout ).
3-conio.h:
وهي تعتبر مكتبة الأوامر الخاصة بالشاشة وتأتي معها الدالة Clrsdr والتي
تعني مسح الشاشة.
3-main():وهي الدالة الرئيسية المكونة لجميع برامج
لغة C++ وهي أهم دالة في البرنامج وأساس البرنامج. وتبدأ كل برامج لغة C++
التنفيذ بدءا من التابع main() ، ويجب أن يحتوي برنامج لغة C على تابع
main() واحد فقط.
4- { : ويعني هذا الرمز بداية البرنامج.
5-clrscr
: وهو أمر خاص لتنظيف الشاشة ويكون موجود داخل مكتبة conio.h والخاصة
بأوامر الشاشة
6-الأوامر والمصطلحات: المقصود بها تعريف المتغيرات
وإجراء جميع أنواع العمليات الحسابية والرياضية المختلفة.
-وتعتبر
الفاصلة المنقوطة هي أصغر أمر أو تعليمة بلغي السي وتعني نهاية السطر أو
الأمر.
7- } : ويعني هذا الرمز نهاية البرنامج.
6-أهم وحدات
الإدخال والإخراج في برنامج لغة السي:
1-cin>>: وهي عبارة عن
كلمة الإدخال في لغة C++ أو Input. 2-cout<<: وهي عبارة عن كلمة
الإخراج في لغة C++ أو Output.
7-ملاحظات هامة يجب مراعاتها عند كتابة
البرامج بلغة السي :
1-تأكد من كتابة الصيغة العامة للبرنامج بشكل
صحيح.
2-في لغة C++ الأوامر بشكل عام تكتب بحروف صغيرة مثل:cin –cout
وذلك لأن لغة C++ لغة حساسة بالنسبة للحروف، فمثلاً كلمة for من الكلمات
المحجوزة في لغة C++ التي لا يمكن استخدامها في اسم المتغير ولكن كلمة FOR
تختلف تماماً عن كلمة for في لغة C++، حيث يمكننا استخدام كلمة FOR في
كتابة أسماء المتغيرات في لغة C++.
3-تذكر أنه لابد من وضع الفاصلة
المنقوطة في نهاية أي دالة أو تعليمة أو أمر. ولكن تذكر أن جملة for وجملة
if يجب أن لا تضع في نهاية إي منها فاصلة منقوطة.
4-لا تنس تعريف
المتغيرات وخاصة في البرامج التي تطلب منك إدخال إي قيمة.
5-إي برنامج
في لغة C++ لا يخلو من أمر إدخال وإخراج(طباعة).
8-وظائف مفاتيح
الاختصارات في برنامج لغة C++:
1-F2: وتستخدم لحفظ ملف.
2-F3:
وتستخدم لفتح ملف.
3-ALT +BKsp: وتستخدم للتراجع عن العمل الأخير.
4-Shift
+ALT +BKsp: وتستخدم لإعادة كتابة العمل الأخير.
5-Shift +Del:
وتستخدم لقص جزء معين من البرنامج.
6-Ctrl +Ins: وتستخدم لنسخ جزء معين
من البرنامج.
7-Shift +Ins: وتستخدم للصق جزء معين من البرنامج.
8-Ctrl
+Del: وتستخدم لحذف جزء معين من البرنامج.
9-Ctrl +F9: وتستخدم لتشغيل
وترجمة البرنامج.
10-ALT +R: وتستخدم أيضاً لتشغيل البرنامج.
11-ALT
+F5: وتستخدم لعرض النتيجة على الشاشة.
12-ALT +F3: وتستخدم لإغلاق
الملفات المفتوحة.
13-F5: وتستخدم لإعطاء صفحة كاملة أو نصف صفحة.
14-ALT
+X: وتستخدم للخروج من برنامج لغة C++.
مثال1: البرنامج التالي يقوم
بطباعة الجملة This is my first C++ program.: #include main() {
cout<<"This is my first C++ program."; -خطوات تنفيذ البرنامج:
1-نقوم
أولاً بتشغيل برنامج لغة C++ . 2-نقوم بكتابة البرنامج أعلاه كما هو.
3-نقوم
بالضغط على مفتاحي ( ALT+R ) لتشغيل البرنامج ، ثم نقوم بالضغط على مفتاحي
( ALT+F5 ) لعرض النتيجة على الشاشة. ( يمكننا أن نختار من قائمة Run " "
الأمر "Run" )
نتيجة تنفيذ البرنامج:
يقوم هذا البرنامج بطباعة
الجملة التالية على الشاشة : This is my first C++ program.
مثال2:حسب
دراستك للغة C++ قم بكتابة برنامج يقوم بطباعة الجملتين التالتين:
Hello
programmers are you having a good day? ملاحظةبشرط أن تكون كل جملة في
سطر منفصل) الحل:
في لغة C++ تستخدم الدّالة cout<< لطباعة
الرسائل أو المخرجات على الشاشة، حيث أن هذه الدّالة شبيهة بالأمر Write في
لغة باسكال والأمر Print في لغة بيسك. الأسطر التالية تمثّل عملية طباعة
رسالتين على الشاشة:
Cout<<"Hello programmers";
cout<<"are you having a good day?";
الرسائل التي سيتم طباعتها
على الشاشة هي تلك التي بين علامتي الاقتباس ضمن الأقواس الهلالية. لاحظ أن
وظيفة cout<< لا تقوم بطباعة كل جملة في سطر جديد بشكل تلقائي: إذا
قمت بكتابة الأسطر السابقة ثم تنفيذ البرنامج فإنك ستحصل على السطر التالي:
Hello programmersare you having a good day? لاحظ أن الجملتين
تداخلتا عند نهاية الأولى وبداية الثانية. إذا أردت أن تفصل بين الجمل بحيث
تبدأ كل جملة في سطر فإنه يمكنك استخدام الحرفين (أو تسلسل الحروف الخاصة)
في نهاية كل جملة. فمثلاً الأسطر التالية تمثل طباعة نفس الجملة
السابقة ولكن عملية طباعة الجملة ستخرجها في سطرين متتاليين:
cout<<
"Hello programmers "; cout<<"are you having a good day?"; وسنلاحظ
أن عملية الطباعة على الشاشة ستتم بهذا الشكل:
Hello programmers are
you having a good day? ملاحظة : يمكنك استخدام الأحرف الخاصة في أي مكان
في الجملة ولكن بين علامتي الاقتباس. فمثلاً، السطر التالي صحيح ولكن قراءة
الكلمة ستكون بشكل رأسي:
cout<<"P r o g r a m m e r s ";
-نتيجة تنفيذ البرنامج:
هكذا ستظهر الكلمة على الشاشة:
P r o g r a
m m e r s ملاحظة:
-سؤال تطبيقي(1): أكتب برنامج يقوم بطباعة الجملة "
Welcome To City" ؟ -
سؤال تطبيقي(2): أكتب برنامج يقوم بطباعة
الكلمتين التاليتين:
Hello ALI بشرط:
1-أن تطبع كل كلمة في سطر
منفصل
2-أن تطبع الكلمتين على نفس السطر مع ترك مسافة خمسة أحرف بين كل
من الكلمتين.
9-الملاحظات والتعليقات في لغة السي ( Comment ): تستعمل
سائر لغات البرمجة جملاً للتعليقات والملاحظات ، وكذلك لغة السي ، فمثلاً
الجملة التالية:
10 REM This is a comment هي جملة ملاحظة في لغة
البيسك.
-طرق كتابة التعليقات في برنامج لغة السي:
توجد هناك
طريقتين لكتابة التعليقات داخل برنامج لغة السي:
1- باستخدام الرمز
التالي // . مثال على ذلك:
// this is a comment ملاحظة: تذكر ان الرمز
// هي عبارة عن ملاحظات لسطر واحد فقط وكلما وضعت سطر ملاحظات ضع هاتين
العلامتين في بداية السطر.
2-باستخدام الصيغة التالية: /* التعليق يكتب
هنا */ . مثال على ذلك:
/* this is a comment */ وتستعمل جمل التعليق
في إي مكان من البرنامج ، وذلك لإبداء ملاحظة ما ، عند سطر ما في البرنامج
ولا تعتبر جملة تنفيذية ، بمعنى أنها لو حذفت من البرنامج لا يؤثر فيه ذلك
شيئا.ويكمن استخدام أكثر من جملة تعليق في داخل البرنامج الواحد.
سؤال:
ما هو المقصود بهذه العبارة ( تتمتع جملة التعليق بلغة السي بمواصفات
فائقة لا تتوفر في غيرها من اللغات)
-ملاحظات هامة يجب مراعاتها عند
كتابة التعليقات والملاحظات في برنامج لغة السي:
1-لا تترك إي فراغ بين
الشرطة / والنجمة * من جهتي جملة التعليق.
2-يقوم مترجم لغة السي
بإهمال النصوص المستعملة في جمل التعليق إي أنه لا يصححها حتى لو كتبت
بطريقة خاطئة ولا ينفذها أيضاً.
3-يمكن وضع التعليق أو الملاحظة في إي
مكان بالبرنامج وتعتبر الجملة التالية صحيحة:
y=a+b; /*add*/ 4-لا ينصح
بوضع تعليق داخل تعليق لأن ذلك يتسبب في وقوع أخطاء.
مثال3:هذا برنامج
يقوم بإدخال عددين وحساب المتوسط الحسابي لهما وطباعة الناتج.
#include
main() { float a,b,c; cout<<"enter 2 number";
cin>>a>>b; sum=a+b; c=sum/2; cout<<"sum="< }
سؤال:
أكتب برنامج يقوم بإدخال إي رقم ثم يقوم البرنامج إذا كان الرقم موجب
وأكبر من الصفر بإظهار الرسالة التالية ( The Number Is Positive ) وإذا
كان الرقم سالب إي أصغر من الصفر يقوم بإظهار الرسالة (The Number is
Negative) ؟
-إجابة السؤال:
#include #include main() { clrscr();
int x; cout<< " Enter any number"; cin>> x; if ( x>=0)
cout<<" The number"< cout<< The Number "< }
-الصيغة
الثانية لجملة إذا الشرطية ( if statements ): ولهذه الصيغة تأثير الصيغة
السابقة ، فإنه إذا تحقق الشرط تم تنفيذ العبارة الأولى وإذا لم يتحقق
الشرط تم تنفيذ العبارة الثانية المذكورة بعد كلمة else .
-ويمكن تمثيل
هذه الصيغة على النحو التالي:
if ( Condition ) statement1; else
statement2;
Tue Nov 05, 2013 6:35 am by okba als
» ترحيب بالأعضاء
Tue Nov 05, 2013 6:09 am by okba als
» برنامج يعلمك لغة الدلفي بشكل مثير
Mon Nov 04, 2013 10:53 pm by سيد برتوكول
» دليل هاتف الدلفي
Sun Nov 03, 2013 11:24 am by سيد برتوكول
» سلسلة فيبوناتشي
Sun Nov 03, 2013 11:22 am by سيد برتوكول
» كود جميل ورائع جربه واعرف بنفسك ماذا يعمل
Wed Apr 17, 2013 1:55 am by سيد برتوكول
» المبرمجون مستائون من الواجهة الرسومية لويندوز ٨ (Windows 8)(نسخة المطورين)
Thu Jun 21, 2012 10:26 pm by pc-king.dahek.net
» حزيرة للعلماء
Tue Apr 10, 2012 3:23 am by عفريت السويداء
» اسباب تجعل الكمبيوتر يعمل بشكل بطيء
Sun Mar 18, 2012 6:49 am by عفريت السويداء
» دروس المبتدئين.....الدرس الأول (تعليم القص)
Sat Mar 17, 2012 6:03 am by عفريت السويداء