ڪيئن سکيو ڪيئن مشڪلاتن تي قابو پائڻ لاء، ۽ هڪ ئي وقت ۾ cycles لکڻ

ان حقيقت جي باوجود ته اسان هڪ بنيادي موضوع بابت ڳالهائينداسين، هي مضمون تجربيڪار ماهرن لاءِ لکيو ويو آهي. مقصد اهو ڏيکارڻ آهي ته شروعاتي پروگرامنگ ۾ ڪهڙيون غلط فهميون آهن. ڊولپرز جي مشق ڪرڻ لاء، اهي مسئلا حل ڪيا ويا آهن، وساري ڇڏيا آهن يا سڀ ڪجهه محسوس نه ڪيو ويو آهي. مضمون شايد هٿ ۾ اچي سگهي ٿو جيڪڏهن توهان کي اوچتو هن موضوع سان ڪنهن جي مدد ڪرڻ جي ضرورت آهي. مضمون مختلف ڪتابن مان مواد سان متوازي ٺاهي ٿو پروگرامنگ تي Schildt، Stroustrup، Okulov.

سائيڪل بابت موضوع چونڊيو ويو آهي ڇاڪاڻ ته پروگرامنگ ۾ مهارت حاصل ڪرڻ وقت ڪافي ماڻهو ان مان خارج ٿي ويا آهن.

هي ٽيڪنڪ ڪمزور شاگردن لاء ٺهيل آهي. ضابطي جي طور تي، مضبوط ماڻهو هن موضوع تي بيٺا نه آهن ۽ انهن لاء خاص ٽيڪنالاجي سان گڏ اچڻ جي ڪا ضرورت ناهي. مضمون جو ثانوي مقصد هن ٽيڪنڪ کي ”سڀني شاگردن لاءِ ڪم ڪري ٿو، پر صرف هڪ استاد“ ڪلاس مان ”ڪم ڪري ٿو سڀني شاگردن لاءِ، سڀني استادن لاءِ“ طبقي ڏانهن. مان مطلق اصليت جي دعويٰ نٿو ڪريان. جيڪڏهن توهان هن موضوع کي سيکارڻ لاءِ اڳ ۾ ئي ساڳيو طريقو استعمال ڪري رهيا آهيو، مهرباني ڪري لکو ته توهان جو نسخو ڪيئن مختلف آهي. جيڪڏهن توهان ان کي استعمال ڪرڻ جو فيصلو ڪيو، اسان کي ٻڌايو ته اهو ڪيئن ٿيو. جيڪڏهن ڪا اهڙي ٽيڪنڪ ڪنهن ڪتاب ۾ بيان ڪجي ته مهرباني ڪري نالو لکو.


مون هن ٽيڪنڪ تي 4 سالن تائين ڪم ڪيو، مختلف سطحن جي تربيت جي شاگردن سان انفرادي طور تي مطالعو ڪيو. مجموعي طور تي اٽڪل پنجاهه شاگرد ۽ ٻه هزار ڪلاڪ ڪلاس آهن. پهرين ته، شاگرد هميشه هن موضوع تي ڦاسي پيا ۽ ڇڏي ويا. هر شاگرد کان پوء، طريقيڪار ۽ مواد کي ترتيب ڏنو ويو. گذريل سال کان، شاگردن کي هن موضوع تي وڌيڪ نه روڪيو ويو آهي، تنهنڪري مون پنهنجي نتيجن کي حصيداري ڪرڻ جو فيصلو ڪيو.

ايترا خط ڇو؟ سائيڪلون تمام ابتدائي آهن!

جيئن مون مٿي لکيو آهي، مشق ڪندڙ ڊولپرز ۽ مضبوط شاگردن لاءِ، لوپ جي تصور جي پيچيدگي کي گهٽ ڪري سگهجي ٿو. مثال طور، توهان هڪ ڊگهو ليڪچر ڏئي سگهو ٿا، ڪنڌ جهڪائيندڙ سر ۽ ذهين اکيون ڏسي سگهو ٿا. پر جڏهن ڪنهن به مسئلي کي حل ڪرڻ جي ڪوشش ڪئي ويندي آهي، بيوقوف ۽ ناقابل بيان مسئلا شروع ٿي ويندا آهن. ليڪچر کان پوء، شاگردن کي شايد صرف هڪ جزوي سمجھ هئي. صورتحال ان ڪري بگڙيل آهي جو شاگرد خود آواز به نٿا ڏئي سگهن ته سندن فريب ڇا آهي.
هڪ ڏينهن مون محسوس ڪيو ته شاگرد منهنجي مثالن کي هيروگليفس سمجهي رهيا آهن. اهو آهي، متن جي ناقابل تقسيم ٽڪرن وانگر جنهن ۾ توهان کي ڪجهه "جادو" خط شامل ڪرڻ جي ضرورت آهي ۽ اهو ڪم ڪندو.
ڪڏهن ڪڏهن مون ڏٺو ته شاگرد اهو سوچيندا آهن ته ڪنهن خاص مسئلي کي حل ڪرڻ لاءِ توهان کي ضرورت آهي ڪجھ ٻيو هڪ ڊزائن جيڪا مون اڃا تائين نه ڍڪي آهي. جيتوڻيڪ حل صرف مثال جي ٿورڙي ترميم جي ضرورت آهي.

تنهن ڪري مون کي اهو خيال آيو ته ڌيان اظهار جي نحو تي نه هجڻ گهرجي، پر لوپ استعمال ڪندي بار بار ڪوڊ کي ريفيڪٽر ڪرڻ جي خيال تي. هڪ دفعو شاگردن کي هن خيال تي عبور حاصل آهي، ڪنهن به نحو کي ٿوري مشق سان بهتر ڪري سگهجي ٿو.

ڪير ۽ ڇو مون کي سيکاريو؟

جيئن ته داخلا جا امتحان نه آهن، طبقن ۾ مضبوط ۽ تمام ڪمزور شاگرد شامل ٿي سگهن ٿا. توهان مضمون ۾ منهنجي شاگردن جي باري ۾ وڌيڪ پڙهي سگهو ٿا شام جو ڪورس شاگردن جي تصوير
مون ان ڳالهه کي يقيني بڻائڻ جي ڪوشش ڪئي ته هرڪو جيڪو پروگرامنگ سکڻ چاهي ٿو اهو سکي سگهي.
منهنجا ڪلاس انفرادي طور تي منعقد ڪيا ويا آهن ۽ شاگرد هر هڪ لاء پنهنجو پئسا ادا ڪري ٿو. اهو لڳي ٿو ته شاگرد خرچن کي بهتر ڪندا ۽ گهٽ ۾ گهٽ مطالبو ڪندا. تنهن هوندي، ماڻهو هڪ زنده استاد سان منهن ڏيڻ وارا ڪلاس پاڻ علم حاصل ڪرڻ لاء نه، پر انهن جي سکيا جي اعتماد لاء، ترقي جي احساس ۽ ماهر (استاد) کان منظوري لاء. جيڪڏهن شاگرد پنهنجي سکيا ۾ ترقي محسوس نه ڪندا، اهي ڇڏي ويندا. عام طور تي، طبقن کي ترتيب ڏئي سگهجي ٿو ته جيئن شاگردن کي واقف ساختن جي تعداد کي وڌائڻ ۾ ترقي محسوس ٿئي. يعني، پهرين اسين تفصيل سان پڙهون ٿا، پوءِ پڙهون ٿا، پوءِ ڪريون ٿا، ۽ هاڻي اسان وٽ هڪ هزار ۽ هڪ رات جو ڪورس تيار آهي، جنهن ۾ ٻن مهينن لاءِ اڪيلو پڙهايو وڃي ٿو، ۽ آخر ۾ - هڪ شاگرد جنهن لکيو. ڊڪشنري هيٺ هڪ معياري لائبريري. بهرحال، عملي مسئلن کي حل ڪرڻ لاء، توهان کي نه رڳو مواد جي ڄاڻ جي ضرورت آهي، پر ان جي درخواست ۾ ۽ نئين معلومات جي ڳولا ۾ پڻ آزادي. تنهن ڪري، منهن ڏيڻ واري ڪورسز لاءِ، منهنجو خيال آهي ته صحيح اصول اهو آهي ته گهٽ ۾ گهٽ سيکاريو وڃي ۽ nuances ۽ لاڳاپيل عنوانن جي آزاد مطالعي جي حوصلا افزائي ڪئي وڃي. لوپ جي موضوع ۾، مان سمجهان ٿو جڏهن تعمير کي گهٽ ۾ گهٽ هجڻ گهرجي. توهان ان مان اصول سمجهي سگهو ٿا. اصول کي ڄاڻڻ سان، توهان پنهنجي لاء ۽ ڪم ڪرڻ ۾ مهارت حاصل ڪري سگهو ٿا.

