بسم الله الرحمن الرحيم طبعا يا جماعة احنا الموضوع
اللي موجودة في ال chapter هذا خلصناها فيه بس يمكن
شوية أمور صغيرة ضايلة هنخلصها اليوم و .. و نحل
التمرينين ان شاء الله و أنا نزلت واجب على ال
chapter هذا طبعا الامتحان النصفي يا جماعة داخل لحد
نهاية ال chapter هذا طبعا؟ chapter 2 لأن احنا
بدأنا من اتنين طبعا؟
اللي درسناه داخل في الامتحان ماشي طيب
لأن بدي أرجع يا جماعة أقرأ شوية في ال slide تمام
اللي هو طبعا المشروع في ال slide أنا شرحته في
المحاضرة وحلنا عليه تمارين بس من باب أنه احنا
كمراجع نمر عليه بشكل سريع على ال slide لأن هذه
عنوان ال slide هذا ايش nested statements ايش هاي
nested statements يعني ال statement جوا statement
زي F statement جوا F statement في المثال هذا عندي
طبعا هذا بيحكي هو ال syntax ايش هي كلمة syntax
اللي هي الصيغة العامة يعني كيف تنكتب F جوا F
فبقولي F Boolean expression تمام هذا ال F داخل
مين؟داخل ال F هذه لاحظ هنا ان هو ماحطش اقواس لانه
اعتبر ان ال F كلها هذه عبارة عن جملة واحدة ف F
boolean expression واحد دخل على ال F داخلها F
boolean expression اتنين اذا اتنفذت هذه بنفذ
statement واحد else بنفذ statement اتنين ال else
هذه تاب على مين؟ على اقرب F لها اللي هي ال F هذه
تمام؟ وهذه كلها ال F statement داخل ال F الكبير
لما في عندي else براهذه تابعة لمن؟ لـ F الأولى فهو
دايما الـ else هذه هيك تابعة تمام؟ و هذه ال else
تابعة لل F اللي فوق else .. الآن هذه أيضا F
statement كاملة داخل مين؟ داخل ال else if pool
expression تلاتة نفذ هذا else نفذ هذه و هذه برضه
ال else تابعة لل F هذه هذا بس الصيغة العامة
لأن هنا بيحكي لي each else is paired with the
nearest unmatched if إيش يعني؟ كل else is paired
إيش يعني paired؟ زي ترتبط with the nearest إيش هي
nearest؟ أقرب unmatched if أقرب if موجودة عندكif
used properly indentation communicates which if
goes with which else if used properly إذا تم
استخدامه بشكل كويس هاي معناه if used properly إيش
هو ال if used properly؟ ال indentation إيش ان
indentation؟ أخدناها الكلمة هذه قبل هيك
indentation اللي هو أنت تقدم الأسطر وترجعها تمام
مش أنت بتلاحظ أن احنا دايما الحاجة اللي موجودة جوا
ال if الستة بتقدمها شويةصح ولا لا يا جماعة هذا
بتسمى ال indentation ان هو تقدم السطول و ترجعها
انت ممكن ما تقدمش السطر جربنا هذا الكلام ممكن
تخليه كله على نفس المحاذة لكن مثلا احنا بنحب ده من
ال code اللي جوا ال F تقدمه شوية عشان يبين انه تبع
ال F تمام ف if used properly اذا انت استخدمت ال
indentation بشكل صحيح ال indentation هيوصل
communicates يعني بوصلك بشكل واضح او مشاهد كل اللي
استبع لمينيعني انت هنا بمجرد ما تطلع الشكل هتفهم
ان ال السادي تابع ل F هذا و هذي تابع لمين لهذه بس
بمجرد النظر طبعا لكن تخيل انا هدول ماحطتش المسافات
اللي هنا خلتهم كلهم سطر واحد تكون تفكر فيها صح؟ مش
غلط انك انت تحطهم كلهم في سطر واحد لكن ال code
هيبطل مقروع بشكل مفهوم يعني
الـ braces can be used like parenthesis to group
statements برايسز اللي هم هدول يا جماعة تمام؟ ممكن
نستخدمه عشان نعمل group statements عشان نجمع
الأوامر انتبه
معايا هنا، شوف المثال هذاالان نفس ال code تماما
نفس ال code تماما بس في اختلاف في ايش ان هنا فيش
جواس و هنا فيه جواس و الجواس استخدامها ممكن يأثر
على تنفيذ البرنامج الان انسى المثال هذا تعالى تشوف
المثال اللي هنا المثال اللي هنا بمجرد ما تتطلع
عليه في عندي F و عندي F و عندي else ال else هذه
تابعة لمن؟تابع للـ F لأقرب F لها تمام؟ اللي هي الـ
F الـ F هذه أقرب unmatched F يعني الآن إذا كانت A
أكبر من B هيروح يفحص إذا C أكبر من D هينفذ هذه
else هينفذ السطر هذه طب تعالى شوف هذه إيش بتختلف؟
لأن F في الـ statement فتح قوسين داخل القوسين إيش
فيه؟ F وبرا القوسين إيش فيه؟ L's لأن الـ L's هذه
تاب على مين؟ للـ F اللي فوق عشان ذلك كان دقيق ما
جالكاش لأقرب nearest F جالك لأقرب nearest
unmatched F إيش يعني unmatched؟ يعني خلّيني أقول
الـ F اللي مش .. يعني ال .. اللي ما انتهتش تمام؟
لأن هذه الـ F اللي هنا خلصت وانتهت بمجرد إيش؟ما
سكرت القوس طبعا لكن لأن ال ال سئت مباشرة بعد قوس
ال F هذه اعتبر ان ال ال step على مين لل F الفوق
فبدك تنتبه لل code و لاستخدام الأقواس لأن زيك
استخدام الأقواس ممكن يغير تنفيذ ال code هنا ال ال
step على مين لل F الجوه طبعا هذا ال ال step على
مينللـ F لبرا إيش هالكلام هذا إذا هنا في المثال
هذا إذا فحص ال A إذا كانت أكبر من B هينفذ إذا مش
أكبر من B هينفذ هذه لكن هنا إذا A أكبر من B هينفذ
ال F لجوه إذا مش أكبر من B مش هيعمل ولا حاجة هذا
الفرق هنا بعملش إذا كانت A أصغر من أو يساوي B مش
هيعمل حاجة لكن هنا إذا كانت A أصغر من أو يساوي B
هيروح على القلصطبعا هنا بقول طب انت ليش هنا محطتش
جواس الان بمجرد عشان في F بعد ال F اعتبر ان هذي
كلها زي جملة واحدة طبعا يعني ال F في ال statement
كلها باعتبرها زي أمر واحد اذا حابب انا احط بعد هيك
أسطر واعتبرها تابع لل F هذي و انا بلزم احط أقواس
عشان اجمع ال F و اللي بعدها تابع لل F
طيب هذه الـ compound statements بس بحكيه لإن انت
ممكن تجمع ال statements باستخدام الأقواس هذا مثلا
المثال واضح إن هدول اتنين مش هيتنفذوا إلا لو كان
ايش ال total أكبر من عشر طيب هذا ال conditional
operator اللي أخدناه المحاضرة الماضية قلنا يا
جماعة إذا في عندك متغير زي max هذاقيمته بتعتمد على
شرط يعني انا طالع معايا ال max هذا اذا اتحقق الشرط
بياخد N1 اذا مااتحققش الشرط بياخد N2
واضح لما تكون انت في حالة ان انت عندك متغير بدك
تغير قيمته بناء على شرط ممكن تستخدم حاجة سميناها
ال condition ال operator في ال if statement و ال
else موجود عند م يساوي max يساوي صح فبعدين بقوله
ممكن ممكن هذه نختصرها كيف نقوله max يساوي كيف بتحط
الشرط ايش هو الشرط ان واحد اكبر من ان اتنين لان
اذا اتحقق خليه ياخد ايش القيمةن واحد إذا ما اتحققش
ياخد ان اتنين هذه نفسها هي تكافئ من؟ تكافئ هذه
مثال تاني Fx يساوي تلاتة حط في ال Y زيرو else
حط في الـ Y خمسة كيف هدفنا نحوّلها conditional
operator أول حاجة تطلع هل هدف احنا بنحتاج نحوّلها
conditional operator عندك متغير Y قيمته بتعتبد على
مين؟ على شرط شرط اللي هو قيمة ال X بتقول Y يساوي
إيش الشرط؟ افحصلي هل X يساوي تلاتة ولا لأ إذا تحقق
.. وبعدين حط علامة استفهامإذا اتحقق، اضغط في الـ Y
إيش؟ Zero ماتحققش، اضغط في الـ Y خمسة فدائما
القيمتين اللي هنا اللي بفصل بينهم نجتين القيمة
الأولى لو ما اتحقق الشرط القيمة التانية لو ما
اتحققش الشرط هل جيت هادي، هي نفسها هادي وزي ما
قلنا ال condition ال operator هو بس طريقة للاختصار
بس طريقة لإيش يا جماعة للاختصار يعني هذه مش غلط
ماقولناش غلط تمام بس انا ممكن اختصرها بالسطر هذا
ومش كل F statement ممكن اختصارها بالشكل هذا فقط
الحاجات اللي انا عندي متغير قيمته بتعتمد على شرط
هذا اللي بنفذها بال conditional operator
طيب الان اتطلعوا على المثال هذا حاولوا تتطلعوا على
المثال واحد يفسرلي ايش معناه اتطلعوا على المثال
اقرأوه بدي واحد شاطر يفسرلي ايش معنى المثال هذا
عشان أفهمكم المثال هذا بدي أعمله بس بطريقة أبسط من
هيك
طب يا جماعة بنعمل تطبيق بسيط مطلب من المستخدم يدخل
عدد الساعات اللي اشتغلها تمام مثلا عشان نحسب
الوراتب له هنا
system.out.println
System.out.println uworked
ماذا انا طبعته هنا؟ انت تطبق له عدد الساعات اللي
اشتغلها تمام انت you worked كذا hours مفيش برنامج
مابعملش حاجة بسيط جدا يعني لو قلت له دخل خمسة
هيقول له you worked five hours طيب لو دخلت واحد
you worked one hours تمام الان المفروض ان لو كان
يعني هذا الموجود هنا شايفينه لحظة استنى شوية لأن
المفروض انه كلمة hours يطبع لو كان العدد اكتر من
واحد صح ولا لأ لو كان واحد يطبع بس كلمة hour مش
هيك المفروض يا جماعة في الطباعة في طباعة الجمعة
انا اشتغلتخمس ساعات، ست ساعات، لكن لو اشتغلت ساعة،
بقول واحد ساعة هذه الفكرة ان كلمة hours هذه
المفروض ان لو كان واحد دخل المستخدم واحد هيطبع
كلمة hour لو دخل اكتر من واحد يطبع hours واضح ايش
بنعمل؟ احنا لسه ماعملناهوش، واضح ايش بنعمل يا
جماعة؟ واضح ولا لأ، الورابدنا نطبع يا m hour يا m
hours بناء على عدد الساقات اللي دخلها طبعا طيب
تعالوا نحله بطريقة سهلة بدنا نعمل string فاضي
string printed
hours هذه string فاضي مافيش فيها حاجة ليش عملت ال
string الفاضي هذه عشان أقوله ifHours الساعات اللي
اشتغلها المستخدم تمام اكبر من واحد خل
ال printed hours حط فيها كلمة hours else فاهمين
انا ايش عميته يا جماعةالان هذا صار متغيري بطل ثابت
صح ولا لأ مرة هيك و مرة هيك هيكون فروحت عشان مثله
عملت نص اسمه printed hours قيمته ايش بتكون في
الأول فاضي الان قلتله شوف ليه قداش المستخدم دخل
اذا دخل اكتر من واحد حط في ال printed hours كلمة
ايش ساعة else ايش يعني else غير ذلك ماكانش اكتر من
واحد كان واحد او صفر خليها ايشالان ببساطة شديدة
شيل هذه تمام بس خلّي مسافة هنا وحط printed hours
فاهمين حاجة ايش عملت هنا يا جماعة المفروض انه بسيط
جدا بالمثال مافيش انا روحت فحصت قيمة الساعات اللي
دخلها المستخدم والله اذا اكتر من واحد حطيت في هذا
النص كلمة hours غير هيك حط في hour وفي الآخر طبعته
You worked هيطبع عدد الساعات و بعدين هيطبع كلمة
hour يا hours الان تعالى نجربها الان
دخل اتنين كتبلي two hours هاي واحد تمام one hour
سبعة
hoursفهمتوا حاجة يا جماعة ولا مافهمتوش؟ طيب الان
هذا المثال عبارة عن متغير قيمته بتعتمد على شرق
ممكن نحوله ل conditional operator ممكن كيف؟ ايش
عملت انا؟ تعليق لل code لغيته يعني comment لل code
تمام؟ و بدأتش اقوله printed hoursيساوي ايش الشرط
hours اكتر من واحد اذا اتحقق الشرط افتح قسين زي
هيك وحط فيه ايش hours ماتحققش الشرط حط فيه hour
اذا
اتحقق الشرط حط hours ماتحققش حط فيها hour هذا
الجملة اختصار مناختصار الـ F في الـ statement كلها
اذا hours أكتر من واحد حط فيه hours مش أكتر حط فيه
hour لأن اعمل run تاني هاي
واحد طبع لي one hour هاي تلاتين طبع لي one تلاتين
hours الان شوف ايش بده اسويممكن كمان نختصر ال code
أكتر انك تاخد هذه شايف هذه هذه كلها تحطها وين بدل
printed words تحطها كجملة طبعة هنا بس ايش حطها بين
قصين بالشكل هذا هذه
كلهامش هذه القيمة اللي هنا بحسبها و بحطها في
الprinted hours بدل ما أحطها في الprinted hours
أخدها و حطيتها في جملة طباعة كتب ل you work it هنا
عدد الساعات اللي اشتغلتها و هنا بحسب بشوف هل ال
hours أكتر من واحد إذا أكتر من واحد هيطبع ليه ايش
hours مش أكتر من واحد هيطبع ليه hour نفس اللي
كتبته فوق بدل ما أحطه في printed hours و أطبع
printed hours حطيته في جملة الطباعةإذا انت فاهمها
زي أول خلّيها زي printed hours حتى هذه الان ممكن
نعمل comment وهي المثال لأن
هاي واحد طبع لي one hour هلجيت هو طبعا في المثال
مابداش معاك بالتدريج زي هيك على طول ادّاك ايش
system.out.println وحط لك hours اكتر من واحد اطبع
hours او hour تمام بس انا مشيت معاك شوي شوي اول
حاجة اخلتلك ايها F statement و بعد ما هي F
statement حولتلك ايها لمتغير و conditional
operator بغير في متغير و طبعتلك لمتغير و بعدين
اخدت ال conditional operator كله و حطيته جوا جملة
الطباعة مشيت معاك على تلت خطوات واضح يا جماعة احنا
بنحكي و بنعيد يا جماعة ان البرمجة بدها متابعهلجيت
تلت ترباعكوا انبلم وفاتح ثمه و بتطلع في ال code
لإيش لأنه ماجربش قبل هيك قاعد هبسأل إيش هذه القصين
اللي كتبتها قبل هذا فقال له إنه هذه مسافة طبعا هو
ليش بيسأل السؤال هذا لأنه قبل هيك ماراحش يجرب في
البيت يعمل system.out.print لإنه يعمل كذا زائد كذا
زائد كذا لأنه ماجربش فبشوف هيك لسه بده بده خمس
دقايقو يسأل الجمل و يستوعبها و أنا في الخمس دقايق
بكون شرحت حاجة ضاع اللي جمل و ضاع المين اللي جديد
تمام فبطيح العمارة يعني شوي شوي بتراكم عليك كله ب
heal في الآخر فاحنا بنقول يا جماعة تابع أول بأول
أنا مش هضلني في كل مثال أعيد أشرح إيش الأساسيات في
عندنا حاجة ماتتكوش إياها اللي هي ال exit method
تمام إيش كلمة exit؟
خروج خروج خروج خروج خروج خروج خروج خروج خروج خروج
خروج خروج خروج خروج خرماذا هي الجملة هذه sometimes
a situation arises وضع
أو ظرف معين arises يظهر وضع معين بيخلق الاستمرار
في البرنامج عديم الجدوة pointless عديم الفايدة
يعني باختصار ان انت أحيانا بدك تنهي البرنامج كيف
مثلا هجيب برنامج البدالة إذا تريد الخروج اضغط رقم
خمسة في ايش بتعمل تقفل برنامج تطلع منه تمام احنا
لحد الان برامجنا ايش بيعمل فيها بيشتغل لما يخلص ال
code كله بيطلع صح و لا لأ مش هيك احنا لما تكتب انت
code بيشتغل جوا ال main method بنفذ الأوامر سطر
سطر لحد ما يخلص لكن احيانا ان انت بدكيا يخلص عند
نقطة معينة مايكملش في تنفيذ البرنامج
يعني مثلا طلع معايا هنا أنا
طلبنا من المستخدم يدخل عدد الساعات integer
hours S.nextInt
الان if hours أقل
من 0 هذا
غلط فى حد اشتغل بالسالب ساعات تمام لأ ممكن نقوله
system.out.println invalid number
of hours
طب طبعا ايش المفروض انه قلس و تكمل يعني اذا ماكانش
غلط هيعمل شيء معين الان ممكن يكون بعد ال if
statement في code تاني تمام مثلا ال code التاني
يقوله مثلا يعمل كمان مرة int number of children
عدد الأطفال بدي اقول له s.next m تاني اطلب منه
ادخل عدد الأطفال او هنا جابلها كمان نقوله system
.out.println enter number of children الان
يا جماعة هذا ال code اللي تحت موجود بعد ال F
statement صح ولا لأ يعني هو في الأخر هيطلب منك
تدخل عدد الساعات في الأول هيطلب منك تدخل عدد
الساعات و بعدين هيشتغل عليهم و بعدين هيروح يطلب
منك عدد الأبناء
الان انا مثلا في البرنامج تبعي بدّي لو هو دخل عدد
الساعات غلط يوقف هنا هنا في الوضع الطبيعي هيوقف مش
هيوقف يعني هو ايش هيعمل هيفحص ال award اذا كان
اصغر من صفر هيطبع لي invalid تمام اكبر من اي صفر
هينفذ الالس بعد ما يخلص الالسهينزل علي تحتي وينفذه
في بعض الحالات انه خلاص انا بدي عنه نقطة معينة
المستخدم مادخلش القيمة الصحيحة البرنامج مانفعش
يكمل بدي اوقف البرنامج غصب عنه مانفعش يكمل ال code
اللي تحت كيف؟ بتيجي انت مثلا هنا اذا كان عدد
الساعات خطأ ممكن تنفذ الأمر هذا system.exit و بين
القصر نحط zero مثلاsystem.exit يعني كأني بقوله وقف
البرنامج لأن كل اللي بعده كل اللي بعد exit ماله مش
هيتنفذ حتى ال else ما هو اصلا هو مدام دخل على ال
if مستحيل يدخل على ال else صح ولا يعني هو اصلا هذا
ال code هو الموجود جوا ال if مش هيروح لل else اصلا
يعني تمام بس احنا بهمنا اللي بعد هذاهذا ال code مش
هيتنفذ بالمرة لأن هنا ايش عملتله exit 0 لأن هاي
مثال مثلا دخليه عدد الساعات لأن لو دخلت خمسة هيكمل
هيطلب مني number of children طبعا هنا خلص البرنامج
ليش خلص لأنه انها تنفيذ كل الأوامر ووصل لنهاية ال
main لكن انا مثلا دخلت عدد الساعات
بالسالب سالب اتنين طبعا ل invalid number of hours
و بعدين انهى البرنامج هذا بتشبره انه يخلص البرنامج
مايكملش ال code اللي بعده كيف لأ
لها استخدام تاني ال break تمام هذا
السطرطيب هذا الصفر احنا مش هنستخدمها بس هلجيت ال
.. ال .. ال .. في ناس إيش بتعمل لما ينهي البرنامج
بدها تعرف إيش سبب الإنهاء تمام؟ هذا system.exit
أنت ممكن تحطه في أماكن مختلفة يعني مثلا إذا دخل
عدد الساعات بالسالب خليه يطلع إذا صار error معين
خليه يطلع إذا مافيش اتصال على الشبكة خليه يطلع ف
system.exit أنت هتعملهاممكن أكتر من مرة في التطبيق
تبعك طب الآن خلص البرنامج كيف بدك تعرف السبب اللي
وقف البرنامج عن طريقه عن طريق الرقم هذا فمثلا انا
لما احط صفر معناه انه البرنامج لما يخلص بيرجعلي
صفر تمام طبعا احنا في طريقة ان انت الرقم اللي
بيرجع ده تاخده و تخزنه مثلا في ملفlog file مثلا
عشان لما ترجع بعد هيك تعرف ليش البرنامج خلص لما
تلاقي صفر طبعا هنا بتعرف انه خلص ليش بسبب انه عدد
الساعات بالثالث في مكان اخر مثلا انه لو فش اتصال
في الشبكة او حصل ارغب معين ممكن تحط هنا واحد وفي
مكان تالت ممكن تحطأتنين و في مكان و هكذا لكل سبب
ممكن تحط له رقم انت طبعا بتكون مسجل عندك انه لو
رجع لو انا لو خلص البرنامج و رجع الصفر بتعرف انه
خلص بسبب عدد الساعات واضح بس هذا استخدام متقدم
نادر انت هتحتاجه برجع لانه برمج اش يحط تمام و هل
هيستفيد اصلا من الرقم اللي برجع ولا لأفالفكرة هنا
كأنك بتقوله انه انهي البرنامج و رجع القيمة اللي
أنا بمررلك إياه، هاي معناها دي عشان هيك احنا
بتجاوز عم نحط إيش صفر لإنه مش معنى إيه أن نعرف إيش
السبب يعني السؤال كان هنا ممكن أنا أستخدم حدر
أكلمتلي اللي زي هيك على ال system
هل وجدت أنك تطلب منه عدد الأبناء ممكن تضع هؤلاء
جميعهم في الـ else
إلا لو ما تحققش الشرط اللي فوق ما هو إمتى بروح لل
else لو ما تحققش يعني كانت ال hours إيش أكبر من أو
يساو سفر كلام سليم يعني أنا خلاص يعني إذا دخل جوا
ال if خلّيه يطبع invalid hours ومايعملش حاجة إذا
دخل جوا ال else يعمل باقية الشغلكله لكن في بعض
الحلقات لما يكبر البرنامج معاك ممكن تضطر تستخدم ال
exit يعني مش في كل الحلقات انت ال f و ال else
بتستكفي فيها يعني قدّز زميلكوا انه خلاص اذا اتنفذ
الشرط نفذه بالدكية ماتنفذش ماتعملش حاجة طبعا ماشي
هذا بيمشي الحال بس افرض انا عندك code بعد ال f
بديش هي تنفذ هذه الفكرة هذا ال code اللي تحت هذا
code برا ال fبديش هيتنفّى فخلاص بحط ال exit هذا
بيبقى الخيار جماعة الناس بتفكر طرق مختلفة ممكن أنت
تاخد ال code هذا و تحطه جوا else هيك أنت حامد نفسك
ممكن تحطه برا ال ال F كلها و تحط exit ممكن يكون
فيه حاجات تانية فانا بس من باب العلم أنك لازم تعرف
أن في حاجة اسمها system.exit بتنهي البرنامج
البرنامج يمكن ان يتم إيقافه بشكل عادى باستخدام
system.exe 0 يمكن ان يتم إيقافه بشكل
عادى باستخدام system.exe الان
هذه مثال حطليها هذا شرط و هذا ال الستبعif number
of winners you saw suffer system.out error
dividing by zero وش عمل هنا system.exit يعني أنهى
التطبيق else
نفس شيء معين حسبة معينة عمل هذه payoff على number
of winnersبغض النظر ماهو ال code اللي هنا انه هذا
system xz هيطلع من البرنامج لو كان number of
winners يساوي صفر
طيب الان بدأ افسر شوية في ال boolean هذا الكلام
اللي احنا حاكينه يا جماعة ان الموجود ما بين
القوسين تاعة ال F مش شرط دايما يكون اكبر من او
اصغر من او يساوي صح او لا ممكن يكون boolean اي
حاجة true او false ممكن يكون اي method بترجع true
او false صح او لا مش احنا قبل المحاضرتين عملنا
مثال اللي هو ابحث عن كلمة في نصتمام؟ و حطينا داخل
ال F statement إيش؟ كلمة contains لأن contains
بترجع true أو false و حلينا برضه مثال اللي هو
يقارن ال password صح ولا؟ حطينا جوا ال F statement
dot equals و حليناها بطريقتين في الأول عملنا dot
equals و حطيناها في متغير من نوع Boolean و بعدين
حطينا المتغير جوا ال Fتمام؟ و بعدين لأ حطينا
استدعاء ال method كله dot equals داخل ال F
statement لأن هنا مثلا هذا F if system are okay
systems are okay ايش معنى if systems are okay هذا
Boolean هذا قيمته يا إيش يا true أو false جمنا لما
يكون فيه Boolean داخل F statement كأني بقول if
systems are okay يساوي يساويtrue مش حاكينا الكلام
هذا يا جماعة يعني هذه اختصار لإيش if systems are
equal يساوي يساوي اه true the type Boolean is a
primitive type with only two values true or false
هذه عارفينها Boolean variables can make programs
more readable يعني هيك بيصير البرنامج تبقى أسهل
لما أقوله أحط داخل القسم Boolean variable
الان بقول ان انت ممكن تستخدم هذه بدل مين بدل هذه
الان تطلع تطلع ال F statement هذه كم شرط فيها تمام
تلت شروط اذا ال temperature اقل من او يساوي مية
and and ثرست اكبر من او يساوي اتناشر الف and and
كم من ال pressure اكبر من او ايش تلتين تلت شروط
حطهم كلهم داخل ال F statement هو بحكيلي ممكن تاخد
التلت شروط هدولةوتضع قيمتهم في مكان مختلف يعني
تعمل اشي زي هيك يا جماعة انك
تعملها جذده انك تعملها على سطرين يعني تروح تقوله
بوليان systems
are okay ايش قيمته تكتب مين السطر اللي جوا كله
تقوله temperatureأصغر من أو يساوي 100 ثرست
أكبر من أو يساوي 11000 pressure أكبر
من أو يساوي 30 هذه التلات شروط هدولة بيحط وين؟في
الـ Boolean هذا هذولة أصل قيمتهم ايش true or false
بحسب هذه و بجيب القيمة true or false و بحط القيمة
وين في المتغير هذا الان بعد هيك بتقوله if systems
are okay بس لحالها حطها نفذ البديل يعني الفكرة
الأن احنا اتعودنا ان ممكن هذولة كلهم تحطهم جواالـ
F صح ولا و جربنا احنا مثلا نحط اكتر من شرط داخل ال
F بقول انت ايش ممكن تعمل ممكن تاخد الشروط كلها و
commit هم و تحطهم وين في متغير و بعدين تقوله F
المتغير اللي هو نوع Boolean هذا كأنني بقول F هذا
يساوي true نفذ هذا جذب هو بيخلي ال code ايش
readable اكتر ومفهوم اكتر ايوة
لو حققت شرطين ولم يحققش شرطين بيعطينا true او غلط
او غلط او غلط او غلط او غلط او غلط او غلط او غلط
او غلط او غلط او غلط او غ
و احنا جربنا قبل هيك لما عملنا مثلا ال .. ال
contains و لما استخدمنا equal to حطيت القيمة جوا
متغير و بعدين حطيت جوا ال F المتغير واضح يا جماعة؟
precedence
rules ايش هي كلمة precedence؟ موضوع الأولويات هذا
احنا مش هنفصل فيه كتير يا جماعة بس احنا بنعرف
تعالي طلع معايا لما يكون عندك اشي زي هيك
يعني هي بدها الشرح لأنها ممكن أنت تفهمها بالبديهة
if x أكبر من y زائد 3 and z أصغر
من y
ناقص 3 مد الأربعة
الان احنا بنعرف ان اقوى اولويات طيب
وحط برضه ايش هنا تمام or
طلعوا معايا يا جماعة في مثال زي هيك اول حاجة انت
بدك تحسب ال bullying operations بعدين بتفكر في
مين؟ في ال and و ال orيعني هدولة بتأجلهم دايما ايش
للاخر خلص أول حاجة هدولة الان هنا اكيد كمان انه
بده يعمل عمليات حسابية قبل ما يشوف ايش اكبر او
اصغر يعني هاي هو اللي بحكيلك هي انه دايما انت
الدرب خلص الدرب و القسمة و المد و بعدين الجمع و
الطرح تمام و بعدين حط الأكبر منه و الأصغر منه و
الأكبر منه أو يساوي و الأصغر منه أو يساوي و يساوي
يساويو بعدين بتعمل ال and and و ال or هيك الترتيب
يعني فكأنه بيقولك أنه أول حاجة أعمل عملية الحسابية
أكيد هنا طبعا أنت بده يجمع ال y زائد تلاتة و يشوف
مين أكبر إذا ال x أكبر من هدول الأتنين هذا بيكون
قيمتها ال trueطبعا هذه الحاجة حتى لو أنا ماشرحلكوش
إياها هتفهموها بالفترة يعني احنا في صف تاني
ابتدائي لما كانوا يحطونهم حط مثلا خمسة زائد تلاتة
بالعرب بتلاقي خمسة زائد تلاتة تمام اتنين زائد ستة
الطفل اللي حقله هيروح ايش يعمل؟ هيروح يحسب هذه و
يحسب هذه و بعدين يحط ايش؟ اه الإشارة هذا نفس
الحاجة فانت بتحسب هذه و بتحسب هذه لو في حسبة بعدين
تشوف الإشارة و تشوف ايش هي نتيجة true ولا false و
هذا نفس الحاجة تطلع هنا الان بس في عندنا ناقص و
عندنا mod من هيعمل قبل؟ من أولوية أكبر؟ ال mod
أكبر هيعمل ال mod و بعدين هيعمل الطرح و بعدين
هيعمل هذه كلها و تكون قيمتها true؟أو false وهذه
أيضا قيمتها true أو false لأن بعد ما حسب كل binary
expression لحال بيجي بنفذ من ال and and و ال or or
مافيش أولوية لل and على ال or بس بنفذهم بالترتيب
طبعا يعني مثلا أول حاجة بيعمل بين أول اتنين من أول
اتنين هي هذه وهذهإذا هذه true وهذه true لازم
الاتنين يكونوا true عشان يطلع النتيجة true صار
هدول اتنين نتيجتهم true هيعملوا or مع مين؟ مع اللي
بعدهم إلا لو حطيت أقواس هيعمل عكس، غير هيك يعني
هنا مافيش أقواس بينهم، هيمشي بالترتيب، هيمسك أول
اتنين يعمل بينهم and والناتج هيعملوا or مع مين؟ مع
هذاطبعا كأنه .. كأنه هذا الشرط انه لو اتحققوا
الاتنين اللي في الأول خلاص بتحقق كل الشرط اه ملزمش
التاني طبعا لكن لو حطيت القوس زي هيك لازم في الأول
يعمل or لهدول و بعدين بعمل and معها واضحة تهدي يا
جماعة
خلاص هذا احنا قطناه لان معلومة سريعة ال Java او كل
لغات البرمجة بتعتمد على تكنيك في حساب ال F
statement يسموه short circuit evaluation ايش يعني
short circuit الدائرة المفتوحة باختصار شديد عشان
اشرحلكي يعنى لو انا عندي شرطين هي
condition واحد و andcondition اتنين هذا شرط وهذا
شرط
الان لما ييجي يحسب مفروض مدام هذه end ان الاتنين
يكونوا true بقولك هو لحاله لو لجأ ان هذا false
بكملش عشان ما ياخدش وقتطبعا هو لحاله زكى ال
compiler انه بحاول يوفر وقت كيف انه لو لقى end و
حسب الشرط الأول لقى false فى داعى يحسب الشرط
التانى لأ نفس
الحاجة لو كان بينهم or
إذا وجد الأول صحيح فهناك داعي يكمل؟ ليس هناك داعي
يكمل هو أنت لازم يكمل؟ إذا وجد الأول صحيح فهناك
داعي يكمل؟ ليس هناك داعي يكمل؟ لو وجد الأول صحيح
فهناك داعي يكمل؟ لو وجد الأول صحيح فهناك داعي
يكمل؟ لو وجد الأول صحيح فهناك داعي يكمل؟ لو وجد
الأول صحيح فهناك داعي يكمل؟ لو وجد الأول صحيح
فهناك داعي يكمل؟ لو وجد الأول صحيح فهناك داعي
يكمل؟ لو وجد الأول صحيح فهناك داعي يكمل؟
لو وجد الأول صحيح فهof the boolean expression جزء
من ال .. need to be evaluated ايش يعني evaluated
انه يتقيم جزء من ال boolean expression هو اللي
بحتاج اقيمه احسبه تمام
هنا اعطاني مثال if the first operand associated
with an or is true then the expression is true if
the first .. ايش ايش ايش ايش ايش ايش ايش ايش ايش
ايش ايش ايش ايش ايش ايش ايش ايش ايش ايش أيش أيش
أيش أيش أيش أيش أيش أيش أيش أيش أيش أيش أيش أيش
أيش أيش أيش أيش أيش أيش أيش
أيش أيش أيش أيش أيش أيش أيش أيش أيش أيش أيش أيش
تمام؟ أكبر من وين الـ operands بتاعونها؟ هذا
operand وهذا operand فال operand هما الحاجات على
طرفي الرمز فهذا الكلام اللي حكيته في حالة ال or
إذا كان أول واحد true خلاص ال expression كلها
بتكون true الآن if the first operand associated
with and is false then the expression is false
this is called short circuit or lazy evaluation
ماشي ساعةهنا اعطاني مثال بقول short circuit
evaluation فهمني ايش ان short circuit evaluation
يا جماعة ان المعالج بحتاج يفحص كل الشروط عشان يطلع
بنتيجة زي مثلا لو كان or إذا كان الأول true خلاص
ماتكملش إذا كان and والأول false خلاص ماتكملش هاي
معناه short circuit evaluation هنا بقولي مثال
short circuit evaluation أحيانا بكون ضرورة ماقدرش
أستغنى عنها تعالى شوف المثال هذا
if number لا يسوى صفر and sum على number أكبر من
خمسة إذا كان العدد ليس صفر وكان المجموع على العدد
أكبر من خمسة الآن سؤال بدون short circuit
evaluation لو قلنا تخيل إنه يعمل الشرطين مع بعض
كان ال number صفرتمام ال number كان بصفر هذا الشرق
هل الصفر لا يساوي صفر هو هنا هذا false هيكون لأ لو
فرضنا انه بدي يمشي تمام هذا كانت نتيجة false اذا
كان ال number صفر صفر لا يساوي صفر هذا غلط false
طيب بعدين ايجي اعمل sum على صفر هيطلع خطأ ال
computer بطلع error لما يصير في عندي اي قسم على
صفر
البرنامج هيعلق ويوقف معاه ويخرج منه لأنه قسم على
الـ 0 لكن باستخدام short circuit evaluation هو
نجاني من المشكلة هذه كيف؟ إذا أصلا أنا دخلت ال
number 0 ولم يتحقق الشرطة هذه لن يكمل للبعد فال
short circuit evaluation هو يفحص جزء ويسيب الأجزاء
التانية ممكن أن تتجنب عن طريقه مشاكل مثل هذه أنت
قبل أن تقسم، افحص ال numberمو عشان يقسم لازم يكون
هذا ما قاله مش صفر إذا كان صفر أصلا مش هيكمل مش
هيفحص الشرط اللي بعده بس هذا إيش المقصود ..
المقصود فيه طيب خلاص اللي هذا مش همكمله خلاص
switch statement احنا شرحناها بالتفصيل يعني تمام؟
أعطوكوا العافية و هيك خلصنا احنا الشبطة يا جماعة