ألفا ويب - alfa web  ألفا ويب - alfa web
recent

أحدث المقالات

recent
برمجة
جاري التحميل ...

مقدمة في عالم البرمجة للمبتدئين - الجزء الثاني: الكود المصدري

والآن بعد أن فهمنا مفهوم البرمجة في الجزئ الأول، سننتقل إلى دراسة الكود المصدري. الكود المصدري أساسًا هو ملف عادي، كأي مُستنَد نصي مثلًا (ذو الامتداد doc.)، إلا أنَّه مُختلِف قليلًا. هو ملف خام (مُرمَّز بشكل مقروء)، مكتوب بمُحرِّرات بسيط جدًا، كمُفكرة ويندوز. تذكَّر من الجزء السابِق كيف أنَّك تحتاج إلى مُفسِّر أو مُصرِّف لتحويل الكود المصدري إلى ثنائي. الكود المصدري ينبغي أن يُحفَظ في ملف، والذي يُمرَّر إلى المُترجِم كمُدخَل. توجد امتدادات مُحدّدة لملفات الكود المصدري اعتمادًا على اللغة التي تستخدمها. يُستخدَم في بايثون الامتداد 'py.'، وفي جافا الامتداد 'java.'، وفي بي أتش بي الامتداد 'php.'، وفي بيرل الامتداد 'pl.' على سبيل المثال لا الحصر. عليك تشغيل الكود المصدري بعد إنهاء كتابته عبر المُترجِم. أدناه مثال عن كيفيَّة تشغيل الكود المصدري المكتوب ببايثون بواسطة الأمر python.

مقدمة في عالم البرمجة للمبتدئين - الجزئ الأول: ما هي البرمجة؟

مقدمة في عالم البرمجة للمبتدئين: ما هو الكود المصدري في البرمجة

الشروع بالبدء: برنامجك الأوَّل

  • اتبع التعليمات في هذه المقالة لتنصيب بايثون على حاسوبك.
  • ثَبِّت مُحرِّر نصوص بسيط لكتابة كودك المصدري فيه. يُمكنك استخدام sublime كبداية.
  • افتح ملفًّا جديدًا في مُحرِّر نصوصك، وأدخل فيه ما يلي:
    print 'Hello Python!' 
  • تذكَّر حفظ الملف بالاسم main.py.
  • اعثر على مسار الملف في واجهتك السطريَّة، ونفِّذ الأمر أدناه:
    $ python main.py 
    

ينبغي أن ترى مُخرجًا كهذا:
مقدمة في عالم البرمجة للمبتدئين: ما هو الكود المصدري في البرمجة

تشريح مكوِّنات الكود المصدري

سندرس الآن محتويات الكود المصدري النموذجيَّة.

الكلمات المفتاحيَّة

كلمات قصيرة ومقروءة بشريًّا، تُعرَف عادةً بالكلمات المفتاحيَّة. هذه الكلمات مُميّزة وخاصة في اللغة التي تتعلمها. سنعود للتكلَّم عن هذا بعد لحظة. عليك حفظ بعض الكلمات المفتاحيَّة عن ظهرِ قلب. توجد في هذه المقالة مجموعة الكلمات المفتاحيَّة الموجودة والمُستخدمة في بايثون.
مقدمة في عالم البرمجة للمبتدئين: ما هو الكود المصدري في البرمجة

المُعرِّفات

كلمات مُبتدعة من قبلك كمُبرمِج. يُشار لهذه الكلمات عادةً بالمُعرِّفات. يُمكن أن يكونوا مُنشئين من مُبرمجين آخرين، ومُحزَّمين كمُلحقات، أو ما تُعرَف بالمكتبات. خُذ المكتبة Math كمثال عن المكتبات. تُمكِّنك هذه المكتبة من الوصول إلى دوال رياضيَّة، كدالة الجذر التربيعي (Math.sqrt) المُستخدَمة في الجافاسكربت. تأتي العديد من لُغات البرمجة مع مجموعة من المكتبات. تُسمَّى عامةً هذه المكتبات بعدّة تطوير البرمجيَّات. ستُنزِّلهم مع المُصرِّف لبدء بناء التقنيَّات والتطبيقات والمشاريع. توجد إلى جانب هذه المكتبات أُطُر عمل مُصمَّمة لمساعدة المطورين على البناء لمنصة مُعينة كالشبكة العنكبوتيَّة أو الهاتِف. تأتي بعض المُعرِّفات مع اللغة التي تستخدمها ولا يُمكِن للمُستخدِم إعادة تعريفها، مثل الكلمة string في لغة الجافا. تُعرَف هذه المُعرِّفات والكلمات المفتاحيَّة بالكلمات المحجوزة. الكلمات المحجوزة ليست كلمات مفتاحيَّة، إلا أنَّها خاصة مثلها. كُل كلمة مفتاحيّة هي كلمة محجوزة، ولكن العكس ليس صحيح. على المُعرِّفات التي عليك اختيارها أن تكون ذات معنى ليفهمها أيٌّ من يراها من الوهلة الأولى. إحدى الاستخدامات الشائعة للمُعرِّفات تسميَّة المُتغيِّرات، الأمر الذي سنتكلَّم عنه لاحقًا بعد قليل.

أنواع البيانات الأساسيَّة

ستَجِد أيضًا بيانات مُختلفة الأنواع في الكود المصدري، كالأعداد (مثل: 3 و5.7 و100- و3.142) والمحارِف (مثل: M وA). تُقسَّم كذلك في بعض لغات البرمجة الأعداد إلى أنواعٍ مُخصَّصة كالأعداد الصحيحة. الأعداد الصحيحة تكون إمّا مُؤشَّرة (ذات إشارة سالبة أو موجبة) أو غير مُؤشَّرة، كبيرة أو صغيرة. كِبَر أو صِغَر الأعداد يعتمِد فعليًّا على كميَّة الذاكرة المحجوزة لنوع الأعداد هذه. توجد أيضًا أعداد ذات فاصلة عشريَّة، والتي تُدعى عادةً مزدوجة أو عائمة، على حسب لغة البرمجة التي تتعلمها. توجد أيضًا أنواع بيانات منطقيَّة (أو بوليانيَّة)، والتي إما أن تكون صح أو خطأ.

أنواع البيانات المُعقدة

أنواع البيانات المُشروحة أعلاه تُعرَف بالأنواع الأوليَّة أو الأساسيَّة. يُمكننا بناء أنواع بيانات أعقَد من تلك اعتمادًا على هذه الأنواع الأساسيَّة. المصفوفة هي أبسط شكل لأنواع البيانات المُعقدة. السلسلة النصيَّة (أو سلسلة المحارِف) هي مصفوفة من المحارِف. لا يُمكننا العمل من دون هذه الأنواع المُعقدة، وكثيرًا ما نستخدمها عند كتابة الكود المصدري. تُدعى توليفة المحارِف سلسلة نصيَّة. السلسلة، استعارةً، في الحاسوب هي كالسلسلة العادية، فمثلًا الكلمة "Thermometer" مكوَّنة من 11 مَحرَف، فندعوها سلسلة محارِف (أو سلسلة نصيَّة). معالجة السلاسل النصيَّة هي موضوع كامل وعميق بحدّ ذاته، وينبغي دارسته من كُل مُبرمِج طموح. تُشحَن أنواع البيانات المُعقدة مع مُعظَم لغات البرمجة التي تستخدمها. توجَد كذلك إمكانيَّة صنع بيانات مُعقدة بأنفسنا، باستخدام شيء كنظام الأصناف، أو ما هو معروف بالبرمجة الكائنيَّة.

المُتغيِّرات

المُتغيِّرات هي ببساطة أماكن في الذاكرة مُسمّاة. نحتاج عادةً أن نُبقي بيانات في كودنا المصدري في أماكنٍ يُمكننا إعادة استدعاء البيانات منها لاستخدامها مُجدّدًا. تكون عادةً هذه الأماكن أماكن في الذاكرة يَحجُزها المُصرِّف أو المُفسِّر لنا. المُتغيِّرات تُمكِّننا من تسميّة أماكن الذاكرة هذه لاستخدامها لاحقًَا. انظر إلى المُقتطف البرمجي من لغة بايثون أدناه:

pet_name = 'Hippo'
print pet_name

الكلمة pet_name هي مثال عن المُتغيِّرات. ولأنَّ نوع البيانات المُخزَّن في المُتغيِّر pet_name هو سلسلة نصيَّة، يُسمَّى المُتغيِّر بالمتغيِّر نصي. توجد أيضًا مُتغيِّرات عدديَّة، ومُتغيِّرات من كافة الأنواع. تُصنَّف المُتغيرات بناءً على نوع البيانات الذي تحويه.

الثوابت

الثوابِت هي قيم لا تتغيّر خلال عمر البرنامج. نَستخدِم الأحرف الكبيرة لجعل القيم قيمًا ثابتة. تُتيح بعض لغات البرمجة طريقةً لتعريف القيم الثابتة، وأخرى لا. تتيح بعض لغات البرمجة إمكانيَّة التصريح عن نوع المتغيِّرات. تدعى اللغات من هذا النوع لغات قوية النوع، وجافا إحدى الأمثلة الجيدة عنها. بينما لا تُتيح أخرى هذه الميزة، فَتُعرَف باللغات ضعيفة النوع أو الديناميكيَّة، وبايثون إحدى الأمثلة الجيدة عنها. إليك أدناه مثال عن كيفيَّة التصريح عن قيمة ثابتة في لغة الجافاسكربت:

const petName = 'Hippo' 

الحرفيَّات

توجد في كُل كود مصدري أنواع بيانات تستخدمها في كل مكان في كودك لن تتغيّر سوى إن عدّلتها بنفسك. ندعو هذه البيانات بالحرفيَّات، التي لا ينبغي الخلط بينها وبين المُتغيِّرات أو الثوابت. يُمكِن رؤية الحرفيَّات بمُجرَد النظر إلى الكود المصدري، فيمكن أن يكونوا سلاسل نصيَّة أو أعداد أو أعداد عشريَّة أو أي نوع بيانات آخر. في الكود المصدري السابِق، الكلمة 'Hippo' من الحرفيَّات، وتحديدًا هي حرفيَّة نصيَّة. لن تتغيَّر هذه الكلمة ما لم تُعدلها مُغيّرًا الكود المصدري بنفسك. ستتعلَّم مع تعلُّمك للتكويد كيفيَّة إدارة الحرفيَّات في كودك المصدري بطريقة سهلة الصيانة دون تغيير الكثير من كودك.

علامات الترقيم والرموز

ستجد في معظم الأكواد المصدريَّة أنواعًا مختلفة من علامات الترقيم اعتمادًا على لغات البرمجة. فمثلًا في لغة الجافا علامات ترقيم أكثر من لغة بايثون. من علامات الترقيم الشائعة الفاصلة (,) والفاصلة المنقوطة (;) والنقطتين (:) والحاصرتان ({}) والعاضدتان ([]) والهلالان (()) وعلامات الاقتباس ("") والعارضة (|) والمائلة الخلفيَّة (\) والنقطة (.) وعلامة الاستفهام (?) وعلامة الإقحام (^) وعلامة النسبة المئوية (%).
أهلًا بك في عالم التكويد، حيث علامات الترقيم هم أصدقاؤك الأعز.

العوامل

احتماليّة أن تكتب كودًا لإجراء عمليَّة عالية جدًا. وكذلك، باحتماليّة أقل، ستُجري عمليات الإسناد في كودك المصدري. لدينا عدد كبير من العوامل مُقدمة لنا من لغات البرمجة التي نستخدمها، مثل عامل الجمع (+) والقسمة (/) والضرب (*) والطرح (-) والأكبر من (<).
يُمكن تصنيف العوامل عامةً كالتالي:
  • عوامل الإسناد
    عادةً ما تُفهَم أنَّها نفس علامة المساواة. علامة المساواة تُستخدم لمقارنة قميتين، بينما عامل الإسناد يُستخدم لحفظ قيمة في مُتغيِّر، مثل:
    pet_name = 'Hippo'
    
  • العوامل الحسابيَّة
    تَضُم عوامل إجراء العمليات الحسابية المُختلفة، كالجمع والطرح. تُتيح بعض اللغات بعض العوامل الحسابيّة الغير مُتاحة في أخرى، كعامل الباقي (%) الذي يُعيد قيمة الباقي من عملية القسمة.
  • العوامل العلائقيَّة
    تُستخدَم لمقارنة القيم، ومنها علامة الأكبر مِن، والأصغر من، والمساواة، واللامساواة. يختلف تمثيل هذه العوامل باختلاف لغة البرمجة التي تستخدمها، فالعامل <> هو عامل اللامساواة في بعض اللغات، بينما في أخرى هو =! أو ==!.
  • العوامل المنطقيَّة
    تُستخدَم لإجراء العمليَّات المنطقيَّة. بعض العوامل المنطقيَّة شائعة الاستخدام هي عامل المعيّة (and) والاختيار (or) والنفي (not). تُمثِّل بعض اللغات هذه العوامل برموز، مثل && لعامل المعيّة، و|| لعامل الاختيار، و! لعامل النفي. تُنتِج العمليّات المنطقيّة عادةً قيمًا منطقيَّة (صح أو خطأ).

التعليقات

سيكون التوثيق جانبًا مُهمًّا من نشاطاتك البرمجيَّة. التوثيق هو كيفيّة شرحك لكودك للمُبرمجين الآخرين. يَتُم التوثيق عبر التعليقات التي تُضاف إلى الكود. يُمكنك عبر التعليقات إعلام المبرمجين الآخرين بنوع البيانات الذي يتعامل معه كودك والمُخرجات التي يولّدها. يتجاهل عادةً المُصرِّف كل الأكواد المُعلَّقة. تختلف طريقة التعليق بين اللغات، فيُستخدَم الرمز # مثلًا للتعليق في بايثون. إليك أدناه مثال عن تعليق في بايثون:
# program snippet to compute fibonacci of N numbers
توجد في لغات الجافا وسي وسي++ تعليقات للأسطر الواحدة تُكتَب مسبوقةً بالرمز // (كتلك في بايثون المسبوقة بالرمز #). توجد كذلك تعليقات متعددة السطور مثل /* ... */. يُمكنك قراءة المزيد عن التعليقات في اللغة التي اخترت تعلّمها في توثيقها.

المسافات البيضاء والجدولات

تُمثِّل هذه المسافات بين الأكواد، سواءً كانت المسافات الناتجة عن ضغط المسطرة (مفتاح المسافة) أو مفتاح الجدولة.

ما التالي؟

تأكَّد من تنصيب بايثون على حاسوبك وتشغيل برنامجك الأوَّل.

اختبارات

إليك الاختبار البسيط التالي: حدّد العناصر المختلفة التي درسناها للآن في كود الجافا أدناه:
// a recursive implementation of Factorial
import java.util.Scanner;
class RecursiveFactorial {
 public static void main(String[] args) {
  Scanner input=new Scanner(System.in);
  System.out.print("Find the Factorial of: ");
  int num=input.nextInt();
  System.out.println("Factorial of "+num+" = "+fact(num)); 
 }

 static long fact(int n) {
  if(n<2) return 1;
  return n*fact(n-1);
 }
}

الخلاصة

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

الأجوبة على الاختبارات

حدّد العناصر المختلفة التي درسناها للآن في كود الجافا أدناه:
  • الكلمات المفتاحيَّة:
    import وclass وpublic وstatic وvoid وnew وint وlong وif وreturn.
  • المُعرِّفات:
    java وutil وScanner وRecursiveFactorial وmain وString وargs وinput وSystem وin وout وprint وprintln وnum وnextInt وfact وn.
  • الحرفيَّات:
    الحرفيَّات النصيَّة:":Factorial of" = "Find the Factorial of"
    الحرفيَّات العدديّة الصحيحة: 2 و1
  • العوامل:
    عامل الإسناد =
    عامل الضم + (لضم سلسلتين نصيتين معًا)
    عامل الأصغر من >
    عامل الضرب *
    عامل الطرح -
  • علامات الترقيم والرموز:
    { } [] ( ) ; .
  • التعليقات
    //a recursive implementation of Factorial
    

المصطلحات

المصطلح العربي المصطلح الإنكليزي
كود مصدري Source code
كلمة مفتاحيَّة Keyword
مُعرِّف Identifier
عدّة تطوير برمجيَّات SDK
إطار عمل Framework
كلمة محجوزة Reversed word
مُتغيِّر Variable
سلسلة نصيَّة، سلسلة محارِف String
مصفوفة Array
ثابِت Constant
حرفيَّة Literal
عامِل Operator
جدولة Tab
بتصرّف freecodecamp

عن الكاتب

أحمد نور اللّه

التعليقات




جميع الحقوق محفوظة

ألفا ويب - alfa web