ضعيف شاگردن جي مواد تي عبور حاصل ڪرڻ لاءِ، نحو بيان ڪرڻ ڪافي ناهي. اهو ضروري آهي ته وڌيڪ سادي پر مختلف ڪمن کي ڏيو ۽ مثالن کي وڌيڪ تفصيل سان بيان ڪيو وڃي. بالآخر، ترقي جي رفتار شاگردن جي اظهار کي تبديل ڪرڻ ۽ نمونن جي ڳولا جي صلاحيت تائين محدود آهي. هوشيار شاگردن لاءِ، گهڻيون اسائنمينٽ بورنگ هونديون. جڏهن انهن سان پڙهندا آهيو، توهان کي 100٪ مسئلن کي حل ڪرڻ تي اصرار ڪرڻ جي ضرورت ناهي. منهنجو مواد ڏسي سگهجي ٿو منهنجو گيت. سچ پچ، مخزن هڪ جنگجو جي گروميئر وانگر وڌيڪ آهي - مون کان سواء ٻيو ڪو به سمجهي نه سگهندو ته ڇا آهي، ۽ جيڪڏهن توهان چيڪ ۾ ناڪام ٿي، توهان چريو ٿي سگهو ٿا.

طريقو مشق تي مبني آهي

نظريو هڪ مسئلو حل ڪرڻ جي مثال کي استعمال ڪندي وضاحت ڪئي وئي آهي. پروگرامنگ ڪلاس جي بنيادي اصولن ۾ جتي شاخون ۽ لوپ سيکاريا ويندا آهن، اهو ممڪن ناهي ته هڪ مڪمل ڪلاڪ لاء هڪ موضوع تي مفيد ليڪچر ڏيو. تصور جي وضاحت ڪرڻ لاء 15-20 منٽ ڪافي آهي. بنيادي مشڪلاتون پيدا ٿين ٿيون جڏهن عملي ڪمن کي انجام ڏيو.
شروعاتي استاد هڪ ليڪچر ۾ آپريٽرز، شاخن، لوپس، ۽ صفن کي ختم ڪري سگھن ٿا. پر انهن جي شاگردن کي هن معلومات کي گڏ ڪرڻ جي مسئلي کي منهن ڏيڻو پوندو.
سڀ کان پوء، توهان کي نه رڳو مواد ٻڌائڻ جي ضرورت آهي، پر اهو پڻ يقيني بڻائڻ گهرجي ته ٻڌندڙن کي سمجهي.

هڪ موضوع تي مهارت حاصل ڪرڻ جي حقيقت جو اندازو لڳايو ويندو آهي ته شاگرد ڪيئن آزاد ڪم سان مقابلو ڪري ٿو.
جيڪڏهن هڪ شاگرد هڪ استاد جي مدد کان سواء هڪ موضوع تي هڪ مسئلو حل ڪرڻ لاء منظم، پوء موضوع کي ماهر ڪيو ويو آهي. خود جانچ کي يقيني بڻائڻ لاءِ، هر ڪم کي ٽيبل ۾ بيان ڪيو ويو آهي ٽيسٽ منظرنامن سان. ڪمن جو هڪ واضح حڪم آهي. ڪم ڇڏڻ جي سفارش نه ڪئي وئي آهي. جيڪڏهن موجوده ڪم تمام ڏکيو آهي، ته پوء اڳتي وڌڻ بيڪار آهي. اهو اڃا به وڌيڪ پيچيده آهي. انهي ڪري ته شاگرد موجوده پيچيده ڪم ۾ مهارت حاصل ڪري سگهي ٿو، پهرين مسئلي جو مثال استعمال ڪندي هن کي ڪيترن ئي طريقن جي وضاحت ڪئي وئي آهي. دراصل، موضوع جو سمورو مواد مشڪلاتن تي قابو پائڻ جي طريقن تي اچي ٿو. سائيڪلون هڪ طرفي اثر کان وڌيڪ آهن.

پهريون ڪم هميشه هڪ مثال آهي. ٻيو ٿورڙو مختلف آهي ۽ استاد جي نگراني هيٺ پهرين کان پوء فوري طور تي "آزاديء سان" ڪيو ويندو آهي. سڀني ايندڙ ڪمن جو مقصد مختلف ننڍڙن شين تي ڌيان ڏيڻ جو مقصد آهي جيڪي غلط فهميون پيدا ڪري سگهن ٿيون.

مثال جي وضاحت هڪ ڳالهه ٻولهه آهي، جنهن ۾ شاگرد کي ضرورت آهي ته واپس پروپيگيشن ۽ ڪراس-ويليڊيشن کي سڏ ڪري اهو يقيني بڻائڻ لاءِ ته هن مواد جي هڪ حصي ۾ مهارت حاصل ڪئي آهي.

مان بيدل ٿي ويندس ۽ چوان ٿو ته موضوع تي پهريون مثال تمام ضروري آهي. جيڪڏهن توهان وٽ وسيع آزاد ڪم لاء مواد آهي، پهرين مثال جي غلطي کي درست ڪري سگهجي ٿو. جيڪڏهن مثال کان سواءِ ٻيو ڪجهه به نه هجي ته پوءِ شاگرد گهڻو ڪري موضوع تي مهارت حاصل نه ڪري سگهندو.

جڏهن ته يا لاء؟

هڪ تڪراري مسئلن مان هڪ آهي تعمير جو انتخاب مثال لاءِ: جڏهن ته يا لاءِ. هڪ دفعي، منهنجو هڪ مشق ڪندڙ ڊولپر دوست جنهن جو ڪوبه درسي تجربو نه هو، هڪ ڪلاڪ مون کي قائل ڪرڻ ۾ گذاريو ته لوپ لاءِ سمجھڻ تمام آسان آهي. دليلن تي زور ڀريو ويو ته ”ان ۾ سڀ ڪجهه واضح آهي ۽ پنهنجي جاءِ تي رکيل آهي. تنهن هوندي، حقيقي شروعات ڪندڙن لاء مشڪلاتن جو بنيادي سبب خود چڪر جو خيال آهي، ۽ نه ان جي لکڻ. جيڪڏهن ڪو ماڻهو هن خيال کي نه سمجهي، ته پوء هن کي نحو سان ڏکيو ٿيندو. جيترو جلد اهو خيال محسوس ٿئي ٿو، ڪوڊ ڊيزائن جا مسئلا پاڻ تي غائب ٿي ويندا آهن.

منهنجي مواد ۾، لوپ جو موضوع برانچنگ جي موضوع جي پٺيان آهي. if and while جي خارجي هڪجهڙائي اسان کي سڌي طرح تشبيهه ڏيڻ جي اجازت ڏئي ٿي: ”جڏهن هيڊر ۾ حالت صحيح آهي ته پوءِ جسم کي قتل ڪيو ويندو آهي. چڪر جي واحد خصوصيت اها آهي ته جسم کي ڪيترائي ڀيرا قتل ڪيو ويندو آهي.

منهنجو ٻيو دليل اهو آهي ته جڏهن گهٽ فارميٽنگ جي ضرورت آهي. گھٽ فارميٽنگ جو مطلب آھي گھٽ بيوقوف غلطيون گم ٿيل ڪاما ۽ قوس سان. نحو جي غلطين کان پاڻمرادو بچڻ لاءِ شروعات ڪندڙ اڃا تائين ڪافي توجه ۽ احتياط نه ٺاهيا آهن.
ٽيون دليل ڪيترن ئي سٺن ڪتابن ۾ پهرين دليل طور بيان ڪيو ويو آهي.

