طيب بسم الله الرحمن الرحيم اليوم إن شاء الله يا
جماعة هنكمل ما بدأنا في المحاضرة الماضية المحاضرة الماضية
أخدنا نبذة نظرية عن أساسيات البرمجة بما فيها ال
compiler وقلنا كيف الـ Java فعليًا بتم عملية كتابة
الـ code وعمل compilation إليه وقلنا عملية ترجمة
الـ code الـ Java من high level language لـ low level
language بتمر بمرحلتين صح ولا لأ، الـ compiler اللي
هو المرحلة الكبيرة اللي بيحول من high level
language لحاجة اسمها byte code صيغة هيك مبسطة
تمام؟ مش machine language لأ، قبل الـ machine
language بس هذه الـ byte code حاجة standard أو
مشتركة ما بين كل الأنظمة التشغيلية لأن المرحلة
الثانية اللي هي عملية الـ java virtual machine اللي
بيحول من الـ byte code لـ الـ machine language بتاعة
كل نظام تشغيل على حدّه، عشانك احنا قلنا الـ Java
إلها compiler واحد، لكنها أكثر من Java Virtual
Machine سهولتها أن أنا لو ضفت نظام تشغيل جديد مش
هحتاج إلا أن أعمل فيها Java Virtual Machine جديد
للـ Java تمام؟ وهذا اللي بيخلي برامج الـ Java بتشغل
على الـ desktop و بتشغل في نفس الوقت على الجوالات
اللي عليها نظام Android صح ولا لأ، الـ Android نظام
غير الـ Windows، إيش اللي بيخلي الـ Java تشغل على
النظامين؟ أن هذا إيه له Java Virtual Machine؟ هذا
الوضع اسمه الو حاجة شبيهة في الـ java virtual
machine أيضًا بيحول الـ byte code اللي هو واحد في
الحالتين، أنا ببرمج الـ code الـ java واحد بيشتغل
نفسه على أكثر من نظام تشغيل، كل نظام تشغيل اللي الـ
java virtual machine خاص فيه، طيب بدنا نبدأ اليوم
فعليًا بأول الـ instructions اللي برمجها، و اليوم
هنأخذ موضوع اسمه declaring variables إنشاء أو
تعريف عن المتغيرات، طيب الآن يا جماعة أنتو خلينا
نتخيل بنا برنامج بسيط بيمرّ عليكوا كثير في الـ web
أو غيره، لما تجي تعمل أنت تسجيل دخول لما تجي تعمل
تسجيل دخول بتدخل اسمك وكلمة المرور بعدين بتضغط
login مثلاً النظام إيش بيعمل ضمنيًا بيقرأ اسمك اللي
أنت دخلته في النموذج، كلمة المرور، وبعدين بيروح
بيقارنهم في بيانات مخزنة مسبقًا، إذا كانت صحيحة بقولك
اتفضل ادخل على صفحة معينة، إذا كانت خاطئة بيطلع لك أن
صار خطأ أو بيحولك على صفحة ثانية، هذا اللي بيصير
دايمًا فعليًا أنا بدخل اسم المستخدم وكلمة المرور، هذه
بيانات صح؟ أول خطوة بيعملها إيش هي قبل ما يروح
يفحص هل كلمة المرور صح أو لأ، أنه بياخد بياناتك و
بيخزنها عنده صح ولا لأ؟ يبقى لازم يكون في حاجة في
البرنامج تقرأ البيانات وتخزنها، نفس الطريقة أنا
مثلاً بدي أبحث عن طالب معين من ضمن مجموعة الطلبة، نفس
الشيء أنا بدي أقرأ بيانات الطلبة مثلاً الموجودة في
ملف بدي أخزنها عندي في البرنامج وبعدين أعمل بحث
في البيانات هذه، فده لو كانت مثلاً البيانات في ملف
فدائمًا أنا معظم البرامج بتتعامل مع بيانات سواء أنا
عشان أبحث فيها، عشان أعملها معالجة للبيانات هذه، فأول
خطوة دائمًا في كتابة البرنامج بدي أن أتعلم كيف
البرنامج بتعامل مع البيانات أو بخزن البيانات
البيانات هنا بتتخزن في الكمبيوتر، أخدتوا أنتو مقدمة
صح، ماشيين فيها، وأن دائمًا البيانات تتخزن في
الذاكرة تمام، فببساطة شديدة البرنامج عشان يخزن
بيانات بيروح بيحجز مكان في الذاكرة وبيحط في
المعلومات هذه، طيب هذا كيف بتم برمجيًا الآن الذاكرة
شغلها معقد، الذاكرة فعليًا الـ RAM مثلاً هتاخدوا أنتو
في مقدمة في الحاسوب أنّه مقسمة لأجزاء بسمّوها cells
وكل cell لها address معين عنوان معين، فانا عشان
أخزن في مكان معين لازم أروح أقول وأروح للعنوان
هذا وأحط فيه بيانات معينة، تمام، عشان أقرأ نفس
الحاجة بدي أقول وأروح لعنوان معين وأقرأ منه، لكن
احنا اتفقنا أن أنا في الـ high level language
بنزلش لمستوى الذاكرة وعنوانها وتفاصيلها لأ،
بتعامل high level هو بعدين الـ compiler بيحوله لـ
machine language وبتفهم بلغة العناوين ومن أين نحط
ومن أين نجيب، طيب، فنشوف برمجيًا لأن كيف احنا ننشئ
variable، المحاضرة الماضية احنا فتحنا شاشة الـ
netbeans، نزلتوا الـ netbeans يا جماعة؟ طيب، فتحنا
شاشة الـ netbeans أول ما تفتح بتلاقي الشاشة هذا
اللي طلعت قدامك، طبعًا احنا عشان نبدأ نشتغل نبدأ
نشتغل مشروع جديد، project جديد، فبتروح لقائمة file
يعني للأسف القائمة هذه مش هقدر أكبر خطها، أنا بقدر
أكبر خط الـ coding لكن القائمة مش هقدر أكبر الخط
فبتلاقي على قائمة file بس أنا هقرأها، بتروح تقوله new
project، طبعًا لو طلع عندك شاشة فيها خيارات أكثر من
نوع تطبيق فانا بختار الأول اللي هو اسمه java
application، طبعًا في خيارات ثانية مثلاً java fx هذا
بيستخدموه لتصميم الـ user interface فبختار java
application وبقوله next، طيب يا جماعة بختار Java
application وبقوله next تمام، لأن هذه بسيطة، طالب
منك ثلاث حقول بدك تحط اسم التطبيق اللي بدك إياه، هو
طبعًا حاطط اسم افتراضي من عنده، أنت ممكن تكتب اسم
يفضل تكتب اسم يدل على اللي أنت بتعمله، تمام، مثلاً
هذا تطبيق مكتبة تكتب بتسميه library مثلاً، تمام، تسوق
تكتب shopping، حط اسم يدل على التطبيق عشان تقدر
ترجع له، مثلاً احنا بنتسميه مثلاً test
لأن هذه المسار اللي بحفظ فيه التطبيق، بلزمك تعرف
المسار، بقرأه أنا قلت لك مثلاً اعمل واجب وسلّمه لي
تمام، بتكون عارف المجلد تبعه وين موجود عشان تقدر
تروح تجيب لي الملف، باشي يا جماعة هو طبعًا هيبيعطيك
المسار هو عادةً موجود وين في مجلد الـ documents
بتاعة المستخدم، في مجلد اسمه netbeans project تمام
هو بقسم بِرتب كل project في مجلد لحاله، طيب هاي next
بعد الآن، أول ما تم إنشاء الـ project تبعي، طب كيف
هشوف الـ project الآن يا جماعة؟ لاحظ أن الشاشة مقسمة
لقسمين، في جزء على الشمال مشاريع، اه فعليًا بيجيب لك
المشاريع، لو ضغطت على كلمة projects هنا، تمام، بيجيب لك
قائمة المشاريع اللي عندك حاليًا، احنا كم مشروع
عندنا واحد، اللي على اليمين بيجيب لك شاشة الـ coding
اللي هنكتب فيها الـ code، ماشي؟ طيب احنا لو روحنا على
المشاريع وكبرنا أو عملنا expand للمشروع أو شفنا
إيش اللي موجود فيها هتلاقي فيه في كل مشروع مجلدين
مجلد اسمه source packages ومجلد اسمه libraries
source packages هذا المجلد اللي بنحط فيه ملفات الـ
code، من اسمه احنا حكينا مرة يا جماعة أن الـ language
code اللي بنكتبه بنسميه source code صح ولا
متذكرين هذه؟ ففعليًا الـ source packages في مجلدات
الـ code اللي أنا بكتبه، المجلد الثاني اسمه library
أو libraries، هذه المكتبات اللي أنا بستخدمها فعليًا
إذا ضغطت على libraries تمام هلاقي هو ضايف لي حاجة
اسمها jdk 1.80، هو فعليًا الـ jdk الـ java development
kit تحتوي على الـ compiler وعلى الـ java virtual
machine وكل المكتبات اللازمة عشان الـ compiler يفهم
الـ code تمام، فهذا احنا لأن مش هنتطرق للـ libraries
لأن هذا جاهز بالنسبة لنا، احنا شغلنا هيكون وين؟
وكله وين في الـ source packages، وby default يعني
بشكل افتراضي هو لحاله أنشأ ملف اسمه test1.java، اسم
الملف إيش؟ test1.java يعني هو حتى قال لك أنت مش لازم
تنشئ أول ملف، أنا أنشأت لك إياه اللي هو هذا الملف
الموجود قدامك، تمام، هاي أنا ضغطت على test 1 طبعًا
لو هد مسكرة هنا، لو هد النافذة مش مفتوحة وضغطت أنا
اضغط على الملف في project تمام
هاي فتح الملف عندي، ماشي يا جماعة هنا الشغل كله
هيكون في الشاشة اللي على الشمال اللي هو اللي فيه
coding طيب تعالوا نشوف الشاشة اللي على الشمال هذه
الآن في حاجات بتأخذها زي ما هي الآن تمام كلها
هيتفصل بعدين انزل تحت هنا في عندك حاجة اسمها main
كلمة main بالانجليزي ايش يعني زي أساسي تمام
main هذه بتبدأ بقوس هذا القوس شايفينه وهي تسكير
تسكير القوس هنا هذه زي ما بنسميها هذه بداية ال
main وهذه نهاية ال main لأن باختصار شديد ال
code تبعي يعني البرنامج تبعي ينكتب ما بين القوس
هذا و القوس هذا تمام يعني هنا أنا باجي بضغط enter
و بنكتب ال code تبعنا هنا من هنا لآخر الفصل كل
شغلنا يتم وين يا جماعة جوا ال main باختصار شديد
هذا ال main احنا بنسميه function أو وظيفة أول ما
يشتغل التطبيق أول وظيفة بتتم تنفيذها هي هذا ال main
تمام؟ يعني هذا هي مفتاح التشغيل فأي حاجة بدي أبدأها
تشتغل بكتبها جوا ال main ماشي هنا .. هنا بنحط كل
حاجة طيب قبل ما نكمل أو نبدأ نكتب أو إنشاء ال
variables خلينا نطبق لحاجة في أسطر مكتوبة
بالرمادي شايفين هذه الأسطر تمام هذه موجودة
بالرمادي هذه الأسطر الموجودة بالرمادي بنسميها
احنا comments ايش يعني comments تعليقات تمام
التعليقات هذه باختصار شديد لا يتم معالجتها بواسطة
ال compiler يعني ال compiler حكينا ايش وظيفته إنه
يمسك الكلام اللي أنت كاتبه و يحوله للغة آلة تمام
مثلا أنا كتبت كلام زي خربيش على طول علمليه باللون
الأحمر ليش هو لحاله ضمنيا ال compiler بيحاول يترجم
الكلام اللي أنت كتبته للغة الآلة طبعا هو ما فهموش
تمام عشان هيك طلع لي الأحمر هذا طيب هذا الكلام اللي
فوق اللي بالرمادي ال compiler جاهله تمام؟ لو .. ليش
يتجاهله؟ فعليا هذا بنسميه comment ال comment يا
جماعة عبارة عن كلام بحطه المبرمج عشان مثلا يشرح ال
code تبعه لمين يشرحه؟ اما يشرحه لحاله ان مثلا انا
الآن برمجت البرنامج و سبتة و رجعت بعد مثلا شهرين
نسيت ال .. ايش .. ايش وظيفة ال code اللي انا
كاتبه فممكن من خلال الكلام اللي انا كاتبه ارجع
أتذكر ممكن كمان لو احنا بنشغل ك team انا كتبت code
أحط عليه تفسير عشان يجيزميلي بعد فترة يفهم ايش ال
code هذا بيحكي هذا كلام ال comment غالبا من كتب ال
natural language كلام الناس يعني هذا ال code ممكن
حتى تكتب بالعربي تمام تمام وظيفة ممكن
تكتب بالعربي تمام و تقول وظيفة هذا البرنامج و
كذا كذا تمام فصل أنت بدكيه لكن أكيد يا جماعة هذا ال
code لازم ال compiler يتجاهله ليش؟ لأنه لو ال
compiler إجا بده يقرأه هيطلع لي ايرور ما فهمش ايش
المقصود فيه طيب كيف بخلي ال compiler يتجاهل ال
comment هذا؟ باختصار شديد بتحط في الأول هنا اتنين
slash باك سلاش و لا باك سلاش بيسموها باك سلاش تمام
اتنين باك سلاش أي سطر أنت تكتبه أي كلام هي hello
بدون
باك سلاش هيحاول ال compiler يترجمه مش هيفهم هيطلع لك
error لكن إذا أنا قصدي ان هذا comment تفسير لل
code بحط باك سلاش خلاص يتجاهله صار حتى لونه رمادي
يبقى الآن ال compiler لما يجي يعمل ترجمة لل code
هذا ما له بتجاهله بتقدر تضيف قد ما بدك comments و
بتقدر تضيفهم في أي مكان طبعا يعني ممكن تيجي تحت
هنا تحط comment ماشي هذا مش جزء من ال code اللي
بنعمله compile ماشي يا جماعة طيب بقول لك كمان لو بدك
تكتب أنت أكثر من سطر comment بدل ما أنت تروح لكل
واحد و تعمل double backslash قبله لا ممكن تيجي
مثلا قبل الأسطر كلها تيجي تعمل slash نجمة و في آخر
الأسطر تحط نجمة slash خلاص كل حاجة ما بين ال slash
نجمة و نجمة slash اعتبرها comment عشان ما تضطرش
تعمل backslash على كل سطر طيب انا ليش بدأت في شرح ال
comment لأنه أنا لما بدأت ال code في أكثر من سطر
مكتوبين باللون الرمادي تمام هذا بالرمادي هذا بنفهم
أنه ايش عبارة عن comment برضه وهذا برضه اللي فوق
مكتوب باللون الرمادي بنفهم أنه تعليق تمام هل
التعليق هذا أساسي في ال code تبعي؟ لا هذا بس
تفصيلي في ناس بتبرمج سنين طويلة و بتكتبش code
comments معناه أنه مش أساسي معناه ايش أنه ممكن
أشيله ولا لا ممكن أشيله خلاص
هي شيلنا كل ال comments هي رجع ال code الملف ماله
صار يعني هيك ألطف أبسط
ماشي يا جماعة أفهموني ايش ال comments طيب تمام نبدأ
الآن نكتب code برمجي تمام اللي هو ال code ال
compiler هيشتغل عليه و أول حاجة تعلمناها أو قلنا
بدنا نتعلمها اللي هي موضوع ال variables إنشاء
المتغيرات تمام ليش بننشئ متغيرات عشان نحط فيها
بيانات و نقرأ منها بيانات أي برنامج بده يتعامل مع
بيانات لازم يكون فيه عندي variables بنحط فيها
بيانات و بقرأ منها بيانات ماشي طيب إنشاء متغيرات
بقول عشان أنت تنشئ متغير الصيغة العامة لإنشاء
المتغير كالتالي يا جماعة أول
حاجة بتحط حاجة اسمها ال data type ايش
يعني ال data type نوع البيانات اللي بدك تحطها
تمام؟ بعدين بتحط فراغ فراغين تاب
اللي بدك اياه تمام؟ وبعدين بتحط اسم المتغير
تمام؟ اللي هو أنا بدي أسميه identifier ايش
هي كلمة identifier من ID؟ identifier يعني معرف
تمام؟ ايش ال identifier تبعكم؟ الهوية مثلا صح
ولا؟ رقم معرف واحد هيسأل ليش ما كتبت shename مثلا؟
اسم المتغير ليش حطيته identifier هنقول ليش تمام و
بعدين هذا هو الحد الأدنى لإنشاء أي متغير هيك انا
أنشأت متغير إله اسم اللي هو ال identifier و إله
نوع تمام بعد ما أخلص باجي آخر السطر بحط semicolon
تمام فاصلة منقوطة رجعت احنا لما نكتب رسالة
بالعربي كيف بننهي الجملة؟ بنحط نقطة في البرمجة لما
ننهي ال instruction ايش ال instruction يعني؟
التعليمية بنحط semicolon في ال java هي طبعا لغات
البرمجة بتختلف مثلا في ال python بنحطش حاجة تمام؟
في ال java بنحط semicolon تمام؟ هذا semicolon بتدل
على نهاية التعليمية مش نهاية السطر نهاية التعليمية
يعني ممكن يكون في تعليمات ثانية بعد ال semicolon
تمام؟ طيب نجي نجرب الكلام هذا عملي أول حاجة قلت
أنا بدي أحط ال data type ايش أنواع البيانات الآن
يا جماعة في أنواع كثيرة من البيانات مش هنفصل فيها
الآن هناخد واحد منهم مثلا في نوع اسمه Int Int
اختصار ل integer ال
Int هذا يستخدم هذا data type يستخدم للأرقام
الصحيحة سواء سالبة أو موجبة يعني مثلا أنا بدي آخذ
عدد أولاد الشخص شوف دائما اللي بيحدد لك ايش نوع ال
data type ايش نوع البيانات اللي في الواقع رجعت
واحد عدد الأولاد هذا رقم صحيح ولا كسري؟ صحيح منفع
تقول والله واحد عنده خمس و نص أولاد؟ لا يبقى ال
data type المناسب للتعبير عن عدد الأبناء integer
عدد صحيح فال data type اللي بيلزمني هو integer لأن
لو أنا بتعامل بكسور في data type ثاني اسمه double
هذا
للأرقام الكسرية هذا لا ايش لا الكسرية أو العشرية
تمام ولاحظ أنه لازم تكتبها small letter ما فيش
تكتبها capital تمام ال Java يا جماعة بنسميها case
sensitive case sensitive case
sensitive case هي حالة الحرف تمام لما أقول أنا
case sensitive يعني ال Java تتأثر بحالة الحرف
معناه لما تشوف حاجة capital تعتبر انها غير لما تكون
مكتوبة small letter ده بالظبط أنت لما تكتب
password لو هي بـ small لو أنت كتبتها capital
بتظهرها غلط طيب هذا القاعدة العامة الحد الأدنى
لتعريف متغير الـ data type مسافة إيش الاسم تبعه الـ
identifier المعرف تبعها تعال الآن نشوف هذا الكلام
عملي تخيل الآن أنا بدي أعمل برنامج يجمع لي عددين
طبعا بدي أطلب من المستخدم يدخل الرقم الأول والثاني
ونفترض أن الأعداد اللي بدي أتعامل معها عدد صحيح
ماشي أنا ما فيش فيها كسول بما أن أنا البرنامج
بتعامل مع عددين يبقى لازم يكون عندي متغيرات عشان
تحفظ العددين دائما أنت فاكر شوف إيش البيانات
بتعامل مع الـ data وبعدين أنشئ متغيرات لازمة الـ data
اللي بتعامل معها أنا بتعامل مع برنامج بتعامل مع
بيانات الطالب إيش بيانات الطالب اسمه ورقمه وعمره
والكلية بتاعته مثلا كام قيمة صاروا أربع يبقى كام
متغير بالزمن أربع متغيرات إيش أنواعهم مش كلهم نفس
النوع الاسم هذا عبارة عن نص تمام الرقم اللي تبعه
ممكن يعتبره رقم ممكن يعتبره نص لأن لو فيه slash
مثلا حسب حالة الرقم هذا الكلية برضه نص، تمام؟
العمر؟ رقم، يا integer يا double لو بده فيه كسور
فدائما .. دائما فكر بالطريقة هذه شوف البرنامج إيش
بده بيانات واعمل متغيرات لازم نحفظ البيانات هذه
نيجي الآن زي ما قلنا مثال جمع عددين كم متغير بده
في برنامج جمع العددين؟ هم عددين، تمام؟ فبده
متغيرين يحفظوا القيم هذه أو نفترض أنه أرقام صحيحة،
بده ننشئ المتغير الأول قلنا كيف تكتب الـ data type
أول حاجة تكتب إيش أنت لاحظ كمان أنه كلمة int طلعت
بالأزرق صح معناه إن الـ compiler ماله فهمها دائما
الكلمات المحجوزة إيش يعني كلمات محجوزة يعني
الكلمات المخزنة عنده اللي هو فهمها مكتوبة بالأزرق
طبعا على طول طلع له هنا أحمر ليش طلع له أحمر ما فهمش
بقول أنت قاعد تكتب الـ data type طبعا مش بدك يعني زي
الـ ..ويلو للمصلي صح ولا لأ ما كملش الآية غلط معناها
اختلف لأن أنت كتبت الـ data type بعدين سيب مسافة
أو مسافتين أو جد ما بدك فرح طيب بعدين اكتب اسم
المتغير اللي بدك تسميه اسمه البدكية أحمد X Y Z علي عمر
تمام سمي الاسم اللي بدك إياه بس بالانجليزي ماحدش يقول
اللي بده يسمي بالعربي تمام أنا إيش سميت المتغير X
تمام سمي Y سمي أحمد تمام
سمي علي اللي بدك إياه سميه تمام سمي age إيش أنا age
عمر تمام هي X وبعدين الأمر هيك بحد الأدنى جاهز
تمام حط إيش سيمي كوران لاحظ الآن الأحمر كله راح
هيك الـ compiler معاه مبسوط فهم هكذا إيش فهم فهم
أنه تم إنشاء متغير اسمه X فعليا أنا لما أقول تم
إنشاء متغير اسمه X إيش معناه يا جماعة معناه إنه
راح على الذاكرة الـ RAM بتاعته وحجز مكان فيها في أي
مكان فاضي تمام وسمّاه هذا المكان أطلق عليه إيش X
هو طبعا إله عنوان رقمي تمام بس هو عشان يريحك ما
تتعاملش أنت بالـ low level وإيش الأرقام وإيش
العنوان جالك أنا هذا سميته عشان أريحك إيش X طبعا
هالجيتها نسير بدلالة X نخزن فيها أرقامه ونقرأ منه
أرقام تمام المتغير هذا إيش نوعه integer هذا معناه
أنه نوع integer معناه إنه ممكن أن أخزن فيه إلا إيش
إلا أرقام ماشي يا جماعة طيب انزل تحت integer y هنا
أنشأت أنا إيش متغير ثاني سمّيته y تمام double
z هذا إيش معناها أنشأت متغير ثالث اسمه Z تمام؟ طيب
نقدر نفصل شوية في تسمية المتغيرات لأن التسمية لها
أيضا شروط يعني هل بقدر أحط أي حاجة أي اسم؟ لأ
بقول لك ما ينفعش الاسم يكون بينهم في space يعني ما ينفعش
تقول اسمه XY زيك على طول بفهم خطأ هو يا جماعة الـ
compiler بسيط في الفهم يعني مش عبقري يعني هو هنا
أنت لخمته هو بيميز الأجزاء الـ instruction بناء على
الـ spaces يعني فهم أن الجزء الأول عبارة عن إيش
integer فهم أن الجزء الثاني عبارة عن الاسم طب و
الجزء الثالث إيش أنا قصدي كبرمجة إن الـ XY كله إيش
اسم واحد بس هو ما فهمش الكلام هذا هو مدام اعتبر إن
في space معناه إن هذه حاجة إيش حاجة جديدة بطل يجمع
طب إيش الحل هو أنا بدي اسميه XY سيب المسافة شيل الـ
space حط underscore بيمشي الحل أما أنت كأنك إيش
وصلتهم في بعض لكن إن تحط space ما فيش ولا tab ولا
حاجة فاصلة تمام؟ حطهم كلهم ورا بعض فهذه
أول قاعدة أنه ما ينفعش يكون في space في أيضا حاجات
ثانية ما ينفعش تكون موجودة في الاسم مثلا ما ينفعش
يكون في عندي نقطة لأن أصل النقطة إلها معنى آخر
تمام؟ إلها يعني مستخدمة في حاجة ثانية فهو لما شاف
نقطة التخمخلاص النقطة هذه محجوزة ما تستخدمها في
أسماء المتغيرات ما تحطش
نقطة في الاسم بس ماشي بيمشي
تبدأ dollar sign الآن بنفع الاسم يكون فيه أرقام
عادي X67 هذا اسم متغير بس ما ينفعش يبدأ برقم تمام؟
ما ينفعش تقوله مثلا 6x زي هي طلع خطأ يعني ما ينفعش
يكون في dot ما ينفعش يكون في مسافة ما ينفعش يبدأ برقم
برقم لكن يبدأ بحرف وبعدين تحط الأرقام اللي بدك
إياها عادي تمام؟ ما فيش قيود على اسم المتغير طول
الاسم تمام؟ يعني ممكن أقول له number of apples هذا
كله اسم إيش كله اسم متغير في مشكلة إن اسمه طويل لأ
ما فيش مشكلة طيب
هذا
إيه لها معنى ثاني لأ أيضا من الحاجات المهمة إن الـ
capital letter غير الـ small letter يعني أنت مثلا
لأن عملت متغير اسمه X انتبه معايا أتيت تحت هنا
وعملت integer كمان X هنا طلع لك خطأ ليش؟ ما ينفعش
المتغير اسمه يتكرر، يعني هنا أنت لخمته، عملت
متغيرين ولهم نفس الاسم، طب أنت بعدك جيت وقلت له
اطبع لي X، مين هيطبع لك؟ الأولى ولا الثانية؟ ما ينفعش،
قلت له خذ لي في X، هيخذلك في الأولى ولا في الثانية؟
فلازم المتغيرات يا جماعة يكون لها أسماء مختلفة،
عشان هذا أنا سمّيته identifier ما سمّيتوش name إيش
الفرق بين الـ name والـ identifier الاسم بتكرر كام
واحد فينا اسم محمد كتير صح ولا لأ لكن رقم الهوية
بتكرر مستحيل لازم يكون هو المعرف لك فعشان هيك أنا
فضلت أستخدم identifier عن name إن الـ identifier
ما ينفعش يتكرر عشان هيك هذا دليل إن اسم المتغير ما ينفعش
يتكرر يا جماعة ماشي ما ينفعش تعمل متغيرين بالاسم X
طيب
لو إجيت حطيت X capital مش الحل مش الحل هاي طلع
error شوف طالما ما فيش أحمر معناه الـ compiler ماله
فهو مبسوط لأن X small و X capital اعتبرهم حاجتين
مختلفتين ماشي يا جماعة هذا متغير وهذا متغير ثاني
لحد الآن الموضوع واضح يا جماعة إحنا قاعدين بنفصل
في طريقة تسمية المتغير المتغير يا جماعة ما ينفعش
يبدأ بأرقام، ما ينفعش يكون فيه نقطة، تمام؟ ما ينفعش يكون
فيه slash زي هيك لكن underscore تمشي عادي، لكن هذه
لأ
يفضل يا جماعة إنك تسمي المتغيرات بأسماء تدل على
فائدتها يعني مثلا أنت مستخدم متغير عشان تخزن عمر
الموظف age تمام سمّيه age لكن أنت تعمل ست سبع
متغيرات وتسمّيهم X و Y و Z و W وتتذكر عنهم إيش الـ
Z وإيش الـ W صح ولا يا جماعة فدائما تسمي المتغيرات
بأسماء تدل على محتوى ممكن تحط اسم المتغير ما عليهش
إحنا فصلنا في الأسماء كتير لكن هذه مهمة أسماء
المتغيرات أيضا في الجافا تحديدا يفضل إن هي تبدأ بـ
small letter يفضل إن هي تكون small letter وتبدأ بـ
small letter
integer Y لو عرفت متغير Y كابيتال فش مشكلة إنك تعرف
متغير بالكابيتل لكن مش محبب في الجامعة خلاص احنا
متعودين أن أسماء المتغيرات تكون دائماً ايش small مش
غلط أنك تعمل كابيتل إذا جربنا ايه الدليل أنه مش
غلط ايشانه ما طلعليش أحمر تمام جبله يعني تمام لكن
الأفضل المتعارف عليه أنك تحطه small letter ما فيش
حد بيمنعني أن أحط مثلاً متغير اسمه name بال capital
تمام لكن الأفضل أنك تسميه ايش name ماشي يا جماعة
ممكن اسم المتغير يكون مكوّن من أكثر من كلمة مثلاً
أنت عندك برنامج بتعامل مع أعداد الطلبة و أعداد
الموظفين تمام؟ و أعداد المثقات كم متغير هدول؟
ثلاثة كلهم أعداد بس أعداد ايش مختلفة حاجة موظفين و
حاجة طلاب و حاجة مثقات أنا لازم أعرف ثلاث متغيرات
فتعال أنت مثلاً لعدد الطلاب ممكن تقول number of
students شوف كيف أنا سميته أول حاجة اتفقنا احنا
اللي ما ينفعش تسيب مسافات صح ولا لأ تكتب جملة اسمية
آه و فيه بينها مسافات مظبوطش احنا قلنا اسم المتغير
لازم يكون كله ايش مربوط في بعضه ممكن تعمله زي هيك
في حاجة بتمنعك أن تعمل هيك تمام لأ ولاحظ شوف أنا
كيف سميته عشان يكون مقروء أكثر أن أول حرف من كل
كلمة حطيته capital ما عدا مين؟ الحرف الأول هذا مش
إجبار يا جماعة هذا المتعارف عليه في الجامعة أنه
دائماً بداية المتغير بتكون small و عشان يكون مقروء
أكثر يعني هو ده بالك لو كان بالشكل هذا ما فيش حاجة
بتمنعني أن يكون هيك number of students في حاجة
بتمنعني هي صح لكن شوية هيك أنت ممكن تلتخم ما تعرفش
وينتهي كل كلمة و كل كلمة جديدة بتبدأ لكن لما
يكون عندك الحرف الأول من كل كلمة capital
بالشكل هذا يعني صار مقروء بشكل أفضل صرت عارف أن
هذه ايش لما تقرأ حتى أنت هاي number و هذه off و هذه
student يعني باختصار شديد لما يكون عندك اسم متغير
مكوّن من أكثر من كلمة لازم تـُلصق الكلمات في بعض تمام؟
و خلي الحرف الأول من كل كلمة ماله capital تمام؟
هاي مثلاً انزل هنا integer number of employees عدد
الموظفين int number of courses
كم متغير عرفت أنا عنده هنا؟ ثلاثة هذا باختصار
طريقة تسمية المتغيرات اختر زي ما قلنا اختر
الاسم اللي بدك إياه ما فيش حاجة بتمنعك أنك تختار أي
اسم لكن يفضل أنك تختار اسم يدل على استخدام المتغير
حاول تستخدم دائماً ال small letters إذا كان أكثر من
كلمة أربط الكلمات كلها مع بعض ما تعملش متغير بيبدأ
برقم ما تعملش متغير فيه مسافات أو dot تمام أو ايش
يسموها slash مش slash ال underscore مقبولة ال
underscore تمام بس هذه قيود تسمية الملفات و هذه أمور ما
بتحفظش بكرا مع التعود آه لحالك هتعرفها ماشي طب نرجع
لأ احنا موضوعنا لسه احنا هاي integer integer
X ايش في مخزن في ال X هل جيتوا يا جماعة ولا حاجة
بدنا نحط فيه قيمة هينمشي خطوة خطوة بدنا نحط في ال
X قيمة كيف نحط في ال X قيمة لأن في أكثر من طريقة هيك
أنت عرفت ال X و بعدين انزل تحت سطر جديد يديله
تعليمة جديدة و قوله X يساوي ستة في خطأ بالأحمر ليش
طلع لاندرميد شاطر يقول لي ليش خطأ بالأحمر لأن
ما فيش عندي فاصلة منقوطة دائماً قلنا كل أمر لازم
ينتهي في فاصلة منقوطة هدول السطرين ايش معنى هدول
معناهم أن أنا أنشأت متغير اسمه X و بعدين حطيت في ال
X ايش؟ قيمة و هي 6 مثلاً تمام؟ هي أنشأت متغير و
حطيت فيه قيمة integer
Y Y يساوي 7
عرفت متغير ثاني اسمه Y و حطيت فيه قيمة 7
بديهي و منطقي أنه ما ينفعش تحط قيمة في متغير قبل ما
تنشئه يعني مش منطقي أنك تقوله x يساوي 6 و بعدين
تقوله integer x هذه نقطة مهمة أن الكمبيوتر يا جماعة
لما يجي ينفذ بيلفظ بالتسلسل أول أمر و بعدين الثاني
و ينتقل لأخر أمر لأن هو مسك أول أمر بيقول أنت قاعد
علملي ال X بالأحمر ليش؟ cannot find symbol مش
ملاقي الرمز هذا ما فهموش تمام؟ و بعدين اتعرف ال X
هذا غلط عرفوا في الأول و بعدين حط فيه القيمة اللي
بدك إياها طبعاً واحد بيقول هل لازم نحط القيمة مباشرة
بعد التعريف؟ لأ مش شرط شوف أنا هنا مثلاً حطيت
integer Y يعني عرفت ال X و ما حطيتش فيه قيمة و بعدين
عرفت مين ال Y و بعدين إجيت لل Y و حطيت فيه ثلاثة و
بعدين إجيت لل X و حطيت فيها خمسة بيمشي الحال ولا
بيمشيش؟ بيمشي الحال المهم أن وضع القيمة في المتغير
بيجي بعد إنشاء .. بعد تعريف المتغير هيك أنا أنشأت
متغيرين و حطيت فيهم ثلاثة و خمسة طيب
integer x بقول ليه ممكن كمان تنشئ المتغير و تحط
القيمة في سطر واحد كيف integer x يساوي ثلاثة فاصلة
منقوطة هنا أنا ضربت ع صفرين بايش بحجر أنشأت
المتغير و حطيت فيه القيمة هي نفسها هذه هي نفسها زي
ما أقول integer x و بعدين أقوله x يساوي ثلاثة هي
هي تمام بس أنا عشان أختصر أسطر قلت له integer x هي
يساوي ثلاثة في نفس السطر عرفته واضح
يا جماعة
أنا معنى أفرجيك الحالات المختلفة على أساس أنه يعني
لو شفت ال code مكتوب بأي طريقة تكون فاهم تمام طيب
بدنا متغيرين للبرنامج اللي بيجمع عددين integer X و
integer Y الآن بقول لما دام المتغيرين من نفس النوع
ممكن أنت كمان في سطر واحد تقول له integer X انتبه
معايا هنا فاصلة y الآن
ايش معنى السطر هذا هنا كأنني عرفت متغيرين في سطر
واحد فاصلة هذه بتفصل بين مين و مين اسم و اسم
identifier و identifier هذا معناه أن أنا عرفت
متغيرين اثنين اسمهم x و y الاثنين من نوع integer
هذه هي نفسها هي نفسها شوف هذه
عرفت المتغيرين في نفس السطر
و ممكن تقول integer X فاصلة Z فاصلة W فاصلة E عرفت
خمس متغيرات تمام؟ هنا طبعاً حط مسافات عادي ما فيش
مشكلة تمام؟ مش هتأثر المهم أنه بتحط ال data type
بعدين بتحط العدد اللي بده كم من أسماء المتغيرات
بس فاصل بينهم ايش؟ فاصلة تمام؟ نهاية الأمر دائماً
ايش؟ فاصلة منقوطة بتحط فيهم قيمة آه لأ كل واحدة
لحاجة هذا حط فيه ايش خمسة ال Y ايش فيها لحد الآن
ولا حاجة مش معرفة ما بيقول عنها تمام هذا حط فيها
أربعة تمام هذا حط فيها ثلاث ثلاثة ممكن اللي أنا
كتبته يكتب على أكثر من سطر ماشي يا جماعة هي هي لو
أنا كتبت
Integer X يساوي 5 Integer Y يساوي 4 و هكذا تمام بس
احنا اختصرنا و حطينا التعريفات كلها في سطر واحد
واضحة
هذه يا جماعة طيب تعالوا الآن نمر بشكل سريع على
الكلام الموجود في ال slide طبعاً الكلام اللي حكيته
في ال slide أو في الشرح هذا بلخص اللي موجود في ال
slide variables متغيرات variables store data such
as numbers and letters بره ثاني هذا مش حفظ يا
جماعة احنا شغلنا وين coding تمام
Variable store data بتخزن ايش؟ بتخزن بيانات Think
of them as places to store data فكر فيهم كإيش؟
كأماكن لتخزين البيانات They are implemented as
memory locations يعني ضمنياً هم كيف يتم تطبيقهم
عبارة عن أماكن في الذاكرة بس أنا طبعاً ما بشوفش
الذاكرة لأن أنا ايش أنا بشغل high level language
The data stored by a variable is called its value
معنى الجملة هذه القيمة البيانات المخزنة في المتغير
نسميها value ايش كلمة value؟ قيمة طبعاً هو لسه
variable ايش كلمة متغيرة؟ بتقدر تغير القيمة يعني
مثلاً يا جماعة هذا بنجربه هنا لو أنا عندي integer X
حتى الآن الـ X مافيها حاجة صح؟ بعدين قلت له X يساوي
ثلاثة صرت في الـ X إيش؟ ثلاثة بعدين بعده حطيت سطر
جديد X يساوي سبعة بنفع
ولا بينفع عشان أعمل هيك أوي الحاجة؟ بينفع عشان، لأ
بينفع أعمل هيك تمام؟ مافيش حاجة بتمنعني طلعوا يا
جماعة هنا معايا الفاصل
بيننا أنه بنفع و بنفعش إيش الـ compiler صحها لأ
ثمانية ثمانية هات جبت integer X و حطيت في الـ X
ثلاثة في غلط في شغلة هذا لأ لأ و روحت للـ X يساوي
سبعة
مين اللي قال .. في واحد حكى أنه ما أنت قولت بنفعش،
بنفعش إيش؟ نفس المتغير مرتين اه اسمه يقول بنفعش
نفس المتغير مرتين اللي حكيته بنفعش تعرف نفس
المتغير مرتين أنا المتغير كم مرة عرفته؟ مرة واحدة،
تمام؟ اللي بنفعش هذولوا أنت جيت هنا و قلت له
integer X هذا بنفعش هيطلع الـ error التعريف بنفعش
يتكرر لكن المتغير نفسه بقدر في أي وقت أجي و أحط
فيه قيمة طب الآن السؤال قيمة الـ X ماذا ستكون ثلاثة
ولا سبعة ولا عشرة مثلا و واحد يتخيل إيش أنه
يضيفهم مع بعض ثلاثة
ولا سبعة ولا عشرة مين يزود مين يقول غير هيك آخر
قيمة تمام مش هو احنا قولنا ببدأ بالترتيب أنشأ الـ X
و حط فيها ثلاثة و بعدين يقولوا حط فيها سبعة عشان
إذا احنا بنسميه variable متغير حطيت فيه قيمة جديدة
بياخد القيمة الجديدة طبعا كيف هنتأكد أنه يعني احنا
لسه ماخدناش أمر الطباعة تمام المرة المحاضرة اللي
جاي هنسينا نطبع الـ X عشان نشوف أو احنا هجيت بس
عشان .. ع السرية أنا بده أكتبه والمرة اللي جاي
هشرحه تمام هذا يا جماعة عبارة عن أمر الطباعة
هذا الأمر هنتكلم عليه المرة اللي جاي بتطبع قيمة
مين اتطبع قيمة X الآن لو أنا اجيت أعمل run شايفين
السهم هذا اللي بالأخضر هذا اللي بيعمل run واحنا
بيقولوا طب أنت ما عملتش compile مش أنت حاكيتنا أن
أي برنامج Java لازم في الأول تعمله compile بعدين
run الـ compile هو automatic بيعملها تمام مدام مش
ضوء أحمر معناه الـ compile ماله تمت العملية بنجاح
تعال أنا أعمل run تمام و هنا تحتهذا يجب أن نكبر
خط الميزة الميزة
الميزة الميزة الميزة الميزة الميزة الميزة الميزة
الميزة الميزة الم
Variables and values فهمنا إيش الفرق بين variable
و value الـ variable المتغير نفسه الـ value القيمة
اللي بحطها فيه طيب
هذه كلها أسماء variables إيش أول واحد يسميه number
of baskets لاحظ هذا نفس النمط اللي حكيتلكوا عليه
مكوّن من أكثر من كلمة رابطهم في بعض وخلّه أول حرف
في كل كلمة كابتل ما عدا مين؟ أول واحد حطيته كله
كابتل ما بيفرجش مش هيقولك غلط بس هذه بيسميها حاجات
المتعارف عليها في التسمي، تمام؟ هذا إيش ما؟ apples
per basket يعني قداش عدد التفاح في كل سلة مثلا
total apples، العدد الكلي للتفاح assigning values
يعني
كيف تعطي قيم للمتغير ببساطة عشان نعطي قيم للمتغير
يساوي apples per basket يساوي ستة يعني أنا حطيت
ستة في apple per basket المتغير الآن هذا صار في
قيمة ستة naming and declaring variables و تعريف
المتغيرات declare variable إيش معناها مش مقرف
الامتحان يقول لي إيش دكتور الكلمة دي declare
declaring variable يعني إعلان أو تصريح أو تعريف
المتغير التعريف عن المتغير تمام choose names that
are helpful such as إيش أن helpful أسماء مساعدة أو
مفيدة يعني بالبلد تقرأها تفهم إيش معناها زي count
Speed ماذا يعني Speed؟ سرعة لكن ليس C و S ليس غلط
لو استخدمت C و S و X و Y و W تمام؟ لكن بكرا مش
هتفهم لو كتر المتغيرات عندك مش هتفهم معانيهم تمام؟
when you declare a variable you provide its name
and type لما تعرف متغير لازم بتقاش تعطي الاسم و
النوع تمام؟ زي المثال هذا Int
هذا معرف كم متغير؟ أكثر من واحد عشان هيك أنا
بفرجيك عمل إيه أنا لو فرجيتك هذا من أول كانت مخبطة
صح ولا؟ تمام؟ هنا معرف كم متغير؟ اثنين Int الاثنين
نوعهم integer الأول اسمه number of baskets الثاني
اسمه apples per baskets وكله ممكن تعرف كل واحد في
سطر صح ولا يا جماعة تكتب Int number of baskets
فاصلة منقوطة Int apples per baskets فاصلة منقوطة
تمام؟
A variable's type determines what kinds of values
it can hold نوع المتغير بيحدد نوع البيانات اللي
ممكن تنحط فيه بنفعش يا جماعة احنا نعرف متغير نوعه
integer ونحط فيه نص هذا بيطللي خطأ الـ compiler
نفسه بيقبلوش طب وهنجرب حاجات زي هي a variable
must be declared before it is used إيش معنى الجملة
هذه available must .. إيش هنا must؟ لازم must be
declared لازم يتعرف قبل ما يستخدم جربناه ولا ما
جربناهاش شوفت لما إجينا على الـ X حطينا فيها ثلاثة
وبعدين قولنا integer X طلع لي خطأ لأنه أنا استخدمت
الـ X قبل معرفة فهو لخبر ما فهمش عرف بعدين استخدم
syntax
and examples هذا الصيغة العامة للتعريف الـ type
مسافة اسم المتغير مش هيك الصيغة العامة الكتابة
بتقوليها هنا ممكن تحط متغيرات ثانية طبعا يعني أنا
ممكن أعرف أكثر من متغير مع بعض و تحط بينهم إيش فاصلة
وفي الآخر إيه نقطة دي يعني حط أي أسماء متغيرات جديدة
ما بدي وفي الآخر حط إيش سيمي كولا هذا الصيغة
العامة مثل int style choice فاصلة number of chicks
وهنا إيش حط فاصلة منقوطة معناه السطر هذا إيش
وظيفته بعرف متغيرين من نوع int الآن بدأ سطر جديد
ليش بدأ سطر جديد؟ لأن هذا نوع مختلف عن .. واحد
بيقول بينفع أحط double و integer في نفس السطر؟ لأ،
هذه الطريقة اللي فيها فاصلة لما بتعرف متغيرات من
نفس النوع الآن إيجى بده يعرف متغيرات من أنواع
جديدة اللي هي double تمام؟ هاي كتب double مسافة
balance فاصلة interest rate وبعد في الآخر فاصلة
منقوطة متغير .. هنحكي احنا على الـ double و الـ car
لسه ما تكلمناش عنهم car هذا للـ character الحرف
تمام؟ car joint or individual بعدين فاصلة منقوطة
هذا أمثل على تعريف المتغيرات
طيب تمام خلاص احنا ننهي المحاضرة هذه والمرة
الجاية هنكمل في موضوع الـ data files