كود البرنامج/ الكود Source code

كود البرنامج Source code او اختصارا الكود هو عبارة عن ملف File مثل ملفات برنامج الوورد او الباور بوينت والذي يتم تخزينه على جهاز الكمبيوتر لكن بدلا من النص يحتوي على مجموعة الاوامر بلغة برمجة ما والتي سينفذها الكمبيوتر. يختلف امتداد تلك الملفات من لغة الى لغة مثلا لغة برمجة الجافا يكون الامتداد java. مثل: file.java ولغة برمجة البايثون python يكون py. مثل: file.py،

دعنا نرى كود بسيط بلغة الجافا يأمر الكمبيوتر ان يكتب “Hello World”:

/* FileName : "HelloWorld.java". */
class HelloWorld 
{ 
	// هنا نقطة البداية 
	public static void main(String args[]) 
	{ 
      	// هنا الاوامر
		System.out.println("Hello, World"); 
	} 
} 

* ملحوظة: يتم الاشارة احيانا الى الكود source code و​البرنامج على اساس انهم شيئا واحدأ، لكن هل هناك فرق فيما بينهم؟ نعم، الكود كما اشرنا هو مجموعة الاوامر المكتوبة (مجرد نصوص)، اما البرنامج فهو تلك الاوامر عند التنفيذ، كالفرق ما بين اللوحة الهندسية لمبنى والمبنى القائم بعد تنفيذه!!لذلك، لا مشكلة عندما نشيرالى الكود بكلمة برنامج او العكس.
لكن هل يكفي ان ننشأ ملف جديد ونجعل امتداده java. مثلا لجعل الكمبيوتر ينفذ اوامر الجافا؟ لا، لفعل هذا نحتاج بيئة التشغيل(Environment) سواء كانت بيئة تطوير او تنفيذ.

بيئة التشغيل Environment

هي مجموعة من الادوات والمكتبات libraries والبرامج التي يتم تنصيبها Setup والتي تتيح لنا تشغيل الاكواد التي نكتبها و تشمل: المحولين Compilers و المفسرين Interpreters وايضا تشمل بيئة التطوير المتكاملة (IDE: Integrated Development Environment ) وهي مجموعة من الادوات التي تسهل كتابة الاكواد وتطويرها مثل eclipse.

اساسيات قواعد كتابة Syntax كود البرنامج

هل تتذكر ال flowchart في الدرس السابق؟ الكود بالاسفل مكتوب بلغة جافا سكربت Javascript ولغة بايثون python و هو يمثل ​مخطط السير​ :

الدرس يحتوي على الكثير من الاكواد ومن الطبيعي عدم فهمها!! فهناك دورات كاملة في الموقع لفهم لغات البرمجة. نحن نضعها هنا لكي نألف رؤيتها فقط ونتعود عليها. 💪💪

المثال بلغة جافا سكريبت

var item = clientOrder.pop();
	
var totalAmount = 0;

while(clientOrder.length > 0) {
	
	if( isItemExists(item) ){ 
	
		totalAmount = totalAmount + item.price;
	}
	
	var item = clientOrder.pop();
}

المثال بلغة بايثون

item = client_order.pop()
    
total_amount = 0
    
while len(client_order) > 0 :
    
    if is_pizza_exists(item) :
       
        total_amount = total_amount + item.price
        
    item = client_order.pop()

شرح المثال:

شرح الاوامر في كود البرنامج

نستطيع ان نعرف ​​دالة بداخلها الكود الذي شرحناه بالاعلى لكي نعيد استخدامه كلما اردنا وذلك بوضع الكود داخل :var collectOrder = function(clientOrder)

//  تجميع الطلب function نعرف 
var collectOrder = function(clientOrder){
	// نأخد بند من الطلب
	var item = clientOrder.pop();
	
	// نعرف مجموع الحساب ونجعل القيمة الاولية له بصفر
	var totalAmount = 0;
	// التكرار
	while(clientOrder.length > 0) {
		// نتأكد ان البند موجود
		if( isItemExists() ){ // حالة نعم
			totalAmount = totalAmount + item.price;
		}else{ // حالة لا
			// لا يوجد هنا اوامر
		}
		// نأخد بند من الطلب
		var item = clientOrder.pop();
		
	}
	return totalAmount;
}
نستطيع ان ندمج الاوامر و الشرح داخل الكود دون التأثير على البرنامج باستخدام التعليقات كما بالاعلى

كود البرنامج source code بالاعلى كما هو ملاحظ يتكون من مجموعة من الكلمات المستخدمة بشكل ما، بمجرد ان نفهم ماذا تمثل كل فئة منهم، سنستطيع فك شفرة هذا الكود!! سنقوم هنا بعرض سريع موجز لفهم اساسيات ال syntax وسنتحدث عنها بالتفاصيل في دروس كل لغة.

الكلمات المحجوزة (Reserved words):

هل مجموعة من الكلمات التي تحجزها كل لغة من لغات البرمجة و التي تمثل كل منها وظيفة او امر معين (منها اوامر التكرار والشرط وغيرها) مثل الكلمات المعرفة باللون الازرق في المثال الاعلى: var, function, while, if & else، ليست هذة كل الكلمات الخاصة بالجافا سكريبت (التفاصيل في دروس لغة البرمجة فلكل لغة مجموعة من الكلمات الخاصة بها)، لكن على سبيل المثال:
var: تستخدم لتعريف متغير(variable) جديد، هل تتذكر درس المفاهيم الاساسية للبرمجة؟
function: تستخدم لتعريف الدوال/الاجراءات (functions/procedures).
if/else: تستخدم لتعريف جملة الشرط (Conditional Statement).
while: تستخدم لتعريف التكرار (Looping).

عادة ما تكون الكلمات المحجوزة في لغات البرمجة من الحروف اللاتينية و تشتق معانيها من اللغة الانجليزية بالخصوص.

المعرفات Identifiers:

المعرفات (Identifiers) هي مسميات او اسماء الكيانات في البرنامج مثل المتغيرات variables و الدوال function و الاصناف class، فمثلا نحتاج المعرفات لكي نستطيع ان نستخدم اكثر من متغير (variable) في الكود و نفرق فيما بينهم (كما ان للبشر اسماء مختلفة)، فمثلا: في السطر رقم 7 من الكود بالاعلى، نجد “var totalAmount = 0;” نحن هنا نعرف متغير اسمه totalAmount لنستطيع ان نخزن فيه مجموع الحساب، كلمة totalAmount هنا هي المعرف (Identifier). في السطر رقم 4 نعرف ايضا متغير اسمه item. هناك شروط في تسمية المتغيرات، لكنها تختلف من لغة برمجة الى اخرى .

القيم الثابتة (Literal)

هي القيم الثابتة التي نستعملها في الكود مثلا الارقام: 1 او 100 مثل السطر 7 في الكود بالاعلى، او الكلام مثل “مرحبا”، في الكثير من لغات البرمجة عند استخدام الكلام يجب ان نضعه بين علامات التنصيص الثنائية: “Hello World” او علامات التنصيص الاحادية: ‘Hello World’.

العمليات الحسابية و المنطقية والمقارنة (ِArithmetic, Logical & Comparison Operations):

كثيرا ما نحتاج ان نقوم بعدد من العمليات الحسابية والمنطقية اثناء كتابتنا البرامج و تتيح لغات البرمجة تلك الميزة،
العمليات الحسابية: مثل الجمع (+) والطرح () و الضرب (*) و القسمة (/).
عمليات المقارنة: مثل هل يساوي؟ (==) هل اكبر من؟ (<) هل اصغر من؟ (>) هل لايساوي؟ (=!).
العمليات المنطقية: مثل رابطة مع (AND) (&&) , رابطة (أو) OR (||) ورابطة ليس (NOT) (!).

 المؤثرالاسمالوصف
