طب بسم الله الرحمن الرحيم احنا
المحاضرة الماضية يا جماعة بدأنا في .. في موضوع ال
F statement تمام؟ أخدنا مقدم عليه وقلنا ان فايدة
ال F انها تغير ال control بتاع التطبيق ال flow of
control اشان ال flow of control مسار مجلة التحكم
في التطبيق بناء على شرط بحيث اذا اتحقق الشرط بتنفذ
ال code اللي موجود جوا ال F وشوفنا ان في عندنا if
elseإن لو تحقق الشرط نفذ لو ما تحققش نفذ شيء آخر
وقلنا إن ال else optional صح ما لا يعني ممكن تحطها
ممكن ممكن لأ الان ك review لموضوع ال statement في
البداية اللي أخدناها الجزء اللي أخدناها بدا ناخد
بس تمريم بسيطنحط المحاضرة الماضى في ال slide اللى
هو حساب الربح الشهري لرصيد فى البنك طبعا الان فى
عندى رصيد فى البنك بدي أشوف قداش الربح الشهري تبقى
فلقيت الربح الشهري اش اللى بيصير فيه انه بيشوف
قداش نسبة الربح السنوي البنك مثلا بحدد الربح
السنوي 2% 2% طبعا يعني بجيب قداش يعني كل شهريا او
سنوياهو ينضعف 2% من الرصيد مثلا اذا واحد رصيده 100
اخر
السنة 2 من 100 يعني 2$ يعني تنضعف على 100 هذا
الربح السنوي اذا جيت الربح الشهري ايش بيكون ال 2$
هذي تقسيم 12لأن هذا الرصيد لو كان بالموجب .. لأن
لو كان الرصيد بالسالب .. قلنا ممكن يكون الرصيد
بالسالب في بعض الحالات لما أنت تسحب من أقل من
الصفر .. بيصير أنت مديون للبنك .. إذا كان مديون لأ
.. إيش بعمل؟ بروح بنجسلك أكتر من حسابك .. لأن انت
ما .. معناه أنك تخليه مديون معناه أنك ماسددتش
الدين عليك فبتلاقي بعمل عليك penalty .. إيش يعني
penalty؟ أه .. لأ عقوبة .. جزاء .. تمام؟طيب فبنعمل
تطبيق البرنامج ببساطة هيطلب منك تدخل مبلغ الحساب
تمام؟ وإيش بيطلعلك؟ كده المبلغ بيصير بعد إضافة
الربح أو بعد خصم ال penalty لو كان الرصيد بالسالم
يعني الآن قبل ما نكتب نفكر إيش البرنامج هيعمل؟ أول
حاجة هيطلب منك تدخل مبلغ الحسابتمام؟ هذه أول خطوة
طب بعدين بعد ما ادخل مبلغ الحساب ايش الخطوة
التانية؟ من يقول ليه؟ ايوة مرة لو كان موجب و مرة
لو كان سالب بالظبط لازم تعمل F ماشي؟ لأن انت الآن
في طرق تانية للتنفيذ اذا كان موجب بتضيف عليه ربح
اذا كان سالبهو يريد أن ينقص منه و بعد ذلك اطبع له
ال balance النهائي واضح يا جماعة لازم تفكر لان
وانت بتفكر في التطبيق كيف هتعمله وانت اذا بتقول
إذا كلمة إذا على طول بتترجم لإيش يا جماعة ل F إذا
كان كذا سوي كذا إذا كان حاجة تانية اعمل حاجة تانية
هذه بتترجم ل F فلان عشان نحل التطبيق هدهي scanner
S يسوي new scanner ليش بعمل scanner يا جماعة انا
عشان ادخل ال balance system.inونقول double هاي
balance بدنا نقرأ الآن أو قبل ما ندخل ال balance
بدنا نقول له system.out.println enter
your balance لما
ندخل ال balance بنروح لل scannerونقول له next
double تمام؟ next double عشان تقرأ أنت من ال
keyboard double و النتيجة حطناها في double لما
نفحص ال balance إيش الشرط هو؟ إيش الشرط اللي عمل
فيه؟ إذا كان أكبر من أو يساوي صفر، كذا غير هيك،
سوي حاجة تانية ف if balance
أكبر من أو يساوي صفر
لأن صفر واحد بيقول لو كان صفر ايش هيصير زي ما هو
بيبقى زي ما هو تمام؟ بس انت مش هتحط علي عقوبة لو
كان صفر صح ولا لا؟ العقوبة امتى لو كان بالسنة فإذا
كان balance أكبر من أو يسوى الصفر بدنا نسوح يعني
روحت أنا فتحت جثين زيه ليش؟ عشان أحط ال code تبع
ال F حكينا احنا في الجثير المحاضر الماضي صح؟ قلنا
لو كانت عندك ال F أول حاجة يفضل دايما انك تحط جثين
طبعا؟ حتى لو جملة واحدة يفضل ان تضع قوسين تصبح
اوضح معروف ان ما بين القوسين هدولة هذا تابع لل F
لان ممكن انت ماتضعش القوسين هدولة لو في حالة واحدة
ايش هي؟ لو كان جملة واحدة على طول بفهم ال compiler
ان مافيش قوسين يبقى فقط الجملة التالية لل F مباشرة
هي تابع لل F لكن اللي بعدها لأ مش تابع لل F واضح
يا جماعة؟ طيبالأن إيش اللي بدي أسويه أنا جوا ال F؟
أنا حكيت إنه لو كان ال balance موجب، فيه فلوس
يعني، بدنا نضيف له نسبة ربح، اللي هي قداش مثلا،
طبعا نتفق على نسبة مثلا، نيجي فوق هنا، نعرف متغير،
نقول مثلا double interest rate، إيش أنا interest
rate؟ نسبة الربح، اللي هي قداش حطيتهاعرفتها متغير
عرفته فوق سميته interest rate قيمته point zero
اتنين اللي هي قدش يعني اتنين من مية تمام؟ وبدنا
نحدد كمان قيمة ال penalty ايش هي ال penalty؟ لأ مش
دريبة جزاء عقوبة تمام؟ double penalty نقول
مثلا اللي رصيده بالسلببتكون عليه جزاء قداش؟ عشر
دولار مثلا يعني هذا مبلغ ثابت كجزاء لأن حسابه
بالسالب لأن نقصه كمان عشرة هذول أنا عرفتهم
كمتغيرات فوق إذا نجي نعمل الحسب بتاعتنا إيش اتفقنا
إحنا أنه لو كان الرصيد صفر أو أكتر بدنا نعطيله 2%
ربح من ال balance طيب أول حاجة بدنا نحسب الربحطبعا
كيف حساب الربح balance انتبهوا يا جماعة ضرب اللي
هي إيش ال interest rate صح ولا يا جماعة interest
rate مش هيك أنا بحسب الربح قداشة قولنا 2% من مين
من ال balance طبعا فضربت ال balance في مينفي ال
interest rate هذا الربح السنوي مثلا رصيده كان فيه
100 شكل ربحه السنوي قد يكون ال balance ضارب ال
interest rate 2
في 100 من 100 من 100 بطلع 2 طبعا هذه غلط ليش غلط
مش حافظينها في متغير فبتعمل هنا double نسميه مثلا
profit ايش يعني profit الربحالمبلغ السنوي هذا
المبلغ هذا الربح السنوي انا بدي احسب المبلغ جدش
بيصير كل شهر فهذا بدي اقسمه على مين على ال 12 الان
هل بتفرج نحط جسين ولا لأ لأ كرياضياتعادي .. هو
اصلا by default الدرب هيسبق القسمة صح ولا لأ و لو
قسمة عملت قبل برضه مش فارقة كعملية درب و قسمة مش
فارقة فهذا هو الربح الشهري عشان ذلك ايش بدي اسمه
monthly profit الربح
الشهري ايش
الخطوة التالية؟لأ مانطبعش هل هذا .. هذا انا حسبت
الربح الشهري مفروض هذا الربح الشهري ينضعف ع مين؟
ركزوا معايا شباب تمام؟ احنا قاعدين بنقول ان الربح
لو كان صفر او اكتر بدنا نضيف عليه نسبة ربح احنا
هنا في السطر هذا حسبنا نسبة الربح تمام؟ هل ضفناها
على ال balance؟ لأ رصيد الشخص ماتأثرش تمام؟ كيف
بدي اعدل ال balance؟ بدي اقوله balanceزائد يساوي
monthly profit
صح هذا او لا يا جماعة هذا ايش معناه السطر balance
يساوي balance زائد كذا يعني انا قاعد بضيف عمين على
ال balance لو عملت هيك صح غلط خربت الدنياهك انت
طيرت ال balance كله و حطيت بس S نسبة الربع فانا
اشبل اذا بدي اضيف ال monthly profit على مين؟ على
ال balance مش بدي استبدل ال balance حد
فاهم حاجة يا جماعة؟ تلاحظ انه انا قاعد بضيع وجد في
ايش؟ في شرح حاجة المفروض ان احنا نكون عارفينها صح
ولا؟ هذا كله مش الجديد اللي انا بشرحه الجديد بس
مين؟ ال F صح ولا يا جماعة؟طب هيك ال balance اتعدل
انتبهوا معايا الان بدي اشوف لو ال balance كان اقل
من 0 تمام بنحط على طول إيش هنا else و بنفتح بعدها
cos طيب
إيش معنى else؟ else معناها إيش أنه لو ماتحققش
الشرط اللي فوق نفذ التالي إيش البديل الآن else؟
ماذا يعني؟ اول حاجة ماذا يعني كلمة else؟ معناها
الرصيد اقل من صفر ايش هنعمل؟ لأ لأ مش هيكون ال
profit أصلا بنا نعمله عقوبة بنا نجس منه مبلغ مين
ال penalty هذه تمام؟ فبنقوله balance ناجس يساوي
penalty واحد بيقول هو كم بناجس؟ هينجس بزيادة بيصير
مديون اكتر اه بيزيد عليك الدين اكتر
واضح يا جماعة؟ الان بعد ما اخلص كل حاجة System.out
.println طبعه بدي اقول له your new balance يساوي
نطبعله ال balance
your new balance يساوي نطلع ال balance الان تعالى
نجرب هذا الكلام الان
انتر your balance مثلا رصيدي ألفyour new balance
جديش 1000.666 من أين جاءت ال 1.6 تمام هو ايش عمل
جاب أول حاجة نسبة الربح اللي هي جديش 2% 2% من ال
1000 يعني 20 صح ولا قسمها على 12 طلع 1.6 وضعفها
على ال balance طلع 1000 و 1 يعني كل شهر بيزيد
الرصيد تبعك دولار أو شيكل و نص و 6 من العشرةالان
واحد و واحد مديون ناقص تلاتمية تمام؟ قداش صار ال
balance ناقص تلاتمية و عشر خلاص
انتوا بعد المحاضرة هذه بصيرت برمج وبنوك مش هيك
البنوك شغالة؟ هيك شغالة كلها طيب تعالوا نتعلم دروس
مهمة من التطبيق هذاشوف و اتعلم اول ملاحظة اللي
بنقولها لاحظ انه انا عرفت المتغيرات فوق و استخدمت
هدول المتغيرات في المعادلات وين ممكن ييجي طالب
الآن يقول لي طب بدل ان انت تعرف interest rate فوق
مش كان ممكن تكتب هنا على طول point 02 بمشي الحال
ولا بمشيش بمشي الحال صح ولا يا جماعةعلى طول بنحط
القيمة تحت و بنحسب طب ليش غلبنا حقنا و عملنا متغير
فوق و ضفد سطر جديد؟ ايش رايكم؟ مين افضل؟ نكتب
القيمة على طول ولا نعرف متغير فوق؟ليش؟ عشان أنا
عملت هيك لأ لأ لأ لأ لأ لأ لأ لأ لأ
لأ لأ لأ لأ لأ لأ لأ لأ لأ لأ لأ لأ لأ لأ لأ لأ لأ
لأ لأ لأ لأ لأ لأ لأ لأ لأ لأ لأ لأ
أيوة بالظبط افرض انت هذا المتغير مستخدمه في أكتر
من سطر تمام؟ بدك تروح تغير في واحدة واحدة؟ لأ، غير
فوضت، بتغير كل حسبة المعادلات صح ولا يا جماعة؟
فدائما انت لما تكون معتمد على ثوابت، تمام؟ في
التطبيق تبعك، نسبة ربح، نسبة عمولة، تمام؟ دائما
هذه بتعرفها إيش؟ متغيرات، الآن أنا بدي أغير ..
البنك قرر يغير نسبة الربحعلى طول بغير القيمة اللى
فوق بغير الحس بتاعة المعادلة اللى هتقولها صح و لا
يا جماعة هذه أول درس اللى اتعلمه هنا النقطة
التانية طالع هنا أنا هذا عملته ع سطرين كان ممكن
نعمله ع سطر كان ممكن نعمله ع سطر ممكن نقوله
balance زائد يساوي balance ضرب interest rate على
12بمشي هذا ولا بمشي إيش؟ يعني أنا الآن .. أنا
الفكرة أنه أنا حسبت ال monthly profit فوق في سطر و
بعدين ضفتها على ال balance كم ممكن نعملها في إيش؟
في سطر واحد، إيش هي أنه ال balance زائد .. أه ..
هذي .. أه .. ضيف عليه جداش ال balance ضرب ال
interest rate على 12 يعني هيحسب على اليمين و يضيفه
أين؟ يضيفه على الشمال و ممكن تستغنى عن سطرواضح هذه
ولا لا يا جماعة؟ بس انا بقول انا بفضل ايش انك
تعملها على سطرية بتكون مفهومة اكتر بالنسبالك صح؟
احسب الربح في الأول شهري و بعدين روح ضيفه على ال
balance واضح هذه النقطة ولا لا؟ تمام؟ الان هل بنفع
اشيل الجثين هدول يا جماعة؟ تعالوا لل F تمام؟
صار في خطأ
صار في خطأ ليش أول حاجة ال else بقولي أنا بطلت
أفهم أو جالي إيش هيحطلي عليها else without if طب
ليش قال أه خارجها بقولي ال compiler عاجله و ع جده
بقول أنا فهمت أنه في f و بعدها سطر يبقى السطر هذا
تابع لمين لل if هذا التاني ماله مش تابع لل if يبقى
خلاص انتهت ال if إيجي else جالك أنا والله في عندي
else بدون .. بدون ifلكن انت لازم تحط القوسين لان
القوسين هدولة تنفيظهم معتمد على ال F لو حطينا فوق
ماحطيناش تحت هذا كيف؟ لو حطينا فوق أقواص تحت هذا
اه تحت انت مش .. اه ممكن تستغنى القوس اللي تحت هذا
طبعا ليش؟ لأنه في سطر واحد تابع للإذن بس أنا بقول
دايما بفضل يكون في أقواص واضح يا جماعة؟ النقطة
التالتة هي نقطة مهمة
شايفين انا انا حطيت system.r.println بعد ال F تحت
ليش حطيتها تحت ماحطيتها جوا اه انا فك .. الان انت
بدك تفكر تمام هل تحط ال code جوا ال F ولا برا اذا
حطيته جوا ال F هتكون ال code مقيد في الشرقلكن انا
عارف ان في كل الأحوال انا بدي اطبع ال balance سواء
ان اتحقق الشرط الأول او التاني مش بدك تطبع ال
balance في الآخر فعشان هي الشرط طبعة ال balance
حطيته برا كان ممكن اعمل زيكي يا جماعة تاخد السطر
هذا تحطه هنا وتحطه كمان تكررهفي ال else نفس الشيء
نفس الحاجة بس انت عندك تكرار هنا احنا في الأكواد
يا جماعة بنحاول انه .. اه بالظبط مايكونش فيه تكرار
يعني هذا الآن الصيغة المكتوبة هنا صحإن لو كان ال
balance أكبر من صفر احسب و اطبع و لو كان أقل اعمل
عليه penalty و اطبع مافيش مشكلة بس ملاحظ انت ان
هذا السطر هو نفسه بتنفذ سواء اتحقق الشرط او
مااتحققش فليش انت تحطه في ال F حصل مدام هو هيك هيك
هيتنفذ طلعه برا ال F واضح؟ هذه ملاحظات جماعة مهمة
فالحل هيك افضل ماشي يا جماعة هذا ايضا درس لنتعلمه
انه لما يكون فيه code دايما بتنفذ حطه برا ال F
واضح يا جماعة طب نيجي على درس تالت اتطلع معايا هنا
لو انا اجيت في السطر الأخير بدي اقول له system.out
.println
monthly profit ايش
انا جاعت بحاول اطبع المتغير اسمه monthly profit مش
انا روحت هنا حسبت ال monthly profit تمام اجيت بده
اطبعه جالي error ايش ال error الموجود حط الماوس
عليه بيقول لي cannot find symbol امتى هذا بيكون ال
cannot find symbol لما انت تروح تستخدم مش معرف
اعتبره مش معرف طب هي معرف احنا معرفينه طب إيش
بتستنتج من الحاجة هذه؟
هذا بنستفيد منها أن أي حاجة معرفة جوا ال F برا ال
F بتعرفش عليها واضحة النقطة هذه ولا لا يا جماعة؟
هيها هذا المتغير معرف وين يا جماعة؟ جوا ال F إجيت
أستخدمه برا ال F بقول بقى بينفعشلحظة لحظة تمام و
هذا منطقي ليش منطقي لأنه أصلا كان ممكن هذا السطر
كله مايتنفذش صح ولا يا جماعة مش كان ممكن مايتنفذش
مش هيكون أصلا فيه متغير اسمه monthly profit فعشان
هيك هو بقيد بقولك أنت بدك تستخدم أي متغير تمام برا
ال F بديكون معرف برا ال Fواضحة دي لجماعة الفكرة؟
طبعا ال balance بقدر أطبعه ليش بقدر أطبع ال
balance؟ لأنه معرف برا ال penalty بقدر أطبعه لأنه
برضه معرف برا لكن لو نجلت عليه في ال penalty جوا
ال F مش هيتعرف عليه تمام؟ فهذا الاستنتاج المهم أن
أي متغيرة معرفة جوا ال Fمش هيلاجية واللي قاله
زميلكو لو معرفة جوا ال F و ال L برضه مش هيلاجية
طبعا اكيد
طبعا زميلكو بيقول لو انا عملت الطباعة جوا ال F
طبعا لأ جوا ال F مش هو اتعرف هنا طبعا هنا لو اجت
طبعته مش هيكون فيه مشكلةصح؟ لأنك بتعرف يعني انت
بتطبع عرفته هنا و طبعته هنا بمش الحال لكن اتعرف
جوا ال F و تطبعه برا بظبطش طيب
العكس اي حاجة معرفة برا ال F بشوفها جوا ال F بدليل
بدليل ان ال balance one معرف برا ال penalty one
معرف برا و ال interest برا وقدرت أوصلهم من جوا ال
Fصح؟ يعني أنت دائما أقوى حاجة المعرف برا بشوفه من
كل مكان لكن الحاجة المعرفة جوا ال block بنسميها
block ال F هذا من هنا هنا هذا ال block بتاع مين؟
بتاع ال F الجزء الخاص بال F يعني أي حاجة معرفة جوا
بشوفها من جوا هذا ال month profit للاستخدام داخل
ال F برا ال F بشوفهاش طب واحد بيقول طب أنا كيف بدي
أخلي ال month profit أني أشوفها من أي مكان؟ عرفها
براخُد التعريف هذا هنا و حُط month profit برا زي
هيك طبعا هالجيط طلعلك قرار ليش؟ شوف كيف احنا لما
نجرب عمل يقعدين نتعلم تمام ال month profit معرفه
فاره و معرفه جوا و يقولوا بانفعش المتغير تعرفهمرة
تانية خلاص انت مدام عرفته برا شيل التعريف من وين
من هنا بس اتعرف برا و قيمته لسه مش محددة بس انا
حطتله قيمة وين جوا ال F لأ ولا عمرنا قولنا هيك
احنا احنا قولنا الحاجة مابتتعرفش الا مرة واحدة فقط
تمام ممكن تعمل assignment عليه تاني تماميعني ممكن
تعمل زي هيك تمام انت تعمل integer X و تحط X يساوي
خمسة هذا صح و تحط تاني X عشرةهذا صحيح انت لم تقوم
بتعرف فيه فرق بين انك تعمل declaration و
initialization انت هنا عادة تعيين للقيمة بتعرفش
لكن هذا صح مافيش فيه مشكلة اغير قيمة ال F ماليوم
مرة لن أقولك شيء لكن وانا الغلط انك تجي تقول
integer X و تجي في سطر تاني بعده integer X هذا غلط
انت بتعرف مرة تانية
واضح هذا يا جماعة؟ يبقى الخلاصة الآن اللي احنا
استفدناها من الموضوع هذا اول حاجة لما يكون عندك في
برنامج قيم انت بتتعامل معاها باستمرار و بتتكررها
كتير حاول تعرفها دايما كمتغيرة هذا برايحة كتير اول
حاجة بيصير ال code مفهوم اكتر هذه انا شايف point
02 لو محطوطة في المعادلة point 02 اشي فاهمك ان هذه
عبارة عن نسبة ربح والحاجة التانية لو مستخدمة في
اكتر من مكانبتقدرش كل مكان مظاهرة فيه تروح تغيرها
لأ غير فوق بغير في كل المعادلات تمام الحاجة
التانية يفضل code ال F ل block ال F و ال L تحطهم
ما بين أقواص حتى لو كان سطر واحد الحاجة التالتة أي
حاجة معرفة جوا ال F statement تستخدمها فقط جوا ال
F statement برا بيشوفهاشلكن أي حاجة معرفة برا ال F
في ال main بتشوفها جوا ال F في أي مكان تاني واضح
هذه ولا لا يا جماعة تمام النقطة الأخيرة ان انت لو
في عندك code في كل الأحوال بتنفذ سواء كان F هيتنفذ
او L هيتنفذلا يوجد داعي تضعه في الـF وفي الـL خلاص
انت لاحظت ان السطر هذا موجود في الـF و الـL اصلا
ايش معنى انه موجود في الـF و الـL انه في كل
الأحوال هيتم تنفيذه لأ اذا لاحظت ان في كود في كل
الأحوال بتتم تنفيذه طلعه برا الـF و الـL زي هنا زي
مين؟ زي كود الطباعة بتاع الـsystem.out واضح هادي
يا جماعة؟
يعني الآن أخر نقطة ال month profit هذه الآن صارت
معرفة وين؟ برا في ال main هيا وين أنا عملت لها
initialize؟ جوا ال F الآن اجت هذا برضه عشان نتعلم
اشي جديد منها لو اجت اجت طبعة monthly profit
تمام؟ المفروض يطلعها عادي فش مشكلة ليش؟ لان اتعرف
بس ليش طلعلي أحمر؟ مين ذكي؟ لأ لأ طب ليش؟ ما هي
أنا جوا ال F عطتها قيمة اه
لأن انا عطيتها قيمة .. اعطيتها قيمة وين يا جماعة؟
جوا ال F طب هل مضمون ال F تتنفس دايما؟ لأ انا لما
أنشأته ماعطتهاش قيمةقيمتها تتغير جوا ال F لكن ال F
ما لها مش مضمونة فالان اه فعشان هيك ايجي ابو جولي
انت قاعد بتطبع متغير مش مضمون يكون له قيمة فالافضل
في حالات زي هيك انك تيجي هنا وتعطيه قيمة مبدئية و
التكن صفر عشان نسكت مينالـ Error هذا اللي طلع،
يعني هو الـ Error ليش طلع؟ إنه أنا عرفته بتغير ما
أعطتهوش قيمة، و دي أتأطبع، واحد بيقول طب ما هي جوا
ال F عطيته قيمة، صحيح، بس ال F مش مضمون تنفيذها،
لإن أنا ما اعتمد على شرط، فعشان ايه اتطلع ليه؟
الخطأ، كيف؟ لأ، مين جالس يتبع الصفر؟ باعتمد على
إيش؟ على ال balance، هي ال month profit بدأك
بالصفربدأت بـ 0 الان قيمتها ممكن تتغير اذا كان ال
balance ألف او مية هتتغير ال month profit، صح؟
يعني هاي المثال هنا هاي
ال balance ألف وهذه قيمة مين؟ هد ال month profit،
ماكانت صفر، ليش؟ لأنها تغيرت، مش دخل على ال F لكن
لو ..المشكلة وين يا جماعة؟ لو كان ناقص مين؟ اه هنا
ضالت صفر تمام؟ بس انت في كل الأحوال لما تعرف
المتغير برا ال F حاول تعطاه قيمة لإن إعطاءه قيمة
جوا ال F مش مضمون ممكن يحصل ممكن لأ واضحة هذه
الفكرة يا جماعة؟ تمام؟
طيب، نرجع شوية على ال slide
الان كل اللي احنا شرحناه المحاضرة هذه هو مين
المثال هذا الموجود في ال slide صح بس احنا حلناه
كمثال كاملواضح يا جماعة؟ بس طبعا فرق كبير من أن
أشرحلكيها على slide و أشرحلكيها عاملة شوف احنا لما
شرحناها عاملة اتعلمنا ايش؟ اتعلمنا حاجات كتير مش
هتبين معانا اللي لما نكتب ال code طيب الآن هذا
باختصار انه رسملك مسار البرنامج ك flow chart هذا
ايش بنسميه رسمات؟ flow chart هذا الرسمات هذه
بنسميها flowchart chart معناها مخطط flow مخطط مثل
المسار مخطط المسار أو جريانت على البندمج فببلغ
start تمام و بعدين ايش هذه الجملة evaluate balance
اكبر من او يساوي بفحص ال balance يعني فالان اكيد
في عندى نتيجة هادى true او false اذا كانت true روح
عمل المعادلة هادى ايش هي المعادلة هادى balance
يساوي balance زائدهذا الكلام ماتحققش balance يسوي
balance ناقص over flown over drawn penalty نفس
اللي عملناها تقريبا صح ولا يا جماعة هنا بتزيد عليه
interest و هناك بنجس منه قيمة جزائية واضح
هذا بس output بتاع البرنامج بيجربلك إياه هذا بشكل
عام ال F لما يكون عندك F بين قصين بيكون Boolean
expression إيش هي كلمة Boolean expression حاجة
بترجع true أو false لإن هي statement واحد قلص
statement اتنين وهي بشكل عام هي ال Boolean
expression بتودك يا إما على statement واحد يا إما
على statement اتنين بشكل عامطيب الآن هو بده يفصل
شوية بالحاجة الموجودة جوا ال F اللي هي بابين
الأقواس أو ال boolean expression ال boolean
expression عبارة عن يا جماعة أي عبارة بترجع true
أو false زي
ايش مثلا boolean expressions الان يا جماعة كل
الرموز هذه اللي انتوا شايفينها بستخدمها لل boolean
expressions في
لغتنا احنااليساوي في لغة البرمجة لا تتمثل بيساوي
واحدة تتمثل اتنين يساوي في البرمجة اليساوي الواحدة
لها معنى مختلف خالص ايش هي assignment خد من اليمين
و حط على الشمال هذه معنى اليساوي في البرمجة لكن
الاتنين يساوي هذا المساواة تمام؟ لا يساوي
هذه احنا بنكتبها زي هيك صح؟ لكن في البرمجة بتنكتب
تعجب و يساوي طبعا هنا أمثلة على الكلام هذا مثلا
هنا balance يساوي يساوي صفر لأن هذه balance يساوي
يساوي صفر هترجع يا إما true يا إما false حسب قيمة
مين ال balance answer يساوي يساوي y هذا y
character إذا كانت قيمة ال answerنفس القيمة هذه
برجع true غير هيك برجع false هلقيت هنجرب بعض
الأمثل على هذه not equal عدم المستوى تمثل بإيش يا
جماعة علامة تعجب و يساوي اه بس هذا بدك تفهمها
هلقيت income لا يساوي tax قولنا هذه boolean
expression بدها ترجع true او false انت هترجع true
إذا فعلا ال income لا يساوي ال tax بترجح ال true
عكس اللي فوق يعني هذه نتيجتها العبارة ال true
أمتى؟ لما يكون لا يساوي بعض لكن لو كانوا يساوي بعض
إيش هترجح؟ هترجح false واضح؟ عكس من اللي يساوي هذه
بترجح ال true لما يكونوا مالهم لا يساوي بعض إذا ال
answer لا يساوي yes بترجح هذه trueواضح ولا لا يا
جماعة؟ يعني معناها إنه لو حطيتها دي جوا F إيش
معناها؟ إنه بتنفذ كود ال F فقط إذا كان ال income
لو يسوى ال tax و لو حطيتها دي جوا F هيتنفذ ال code
فقط إذا كان ال answer مش Y مش Yes معينة ولا لا يا
جماعة؟ طيب اللي بعدها دولة سهلين أكبر من هي نفسهاو
نفس الحاجة إذا كان ال expenses أكبر من ال income
عشان expenses مصرفات أكبر من ال income برجع true
أكبر من أو يساوي طبعا احنا بنكتبها بلغتنا زي هيك
بس في البرمجة بتنكتب أكبر من و بعدها بيجي يساوي
أصغر من زي هيك و أصغر من أو يساوي زي هذه الآن
تعالى نشوف شوية أمثل على الكلام هذا
الان خلاص المثال هذا خلصناه الان
لو انا عند انتجر x يساوي خمسة و y ستة و قلت له
system.out.println اطبع لي x يساوي يساوي y شايفين
ايش حطيت انا بين القوسين x يساوي يساوي y ايش هاد
هاتطبعأحنا اتفجنا أن أي إشارة من الإشارات اللي
حكيتها اللي هي يساوي يساوي أو أكبر من أو أصغر من
أو أكبر من أو يساوي أو أصغر من أو يساوي أو لا
يساوي كلها نتيجتها true أو false لأن X يساوي يساوي
Y هذي هيقيمها هيشوف فعلا هل ال X تساوي Y ولا لا
وهيطبع للنتيجة هي لا تساوي فالمفروض أنها تطبع
false تعالي اطبع هيطبع ليه false
X أصغر من أو يساوي Y صح ولا غلط هذه؟ صح ال X
قيمتها 5 و Y 6 فعلا X أصغر من Y هذه الطبعة ليه؟
true X لا تساوي Y صح ولا غلط؟ true فعلا X لا تساوي
Y هذه
الطبعة ليه true؟واضح يا جماعة دائما نتيجة هذا ال
.. ال .. ال .. ال .. الـ Boolean expression يا إما
true يا إما false تمام؟ و اللي بده ينكتب ما بين
أقواص ال F بده يكون Boolean expression واضح يا
جماعة؟ اللي بده ينكتب ما بين أقواص ال F بده يكون
Boolean expression حاجة ترجع true أو false
طيب نجي لان نقطة تانية compound
Boolean expressions ايش هي كلمة compound مركّب
في حالات كتير يا جماعة بالزمن يتحقق من شرطين او
تلاتةو لازم الشرطين او التلاتة مثلا يتحقق كلهم
عشان انافذ ال code مثلا امثلة من الحياة اذا كانت
اسم المستخدم صحيح و ال password صحيحة خل المستخدم
يدخل اذا الطالب أتم 142 ساعة نجح في 142 ساعة و
معدله فوق 65ودفع كل الفلوس اللى عليه ياخد الشهادة
كام شرط تلاتة لو واحد منهم مااتحققش ايش مافيش
شهادة هذه التلات شروط مع بعض فبلزمني انا بس شاهد
في الموضوع انه يعني بلزمك احيانا تقول انه لازم
تحقق هذا الشرط و هذا الشرط تمام
كيف نعملها؟ مثلا احنا بنعمل برنامج نطلب المستخدم
يدخل عدد أبنائه هلجيت عدد الأبناء؟ بنفع المستخدم
يدخل رقم بالسالب؟ مانفعش، بنفع يدخل رقم خيالي؟
يعني يقول عنده 100 مثلا؟ ممكن يكون عدد، بنتحدد ان
عدد الأبناء لازم يكون ايش؟ يتروح مثلا من صفر لحد
100 فالان
اللي احنا بنعرف من الرياضيات انه لما يكون عندي رقم
N محصور ما بين قمتين بنعبر عنه بإيش انه يكون أكبر
من صفر و أصغر منه مثلا أو يساوي مية صح مش هيك احنا
بنعبر هذا لأن في البرمجة بنفعش اتعبر عن هدول اصلا
عبارة عن two Boolean expressions ليش لأنه كام رمز
عندك اتنين بنفعش اتقوله Fالـ N أكبر من أو يساوي
صفر أو أصغر من أو يساوي مية اعملي كذا كذا كذا هذا
كيف نعملها نعملها على تنتين تمام كيف هنعملها على
تنتين الشرط الأول أن الـ N أكبر من أو يساوي صفر
الشرط التاني أن الـ N أصغر من أو يساوي مية و بعدين
بنيجي على ال F statement و بنقوله إذا كانت الـ N
أكبر من أو يساوي صفرو بعدين نكتب الرمزين هدولة ايش
هدى and and لازم تنتين تمام هدولة بيرمزولة ال
logical and مش أخدتوا أنتوا ال and gate في المقدمة
و عارفين أنه لازم يكون ال one one عشان يطلع واحد
واحد ما هي true يعني لازم يكون true true عشان يطلع
ال true هدى إشارة ال and فعليا ال computer لما يجي
يشغلها في المعالج هيستخدم and gate من المعالج نفسه
عشان ينفذهاإن الـ N أكبر من أو يساوي صفر و N أصغر
من أو يساوي مية هكذا يمكنني أن أجمع شرطين مع بعض
هذا معناه أنه لن ينفذ الكود اللي داخل الـ F إلا
لما يتحقق شرطين مع بعض تكون الـ N أكبر من أو يساوي
صفر و N أصغر من أو يساوي مية معروف أن الـ N
تبادليةممكن تضع الشرط هنا وهنا هنا ممكن تضع
الشرط هنا هنا هنا ممكن تضع الشرط هنا هنا هنا ممكن
تضع الشرط هنا هنا ممكن تضع الشرط هنا هنا ممكن تضع
الشرط هنا هنا ممكن تضع الشرط هنا هنا ممكن تضع
ممكن تضع الشرط هنا هنا هنا ممكن تضع الشرط هنا هنا
هنا ممكن تضع الشرط هنا هنا هنا ممكن تضع الشرط هنا
هنا هنا ممكن
و ممكن يكون عندك شروط تانية and ال
n باقى قسمتها على 2 يساوي صفر
ايش
هذه الجملة معناها ان يكون عدد زوجي صح ولا لا يا
جماعة ان يكون ال n باقية قسمتها على 2 يساوي0 كم
شرط عندى هنا تلت شروط بتجمعهم عن طريق ال end هناخد
تمارين على الكلام هذا خدنا بس نقرأ اللى هنا
bowling expressions can be combined using the and
operatorطبعا دلوقت في ال Java هذا الرمز الـ AND في
ال Python مثلا بكتبوا زي هيك AND على طول فاللغات
البرمجة فيها انا فيها اختلافات ايش صغيرة يعني
example if score أكتر من صفر and score أصغر من أو
يساوي مية يعني انا طلبت واحد يدخل معدن رقم علامة
الطالب علامة الطالب هتتروح ما بين صفر ليش ل 100
المفروض لو غير ال range هذا يطلع ال euro
لأن لاحظ هنا برضه يا جماعة ان كل expression حطها
ما بين أقواص هل لازم الأقواص؟ لأ لكن بقولك لو حطت
أقواص بتصير مقروقة أكتر انا بقولك لأ برضه طبعا
يعني أفضل تحطها بدون أقواص هيك بتصير في لخفطة كترة
الأقواص برضه إش يا جماعة يعني إما هو انت بكرا
بتنسى قوس بطلع كل سطر ماله غلط طبعاالمهم هدولة
شرطين طبعا أصل الشرطين هي زي score أكبر من أوي صفر
أصغر من أوي ساوي مية بس هذه مالها مابتقدرش تنفذها
في البرمجة لازم تفصلها لشرطين لأن
هنا بيحكيلي parentheses often used to enhance
readability ايش ال parentheses الأقواس هدولة عشان
تحسين القراءة لكن هم مش لازمين
the larger expression is true only when both of
the smaller expressions are true هذه جملة مهمة لأن
عندما أكون عندى أكتر من شرط جوا ال F طلع
معايا يا جماعة لما أقول أنا F X أكبر من أو يساوي
صفر and ال X أصغر من أو يساوي مية هلجيت كيف ال
compiler بشتغل؟ بيدروح يتأكد أول حاجة كل شرط على
حدةيعني هيشوف فرضا انا دخل التسعين هل ال X أكبر من
صفر تسعين هل ال X أكبر فنتيجة هذه أيش بتكون true
بيجي بتأكد من هذه هل ال X أصغر من أو يساو 100 true
صح التسعين أصغر من أو يساو 100 فهذه نتيجتها أيش
trueالعنوان هو true and true ماهو النتيجة اللتي
تظهر؟ الـ true هيك بيحسب هو بيجيب قيمة مين ال
expression الكبيرة ماهو ال expression الكبيرة؟
نتيجة النهائية تاعة كل ما موجود ما بين القصير ف
true and true بيظهر true لأن لو أنا حطيت طالب 105
لأن هل 105 أكبر من صفر؟ trueهل 105 أصغر من 100؟
false يبقى أنا بحط false فالان مدام أنا بستخدم and
أي حاجة مع false بطلع false واضحة
هذه يا جماعة؟ هذا معنى الجملة the larger
expression is true only when both of the smaller
expressions are true فقط لما يكون ال smaller
expressions true
الان هنا مثلا if quantity أكبر من خمسة and اه هذه
ايه يا جماعة الان هنشوف بس رمز تاني اللي هو مش and
and في عندي or ال or بتخلف ايش يعني or او اختلاف
كبير بال and و ال or ال or معناه انه يكفي ان يتحقق
واحد من الشرطين عشان يتحقق ايوة
كيف يعني؟ خلينا
نسمع منه بس اه ايش سؤالك؟ ماشي
عندى شرطين ماهو
الان انت بدك تفحص الشرطين ليش ممكن الأول يتحقق و
التانى لأ ممكن الأول مايتحققش و التانى يتحققفهمت
كيف؟ يعني واضح ان انت عندك اتنين مش شرط الاتنين
يتحقق ممكن واحد منهم يتحقق انت مش عارف من اللي
اتحقق بس في الآخر انت بتقول لو اي واحد من الاتنين
اتحقق نفذ ال call تمام؟مثلا مثلا بدنا نقول ان
الطالب عشان يسجل مشروع التخرج لازم يكون مخلص عشرين
او تسعين ساعة ومعدله اكتر من سبعين لحظة مخلص تسعين
ساعة او معدل يكون لأ اشوف حاجة نحبكها كويس تمام
انا لما اقول مخلص تسعين ساعة ومعدله اكتر من تسعين
دي صارت andصح أو لا؟ لازم اتنين يتحققوا لكن انا
بدي اقول او تعالى نشوف المثال اللى هنا الان هذا ال
code بتتنفذ في حالة من حالتين اما تكون ال quantity
اكبر من خمسة او ال cost اقل من عشرة الان هذا ال if
statement كلها تتحقق امتىلو واحد من الشرطين اتحقق
ممكن الكمية تكون تكون 2 هل 2 أكبر من 5؟ لأ ماتحققش
الشرط هذا لكن لو ال cost كان 2 بتصير هذه true وهذه
false ماتحقق الشرط ف or يكفي ان يتحقق واحد من
الشرطين عشان تتحقق ال F statement كلها واضح يا
جماعة؟ وكيف نرمزلها ال or؟بالشكل هذا هذا معناه
كلمة ال or طبعا ماضلاش وقت اللي نجرب المحاضرة اللي
جاي بنجربها بس تعالوا خلاص بس عشان هي مربوطة في ال
or تبوا معايا يا جماعة the larger expression is
true ايش ال larger expression كل الموجود جوا ال if
بكون true امتى when either طلعوا يا جماعةwhen
either of the smaller expressions is true إيش يعني
either؟ أي واحد منهم أو when both of the smaller
expressions are true إلى لو اتحقوا هؤلان اتنين خير
وبركة صح ولا؟
خلاص،
خلاصنا هذا، هم من بعد و من تحت و من شمال، شكرا
عفوا