جيڪڏهن شاگرد آساني سان اظهار کي تبديل ڪري سگهي ٿو، ته پوءِ توهان پاسنگ جي باري ۾ ڳالهائي سگهو ٿا. شاگرد پوءِ اهو چونڊيندو جيڪو هن کي پسند آهي. جيڪڏهن تبديليون مشڪلاتن جو سبب بڻجن، پوء اهو بهتر ناهي ته توهان جي توجه کي پريشان نه ڪيو وڃي. اچو ته شاگرد پهريون ڀيرو استعمال ڪندي هر شي کي حل ڪريو. هڪ دفعو توهان لوپس جي موضوع تي مهارت حاصل ڪري ورتو آهي، توهان تبديل ڪرڻ جي مشق ڪرڻ لاءِ حل ٻيهر لکي سگهو ٿا.
Postcondition loops هڪ خوبصورت ناياب جانور آهن. مان ان تي ڪو به وقت نه ٿو گذاريان. جيڪڏهن ڪو شاگرد نمونن کي سڃاڻڻ ۽ اظهار کي تبديل ڪرڻ جي خيالن ۾ مهارت حاصل ڪري چڪو آهي، ته هو ان کي منهنجي مدد کان سواءِ سمجهي سگهي ٿو.

جڏهن مضبوط شاگردن کي پهريون مثال ڏيکاريان ٿو، مان هن حقيقت ڏانهن ڌيان ڏيان ٿو ته پهرين مثال ۾ اهو ضروري آهي ته نه رڳو حل، پر عملن جي سڄي سلسلي کي پڻ رڪارڊ ڪيو وڃي، جيڪو نتيجو پيدا ڪري ٿو. سست شاگرد لکڻ کي نظرانداز ڪري سگھن ٿا ۽ صرف حتمي الگورتھم کي نقل ڪري سگھن ٿا. انهن کي يقين رکڻو پوندو ته هڪ ڏينهن هڪ ڏکيو ڪم انهن جي رستي تي ايندو. ان کي حل ڪرڻ لاء، توهان کي هن مثال ۾ قدمن جي پيروي ڪرڻ جي ضرورت پوندي. انهي ڪري اهو ضروري آهي ته سڀني مرحلن کي رڪارڊ ڪيو وڃي. هيٺ ڏنل مسئلن ۾ اهو ممڪن ٿيندو ته صرف حل جي آخري نسخي کي ڇڏي ڏيو.

خودڪار طريقي جو بنيادي خيال اهو آهي ته اسان هڪ ڪمپيوٽر کي هڪ شخص لاء معمولي ڪم ڪرڻ جي حوالي ڪريون ٿا. بنيادي ٽيڪنالاجي مان هڪ لوپ لکڻ آهي. اهو استعمال ڪيو ويندو آهي جڏهن ڪيترن ئي هڪجهڙائي ورجائي ڪارناما هڪ قطار ۾ هڪ پروگرام ۾ لکيل آهن.

ظاهري کان بهتر آهي

اهو لڳي سگهي ٿو هڪ سٺو خيال آهي ته ساڳئي جملي کي پهرين لوپنگ ڪم ۾ ڪيترائي ڀيرا ڏيکاري. مثال طور:

هيري، اهو ڪم ڪري ٿو!
هيري، اهو ڪم ڪري ٿو!
هيري، اهو ڪم ڪري ٿو!
هيري، اهو ڪم ڪري ٿو!
هيري، اهو ڪم ڪري ٿو!
هيري، اهو ڪم ڪري ٿو!
هيري، اهو ڪم ڪري ٿو!
هيري، اهو ڪم ڪري ٿو!

هي اختيار خراب آهي ڇو ته ڪائونٽر ويليو آئوٽ پٽ ۾ نظر نٿو اچي. هي هڪ مسئلو آهي beginners لاء. هن کي گهٽ نه سمجهو. شروعات ۾، هي ڪم پهريون هو، ۽ نمبرن جي هڪ سيريز کي چڙهڻ واري ترتيب ۾ حاصل ڪرڻ جو ڪم ٻيو هو. اهو ضروري هو ته اضافي اصطلاحن کي متعارف ڪرايو وڃي "سائيڪل N وقت" ۽ "سائيڪل کان A کان B تائين"، جيڪي بنيادي طور تي ساڳيون شيون آهن. غير ضروري ادارن کي پيدا نه ڪرڻ لاء، مون انگن جي سيريز جي پيداوار سان صرف هڪ مثال ڏيکارڻ جو فيصلو ڪيو. ٿورا ماڻهو اهو سکڻ جو انتظام ڪن ٿا ته ڪيئن انهن جي سر ۾ هڪ ڪائونٽر رکجي ۽ بغير ڪنهن تياري جي انهن جي سر ۾ هڪ پروگرام جي رويي جو نمونو. ڪجھ شاگرد پهريون ڀيرو ذهني ماڊلنگ کي چڪر جي موضوع تي ملن ٿا.
ڪجھ مشق کان پوء، آئون ساڳئي متن کي ورجائڻ جو ڪم ڏيان ٿو آزاديء سان حل ڪيو وڃي. جيڪڏھن توھان ڏيو پھريائين ھڪ ظاھر ڪائونٽر ۽ پوءِ ھڪ پوشیدہ، شاگردن کي گھٽ مسئلا ٿيندا. ڪڏهن ڪڏهن اشارو "اسڪرين تي انسداد نه لکو" ڪافي آهي.

ٻيا ان جي وضاحت ڪيئن ڪندا؟

انٽرنيٽ تي اڪثر تعليمي مواد ۾، چڪر جي نحو کي "ليڪچر" جي حصي طور ڏنو ويو آهي. مثال طور، developer.mozilla.org تي (في الحال)، جڏهن ته لوپ سان گڏ ڪيتريون ئي ٻيون اڏاوتون بيان ڪيون ويون آهن. انهي حالت ۾، صرف ڊزائن پاڻ کي ٽيمپليٽ جي صورت ۾ ڏنو ويو آهي. انهن جي شروعات جو نتيجو لفظن ۾ بيان ڪيو ويو آهي، پر ڪو به مثال نه آهي. منهنجي خيال ۾، موضوع جي اهڙي پيشڪش اهڙي مواد جي فائدي کي صفر جي ڀيٽ ۾ وڌائي ٿو. شاگرد ڪوڊ ٻيهر لکي سگهي ٿو ۽ ان کي پاڻ هلائي سگهي ٿو، پر هن کي اڃا به مقابلي لاءِ معيار جي ضرورت آهي. توهان ڪيئن سمجهي سگهو ٿا ته هڪ مثال صحيح طور تي ٻيهر لکيو ويو آهي جيڪڏهن نتيجن جي مقابلي لاء ڪجهه به ناهي؟
جڏهن صرف هڪ نمونو ڏنو وڃي، مثال جي بغير، اهو شاگرد لاء وڌيڪ ڏکيو ٿي ويندو آهي. ڪيئن سمجھجي ته ڪوڊ جا ٽڪرا ٽيمپليٽ ۾ صحيح رکيا ويا آھن؟ توهان لکڻ جي ڪوشش ڪري سگهو ٿا ڪنهن به طرح، ۽ پوءِ ڊوڙيو. پر جيڪڏهن نتيجن جي مقابلي لاءِ ڪو معيار نه آهي، ته پوءِ لانچ ڪرڻ به مدد نه ڏيندو.

