 السلام علیکم آپ کو مرحبا بیرٹوزی اینیورسیٹی داری ہے نبی آپ کو مجھے پر مقابل کرنا ہے اور یہ لیسن نمر 8 ہے پہلے لیسن میں ہم نے لوپس فید نمید کچھ کنکی کی وائی لوپ کے بعد ہم نے دو وائل اور پھر فاور لوپ کو کبر کیا اس کے بعد ہم نے کچھ نائے اپریٹرز انتردیوز کیے انکریمنٹ کے لیے دیکریمنٹ کے لیے اور کچھ کمپونٹ اسائمنٹ اپریٹرز انتردیوز کیے آج ہم ایک فائنل سمجھ لیں ایک ملٹی بیڈ ڈیسیجن سٹرکچر کی بات کریں گے لیکن اس سے پہلے لوپس کے اوپر اور بات کر لی جائے دیکھیں ابھی تک جو ہم لوپس چلاتے رہے ہیں وائل ہو، فور ہو کسی کسم کی بھی ہو ہم ایک اسم کا کونٹر چلاتے تھے یا کہتے تھے کہ جی وائل کوئی نمبر is less than equal to some other نمبر کیا صرف اسی کسم کی لوپس ہوتی ہیں یا کوئی اور بھی ہو سکتا ہے جہاں پہ ہمیں ایک سیکٹ کونٹ پتا ہی نہ ہو کہ جی کتنی دفعہ یہ لوپ چلے گی ان فکٹ یہ کافی کومن اکرنس ہے کہ جی جب لوپ میں ایک پروگرم داخل ہوتا ہے تو ہوسکتا ہے کہ پروگرم کو نا معلوم ہو کہ جی یہ لوپ کتنی دفعہ چلے گی کسی کنڈیشن پہ اس نے ایکزٹ کرنا ہو ایک پھر ہم کونٹرائیوٹسہ ایکزامپل بنالیتے ہیں اپنے لیے سپوز ہم نے کلاس کی ایورڈ جو ہے نا ماکس کی سپوز آپ کے مدٹرم کے رزالت آگے ہوئے ہیں اور ہم نے مدٹرم کے ماکس کی ایورڈ نکالنی ہے کلاس پوری کے لیے وہہاں ورچول جنوورسٹی کی کلاس اس کچھ بڑی ہوتی ہیں سپوز میں آپ کو ماکس دے بھی دوں یا ہماری آپ ویبسائٹ پی جائیں اور وہاں پہ دیکھیں کہ مدٹرم کے ماکس لگے ہوئے ہیں کیسے پتہ کریں گے ایورڈ تو آپ کو لینا آتا ہے نا نمبروں کو جمع کرنا ہے اور ڈیوائٹ کرنا ہے بایدر ٹوٹل نمبر of students اگر یہی ماکس ویبسائٹ پہ پڑیں ہوں what would you do to write a program to find the average کیا آپ سکرول کریں گے اور ایک ایک کر کے پہلے نمبر کو گنیں گے کنے نمبر ہو گئے اور وہ سکرول کرتے کرتے شاید دور سے دن تاکہ آپ اخیر پہ پہ پہنچے ہوں بیچ میں ٹیلیفون آگیا کسی نے انٹرپٹ کر دیا آپ کی گنطی بھول گئے I mean just determining the number of students first and then going and calculating the average will be tedious if not to say, error prone بر یہ ایک contrived example ہے but for the moment it will do سو کیسے کیا جائیں ایک طریقہ اور یہ کتاب میں بھی اچھی طرح explain کیا ہوا ہے وہ یہ ہے کہ جو دیتا ہم انپوٹ کرتے ہیں اسی میں ایک خاص value انپوٹ کر دی جائے جوکہ بتا دے کہ جی لوپ یہاں ختم کرتو سو فرح اگر آپ کے grades ہیں تو آپ کو پتا ہے کہ جی نمبر جو لیے ہم نے mid term میں وہ negative نہیں ہو سکتے اگر کسی نے بہت کوشش کیا اور کہا جی میں 0 ہی لے کے چھوڑوں گا تو 0 تو اس کو مل گیا ہوگا but minus 1 نہیں ملا ہوگا تو آپ کجھا ملگر ہوجا تو دیس طریقہ سے لیکنے کا لونیں فہلہ کسی نہیں ہوتا ہے اسی میں یہ سوڈ اگر آپ کا سوڈ ہے جو آتا ہے کارییابل رکھیں سم کا ڈ ڈ ڈ اور آتا ہے وہ آتا ہے نمبر جو notes تو بہت نمبر کے ساتھ نبا نمبر یا ڈ ڈ اس کے بعد آپ لیکنے داخل ہو جائیں telling جی ہم do while loop استعمال کرنا چاہتے ہیں تاکہ کم از کام ایک student تو ہو جس کا ہم average نکالنا چاہیں تو ہم کہیں گے do loop کے اندر آپ کیا کرتے ہیں ایک تیسی بیریابل میں پہلے grade حاصل کیا let's see in into grade اور وہ grade جو ہے اس کو sum میں جمع کر دیں using our new shorthand operator you would سے sum plus equals grade we also need to increment the number of students تو اگر اوپر students you have اس کو initialize کیا ہوا تھا zero تو loop کے اندر آپ کہیں گے students equals students plus one which again using our new shorthand operators we could use students plus plus اب آگیا loop کا ختم یہاں پہ آگیا while تو while میں کیا کیا جائیں while کے اندر یا تو آپ ٹیسٹ لگائیں کہ جی grade کیا انٹر کیا گیا تھا اگر آپ یہاں پہ ٹیسٹ لگاتے ہیں جی while grade is greater than or equal to zero تو یہ کام کر جائے گی جو ابھی میں نے loop آپ کو describe کیا ہے کیا خیال ہے یہاں بہت ساتل لوجکل فلو میں ہے مسئلہ یہ ہے کہ جی grade کو پہلے ہم نے sum میں جمع کر دیا ہے اور پھر جاکے ٹیسٹ کیا ہے کہ کہیں وہ minus one تو نہیں تھا so I won't discuss this problem further think of how you would write a loop that would terminate جب grade you have a minus one انٹر کیا ہو لیکن grade کو وہ sum کی اندر جمع نہ کرے اور نہ ہی وہ number of students کو increment کرے کیونکہ minus one کیسی کا grade نہیں ہے وہاں پہ loop terminate کرے جب آپ loop سے بہر آئیں تو اس وقت آپ نے کہنا ہے average equals sum divided by students اور پھر average کو print کر دینا ہے so see how you would do this and perhaps discuss this on the discussion board try to find an efficient and elegant solution to this problem both things are nice to have efficient بھی ہو مفت کی چکرنہ لگ رہے ہوں اور elegant بھی ہو سمجھ بھی آئے اور تھوڑ سی خوبصورتی کوئی elegant speech میں ہو کوڑ کے جو آپ لکھ رہے ہیں آج کا ہمارا جمعین topic ہے وہ ہے multivay decision کا اور یہ grade سے اچھی اس کی گفتگورہ آگاز کیا جا سکتا ہے multivay decision کا باتا ہے لیکن ہر دفعہ ہمارے پاس ایسی situation نہیں ہوتی کہ جی if a is greater than b or a is less than b not just one condition کئی دفعہ یہ ہوتا ہے کہ جی دیرہ several conditions جن کے ہر condition کیلی آپ نے کوئی مختلف ایکشن لینا ہے اگر پیرول کا ایکزامپل لے لیں تو جی اگر ہزار رپیہ سے کم تنخا ہے تو اس کا کوئی income tax نہیں کرتے گا ہزار سے دس ازار تک کوئی income tax کرتنا ہے دس ازار سے بیس ازار تک کوئی extra tax اس کے اوپر لگانا ہے اس سے اوپر کچھ اور کرنا ہے سو کئی کیٹیگریز ہو سکتی ہیں آپ کے grades کو لے لیں اگر ہم کہیں کہ جی ہر grade کی description پرنٹ کرنی ہے اور loop ہم چلا رہے ہوں student grades کے اوپر تو جس کا a آیا ہم چاہتے ہیں کہ وہاں پہ excellent لکھا جائے جاں b آیا ہم لکھیں very good یہاں c آیا ہم لکھیں good لکھ دی آیا ہے وہاں لکھتے ہیں poor e grade کوئی نہیں ہے ملتا otherwise you might have introduced کے جی e b excellent کے لیے ہے e کوئی grade نہیں ہے ہمارے پاس f fail so again ہمارے پاس ab cd اور f 5 مختلف grades ہیں جن کی اپنی اپنی description ہے اب program کے اندر اگر یہ description لکھنی ہو تو ہم کیسے لکھیں ایک تو tool ہمارے پاس ہے go ahead decision so you can always write if grade equals اور equals double equal استعمال ہوگا یہ comparison operator میں و پھر single quotes کے اندر a تو if grade equals a c out excellent if ختم ہو گیا نیا if لکھیں if grade equals b c out very good یہ بھی if ختم ہو گیا and so on so اگر ہمار پاس 5 چیزیں ٹیست کرنے والی ہیں تو 5 مختلف if statements آپ لکھ سکتے ہیں logically they are correct but can we do things a little better یہ میں آپ کو بتا دا چلتا ہوں کہ جی if statement جو ہے computationally is one of the most expensive statements that you can have in the computer in your program what does that mean it means کے جی if کو execute کرنے کے لیے processor کو کئی cycles میں سے گزرنا پڑتا ہے before a single decision can be evaluated so اگر آپ نے اپنے پرگرم کو efficient بنانا ہے چاہتے ہیں کہ وہ تیز جلے جلدی کام کرے اور یہ بہت ہو رہی ہے اب ہم بڑے programs کی بات کر رہے ہیں تو آپ performance evaluation میں جب جائیں گے you will learn کے جی جتنے کم if ہوں گے اتنا تیز program چلتا ہے اور بھی بڑے توٹکہ آپ کو میں باتاتا چلوں گا but if is an expensive statement so اگر ہم نے پانچ چیزوں کا ٹیست کرنا ہے جن میں سے آنسل صرف ایک چیز گئی ہوگا یا گریڈ اے ہوگا یا بی ہوگا یا سی ہوگا یا دی ہوگا یا ایف ہوگا یہ نہیں ہے کہ کسی کا گریڈ اے بھی ہو اور سی بھی ہو so پانچ ٹیست لگانا جو ہے that is very expensive because ایک آنسر true آئے گا اور چار کا false آئے گا so what can we do well you remember کیا آپ کے پاس if else بھی ہے so you could always write it is if grade equals a see out excellent else else کے اندر کیا لکھا جائے well i mentioned earlier کیجی nested if تو ہو سکتا ہے you can always write another if statement inside the other if so else کے بعد ہم لکھتے ہیں if grade equals b see out very good اب کیا کریں well next further else if grade equals d see out good or c کے لیے good d کے لیے poor and so on دو تھوڑے سے مسئلہ آرہیں با these are stylistic issues ایک میں نے کہا کہ جی if کے بعد آپ کو indent کرنا چاہیے تاکہ نظر آئے کہ جی if کس چیز پہ ایکٹ کر رہا ہے سو اگر آپ اس طرح نست کریں گے تو آپ کی indentation چاہتھے پانچ میں چھے میں لیوے پہ پانچی ہوگی سکرین کے بھی سائد پہ آپ کو right left scroll کرنا پڑھ رہا ہوگا but there is another way of doing it which is exactly equivalent no difference in terms of syntax but a difference in terms of style of writing سو if you were to write if grade equals a see out excellent else if grade equals b اب کیا کیا ہے کہ جی else کے ساتھ space چھوڑ کے if grade equals b لکھ دیا ہے practically what is happening اس کے نیا اف جو ہے جو بی والا اف ہے یہ اس else کے اندر ہے لیکن لکھتے وقت یہ same indentation level پہ لکھا گیا سو اب لکھنا اسان ہو جاتا ہے اور آپ کو block جو نظر آئے گا وہ آئے گا if this thing else if this thing else if کے درمیان space ہے they are two different keywords اور پھر else if this thing else if this thing اور اخیر پہ ایک single else فلانا single statements کیلی ہے کافی ہے اگر ہر if کے ساتھ multiple statements ہوں then remember to use braces and make sure that the braces match whenever you're using braces then it is better to go to the indentation style تا کہ آپ کو blocks نظر آتے جائیں okay so two approaches we have covered for the multi way decision the first one is using as many ifs as are necessary but i said that is expensive the second one was using nested ifs کے if کے بعد else ڈال اور else کے اندر ایک اور if شروع کر دیا یہ پہلے والی اپروٹ سے زرا سا زیادہ efficient ہے کیونکہ اگر پہلہ حصہ true ہو گیا تو else execute می ہوگا اف پورے بڑے والے if سے بہر آ جائیں گے so it is more efficient but do we have a construct a separate standalone construct to handle these instances and the answer is obvious yes we do the construct that we use is called the switch statement sw itch so it's the switch statement switch جو ہے وہ بھی سی مے Provide کیا گیا ہے practically for these purposes تا کے کچھ کوڑ جو ہے وہ efficient کی لکھا جا سکے یا آسان ہو جائے and in a way it is very very readable switch ڈیٹمنٹ کا جو سنتیکس ہے اس کے آپ لکھتے ہیں switch آگے پر انتسیس کے اندر کسی ویریبل کا نام تیک ہے نا کی جی اس چیز کو ٹیست کیا جائے گا اس کے بعد قرلی بریسز آ جاتے ہیں اس کے بعد جو ہم نے if کے اندر لکھنا تھا grade equals a grade equals b ای اچھای طرح وہ یہاں پہ آپ case کے طور پہ لکھتے ہیں so you would write case let's say within single quotes a پھر آگے کولن ڈالتے ہیں so case a اب جو case a کیلئے کام کرنا ہے وہ نئی statements آ جاتی ہیں جو ہر statement semi-colon کے ساتھ انٹ کرے گی اور اس کے بعد آپ دوسی لین پر چلے جاتے ہیں واپس اندرنٹ کر کے case b اور پھر اس کی statements پھر case c ہر case جو ہے اس کے بعد آپ نے کوئی value دی یہ value کس کے ساتھ کمپیر ہوری ہوگی جو switch میں variable دیا تھا so in our grades example you would write switch grade پھر curly braces کے بعد case a within single quotes colon اور اس کے بعد آ جائے گا c out excellent case b c out very good and so on till you come to the end of the switch اور کوئی cases نہیں بچتے curly braces ڈالے switch کا block complete ہو گیا لیکن یہ actually complete نہیں ہوا اس کے اندر دو تین چیزیں شاہ رکھنا لازمی ہے ان چیزوں کے اندر switch کے لیے پہلہ مسئلہ یہ آتا ہے کہ جی let's see grades والے example ہم لے کے آگے چلتے ہیں کہ جی user نے چھوٹا اے ڈالا ہے یا بڑا اے ڈالا ہے تو کیا کریں should we have different cases because remember c is case sensitive so وہ چھوٹے اے کو differentiate کرتی ہے from the capital a and they are two different characters one is typed without pressing the shift on the keyboard and the other one is typed by holding down the shift button and then typing a آپ کو introduction so computing introduction to computing سایاد ہو گا کہ جتنے ہمارے کیبوٹ کے characters ہیں ان کی computer کے اندر numeric values ہیں so there's an as کی character set کتاب کی appendix میں بھی آپ کو مل جائے گا so her character کی اپنی value ہے inside the computer چھوٹے اے کی or value ہے capital اے کی or value ہے ہم کیا چاہتے ہیں کہ جی user you know we want to make the program user friendly some کہتے ہیں کہ جی user پر یہ نہ ڈالیں کی نہ capital a ڈالا تو میں بتا ہوں گا excellent اور چھوٹا ڈال دیا تو مجھے نہیں پتا کہ کیا کرنا ہے so what you would want to do is have two things you would want to have capital ab ڈال ہو رہاو چھوٹا ab ڈال ہو رہاو اب switch ڈالا کی کچھ limitations آنے لگی ہم یہ نہیں کہہ سکتے case capital a or a no you have to make these two separate cases so you have to say case capital a ڈالا but ڈالا کیا ہے next لین آپ لکھیں گے case within single quotes چھوٹا a ڈالا اور پھر اس کے بعد جو بھی کرنا ہے what the switch statement does is that the cases fall through جو بھی پہلہ case کرکت ہوگا تھی کھانا اس کے بعد جو statement سیں وہ ساری execute ہوتی جائیں گی right down to the end of the switch statement you have to know this this is important ہوتا کی ہے suppose آپ نے b grade enter کیا what happens is a ڈالا case تو skip ہو گیا case b ڈالا آیا آپ نے کر دیا see out very good لیکن from what I just said باقی تمام statement switch کی execute ہو جائیں گی so اب آئے گا see out good پھر آئے گا see out poor پھر آئے گا see out fail یہ سب پرنٹ ہو جائیں گے we don't want that to happen what we need to do is جب ایک case جو ہے وہ کبر ہو جائے تو چھلان مارکے کسی طریقے سے switch statement سے بہر آ جائے جائے اس کے لیے جو ایک key word استعمال ہوتا ہے وہ ہے break so b r e a k semi colon یہ جو break statement ہے یہ پہلی دفاہ میں ایک ایسی statement introduce کی ہے جو کہ flow of control کو interrupt کرتی ہے نام بھی سی ہے break اب اس کو آپ کو apply ڈرہ سا ریلی جس لی کرنا پڑے گا مسئلہ یہ ہے کہ جی میں نے کہا کہ جی switch statement میں جب اب داخل ہوتے ہیں تو جو پہلا true case ہے وہ وال execute ہوگا لیکن اس کے بعد execution چلتی ہی جائے گی جب تک switch ختم نہیں ہوتا so ایک عادت بنالیں کہ جی ہر case کے لیے جو بھی execute کرنے action اس کے بعد break لکھ دیا جائے تو ہوگا کیا کہ جی correct case ڈھوندھا جائے گا switch statement کے اندر سے اس case کیا جو body ہے جو statement اس کے اندر دیو ہی ہیں وہ execute ہوگی اور اس کے بعد break encounter ہوگا آپ جم کر کے بہر آ جائے گے جو میں نے example دیا کہ جی case capital a اور case lower case a یہ example SPECIFICALLY اس کو اس کے against ہے کہ جی ہم دونوں چیزوں کے لیے ایک ہی کام کرنا چاہتے ہیں تو ان کے درمیان میں break نہیں آئے گا یہ statement ایک اٹھی first line second line کر کے آپ لکھ دیتے ہیں اس کے بعد جو بھی common actions دینے ہیں in this case see out excellent وہ دیکھے آپ کہتے ہیں break so پھر switch کے بہر آ جاتے ہیں so it is a good idea for every case paragraph inside the switch statement to be ended with a break کیا سارے جو possibilities ہیں وہ ہر case کے اندر ہندل ہو جاتی ہیں for example یہی grades کا اجام پہلے لیں کہ جی ہم کہہ رہے ہیں کہ جی abcd and f what happens if the user insists کہ جی میں نے z ہی انٹر کرنا بھی z تو کوئی case نہیں ہے so اس کے لیے بہتر یہ ہے کہ جی اس situation کو بھی handle کر لیا جائے this is again part of good programming practice that handle all possible inputs اس کے لیے switch statement جو ہے آپ کو ایک default paragraph دیتی ہے so normally اوپر ہم ساری چیزیں جو actually اکر کرنی ہیں ان کے لیے case statements لکھتے ہیں اور اخیر پہ لکھتے ہیں default d e f a u l t colon اور اس کے بعد آپ کچھ اور action لینا چاہیں in this case you would say something like پیس انٹر گریڈز from a to d اور f like a polite statement rather than being rude in saying you know you've entered a nonsense grade please make sure you know how to make you know do data entry let's be polite so اس طرح کی چیز لکھے پھر ہم switch statement کو کمپلیٹ کرتے ہیں going back remember switch statement is optional یہ multiple if statement کے ساتھ یا if else کے nesting کے ساتھ یہی کام achieve ہو سکتا ہے but sometimes یہ naturally fall کرتا ہے کہ جی problem ایسا ہے کہ اگر اس پہ switch statement لکھتے ہیں تو زیادہ elegant نظر آئے گا اس واستے یہ اپنی جگہ پے دھلا ہوا ہے یہاں پہ ہم نے ایک نئی statement ایک نیا کیورڈ انٹردیوز کر دیا وہ ہے break کا break کے اوپر میں بھی تھوڑی در میں اور بات کروں گا کیونکہ یہ صرف یہاں switch کی اندر نہیں اور جوگوں پہ بھی استعمال ہو سکتا ہے for the moment let us look at the flow chart representation of the switch statement and also let us look at some of the limitations کے switch کب استعمال کیا جا سکتا ہے پہلے تو اس کا flow chart وہ سیمپل ہے بالکل if کے flow chart کے اس کی طرح بنایا جاتا ہے ہم اوپر سے لائن راتے ہیں ایک diamond بناتے ہیں اس کے اندر آپ لکھ دیں گے switch grade اس اگرامپل کے لیے اس کے بعد see the نیچے لائن نکال دیں یہ جو vertical line نیچے نکل رہے اس سے right کو as with our always left to right indentation آپ لائنے نکالیں گے لائن نکالی نیچے لائے اس کے اندر rectangle بنایا جو بھی اس کے اندر کرنا ہے display excellent ٹیک ہے نا اور وہ لائن واپس vertical line کے ساتھ جوڑ دی لیکن جو اوپر سے لائن نکالی تھی وہاں پہ آپ لکھ دیں case a ٹیک ہے نا اسی زرہ آپ right کو ایک level right کو rectangles بناتے جائیں گے case b case c case d case f default اوپر سے لیکے نیچے تک جو vertical line گئی ہے وہ switch statement کا starting point ہے اور نیچے والا سب سے جو ہے وہ switch statement کا ending point ہے and the reading would be کہ جی یہ جو multi way decision ہم نے ایک diamond تو بنائے جس میں لکھا ہے switch grade اس decision کی وجہ سے ایک block execute ہوگا زیادہ نہیں ہوں گے this of course implies کہ آپ نے ہر block کے ساتھ break لکھا ہے otherwise the representation does not conform so the nice thing again is that our graphical representation in flow charting form actually goes one to one with the code that we write for the switch statement اب the rise کو دیکھ لیتے ہیں کیلی اس پر limitations کیا ہے دیکھیں اس تیٹمٹ جو تھی نا وہ تو ایک general statement تھی اس کے اندر آپ بڑی گھم بیر کی سم کی ایک compound expression ڈال سکتے تھے you could have said if amount is greater than 2335 point 0 9 do something switch statement can only work with integral data when I say integral it mean integers okay whole numbers whole numbers کے لیے ہمارے پاس short int long یہ تینوں variants ہیں لیکن ابھی جو ہم نے ایک سامپل کیا ہے اس میں تو ہم کریکٹرز استعمال کر رہے تھے کیوں کو چیز یاد آئی ابھی میں بات کی تھی کہ کریکٹرز کی internal representation جو ہے اس کی اگر سٹ لے لیں تو ایک bite کے اندر ہو رہی ہے that means characters are also represented as whole numbers inside the computer so see کا switch statement جو ہے can deal with integers or characters جو سوچ کے case statements ہیں case statements کے اندر we must put constants we have to say case a case 300 case f اس طرح کی چیزیں لکھی جا سکتی ہیں case 100 point 5 نہیں لکھا جا سکتا because it deals with integer ڈیٹا so integer ڈیٹا کے ساتھ اس طرف کام کرتا ہے اور کریکٹرز اس میں included ہیں باقی چیزوں کے ساتھ نہیں آپ یہ نہیں کہ سکتے switch grade and something else you can't do case a or b you can't do compound things you can do only very simple things but it's a nice structure it's a nice structured construct جس کا فلو چارٹ بھی ہم نے بنالیا اور ابھی جب ہم structured programming کی بات کریں گے تو اس میں بھی یہ exactly fit ہوگا اب اگر ہم بات کریں کہ جی یہ break statement اس کا اور کوئی استعمال ہے کہ نہیں ابھی تک ہم جو programs کر رہے تھے loop کی طور پہ خاص طور پہ اس کے اندر آپ نے دیکھا کہ جب loop چلاتے تھے تو ہمیشہ ہمیں کوئی condition violate کرنی پڑتی تھی to end the loop کہ جی کہی پہ کوئی چیز false ہو جائے یا try نم پانچ سے بڑا ہو جائے یا counter جو ہے دس سے بڑا ہو جائے تو تب loop سے بہر نکلنا ہے اور یاد ہوگا آپ نے وہ guessing game والا example ہم نے کیا تھا جس میں ہمیں خاص طور پہ سوچنا پڑا تھا کہ جی اگر user نے correct guess کر دیا ہے جو character ہم نے چھپایا ہوا ہے تو اب loop سے کیسے نکلا جائے تو ہم نے کو try نم کی value exceed کرا دی تھی تا کہ while کی condition violate ہو جائے ایسی situation کے اندر break بھی استعمال کیا جا سکتا ہے so if you think back to the original problem جہاں پہ computer کو ہم نے کہا تھا کہ یہ ایک character چھپالو اور user keyboard سے guess کرے گا تو وہاں پہ ایک تو آپ نے loop چلا دی جس میں کہا کہ جب تک number of tries جو ہے وہ پانچ نہیں ہو جاتی تو user سے guess لیتے رہو لیکن اگر user نے correct guess کر دیا تو we could have written very simply if see let's say guess was z کو کر رہے ہیں if the character comes variable see equals single quotes z see out great you have made the correct guess break یہاں پہ break ڈالنے سے کیا ہوتا ہے جو closest اس کے loop ہوتی ہے for loop ہو while loop ہو یا do while loop ہو in a most loop وہ ایک دن exit ہو جاتی ہے بغیر کچھ کی ہے یعنی the control passes to the statement after the loop so break can be used to jump out of the loop very quickly there is another statement which is related to break and also relates to loops یہ statement یہ ہے continue کی statement کئی دفعہ یہ ہوتا ہے کہ جی ایک loop کی body میں ہم نے اتنا سارہ code لکھا ہوا ہے پہلے والا حصہ جو ہے وہ تو common ہے وہ تو ہر دفعہ execute کرنا ہے لیکن نیچے والا حصہ جو ہے وہ certain cases میں execute کرنا ہے certain cases میں نہیں execute کرنا لیکن loop پھر بھی چلا نی ہے ایسی cases کے لیے ہمارے پاس ایک key word ہے which is continue break بھی اکیلہ لائن پہ لکھا جاتا ہے with a semi colon continue بھی جو ہے وہ اکیلہ لائن پہ لکھا جاتا ہے with a semi colon continue statement جو ہے وہ کرتا ہے کہ جی it forces the immediate next iteration of the loop it forces the loop to go to the next round so continue jumps جو بھی باکی statement loop کی body کی اندر ہیں ان کو execute نہیں کرتا اگر اوپر continue آگیا کہیں پہ تو وہاں سے jump کر کے loop پھر سے شروع ہو جائے گی اب تھوڑے سی subtle thesis کے اندر آتی ہیں اگر آپ while loop کو لے لیں تو while loop کی اندر آپ کو یاد ہے کہ ہم loop کی body کی اندر یہ arrange کرتے ہیں کہ جی وہ جو condition test ہو رہی ہے وہ کسی طرح سے change ہو ہے تا کہ while loop کبھی نہ کبھی terminate بھی ہو جائے we don't want infinite loops in our programs جب یہ continue کی statement execute کرنی ہے تو you must be very careful of the logic کہ جی loop variable جو ہے یا loop counter جو ہے جس پہ condition depend کر رہی ہے اس کو change پہلے کر لیا ہے کہ نہیں کیا be careful of that same applies to do while لیکن for کی اندر ایک تھوڑی سی double trick ہے جب while کی اندر continue آتا ہے تو immediately اوپر جاکے while کا test execute ہو جاتا ہے so if you said inside a while loop you said continue and the loop وہی تھی while trinum less than equal to five تو immediately test ہوتا ہے is trinum less than equal to five if so loop پھر سے شروع ہو جاتی ہے if not loop exit ہو جائے گی for loop کی اندر کیونکہ یہ تینوں چیزیں for کی statement کی اندر ہم نے ڈالی ہوں ہی تھی ہم نے ڈالا تھا for initialization statement counter equal to zero semi colon پھر ہم نے test ڈالا ہوا تھا counter less than equal to ten semi colon اور پھر ڈالا ہوا تھا کہ کرنا کیا ہے counter plus plus اب اس for loop میں اگر continue کی statement آئی تو سب سے پہلے counter plus plus ہوگا پھر loop کا test چلے گا یعنی we have in a way a built-in mechanism that forces the next iteration but by definition in a for loop the next iteration means کہ جو increment کرنا ہے یا decrement کرنا ہے وہ ہو جائے گا اور پھر loop کا test perform کیا جائے گا while statement میں یہ ہماری responsibility ہے کہ ہم code کریں کہ جی loop test کو کسی طرح سے affect کرنا ہے کہ نہیں کرنا for loop کی اندر continue جو ہے وہ automatically اس چیز کو force کر دے گا اب ہم نے in a way basic programming constructs جو see or see plus plus ہمیں provide کرتی ہیں وہ cover کر لی ہیں دیکھ ہم نے کیا کچھ cover کیا ہم نے sequential statements simple statements پہلے یہ کرنا پھر یہ کرنا پھر یہ کرنا وہ cover کر لیا sequences اس کے بعد ہم نے decisions cover کیے جس نے ہم نے پہلے if دیکھا پھر if else دیکھا اس کے بعد ہم نے اسی کا آخری حصہ جاتا وہ switch statement کے اندر multi way decision cover کیا so sequences and decisions the third variety is loops any repetition structures اس کے اندر ہم نے while loop do while loop or for loops cover کیا کچھ ہر سا پہلے دو researchers warm and جاکوپینی انہوں نے ایک بڑی strong کسم کی statement research کے بعد انہوں نے کی about programming انہوں نے کہا کہ جی کوئی بھی program ہو وہ صرف تین construct کے مدد سے لکھا جا سکتا ہے وہ construct sequences ہمیں پتا ہے ایک دوسی تیسری statements one after the other decision structures which means if or if else and loops which is repetition ان تین کی مدد سے کوئی بھی program لکھا جا سکتا ہے پر ہم نے کی ہی یہ تین چیزیں ہیں بیسی کر لی so what's strange about that to understand what is strange about it and to complete the picture about programming we have to step back a little bit into the history کیہیں پرگیمیں کہاں سے آ رہی ہے جب یہ mainframe computers میں کچھ لنگوڈیز چل رہی تھی four-tran ہے کو بول وگیرہ ان کے اندر ایک statement ہوتی تھی وہ تھی go to statement جی او تی او وہاں چلے جاو this is an unconditional branch of execution یہ نیس کے ساتھ if وگیرہ نہیں ہے آپ اکلا لکھ سکتے go to plane statement جو کوڈ ان گوٹوز کے ساتھ لکھا گیا اس کوڈ کو سمجھنا بہت ہی مشکل ہے اور وہ ہی بات کروں کہ چھوٹے چھوٹے program کی تھی بڑے program کے اندر جب بھی کوئی unconditional branch of execution آتی ہے تو it becomes very difficult کہ یہ پتا کرنا کہ جی ہم کس رستے سے یہاں پہ آئے ہیں so it becomes difficult to find out کہ جی you آئے ہیں ایدر سے آئے ہیں یہ یہاں سے چھلانمار کے یہاں پہ آئے ہیں tracing a program debugging it ابھی تو یہ صرف tracing a debugging بات ہو رہی ہے modification کی بات آئے تو heart attack ہو جاتا ہے program اس کو اگر go to والے programs آجائیں وہ کوڈ جو تھا اس کو ہم traditionally spaghetti کوڈ کہتے تھے سمجھیں ہوتی ہے اس پیگیٹی ہوتی ہے وہ گنجل پڑے ہوتے ہوتے ہیں اپس میں ان کو تو سیدہ کرنے ہی مشکل ہے کسی سرے کو پکڑ کے آگے چلنا it's very difficult to find out where it is going that was all spaghetti کوڈ اب بری بات see یا see plus plus کے اندر go to statement ہے میں نے نہیں آپ کو بتایا so I will not be quoted ڈیکنہ unfortunately it is there for completeness but it's use is frowned upon ڈیری نہ استمال کریں اس کو so we will not talk more about it other than to go back to the structured programming construct by saying ڈیری کوئی بھی program ہو وہ آپ sequences decisions or loops کے ساتھ لکھ سکتے ہیں so there is no justification for using a go to in a program جب آپ یہ جو structured programming کرتے ہیں because sequences decisions and loops کے ساتھ ہوتی ہے تو آپ کا جو thread ہے یعنی the path through the program کس رستے سے آپ کا program چلا وہ کبھی بھی چھلانگے نہیں مائتا ڈیکنہ you نہیں ہوتا کہ یہاں آ کے go to سے آپ کہیں واپس اوپر چلے گئے اور پھر چکر لگاتے لگاتے آئے ہیں in other words it's very easy to trace you can always say کہ جی اگر یہاں سے آئے ہیں تو یا پات a سے گزرے ہیں یا پات b سے گزرے ہیں end of story کوئی مطلب کسم کی زیادہ first exit جو ہے وہ کہی سے نہیں ہوئی یا unconditional go to جس کو کہتے ہیں اسی condition کو سامنے رکھتے ہوئے I would like to make another statement in general where ever possible you should minimize the use of break in your loops switch ڈیٹمنٹ میں نہیں switch ڈیٹمنٹ میں تو لازمی ہے کہ آپ استعمال کریں otherwise کوئی نقوی logical error ہو جائے گا لیکن جب بھی آپ loop لکھ رہے ہو کوشش اے کریں کہ وہ condition test کے ساتھ آپ کی loop چل جائے break لگانے کی ضرورت نہ پیش آئے same applies for continue continue کیا کر رہے ہم نے بات کی تھی کہ جی loop کی آدی statements جو ہیں body کی وہ execute ہوگی اور کچھ کو ہم کہی جی ابھی نہیں استعمال کرنا یا execute کرنا تو وہاں if لگا دیں there is no real reason کہ جی آپ کوئی continue یا break استعمال کر رہے ہیں so be careful of that go to ڈیٹمنٹ میں ہرگیز استعمال نہیں کرنا لیکن break or continue also within loops I would like to say minimize its usage because it will make your programs easier to understand even for yourself especially for others and certainly when you try to debug them or trace the execution path of your program اب زرا structured programming کے اوپر کچھ guidelines کی بات کرتے جاتے ہیں ایک تو modular بنائیں program کو modular کا کیا مطلب ہے وہ ابھی آگے جاکے جب ہم functions وغیرہ میں گھسیں گے پھر idea ہو جائے گا لیکن basic concept یہ ہے کہ یہ اگر ایک بڑا سارہ problem ہے اس کے چھوٹے چھوٹے ٹکڑے کر لیں ہر ٹکڑا جو ہے وہ easily manageable ہو اور ان ٹکڑوں کی ذریعے سے a program بنائیں so modular ہونا چاہیے اس کے بعد ہر module یا ہر construct وہ single entry single exit ہونی چاہیے اس کا کیا مطلب ہے مطلب بیسیکل یہ ہے کہ جی اس کا construct کے اندر یا function کے اندر یا program کے حصے کے اندر داخل ہونی کے لیے بھی ایک ہی دروازہ ہے اور نکلنے کے لیے بھی ایک ہی دروازہ ہے دیکھیں میں نے ابھی تھوڑا ارسا پہلے آپ سے بات کی تھی کہ جی break استعمال نہ کریں کیونکہ break in a way violates this principle جی loop break سے بھی exit ہو سکتی ہے اور normal condition violate ہونے سے بھی ہو سکتی ہے so try to keep it single entry single exit کیا فائدہ کیا اس کا روز مرہ کی زندگی سے ایک مثال لیتے دیکھیں بس پہ آپ نے صفر کیا ہوگا اور خاص طور پہ میں اومنی بس جو شہروں کے اندر چلتی ہیں انگی بات کر رہوں stop پہ کھڑے ہوں اور بس آ کے رکے تو کیا ہوتا ہے جو بہر پیسنجز کھڑے ہیں انتظار کر رہے تھے وہ چھلانوار کے دروازے سے اندر گسنے کی کوشش کرتے ہیں اور دکھ کمپیل ہو رہی ہوتی ہے کون پہلے گھسے گا صرف اتنا ہی کافی نہیں ہے اندر جو بچارے مسافر تھے جو اترنا چاہرے تھے اسی stop پہ وہ بھی اس دروازے سے اترنے کی کوشش میں لگے ہوئے ہیں so a big wrestling match وہ ہو رہا ہوتا دروازوں کے اوپر کتنا سیمپل سا ایک سلوشن ہے کہ جی ایک دروازے پہ ان لکھا ہو اور دوسر دروازے پہ out لکھا ہو جنو نے چڑنا ہے بس پہ وہ انوالے دروازے سے چڑیں اور جو اندر مسافر ہیں جو اترنا چاہرے ہیں وہ out والے سے بہاہر آجائیں کوئی کلاش نہیں ہوگا ارام سے آپ کی traffic وہ چلتی رہے گی بس کا stop کے اوپر 5 منٹ کے بجائے دو منٹ کے اندر پوری بس خالی ہوکے reload ہو سکتی ہے افیشنسی بڑھ جاتی ہے and it is a very orderly thing to do that is what single increase single exit can do for you if we apply this principle religiously you will notice something that is common in all of the stuff that we have covered till now وہ کومن چیز یہ ہے کہ میں جہاں پہ بھی flow chart بنائیا کسی construct کا سیکونس تو ٹھیک ہے نا اوپر سے line آئی چارس دبھے بناتے گئے اس کے اندر processes لکھتے گئے لیکن پھر ہم if پے آئے if else پے آئے while پے آئے all of these loops you notice کہ اوپر سے ایک line چلی درمیان میں while statement آئی while کی loop side پر آ گئی نیچے ایک line نکلی کہ یہاں پے while exit کرے گی جتنی بھی ہم نے تصویریں بنائیں وہ اوپر والا چھوٹا سا point جو ہے وہ اس کا entry point ہے اور نیچے والا جو اسی vertical line کی سید کی اندر دوسرہ point ہے وہ اس کا exit point ہے all of these constructs have been made and designed in a single entry single exit fashion and that was by design the reason ان کو ہم structured programming کی اندر استعمال کرنا چاہتے ہیں اور یہی structured flow charts یہ constructs ہم structured flow charts میں contribute کرتی ہیں so if we look at کہ جی structured programming کی اور کوئی guidelines یا flow charting کی اندر ہم کس طرح اس کو لیکے جائیں تو we can have a few rules یہ rules جو ہیں یہ بھی آپ کی اندر کوئی معی have been made اور آپ کے پر ہم کرتے ہیں لیکن یہ比بلت ہیں یہری تاکہ نایا یہ어 Aaabahn come پہلا Report جیں کہ کیا Myth تو اس مجھے비طان کے ذریلی یہی بیلی divorce نمع بè جو ہے کہ رکٹانگل جو ہے it represents a process it could be input output or any processing that you want to do any rectangle can be replaced by two rectangles now this concept is the same as taking a more complex problem and splitting it up into two simpler problems so we have split it up we are going towards the modular approach so start with a simple block then any single rectangle can be replaced by two blocks and now comes rule number three rule number three یہ کہہتا ہے کہ کوئی بھی rectangle جو ہے وہ ہمارے structured جو flow charting constructs تھے اُن کے ساتھ رپلیس کیا جا سکتا ہے یہ construct کن سے تھے decision loop یا multivay decision یا loop کے ایک فلو چارٹنگ کنسٹرکٹز تھے ان کے ساتھ رپلیس کیا جا سکتا ہے یہ کنسٹرکٹ کن سے تھے؟ دیسیشن، لوپ یا ملٹیویڈ دیسیشن یا لوپ کے ویرینٹز جو ہیں سو دیکنیز کسی بھی ریکٹانگل کو نکال کے آپ وہاں پہ اف سٹیٹمنٹ کا سٹرکچٹر پلانٹ کر سکتے ہیں اب وہ فائدہ آپ کو نظر آجائے گا کہ ہماری تمام کنسٹرکٹر تھیں ان کا ایک انٹری پویںٹ تھا، ایک ایک ایکزٹ پویںٹ تھا اور وہ کسی ریکٹانگل کی جگہ پی آپ اٹیچ کر سکتے ہیں رول نمبر 4 ہے ایک سیمپلر یہ کہتا ہے کہ یہ رول نمبر 2 او 3 جتنی مرتبہ دل کرے رپیٹ کرلیں ہماری کیا کیا ہماری کیا؟ ہماری ایک سیمپلر ایک سیمپلر ایک سیمپلر ایک سیمپلر ایک سیمپلر تل شخص ایکör کے tacosپاہرف مرتبہ دل کر ، ایک وخور، وایس orientation اور ایک سیمپلر ایک سیمپلر ہے تو погine areدن کیاova만 ہےadoraine aredn اگرおおو کوہرا اگر او تمام ہنٹوٹ حول کئے جب آپ کو کے ذہیں جو کسی ری ممبر نہیں کرسکتے ہیں اور اب آپ کتاب سے ایکسرسائز کریں اور یہ رولز اپلای کر کے ان کے فلو چارٹ بنایں گے اور پھر ان کے ساتھ کورد لکھیں گے میں آپ کو بہت اپریشیئٹنگی کے ساتھ اپرائی کے سٹرکچرز کے لئے درون لیکن کیونکہ ہم بہت رہے ہیں جو بہت رہے ہیں جو انٹری اور ایکزٹ پوائنٹ ہے سٹرکچر کا وہ ایک لائن میں رکھے باقی تمام چیزیں ہم نے انڈینٹ کر کے بنای ہیں اسی کو جب آپ تصویر میں جوڑنے لگیں گے نیسترد دوسرے لیوڈل نیسترد تیسرے لیوڈل تک جا سکتی ہے دپنڈز انہاں ہاں مچھو نیست وائل کے اندر اف آگیا اف کے اندر وائل آگیا سو ملٹپل لیوڈلڈر of انڈینٹیشن آسکتی ہیں لیکن یہ انڈینٹیشن ایکزیکلی آپ کے کورڈ کے ساتھ 1 to 1 کورسپونڈنٹ رکھتی ہے جو آپ کو فلو چارٹ میں تصویر نظر آئے گی انڈینٹ ہوئے وہی کورڈ میں آپ کو نظر آنا چاہیے 99.99% of the time this will be true it becomes very easy to identify کہ اس فلو چارٹ کے اس حصے کے لیے ہم نے کورڈ کیا لکھا تھا so very easy to debug اس کو اگر آپ کمپیر کریں with the flow charts that are shown in the book you will notice that they have a little bit of a problem and the problem basically comes from the ifs to the ifs because they have a little bit of a problem the problem basically comes from the if structure جہاں پہ انہوں نے دونوں طرف کو branches نکال دی ہیں yes ایک طرف کو ہے اور no دوسی طرف کو ہے that does not happen in code code تو ایک طرف کو انڈینٹ ہوتا ہے left to right indentation ہو سکتی ہے آپ مارجن سے left کو نہیں جا سکتے so let's stay with the constructs that we have developed during this course itself and we will call that the structured programming approach آج کے لسن میں ہم نے کیا کیا we started with a multi-way decision that was the switch statement and I mentioned a few things about it switch statement has its own limitations it deals only with integer data but it is a nice construct to have whenever you want to make a multi-way decision on the other hand it is certainly not necessary you can replace it with multiple if statements or if else constructs which are nested ifs so it's a nice thing to have switch statement کے ساتھ ہم نے انٹروڈیوز کیا کہ جی break کبھی ایک statement ہے جو کہ switch سے ایک دم بہر نکال دیتا ہے اور پھر break کو ہم نے واپس اپلائے کیا کہ جی break ہم loops میں بھی استعمال کر سکتے ہیں اگر کسی loop کو بھی ایک second کے اندر ہم نے terminate کرناو کہ جی آگی نہ چلے یہاں سے بہر آجائے تو break استعمال کیا جا سکتا ہے لیکن میں نے آپ کو یہ بھی ایک guideline دی کہ جی break کم سے کم ہی استعمال کریں loops کے اندر break کے ساتھ loop control کے اندر ایک continue کی statement تھی جو کہ force کر دیتی ہے immediate next iteration of the loop but again based on good old structured programming guidelines I would strongly recommend کہ آپ decision استعمال کر لیں if else استعمال کر لیں loop کے اندر بجائے break اور continue ڈالنے کے وہاں سے ہم آگے چلے یہ break اور continue loops پر اپلائے کرتے ہوئے then we came to the structured programming guidelines اور اس کے اندر bone and jacobini کی ہم نے statement کو analyze کیا اور دیکھا کہ وہ ہمیں کدر کو لجاتی ہے کچھ میں نے آپ کو single entry single exit کے بارے اور پھر بتایا کہ جی ہم کس طرح ایک program پکڑ کے اس کے simpler اور simpler pieces کرتے ہوئے ایک structured flow chart بھی develop کر سکتے ہیں اور پھر اس سے code لکھنا جو ہے وہ بالکل آسان ہے اب بیسکلی ہمارا جو see language کا introductory part وہ یہاں پے complete ہو جاتا ہے ہمارے پاس ایک toolkit بن گئی ہے جس کے ذریعے سے ہم بہت سارے complicated programs لکھ سکتے ہیں ان کے اندر ایک بارے جو بہت ساتھ ہمیارے اسے سیائنمنٹ سکتے ہیں ا کے ساتھ شبہ دےتے رہنگے لیکن یہ اسیانیمنٹیک کافی نہیں ہے اللہ ایک کے اندرسسائز ہوتا ہے بیکار میں ۔ جو تک اندرس کیا own if you have any problems whatsoever you'd like to دسکس تن you have the two forums available you have the discussion board and you have email for this course لوگ پتہے if you have a specific question شاید ہے کہ آپ کو دیکسے دیتے ہیں، ان کی سادار ، ایسے بھی کہا کے مدیز کو ہے۔ لیکن چھپ کر کے مدیزیں کہ مدیز بہت کچھ لکھیں۔ اتنا لیکھیں کہ یہاں پہلا جاتا ہے کہ اس حصے تقام سے ملی скорее روانی آجائیں۔ کیونکہ آپ کوئی مرنگ اسا음ہ نہیں ہوئے، اگر میں کہا دون ہوں کہ ایک آئے پڑے کا سام چاہیئے۔ یا اگر میں کہہ دونکہ جی پروگرم لکھو کہ جی کلاس کے اندر کتنے آئے گریڈ آئے، کتنے بی آئے، کتنے سی آئے ہیں آپ کو یہ ایکسرسائزہ کیا ہے بھک کے اندر کئی بڑے اچھے ایکزامپلز دیے بے اور پڑیں اور ایکزامپلز دیکھیں ایک دوسر کا کوڈ دیکھیں آپ نے اپنے سٹائلز ڈیویلپ کریں کیونکہ اب اس سے آگے جو ہم چلیں گے ہم خیلی ملک ساتھ دیکھیں ہم خیلی ملک ساتھ دیکھیں جو چیزوں ہم دیکھیں بڑھا ساتھ کسی بیٹھنے اور ہم کیا جتاہیی ساتھ بھی ملک ساتھ ایکزامپلز دیکھیں اور کتنے ایکزامپلز دیکھیں ہم بہت بھی ساتھ کلیں جاوہ میں کلیں آپ نے نہیں دیکھے چھوڑا سا ان کا ذکر ہو آ تھا لیکن جاوہ میں ہے نہیں اور ایکسرسائزہ کیا ہے جاوہ میں ڈیویلپ کریں لہذا ہم جانتے ہیں کہ یہ مائل سٹون ہے لہذا جانتے ہیں بیسک کنسٹرکٹ کے اندر کے اندر ہے اس کے بعد ہم اور کمپلیکس اور کمپلیکس وہ کنسٹرکٹ بناتے جائیں گے اور بہت ساری پروگریمنگ ایکسیسیس کرتے رہیں گے اگلی دفعہ کے لیے جازت دیجے خدا حافظ