أهلاً بك في الدرس الثاني!
في الدرس السابق، قمنا بتجهيز بيئة العمل الخاصة بك، والآن لديك الأدوات اللازمة لبدء رحلتك في عالم البرمجة. لقد كتبت أول سطر كود باستخدام print()، وهي خطوة أولى رائعة.
اليوم، سننتقل من مجرد طباعة نصوص ثابتة إلى جعل برامجنا أكثر ذكاءً وديناميكية. سنتعلم كيف يمكن لبرنامجك أن "يتذكر" المعلومات ويستخدمها. هذا هو جوهر البرمجة وأساس كل تطبيق معقد، بما في ذلك وكلاء الذكاء الاصطناعي الذين نهدف إلى بنائهم. فالوكيل الذكي يحتاج إلى تخزين وفهم أنواع مختلفة من البيانات - مثل طلبات المستخدم، أو معلومات من الإنترنت، أو بيانات من ذاكرته - لاتخاذ قراراته.
لذلك، يركز درسنا اليوم على المتغيرات وأنواع البيانات الأساسية. بنهاية هذا الدرس، ستكون قادراً على كتابة برامج بسيطة تخزن وتتعامل مع الأرقام، والنصوص، والقيم المنطقية.
1. لماذا نحتاج إلى أنواع بيانات مختلفة؟
قبل أن نكتب الكود، من المهم أن نفهم "لماذا". لماذا لا يعامل الكمبيوتر كل البيانات بنفس الطريقة؟ لماذا يفرق بين الرقم "5" والنص "5"؟
الفيديو التالي يجيب عن هذا السؤال بطريقة مبسطة وممتازة. إنه يوضح المشاكل التي يمكن أن تحدث إذا لم يكن لدى لغات البرمجة مفهوم "أنواع البيانات"، مثل إجراء عمليات خاطئة أو استهلاك ذاكرة الجهاز بشكل غير فعال.
ماهي ال data types - يعني ايه انواع البيانات في البرمجة؟
شاهد هذا المقطع من قناة OctuCode لفهم الفكرة الأساسية وراء أنواع البيانات. لا يركز المقطع على بايثون تحديداً، بل على المبدأ العام في البرمجة، وهو ما يتماشى مع أسلوبنا في بناء فهم عميق للمفاهيم.
شاهد من بداية المقطع حتى الدقيقة 6:41. ركز على المشكلتين الرئيسيتين اللتين يطرحهما الفيديو: مشكلة إجراء عمليات خاطئة (مثل ترتيب التواريخ أبجدياً) ومشكلة إدارة الذاكرة.
كما رأيت في الفيديو، تحديد نوع البيانات يساعد الكمبيوتر على:
- إجراء العمليات الصحيحة: الجمع بين رقمين يختلف عن لصق نصين بجانب بعضهما.
- استخدام الذاكرة بكفاءة: تخزين حرف واحد يتطلب مساحة أقل بكثير من تخزين صورة أو مقطع فيديو.
2. المتغيرات وأنواع البيانات في بايثون
الآن بعد أن فهمنا أهمية أنواع البيانات، لنرى كيف نتعامل معها في بايثون. في البرمجة، نستخدم المتغيرات (Variables) لتخزين البيانات. يمكنك تخيل المتغير كـ "صندوق" أو "وعاء" في ذاكرة الكمبيوتر، له اسم محدد، ونضع بداخله قيمة معينة.

في بايثون، لا تحتاج إلى التصريح عن نوع المتغير مسبقاً. بمجرد إعطاء قيمة للمتغير، تتعرف بايثون على نوعها تلقائياً. وهذا ما يسمى بـ "الطباعة الديناميكية" (Dynamic Typing).
لنستكشف الأنواع الأساسية وكيفية استخدامها.
أ. الأعداد (Numbers)
تنقسم الأعداد في بايثون بشكل أساسي إلى نوعين:
- الأعداد الصحيحة (Integer أو
int): هي الأعداد الكاملة بدون كسور، سواء كانت موجبة، سالبة، أو صفر.user_age = 25 stock_quantity = -10 - الأعداد العشرية (Float): هي الأعداد التي تحتوي على فاصلة عشرية.
product_price = 19.99 temperature = -5.5
ب. النصوص (Strings أو str)
النصوص هي أي سلسلة من الحروف أو الرموز. لتعريف نص في بايثون، نضعه بين علامتي تنصيص فردية (' ') أو زوجية (" ").
user_name = "سارة"
welcome_message = 'مرحباً بك في عالم الذكاء الاصطناعي'
ملاحظة هامة: أي شيء يوضع بين علامتي تنصيص يُعتبر نصاً، حتى لو كان أرقاماً. فالمتغير item_id = "123" هو نص، ولا يمكنك إجراء عمليات حسابية عليه مباشرة.
ج. القيم المنطقية (Booleans أو bool)
القيم المنطقية لها حالتان فقط: True (صحيح) أو False (خطأ). تُستخدم هذه القيم بشكل مكثف في اتخاذ القرارات داخل الكود. لاحظ أن الحرف الأول يجب أن يكون كبيراً.
is_logged_in = True
has_permission = False
3. كتابة أول برنامج يستخدم المتغيرات
الآن لنطبق ما تعلمناه. الفيديو التالي سيشرح لك عملياً كيفية تعريف المتغيرات، طباعة قيمتها، وقراءة مدخلات من المستخدم.
المتغيرات في بايثون variables تعلم بايثون من الصفر
في هذا الفيديو من قناة OctuCode، ستتعلم كيف تنشئ متغيرات في بايثون وتتفاعل مع المستخدم.
فكرة المتغير (00:43 - 01:24): استمع للمقدمة السريعة التي تعزز مفهوم المتغير كـ "وعاء". إنشاء متغير وتخزين مدخلات المستخدم (01:24 - 02:59): تعلم كيف تستخدم = لتعيين قيمة للمتغير، وكيف تخزن القيمة القادمة من دالة input(). طباعة قيمة المتغير (02:59 - 04:48): ركز على الفرق الجوهري بين طباعة اسم المتغير print(name) وطباعة النص print("name"). دمج النصوص مع المتغيرات (05:15 - 05:57): تعلم كيف تستخدم علامة + لدمج نص ثابت مع قيمة متغير لإنشاء رسالة ديناميكية.
للتأكد من نوع أي متغير، يمكنك استخدام دالة type() المدمجة في بايثون. افتح ملف main.py في VS Code، جرب كتابة الكود التالي وشغّله:
name = "علي"
age = 30
price = 9.99
is_student = True
print( type(name) ) # سيطبع: <class 'str'>
print( type(age) ) # سيطبع: <class 'int'>
print( type(price) ) # سيطبع: <class 'float'>
print( type(is_student) ) # سيطبع: <class 'bool'>

جرّب بنفسك!
الآن حان دورك. اكتب برنامجاً صغيراً في ملف main.py يقوم بالآتي:
- يسأل المستخدم عن مدينته باستخدام دالة
input(). - يخزن اسم المدينة في متغير اسمه
city. - يطبع رسالة ترحيبية مثل: "مدينة [اسم المدينة] جميلة!".
أظهر الحل
# 1. نسأل المستخدم عن اسم مدينته ونخزن الإجابة في متغير
city = input("ما هي مدينتك؟ ")
# 2. نطبع رسالة ترحيبية باستخدام قيمة المتغير
print("مدينة " + city + " جميلة!")
4. قواعد تسمية المتغيرات
عندما تختار أسماءً لمتغيراتك، هناك بعض القواعد البسيطة التي يجب اتباعها ليكون الكود صحيحاً وسهل القراءة:
- يجب أن يبدأ اسم المتغير بحرف أو شرطة سفلية (
_). - لا يمكن أن يبدأ اسم المتغير برقم.
- يمكن أن يحتوي فقط على حروف وأرقام وشرطات سفلية (
A-z,0-9,_). - أسماء المتغيرات حساسة لحالة الأحرف (
ageيختلف عنAge). - من الأفضل استخدام أسماء وصفية (مثل
user_nameبدلاً منun). - إذا كان الاسم مكوناً من عدة كلمات، افصل بينها بشرطة سفلية (مثلاً:
last_login_date). هذه الطريقة تسمىsnake_caseوهي الشائعة في بايثون.
ملخص الدرس
أحسنت! لقد تعلمت اليوم أحد أهم المفاهيم في البرمجة. لنلخص ما مررنا به:
- المتغيرات هي أسماء نستخدمها لتخزين البيانات في ذاكرة الكمبيوتر.
- أنواع البيانات الأساسية في بايثون هي النصوص (
str)، والأعداد الصحيحة (int)، والأعداد العشرية (float)، والقيم المنطقية (bool). - بايثون تحدد نوع المتغير تلقائياً بناءً على القيمة المسندة إليه.
- استخدمنا دالة
print()لعرض قيم المتغيرات ودالةinput()لجعل برامجنا تفاعلية.
لقد بدأت الآن في كتابة برامج قادرة على التعامل مع البيانات، وهذه هي اللبنة الأولى لبناء أي نظام ذكي.
ما التالي؟
الآن بعد أن أصبح بإمكاننا تخزين البيانات، الخطوة التالية هي تعلم كيفية إجراء العمليات عليها. في الدرس القادم، سنتناول العمليات الحسابية والمنطقية، حيث ستتعلم كيف تجمع الأرقام، تقارن بين القيم، وتدمج الشروط لاتخاذ قرارات بسيطة في برنامجك.