 اسلام علیکم، آج ہماری بائس فی ملکات ہے اور یہ ایسانچلی کورس کا مد پوئنٹ ہے میں نے کہا تھا پہلی دفعہ ہم بیٹوائز اپریٹرز جب کورت کر رہے تھے کہ یہ چھوٹا سا ایریہ رہ گیا ہے ان کو کورت کرتے چلتے ہیں لیکن کورت کرنے پہلے دیتے ہیں بیٹوائز مینیپلیشن اور ایسائنمنٹ اپریٹرز کے لئے تھا ڈیویٹس پرینگت لیے یہ پیات بہت سکتے ہیں ما بھی کلی کلی بیٹوپرائٹرز کے لئے ہم کہتے تھے آئی معلومی اپریٹرزیکرے کے لئےی پھر ہمیں پہلے چلا کہ جیئے آی پیتوپرائٹرز کے بیٹوپرائٹرز سے آی پیتوپرائٹرز کے لئے اپریٹرزیکرے کے لئے اپریٹرزیکرے کے لئے کہ we have and کا assignment operator, we have or کا assignment operator, we have exclusive or کا assignment operator. لکھنے کا طریقہ اس کا بالکل وہی similar ہے جو پہلے ہم لکھا کرتے تھے. So exactly جیسے ہم arithmetic operators کے ساتھ لکھتے تھے اگر ہم لکھنا چاہیں a is equal to a and b. جہاں پہاں and وہ bitwise operator ہے یعنی single ampersand ہے تو اب اس کا ہم ہر پاس short hand ہے ہم لکھتے ہیں a ampersand equal to b so when we write a and equal to b that is the same as writing a is equal to a and b. same applies to or so we write a or equal to or کا یاد ہو single pipe symbol ہے دبل نہیں ہے confuse نہیں ہونا وہ logical or تھا bitwise کے لیے a single or equal to b means a is equal to a or b اسی طریقے سے a carat equals b means a is equal to a exclusive or b یہ تینہو اپریٹرز یہاں کمپاوند اپریٹرز ہمیں available ہیں so we can use them as a short hand یاد رہے not operator جو تھا وہ یونری تھا یعنی کسی نمبر کو invert کرنے کے لیے ہم وہ tilde لگاتے تھے اس سے پہلے and that was the not operator اس کا کوئی assignment اپریٹرز کے ساتھ نہیں ہے anyway that was just for the sake of completeness I mentioned that there are these assignment operators and they are very similar to the assignment operators that we used with the ordinary arithmetic operators now comes the fun stuff what is the fun stuff آپ کو پتا ہے مجھے بھی پتا ہے اب آپ کا مدرم آنے والہ ہے بہت سارے topic سم نے introduce کیے تقریبا ہر لیکچر میں ایک نیا operation ایک construct اس طرح کی چیز ہم اپریٹ کرتے گئے and I agree that it's a lot of things to lot of things to assimilate دماغ میں اتارنے کے لیے بہت سری چیزیں ہم نے پڑھ لی ہے لیکن مشکل نہیں ہے اور مجھے complete confidence ہے کہ جی آپ لوگ جو ہیں وہ بہت منتی ہیں اور آپ نے بیچ میں پریکٹس کی ہوگی اور آپ نے یہ بہت کچھ سیٹ لیا ہوگا میں بتاتا چلو کہ جی ہمارا perspective ہمارا نہیں کہنا چاہیے میرا perspective زرہ سی سیریس بات ہے دیکن we simply now have no alternative except to work hard as students میرا کچھ تاد ہوتے تھے وہ ہمیں کہا کرتے تھے کہ جی from students we expect کجھ وہ سو تے بھی نہیں ہے کھانا بھی نہیں کھاتے وہ صرف کام کرتے ہیں so if you think about it if I take that perspective then you have lots of time lots of time to review all of the stuff that we have taught you so far and that is going to come up in the midterms the perspective again is not to trip you up not to catch you out not to find out what you don't know there's a lot of things that I don't know everybody is in a learning phase all throughout one's life ہم یہ چاہے ہیں کہ ہم یہ دیکھیں کہ جی آپ نے ابھی تا کیا سیکھا ہے آپ کیا skill set کہاں تک develop ہوگیا ہے اور اس کو ہم foundation بنا کے آگے چلیں حلہ کہ ہمارا emphasis جو ہے وہ see or see plus plus language پہ رہا ہے لیکن ایک under current جو تھا وہ اس course کا title ہے which is introduction to programming ہم چاہے ہیں کہ جی آپ programming اچھی طرح سیکھ جائیں اس کی construct اچھی طرح سیکھ جائیں لنگو جو ہے وہ پھر syntax بن کے رہ جاتی ہے آج see ہے یا see plus plus ہے کل کو کوئی new language آجائے گی دی آجائے گی ای آجائے گی ای ف آجائے گی whatever language you should not feel scared of the new languages all they should mean to you is کہ جی ایک اور کتابچا آگیا اس میں نیا syntax پڑا ہوئے if structure جی مجھے تو if statement کا پتہ ہے اس لنگو ج میں کیسے لکھتے ہیں loop مجھے پتہ ہے جی loop کیا ہوتی ہیں let's see اس لنگو ج میں کیسے لکھی جاتی ہیں and so on so you have to concentrate on the fundamental concepts functions ہیں and so on so what we plan to do for the rest of today's lecture is to basically review کہ ہم کہاں سے آئے اور کتر کو گئے اور کیا کیا skills یا tools جو ہیں وہ ہم نے master کیے so let's take a look at them one by one سب سے پہلے ہم نے design recipe کا ذکر کیا تھا design recipe کے اندر میں نے آپ کو بتایا تھا کہ دی کوئی بھی ہمارے پاس problem ہو وہ typically real world سے بلون کرتا ہے پے roll بنا دو یہ کالکلیٹ کر دو وہ کالکلیٹ کر دو real world کو examples جو ہیں یا problems جو ہیں وہ alphas میں express کیا ہوتے ہیں to us as programmers we have to take those words and try to understand what the problem is so the first thing we need to do is analyze the problem which is expressed as a word problem and then reduce it into its essence کہ جی کہاں کیا جا رہا ہے مانگہ کیا جا رہا ہے once we have reduced it to its essence we also would like to put a few examples there ہاتھ سے لکھ کے کہ جی اگر یہ کہہ رہے ہیں کہ اس طرح سے salary کالکلیٹ کرنی ہے تو اس کا ایک چھوٹا سا اگزامپل بنا لیا یہ بعد میں ہمارے reference کیلئے کام آتا ہے اس کے بعد ہم اس کو refine کرتے ہیں اس کا program لکھتے ہیں پھر اس کو test کرتے ہیں اور پھر اس کو review کرتے ہیں کہ جی اس نے objectives meet کیے کہ نہیں کیے ان ساری چیزوں کو ہم نے ایک آپ کو explicitly لکھ کے design recipe دی تھی اس کے اندر ایک موٹی موٹی چیز لکھی ہوئی تھی pay attention to detail so I will reiterate again today very important very crucial pay attention to detail اس چیز کو قبیمت بھولیں کہ جو ہمارے computer ہیں they are very very dumb machines یہ exactly وہ کریں گے جو ہم ان کو بتائیں گے نہ وہ ایک آیوٹا اس سے اوپر کریں گے کام نہ اس سے کام کریں گے so if you pay attention to detail the machines will obey you and they will do what you want them to do once we had covered the design recipe we went on and we started talking about variables variables کیا تھے ہم نے کہا کہ جی computer میں memory میں ہم number store کرتے ہیں letters characters ڈسٹرہ store کرنا چاہتے ہیں تو ان کے لیے کچھ data types ہونی چاہیے data types ہون گی لیکن ہم کیا memory locations کے ساتھ ہی کام کرتے رہیں گے کہ جی سوامی location پے یہ لکھ دو ایک لاکھوی location پے یہ لکھ دو we found it was very easy if we could use symbolic names for these locations so instead of using location number one two three four we would use a name called x or i or basic pay or house rent or something like that these variables جو ہیں پھر ہم نے ان کی data types دیکھیں again i am now going to be mixing programming concepts along with c and c plus plus which is our vehicle or the tool that we are using for this course اس کے اندر ہم نے دیکھا کہ جی data types جو ہیں وہ انٹ بھی ہے یعنی whole numbers اور انٹ کی بھی کچھ varieties ہیں short بھی ہے long بھی ہے اور چند لیکچھے پہلے پچھلے لیکچر میں ہم نے unsigned کی بھی بات کی تھی یہ سب whole numbers ہیں اس کے بعد ہم نے کہا کہ جی real numbers بھی ہوتے ہیں one point two three اگر ہم رپرزنٹ کرنا چاہیں اس کے لیے data type جو ہے وہ float کی data type ہم نے استعمال کی پھر کہا کہ جی short انٹ long that means چھوٹا نمبر ہے درمیانے سائج کا بہت بڑا نمبر ہے تو اس کے لیے زیادہ بائٹ چاہیں same applies to real numbers اگر ہمارے پاس float ہے تو اگر بہت بڑا نمبر ہے تو کہاں سٹور کریں گے تو اس کے لیے ہم نے data type introduce کی double so double is a very long floating point number in use میں decimal point آتا ہے اس کے بعد ہم گے چار کے اندر character the character data type کے اندر ہم نے کہا کہ جی ایک character store ہو سکتا ہے typically ہماری مشینوں کے اوپر انٹیجر جو ہے وہ چار بائٹ لیتا ہے character جو ہے وہ ایک بائٹ لیتا ہے and so on so character کے اندر a b c یا zero one two as characters اور characters کے لیے ہم نے بتایا تھا کہ جی single quotation mark کے اندر character لکھنے zero بھی لکھتے اگر single quotes کے اندر ہے it is treated as a character تھوڑا سا جمپ کرتے ہوئے not in sequence of the lectures but way say for the sake of you know logical connectivity بعد میں جا کے میں آپ کو asky table بھی introduce کیا تھا وہ ان ہی characters کی numeric values ہیں کیونکہ computer کے اندر تو یہ numbers ہیں سارے asky table and the characters are related so you should experiment with those you have known we are not going to ask you I don't want you to learn the asky table by heart but you should know the concept behind it then یہ جو بیسک دیتا تائپ سیں in float 4 ان کو لے کے ہم آگے چلے ان کے ساتھ ہم نے کچھ manipulations کی اور پھر دیکھا کہ جی اس کے ساتھ کوئی aggregation کر سکتے ہیں کو ان کی collections بنا سکتے ہیں وہ کافی باد میں ہم نے introduce کیا تھا لیکن mention کرتا چلوں پھر ہمی آگے دسکتے ہیں وہ collections کا نام تھا arrays so we had collections of the same دیتا تائپ having gone through with the variables کا part once we had gotten the concept کی جی ایک memory location ہے اس میں ہم کچھ دیتا لکھنا چاہتے ہیں لیکن it is easier for us to refer to that location by a name a symbolic name اور وہ نیم جو ہے is of a certain data type but نام as programmers ہم اس location کو دیتے ہیں اور پھر اس نام کو استعمال کرتے ہیں اپنے program کے اندر یہاں سے جب ہم آگے چلے تو ہم نے پھر operators کی باتیں شروع کر دی نمبرز کے لیے operators make a lot of sense so let us take a look at what the operators were when we spoke about numbers we said کی جی بھی ہی have plus we can add two numbers together we have minus we have multiply we had divide and then we had a special operator called the modulus operator جو کے ریمینڈر دیتا ہے میں نے دیکھا ہے کہ جی discussion board کے بھی اوپر کچھ students نے a question پوچھا ہے ان کو یہ کلیر نہیں تھا کہ جی modulus operator کیا کرتا ہے explicitly پھر سے میں بتاتا چلوں جب بھی آپ کہتے ہیں a mod b تو اس کا result یہ ہوتا ہے کہ جی a کو b کے ساتھ divide کرو اور جو بھی remainder آیا ہے یعنی whole number کو پھیک دو جو بھی remainder آیا ہے that is the result so if we say 7 mod 2 so 7 کو 2 سے divide کریں 2 3 is a 6 1 remainder answer is 1 if I say 100 mod 20 100 divided by 20 remainder کتنا ہوا 0 modulus کا جو remainder ہوتا ہے that is the resultant of the modulus operator so that was another arithmetic operator so other than the plus minus وگیرا modulus was an interesting operator اور اس کو ہم نے استمال بھی کیا کئی programs میں کئی examples کے اندر جہاں پے ہم نے دیکھا کہ جی اس سے اگر ہم نے simply a number کی evenness your ordinance determine کرنی ہو it's a useful operator other than the arithmetic operators we found اور جو ابھی میں نے آپ کے ساتھ bitwise operators کی بات کی وہیں ان کے ساتھ apply کرتے ہیں کہ دی بھی ہی had compound arithmetic operators so we could say plus equal to minus equal to star equal to slash equal to and even modular equal to which was short hand for saying اگر ای is equal to a plus بی لکھنا ہے تو you could write a plus equals بی کافی short hands ہیں لیکن they do not add or detract from the basic programming construct which is an addition of two numbers اب تھوڑا سا sequencing تک کرتے چلیں operators کی بات کر رہے ہیں تو اب ہم logical operators پے آگے ہم نے بہت باد میں کبر کیے تھے لیکن ابھی بات کرتے چلتے ہیں اس کے اندر ہمارے پاس logical and اور اور connectives تھے جن کے اندر answer true اور false آتا تھا تھا a and b کا answer true یا false ہو سکتا ہے اور اس کو ہم لکتے تھے double ampersand sign کے ساتھ یا double pipe symbol کے ساتھ ہم اور operator لکھتے تھے لیکن جو comparison operators تھے logical وہ again I would request کہ جی آپ integration شروع کر دیں جو کچھ آپ پڑتے جا رہے ہیں اس کو horizontally بھی integrate کریں دیکھیں پشلے سمیسٹر کے اندر آپ نے calculus one پڑی تھی اس کے اندر ہم نے آپ کو line کی divisions بتائی تھی جس میں بتایا تھا کہ جی ایک point ہو تو اس سے اس طرف کو کیا کہتے ہیں دوسی طرف کو کیا کہتے ہیں and so on the same applies here جب بھی ہم دو نمبرس کو compared کر رہے ہوتے ہیں تو ہم کہتے ہیں کہ جی a is less than b یا ہم کہ دیتے ہیں a is less than equal to b یا ہم کہ دیتے ہیں a is equal to b پھر greater than equal to اور پھر greater than یہ یاد رہے کہ جی لکھنا تو آسان ہے in the sense کہ جی ہم جو greater than sign ہے یا less than sign ہے آپ کے کی بور پہ وہی استمال کرتے ہیں c or c++ کے اندر so we write less than equal to ایک کتھا no space in the middle that becomes the less than equal to operator we write simply less than اگر دو نمبرس کو compared کرنا ہو is a equal to b تو پھر ہم double equal to sign استمال کرتے ہیں اور اس کے اندر میں پھر warning ڈیتا چلوں please do not confuse the double equal to sign with the single equal to sign یہاں پہ لنگوچ ہمارے لیے تھوڑا سا problem پیدا کرتی ہیں problem کیا پیدا کرتی ہے کہ جب ہم ایک statement لکھتے ہیں c کے اندر something like a equal to b یہ ہے تو assignment statement لیکن میں نے mention کیا تھا کہ جی assignment statement بزات ہے خود کی بھی کوئی value ہوتی ہے اور وہ value وہ ہی ہوتی ہے جو assignment میں استمال ہوئی جنی a equal to b جو statement ہے اس کی value is the same as the right-hand side so the statement has a value now if you recall from our immediately previous lecture میں نے if کے اندر صرف نمبر لکھ دیا تھا if number and something اور وہ bitwise operator کے ساتھ استمال کیا تھا اور میں نے یہ کہا تھا کہ جی اس کو true or false determine کرنے کے لیے c میں استمال ہوتا ہے کہ جی zero ہے تو یہ کر دےنا اور non-zero ہے تو کچھ اور کر دےنا now problem کیا آیا کہ اگر ہم نے if کے ساتھ لکھ دیا a equal to b single equal to ہی تو assignment لیکن کیونکہ اس کا result آرہا ہے as a number which is zero اور non-zero if چل بھی جائے گا if کوئی decision لے بھی لے گا and your program will also run but logically it will probably be wrong کیونکہ آپ تو کر لکھنا یہ چاہ رہے تھے کہ اگر a اور b برابر ہیں تب یہ کرو تو برابری کا جو چیک ہے the equality is double equal to so I have repeated it enough times I don't want to make this mistake the compiler does not pick up this error it is a subtle logical programming error it is not a syntax error so be careful with that and then we went on to the other side and we said greater than equal to اس کو لکھتے ہیں greater than or پھر equal to کا sign no space and then finally clearly greater than ان سب comparison operators کی اندر بھی ایک overall riding clause ہے جو میں اس کو stress کرتا چلوں please be very careful when you are using comparison operators کی کوئی case miss نہ ہو جائے greater than or greater than equal to میکن فرق ہے greater than you have to write a is greater than b it means a is strictly greater than b only then you will get an answer which is true لیکن if you write a is greater than equal to b تو اگر a equal to b ہوا تب بھی answer true آئے گا or اگر a greater than b ہوا تب بھی answer true آئے گا so be sure you know کہ آپ استعمال کیا کرنا چاہتے ہیں and use the correct operator this is important both from a less than equal to a less than perspective and a greater than equal to and a greater than perspective اور پھر وہی اگر آپ سٹریٹ لین کو دماغ میں رکھیں calculus والی کو for the sake of completeness you should always divide your domain into two regions اگر آپ کہتے ہیں less than or equal to تو دوسرہ ریجن is greater than اگر آپ کہتے ہیں less than تو دوسرہ so the divisions should be very clear and they should depend on problem جو آپ سول کر رہے ہیں وہ اس وہ کیا دیمان کرتا ہے the final set of operators which we covered much later in fact we covered very recently were the bit wise operators اس کے اندر single ampersand for the and operator which is a bit wise and not a logical connective the single pipe symbol for the or operator a bit wise or اس کے بعد ہم نے exclusive or operator دیا which was the carrot sign we had a not operator which was inversion of all the bits which was the tilde sign the not operator is unary وہ ایک نمبر پے act کرتا ہے where as the and or and exclusive or operators are binary operators ان کو دو نمبر چاہی ہیں a exclusive or b and so on so operators ہم نے سارے ایک اٹھے کر کے میں نے آپ کو تھوڑے سے explain کر دیا جو ابھی تاک ہم نے بڑے ہیں اس کے بعد ہم نے بہت پہلے right near the beginning of the course programming constructs کی بات کی تھی let me again review those constructs with you اب again میں آپ نے philosophy آپ کو بتاتا چلوں I don't want to ever ask you and I don't expect you to remember کی جی کس نے کہا تھا کی جناب یہ والی construct sufficient ہیں کوئی بھی program لکھنے کے لئے وہ میرے بیو میں رٹے کی category میں آ جاتی you can always look it up what is important is to have the concept کی جی کوئی بھی program لکھنا ہو تو کیا کیا constructs ہوں تو وہ program لکھا جا سکتا ہے اس کے اندر ہم نے تین constructs کا ذکر کیا تھا پہلی تھی sequence یعنی ایک statement execute ہوگی اس کے بعد دوسری ہوگی اس کے بعد تیسری ہوگی normal sequence sequential execution of program lines یہ ایک construct گینی جاتی ہے دوسری construct ہم نے کہا تھا decisions چاہیے ہمیں so we have to be able to make decisions if something is true do something otherwise do something else that was the if statement and I'll cover that in a little while and the third construct was loops now let us take a look at the if statement if statement کا سنٹیکس was fairly simple if اگے ہم نے پرانتیسیز کی اندر condition ڈال دی condition کا جواب ہمیشہ یا true آنا چاہیے یا false آنا چاہیے there's no third alternative if this condition is true یعنی اس کا جواب true میں آتا ہے تو اس کے بعد جو code کا حصہ ہے وہ execute ہوگا code کا حصہ میں نے اس پاستے کہا ہے کہ جی وہ ایک line بھی ہو سکتی ہے یا ایک block of code بھی ہو سکتا ہے multiple lines اس کو ہم block of code کیسے ڈپکٹ کرتے ہیں ہم اس کے لیے braces استعمال کرتے ہیں curly brackets so curly brackets کے اندر جتنی بھی لائنے ہیں بیشکہ دس سفے آپ لکھتے ہیں وہ ایک if statement کے ساتھ connect ہو جائے گا ساری لائنے execute ہوں گی braces کا استعمال is very crucial to understand because simple indentation کچھ بھی نہیں کرتی آپ یہ اتنا سمجھیں کہ ہم نے اگر ایک statement لکھتی ہے اس کے بعد دوسا statement indent کر کے لکھتی ہے تو program کا behavior بدل جائے گا جو indentation ہے جو ہم tab کی or spaces چھوٹ کے کرتے ہیں وہ ہمارے لیے ہے تاکہ ہم program کو پڑھ سکیں اور اسانی سے سمجھ سکیں logically آپ program کو ایک line بھی لکھ سکتے تھے شروع سے لیکے اخیر تک اور وہ پھر بھی وہی کام کرتا so be aware whenever you want an if statement for example to execute more than one statement in the true part you must include those statements within braces curly brackets open curly brackets closed simple if ہو گیا اس کے بعد ہم نے کہا کہ جی ایک اس کا variant چاہتا ہے جی اگر یہ چیز true ہے تو یہ کرنا ورنا یہ کرنا so we had an alternative so that we use the key word else I'll say the same thing again else کے بعد اگر ایک statement ہے آپ لکھ دیں کافی ہے ایک سے زیادہ ہے تو پھر آپ بلوک بنائیں اس کا braces کے ساتھ as a programming practice you may want to use braces all the time کوئی خرچانی آتا ایک بٹن ہی دبانا ہے and it is always correct and it makes your program logically sound so you might want to consider کہ جب بھی if statement لکھیں بیشاک اس میں ایک line ہی لکھنی ہو true part کے ساتھ اس کو braces میں دال دیں once we had covered the if statement we went on and saw کہ جی what happens when the conditions become complex when the conditions become complex we started using logical connectives so we said if a is greater than b and c is less than d so and کے لیہ ہم نے double ampersand which is a logical connective وہ استمال کیا دوسری complexity یہ آئی کہ جی اگر یہ چیز true ہے اور پھر کچھ کام کر کے اور پھر ایک اور question mark اور پھر اگر یہ چیز true ہے which meant nested if structures nesting کے اوپر بھی ہم نے کہا جی ارام سے nest کریں ایک if statement کے اندر دوسرہ if statement ہو سکتا ہے جس کے اندر تیسرہ ہو سکتا ہے and so on لیکن from a stylistic perspective you must be religious about indentation پہلا if لکھ کے اس کے ساتھ جو کوڑ جاتا ہے جو بلوک ہے اس کو ایک level indent کر دیں تاکہ دیکھنے سے ہی کوڑ کو آپ کو نظر آجائے یہ ساری لائنے یہ اس if statement کو belong کر دیں اگر اس کے if کے اندر ایک دوسرہ if شروع کر دیں تو اس کا حصہ second level indentation کر دیں اس کے ساتھ ہم نے آپ کو بتایا کہ if statement کو pictorially کیسے دپکتا ہے اور pictorially ہم نے ایک تھوڑا سا variation of the standard flow chart جو آپ کو کتابوں میں ملتا ہے اس کے آپ کو introduction دی اور اس کے اندر structured flow charting جو ہے وہ introduce کی structured flow charting کے اندر ہم نے جو construction استعمال کی ہم نے کہا جی ہم سیدی لائن جو ہے جو start اور stop کو جوین کرتی ہے اس سے left کو کبھی نہیں جائیں گے and there was a logical reason for that جب ہم code لکھرے ہوتے ہیں screen کے اوپر keyboard سے تاکھ کر رہے ہوتے ہیں تو آپ left margin سے left کی طرف نہیں جا سکتے left margin is the edge of the screen جو بھی کریں گے indentation وہ right کو ہوگی because program شروع ہوگا left margin سے اور ختم ہوگا left margin پہ اندر if آتا ہے right کو indent ہوگا کوئی loop آتی ہے right کو indent ہوگی nested if آیں گے دو دفعہ indent ہو جائیں گے تو ہم نے جو flow charting کی تیکنیق آپ کو سکھائی اور آپ کو constructs دکھائیں اور learning management system پر اس کے examples اور figures پڑے ہوئے ہیں اس کے اندر ہم نے کہا جی we will always indent left to right we will never have a situation جہاں پہ کہ if کا جو ہم diamond بناتنے ہیں اس سے دونوں طرف کو ہم لائنے نکالنے کہ یہ true ہے تو ایدر کو جاو false ہے تو ایدر کو جاو no we will follow the construct which is equivalent to the program that we write اس کا فائدہ سب سے بڑا فائدہ یہ ہے کہ جب آپ ایک complex problem کو flow chart میں اخز کر لیتے ہیں you have translated it into a flow chart which is like a logical depiction of the problem than اس flow chart کو دیکھ کے اب سیدہ سیدہ کوڑ لکھ سکھیں and it is a one to one correspondence یہ flow chart والا حصہ اس کوڑ کے برابر ہے یہ والا حصہ اس کے برابر ہے یہ indent ہوا ہوئے تو آپ کو کوڑ بھی indented نظر آنا چاہیے because that is the beauty of this technique going on from the decision structures we said there was a third construct that was needed to complete the picture and the third construct was one of loops so I'll just reiterate to write any program you need to be able to do sequential execution of code ایک کے بعد دوسرا you need a decision structure any if statement کے ساتھ آپ کا کام ہو سکے if something true then do something اور تیسہ کنسرکٹ ہے loop کا کیکی کسی اس کو ہم repeat کر سکے loop کے اندر ہمارے پاس دو تین variants تھے وہ variants جو ہم وہ language کا حصہ ہیں یعنی see میں یہ variants ہیں دوسی language میں شاید آپ کو نا variants ملیں ایک ہی loop ملے لیکن loop ضرور ملے گی اگر وہ programming language ہے تو ہم نے ایک loop آپ کو پڑھائی وہ تھی while loop اس کا construct simple تھا while some condition is true اور پھر وہ ہی logical condition ہے so while a is greater than b پھر ہم نے کہا اس کی body ہے جس کے اندر statements لکھی ہی ہیں وہ execute ہوتی ہیں جو میں نے if کے ساتھ بات کی block of code کی وہ ہی while کے لیے true ہے یعنی ایک statement ہو یا اس سے زیادہ ہوں it is good practice کے آپ ان statements کو braces کے اندر statements کلوز کریں تاکہ آپ کو block نظر بھی آجائے اور کبھی آپ اس شکمیں نہ رہ جائے کہ میں نے indent کیا تو یہ while کا حصہ بن گئے indentation کچھ نہیں کرتی while statement کی اوپر تھوڑے سے subtle points جو میں نے mention کیا تھے وہ آج پھر میں repeat کرتا چاہلوں ہم نے کہا تھا کہ جی اگر condition پہلی دفاہی false ہو جائے تو while statement کے اندر statements لکھی ہی ہیں وہ execute نہیں ہوں گی اور اس کا دوسر طریقہ کہنے کا یہ تھا کہ a while statement executes zero or more times so it executes zero or more times the next variation of the loop that was available to us was a do while اوپر do لکھا braces کھولے اندر statements لکھی braces بند کیے پھر لکھا while اور پھر لکھا condition اس کو اگر ہم اسان زبار میں بتائیں تو ہم کہہ رہے ہیں کہ یہ کام کرو جب تک یہ condition true ہے اب اس construct کو اگر آپ دیکھیں تو ہم نے پہلے کہ دیا کہ یہ کام کرو اور پھر جاکے کہا ہے کہ جب تک یہ true ہے that means that this construct the statements inside the do will execute at least once while کے اندر they may execute zero times zero times which means کہ while کبھی بھی نہیں چلا ٹیست کیا اور ساتھی ہم آگے جمپ لگا کے چلے گئے do while کے اندر ایک دفعہ کم از کام یہ statements execute ہوں گی پھر ٹیست ہوگا ٹیست فیل ہوگیا تو loop سے بہر آگے اگر ٹیست فیل نہ ہوا تو loop کے اندر رہے تیسری جو loop کی condition تھی وہ for loop تھی for loop کیو ہے وہ ہمارے لیے ایک قسم کا bread and butter بن جاتی ہے کہ it is short hand جو دو تین چیزوں کو ایکٹھا کر دیتی ہے for کا syntax جو تھا اس کے اندر ہم نے ایک initialization condition لکھی so for کے بعد parenthesis کے ساتھ ہم نے کہا یہاں سے شروع کرو semi colon دالا پھر termination condition بتائے کہ loop ختم کہاں پے ہوگی اور کہا یہ termination condition ہے اس وقتہ کیا کرتے رہنا اور پھر semi colon لگا کے پھر ہم نے کہا کہ loop کو increment کیسے کرنا ہے جب ایک دفعہ loop چل گئی تو واپس شروع آنے سے پہلے شروع کرنے سے پہلے آپ کیا کریں so simple چیز کیاگر گنتی کرنی تھی تو ہم کہتے تھے for i equal to zero that's the initialization i less than 10 which means جب تک i 10 سے کم ہے i plus plus which was yet another short hand for i is equal to i plus one دیکھیں اگر یہ اتنا کومن کنسترکٹ ہے کہ اس کے لیے see میں ہمارے پر دو تین short hands بن گئے we could have written i is equal to i plus one we could have written i plus equals one and this one is the most elegant we just say i plus plus یہ for کے parenthesis کے اندر conditions آگی اس کے بعد پھر وہی بات کے braces ڈالی اور اس کے ساتھ جو کچھ کرنا ہے statements جو ہے وہ ان braces کے اندر لکھ دیں as always the braces are not required اگر for loop کے اندر صرف ایک ہی statement چلانی ہے but for logical completeness and to make sure that you never make a programming error آپ braces ڈال دیں تاکہ وہ block clearly نظر آ جائے کتابوں میں examples میں آپ دیکھیں گے کہ جی for کے سامنے brace شروع کیا ہے پھر نیچے statements میں which are indented one level اور پھر نیچے لائکے brace بند کیا ہے جو کہ for کی لائن کے اندر ہے کسی اور کتاب میں آپ دیکھیں گے تو آپ دیکھیں گے for کی پوری لائن لکھ کے brace بھی for کی نیچے سے شروع کیا ہے curly bracket اور پھر indent کر کے block of code لکھا ہوئے style issue ہے جو آپ کا دل کرتا ہے وہ استعمال کریں make sure that you do follow the indentation concept because it makes life a lot when you have to look at your code and to try and you try to understand کہ میں وہ چھے مہینے پہلے کیا لکھا تھا اور وہی indentation جو ہے آپ کے flow chart والے analysis کے ساتھ بہت اچھی طرح طایب کرتی ہے یہاں سے جب ہم آگے چلے بیسے construct آگئے ہم نے کہا جی sequences decisions and loops decisions کو complete کرنے کے لیے میں وہ بھی بتاتا چلوں کہ ہم نے a switch statement بھی کبر کیا تھا جان پہ کہا تھا کہ اگر multi way decision کرنا ہو اگر یہ value one ہے تو یہ کرو اگر two ہے تو یہ کرو اگر three ہے تو یہ کرو and so on وہ nested ifs کے ساتھ بھی ہو سکتا ہے alaida alaida if statement کے ساتھ بھی ہو سکتا ہے لیکن see آپ کو switch statement بھی دیتی ہے switch statement کے اوپر کچھ limitations تھی لیکن جو important چیز جاتھ رکھنے والی ہے کہ ہر case کے ساتھ آپ کو break لگانا لازمی ہے اگر break نہیں لگاتے تو جو بھی case true ہوا اس کے بعد والا سارہ code execute ہو جائے گا so be careful when you use the switch statement the break statement is important break statement کیا کرتی تھی وہ جہاں پہ آئی switch سے آپ بھاہر آگئے اس کے بعد والی statements نہیں استعمال ہوتی اب jump کر کے بھاہر آ جاتے ہیں وہ in a way تھوڑا سا structured programming کے rules کے خلاف جاتا ہے لیکن it is so elegant and so useful کہ break جو ہے وہ loops میں بھی چلتا ہے کہ loop چل رہی ہے اور آپ suddenly کہتے ہیں یہ condition ہوگی loop کو روک تو تو آپ break کر کے بھاہر آ جاتے ہیں not always used but sometimes it's very useful the same applies loop کے حوالے سے to a continue statement کہ آپ loop کی body کی اندر کوئی کام کر رہے ہیں کوئی condition آئی جہاں آپ نے کہا اب باقی لائی نہیں execute نہیں کرنی loop پھر سے شروع کر دو تو وہاں continue لکھ دیا so jump کر کے loop ڈوارہ سے شروع ہو گئی so these چھوٹے چھوٹے constructs ہم نے cover کیے تھے اس کے بعد ہمارا روخ چلا گیا تھوڑے سے بڑے programs کی طرف جب ہم نے کہا کہ جی problem کا جو scope ہے وہ زرہ بڑا ہو جاتا ہے کہ اگر ہم اگر ایک rule of thumb بھی لین ہے کہ جی ہم اگر code لکھنے لگیں تو کئی surfوں پہ چلے گا تو اس کے لیے پھر ہم نے کہا لمبا چڑا گھمبیر program نہ لکھیں جس کو سمجھنے بھی problem ہو اس کو debug کرنے کے اندر بھی problem ہو and so on let's try to break it up into smaller pieces see and c++ in smaller pieces کو functions کہتی ہیں functions جو ہیں this is a way of modularizing your code so you take a bigger problem and you break it up into smaller more manageable parts کوئی پکہ rule of thumb کوئی پکہ rule of thumb نہیں ہے لیکن کوششہ کرنے چاہیے کہ جی ایک function جو ہے وہ ایک screen سے بڑا نہ ہو ہر دفعہ possible نہیں ہوتا لیکن کئی دفعہ functions دو لینوں کے بھی بن جاتے ہیں کئی دفعہ 10 لینوں کے بھی بن جاتے ہیں لیکن ایک لمبا چڑا program لکھنے کی بجائے اس کو logically divide کر لیا جاتا ہے when we started talking about functions we started also talking about another subtle thing and that was call by value and call by reference اگر اس کا آپ کو یاد ہو تو c کا default جو ہے وہ call by value ہے what does that mean it means کہ جی اگر آپ کوئی function call کرتے ہیں اور اس کو کوئی parameters pass کرتے ہیں تو calling program parameters کی value اس function کو بھیجتی ہے وہ function اس value کے ساتھ جو مرزی کرتا رہے original values کو کچھ نہیں ہوتا وہ intact تو it is quite safe in the sense that all the default function calls are call by value on the other hand کئی دفعہ ہم چاہتے ہیں کہ جی یہ number یا یہ variable جو ہے یہ function کو بھیجدو function اس کے ساتھ جو بھی کرے وہ ہمیں calling program کے اندر change نظر آئے اس کے لیے ہم call by reference استعمال کرتے ہیں اور call by reference کے لیے mechanism جو تھا ہمارے پاس pointers کا تھا وہ میں ابھی تھوڑی دیر میں ان کو بھی تھوڑا سا دسکس کروں گا but یہ یاد رہے کہ function call کرتے وقت call by reference اور call by value دو مختلف ٹیکنیکس ہیں اور default for ordinary variables is call by value nonetheless functions کا پورہ concept جو تھا وہ یہ تھا کہ جی ایک بڑے problem کو چھوٹے چھوٹے manageable تکڑوں میں تکسیم کرتنے کا design methodology کیا بھی ذکر کیا جی جی کیسے ہم ایک problem کو دور سے دیکھتے ہیں اس کے major portions identify کرتے ہیں پھر portion کو دیکھتے ہیں اس کے حصوں کو identify کرتے ہیں پھر حصوں کو دیکھتے ہیں اور اگر وہ چھوٹے ہیں تو ان کے لیے function لکھ دیتے ہیں so there was a top down design methodology once we had played with functions and done some function calls we moved on and we looked at arrays arrays کا میں پہلے بھی ایک طرح چکا ہوں کہ it's a way of depicting ایک ہی قسم کا دیتا اگر اس کی multiple values ہم رکنا چاہتے ہیں تو اس کے لیے ہم arrays declare کر لیتے ہیں اگر آپ کو یاد ہو beginning میں ہم نے چھوٹے چھوٹے examples آپ کو دیے اور آپ سے کروائے بھی assignments بھی کروائیں جس کے ہم نے کہا کہ something like چار شہروں کا temperature 10 students ہیں ان کی age and so on without arrays ہمیں اس کے لیے 10 مختلف ویریبلز بنانے پڑتے اب ویریبلز کا ساروں کے اندر ہم نے ایک ہی قسم کا دیتا رکھنا ہے یعنی دیتا will be depicting age اس کے لیے arrays are very useful so we would have declared an array of 10 integers or real numbers and we would have called it age اس کے اندر indexing کی ٹیکنیک تھی کہ جی تیسرہ element کیسے حاصل کیا جاتا ہے چوتھہ کیسے حاصل کیا جاتا ہے اپنی بات یاد رکھنے کی ہے c or c++ میں arrays جو ہیں ان کا index 0 سے شروع ہوتا ہے اگر 10 نمبروں کی array ہے تو the first number will be a اگر a ہماری array ہے then it will be a of 0 لکھا جاتا ہے a square bracket 0 square bracket وہ پہلہ نمبر ہوگا اور 10 نمبروں کی array کا آخری نمبر وہ a of 9 ہوگا وہ 1 بیست اندیکسنگ کرتی ہے پہلہ element is x of 1 اور آخری element is x of 10 c and c plus do c++ do 0 بیست اندیکسنگ یہ چیز یاد رکھنی چاہیے اسی واستے اگر آپ اس کو لنک کریں واپس اپنی 4 سٹیٹمنٹ کے ساتھ تو اگر آپ کتاب میں بھی اگر دیکھیں تو آپ بار بار دیکھیں گے کہ c programmer وہ لکھتے اس طرح ہیں 4 i equal to 0 i less than some number اگر array کے اندیکس کو دیکھیں تو وہ بھی 0 سے شروع ہو رہا ہے and less than some number the number being the size of the array so 4 loop array کی پرویسنگ کے اندر کافی فائدی مند رہتی ہے they'll logically go together arrays کا جب ہم ذکر کر رہے تھے تو ہم نے بات کی کہ جی one dimensional arrays ہوتی ہیں جو ابھی ہم بات کر رہے تھے لیکن multi dimensional arrays بھی ہو سکتی ہیں جس کے لیے ہم اپنی دیشن دیتے تھے کہ جی ایک square bracket میں پہلی dimension دیدیں دوسرے square bracket پیر کے اندر دوسی dimension دیدیں and so on c or c++ ایریز کو memory کے اندر row major order کے اندر سٹور کرتی ہے یعنی پہلے پوری کی پوری پہلی row سٹور ہو جاتی ہے اس کے بعد دوسری row سٹور ہو جاتی ہے اس کے بعد تیسری and so on کیونکہ یہ اس طرح سے سٹور ہوتی ہیں اس باستے اگر آپ کو دوسری row کا پہلا element حاصل کرنا ہو تو آپ کو کتنے نمبرز جمپ کرنے پڑیں گے اتنے نمبرز جتنے پہلی row میں columns ہیں یہ جو میں ابھی آپ کو issue بتایا ہے یہ important ہو جاتا ہے when we are passing arrays to functions ان کو بتانا پڑ جاتا ہے کہ جی ایک row میں کتنے columns ہیں normally ہم اخیر والا index جو ہے اس کو ضرور بتاتے ہیں اور علیدہ سے array کا size بھی pass کر دیتے ہیں so arrays کے اندر ایک اور subtlتی آتی ہے وہ یہ آتی ہے جب آپ function calls کر رہے ہیں اور اس کے اندر arrays کو pass کر رہے ہیں now it's not a matter of dimension it's a question of passing arrays to a function تو جو میں نے پہلے کہا کہ جی default behavior کیا ہے c or c plus plus کا کہ function calls are made call by value in the case of arrays it is always a call by reference so if you pass an array to a function اور اس array کے اندر آپ کوئی values تبدیل کرتے ہیں تو جو calling program ہے جس نے array بھیجی تھی اس کی array کے اندر بھی values بدل جاتی ہیں so be clear with that that when you pass ordinary variables to a function the default behavior is call by value but when you pass an array to a function the default behavior changes it becomes a call by reference now arrays were very useful and then we did some example using matrices etc اور آپ کو پھر exercises بھی کرائیں اور میں نے بار بار تاقید کی کہ آپ نے لیے programs لکھیں matrix پرنے کا اس کے numbers کو add کرنے کا columns کا rows کا manipulation all of these stuff but arrays are not just for doing mathematics or doing linear algebra arrays بہت سارے اور کام آتے ہیں کہ جی وہی student کی ages store کرنی ہیں وہ arrays میں آجائیں گے آپ کے نام ہیں وہ array کے اندر آجائیں گے آپ کی grades ہیں کسی course کے وہ array کے اندر آجائیں گے ہم چاہتے ہیں کہ جی آپ کی کلاس کا overall average نکالنی ہے یا grade point average نکالنی ہے it makes a lot of sense کہ جی array میں individual grades ڈال دیے جائیں loop چلا کے ان کی average نکالنی جائے so a very useful construct and especially when you combine it with loops normally it is very very rare کہ آپ کو array نظر آئے کسی program میں اور اس array کو manipulate کرنے کیلی loop استعمال نہ ہو رہی ہو arrays and loops are intricately linked so every time we have an array we normally use a loop جہاں میں نے بات کیتی if statement کی میں نے کہا تھا جی if statement کو nest کیا جا سکتے تو ایک if کے اندر دوسرا if ہو سکتا ہے اب اگر دیکھیں array کو process کرنے کیلیئے normally اگر ایک سے زیادہ dimensions ہوں so rows بھی ہیں اور columns بھی ہیں پھر کیا کریں گے تو وہ if والی بات loops پر اپلائے ہو جاتی ہے کہ جی آپ nested loops استعمال ہونے لگ پڑتی ہیں nested loops are also a very important construct so you can have a while loop inside a while loop you can have a for loop inside a for loop and so on یہ بھی کوئی ضروری نہیں ہے کہ جنا while کے اندر while ہی ہو سکتا ہے where while کے اندر for بھی ہو سکتا ہے while کے اندر کوئی اور construct بھی ہو سکتی ہے in other words while کے اندر if statement بھی آسکتی ہے if statement ڈی اندر while loop بھی آسکتی ہے for loop کے اندر while loop آسکتی ہے do while کے اندر if statement and so on so forth so nesting is quite allowed and nested loops and nested if statements are quite common اس کے بعد see or see plus plus کا بہت ہی important topic which was a topic of pointers وہ ہم نے discuss کیا pointers ڈرہ سے trickی ہیں لیکن کوئی ایسی بات نہیں ہے it is a different type of variable جس کے اندر value کی بجائے اس کا address ڈور کیا جاتا ہے so the memory address of a particular variable is stored inside a pointer and pointers کو میں سب سے پہلے example job کو دیا تھا وہ دیا تھا for implementing a call by reference in other words اگر ہم نے دو نمبرز کو for example آپس میں interchange کرنا ہے اور وہ میں interchange کرنا چاہتا ہوں ایک function call کے ذریعے تو اگر میں صرف وہ دو variables بھیجتا تھا function میں تو see کے rules کے مطابق وہ call by value ہو جاتی وہ وہاں پہ تو interchange ہو جاتے لیکن آپ دیا باپس آتے تو اپنی اپنی جگے پہ ہی ملتے اب interchange کرنے کیلی ہم کہتے ہیں کہ جی ان نمبرز کو وہاں مات بھیجو تو پتہ بھیج دو یہ نمبر جو ہے یہ پہلے دببے میں پڑا ہوئے تو ہم نے پہلہ دببہ اس کا address بھیجا اور یہ نمبر جو ہے کسی اور memory location پہ ہے اس memory location کا address بھیج دیا function میں جاکے ہم نے کہا کہ جی اب ان کو آپس میں interchange کرنے کیلی pointers استعمال کرو which was the addresses so we did something like whatever this pointer points to وہاں پہ یہ لکھتو اب ہم variable نہیں استعمال کر رہے ہم کہہ رہے ہیں کہ جی وہ جو دببہ جس کا address یہاں پڑھا ہے اس میں یہ value لکھتو جب ہم واپس آئیں گے تو جو ہمارے variables تھے وہ تو انی addresses کو نام تھے تو ہمیں پتہ چلے گا جی values بدل چکی ہیں so pointers were very useful and then we also saw that pointers and arrays were very intricately linked the only difference was array کا اپنا نام جو ہے that turned out to be a pointer because array by its very nature you understand کہ array کا نام جو ہے وہ variable تو ہے نہیں it is depicting maybe 10 numbers maybe a 100 numbers maybe a 1000 names or whatever so the name of the array is something special what we discovered was that that something special was a pointer فرق یہ ہے کہ a pointer variable کو ہم increment کر سکتے تھے لیکن array کے نام کو ہم increment نہیں کر سکتے it's a constant pointer it always points to the first element of the array in the case of multi-dimensional arrays it points to the first row first column so the zeroth element سمجھنے top left three-dimensional array ہو تو سمجھنے a cube بنی ہوئی ہے اس کے top سمنے والے کونے کو point کر رہا ہے and so on باقی پھر تھوڑا سا imagine کرنا مشکل ہو جاتا ہے pointers اور ان کی arithmetic cover کر کے پھر ہم نے کچھ files اور ان کے input output system کی بات کی sequential files, random files اور ہم نے کچھ a mixture of c & c++ ہم نے کچھ file handling کیسے کی جاتی ہے اور sequential or random files کس طرح access کی جاتی ہے وہاں پہ the important functions were seek and tell seek سے ہم file کے اندر position چینج کر لیتے تھے ہم کہتے تھے یہاں سے ادھر چلے جاو and tell سے ہم پتا کر لیتے تھے کہ اس وقت ہم file میں کہاں بیٹ ہوئے ہیں and files کو open and close کرنے کے کئی طریقے دیکھے اب I have just basically reviewed all of the stuff that we've covered so far what I want to do what you to do is to go with a very clear head and try to understand concepts we will try to phrase questions that determine کہ آپ نے آج تک سیکھا کیا ہے یہ نہیں ہمیں اسی سے غرز میں رپیٹ کرتا جو پھر سے پہلی والی بات we don't want to catch آپ کو کیا چیز نہیں آتی ٹھیک ہے there's lots of things for all of us to learn but for the moment I want you to concentrate on the basics or midterm کے بعد جو حصہ ہے course کا that is going to be rather exciting اس وقت کے اجازت اجیر and good luck to you all خودہ حافظ