بسم الله الرحمن الرحيم معاكم عادل نسيم واليوم ان شاء الله رح نبلش بشرح كورس جديد اللي هو البرمجة الكينونية أو ال object oriented programming هاي الدورة ان شاء الله رح تم شرح كل مواضيع ال object oriented من الصفر لآخر موضوع في الدورة أو لآخر موضوع بالبرمجة الكينونية متطلبات هاي الدورة لازم يكون عندك معرفة بسيطة بالC++ من الصفر لحد موضوع الفانكشن والأريز مفروض تكون أنت مغطي هاي المواضيع قبل ما نفوت على هاي الدورة يعني متطلبات الدورة هاي تكون عندك معلومات بسيطة عن الC++ من الصفر لعند الفانكشن والأريز يحبب انك تكون امورك 100% من ناحية ال function ثانيا من ناحية ال array عساس ما تتغلب في هاي الدورة و يكون كل اشي عندك سهل وسلس وبسيط طيب تمام شو اللي رح يتم شرحه في هاي الدورة هاي الدورة ان شاء الله احنا بنفترض انو انت ما عندك معلومات عن ال function ولا عندك معلومات عن ال arrays وهدول اهم شغلتين لازم احنا نكون مغطينهم قبل ما نفوت على ال object oriented فا اول فيديو هين رح يكون مراجع على ال function ثاني فيديو رح يكون مراجع على ال array بعد ما نراجع ال function وال array بنصير احنا قادرين نفوت على ال object oriented مواضيع ال object oriented منقسمينها احنا كالاتي اول موضوع في ال object oriented او ال object oriented بشكل عام بيحكي لنا عن كلاسات اوه إن شاء الله أول فيديو بنعمله على الـ Object بده يكون يحكي عن إشي اسمه Classes ثاني فيديو رح نعمل Review ع إشي اسمه Struct أو Structure بعدين رح نشرح إشي اسمه Constructor و إشي اسمه Destructor بعدين رح نشرح New و Delete و رح نشرح إشي اسمه Enumeration وبعدها رح نشرح إشي اسمه Static Class Member و Constant Object Constant Member Function سوف نتحدث عن فنكشن وفرندي كلاس سوف نغطي الـ Operator Overloading والـ Inheritance والذي يسمونه Polymorphism سوف نأخذ الـ Template بالإضافة للـ Exception Handling وآخر موضوع معنا في الدورة سيكون اللي هو File و Input و Output في C++ تمام هذا الفيديو إن شاء الله سيكون ريفيو على فنكشن نذكرك بشيء يسمى فنكشن نبني أول فونكشن أنا وإياك ونتعرف على أساسيات الفونكشن كاملة حلو نفتح البيجوال ستوديو ونبلش نكتب أول برنامج أنا وإنت طبعا المفروض لكل حافظ الصيغة العامة اللي هي hash include ostream الناس بتسأل شو معنى ماشي احنا بنكتبها بس بنعرفش لإيش الهاشينكلود لأول ما تكتب هاشينكلود انت بتضمن البرنامج عندك او البروجيكت تبعك لشغلة معينة بتضمنه لإنبوت او اوتبوت بتضمنه لمكاتب معينة مثل زي السي ماث بتضمنه لسي سترينغ تمام شو قصة المكاتب اها قصة المكاتب انو انا الكمبايلر عندي ما بيكون عامل include لكل شي كل شي بدي استخدمه داخل البروجيكت تبعي لازم تكون الو مكتبة خاصة عشان تقول للكمبايلر لأنه أنا لقيت الشغلة اللي فلانية اللي أنت بدك تكتبها في الكود تبعك مثلا Iostream اختصار لشو؟ I اختصار ل Input و O اختصار ل Output و كلمة stream معناتها منبع فبتصير عند الشغل كالآتي منبع المدخلات والمخرجات اللي هي مسؤولة عن Cout و Cin جمل الطباعة وجمل الإدخال طيب حلو نكمل بعد الhashincludeostream نعم نستطيع أن نقول مباشرة أنت مين لو قلت لك أن أريد أن أطبع أول رسالة عندي في هذا البرنامج ماذا تقول لي تقول لي مباشرة هاي STD scope resolution see out مثلا وليكن welcome وليكن النص مرحبا هذه بالإضافة ل سيميكون حلو طيب نفذ لي هذا الحكي كنترول اف خمسة طبعا عندي على الشاشة وطلعت ملزقة بكلمة برس any key to continue لاني ناسي احط backslash in او end line backslash in او end line طيب حلو هاي انا طبعت اول جملة ترحيبية عندي على البرنامج طيب بدي اطبع كمان جملة مثلا بدي اطبع كمان جملة خليها تحكيلي welcome to object oriented على سبيل المثال بتقولي بسيطة بروح بكتب std cout welcome مع end line اه لكن لاحظ أنه لدي إرور على النهاية من أين أتي هذا الإرور أو من أين أخرجه؟ الآن سنعرف ما هو قصته في حال أريد أن أقوم بعمل Cout أو Cn لشغلة معينة يجب أن أسموها بكلمة STD بالإضافة إلى Scope Resolution لنفترض أنني لا أريد أن أكتب STD Scope Resolution عند كل جملة Cout ماذا أفعل؟ بعد الـhashinclude سأكتب صيغة عامة يسمى using namespace std ما علاقته لحكيها بقوله يا compiler by default اعتبر لكل سطر cout موجود في std scope resolution by default يعني انا هسا بكتب جملة cout طبيعي من دون و من دون الحاجة لكلمة STD Scope Resolution من الرياح من الحكي هذا السطر تبع Using Namespace STD لاحظ ال end line كان معطي عليها قبل شوي error بالإضافة لسطر Using Namespace STD راح ال error كان على ال end line تمام طيب الانت مين شو قصتها؟ الانت مين هي الفانكشن الفانكشن الأساسي اللي بمشي من عنده البرنامج يعني أول إشي الكمبيلر بمسك الانت مين ومن عندها بدور شغل بغض النظر كان في عندي فانكشن فوق ولا تحت الفانكشن الأساسي اللي ببلش الكمبيلر يقرأ من عنده اللي هو الانت مين يعني الانت مين فانكشن a function الصيغة العامة اني اكون كاتب انتجر مين و كاتب return 0 شو قصة ال return 0 معناته انو انتهى البرنامج بشكل طبيعي و من دون اخطاء ولا errors طيب في ناس شو بتحب تكتب في ناس بدل ما تكتب انت مين بتحب تكتب void مين بتحب تكتب في فرق بين الثنتين؟ آه ما بيجي محا return ما بيجي محا return 0 لا تشغلي بالك بالقصص هاي هتسه بس انو في عندي طريقتين يعني في ناس بتحب تفضل في ناس بتحب تفضل بس احنا خلينا نعتمد خلينا نعتمد هاااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااا لو قلت لك على سبيل المثال اكتب لي برنامج يجمع رقمين يجمع رقمين بتقولي بكل بساطة الرقمين اللي بدك تجمعهم انت صحيحات ولا كسريات ولا بفواصل عشرية ولا شو قصتهم بقولك اجمع لي رقمين صحيحات بتقولي بكل بساطة خد هاي رقمين صحيحات انتجر X و Y وال X لنفترض إنها 10 والواي لنفترض إنها 20 طيب اجمع لي إياهم بتقولي بكل بساطة see out X زائد Y وهي end line X زائد Y وهي end line تمام تمام اعملي control F5 لهذا الحكي شوف لي شو بده يطبع طبع 30 طبع المجموع 30 طيب في ناس شو بتحب تعمل في ناس بتحب تعرف متغير ثالث وليكن اسمه Z على سبيل المثال وتقول أنه Z بيساوي X زائد Y وبدل ما يطبع X زائد Y لا لا بروح بطبع Z شو بروح بطبع؟ Z طيب شو الفرق بين هاي الطريقة وهاي الطريقة؟ أنا لما أكون مش بحاجة لمتغير ثالث يعني مش بحاجة للZ بقدر أعمل هاي العملية من دون متغير ثالث خلص بعملها من دون متغير ثالث ليش؟ لأنه بوفر أنا هون مساحة عندي بالمماري يعني أنت لما تشوف الشغل تبعك مش بحاجة لمتغير ثالث لا تعرفوا هذا المتغير ليش؟ لأنه أنت هك بتقلل من المساحة اللي بالمماري تمام وهيك دايما نتعلم طيب لو قلتلك هذا الحكي هذا الحكي امسك كمان رقمين واجمع ليهم امسك كمان رقمين واجمع ليهم بتقولي بسيطة شو بروح بعمل بروح بعرف كمان متغيرين بروح بعرف كمان متغيرين هاي انتجر بدل x و y بسميهم f و j على سبيل المثال f و j وهي ال f على سبيل المثال 11 وال j على سبيل المثال 22 و بدل ما انا اروح اعرف متغير ثالث اسمه z لا هاي بدي اروح اعرف على سبيل المثال k و اروح اقول بدل ما هي cout z لا cout k تمام تمام طيب قلتلك اعرف لي اجمع لي كمان رقمين بتقول لي بسيطة ها هاي هذا الحكي باخده كوبي ها وهون سأقوم بعمل بيست كما أن رقمين بيست سنلاحظ أن عدد الأسطور زاد عدد الأسطور زاد يعني أنني أحصل على أربعة أسطور ستة أربعة أربعة من هنا يظهر لك فكرة فانكشن يظهر لك بشيء يسمى فانكشن يقول لك إذا استخدمت شيء كثير أو مطلوب كثير خلص امسكه وضعه داخل فانكشن وحاجته تندي تندي بسطر واحد هذا الشغل يمكننا ان نختصره بسطر واحد كيف يعني تعالنا نعمل فنكشن يجمع رقمين أول فنكشن يجمع رقمين كيف نعمل الفنكشن هذا هذا الفنكشن نعمل كالآخر أول شيء بدك تسأل حالك هذا الفنكشن لشو بدك تعمله طيب هذا الفنكشن شو بده يرجع هل بده يرجع انتجار هل بده يرجع فلوت هل بده يرجع دابل انت بتقول لي بدي أعمل فنكشن يجمع رقمين تمام تمام طب هذول الرقمين شو الداتا تايب تباهم شو نوع الإرجاع تباهم نوع انتجر بما انه integer بده يكون نوع رجاع الfunction يعني أول خطوة بحط نوع رجاع الfunction بعد ما تحط نوع رجاع الfunction بتسمي هذا الاسم بتسمي الfunction اللي بدك إياه اسم مش انت كنت تحكي في المين نفس اللي حكي تقريبا تكتب انتجر واسم الفانكشن شو بدنا نسميه الفانكشن بدنا نسميه sum على سبيل المثال وبنفتح قص وبنسكر هاد اول جزء بالفانكشن اللي هو البروتو تايب فانكشن شو بسموه بسموه البروتو تايب فانكشن طيب الفانكشن كمان جزء الفانكشن بتكون من ثلاث اجزاء اللي هم البروتو تايب فانكشن اللي هو في حالتنا هذا السطر بالإضافة لbody of function أو البروتوتال أو عفواً أو ال definition تبع الفنكشن وآخر إشي أو المرحلة الثالثة اللي هو ال call تبع الفنكشن استدعاء هذا الفنكشن طيب حلو إنت بتقول لي بدك تعمل فنكشن يجمع رقمين مش هيك؟ طيب الرقمين شو هم؟ آه رقمين نوعهم integer رقمين من عدد صحيح فحطينا نوع الإرجاع تبع الفنكشن integer وبما أنك بدك تجمع رقمين يجب أن يستقبل رقمين من أقواس الفانكشن نقول له انتجر X و انتجر Y جيد طيب انت بعثت له X و Y طب هذا الفانكشن شو اللي بدك تعمله فيه هسهون احنا دخلنا على المرحلة الثانية تبعه الفانكشن وهي الbody of function أو الdefinition تبعه الفانكشن و الشغل تبعه الفانكشن شو بدك الفانكشن هذا يعمل انا بدي بس اجمع X زائد Y تمام تمام وهنا في قاعدة لازم تتمشي عليها بما انه في الفانكشن برجع قيمة ان كان انتجر ولا فلوت ولا دابل ولا كاركتر الزامي يكون عندي كلمة ريتير الزامي يكون الفانكشن هذا يعمل ريتير لازم يعمل ريتير طب ريتير لشو ريتير لمجموع X زائد Y X زائد Y تمام تمام وانا هيك اعملت فنكشن كامل متكامل يجمع رقمين يأخذ رقمين ويجمعهم يرجع مجموحهم return x زائد y قلنا في ناس شو بتحب تعمل في ناس بتحب بتعرف متغير ثالث اسمه هاي المرة u على سبيل المثال ويساوي x زائد y وشو تروح تعمل return لشو return لl u بس حكينا احنا جماعة بنحب البعزقة في المتغيرات بنحب ايه ذا كان في إمكانية إن ما نعرف متغير ما بنعرفه ليش لانه احنا هيك ما بدنا نهدر بالموماري وبدنا الشغل يكون عندنا في اقل سعة تخزين ممكنة طب حلو. زائد طب شو ضل عندي هون? ضل عندي تبع الفانكشن او استدعاء الفانكشن.
اه. كيف بتم استدعاء الفانكشن? استدعاء الفانكشن بتم عن طريق اسمه. اللي هو اسمه. وبفتح قوس بسكر قوس.
بفتح قوس وسكر قوس. واي سمكون. لاحظين الحكي هذا معطيني error ليش؟ ليش معطيني error بين الأقواس؟ بقولي انت قايل لي انه function sum بده يستقبل رقمين بده يستقبل رقمين وهدول الرقمين لازم يكونوا أرقام صحيحة integer بقوله بسيطة خد هاي 10 كومة 20 على سبيل المثال طب حلو هاجي اعمل ctrl F5 هاجرب الشغل تبعي لاحظ انه ما طبع اشي عندي ما طبع اشي عندي مكتوب كلمة press and hit و continue طب عشان يطبع شو لازم؟ يجب أن أضعه في جملة cout يجب أن أضعه في جملة cout cout لفنكشن sum يستخبر رقمين 10 و 20 control في 5 يجب أن يكون 30 و 20 هذا الحكي شو معناته القيمة الراجعة من هذا الفانكشن اللي اسمه sum وين تروح تخزين ليها خزين ليها بالزد يعني لو سألتك الزد قديش قيمته شو اللي بصير عندي هون بصير عندي كالآتي بمسك العشرة وبروح بحطها بدل ال X ومسك العشرين بروح بحطها بدل ال Y وبجباحهم عشرة زايد عشرين قديش 30 هذا الحكي روح يعمل له return رجعه وين رح يرجع هذا الحكي رح يعمل return على Z سوف يخزن الإكسبريشن هذا في Z و بدل أن أقول سي أوت سم على سبيل المثال سأقول سي أوت Z الطريقتين نفس الشيء لكن هنا أحتاج إلى متغير في حال أريد أن أقلل عدد المتغيرات أقل ما يمكن أو أكثر ما يمكن هنا قمت بعمل فنكشن يجمع رقمين واختصرت عدد الأسطر بدل ما كان عندي كذا سطر هون لأ صرت بس اني استدعي الفانكشن واطبعه بس استدعي الفانكشن واعمل له طباعة طب انا و الارتب والاحسن والاركز الارتب كل ما أريد أن أجمع رقمين بس ما علي إلا أن أستدعي الـ Function وهذا الـ Function من حاله لباله سيجمع لي الرقمين هذول لو قلت لك أريد الرقمين هذول من المستخدم لو قلت لك أريد الـ User هو اللي يدخل هذول الرقمين نحن دائما نخبط بين User و Programmer من الـ User و من الـ Programmer في الموضوع سيأتينا سؤال في الامتحان يريد الـ User هو اللي يدخل المعلومات أو الـ Programmer طيب شو الفرق بين user و programmer اه المبرمج هو اللي بكتب الكود تمام هو اللي بكتب الكود يعني انا اللي ببعث له هون 10 وانا ببعث له 20 مين اللي كتب 10 و 20 انا كمبرمج انا كمبرمج اللي كتبت 10 و 20 طيب مين هو ال user او المستخدم ال user هو الانسان العادي الطبيعي اللي بيجي من الشارع انا ببيعه البرنامج هاب بس ما علي الا انو تطلع له الشاشة السودة هاي او شاشة الكونسول ولما تطلع له شاشة الكونسول بكون فيه كبسل يضوه ويطفي مستني منه قيم طبعا لما يتبت البرنامج وينباع شاشة الكونسول هاي بتكون مع graphical user interface والقصص هاي يعني ما بتكون بالشكل الاسود هاي بتكون محددة ومضبطة وبكون الكبسل يضوه ويطفي ومستني قيم وننتظر القيم هنا من يدخل القيم على الشاشة السوداء يسمى user يسمى user وانا لكي ادخل القيم عن طريق ال user بحاجة لشي اسمه cm بحاجة لشي اسمه cm كيف اريد ان ادخل ال user يدخل قيمتين لا وشو بعملوهم بعملوهم cn cn لشو cn x كما ال y وهاي الغلطة اللي احنا بنوقع فيها شو بنعمل بنروح بدل ما نحط اشارة اكبر من اكبر من لا بنروح بنغلط وبنحط كما شو بنروح بنغلط وبنحط كما وهذا الحكي غلط في c out وفي cn لما اجي انا بده اجمع بين شغلتين او عملهم كون كاتينيت المفروض يكون بيناتهم يعني اكتنية أكبر من أكبر من في حالة الـCN وفي حالة الـCOUT يكون بين الشغلتين اللي بدي أطباحهم علامة أصغر من أصغر من معناته في الـCN الأصح أني أحط علامة أكبر من أكبر من مش كما مش كما بير بالك من هاي الشغل حلو طب متى بحط كما؟ آه لحظة تعريف المتغيرات آه بحط كما بس في الـCOUT وفي الـCN لا علامة أكبر من أكبر من وعلامة أصغر من أصغر من في حالة الـCOUT يعني مش تغلط وتحط كما تمام و بهذا الفانكشن شو برأى ببعثله هاي بدي أبعث له ع سبيل المثال ااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااااا يجب أن أحسن من برنامجه قليلاً أريد أن أقوم بعملية cout enter to number أضع مثال و أقول له the sum is و كذا أقول لك بكل بساطة اذهب و أقوم هاي cout مثلاً enter to number أضع مثال و بعدين اقوله هون في سطر cout اقوله على سبيل المثال بين هال double quotation the sum is كده هاي ctrl f5 قالي enter 2 number دخلت له 55 و دخلت له 60 قالي the sum is 115 طب حلو تطلع عشكل البرنامج هيك بتقولي اه انت هيك يعني عملت عشان اتقلل عدد الاسطور.
بس انا ما لاقى عدد الاسطور هو هو اصلا. وبالعكس زاد سطري زيادة. زاد سطري زيادة. اه. طب شو الحل?
تقولت لي على اساس اخفف عدد الاسطور. طيب كيف ده اخفف عدد الاسطور? امسك السطر هذا بدل ما هو هون ويري تحطو عملو control x ودخلو داخل الفانكشن حلو حلو بدل ما cn هاي بتعمل ال x ال y هون لا بعمل control x وبدخلها داخل الفانكشن تمام تمام وهيك بقول له the sum is وقيمة الفنكشن the sum is وقيمة الفنكشن لاحظ هسا هون اروح اعمل control f5 لهذا الحكي بلقيه معطيني كذا error بقول لي انه ال y ملهاش initial value و X لا يملك إنتاج أساسي هنا أريد أن أتفق معك على شيء عندما تتعرف أرقام أو أرقام أساسية أو أي شيء في العالم يفضل أو يستحزن أن تعطيه إنتاج أساسي تعطيه قيمة ابتدائية يبدأ من عندها إذا قلت أن إنتاج X يساوي 0 و Y يساوي 0 هذا الحكي يجنبني الأرواح أريد أن أتفق معك على شيء عندما تقوم بتعريف أرقام أو متغيرات بشكل عام أجعلهم دائما بـ Initial Value نلاحظ بعد أن عرفنا الـ X و الـ Y بـ Initial Value أقوم بعمل Ctrl F5 الـ Error الذي كان لديه ماله اختفى هذا البرنامج لديه Succeeded أذهب و أدخله أرقام هذه طبعا لـ Enter To Number أدخله 50 و أدخله 60 بعد أن أضغط Enter ماذا سيحدث؟ سيروح يعمل ريتير للمجموع X زائد Y ويطبع المسج The sum is وقيمة الارجاع الفانكشن قال لي The sum is 110 شوي شوي انا وياك بنصير نتوصل فينا لمرحلة انه اي فانكشن بختر عبالنا او اي كود بختر عبالنا نروح نعمله بفانكشن وبكل اريحية وسلوسة طيب تمام لو قلتلك روح عمل لي فانكشن او اتبع لي ال average ل 3 علامات تسأل حالك هل هؤلاء 3 علامات float ولا double ولا integer اوه والله العلامات مثلا جايب في المادة الفلانية 91.5 فالعلامات المفروض ياتكون float ياتكون double دعنا نعرف 3 علامات مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى مستوى م وبدأ أخذ قيمهم من اليوزر بقول له cn هاي ال m1 كما لا علامة أكبر من أكبر من m2 m3 وشو رح أقول له بقول له cout على سبيل المثال m1 زائد m2 زائد m3 تقسيم عددهم لأنه قاعدة المعدل هو مجموعة العلامات على عددها وهي سيد العزيز سيمي كورن وهذا الحكي فيه غلطة هذا الحكي فيه غلطة ليش؟ هنا شو اللي رح يصير عندي؟ رح يقسم قيمة الـ M3 على ثلاث بعدين يجمعها بالـ M2 وبالـ M1 طب أنا شو بدي؟ أنا بدي يجمع الثلاث علامات هذول وبعد ما يجمعهم يروح يقسم ليها مع ثلاث فشو المفروض أعمل؟ أو شو الحل لهذه المشكلة؟ نضع الموافقات المتوالية و المتوالية داخل الأقواس لأن هنا سيعمل على أولويات الأولوية كانت قبل قليل لدي القسمة ولكن عندما دخلت الأقواس صارت لدي الأولوية للأقواس أولاً يجمع الموافقات المتوالية و المتوالية ثم يقسمهم على ثلاث طب لو كان في عندي مجموعة أقواس لو كان في عندي مجموعة أقواس في هذا الشكل كيف رح يشتغل أو شو الأولويات رح تمشي عندها هون بمشي من الـ left للright إذا تساوت الأولويات بمشي من الـ left للright تمام هون قسمت مجموعة العلامات على أدادهم أروح أعمل control F5 ويجد الكبسول يضع ويطفى ويستنى مني علامات ادخله 99.5 وادخله 100 يقول لي ال average على سنة ثالث 99.5 99.5 هذا الحكي نعيشه كفنكشن او نعمله كفنكشن نعمل فنكشن يجمع ثلاث علامات كيف يصير الحكي هذا؟ هذا الحكي بالتاني كالقادة العلامات التي أريد أن أجمعها أو الأفراد ما الذي يتوقع أن يكون؟ هل يتوقع أن يكون عدد فيه كسور والعدد صحيح؟ قبل قليل كان هناك كسر أظهر أن الأفراد 90.5 معناته أنه نعود إلى الفنكشن يجب أن يكون إما Double أو Float دعنا نقوم بعمل Double ما اسم الفنكشن؟ اسمه ABG على اسمه الثالث اسمه ABG يريد أن يستقبل ثلاث علامات يمكن أن أقول له Double مولاً مولاً double m2 double m3 تمام وبكل بساطة شو رح أقوله أقوله مباشرة خلص return m1 زائد m2 زائد m3 division مجموحهم على عددهم وهي اقواس عشان الاولويات بالاضافة لسيمي كورن هيك انا عملت فونكشن كامل وتكامل يحسب الافراج لثلاث علامات طيب كيف بدك تستدعي الحكي هاب تروح تستدعيه في المين بدك تقوله A B G واروح يستقبل ثلاث علامات بدك تدخله على سمثة المية بدك تدخله ستين بدك تدخله ثلاثين او عفوا ادخل له مثلا 50 سوف أقوم بعمل Ctrl F5 و لن يطبع هذا الحكي لازمني جملة Cout بعد عمل Cout سوف أقوم بعمل Ctrl F5 لذلك هذا الحكي سوف يطبع 70 و ملزقة بكلمة Press N Key To Continue لأنني لست أضع إنتلان ما هي أفكار أخرى أستطيع تقبيلها أو تقوم بعملها بفنكشن نحن نقوم بعمل فنكشن يحسب الماكسيموم أي يحسب أكبر رقم من بين ثلاث أرقام هذا الحكي كيف أنا بدي أسويه أو كيف بدي أحسبه يلا نسأل حالنا الفانكشن اللي بدي أعمله شو بدي أسويه بدي يطلع الماكسيموم من بين ثلاث أرقام طب الأرقام هدول أنت بدي تقارن بناتهم هل هم انتجر ولا فلوت ولا دابل على سبيل المثال بدي أقارن بين ثلاث أرقام صحيحات بنوع رجع الفانكشن بدي يكون انتجر ما الذي نسميه فنكشن نسميه max لأنه يجب أن نقارن بين ثلاث أرقام الطبيعي أن البرنامج يستقبل ثلاث أرقام مثلاً integer n1, integer n2, integer n3 تمام هنا أنا وياك بدنا نتفق على شغلة لما نيجي بدنا نوشد الماكسيموم أو نيجي بدنا نجد المينيموم رح هنا أنا وياك نعيش عمبدالافتراض رح نعيش عمبدالافتراض ليش؟ هسا في ناس لما تيجي تطلع الماكسيموم تجي تطلعك الآتي تصدق جملة F بتقول إذا إنه الـN1 كان أكبر من الـN2 and الـN1 كان أكبر من الـN3 تمام شو تروح تعمل؟ روح اعمل على سبيل المثال return the N1 و اكتب اكبر من و قيمة الـ N1 هي الماكسيموم أكبر شيء عندي بدنا نفترض أنا وياك لاحظ نفترض أنا وياك أنه الـ N1 هي أكبر قيمة عندي هل هي أكبر أم لا؟ احنا افترضنا وبناء هذا الافتراض رح نقارن وبناء هذا الافتراض رح نقارن كيف رح تتم عملية المقارنة؟ بتتمه بجملة F بسيطة جدا شو بنقوله F الم اللي هو قيمته N1 الم اللي هو قيمته N1 كان أصغر من ال N2 إذا كان الم أصغر من ال N2 معناته مش هو الماكسيما مش هو اللي كبير معناته بما أنه أصغر من ال N2 خلص رح طير قيمة ال N1 وشو تروح تحط بدالها رح تحط بدالها قيمة ال N2 ليش حط بدالها قيمة ال N2 الانتو اه لانه الان ون اصغر من الانتو معناته شيل الان ون وشو تروح تحط بدالها ان تو تمام طيب شو اللي بيضل طالع عندي اقارن الام اللي هو بحالة انه هون صار قيمتها بالانتو على سبيل المثال كانت اصغر من الان ثري شو تروح تعمل روح طير قيمة الان تو وشو تروح تحط بدالها حط بدالها ليش?
لانه إنها الـN2 أصغر من الـN3 فتروح تحط M تساوي M3 ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايضا ايض 800 على سبيل المثال 800 هذا الفونكشن كيف رح يشتغل رح يشتغل كالقديم بيمسك المية وبيحطها بدل ال N1 وبيمسك ال 20 وبيحطها بدل ال N2 وبيمسك ال 800 وبيحطها بدل ال N3 وبلش اقارن اول شي بيمسك المية وبيحطها في ال M1 بيمسك المية وبيحطها في ال M وبسأل هل المية أقل من العشرين اللي هي في انتو بقول له لا معناته هذا السطر ما رح يتم هذا الحكي ما رح يتم رح يتضل قيمة الـ M اللي هي 100 رح يتضل قيمة الـ M اللي هي 100 بيجي بسأل هل المية أقل من قيمة الـ N3 اللي هي 800 أقل معناته رح طير المية ورح حط بدلها شو رح حط بدلها 800 آخر شي عمل ريتير للـ M اللي هي قيمتها 800 هذا الحكي نروح نجرب وشو الوضع يعطيني هاي جونة سي آوت ماتس ما الذي أعطانيه؟ أعطاني 800 أريد أن أطلع أقل رقم من بين هذه الثلاث أرقام ما الذي أفعله؟ فقط أحول إشارات بدلاً من أن تكون أصغر منها، أريد أن تصبح أكبر منها أطلع لي المنمم الذي هو 20 حسناً، جيد وممتاز يأتي لفكرة ثانية لنفترض أنني أريد أن أقوم بعمل فنكشن لكن يقوم بعملية طباعة يقوم بعملية طباعة سطر معين ما الذي أريد أن أسميه هذا الفنكشن؟ أريد أن أسميه بي على سبيل المثال هل أريد أن أستقبل المتغيرات؟ أريد أن أقوم بعملية سي أوت سي أوت مثلاً لكلمة أريد أن أقوم بعملية طباعة هاي سيميكون طيب هل هذا الفانكشن طلب مني ارجاع قيمة معينة قيمة جمع طرح ضرب ما طلب معناته هذا الفانكشن نوع الارجاع تبعه حيكون شو فيد حيكون فيد شو معناه نحن نريد أن نضع RETURN في تلك المنطقة حلو يعني كلمة لقيمة معينة ما رح تزبط معينة طب حلو طب شو الفرق الثاني الـ Void ما بيجي معا ريتير طب هل في كمان شغلات ثاني بفرق عن الـ Function اللي برجع قيمة آه بفرق بشغل ثاني لو أنا عارفين مثال استدعيت Function الـ B بالإضافة لـ Semicolon أعمل Ctrl F5 إنت بتقول لي لا ما رح يطبعش ليش لأنه في حاجة لجملة Cout بحاجة لجملة Cout Cout B هذا الحكي اعطاني error هذا الحكي شو اعطاني error ليش functional void ما بيجي معا cout ما بيجي معا cout ليش لان هون زي كاني بقوله اطبع اطبع الاشي اللي بده ينطبع فوق فهون الكمبايلر رح يعطيني إضافة إن كان بعمل لقيمة معينة أو بطبع شغلة معينة القاعدة بتقول لي خلص ما بيجي معاه ولا شو بيعمل؟ آه بطبع من حاله لبقى أنا أشيل كلمة سي آوت هاي أعمل كنترول في خمسة بلاقي طبع عادل تمام؟ حلو طيب حلو تأتي لنا افكار الفنكشن على سبيل المثال يضرب رقمين نعطي رقمين مثلا انتجر اضرب رقمين اسم الفنكشن على سبيل المثال m u l نعطي له متغيرين x y سوف أقوم بعمل return للـ x ضرب y نذهب إلى المنطقة كيفية استعمال هذا المنطقة اسمه mul سوف تبعث قيمتين 10 و 20 في حال انو انت كمبرمج متوقع انو اللي بدي يشتغل على الفانكشن هاظ ينسى يبعث قيمة معينة ينسى يبعث عسلية مثال عشرة او ينسى يبعث عشرين ينسى يبعث عشرين. شو الحال? عسى بين مثلا انا هون انسيت ابعث العشرين.
انسيت ابعث العشرين. هذا الحكي راح يعطيني راح يعطيني هل ممكن انا اعالج هذا في حال والله اللي بيشتغل على الكود تبعي لو في حال نسي في قيمة معينة يكمل البرنامج عادي من دور إرورات من هون طلعوا لك في فكرة شو فكرة أو باجي عندي المتوقع انه الشغال على الكود ينسى مثلا انا هون متوقع انه ينسى الواي متوقع انه ينسى الواي وروح بعطيها ايكوال خمسين عصر وثل ايكوال خمسين انزل تحت على الارور الكاد عندي بتلاقيه تجده مستقل لانه عوض بقيمة y 50 انا اقوم بعمل cout لهذا الحكي ماذا سيطبق هذا الحكي سيطبق 10 ضرب 50 control f 50 10 ضرب 50 500 في حالة انني لم انسى و اردت ان ارسل قيمة ارسلت له على سبيل المثال 2 و ارسلت له على سبيل المثال 2 هنا سيأخذ الـ 52 أو الـ 52 لماذا سيأخذ الـ 52 لأنه في حال نسيت سيأخذ الـ 50 هنا في حالتنا لدي 20 هل يمكنك إعطاء قيمتين مع بعض نعم يمكن إعطاء قيمتين مع بعض أقول X تساوي 10 عصري المثال أزل تحت عفواً لكي الميو قل و لا أبعث له قيم يمكن أن تقوم بعمل تحديث كامل على المستخدمين function mul اروح اعطيه default argument للقيمة الاولى بس هون ما رح يزبط عندي الحكي هون ما رح يزبط ليش لانو عسبيل المثال بعثت قيمة انا 10 هون compiler رح يجب يقول لك هذه العشرة للقيمة الأولى قاسد أنت ولا القيمة الثانية فما رح يزبط الكمبالر بريح راسه و لما يحس في عندك لف و دور رح يعطيك إرور عالسريع طيب حلو يعني معناته default value ما بتزبط لقيمة واحدة بس يا بتعطي القيمتين يا بتعطي القيمة الثانية أو الثالثة أو الثالثة أما بتعطي القيمة الأولى لحالها وتترك القيمة الثانية أو إذا كان في قيمة ثالثة لا حلو طيب الروح أنا وإياك فكرة ثانية نعمل فنكشن يستقبل رقمين وهذا الرقمين يزيد عليهم مقدار واحد هذا الرقمين يزيد عليهم مقدار واحد بالأحرى نعمل فنكشن نبعث له متغيرين وهذا المتغيرين يعدل على قيمتهم. يعدل على قيمتهم. طب بنروح بنكتب بما اننا بس نعدل على القيم ما.
بنا نرجع اشي. على سنة اسم الفونكشن. بدون سيستقبل X و Y سيستقبل X و Y ماذا سأفعل؟ سأقوم بساوي X تساوي X زائد 1 X تساوي X زائد 1 و Y تساوي Y زائد 1 Y تساوي Y زائد 1 هناك أشخاص يريدون أن يختصروا بدلا من أن تكتب X تساوي X زائد 1 لا تكتب X plus equal 1 بدلا من أن تكتب Y زائد 1 بدلا من أن تكتب Y plus equal 1 equal 1 نعم أنزل على المين أروح شلو بدي أعمله أروح أستدعي function الرف وأبعث له رقمين هاي integer بدي أسميهم x و y عشان تفكر أنه دايماً اسم المتغيرات اللي بدي أبعثها على الفانكشن لازم يكون نفس اسم المتغيرات اللي رح يستخبرها الفانكشن نسميه على اسم المثال هاي b وهاي نسميه ايه تي على سبيل المثال P و T حلو و نروح نبعث لفانكشن الرفهق P واتفقنا أنه وإياك لمن نجي نعرف متغيرات لازم نعطيهم initial value لازم نعطيهم initial value فأي قيمة بدنا إياها تجنبا لل errors حلو استدعيت أنا function ref استدعيت function ref وهذا يكون طيب هسا المفروض شو اللي يصير عندي لما ببعث له ال B يروح يزيد عليها 1 ولما ببعث له ال T يروح يزيد عليها مقدار 1 أجي أتأكد هل زاد على ال B ولا ما زادش هاي see out اشتركوا في القناة البي ايكول قيمة البي روح اعمل له سي اوت تي ايكول بالاضافة لقيمة التي وهي اند لاين على كل واحدة فيهم وهي اند لاين حلو كترول في خمسة لهذا الحكي رح طبع لي انو البي ايكول زيرو والتي ايكول المفروض يزيد عليهم الواحد أي فانكشن بيكون callByValue ما علاقة callByValue معناته انه اي تغيير بتم على المتغيرين هذول المين ما رح حس فيه المين ما رح حس فيه.
طب شو الحل? انا بدي اغير بدي لما ببعث ابعث البي يزيد عليها واحد ولما ببعث التي يزيد عليها واحد. هون طلعوا لك فكرة اشي اسمه. يعني الرقم اللي انت بتبعثه هون.
إذا أردت أن تحس في التعديل الذي تحتوي علىه فإنه يجب أن تقوم بعمل call by reference ما هو call by reference؟ إضافة علامة الـ adress أو الـ end أو الـ reference وضعها جانب المتغير المتغير حلو أنا هون بعثت له Reference X على X و Reference على Y هون لما أبعث له ال B و ال T المين رح أحس في التغيير اللي صار عليهم يعني أعمل Control F5 شو رح يطبع لي أنه ال B 1 و ال T 1 ال B قدش صارت 1 و ال T 1 إذا استدعي هذا الfunction أكثر من مرة سأستدعيه كمان مرة ctrl-f5 صارت قيمة ال b 2 و ال t 2 فكرة ال call by reference تأتي جمالها إذا أردت أن أرجع أكثر من قيمة كيف؟ لو لدي function يرجع قيمة معينة function يرجع قيمة معينة ولكن هذا الفانكشن على سبيل المثال يريد أن يزيد على قيمة متغير مقدار واحد ويعمل له return ويعمل له return أقول integer اسم الفانكشن d على سبيل المثال وهذا الفانكشن يريد أن يستقبل متغيرين f و j على سبيل المثال f و j وبعدها يستقبل f و j يجب أن نضع f و j بواحدة بما أن الـ function يرجع نوع معين أو data type معين المفروض يكون في عندي return خلينا نعمل return لشغلة معينة return للأف هون الفانكشن هار برجع قيمة الأف بعد الزيادة طيب كيف بدي أنا أستقبل أو أستدعي الفانكشن هار أستقبله أو أستدعيه في كل بساطة لما أقول d و اضع متغيرين و ليكون بي و بالاضافة ل تي و اضع cout و هذه بالاضافة ل end line اضع ctrl f5 و سيطبع قيمة بي بعد الزيادة التي هي 1 نفترض اريد ان اطبع تي فبدي اقول cout cout endline ctrl f5 هون طبع قيمة b بعد زيادة 1 قيمة t خلاها 0 قيمة t خلاها 0 طب كيف بدي اخلي قيمة t 1 هون بستفيد من فكرة ال call by reference و اضع على الج علامة الرفرنس فهنا عندما انبعثت ال T بدل الج هنا انبعثت call by reference يعني التغيير سيشعر بالمين اعمل ctrl F5 بدل ما كانت تعطيني صفر ماذا ستعطيني 1 هنا الاستفادة الكبرى من call by reference ارجع شغلة معينة او اعمل return لشغلة معينة لا انا قادر اعمل return بمعنى اخر لا اكثر من شغل لا اكثر من شغل شو بيضل علينا عشان نسكر قصة الفانكشن هسا بيقولك فيه فانكشن بيلد ان في اللغة بيلد ان في اللغة شو يعني بيلد ان في اللغة يعني فيه فانكشن جاهزة في اللغة فانكشن جاهزة باللغة ما الها بادي ولا الها بروتوتيب هي جاهزة باللغة معمولة من باي ديفولت معمولة باي ديفولت انت ما عليك كبو برمجة الا انك تستديها الا انك تستديها طب وين البادي تبعها وين البروتوتيب تبعها اه هذا build-in في اللغة build-in في اللغة نفسها موجود من أول في اللغة زي شو في عندي كذا function build-in شو يعني build-in يعني ما علي إلا أنا أستدعيهم بعد ما أستدعيهم في المين و بيشتغلوا طبيعي طب وين البادي تبع موالي prototype قلنا هذا build-in في اللغة يعني موجود مسبقا by default في اللغة زي شو في عندي function الباور function الباور شو يقص الباور سأرسل الرقم بالإضافة للأس هناك فنكشن السي كيو ار تي يخرج الجذر لرقم معين إذا أرسلت له 9 سي يخرج الجذر لرقم معين يخرج الجذر لرقم معين هناك فنكشن السيل يخرج الجذر لرقم معين لأكبر عدد صحيح فعند فونكشن الفلور عسبيل المثال اللي هي عكس السل اللي بتروح بتقرب العدد لأقل عدد صحيح لو بعثت له عشرة ونص عسبيل المثال بتقربها لعشرة هاي الفونكشن في جدول بيبين لنا حجم الفنكشن هاي البلد ان في اللغة لو حاب تتعمق فيها عندك الجدول هال بيقولك السل بتقربلي لأكبر عدد صحيح ع سبيل المثال بعثت لالسل سالب 9.8 رح تقربها لأكبر عدد صحيح واللي هو السالب 9 لو بعثت لها 9.2 موجب رح تقربها لأكبر عدد صحيح وهو العشرة عندي ال cos xb نهاية الدرس وعندي ال Apps عندي ال Apps ال Apps اللي هي متلق لو بعثتلها Function 10 سالب بتروح بتعمليها متلق بترجحها ل 10 وال floor عنا قلنا بتقرب لأقل عدد صحيح لو بعثتلها 9.2 رح تصير 9 لو بعثتلها سالب 9.8 رح تقربها لأقل عدد صحيح السالب 10 لانه السالب كل ما كبر كل ما صار قيمته اقل عندي FMOD و عندي LOG و عندي Power قلنا لهو العدد و قصه و عندي Sine و عندي TAN و عندي SQRT هاي فونكشن Build-in في اللغة ما علي لانا استدعيها و من دون لا بادي ولا بروتوتيب بس استدعيها مباشرة نأخذ مثال عليها نحن نجيب مثلاً apps نحن نجيب apps لسالب 10 اتفقنا انه apps اللي هي مطلق الى عدد يعني اذا بيبعث له عدد سالب بده يصير موجه حلو هذول الـ Function الـ Build-in كلهم موجودين داخل مكتبة يسمها C Math عشان انا اشتغل فيهم وما اخد ولا Error المفروض اعرف المكتبة تبعتهم اللي يسمها C Math بدي اقول له C Out لا الـ Apps سالب 10 مديش رح يعطيني فرح يعطيني 10 من دون سالب طب حلو هل هذولك كل ال build in في اللغة كل ال function build in باللغة لا في عندي function build in في اللغة بتطلعلي الماكس في عندي function build in في اللغة بتطلعلي المينيموم في عندي function build in باللغة بتعملي swap بين متغيرين كيف في عندي function جاهزة باللغة يتطلع لي الماكسيموم بين رقمين يعني استدعيها مباشرة وتعمل لي ماكسيموم بين 10 وبين 20 هل في فونكشن جاهزة تعمل لي هذا الحكي؟ آه بس هاي الفونكشن الجاهزة موجودة داخل مكتبة يسمها H-include algorithm هاي المكتبة يسمها algorithm نجرب هذا الحكي شو رح يعطيني C-out 10 و 20 وهي end line شو رح تطبع لي الفنكشن هاي البلد ان رح تطبع لي 20 رح تطبع لي 20 طيب لنفترض اننا بدنا نقارن بين ثلاث ارقام مش بين رقمين بس لا بين ثلاث ارقام ايش اللي بدي اعمله بس بدي استدعي الفنكشن البلد ان بستدعي فنكشن البلد ان بقوله max بفتح قوس وبسكر قوس وبحط مناتهم كوبا بطلع الماكسيموم بين 10 و 20 وبقارنها بين الرقم الثالث اللي انا بدي ابعته مثلا ابعته 20 اروح اعمل control F5 شو اللي بدي يصير اها طلع لي انه الماكسيما 30 طيب بين ثلاث ارقام بدي الماكسيما بين اربع ارقام عفوا بدي اقوله نفس الحكي max افتح cos واسكر cos واروح احط كومة بين هذا الحكي واغلو 50 اروح اعمل control F5 لهذا الحكي اشوف قداش بدي يعطيني اعطاني 50 كيف يمكن أن يكون هناك مقاومة في اللغة لدي منموم لكي أحصل على المنموم بين رقمين لذلك أضع 10 و 20 و سيطبع 10 ما هي مقاومة في اللغة لدي مقاومة اسمها swap ماهي فكرة الاسواب؟ فكرة الاسواب أن يكون لدي متغيرين قيمتين مختلفات وأنا أريد تغيير بينهم أبدل بين القيمة هذه وأضعها في القيمة الثانية وأمسك القيمة الثانية وأضعها في القيمة الأولى كيف يعني؟ أن يكون لدي متغيرين انتجر X و Y X يتساوي 10 على سبيل المثال و Y يتساوي 20 وأنا أريد أن أضع 20 بدل X وأمسك الـ X قيمتها 10 وحطها في الـ Y يعني يصير الـ X قيمتها 20 و الـ Y قيمتها 10 في فونكشن اسمها swap تعمل لهذا الحكي وربع بعثلها الرقمين هذول اللي هم X و Y X و Y طيب سوف تقوم بسواب بين الرقمين سواب بين X و Y سوف نقوم بعمل تحية cout لقيمة X X و Y قيمة الـ X Cout لـ Y Cout لقيمة الـ Y هاي end line هاي end line قلت لي انه X يساوي 20 و Y يساوي 10 قبل قليل كان يعطيني Error على جملة Cout لماذا؟ لأنه Function C السواب معمولة نوع رجاح Void لأنني بس بدي أعمل تغيير بين القيمتين أبدل بين القيمتين لماذا يعطيني Error على سطر Cout؟ هنا نكتشف أنه السواب معمول نوع Data Type و نوع رجاح Void نوع الارجاع بولد على عكس المين وعلى عكس الماكس تمام طيب هل ممكن اعمل عملية الاسواب بطريقة يدوية يعني من دون الحاجة لفانكشن الاسواب اه ممكن كيف هون نيجي نفكر فيها انا وياك كيف ممكن نعمل تبديل بين قيمة ال اكس وقيمة ال واي بين ال كونتينت تبع ال اكس وال كونتينت تبع ال واي يأتي أحد يفكر فيها كالآتي يقول لك خلاص بمسك الـ X وبسنت فيها قيمة الـ Y وبمسك الـ Y وحط فيها قيمة الـ X هون أنا اخسرت قيمة واحد فيهم لماذا؟ أنا ما أجي أقول له امسك الـ Y وحطها في الـ X أنا هون اخسرت قيمة الـ X اخسرت قيمة الـ X اللي هي 10 قيمة الـ X هنا قد ايش صارت؟ صارت 20 طب قيمة الـ Y برضو 20 طب اه طب انا بدي العشرة اتضالها موجودة بصيغة اخرى ومثال اخر لنفترض عندي كاستين كاستين مشروب على سبيل المثال كاباتشينو وكاسة ثانية موكاتشينو على سبيل المثال وانا بدي اجي انقل بين كاسة الكاباتشينو وكاسة الموكاتشينو ام انقلهم بنفس الوقت مع بعض اقوم بمسكة الكاباتشينو و اخزينها داخل كاسة الكاباتشينو و اقوم بمسكة الكاباتشينو و اضعها داخل كاسة الكاباتشينو عندما اقوم بمسكتها في نفس الوقت و في نفس اللحظة انا اضطر اخسر واحد منهم اذهب و اضع كاسة الكاباتشينو فوق كاسة الكاباتشينو في حال انا لا اريد ان اخسر الكاباتشينو اذهب و اجلب كاسة فارغة او كوب فاضي اشتركوا في القناة وبروح بحط في الكاباتشينو وبعدين بعد ما حط في الكاسة الفاضية الكاباتشينو بمسك الموكاتشينو بحطها في كاسة الكاباتشينو وبعدين بمسك الكاسة اللي جبتها جديدة بحطها كاسة الكباتشيون ونفس المثال او نفس الطريقة رح امشي انا في المتغيرات بروح شو اللي بعمله بروح بعرف متغير ثالث اسمه تيمب عسى مثال متغير ثالث اسمه تيمب ليش هذا التيمب عشان يحتفظ قيمة ال اكس قبل ما اخسرها ما الذي سيحدث هنا؟ ما الذي سيحدث لدي كالآتي؟ سأقول التمب الذي هو تي يساوي التمب خزين لقيمة التمب في التمب خزين لقيمة التمب في التمب بشكل مؤقت ماذا ستفعل؟ ستجعل التمب يساوي التم الـ Y equal التم شو اللي صار عندي هون احتفظت بقيمة T احتفظت بقيمة X عفوا قيمة X هي 10 احتفظت فيها متغير احتفظت فيها متغير بعد ما احتفظت فيها متغير انا هون ما بتفرق عندي اذا اخسرها ولا ما اخسرها ليش لاني حافظها فوق بمتغير هون اجيت اخسرت قيمة X مسكت الـ 20 خزنته في الـ X خزنت بال X قيمة 20 هون خزنت فوقيها بدون ما أخاف ليش؟ لأني فوق محتفظ في قيمة ال X المتغير مؤقت أو تيمب بعد هذا الحكي شو عملت؟ قلت العشرة العشرة اللي هي بخزني في T روح أطلعيها في ال Y يعني في هذا الحكي صارت قيمة ال X بتساوي 20 وال Y بتساوي نتأكد نروح نعمل cout y تساوي قيمة ال y end line cout x بتساوي قيمة ال x قيمة ال x وهي end line نترون f5 بالفعل اتغيرت ال end line لدينا القيم الواي تساوي عشرة والإكس تساوي عشرين بس إحنا حكينا إذا فيه طرق دهلسة أو طرق خنقول نفكر فيها يللي المماري عندي في البرنامج أستخدمها هل ممكن أنا أعمل سواب بدون متغير ثالث ممكن ممكن نفكر فيها أنا وإنت كيف ممكن نروح نمحي المتغير الثالث ونشوف كيف بنا نعمل عملية سواب بدون الحاجة لمتغير ثالث بدون الحاجة لمتغير ثالث كيف ممكن تصير عندي الحركة هاي الحركة هاي بتصير كالاتي وأقول ي تساوي قيمة ال X زائد ال 1 قيمة ال X زايد الواي طبيعي جدا شو بعدين بقوله بقوله كالقادي امسك الـ X وشو تخليها تساوي امسك الـ X وشو تخليها تساوي الـ X تساوي Y ناقص الـ X Y ناقص الـ X وبعدين شو تروح تعمل خلي الـ Y تساوي Y ناقص X نفسر الكلام شو اللي صار رحنا جمعنا المتغيرين 10 زائد 20 قديش 30 وين رحنا حطناهم داخل قيمة الـ Y يعني الـ Y صارت قديش 30 ورحنا شو عملنا قلنا له X ناقص Y X ناقص Y نقص 30 ناقص 10 نقص 30 ناقص 10 30 ناقص 10 قديش 30 ناقص 10 20 الـ 20 هاي وارد روح تخزين ليها في الـ X يعني صارت قيمة الـ X 20 حلو روح نقص لي قيمة الـ Y ناقص ال X و خزينها بال Y فبتصير قيمة ال Y 10 نروح نبرهن هذا الكلام Ctrl F5 بالضبط صار في عندي عملية سواب ال Y 10 و X 3 هل في طريقة ثانية اه في طريقة ثانية في طريقة ثانية حلوة بسموها Bitwise Or Bitwise Or او X Or اللي هو بتحط علامة البيت وايس علامة بيت وايس او او او او بين هالمتغيرات وروح نعمل كنترول اف خمسة نشوفها تحكي صح ولا لا هايو سكسيدد وراح بالفعل اه عمل لي سواب بين القيمتين هم عشرة وعشرين وهيك احنا بنكون اخدنا اكبر عدد من الفانكشن والبيلد ان والتولر باي وبروغرامين وان شاء الله هيك بنختم هذا الفيديو اللي هو اول فيديو الفيديو الثاني ان شاء الله رح يكون ريفيو للاريز ورح نتعرف فيه عن الاريز بما جميعها ورح نحكي بشكل مفصل وهيك ان شاء الله متكون اه ختمنا او وصلنا لنهاية هذا الفيديو ان شاء الله تكونوا استفدتوا والامثلة كلها اه واضحة والله يعطيكوا الف عافية واذا اي حدا عنده استفسار او يسيبوا بكومنت او تعليق تحت الفيديو ونشوفكم الفيديو الجاي. والسلام عليكم.