تمام السلام عليكم يا جماعة اليوم ان شاء الله هنكمل
في مراجعة اللي أخدناها في مساق python 1 ان شاء
الله المحاضرة الماضية بدأنا شوية review يعني رجعنا
مثلا موضوع ال F statement شوفنا في أخر سؤال حلناه
مثلا موضوع السؤال اللي بدخل فيه ال mark علامة
الطالب بطلّالي ال grade تبقى تمام؟أيضا راجعنا في
نهاية المحاضرة شوية موضوع ال four أو ال loops
بالشكل عام هنكمل اليوم في بعض الأسئلة العملية تمام
اللي من خلالها هراجع اللي أخدناها في python 1 طيب
الان
يا جماعة فرضا انا بدأ أحل سؤال write a program
that reads a number and prints its factorial بدي
أعمل برنامج أو قبل مضروب الرقم خليني أشوف سؤال
أسهل منه شوية مثلا
هذا السؤال حلنا نحله تاني write a program that
prints the even numbers from 50 to 100إيش مطلوب
السؤال؟ بدنا نقبع كل الأرقام الموجودة من خمسمية من
خمسين لمية، الزوجية فقططيب الان انا مادام بحكي من
خمسين لمية معناه انه في عندي تسلسل أرقام معناه انه
هيك انا بفكر في تسلسل أرقام معناه انا بستخدم loop
طبعا في عنا four و one مين أفضل نستخدم ال four
مادام انا عارف نقطة البداية و النهاية يبقى بستخدم
ال four أفضل فبجب اقول four I in rangeخمسين إلى
مية و واحد لان انا بدأ اطبع المية طيب الان هذا
هيمرني على كل الأرقام من خمسين لمية تمام لكن انا
اشتربت قلت بس بدأ اطبع ال even يعني الان في عندي
شرط موجود على الرقم اللي انا بدأ اطبعه لو انا عملت
print زي ايه هاطبع الرقم كل الأرقام من خمسين لمية
يعني هاي لو انا عملت run
هيطبع لكل الأرقام هى شاشة الناتج من 50 ل 100 أنا
طلبت بس أطبع الأرقام الزوجية طبعا كيف أطبع الأرقام
الزوجية بدي أحط فحص داخل ال for على أساس كل رقم
بمر عنه أتأكد أنه رقم زوجى طيب ماشي عشان أتأكد أنه
رقم زوجى بدي أقول if ال I باقي قسمته ع 2 يساوة 0
احنا بنعرف الرقم الزوجى دايما باقي قسمته ع 2 يساوة
0print I لاحظوا ان ال F statement جوا ال 4 طيب
هاي طبعة الأرقام الزوجية من 50 ل 100 هاي 50 52 54
50 طبعا الحل الآخر أنه انا ممكن اعمل ايش يعني
مباشرة اطبع
أو أحط في ال range أحط 2 علشان الزيادة تكون 2
معروف إذا الزيادة كانت تكون 2 يجيب للأرقام الزوجية
تمام؟ مباشرة بس طبعا هذه بتظبط ليش لأن أنا بدأت من
وين؟ من 51 لإن لو حكيت من 51 هتظبط؟ أه لأ تمام؟
فبدأ أكون أعرف أنا إيش الحل اللي بنفع أستخدمه بناء
على ال range الموجود عندى طيب ناخد السؤال فكرة
تانية لو أنا طلبت مجموع الأرقامالموجودة من 50 ل
100 مجموعة الأرقام الموجودة من 50% من 50 ل 100
طبعا نفكر شوية هنا عشان اجيب مجموعة الأرقام من 50
ل 100 اول حاجة مادام انا حكيت range طبعا يبقى انا
بدى استخدم loop عشان امر على الأرقام هذه من 50 ل
100 طبعا هي ال loop موجودة عندى هي من 50 ل 101طب
كيف هنا أنا في ال for loop بمر على كل رقم على حده؟
يعني همر على ايش؟ على خمسين و واحد و خمسين و اتنين
و خمسين و تلاتة و خمسين و هكذا طب انا ماطلبتش هيك
انا ايش طلبت؟ مجموع الأرقام لأ كلها من الخمسين
لبيه كيف انا بدي اجيب مجموع الأرقام اللي موجودة من
الخمسين لمية؟ الحل هذا ايش هسوي؟ انه انا اعرف
متغير تمام؟ قبل ال loop معنى المتغير هذا هيكون
فاضيبحيث ان انا كل رقم امر عليه اخد وظيفه عن
المتغير طيب يا جماعة انا بدى اجيب مجموعة الأرقام
من 50 ل 100 تمام؟ المشكلة في ال for loop او اي
loop ان انا بتمر على كل رقم لحالهطب كيف انا بدي
أجيب مجموعة كل الأرقام هذه؟ هذه عاملة زي أنا عندي
مجموعة شجر، كل شجرة عليها تفاحة، أنا بدي ألوم
التفاح كله، ايش بعمل؟ بجيب سلة فاضية في الأول
معايا، تمام؟ و بمر على .. بشيل السلة و بمر على
الشجرة الأولى و بجيب اللي فيها و بحط وين؟ في
السلة، و بعدين بروح على الشجرة التانية، يعني أنا
في نفس اللحظة بقدر أجيب من كل اللي في الشجرة مع
بعض؟لأ انا في اللحظة الواحدة بمور علي شجرة واحدة
فبمور عليها واحدة واحدة وكل واحدة بمور عليها بجيب
اللي فيها و بحط وين في السلة اللي موجودة عندى و
انا كده عشان اجيب انا مجموعة الأرقام الموجودة من
الخمسين لمية بدي اعمل سلة في الأول اللي هي ايش
ممثلة في البرمجة مش سلة تمام متغير تمام وين بعرف
المتغير ادا بدي اعرفه برا اللو تمام وليكن مثلا
المتغير اسمه sum قيمته كدهش واحد ليش zeroلازم يكون
فاضي لأن كل رقم بمر عليه باخده و بضيفه في الـ sum
إيش يعني هذا ال sum plus يساوي I؟ sum plus يساوي I
هذه نفسها تكافئ sum يساوي sum زارد I يعني أنا جاعة
بضيف على من؟ على ال sumطيب و بعدين إيش بعمل؟ تمام؟
هيك أنا قاعد بمرحل أرقام من خمسين لمية و كل واحد
بضيفه على ال sum المجموع النهائي وين هيكون؟ في ال
sum هي print sum
معايا يا جماعة؟ طيب السؤال؟خلينا نجربها لقيت اعملت
run هي بقول مجموع الأعداد من خمسين لمية هو خمسين
ثلاث تلاف و تمامية و خمس و عشرين لأن خمسين زائد
واحد و خمسين زائد اتنين و خمسين وها كذا لعند مية
طبعا طلع الرقم هذا طيب لو عملت هيك هذا صح ولا غلط
بالظبط هذا معناه ان كل لفة في اللوب هيطبع الرقم مش
هذا مش هذا اللي بدي انا طبعا طبعا مثال تاني انا
بفرجلكوا الأغلاط اللي بيجروا فيها الطلاب مثلا انا
control X حطيت ال sum زي هيك
هذا صح و لا غلط الحل؟ ايش رأيكوا؟ اللي ورا هناك،
ايش رأيكوا الحل هذا صح و لا خطأ؟ تمام؟ ليش خطأ؟
عشان جانوا هم خطأ؟ تمام،
هيك أنا أعمل زي إيه؟ زي لما أخلص من الشجرة، بقب
السلة، و بروح أعبّ مجد تاني، تمام؟ و هذا غلط،
المفروض أنه أنا أظل أضيف على الصمم، تمام؟
هنا لأ هو الأصل لأ بينفعش هو أصلا المفروض لازم
السطر اللي بعد ال four يكون فيه indentation لازم
ال four يكون فيها حاجة صح ولا؟ هيك أنا كأني عملت
four مافيش فيها أي عمر تمام؟ واضح وانا الغلط؟
تمام؟ يعني لازم ال sum هذا يكون قبل ال loop و
أثناء ال loop أنا بضيف عليه ال data و بعد ما يخلص
ال loop بطبع محتوى ال sumماشي يا جماعة؟ طيب الآن
سؤال تاني شبيه فيه لو أنا طلبت منه نعمل برنامج
يحسب لل factorial تبع رقم ال factorial لرقم معين
اول حاجة ايش هو ال factorial او المضروب؟ تمام؟
اللي هو مضروب الرقم تمام؟ ايش هو مضروب الرقم؟
تمام؟ مضروب الرقم
هي حاجات واحد بيقول جلبت رياضيات البرامج لأ هي
حاجات بسيطة مضروب الخمسة هي ايش؟ واحد في اتنين او
هي مثلا خمسة في اربعة في تلاتة في اتنين في واحد
مضروب العشرة عشرة في تسعة في تمانية يعني مضروب ال
N في N ناقص واحد في N ناقص اتنين لحد اتنين في واحد
عشان أعرف أحل السؤال هذا بطلع أول حاجة مثلا في
مضروب الخمسة بلاقي مضروب كل الأرقام من خمسة لعنده
إيش لعند واحد هذا الشكل بإيش يوحينا أنا كيف ممكن
أمثل بالبرمجة لما يكون عندى تسلسل أرقام من خمسة
لإيش من خمسة لواحد for loop يعني أنا لاحظ أنه أنا
كيف لازم أعمل و بدى مرح على كل الأرقام من خمسة
لواحد و أضروبها في بعض صح ولا يبقى أنا عندي for
loop من وين؟من خمسة لواحد صح ولا بقدر اعمل for
loop من خمسة لواحد او مش خمسة لواحد هي المفروض ان
انا ادخل رقم in و اعمل for loop من in من in الى
واحد صح ولا يعني تبدأ من عند in و تنتهي وين عند
واحد نقدر نعملها ولا لا نفكر خلينا نعملها مع بعض
تمام اول حاجة بندخل الرقم هاي in int input
enter a number تمام؟
لحظة احنا اخدناه و خزنناه وين؟ في ال .. الان بدي
four loop تمرع الأرقام من وين لوين؟ من N على
المثال اللي عندنا من N لحد إيش؟ لحد واحد فبدي
أقوله four loop four I من وين نقطة البداية؟ اللي
هي N نقطة النهاية
لأ إيش نقطة النهاية؟ إيش أكتب؟ مين يقول ليه؟
بالظبط صفر طبعا لحد لازم أعمله هيك ليش لازم أعمله
هيك؟ مين يقول ليه؟ أخدناها المرة الماضية مش أخدنا
كيف نعمل loop معكوسة أنا ببدأ and in و عشان end
عند الواحد بحط صفر فهو لأ دايما جولنا الخانة
التانية دي اللي هي المكاناللي بدي أنتي .. لازم أحط
نهاية ناقص واحد بالظبط تمام؟ واضحة ولا لأ؟ النهاية
ناقص واحد أنا إذا بدي أنهي عند الواحد بحط صفر لمقن
ال follow من صفر لعشرة لو بدي أنهي عند العشرة بحط
11 تمام؟ واضحة يا جماعة يا قادي؟ و بحط ناقص واحد
هذي
مفهومة ولا لأ؟ اه range عفوا هذي نسينا ال range
تمام؟واضحة هذه يا جماعة بدأت عند ال N وحطيت صفر و
بعدين بقلب ناقص واحد
هل جيت لسه؟ احنا في الأول خلّيني خطوة خطوة اول
حاجة اكتشف انه بدنا لوب بدام انا عندي سلسلة أرقام
هد ممثلها بإيش اقبلوه برضه اشغل بخي شوية تمام؟ لأن
انا متطلع اللوب هذه أصلا 5×4×3×2×1 هي نفسها
1×2×3×4×5
ولا لأ التبديل
في الضرب عادي وفي الجمع عاديبجانب من أول ممكن
أستغنى عن ال for loop المعقوسة و الناقص مخي عشان
أظبطها ممكن أعمل for loop عادية تبدأ من واحد إلى n
زائد واحدصح و لا يا جماعة؟ لو جيت واحد بيقول طب
انت ليش من أول يعني جلبت مخنا و ادتنا المعكوسة؟ لأ
احنا بالتدريج شويه شويه، تمام؟ عشان نفهم هذا و
بعدين ليش احنا كيف اتدرجنا في التفكير، تمام؟ أثر
الضرب إبدالي، فممكن أنا بدل ما أعمل من N إلى 1،
أعمل من 1 إلى N، صح و لا؟ بس لاحظ أنا بدأت من وين؟
من واحد وانتهيت عند إيش؟ عند N زائد واحد مش N
تمام؟ حط N زائد واحد عشان ينتهي وين؟ عند ال N صح
انتوا معايا ولا لأ يا جماعة؟طيب، هالجامعة إيش
المطلوب؟ ماشي خلصنا ال for loop، هيك أخدنا نص
العلامة، طبعا ضايق نص النص التاني من العلامة، إيش
هو؟ إنه هو طالب المضروب، إحنا ماشي عملنا ال for
loop، طب إيش المطلوب هالجامعة؟ أنا اللي بتوقع هو
المفروض ينعمل إن الأرقام هذه اللي بمر عليها،
المفروض كلها تندرب في بعض، طبعا، طب كيف نخليها
تندرب في بعض؟ يعني هنا أجينا على نفس المشكلة
الأولى تحت الجامعة، إنه أنا في نفس اللحظة بمر علي
إيش؟على رقم واحد؟ صح و لا؟ يعني أنا بمور .. بعرفش
كل الأرقام عشان أضوبها، مش موجودين عندي كلهم مع
بعض، صح و لا يا جماعة؟ أنا بمور على رقم واحد، طب
كيف بدي أعمل أو أ .. أ .. أضمن أن الأرقام كلها
هتنضرف في بعض؟ مين عنده فكرة ممكن يقولنا إيش نعمل؟
او .. لحظة، مين؟ أيوة، تفضلي
قبل ال four تمام هى مانيجى نعمل متغير بديش اعمل
اسمه some بدي اعمل اسمه product جداش
قيمته؟ سفر تمام طيب و بعد ال four بنكتب سفر يساوي
درجت ال a i حسينا نعمل سفرية دماغ طيب ماشي اه
أزميلكوا أزميلتكوا فكرت صح جرت لو حطته سفرهتصير
مشكلة طب شوفوا كيف أنا هحل السؤال هذا هقول product
ضرب يساوي I و بعدين print product شوفوا كيف حلت
السؤال أنا يا جماعة خلاص هيك الحل كامل تمام اللي
سويته انا زي ما اتفجنا ان انا بده امر على ارقام و
كر لقم بمر عليه بده اضربهزي ما انا كنت في المثال
الأول، كل رقم أمر عليه أضيفه على السلة، هل جيتها
مادة سلة من نوع آخر؟ سميتها إيش؟ Product قيمتها
إيش؟ واحد، هل جيتها؟ أنا عارف ليش واحد، إذا أنا
عملت ال for loopمن 1 ستنتهي عند ال N أول قيمة لل I
ماذا ستكون؟ 1 نفترض أن أنا دخلت ال N خمسة، ماذا
سيفعل؟ سيضرب ال product، ماذا يعني product ضرب
يساوي I؟ نفس الشيء، product يساوي product ضرب I
هيجي ال product قيمته جداش واحد هيدربه في ال I
اللي هي إيش واحد الناتج واحد بيحطه في ال product
ده أثارة ال product مجدتش قيمتها واحد تمام؟ خلصنا
لسه اللي هو بمالها مخلصتش هيحط ال I بجداش اتنينصح
ولا؟ يا جماعة هيدرب ال .. الاتنين في واحد النتيجة
اللي في ال product هتصبح اتنين صح ولا؟ خلصنا؟ لأ
هيروح يحط ال I بإيش؟ بتلاتة هيدرب الاتنين اللي
موجودة في ال product في تلاتة اللي هي ال I صار ستة
في ال product صح ولا؟ لحظة مجدد بضرب في القيمة
الموجودة في ال product طبعا؟ صارت ال I باربع هيدرب
الاربع ال I في الستة اللي موجودة في ال product
صارت اربع وعشرينو بعدين صارت خمسة الايه هيضرب
الخمسة في اربع و عشرين صارت مية و عشرين يعني فعليا
انا بدأت من واحد و بعدين ضربته في اتنين و بعدين
ضربته في تلاتة و النتيجة كلها ضربتها في اربعة و
النتيجة كلها ضربتها في ايش؟ في خمسة زي ما انا في
المثال السابق كل رقم كنت امر عليه كنت اضيفه على
الصم هرجع الاختلاف ان كل رقم كنا امر عليه بدربه في
ايش؟عشان اطلع في الاخر حاصل ضرب كل ايش؟ كل الأرقام
واضحة الفكرة يا جماعة؟ يعني تقريبا تقريبا نفس
السؤال السابق بس بدأ للجامعة ضرب و هذا هو ايش ال
factorial واتفجنا انه انا ممكن بدل ما اضرب من
الكبير للصغير هي نفسها اضرب من الصغير للكبير
عشان توفي إتراشن، ممكن تحطها لإتنين، لأن الدرب في
واحد مش هيغير النتيجة، طبعا لازم ال product يكون
قيمته واحد، لازم، لو حطته صفر، مشكلة، لأن الواحد
هو المحايد الدربي
انت رأى number هاي خمسة هاي طلع الناتج إيش؟ مائة و
عشرين طيب نكمل إيش؟ واضح السؤال يا جماعة؟ هك و
انبسطه؟ هل جيت الضو واضح و الشرح واضح؟ ولا لسه فيه
مشكلة؟ طيب نمر على السؤال اللي بعده
طيب
شوف السؤال هذا write a program that reads a number
and prints whether it's prime or notإيش يعني
السؤال هذا؟ بدنا نعمل برنامج، بندخله رقم، و
بيقوللي هل الرقم هذا أولي ولا مش أولي؟ ما هو الرقم
الأول في الرياضيات؟ هو رقم اللي بيقبل القسمة فقط
على نفسه على واحدانتبهوا معايا، احنا هذه الأسئلة
مش عشان نتعلم رياضيات، عشان نتعلم طريقة التفكير،
تمام؟ صح الأمثلة رياضيات، لكن الهدف كيف الواحد
يفكر، ماشي؟ طيب، إيش هو الرقم الأولي؟ هو الرقم
اللي بيقبل القسمة على نفسه وعلى واحد، يعني قواسمه
جدش عددهم؟ اتنين، قواسمه عددهم اتنين، أيوة
طيب، من عنده فكرة كيف نعرف الرقم أولي أو مش أول؟
طيب عشان نتناقش .. ايوة اتفضلي ايش .. كيف نعرف؟
اذا انا باخد رقم من المستخدم و بعدين نفحص الرقم
هذا .. تقبل نفسي ما اقولش على واحد .. يعني ..
بيكون .. و بعدين يفحصوا على واحد .. اثنين .. تلاتة
.. لا تسمع .. لعند الرقم نفسه جدا .. طيب .. اذنكوا
افكر الصح .. بتقولت ماشي .. بدخل رقم .. و بصير
افحص نتيجة قسمة الرقم على كل الأرقام من واحد ..لحد
ايش؟ لحد الرقم نفسه طبعا طيب كيف بدي أنفذها كبرمجة
هذه؟ ماشي كلامك سليم طبعا بدي أنفكر هل جيت اه يعني
هل جيت ازمنتكوا كتفكير منطق بتقول ماشي انا ايش
بسوي مثلا دخلت رقم سبعة طبعا بدي أمسك كل الأرقام
من واحد إلى سبعة و اجرب سبعة على واحد جديشسبعة على
واحد سبعة بيقبل القسم عليه بدون باقي؟ أه صحيح يبقى
هذا إيش قاسم يعتبر، إيش هو القاسم اللي هو بيقسم
الرقم بدون باقي؟ سبعة على اتنين
سنة على ثلاثة في باقي، سبعة على أربعة في باقي،
سبعة على خمسة في باقي، سبعة على ستة في باقي، سبعة
على سبعة فيش في باقي، كم صح طلع عندي؟ بعد الصحات،
طبعا طلع عندي صحين، طلع عندي صحين، مدام صحين
بالظبط هو عدد ايش؟ عدد أولتسعة كيف أعرف إنه أول
ولا لا؟ بتجرب تسعة على واحد بيقبل قسم بدون باقي
تسعة على اتنين لأ تسعة على تلاتة لأ تسعة على أربعة
لأ تسعة على خمسة لأ تسعة على تلاتة لأ تسعة على
خمسة لأ تسعة على ستة لأ تسعة على سبعة لأ تسعة على
تمانية لأ تسعة على تسعة لأ كم صح عندي؟ تلاتة أكتر
من اتنين يبقى مش أولصح ولا لاش هذا الكلام حلناه
بال .. بالكلام كيف ننفذ هذا الكلام كبرمجة تمام
أيوة تمام
اول حاجة لازم يكون عندي four لازم four من وين لوين
من واحد الى الرقم نفسه تمام طيب داخل ال four بدي
افحص افحص ايشلسه واحدة واحدة احنا لكل رقم بمر عليه
في ال four بده اجاله اشوف باقر قسمه خلينا خطوة
خطوة اول حاجة نطلب ادخال الرقم يساوي input enter
a number
بعدين بدي اعمل for loop for i in range من واحد الى
n زائد واحد هيك انا مريت على من؟ على كل الأرقام من
واحد الى الرقم نفسه for i in range من واحد الى n
زائد واحد طيب لكل رقم ايش العملية اللي بعملها؟
بشوف باقي قسمتهعلى ال I مش هيك بتعمل انا اللي ..
اللي .. اللي شرحته في الكلام بحاول انافظه، تمام؟
فبدأ أقول له if .. if مين على مين؟ if ال M الرقم
اللي دخلته باقي قسمته على ال I يساوي صفر، إيش
يعني؟ بقبل قسمة بدون باقي، إيش أعمل؟ أحط عليه صحة،
تمام؟ و أعد الصحات في الآخرطبعا هذا .. ايوة ..
هلجينا .. صحات و نعدهم .. هذا بنعمله احنا بالبلد
هيك و احنا قاعدين .. قاعدين نتعرض .. تمام؟ لكن في
البرمجة .. كيف بنمثلها؟ بنعرف بالظبط عدات .. تمام؟
و بنسير العد .. تمام؟ أكم مرة طالع الباقي القسم
صفر .. تمام؟ فبنعمل counterأو إيش نعمل جبل ال loop
تمام برا هنا ليش برا تفرق خالص يعني مكان السطر
بيخرب الشغل كله برا ليش لو حطيته جوا معناه كل لفة
بدون صفر تمام counter قيمته جديش صفر فكل ما تلاقي
ان باقى قسمته على I يساوي صفر بيقبل القسمة بدون
باقي روح زيد ال counter إيش تمام بواحد
واضحتها يا جماعة هذي؟ طبعا؟ الان انا كل اللي بديه
يدللي ان الرقم هذا اول او مش اول هو مين ال counter
بالظبط فبعد اللوب بعد ما خلص اللوب كله بتطلع عنين؟
لاحظ وين بدك تبقى لجهة السطر؟ برا اللوب طبعا؟
ماغلطش وحطه جوا اللوب بكرا في الامتحان المسافات
مالهاوهو بتفرق، بتقول هي لأ هي دي برا، هي لأ هي دي
جوا، هحاسبق عليها، تمام؟ جوا بتفرق خالص عن برا،
تمام؟ فبنقولله يعني if ال counter تمام يساوي
اتنين، تمام؟ print still
in is prime ليش عملت هيك؟عشان أطبع إن الرقم عبارة
عن الـ prime و لأن الرقم رقم بدي أحوله لإيش لازم
أطبعه زي نفسي تمام؟ حد فاهم حاجة يا جماعة؟ طيب
واضح كيف تسلسل التفكير كيف أنا فكرت فيه؟ في الأول
بفكر فيه زي هيك بقول أه ماشي و انا بدي أشوف الرقم
prime بدي أشوف أمره على كل الأرقام من واحد إلى
الرقم نفسه و أعد كم قاسم للرقمكيف أبدأ؟ بعمل
counter و أمر على الأرقام for loop و كل رقم بمر
عليه بشوف باقى قسمة الرقم على الرقم اللي بمر عليه
إذا باخد قسمة صفر زيد ال counter بواحد في الآخر
بطلع ال counter إذا ال counter اتنين بعرف إن الرقم
ماله أولا تعالوا نعمل run دخل الرقم و ليكن ما فانت
تسعة ما طلعش حاجة يعني أنا ممكن .. ليش؟ لأن بدي
أقوله هنا elseعلى أساس أقوله هنا اطبعلي not prime
is
not prime يعني إذا كانت اتنين هاي
تسعة تمام هاي تسعة not prime تمام هاي سبعة تمام
هاي إيش السبعة ال primeطب لحظة بدنا ايش احنا لجيت؟
هذا الحل مفهوم .. بدنا نحسن الحل .. كيف نحسن الحل؟
بالظبط نقلل الخطوات .. كيف نقلل الخطوات؟ الآن يا
جماعة مفهوم بديهيا ومنطقيا .. تمام؟ أن أي رقم في
الدنيا بيقسم على نفسه .. و أي رقم في الدنيا بيقسم
على واحد .. تمام؟ ف ..يعني ممكن احنا نحسن الحل كيف
ان انا بدل ما افحص من واحد لان طبعا مفروض منه ان
كل رقم بيقسم على واحد يعني هل ال counter هتكون
قيمته اقل من اتنين ممكن؟ مستحيل تكون اقل من اتنين
طبعا يبقى انا مافيش دا اصلا افحص اذا الرقم بيقسم
على واحد و اذا الرقم بيقسم على نفسه لان هذه
مفهومين ماله بديهية طبعا فانا ممكن افحص اذا الرقم
بيقسم
نقص واحد إذا ال counter صفر تمام بكون ماله ال
prime صح ولا لأ أنا اختصرت إيش خطوطين فهمتوا عليه
ولا لأ يا جماعة يعني أنا بدي أجي هنا و أقوله ابدا
لمن اتنين إلى إيش إلى n تمام و أقوله إيش هنا إذا
ال counter صفرأنتوا معايا ولا لأ؟ إذا ال counter
صفر بعتبر الرقم ال prime هاي تسعة ايش كتب ليه؟ not
prime ليش not prime؟ لأنه لما مر من اتنين ل تمانية
تمام؟ في رقم بقسم التسعة اللي هو تلاتة اختصرت
خطوطين، بدنا نختصره أكتر كمان مين يقولي كيف نختصره
أكتر؟
طيب انتبه معايا هل جيت انا ايش بسوي؟ بمسك كل
الأرقام اول حاجة انتوا في الحتة اللي هم فاهمين؟ اه
بدي امسك كل الأرقام من اتنين إلى ما قبل الرقم
تمام؟ اذا في أي رقم بينهمبقسم الرقم على طول ممكن
اقول ان الرقم ماله not prime صح و لا افترضت انا
عندي رقم زي مثلا 45 رقم 45 مثلا بدي اشوف هذا prime
ولا not prime ايش بعمل بمسك الأرقام من 2 ل 44 45
على 2 تطلع باقي 45 على 3طلع مثلا خمستاشر صح ولا؟
خلاص المفروض أنه بدأ بقسم على تلاتةيبقى not prime
لكن في البيثال اللي عنده هنا يجرب يقسم على أربع
ويجرب يقسم على خمسة وستة وسبعة لحد ايش لحد اربع
واربعين تمام ويعد ال count هيكون قيمته كبيرة انا
ممكن اختصر الحل اقول خلاص بخلاص قلت خليني اكمل
مفروض ايش اقول انا خلاص مدام قسم على اي رقم من
اتنين لاربع واربعين اعتبر انه رقم له not prime لأ
شوف ايش بدي اعمله اناأريد أن أعرف هنا is prime
يساوي true وأريد أن أزيل الـ counter عرفت أنا
بوليان إيش اسمه؟ is prime ولم أجد قيمة الـ is
prime مبدئيا true شوف إيش أريد أن أفعله أريد أن
أقول هنا if ال n بقى قسمة على أي صفر أو
خليها مثلا false في الأول
is prime false و break و
بعدين بقوله if is prime يساوي true كذا تطلعوا
الحل الموجود قدامكم هقراه من البداية اول حاجة دخلت
ايش اناالرقم هذا أفضل حل و بعدين حطيت افترضت انه
فيه Boolean أخدت ال Boolean اللي هو يا true يا
force بيكون افترضت انه عندي متغير اسمه is prime
قيمته في الأول ايش؟ true يعني انا افترضت انه اي
رقم هيكون ال prime ما لم يثبت العكس تمام؟ و بعدين
امسكت كل الأرقام من اتنين إلى قبل الرقم
إذا كانت نتيجة قسم ال N على I صفر يعني إذا بقسم
على أي رقم بين اتنين الرقم نفسه خلاص اعتبر ان
الرقم ماله مش prime فحط ال is prime مالهافالس وعلى
طول اعمل ايش break أخدتوها break صحيح ليه ايش
break يعني اطلع من اللوم مافيش دقيقة اتكمل اصلا
انا لما قسمت 45 ع تلاتة و طلع باقي القسم الصخر
تمام خلاص انا وصلت لنتيجة ايشإن الرقم ليس الـ
prime في دقيقة أكمل و أتعب حالي و أتحصل على بقية
الأرقام لحد 44 تمام؟ خلاص بنهي الموضوع و أقول أن
الرقم ليس الـ prime وين النتيجة النهائية ستكون؟ إن
الرقم prime أو لا؟
يعني انا الآن خلصت وطلعت من ال loop break ايش يعني
break؟ يعني اطلع من ال loop طبعا اطلع من ال loop
مش من البرنامج طبعا لما يطلع من ال loop وين هيكمل؟
على ال f statement وين النتيجة ان الرقم prime او
لا؟ في ال f prime طبعا الان اصلا هو لو مدخلش على
ال f statement هتبقى ال f prime ايش؟ true لو دخل
على ال f statement ايش هيدخل على ال f statement؟
معناه لو اي رقمكانت نتيجة قسمة الـ N عليه بدون صفر
يعني بقبل قسم عليه على الطول هيتصير ال is ال is ال
prime ايش؟ false تمام؟ هيطلع من ال loop و على طول
ال N هفحص و الله إذا ال is ال prime ضايلة true
تمام؟ اطبع على اللقان prime غير يكتب عليها false
عشان نفهم أكتر من أن نطبق على مثال عملي تمام؟ ناخد
السابعة معايا انتبهوا معايا ناخد السابعة في الأول
افترضت أن الرقم ماله
الرقم افترضت انه prime بعدين امسكت الأرقام من اين؟
من اتنين الى ستة اتنين اتنين بقى قص متعصف على ال I
الـ N قيمتها سبعة، صح؟ سبعة باقية، هل بيقبل قسم
على اتنين بدون باقي؟ لأ، هيتنفذ هذا، مش هيتنفذ،
صح؟ بعدين، هتصير سبعة باقية قسمتها على إيش؟ على
تلاتة، فيه باقي، يبجي هذا ماله، مش هيتنفذ، وعلى
أربعة فيه باقي، يبجي مش هيتنفذ، وعلى خمسة فيه
باقي، وعلى ستة فيه باقي، صح؟ يبجي هذا ال code ماله
كله، مش هيتنفذ، ضلك ال is prime جديش ال true هيقبع
على إيش؟الـ prime نرجع لمثال 9 تمام 9 هيجرب 9 على
2 فيه باقي مش هينفذ هذا 9 أتلاتة تمام بقبل قسمه
بدون باقي تمام هينفذها يتصرف الـ is the prime إيش
force و على طول خلاص مدام أنا لجيت حاجة بتنهي
الشرط أطلع من ال loop تمام طلع من ال loop روح
فحصها لجيت ال is the prime جدش قيمته تمام
هذا ال code امتى هيروح له البرنامج؟ يا اما اللوب
خلصت يا اما طلع منها ب break تمام فبتفحص هل ال is
prime ضايلة قيمة true ولا لأ؟ اذا كانت true خلص ال
prime في حالة التسعة تمام هذه هتكون false في حالة
القسمعة تلاتة صح ولا لأ فهيجي وين على is not prime
واضح يا جماعة؟ واحد يقول ليه طب ليش من أول أنت
مدتنا الحل هذا؟ لأ نبدأ بالتدريج، شويه شويه نفكر،
في الأول بدأنا أن نجرب كل الأرقام من واحد إلى
الرقم، و بعدين اختصرناها نت فبدأنا من اتنين إلى
جابل الرقم بواحد، بعدين اختصرناها أكتر، نقول لأ
والله إذا اتقسم على أي رقم في النص، خلاص اعتبر أنه
not prime وانهي الموضوع، واضحة يا جماعة؟طبعا هذه
الخبرة بتجي من وين كل ما الواحد عمل practice أكتر
و جرب يبرمج في البيت كل ما ايش صارت تفكير المنطقة
عنده أقوى تمام؟ واضح
السؤال؟ يعني لازم أنتوا هالجي تروحوا على البيت و
تجربوا تبرمجوا تمام؟ و هذه الأمور أنه انا أحتاج
أطلع من ال break هذه بتمر كتير في البرمجة تمام؟
كتير بحتاج أنه انا أوقف اللوب عشان أشتغل في حاجة
تانية
طيب شوف السؤال هذا بدنا نعمل سؤال أصعب
شوية بدنا نبقى اقول اننا ال gate مابدناش في المادة
ده كلها ايش؟ اه كلها المراجعة المفروض انتوا
عارفينها كلها تمام؟ بس هذا كله مطلوب منكوا صح انها
مراجعة بس كلها مطلوبة منكوا طيب السؤال اللي بدنا
نسويه ال gate بدنا نعمل كتير من البرامج بتطلب من
المستخدم يدخل input تمام؟مثلا انا ادخل input اطلب
المستخدم يدخلي اسماء الطلبة ادخل اسماء لحد ما يطبع
لي كلمة done انه ايش انه خلص بعد ما يخلص مثلا ممكن
ياخد اسماء الطلبة هدولة يشغل عليهم شغلة معينة او
مثلا اعمل برنامج اطلب المستخدم يدخلي ارقام تمام
يدخل ارقام لحد ما يدخل ناقص واحديوقف عملية الادخال
ويرح يعمل حاجة على الأرقام اللي انا دخلتها فهلجيت
احنا بنشوف كيف احنا ممكن نعمل عملية ادخال مستمرة
ايش يعني ان انا اطلب منه يدخل بطريقة مستمرة طيب
انتبهوا معايا بالله هلجيت انا كيف ممكن اعمل عملية
ادخال مستمرة ايوة يحكولي كيف ممكن اعمل عملية ادخال
مستمرة عنكوا فكرة عن الموضوع هذا؟
طبعا هو أنا هستخدم loop لازم، طبعا؟ ايوة
أو الطرق مثلا وإنه إذا دخل المستخدم بعدين ..
مستخدم F إذا دخل المستخدم ثاند واحد هيوقف ال break
.. هيعمل .. هيوقف العملية اللي عملهاطبعا هذا صحيح
الأول حاجة بدنا نفكر طالما انا بحكي عن عملية ادخال
مستمرة نبدأ نتدرج في التفكير خطوة خطوة بدام
العملية ادخال مستمرة يبقى بده loop طبعا ال loop
انا بعملها على طريق تاني يا اما four يا اما one
طبعا النصيحة العامة ال recommendationإذا العملية
نقطة البداية والنهاية معروفة بنستخدم for إذا نقطة
النهاية مش محددة بنستخدم while هذا لا يمنع أن
نستخدم ال while مكان ال for تمام؟ ممكن نعملها لكن
اللي ينصح في أن لو العملية مش معروفة نقطة نهايتها
أو نقطة نهايتها مثلا في مثلنا هذا بتعتمد على input
تع ال user أنا بدى أستمر لحد ما ال user يدخل done
في الحالة هذه ينصح باستخدام ال whileطبعاً في أكتر
من حل، الحل الأول مثلا، أن أعمل عملية while مستمر
لما لا نهاية، كيف أعملها مستمر لما لا نهاية؟ أعمل
while true، طبعاً؟ ضلك مستمر، و أعمل عملية ادخل، و
كل حاجة بتدخلها أفحصهاكشرط شوف هل مثلا ال user دخل
ضن ولا لأ إذا دخل عملية ضن بدي أطلع من ال loop
break تمام مادخلش done بدي أعمل العملية المطلوبة
على ال input اللي دخله ال user هذا حل الحل الآخر
أنه أنا أعمل عملية input في البداية قبل ال loop
تمام و أخد النتيجةوفحصها هل هي تساوي شرط اعمل
while مثلا اذا كانت لا تساوي done اعمل عملية واطلب
ادخال مرة تانية تمام بالطرق تانية طيب نشوف الطريقة
الأولى انه اتفجنا انه انا بدي اخل العملية تدخل
مستمرة لأي حد ما يتحقق شرط معين فبنقول مثلا while
true ايش يعني while true؟يعني عملية مستمرة دايما
احنا نفسنا لازم ننهيها بناء على شرط معين طبعا
while true روح اعمل input طبعا فرضا انا بدأ أدخل
أسماء أشخاص بدأ اعمل name و اقول input please
enter a name
الان هذا ال name مثلا انا بتطبعهم الأسماء تمام؟
والله إذا كان done اطلع من ال loop إذا مش done
اطبع الاسم واطلب اسم إيش واطلب اسم تاني كأبسط حاجة
ممكن نعملها بال input اللي بنسوي فلما نفحص مين؟ ال
name والله إذا ال name هذا يساوي done بدنا نطلع من
ال loop بدنا نقوله break
Els print ال
name ايش هيسوي يا جماعة؟ هيجي يطلب input؟ هيفحص ال
name؟ تمام؟ اذا كان done هيعمل break عشان يطلع منه
غير هيك هيعمل ايش؟ print ال name وين هيروح بعدين؟
هيكمل في ال loop طبعا مدان مافيش حاجة تنهي ال loop
هيضل فيها لما لا نهاية الحاجة الوحيدة اللي بتخليه
يطلع من ال loop هي إيش؟ إذا كانت ال name فيها done
هتجرب هنا
enter أنام، هاي أحمد طبعا ليه أحمد؟ و قال لي إيش
كمان؟ enter أنام، هاي علي طبعا ليه علي؟ و قاللي
enter أنام، أملطبعا لحد ما احط ايش كلمة done هيطلع
من ايش من البرنامج واضحة
يا جماعة حل اخر طبعا انه انا ممكن كبداية اطلب من
المستخدم يدخلي ايش input name و بعدين اقوله طالما
الـ name لا يساوي مش هذه اشارة لا يساوي طبعا طالما
لا يساوي done اطبع
لل name تمام وعمللي كمان عملية ايش كمان عملية
input
نفس الـ function بالظبط تمام؟ ايش اللي هيصير؟ انا
في الأول بعمل عملية input برا تمام؟ ودخلت hyphen
name هنا الان فحصت ال name هل هو يساوي done ولا
لأ؟ اذا لا يساوي done هيطبع ال name وهيطلب مني
كمان مرة ايش؟ input تمام؟ طب بعد ما دخل input وين
هيروح؟ هيكمل في ال loop هيفحص هل ال name يساوي
done ولا لأ؟ اه يساوي done هيطلع لا يساوي done
هيكملهيطبع على ال name وهيطلب input هاي كمان نفس
الشيء هاي علي تمام احمد تمام وهاي done اي حل من
الاتنين زي بعض وكويسين ماشي يا جماعة نكمل في هذا
السؤال طيب نتعب السؤال شوية لو انا طلبت شوف السؤال
هذا كيف بدي اطلب من المستخدم يدخلي أرقامعددها ده
محدود تمام؟ يعني ده خلي مثلا افرضها ده إيش هيستفيد
من البرنامج؟ بدنا نعمل برنامج لإنساعد المدرسين
اللي هو دخل علامات الطلاب كلهم و لما اتخلص تمام؟
دخل ناقص واحد مثلا على أساس أن مافيش علامة بتكون
ناقص واحد تمام؟ هو بدخل علامات الطلاب في الآخر بحط
ناقص واحد خلص عملية ادخال هيطبع لي مثلا
أعلى علامة وأقل علامة تمام وهي الطبعين المتوسط
بتاع العلامات ال average هذا برنامج مفيد صح أو لا؟
طيب انتوا
معايش من هنا نعمل؟ طيب الأول حاجة بنقوله enter
الـ student mark كيف؟
هايبقى نحط هنا إيش؟ هنا نكتب mark تمام؟ ونحط هنا
إيش؟ integer أو float تمام؟
عشان يحولها لرقم نقوله طالما ال mark هذه لا تساوي
سالب واحد طيب
هنا خلينا نقول كأبسط استخدام طباعةهك طبعا ايش و
نطلب منه يدخل علامة تانية هذه كلها بنعيدها تحت
لحظة
بس هنا احنا ماعملناش حاجة بس ايش بندخل العلامات و
بنطبعها صح ولا لحد ما دخلنا انا ناقص واحد هاي مثلا
ستينتمام 90 تمام لما دخل ناقص واحد هيطلع طيب هلجيت
نيجي أول حاجة بدنا نشوف مثلا مجموع كل الدرجات أبسط
حاجة كيف ممكن نجيب لما احط طبعا مات المفروض يطبع
لمجموع كل الدرجات لما أحط ناقص واحد لما أحط ناقص
واحد هيطلع من ال loop ويطبع للمجموع كيف ممكن نجيب
مجموع كل الدرجات اللي بتم إدخالهابالظبط تمام؟ زي
ما عملنا قبل شوية مش أنا بمره على أرقام واحد واحد
كل رقم بمره عليه باخده برميه وين؟ في ال sum تمام؟
فباجي برا هنا بعمل إيش متغير اسمه مقماله sum قيمته
إيش؟ قيمته صفر تمام؟ أه و كل رقم بمره عليه بضيفه
وين؟ بضيف ال mark عليه في الآخر بعد ما يطلع من ال
loop بقوله print
Sum معايا يا جماعة؟ هي أنا جبت مجموع العلامات هاي
مثلا ستين سبعين تمانين وبعدين ناقص واحد تمام؟
مجموعة مجد إيش؟ مائة متين وعشر طيب المجموعة ممكن
مايكونش مفيد كتير للمدرس جد إيش؟ جد ال averageصح؟
طب كيف بنجيب ال average؟ مجموعهم على عددهم طيب،
كيف بنجيب ال sum؟ ال sum معروف أن ال average هو
المجموع على عدده، طب المجموع موجود عندنا؟ ايوة
بالظبط، تمام، المفروض أن كل رقم أدخلهأزيد ال
counter بإيش؟ بواحد يعني المفروض إذا أعمل هنا
متغير تاني اسمه counter أحطه بصفر و هنا إذا ال
counter قيمته لا يتساوي ناقص واحد اعمل ال counter
plus يساوي واحد كيف؟
قبل أو بعد مش هتفرقالمهم إن أنا جوا ال loop في
الآخر بقول print sum على او يعني عشان ننطب الشغل
نعرف متغير برا ال loop لأن عملية الحساب في الآخر
مش هحط ال average جوا، ظلط بعد ما في الآخر يجيب
المجموع كله والعدد كله بقول average يساوي sum إذا
بدنا الكثور بنخليهمهي double slashed عشان يجيب لي
ايش صحيح تمام؟ و في الآخر بقوله print average هو
هذا اللي بيعنيني تمام؟
هى مثلا اندخل علام الأولى 80 و 90 و 100 و هى ناقص
واحد تمام؟ جدش طلع ال average 90 تمام؟
تمانين وتسعين مية وسبعين ومية متين وسبعين ع تلاتة
يعني تسعين طبعا هذا جبنا ال average انا طلبت كمان
حبذن و اقدر اعرف كمدرس اقل علامة دخلت و اقل علامة
طيب
ماشي خلينا ايش نشوف حاجة حاجة احنا بنعرف ان في عنا
احنا method موجودة في ال .. في ال .. ده حتى انا
انا كتبته مفهوممرة تانية يا جماعة، مشكلة أنك
تتوجهها دائما مع الطلبة، ماشي انت بتحضر المحاضرة
مبسوطين و فاهمين، بتروحوا على البيت، بتشتغلوش، كل
هذا بتنسوه، لازم زي مجودة ال practice العملي طيب،
عندنا method احنا في ال python جاهزة، اللي هي max
و minmax بتحطله أي أرقام 80, 75, 95 تمام و لحالها
بترجح أكبر رقم و بنخزنه فيه تغير صح يعني هلجيت
مثلا في مثال عدد ال M قدش هيكون فيها 95 و ال min
نفس الحاجة بس بترجحأصغر رقم، هذه method ممتازة لكن
فيها مشكلة إيش هي؟ إنه لازم أكون أنا بشكل مسبق
عارف كل الأرقام، تمام؟ و هذا مش هيتحقق هنا لأنه
أنا شغال في Loop و في اللحظة الواحدة بكون عارف
إيش، تيمة واحدة، صح ولا؟ فمقدرش أنفذ ال max، صح
ولا؟ يعني أنا الأرقام خلص اللي ب .. اللي بخلص منه
في ال loop بنسأه بروح الرقم اللي بعده، تمام؟
ممتاز هاي زميلة بيفكرت صح احنا بنعمل متغير تمام اه
بس كيف بننفذه هذا شوفوا الفكرة هذه ايش بنسوه تمام
بدنا نعمل في الأول متغير تمام نسميه max تمام
و متغير تاني اسمه من نحطهم الأثنين ايش صفر هذا ايش
معناه انا عرفت ايش متغيرين max و من قيمتهم ايش
قيمته صفر تمام او لأ انا بتعرف ال ال max قيمته صفر
و ال min قيمته تسعة تسعة تسعة قيمة كبيرة خلينا في
الاول على ال max بتجيب انا اعلىعرفت في الأول max
قيمته، قيمته صفر، ايش بسوّع ال gate؟ انا زي ما قلت
مشكلة ان انا استخدام ال method max مش هقدر اعملها
لأنه ال max بتطلب ان اكون عارف كل الأرقام، لكن انا
في ال for loop بمرق على رقمالرقم اللى بدى أسويه
أنا بعرف متغير اسمه max قيمته قليلة جدا ليه صفر
ليش كل رقم بمر عليه بشوف والله هذا الرقم أكبر من
ال max ولا لأ إذا أكبر من ال max بيصير هو إيش
بيصير هو ال max تمام واضحة الفكرة يعني الآن أنا
مريت على الرقم الأول بدي أقوله if ال mark هذه أكبر
من ال max max يساوي ال markبس خلصت انا دخلت اول
درجة ستين جدش قيمة ال max هتصير؟ ستين لف رجع تاني
ع اللوم دخلت خمسة و تسعين الخمسة و تسعين .. لان
قيمة ال max صارت ستين دخلت كمان خمسة و تسعين هيجي
الرقم الجديد خمسة و تسعين يقارنه مع ال max الجديد
اللي هي ستين صار اكبر رقم ايش؟ خمسة و تسعين دخلت
بعدين تسعينهل التسعين أكبر من 95؟ لا، فهيظل محافظ
على القيمة، يعني هي الفكرة أنه أنا بما أني بمرق
على كل رقم .. كل رقم على حده، طبعا، ضروري أعرف
متغير على أساس أني أحفظ فيه أكبر قيمة، كيف أنه أنا
ب .. كل رقم بيجيني بقارنه مع القيمة هذه، و الله
أكبر بيصير هو الكبير، مش أكبر روح روح، مالش فيك،
طبعا؟
واضح يا جماعة؟ زي أنا يا ناس بصفهم على طابور، بدي
أشوف أطول واحد فيهم، مش عارف أنا أجيهم أنا ميت
واحد، لو صعب أصفهم هيك جانب بعض و أختار أطول واحد،
بقوله اسمعوا إجفوا في الطابور و مروا عليه واحد
واحد، تمام؟ بمسك الأول، بقوله أنت تعال، طوله مية و
عشرين، بس بفترض أنه إيش؟ هو أطول واحد، إجفناتعالى
اللى بعده اه انت اطول اذا اطول خلاص انت روح روح و
احط انت بتسير مكانه تمام مرة اللى بعده انت اطول لأ
خلاص بناشيها اللى بعده انت اطول لأ لجيت واحد اطول
منه بقول اللى عندى خلاص انت روح تعالى انت بتصير
اطول واحد واضحة الفكرة كيف؟ كيف؟
إذا ال mark أكبر من ال max بقارنها مع ال max بتصير
ال mark هي إيش؟ ال max الجديدة في الآخر بقول print
ال
max هيك أنا بجيب أكبر رقم طب كيف نجيب؟ نتأكد من
هذه قبل ما نشوف أصغر رقم تعالوا هنا نعمل runتمام؟
وتعالى ندخل علامات تمام؟ تسعين ستين خمسة وسبعين
واحد و تسعين تمام؟ هى ناقص واحد اكبر علامة المفروض
ايش واحد و تسعين هى طبعا ال average تسعة وسبعين و
ال max هو ايش هو واحد و تسعين
الـ Min هالجهد فيها trick صغيرة الـ Min بقدرش أعرف
متغير قيمته صفر ليش؟ لأنه كيف فكرة الـ Min أنه أنا
بدي أجيب أصغر قيمة فبدي أشوف أول علامة بتدخل
بقارنها بمن؟ بالـ Min هل العلامة اللي دخلتها أصغر
من Min؟ لو الـ Min قيمتها صفر ولا علامة هتكون أقل
من إيش؟ من صفر فدائما الـ Min إحنا بنحطها أكبر
قيمة ممكنةيعني بنقول الـ Min هذه 101 خلّيها، ممكن
طالب ياخد 100، صح ولا لأ؟ فالآن فرضا أول علامة
دخلكها 99
بفترض دايما أن أول علامة تدخل هي تصير الـ Min، صح
ولا؟ مش هذا المفروض، تمام؟ فبعمل شرط تاني هنا، هذا
الشرط الأول خاص في مين؟ في ال Max، في شرط تاني، F
تانية، if ال mark أصغر من ال Min، بتصير هي ال Min،
ال Min يساوي ال Markفي الأول دخلت تسعة و تسعين هل
تسعة و تسعين أصغر من مية واحد؟ أه بتصير ال main
قداش تسعة و تسعين بعدين دخلت خمسة و سبعين هل
الخمسة و سبعين أقل من تسعة و تسعين؟ أه أقل بتصير
الخمسة و سبعين أقل حاجة دخلت مية واحد جاب مية هل
المية أقل من الخمسة و سبعين؟ لأ تمانين أقل من
الخمسة و سبعين؟ لأ ستين أقل من الخمسة و سبعين؟ أه
بتصير هي ال minimum تمام فلاحظوا هنا عشان أجيب
الكبير والصغير دايما ال maximum حطناهاأقيمة مبدئية
أقل قيمة على أساس تصبح أول قيمة تدخل هي ما هي ال
max وال minimum مبدئيا حطناه أعلى قيمة ممكنة على
أساس أن أول قيمة تدخل تصبح ال min واضحة كيف يا
جماعة؟ هذيك إذا بنجيب بعدك تاني و تالت و رابع تمام
هنعتمد بعدك ال list اللي هناخدهاكموضوع جديد على
اساس الخزن نقدر نعرف كل الأرقام اللي بتدخل و أقدر
أقارن و أشوف أكبر واحد و في النص و التاني و التالت
و الرابع هيك انا و انا مش محتفظ في العلامات اللي
دخلت كلها تمام هقدر أجيب حاجات محدودة اللي هي ال
maximum و ال minimum و ال average واضح يا جماعة
نيجي هنا نطبع عشان نرتب الناتج نقول هنا average
يساوي و نحط هنا أيش stringAverage تمام ونجي هنا
ونقوله max يساوي ونقوله str ال
max ونقوله print ال
minimum يساوي str minimum تمام
ونعمل run
مثلا، خمسة و سبعين تمانين خمسة و تسعين تلاتة و
سبعين ستين خمسة و أربعين حط ناقص واحد عشان نطلع
تمام طبعا لجل ال average للعلامات عندك واحد و
سبعين أعلى علامة خمسة و تسعين وأقل علامة جديش خمسة
و أربعين واضح
يا جماعة حل السؤال؟ في أي سؤال؟ طيب ناخد تمرين
تاني خلينا
ناخد ال functions شوية رجعها أول
حاجة إيش فايدة ال functions؟
عادة انا بلجأ لاستخدام ال functions لما تكون عندي
وظائف اللي هي استخدام متكرر يعني مثلا مثلا ال
factorial ممكن انا بعمل عملية رياضية كتيرة و بحتاج
ان احسب ال factorial للرقم كتيربدل ما انا اكرر ال
code لحساب ال factorial بعمله ك function وبستدعيه
مرة واحدة فهو مهم في الموضوع حد اسمها ال
encapsulation
اللي هو من كابسولة يعني في النهاية أنا الكابسولة
عادي باهتمش إيش فيها بستخدمها و ببلعها هو أنا مش
فاهم الحاجة صح ولا لأ هذا مفهوم ال encapsulation
في البرمجة معناه أنه قسم ال code تبعك لأجزاء
لوحداتعلى شكل functions على أساس المستخدم يستدعي
الـ function بدون أن يدخل في تفاصيل مافي داخل الـ
function وفي نفس الوقت بقلل عدد ال code لأنه لن
أحتاج أن أكرر ال code بل أحتاج أن أكرر استدعاء ال
function طيب
code ال factorial بس بشكل سريع أنا أعيده بدي أكتبه
ك function
بنكتب function أعطيها الرقم وترجع لإيش؟واترجعوا لل
factorial تعالى الرقم هذا ايش بيقنع ان ال function
اعطيها رقم واترجع لل function كيف بنقرر ال
function؟ بنكتب دائما في الأول death تمام؟ و بعدين
بنكتب اسم ال function تمام؟ بنسميها مثلا ايش؟
factorial و بعدين بنكتب ال parameters او ال
arguments اللي هو ال parameters اللي هو ال
functionطبعا .. لحظة .. هذا ال .. ال .. ال .. ايش
ال parameters بتاخدها؟ طبعا احنا بنقرا في ال
function ممكن ما تاخدش ولا parameter في الحالة هذه
بحط ish قسين و خلاص طبعا و ممكن تاخد من parameter
لعدد غير محدود طيب عدد ال parameters ايش بحددهم؟
ايش نوع المظيفة اللي بدها تعملها ال function؟ طبعا
المفروض في حالتي هذه ال factorial انه انا ابعتلها
رقم و ترجعليه رقمدائما أفكر قبل أن أعمل الـ
function أشوف إيش ال input تبعها و إيش ال output
ال input تبعها بيكون رقم و ال output رقم طيب إيش
ال input تبعها بيكون رقم و لا يكون n اللي هو
المفروض يكون رقم صح؟ إلى أن باجي بكتب ال code تبعي
اللي هو code الفكتوري العادى كتبناها قبل شوية اللي
هو بنعرف ال product يسوى واحد و بنعمل for loop for
i in rangeمن اتنين خلينا نقول الى N زائد واحد عشان
يكون ال N داخلة في الموضوع و بنقول ال product ضرب
يساوي ال I قبل شوية كنا بنعمل print لل product
الآن المفروض من يرجع القيمة؟ return بالظبط اذا ال
function بترجعش حاجة بنعمل return زيك فاضيلكن إذا
ترجع حاجة مثل مثلنا هذا إيش النتيجة؟ وين هتكون
موجودة؟ في ال product صح ولا؟ يبقى أنا معنى return
ال product طبعا ال function بيعرفها فوق عشان
أستخدمها دايما تحت بقدرش أعرف ال function تحت في
الملف صح ولا؟ لأن مثلا أنا أعرفت ال function بدي
أستدعيهاخلصنا ال function ده يعني ال function
تنتهي وين يا جماعة؟ عند ال return طبعا ال return
يا بتكون return زيك معناه أن ال function بترجح
الشيء طبعا اه ممكن ال function ماترجحش حاجة تشتغل
شغل معين تطبعلي حاجات و خلاص بعمل return و خلاص
إذا بدي يا ترجح الشيء بعمل return product
الان انا اعملت ال function استفدت منها استدعيتها
طبعا اكيد انتوا عارفين ان انا لو نفذت ال code هذا
بشغلش ال function مش هيطلع ناتجها لش ان ال
function code لا ينفذ الا عند ايش الا استدعاء طبعا
الان بكتب ال code كيب استدعى ال function factorial
و بحط الرقماللي بدّيها بما أن هذا الـ function
بترجّع نتيجة تمام؟ بدي متغير أحفظ فيه نتيجة بدي
أقول له result مثلا يساوي factorial تمام؟ و بعدين
بقول له print ال
result هذا ال code اللي ماله اللي هيتنفذ
هذه النتيجة ايش؟ مائة و عشرين و ممكن اصلا ادعي انا
عشرين مرة لأكتر من الرقم اه
ممكن اخلي input ستة أو سبعة او تمانيةيحسب لي ال
factorial و يطبع ليه؟ يطبع لي النتيجة و ممكن اعمل
ايش يا جماعة احط ال factorial نفسه في أمر الطباعة
عشان اوفر code يعني ممكن اقول مثلا في المثال هذا
بدل ما تحط اللي هي في result و اطبع لل result على
طول مباشرة بقول print factorial
عشان
طبعا واضحة يا جماعة؟ طيب بتغير نكتفي بالقدر هذا
اليوم، و نكمل المحاضرة الجاي، في حد عنده أي سؤال
أو استفسار قبل نفسيه؟