Intuitive تي C++ ڪورس ۾، لوپ نحو ليڪچر 4 جي ٽئين صفحي ۾ ”آپريٽرز“ جي موضوع تي دفن ٿيل آهي. جڏهن لوپ جي نحو جي وضاحت ڪندي، خاص زور "آپريٽر" جي اصطلاح تي رکيل آهي. اصطلاح حقيقتن جي هڪ سيٽ طور پيش ڪيو ويو آهي جهڙوڪ "علامت؛ هي هڪ بيان آهي، "{} هڪ مرڪب بيان آهي"، "لوپ جو جسم هڪ بيان هجڻ گهرجي". مون کي اهو طريقو پسند ناهي ڇو ته اهو لڳي ٿو ته هڪ اصطلاح جي پويان اهم رشتا لڪائي. پروگرام جي سورس ڪوڊ کي هن سطح تي اصطلاحن ۾ پارس ڪرڻ لاءِ ڪمپائلر ڊولپرز کي ٻولي جي وضاحت کي لاڳو ڪرڻ جي ضرورت آهي، پر شاگردن طرفان نه ته پهرين تقريبن جي طور تي. پروگرامنگ ۾ نوان اچڻ وارا گهٽ ۾ گهٽ محتاط هوندا آهن شرطن تي ايترو ڌيان ڏيڻ لاءِ. اهو هڪ نادر ماڻهو آهي جيڪو پهريون ڀيرو ياد ڪري ٿو ۽ نوان لفظ سمجهي ٿو. لڳ ڀڳ ڪو به ماڻهو صحيح طريقي سان لاڳو نه ٿو ڪري سگهي هڪ اصطلاح جيڪو انهن سکيو آهي. تنهن ڪري، شاگردن کي تمام گهڻيون غلطيون مليون آهن جهڙوڪ "مون لکيو جڏهن (a<7);{، پر پروگرام ڪم نٿو ڪري."
منهنجي خيال ۾، شروعات ۾ اهو بهتر آهي ته تعمير جي نحو کي فوري طور قوس سان گڏ ڏيو. قوس کان سواءِ اختيار صرف ان صورت ۾ بيان ڪيو وڃي جڏهن شاگرد وٽ هڪ مخصوص سوال آهي: ”ڇو ڪو قوس نه آهي ۽ اهو ڪم ڪري ٿو.

اوڪولوف جي 2012 جي ڪتاب ”پروگرامنگ جا بنيادي اصول“ ۾ لوپ جو تعارف for the pattern سان شروع ٿئي ٿو، پوءِ ان جي استعمال لاءِ تجويزون ڏئي ٿو، ۽ پوءِ فوري طور سبق جي تجرباتي حصي ڏانهن وڃي ٿو. مان سمجهان ٿو ته اهو ڪتاب انهن تمام قابل شاگردن جي اقليت لاءِ لکيو ويو آهي جيڪي منهنجي ڪلاس ۾ تمام گهٽ اچن ٿا.

مشهور ڪتابن ۾، ڪوڊ ٽڪرا جو نتيجو هميشه لکيو ويو آهي. مثال طور، شيلڊٽ جو ”جاوا 8. مڪمل گائيڊ“ 2015 ايڊيشن. پهرين، هڪ ٽيمپليٽ ڏنو ويو آهي، پوء هڪ مثال پروگرام ۽ ان کان پوء فوري طور تي - عمل جو نتيجو.

مثال طور، ڪجھ دير لوپ تي غور ڪريو جيڪو ريورس ڪري ٿو
ڳڻپيوڪر 10 کان شروع ٿئي ٿو، ۽ بلڪل 10 لائينون "پيمانن" جي ڏيکاريل آھن:

//Продемонстрировать применение оператора цикла while
class While {
    public static void main(String args []) {
        int n = 10;
        while (n > 0) {
            System.out.println("такт " + n);
            n--;
        }
    }
}

هڪ دفعو هلندي، هي پروگرام ڏهن "چڪر" ​​کي هن ريت ڪڍي ٿو:
такт 10
такт 9
такт 8
такт 7
такт 6
такт 5
такт 4
такт 3
такт 2
такт 1

ٽيمپليٽ بيان ڪرڻ جو طريقو، هڪ مثالي پروگرام ۽ پروگرام جو نتيجو پڻ ڪتاب ”جاوا اسڪرپٽ فار ٻارن“ ۽ w3schools.com تي js ڪورس ۾ استعمال ڪيو ويو آهي. ويب پيج فارميٽ پڻ هن مثال کي انٽرايڪٽو ٿيڻ جي اجازت ڏئي ٿو.

Stroustrup جو 2016 ڪتاب اصول ۽ مشق استعمال ڪرڻ C++ اڃا به اڳتي وڌيو. پهريون قدم اهو بيان ڪرڻ آهي ته ڪهڙو نتيجو حاصل ڪيو وڃي، ۽ ان کان پوء پروگرام جو متن ڏيکاريل آهي. ان کان علاوه، اهي نه رڳو هڪ بي ترتيب واري پروگرام کي مثال طور وٺي، پر تاريخ ۾ هڪ سير ڏيو. اهو ان ڏانهن ڌيان ڏيڻ ۾ مدد ڪري ٿو: "ڏس، هي صرف ڪجهه بيڪار متن ناهي. تون ڪا معنيٰ واري شيءِ ڏسين ٿو“.

ورجائي جي مثال طور، ذخيرو ٿيل پروگرام مشين (EDSAC) تي جاري ڪيل پهرين پروگرام تي غور ڪريو. اهو ڊيوڊ ويلر طرفان 6 مئي 1949ع تي انگلينڊ جي ڪيمبرج يونيورسٽي جي ڪمپيوٽر ليبارٽري ۾ لکيو ويو. هي پروگرام حساب ڪري ٿو ۽ چورس جي هڪ سادي فهرست ڇپائي ٿو.
0 0
1 1
2 4
3 9
4 16
...
98 9604
99 9801

هتي، هر لڪير ۾ هڪ عدد آهي جنهن جي پٺيان ٽيب اکر ('t') ۽ ان نمبر جو چورس. هن پروگرام جو C++ ورجن هن طرح نظر اچي ٿو:

//Вычисляем и распечатываем таблицу квадратов чисел 0-99
int main()
{
    int i = 0; // Начинаем с нуля
    while(i < 100){
        cout << i << 't' << square(i) << 'n';
        ++i;
    }
}

دلچسپ ڳالهه اها آهي ته هن ڪتاب ۾ نحو جو نمونو بيان نه ڪيو ويو آهي. استادن جي دستور ۾ اسٽرسٽرپ (ترجمو) زور ڏئي ٿو ته اهو پنهنجي شاگردن جي ذهانت جو احترام ڪري ٿو. ٿي سگهي ٿو ته ڪيترن ئي مثالن ۾ هڪ نمونو سڃاڻڻ جي صلاحيت اهڙي ذهانت جو هڪ مظهر سمجهيو ويندو آهي.

جيئن مان پاڻ کي بيان ڪريان

Stroustrup جو طريقو: نتيجو بيان ڪرڻ، پوءِ مسئلو حل ڪرڻ، ۽ پوءِ شاگرد طرفان هڪ آزاد تجزيو - سڀ کان وڌيڪ سوچيندڙ لڳي ٿو. تنهن ڪري، مون ان کي بنياد طور وٺڻ جو فيصلو ڪيو، پر ان کي گهٽ تاريخي مثال استعمال ڪندي ٻڌايان ٿو - "مضمون جي جدول" حاصل ڪرڻ جو ڪم. اهو هڪ سڃاتل لنگر ٺاهيندو آهي ته جيئن توهان پوءِ چئي سگهو ٿا ”مضمون جي جدول بابت ڪم ياد رکو“ ۽ انهي ڪري ته شاگردن کي اهو ئي ياد آهي. منهنجي مثال ۾، مون ٻه وڌيڪ عام غلط فڪر کي روڪڻ جي ڪوشش ڪئي. اڳتي هلي آئون انهن بابت وڌيڪ تفصيل سان لکندس.

هن ڪم ۾ اسان پيچيده مسئلن کي حل ڪرڻ لاء ٽيڪنالاجي کي متعارف ڪرايو آهي. ابتدائي فيصلو بنيادي ۽ سادو ٿيڻ جي ضرورت آهي. خير، پوء توهان سوچيو ته ڪيئن هن حل کي بهتر ڪرڻ لاء.
Введение
Глава 1
Глава 2
Глава 3
Глава 4
Глава 5
Глава 6
Глава 7
Заключение

منهنجي مشاهدي جي مطابق، مختلف مجموعن ۾ ”ٽيمپليٽ-مثال-نتيجو“ جو طريقو اڃا تائين ان حقيقت ڏانهن وٺي وڃي ٿو ته شاگرد چڪر کي هڪ هائيروگليف سمجهن ٿا. اهو پاڻ کي حقيقت ۾ ظاهر ڪيو ويو آهي ته اهي نه سمجهي رهيا هئا ته اتي لکڻ جي شرط ڇو هئي، i++ ۽ i- ۽ ٻين بظاهر واضح شين جي وچ ۾ ڪيئن چونڊيو وڃي. انهن غلط فهميءَ کان بچڻ لاءِ، سائيڪلن بابت ڳالهائڻ جو طريقو هڪجهڙائي واري عمل کي ورجائڻ جي معنيٰ تي زور ڏيڻ گهرجي ۽ صرف پوءِ انهن کي هڪ ڍانچي کي استعمال ڪندي رسمي ڪرڻ گهرجي. تنهن ڪري، لوپ نحو ڏيڻ کان پهريان، توهان کي مسئلو حل ڪرڻ جي ضرورت آهي سر تي. مواد جي جدول جي مسئلي جو بنيادي حل هن طرح نظر اچي ٿو:

Console.WriteLine("Введение");
Console.WriteLine("Глава 1");
Console.WriteLine("Глава 2");
Console.WriteLine("Глава 3");
Console.WriteLine("Глава 4");
Console.WriteLine("Глава 5");
Console.WriteLine("Глава 6");
Console.WriteLine("Глава 7");
Console.WriteLine("Заключение");

اهو ڪيئن بهتر ٿي سگهي ٿو؟
تبديل ڪريو monotonous ڪارناما هڪ چڪر سان.
ڪهڙيون ڪارناما بغير تبديلين جي قطار ۾ بار بار ڪيا ويا آهن؟
هن ٽڪري ۾ ڪو به نه آهي. تنهن هوندي به، هڪ نمبر سان لفظ "باب" کي ظاهر ڪرڻ لاء حڪم هڪ ٻئي سان تمام گهڻيون آهن.
تنهن ڪري، ايندڙ اسٽيج ٽڪرن جي وچ ۾ فرق ڳولڻ آهي. اهو صرف هن ڪم ۾ آهي ته سڀ ڪجهه واضح آهي، پوء هڪ حڪم نه بار بار ڪيو ويندو، پر 5 لائنن يا وڌيڪ جي ڪوڊ جا بلاڪ. توھان کي ڳولڻو پوندو نه رڳو حڪمن جي لسٽ ۾، پر برانچنگ يا لوپ تعميرات ۾.
مثال ۾، حڪمن جي وچ ۾ فرق لفظ "باب" کان پوء نمبر ۾ آهي.
هڪ دفعو فرق مليو آهي، توهان کي تبديلي جي نموني کي سمجهڻ جي ضرورت آهي. مختلف ٽڪرا نمبر آهي؟ ڇا اهو مسلسل وڌي رهيو آهي يا گهٽجي رهيو آهي؟ ڪئين نمبر جو قدر ٻن ٽيمن جي وچ ۾ پاسي جي طرف تبديل ڪري ٿو؟
مثال ۾، لفظ ”باب“ کان پوءِ جو تعداد 1 جي واڌ سان وڌي ٿو. فرق ملي ٿو، نمونو ظاهر ٿئي ٿو. ھاڻي توھان مٽائي سگھوٿا مختلف ٽڪرا ھڪ متغير سان.
توهان کي ٻيهر ورجائڻ واري ٽڪرن جي پهرين کان پهريان اهڙي متغير جو اعلان ڪرڻو پوندو. اهڙي قسم جي متغير کي عام طور تي سڏيو ويندو آهي I يا j يا ڪجهه وڌيڪ تفصيلي. ان جي شروعاتي قيمت اسڪرين تي ڏيکاريل پھرين قدر جي برابر ھجڻ گھرجي. مثال ۾، پهريون قدر 1 آهي.
انگن جي سيريز کي ظاهر ڪرڻ لاء ڪهڙي شروعاتي قيمت وٺڻ گهرجي "100، 101، 102، 103، 104، 105"؟
هن سلسلي ۾ پهريون نمبر 100 آهي.
هر آئوٽ پُٽ ڪمانڊ کان پوءِ، توهان کي هن متغير جي قيمت کي 1 تائين وڌائڻو پوندو. هي يونٽ تبديلي جو مرحلو آهي.
نمبرن جي سيريز ۾ ڪهڙو قدم هوندو "100، 102، 104، 106"؟
هن قطار ۾ قدم 2.
متغير سان مختلف ٽڪرا کي تبديل ڪرڻ کان پوء، ڪوڊ هن طرح نظر ايندو:

Console.WriteLine("Введение");
int i;
i = 0;
Console.WriteLine("Глава " + i);
i = i + 1;
Console.WriteLine("Глава " + i);
i = i + 1;
Console.WriteLine("Глава " + i);
i = i + 1;
Console.WriteLine("Глава " + i);
i = i + 1;
Console.WriteLine("Глава " + i);
i = i + 1;
Console.WriteLine("Глава " + i);
i = i + 1;
Console.WriteLine("Глава " + i);
i = i + 1;
Console.WriteLine("Заключение");

ڪوڊ ۾ "متغير جو نمونو ظاهر ڪريو" ٽيڪنڪ کي لاڳو ڪرڻ کان پوء، توهان هڪجهڙائي واري عمل جا ڪيترائي گروپ حاصل ڪندا جيڪي قطار ۾ هلندا آهن. ھاڻي ورجائي عملن کي چڪر سان تبديل ڪري سگھجي ٿو.

ھڪڙي مسئلي کي حل ڪرڻ جو سلسلو جتي توھان کي لوپ استعمال ڪرڻ جي ضرورت آھي ھيٺ ڏنل قدمن تي مشتمل آھي:

  1. ڪيترن ئي الڳ حڪمن سان "هيڊ آن" حل ڪريو
  2. ھڪڙو نمونو ڳولھيو
  3. متغير جي نموني کي ظاهر ڪريو
  4. ھڪڙي چڪر جي طور تي ٺاھيو

اڳيون، نوان اصطلاح متعارف ڪرايا ويا آهن ته جيئن شاگرد پاڻ کي اهڙي صورتحال ۾ نه ڳولي "مان سڀ ڪجهه سمجهان ٿو، پر مان اهو نٿو چئي سگهان":
- هڪ انسداد هميشه هڪ متغير آهي جيڪو لوپ ۾ قدمن جي تعداد کي ٽريڪ ڪرڻ جي ضرورت آهي. عام طور تي انٽيجر جو مقابلو ڪيو ويندو آهي پابندي سان.
- جوابي قدم - جوابي تبديلين جي نموني جو بيان.
- رڪاوٽ - ھڪڙو نمبر يا متغير جنھن سان ڪائونٽر جو مقابلو ڪيو ويو آھي ته جيئن الگورتھم حتمي آھي. حد تائين پهچڻ لاءِ ڪائونٽر ويليو بدلجي ٿو.
- لوپ باڊي - حڪمن جو هڪ سيٽ جيڪو بار بار ڪيو ويندو. جڏهن اهي چون ٿا ته "حڪم هڪ لوپ اندر لکيل آهي،" انهن جو مطلب آهي جسم.
- لوپ ورجائي - لوپ جسم جي ھڪڙي وقت تي عملدرآمد.
- لوپ حالت - هڪ منطقي اظهار جيڪو اهو طئي ڪري ٿو ته ڇا هڪ ٻي ورهاڱي تي عمل ڪيو ويندو. (هتي برانچنگ ڍانچي سان مونجهارو ٿي سگهي ٿو)
توهان کي ان حقيقت لاءِ تيار رهڻ جي ضرورت آهي ته پهريان شاگرد ٻين مقصدن لاءِ اصطلاح استعمال ڪندا. اهو ٻنهي مضبوط ۽ ڪمزور تي لاڳو ٿئي ٿو. گڏيل ٻولي قائم ڪرڻ هڪ فن آهي. ھاڻي مختصر طور تي لکندس: توھان کي ٽاسڪ مقرر ڪرڻ جي ضرورت آھي ”<term> سان ڪوڊ جي ٽڪري کي نمايان ڪريو“ ۽ انھن اصطلاحن کي پاڻ ڳالھائڻ ۾ صحيح طور استعمال ڪريو.
لوپ سان تبديلي کان پوء، ٽڪرا حاصل ڪيو ويندو آهي:

Console.WriteLine("Введение");
int i = 0;
while (i < 7) {
    Console.WriteLine("Глава " + i);
    i = i + 1;
}
Console.WriteLine("Заключение");

بنيادي غلط فڪر

شاگردن جي وچ ۾ هڪ مشهور غلط فڪر اهو آهي ته اهي عملن کي لوپ جي اندر رکون ٿا جيڪي صرف هڪ ڀيرو ٿيڻ گهرجن. مثال طور هن طرح:

;
int i = 0;
while (i < 7) {
    Console.WriteLine("Введение")
    Console.WriteLine("Глава " + i);
    i = i + 1;
    Console.WriteLine("Заключение");
}

شاگرد هر وقت هن مسئلي ۾ هلندا آهن، ٻنهي جي شروعات ۾ ۽ وڌيڪ پيچيده مسئلن ۾.
هن معاملي ۾ اهم اشارو:

ڪيترا ڀيرا توهان کي حڪم ٻيهر ورجائڻ گهرجي: هڪ ڀيرو يا ڪيترائي ڀيرا؟

"تعارف" ۽ "نتيجا" لفظن کي ڇپائڻ ۽ متغير i کي بيان ڪرڻ ۽ ان جي شروعات ڪرڻ جا حڪم ٻين ورجائيندڙ عملن وانگر نه آهن. اهي صرف هڪ ڀيرو جاري ڪيا ويا آهن، جنهن جو مطلب آهي ته انهن کي لوپ جسم کان ٻاهر لکڻ جي ضرورت آهي.

حل جي سڀني ٽن مرحلن کي ڪوڊ ۾ رهڻ گهرجي ته جيئن توهان انهن کي بعد ۾ حوالو ڪري سگهو ٿا مشڪلاتن جي صورت ۾. اهو ڪافي آهي ته پهرين ٻن اختيارن کي تبصرو ڪرڻ لاء ته جيئن اهي مداخلت نه ڪن.
شاگرد جو ڌيان هيٺين حقيقتن ڏانهن ڇڪڻ گهرجي:
- هڪ لوپ حالت ۾، هڪ انسداد ۽ حد عام طور تي مقابلو ڪيو ويندو آهي. ڪائونٽر لوپ جي جسم ۾ تبديل ٿي سگھي ٿو، پر حد نه ٿي سگھي. ھن قاعدي کي ٽوڙڻ لاءِ، توھان کي مجبوري سبب ٺاھڻ جي ضرورت آھي.
- لفظ "تعارف" ۽ "نتيجو" کي ظاهر ڪرڻ لاء حڪم لوپ جي جسم کان ٻاهر واقع آهن. اسان کي ان کي 1 ڀيرا انجام ڏيڻ جي ضرورت آهي. "تعارف" - عملن کي ورجائڻ کان اڳ، "نتيجو" - بعد ۾.
هن موضوع کي مضبوط ڪرڻ جي عمل ۾، ايندڙن تي مهارت حاصل ڪرڻ، گڏوگڏ مشڪلاتن کي منهن ڏيڻ، اهو پڻ مفيد آهي ته مضبوط شاگردن لاء اهو سوال پڇڻ لاء: "هي عمل ڪيترا ڀيرا انجام ڏيڻ جي ضرورت آهي؟ ھڪڙو يا گھڻا؟

اضافي صلاحيتن جي ترقي

مطالعي جي چڪر جي عمل ۾، شاگردن کي تشخيص ۽ مسئلن کي حل ڪرڻ جي مهارت پڻ ترقي ڪري ٿي. تشخيص کي انجام ڏيڻ لاء، شاگرد کي گهربل نتيجو پيش ڪرڻ جي ضرورت آهي ۽ ان کي حقيقي نتيجن سان مقابلو ڪرڻ جي ضرورت آهي. اصلاحي ڪارناما انهن جي وچ ۾ فرق تي منحصر آهن.
جيئن ته هن اسٽيج تي شاگردن کي اڃا تائين "مطلوب" نتيجو جو ٿورو خيال آهي، اهي امتحان جي ڊيٽا تي ڌيان ڏئي سگهن ٿا. ضابطي جي طور تي، هن اسٽيج تي ڪو به اڃا تائين سمجهي نه ٿو ته ڇا غلط ٿي سگهي ٿو ۽ ان سان ڪيئن معاملو ڪجي. تنهن ڪري، مان هڪ نوٽ بڪ ۾ لکان ٿو عام مسئلن جي وضاحت ۽ انهن کي حل ڪرڻ جا ڪيترائي طريقا. سڀ کان وڌيڪ مناسب چونڊڻ شاگرد جو ڪم آهي.
پڇڻ لاءِ هڪ رڪارڊ گهربل آهي ”ڇا ٿيڻ جي توقع ڪئي وئي هئي؟“، ”انهن مان ڪهڙيون حالتون هاڻي ٿيون؟“، ”ڇا لاڳو ٿيل حل مدد ڪئي؟

  1. عملن جو تعداد 1 گھٽ يا توقع کان وڌيڪ آھي. حل:
    - 1 پاران ڪائونٽر جي شروعاتي قيمت وڌايو.
    - سخت مقابلي واري آپريٽر (< يا >) کي غير سخت سان تبديل ڪريو (<= يا >=).
    - حد جي قيمت کي 1 ۾ تبديل ڪريو.
  2. هڪ لوپ ۾ ڪارناما انجام ڏنا ويا آهن بغير روڪي، غير يقيني طور تي. حل:
    - هڪ انسداد تبديلي حڪم شامل ڪريو جيڪڏهن اهو غائب آهي.
    - ڪائونٽر تبديلي ڪمانڊ کي درست ڪريو ته جيئن ان جي قيمت حد جي ويجهو ٿي وڃي.
    - هٽايو رڪاوٽ تبديلي حڪم جيڪڏهن اهو لوپ جي جسم ۾ آهي.
  3. لوپ ۾ عملن جو تعداد 1 کان گھٽ يا توقع کان وڌيڪ آھي. لوپ ۾ عمل هڪ ڀيرو به نه ڪيو ويو. پهرين توهان کي لوپ شروع ٿيڻ کان پهريان متغيرن جي حقيقي قدرن کي ڳولڻ جي ضرورت آهي. حل:
    - رڪاوٽ جي شروعاتي قيمت کي تبديل ڪريو
    - ڪائونٽر جي شروعاتي قيمت کي تبديل ڪريو

مسئلو 3 ۾ عام طور تي غلط متغير استعمال ڪرڻ يا ڪائونٽر کي صفر تي ري سيٽ نه ڪرڻ شامل آهي.

ھن وضاحت کان پوءِ، شاگرد اڃا تائين مختلف غلط فھميون ٿي سگھي ٿو ته لوپ ڪيئن ڪم ڪن ٿا.
سڀ کان وڌيڪ عام ماڻهن کي ختم ڪرڻ لاء، آئون توهان کي هيٺيان ڪم ڏيان ٿو:

  1. جنهن ۾ صارف طرفان حد، ابتدائي انسداد قيمت، يا انسداد قدم داخل ڪيو ويو آهي.
  2. جنهن ۾ ڪائونٽر ويليو ضرور استعمال ڪيو وڃي ڪجهه رياضي جي اظهار ۾. اهو مشورو ڏنو ويو آهي ته ڪائونٽر استعمال ڪريو بنيادي اظهار ۾ يا ڊنومنيٽر ۾ ته جيئن فرق غير لڪير هجي.
  3. جنهن ۾ ڪائونٽر ويليو اسڪرين تي نه ڏيکاريندي آهي جڏهن ته لوپ هلندي آهي. مثال طور، گهربل تعداد جي هڪجهڙائي واري متن جي ٽڪرن کي ظاهر ڪرڻ يا ڪڇ جي گرافڪس سان هڪ شڪل ٺاهي.
  4. جنهن ۾ توهان کي پهريان ڪجهه ورجائيندڙ ڪارناما انجام ڏيڻ گهرجن، ۽ پوءِ ٻيا.
  5. جنهن ۾ توهان کي ٻيهر ورجائڻ کان اڳ ۽ بعد ۾ ٻيا عمل انجام ڏيڻ گهرجن

هر ڪم لاء توهان کي ٽيسٽ ڊيٽا ۽ متوقع نتيجو مهيا ڪرڻ جي ضرورت آهي.

اهو سمجهڻ لاءِ ته توهان ڪيتري جلدي منتقل ڪري سگهو ٿا، توهان کي انهن مسئلن جي شرطن کي پڙهڻ جي ضرورت آهي ۽ پڇو: "اهي مثال کان مختلف ڪيئن آهن؟"، "انهن کي حل ڪرڻ لاءِ مثال ۾ ڪهڙي تبديلي جي ضرورت آهي؟" جيڪڏهن شاگرد معنيٰ سان جواب ڏئي ته پوءِ کيس گهٽ ۾ گهٽ هڪ ڪلاس ۾ ۽ باقي گهر ۾ پاڻ ئي حل ڪرڻ ڏيو. جيڪڏهن حل ڪامياب ٿئي ٿو، ته پوء اسان لوپس اندر حالتن کي بيان ڪرڻ شروع ڪري سگهون ٿا.
جيڪڏهن توهان وٽ مسئلا حل ڪرڻ وارا مسئلا آهن، توهان کي ڪلاس ۾ هر شي ذريعي ڪم ڪرڻ جي ضرورت آهي. ان مسئلي کي حل ڪرڻ کان بچڻ لاءِ جيڪو ياد ڏياريندڙ اللو ٺاهي رهيو آهي، آئون سفارش ڪريان ٿو ته پهرين مسئلي کي غير آفاقي طريقي سان حل ڪيو وڃي. اهو آهي، انهي ڪري ته اهو حل پهريون امتحان پاس ڪري ٿو ۽ لوپ جي تعمير کي استعمال نٿو ڪري. خير، پوءِ حل جي آفاقيت حاصل ڪرڻ لاءِ تبديليون لاڳو ڪريو.

لوڻ ۽ شاخون

منهنجي خيال ۾ ”شاخن جي اندر چڪر“ واري موضوع کي الڳ الڳ ڏيڻ مفيد آهي. انهي ڪري ته بعد ۾ توهان هڪ حالت کي ڪيترائي ڀيرا جانچڻ ۽ ان کي هڪ ڀيرو جانچڻ جي وچ ۾ فرق ڏسي سگهو ٿا.
استحڪام جا ڪم A کان B تائين نمبرن کي ڪڍڻ بابت هوندا، جيڪي صارف پاران داخل ڪيا ويا آهن:
- هميشه وڌندي ترتيب ۾.
- A ۽ B جي قدرن تي منحصر ڪري چڙهندڙ يا هيٺيون.

”شاخن جي اندر شاخن“ جي موضوع کي اڳتي وڌڻ گهرجي صرف ان کان پوءِ جڏهن شاگرد ٽيڪنڪ تي مهارت حاصل ڪري چڪو آهي: ”متغير سان هڪ نمونو مٽائڻ“ ۽ ”ٻيهر ٿيندڙ عملن کي چڪر سان بدلائڻ“.
لوپ اندر شاخن کي استعمال ڪرڻ جو بنيادي سبب نمونن ۾ بي ضابطگيون آهن. وچ ۾ اهو ڀڃي ٿو شروعاتي ڊيٽا جي لحاظ سان.
انهن شاگردن لاءِ جيڪي آسان ٽيڪنڪ کي گڏ ڪري حل ڳولڻ جي قابل آهن، اهو چوڻ ڪافي آهي ته ”شاخ سازي کي لوپس اندر لکي سگهجي ٿو“ ۽ مسئلو ڏيو ”مثال طور“ مڪمل طور تي آزاديءَ سان حل ڪرڻ لاءِ.
مثالي ڪم:

استعمال ڪندڙ نمبر داخل ڪري ٿو X. نمبر 0 کان 9 تائين ڏيکاريو ڪالم ۾ ۽ '+' نشان لڳايو نمبر جي سامهون جيڪو X جي برابر آهي.

جيڪڏهن 0 داخل ڪيو ويو0+
1
2
3
4
5
6
7
8
9

جيڪڏهن 6 داخل ڪيو ويو0
1
2
3
4
5
6+
7
8
9

جيڪڏهن 9 داخل ڪيو ويو0
1
2
3
4
5
6
7
8
9+

جيڪڏهن 777 داخل ڪيو ويو0
1
2
3
4
5
6
7
8
9

جيڪڏهن لوپ سان لکڻ لاءِ مختصر وضاحت ڪافي نه آهي، ته پوءِ توهان کي لوپ کان سواءِ ساڳئي مسئلي جو عالمي حل حاصل ڪرڻو پوندو.
توھان کي ٻن اختيارن مان ھڪڙو ملندو:
گهربل

string temp;
temp = Console.ReadLine();
int x;
x = int.Parse(temp);
if (x==0) {
    Console.WriteLine(0 + "+");
} else {
    Console.WriteLine(0);
}
if (x==1) {
    Console.WriteLine(1 + "+");
} else {
    Console.WriteLine(1);
}
if (x==2) {
    Console.WriteLine(2 + "+");
} else {
    Console.WriteLine(2);
}
if (x==3) {
    Console.WriteLine(3 + "+");
} else {
    Console.WriteLine(3);
}
if (x==4) {
    Console.WriteLine(4 + "+");
} else {
    Console.WriteLine(4);
}
if (x==5) {
    Console.WriteLine(5 + "+");
} else {
    Console.WriteLine(5);
}
if (x==6) {
    Console.WriteLine(6 + "+");
} else {
    Console.WriteLine(6);
}
if (x==7) {
    Console.WriteLine(7 + "+");
} else {
    Console.WriteLine(7);
}
if (x==8) {
    Console.WriteLine(8 + "+");
} else {
    Console.WriteLine(8);
}
if (x==9) {
    Console.WriteLine(9 + "+");
} else {
    Console.WriteLine(9);
}

ممڪن

string temp;
temp = Console.ReadLine();
int x;
x = int.Parse(temp);
if (x==0) {
    Console.WriteLine("0+n1n2n3n4n5n6n7n8n9");
}
if (x==1) {
    Console.WriteLine("0n1+n2n3n4n5n6n7n8n9");
}
if (x==2) {
    Console.WriteLine("0n1n2+n3n4n5n6n7n8n9");
}
if (x==3) {
    Console.WriteLine("0n1n2n3+n4n5n6n7n8n9");
}
if (x==4) {
    Console.WriteLine("0n1n2n3n4+n5n6n7n8n9");
}
if (x==5) {
    Console.WriteLine("0n1n2n3n4n5+n6n7n8n9");
}
if (x==6) {
    Console.WriteLine("0n1n2n3n4n5n6+n7n8n9");
}
if (x==7) {
    Console.WriteLine("0n1n2n3n4n5n6n7+n8n9");
}
if (x==8) {
    Console.WriteLine("0n1n2n3n4n5n6n7n8+n9");
}
if (x==9) {
    Console.WriteLine("0n1n2n3n4n5n6n7n8n9+");
}

برانچنگ جي موضوع جي مطالعي دوران، مان اڳ ۾ ئي ساڳيو ڪم ڏيان ٿو.
جيڪڏهن شاگرد هڪ ”ممڪن“ آپشن سان اچي، پوءِ توهان کي انهن کي ٻڌائڻو پوندو ته ساڳئي مسئلي جا ڪيترائي حل ٿي سگهن ٿا. تنهن هوندي، انهن جي ضرورتن ۾ تبديلين جي مزاحمت ۾ اختلاف آهي. سوال پڇو: ”جيڪڏهن مون کي ٻيو نمبر شامل ڪرڻو هجي ته ڪوڊ ۾ ڪيترين جڳهن کي درست ڪرڻ جي ضرورت پوندي؟ "ممڪن" ورزن ۾، توهان کي هڪ وڌيڪ شاخ شامل ڪرڻ جي ضرورت پوندي ۽ 10 ٻين هنڌن تي هڪ نئون نمبر شامل ڪرڻو پوندو. "گهربل" ۾ اهو صرف هڪ شاخ شامل ڪرڻ لاء ڪافي آهي.
"مطلوب" اختيار کي ٻيهر پيدا ڪرڻ لاء ڪم کي سيٽ ڪريو، پوء ڪوڊ ۾ ھڪڙو نمونو ڳولھيو، ھڪڙو متبادل متبادل انجام ڏيو ۽ لوپ لکو.
جيڪڏهن توهان وٽ هڪ خيال آهي ته هي مسئلو ڪيئن حل ڪجي بغير ڪنهن ٻئي طريقي سان، مهرباني ڪري تبصرن ۾ لکو.

لوپس اندر لوپ

هن موضوع ۾، توهان کي هيٺين تي ڌيان ڏيڻ جي ضرورت آهي:
- اندروني ۽ ٻاهرئين لوپ لاء شمار ڪندڙ مختلف متغير هجڻ گهرجن.
- اندروني لوپ لاءِ ڪائونٽر کي ڪيترائي ڀيرا ري سيٽ ڪيو وڃي (يعني ٻاهرين لوپ جي جسم ۾).
- ٽيڪسٽ آئوٽ پُٽ ڪمن ۾، توھان پھريائين ھڪ اکر ڪيترن ئي سٽن ۾، ۽ پوءِ ٻيو نه لکي سگھو. توھان کي پھريون پھرين لڪير جا سڀ اکر پرنٽ ڪرڻا پوندا، پوءِ ٻئي جا سڀ اکر، وغيره.

اهو بهتر آهي ته لوپس جي اندر لوپس جي موضوع کي بيان ڪرڻ شروع ڪرڻ جي اهميت بيان ڪندي ڪائونٽر کي صفر تي ري سيٽ ڪرڻ جي.
مثالي ڪم:

استعمال ڪندڙ ٻه نمبر داخل ڪري ٿو: R ۽ T. "#" اکرن جون ٻه لائينون پرنٽ ڪريو. پهرين لڪير ۾ R اکرن تي مشتمل هجڻ گهرجي. ٻئي لڪير ۾ T ٽڪرا شامل آهن. جيڪڏهن ڪو نمبر منفي آهي، هڪ غلطي پيغام ڏيکاريو.

آر = 5، ٽي = 11#####
############

آر = 20، ٽي = 3################
###

آر = -1، ٽي = 6آر قدر غير منفي هجڻ گهرجي

R=6، T=-2T قدر غير منفي هجڻ گهرجي

ظاهر آهي، هن مسئلي جا به گهٽ ۾ گهٽ ٻه حل آهن.
گهربل

string temp;
int R;
int T;
temp = Console.ReadLine();
R = int.Parse(temp);
temp = Console.ReadLine();
T = int.Parse(temp);
int i = 0;
while (i < R)
{
    Console.Write("#");
    i = i + 1;
}
Console.WriteLine();
i = 0;
while (i < T)
{
    Console.Write("#");
    i = i + 1;
}

ممڪن نمبر 1

string temp;
int R;
int T;
temp = Console.ReadLine();
R = int.Parse(temp);
temp = Console.ReadLine();
T = int.Parse(temp);
int i = 0;
while (i < R)
{
    Console.Write("#");
    i = i + 1;
}
Console.WriteLine();
int j = 0;
j = 0;
while (j < T)
{
    Console.Write("#");
    j = j + 1;
}

فرق اهو آهي ته "ممڪن" حل ۾، هڪ سيڪنڊ متغير استعمال ڪيو ويو ٻئي لائن کي ٻاھر ڪڍڻ لاء. توھان کي اصرار ڪرڻ گھرجي ته ساڳي متغير استعمال ڪرڻ لاءِ ٻنهي لوپس لاءِ. اها حد ان حقيقت سان ثابت ٿي سگهي ٿي ته هڪ حل سان ٻه چڪر لاءِ هڪ ڪائونٽر ”ڪائونٽر ري سيٽ“ جي اصطلاح جو مثال هوندو. هيٺين مسئلن کي حل ڪرڻ وقت هن اصطلاح کي سمجهڻ ضروري آهي. سمجهوتو جي طور تي، توهان مسئلي جي حل لاء ٻنهي کي بچائي سگهو ٿا.

هڪ عام مسئلو ٻن لوپس لاءِ هڪ انسداد متغير استعمال ڪرڻ سان هن طرح ظاهر ٿئي ٿو:
آر = 5، ٽي = 11#####
######

ٻئين لڪير ۾ اکرن جو تعداد T جي قيمت سان مطابقت نٿو رکي. جيڪڏھن توھان کي ھن مسئلي ۾ مدد جي ضرورت آھي، ته توھان کي لوپ سان عام مسئلن بابت نوٽس ڏسڻ جي ضرورت آھي. هي علامتي نمبر 3 آهي. اها تشخيص ڪئي ويندي آهي جيڪڏهن توهان ٻئي چڪر کان پهريان فوري طور تي هڪ انسداد ويلو آئوٽ شامل ڪيو. ري سيٽ ڪندي درست ڪيو. پر اهو بهتر آهي ته اهو فوري طور تي نه ٻڌايو وڃي. شاگرد کي گهٽ ۾ گهٽ هڪ مفروضو تيار ڪرڻ جي ڪوشش ڪرڻ گهرجي.

اتي، يقينا، هڪ ٻيو حل آهي. پر مون ڪڏهن به شاگردن جي وچ ۾ نه ڏٺو آهي. cycles جي مطالعي جي مرحلي تي، ان جي باري ۾ ڪهاڻي ڌيان distract ڪندو. توهان ان تي واپس اچي سگهو ٿا بعد ۾ جڏهن اسٽرنگ افعال بابت سکيا.
ممڪن نمبر 2

string temp;
int R;
int T;
temp = Console.ReadLine();
R = int.Parse(temp);
temp = Console.ReadLine();
T = int.Parse(temp);
Console.WriteLine(new String('#', R));
Console.WriteLine(new String('#', T));

ايندڙ گهربل ڪم:

0 کان 9 تائين انگن کي ڏيکاريو. ھر نمبر کي پنھنجي لڪير تي ھجڻ گھرجي. هڪ لڪير ۾ انگن جو تعداد (W) ڪيبورڊ مان داخل ڪيو ويو آهي.

W = 10
1
2
3
4
5
6
7
8
9

W = 100000000000
1111111111
2222222222
3333333333
4444444444
5555555555
6666666666
7777777777
8888888888
9999999999

جيڪڏهن هڪ شاگرد هڪ متغير کي تبديل ڪرڻ جي ٽيڪنڪ ۾ مهارت حاصل ڪري چڪو آهي، ته هو تمام جلدي سان مقابلو ڪندو. ھڪڙو ممڪن مسئلو وري متغير کي ري سيٽ ڪرڻ ۾ ٿيندو. جيڪڏهن توهان تبديلي کي سنڀالي نٿا سگهو، ان جو مطلب آهي ته توهان جلدي ۾ آهيو ۽ آسان مسئلا حل ڪرڻ جي ضرورت آهي.

توهان جي توجه لاء مهرباني. پسند ڪريو ۽ چينل کي سبسڪرائيب ڪريو.

PS جيڪڏهن توهان لکت ۾ ٽائپس يا غلطيون ڳوليندا آهيو، مهرباني ڪري مون کي خبر ڏيو. اهو ٽيڪسٽ جو حصو چونڊڻ ۽ ميڪ تي "⌘ + Enter" کي دٻائڻ، ۽ کلاسک ڪي بورڊ تي "Ctrl / Enter"، يا نجي پيغامن ذريعي ڪري سگهجي ٿو. جيڪڏهن اهي اختيار موجود نه آهن، تبصرن ۾ غلطين بابت لکو. تنهنجي مهرباني!

صرف رجسٽرڊ استعمال ڪندڙ سروي ۾ حصو وٺي سگهن ٿا. سائن ان ڪريو، توهان جي مهرباني.

ڪرما کان سواءِ پڙهندڙن لاءِ پول

  • 20,0٪مون کي پيشه ورانه سکيا، +12

  • 10,0٪مون کي پيشه ورانه سکيا، -11

  • 70,0٪مان نه سيکاريان، +17

  • 0,0٪مان نه سيکاريان، -10

  • 0,0٪ٻيا 0

10 صارفين ووٽ ڏنو. 5 استعمال ڪندڙن کي روڪيو ويو.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو