أولًا لنتعرف على مفهوم البرمجة

يقول البعض أن البرمجة هي عملية صنع البرامج للحواسيب، في الواقع هذا الكلام يُعتبر صحيحًا، ولكنه ليس التعريف العلمي الدقيق للمصطلح؛ بالحقيقة إن بعض تعاريف المصطلحات التي تظنّ أنها “مملة” والتي سوف يمرّ عليك الكثير منها بالمستقبل القريب، إنه من المهم جدًا أن تفهم “بعضها” بالطريقة العلميّة وليست العاميّة، ﻷنها سوف تؤثّر على معرفتك العامّة لاحقًا كدراس لعلوم الحاسوب؛ أحيانًا يكون من الخطأ القيام بتبسيط اﻷشياء أكثر مما تحتمل، لذا ينبغي الالتزام ومحاولة اﻹلمام بتلك المفاهيم. البرمجة: هي عبارة عن مجموعة من اﻷوامر والتعليمات المكتوبة المتتابعة والمتسلسلة لجهاز الحاسوب لكي يقوم بتنفيذ مجموعة من المهمّات المطلوبة أو لكي يتعامل مع مجموعة من البيانات وفقًا للطريقة التي تٌملى عليه.

البرمجة ليست مجرّد كود

في الواقع إن تعلم لغة البرمجة (باﻷحرى طريقة كتابتها أو الـ Syntax) يُعتبر من أسهل الأشياء والجميع يستطيع تعلمه، ولكن الشيء الهامّ هو تعلم طريقة التفكير وتنظيم اﻷشياء ﻹنشاء البرنامج المطلوب، فلا تظن أنه بتعلمك للغة برمجية معيّنة قد أصبحتَ مبرمجًا متمكنًا، فالبرمجة ليست مجرد كود برمجيّ تكتبه، إنما تحتاج إلى بعض الفنّ والرتابة من المبرمج للوصول إلى الهدف المنشود.

حول سي

سي هي لغة برمجة عتيقة ومستخدمة على نطاق واسع حتى يومنا هذا، طُوّرت بشكل أساسي بواسطة عالِم الحاسوب ومهندس البرمجيات “دينيس ريتشي” في عام 1972م وذلك في مختبرات Bell وكان الهدف الرئيسي منها هو من أجل كتابة وتطوير بعض أجزاء نظام UNIX الذي كان مشهورًا آنذاك.

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

حقائق حول لغة سي

  1. تم اختراعها ﻷجل كتابة بعض أجزاء نظام يونكس.
  2. لغة سي هي الوريث الشرعيّ أو امتداد للغة كانت تسمى B.
  3. حاليًا لغة سي هي اللغة الأكثر شعبية لكتابة أنظمة التشغيل، وهي اﻷكثر مُناسبة لكتابة البرمجيات الكبيرة واﻷلعاب والمجمّعات (Compilers) وتعاريف العتاد (Drivers)، وأكثر من ذلك…
  4. العديد من أجزاء نظام لينُكس وكذلك ويندوز قد كُتبا بواسطة تلك اللغة.

الصيغة العامّة (Syntax) ﻷيّ كود بلغة سي

لنتعرّف على البناء اللغوي Syntax أو لنقلّ باﻷحرى طريقة كتابة اﻷكواد في لغة سي…

لاحظ الكود التالي والذي يقوم بطباعة أو عرض النصّ Hello World على الشاشة:

  #include <stdio.h>
  int main()
  {
  /* My first program in C */
  printf("Hello, World! \n");
 
  return 0;
  }
  

في السطر اﻷول قمنا بتضمين المكتبة stdio.h وسنتعرف على مفهوم المكتبات لاحقًا ولا تقلق إذا لم تفهمه، ولكن اعلم أن هذه المكتبة يجب تضمينها لتحقيق الهدف المطلوب وهو طباعة النصّ Hello World حيث أنها تحتوي بعض اﻷوامر اللازمة لطباعة الأشياء على الشاشة.

وأما في السطر الثاني لدينا الدالة int main() وتشير الكلمة main إلى أن هذه الدالة هي القائد الأعلى والرئيسي في البرنامج التي يتم توكيل كل الأوامر “الرئيسية” إليها، إذّ أنه عندما يبدأ البرنامج في العمل فإنه يتوجّه فورًا نحو تلك الدالة باعتبارها المحرك الأساسي للبرنامج، وتجدر الملاحظة إلى أن كلمة int تشير إلى نوع اﻹرجاع، ولا داعي لتفهمه اﻵن بل سنناقشه لاحقًا.

فيما في السطر الثالث فتحنا قوسًا معقوفًا للدلالة على بدأ جسم (محتوى) الدالة.

وأما السطر الرابع فهو مجرّد تعليق (comment) ليس له أي تأثير على البرنامج، ويُستخدم لغايات اﻹيضاح أو الشرح أو التوثيق وليس أكثر، ويُنصح بشدة بكتابة هذه التعليقات لتسهيل فهم محتوى البرنامج، وكذلك فإن المبرمجين ينسون بعض فهمهم لبرامجهم بعد مرور فترة من الزمان، فلذلك يحتاجون لكتابة التعليقات لاسترجاع ذاكرتهم البرمجية.

السطر الخامس هو صلب الموضوع، حيث يطبع الجملة Hello World على الشاشة ويظهرها أمامنا، وذلك باستخدام الدالة printf الموجودة ضمن لغة C، فيما يشير الرمز /n إلى النزول سطرًا جديدًا حتى لا يلتصق الكلام ببعضه، ولاحظ أنه يجب إحاطة الجملة بعلامتيّ تنصيص “”.

السطر اﻷخير يرجع القيمة صفر إلى الحاسوب وهو أمر متعلق بشيء متقدم في الحاسوب قد نناقشه لاحقًا؛ ثم أنهينا جسم الدالة باستخدام قوس معقوف.