نبذة عن لغة C و تاريخها
في أيام بداية الحاسوب كانت البرمجة تتم على لغة بدائية منخفضة المستوى low-level تدعى بلغة الآلة حيث كانت تفهمها الآلة مباشرتاً و يتم البرمجة عليها بأوامر تمثل بخيوط مكونة من الواحد و الصفر.
و الصفر تعني low و هي محصور بين -0.5 و +0.5 فولت و الواحد تعني high و هو محصور بين +4.5 و +5.5 فولت, أي بما يسمى بـ النظام الثنائي و كانت البرمجة عليها صعبة و معقدة حتى تم تطوير لغة التجميع assembly و هي من اللغات منخفضة المستوى low-level أيضاً.
حيث كانت سهلة بالنسبة للغة الآلة فبدل إستعمال سلاسل من الصفر و الواحد تستعمل أوامر ذات كلمات مفهومة مثل ADD و MOV.
مع مرور الوقت تم تطوير لغات برمجة اخرى مثل COBOL و BASIC و C و كان التعامل معها بالكلمات و النصوص مما جعل هذه اللغات مقروئة.
مقدمة في لغة السي C
لغة سي C سوف تكون محور حديثنا اليوم و هو عن واحدة من أقوي لغات البرمجة الموجودة على الساحة منذ نشأتها إلى الآن, و هي واحدة من لغات البرمجة العالية المستوي high level و هي مثل لغة باسكال من حيث سهولة الإستخدام من ناحية و من ناحية أخرى هي من اللغات المتدنية المستوى من حيث قدرتها على مخاطبة مكونات الجهاز و من اسباب شعبيه لغة الـ C هو إنتشار نظام التشغيل UNIX و هو أهم نظام تشغيل للحاسبات المتطورة حيث أن هذا النظام كتب بلغة C.
كانت أول بداية لظهور لغة سي في مختبرات شركة AT&T في عام 1972 و كانت هي البداية كمشروع تولى الإشراف عليه دينيس ريتشي ( Dennis Ritchie ) و هو يعتبر مخترع لغة سي بإستخدام نظام التشغيل Unix و لغة سي هي في الأصل لغة قديمة يطلق عليها إسم BCPL و BCPL تم تطويرها بواسطة مارتن ريتشارد ( Martin Richards ) 1967 و التي بدورها كانت لغة B و التي أخترعت بواسطة كين تومسون و لقد أدت لغة B إلى تطوير لغة سي في السبعينات حيث قام دينيس ريتشي أخذ من لغة B أحسن تعليماتها و غير في كثير من قيودها و أضاف إليها تعليمات عديدة و جعل منها لغة برمجة و سماها لغة C.
إستخدامات لغة سي C
للغة سي C إستخدامات عديدة و من هذه الإستخدامات هي :
- برمجة و تطوير أنظمة التشغيل.
- برمجة نظم قواعد البيانات.
- تطوير التطبيقات الواجهة الرسومية و الألعاب و الكثير من الإستخدامات.
مميزات لغة سي
- يتم إستخدام عدد قليل جداً من الكلمات المحجوزة.
- إستخدام أنواع ثابتة للبيانات مع إمكانية تحويل نوع البيانات ضمنياً Type Casting.
- لغة سي تدعم تنفيذ العديد من العمليات الحسابية و المنطقية و العمليات الخاصة بالتحكم في البيانات على مستوى البت bitwise Operations.
- إمكانية كتابة الأكواد البرمجية في أكثر من ملف و ترجمة كل ملف بشكل منفصل و إتاحة دمج الملفات المترجمة Linking.
- لغة السي لغة غنية بالدوال و توفّر للمبرمج عدداً كبيراً من دوال الإدخال و الإخراج و الدوال الرياضية و الحسابية.
عيوب لغة سي
- تعتمد لغة سي على أسلوب المترجم ( الذي يقوم بترجمة البرنامج بأكمله دفعة واحدة ) و من ثم يقوم بعرض قائمة الأخطاء بعكس لغة بيسك التي تعتمد على أسلوب المفسّر مما يسهل على المستخدم تصحيح الأخطاء بكل سهولة.
- يوجد في لغة سي أخطاء لا يستطيع المترجم أن يكتشفها.
دالة printf() للطباعة
دالة printf() هي الدالة الأساسية لطباعة الجمل النصية في لغة سي و هو إختصار للمصطلح print formatted، حيث تتيح دالة printf() التحكم في طريقة طباعة الجمل النصية أو ما يعرف بتنسيق الجمل النصيه و إمكانية طباعة قيم المتغيرات بداخل النص المراد طباعته.
مثال 1
#include<stdio.h>
main()
{
printf("hello world");
}
كلمة Include# تعني تضمين المكتبة التي تسمي stdio داخل المشروع و تستعمل لدوال الإدخال و الإخراج و إمتداد هذه المكتبة .h (( يوجد ايضاً إمتداد .c)). كلمة main تعني رئيسية و الأقواس هي اقواس الدالة أي الدالة الرئيسية main() للبرنامج و تبدأ بقوس و تنتهي بقوس {}. و دالة printf خاص بأمر الطباعة بمعنى إطبع لي النص المكتوب بين قوسين و يلزم تضمين الفاصلة المنقوطة ; بالنهاية.
عند تشغيل البرنامج و الضغط على زر Run سوف يطبع hello world.
مثال 2
قم بطباعة كلمة Saja و كلمة Muhammad مستخدماً بينهم فاصل أربع فراغات بواسطة \t و نفذ النتيجة على الشاشة.
#include<stdio.h>
main()
{
printf("Saja\tMuhammad\n");
}
طلبنا من البرنامج بأن يطبع إسم Saja ثم يترك 4 فراغات بإستخدام /t ثم طباعة إسم Muhammad بعده و ثم النزول سطراً جديداً بإستخدام \n و الخروج من البرنامج.
عند تشغيل الكود ستكون النتيجة
Saja Muhammad
الأدوات اللازمة للبرمجة بلغة C
أدوات لغة سي هي محرر نصوص Editor و مترجم Compiler له و مربط Linker و أي برنامج تتم كتابته يجب أن يمر. على هذه الأدوات و في النهاية ينتج الملف التنفيذي و لا يمكن الإستغناء عن أداة من هذه الأدوات.
في المترجمات الحديثة أصبح كل من الأدوات مدمجة مع بعضها مما جعلها أكثر سهولة في الإستعمال.