&&ANDاذا كان المتغيرين true يكون الناتج true غير ذلك يكون الناتج false
||ORاذا كان اذا احد المتغيرين true يكون الناتج true غير ذلك يكون الناتج false
!NOTيعكس قيم المتغير، فاذا كان true يكون الناتج false والعكس بالعكس

التعيين (Assignment):

تستخدم العلامة (=) في الكثير من لغات البرمجة لتمثل عملية/جملة التعيين، وهي عمليه وضع قيمة في المتغير،اي وضعه في الذاكرة (memory)، مثلا: var totalAmount = 0; هنا نضع في المتغير totalAmount قيمة 0.
هل لاحظت الجملة في السطر 12:
;totalAmount = totalAmount + item.price
تلك ليست معادلة حسابية، لكنها جملة برمجة، وتستخدم العلامة = لتعبير عن عملية التعيين (assignment) حيث يتم حساب الشق الايمن من العلامة وهو totalAmount + item.price ثم يتم تخزين الناتج في الشق الايسر وهو ايضا totalAmount و لا مشكلة في ذلك، فمثلا اذا كان ال totalAmount قبل هذة الجملة مخزن فيه 5 و item.price مخزن فيه 4، يكون تفسير العملية كالاتي: اولا يتم حساب الجزء الايمن وهو 5 + 4 => 9، ثم يتم وضع (assign) تلك القيمة في المتغير في الناحية السفلى وهو totalAmount فعند تنفيذ العملية نجد ان الtotalAmount يكون قيمتها 9.

الجمل (Statements):

الجمل هي اجزاء الكود التي تكون نتيجتها اجراء مجموعة من الاوامر، وتتكون اكواد البرمجة من مجموعة من الجمل او الاوامر المتتالية (Statements)، فمثلا السطر رقم 4: var item = clientOrder.pop(); هذة الجملة تقول للكمبيوتر: عرف متغير اسمه item و قم بوضع فيه احد بنود الطلب (هنا تم تعريف الطلب باسم clientOrder) ونهاية تلك الجملة قد حددت باستخدام تلك الرموز(Symbols) ; او ال semicolon !!، السطر رقم 9 مثلا يحتوي على بداية جملة تكرار (while) وحدود التكرار يبدأ عند الرمز } و تنتهي الجملة في السطر رقم 19 بالعلامة {.

العبارات (expressions):

العبارات هي الاجزاء من الكود التي يكون نتيجتها قيمة مثل ناتج العمليات الحسابية، غالبا ما تستخدم العبارات مع الجمل، فمثلا في السطر 12 نجد جملة تعيين و يمثل الشق الايمن فيها عبارة (العملية على يمين علامة ال =) totalAmount + item.price.

الرموز (Symbols):

هل لاحظت وجود الكثير من ال {} او () او “” او ; ، تلك الرموز تستخدمها الكثير من لغات البرمجة لتحديد بداية ونهاية الجمل (Statements)، وما بداخلها يعتبر داخل حدود تلك الجملة.

التعليقات (Comments):

هل لاحظت تلك الكلمات باللغة العربية ؟ انها مجموعة من التعليقات التي نكتبها لانفسنا لشرح الاكواد ولا يفهمها الكمبيوتر حيث ان ال compilers و ال Interpreters تهملها ولا تنظر اليها عند التحويل الى لغة الالة/ الكمبيوتر !!، توفر لغات البرمجة تلك الوسيلة حتى تساعدنا في شرح كيف تم كتابة البرنامج ليفهمها الاخرون. في لغة الجافا سكريبت حتى يتسنى لنا كتابة تعليقات نحتاج الى العلامة // ثم نكتب بعدها التعليقات.


guest
0 تعليقات
Inline Feedbacks
اظهر كل التعليقات