 اسلام علیکم، پر بارے میں بہت زیادہ کا بہت زیادہ ہوتا ہے۔ انہیں لئے بردیس جو بہت بہت ہمیارسی پر بہت زیادہ ہوتا ہے۔ ہمیارسی پر بیسٹڈوری پر بہت زیادہ ہے۔ ہم نے دیکھا کہ دی پہلے کیا لکھتے ہیں، پھر کیا لکھتے ہیں، بریسز آتی ہیں، بڑی ہوتی ہے پر بہت زیادہ کی ہے۔ پھر اس کے بعد ہم نے کچھ ویریوبرز اور ڈیٹہ تائیپس کی بات کی۔ اسے آگے ہم چلے تو ہم نے تھوڑے سے اپریٹرز کی بات کی بائنری اپریٹرز خاص طور پہ ارثمیٹک اپریٹرز پلاس ملٹیپلائی ڈیوائیڈ ڈیوائیڈ ڈیوائیڈ ڈیوائیڈ ڈیوائیڈ ان کا اوڑر of precedence دیکھا ہم نے یہ دیکھا کہ جی پرینثیز یعنی عام بریکٹس یوں ہوتے ہیں ان کو استعمال کرتے ہوئے ہم اپنے کالکلیشنز جہیں اور اس طرح ہم نے چھوٹے چھوٹے کچھ روڈیمنٹری پروگرمز لکھے ہم نے see out اور see in کا استعمال دیکھا for outputting data to the screen and for obtaining input from the keyboard اس کے بعد میں ساتھ ساتھ کہتا جاتا ہوں so I'll keep on repeating کہ جی بریسز کا ہم نے ذکر کیا تھا کہ جی بریسز are not only used to depict the beginning and ending of a program unit like mean بریسز کا ہم استعمال کبھی statement کے ایک group کو ایک اٹھا کرنے کے لیے بھی کرتے ہیں وہ بھی آج دیکھیں گے ایک چیز کا جس کا میں نے ذکر نہیں کیا تھا دیکھن آج میں کروں گا اور پھر بار بار ہوتا رہے گا وہ آپ نے ایک چیز نوٹس کی ہوگی کہ جب ہم program لکھتے ہیں آپ نے دیکھا کہ جب مین کے بعد ہم نے ایک opening brace ڈالا یعنی curly bracket اس کے بعد جتنی چیزیں ہم نے لکھی وہ indent ہوئی تھیں بریسز والی لائن میں نہیں تھیں تھوڑی سی آگے ہم نے لکھی تھیں یہ ایک matter of style ہے لیکن یہ ایک بہت important matter ہے کیونکہ اس سے آپ پورڈ کو دیکھتے ہوئے سمجھ لیتے ہیں کہ جی ایک block کہاں سے شروع ہو رہا ہے کہاں پہ ختم ہو رہا ہے اور اس کا indentation structure ہے کیا سو now let us try to figure out کہ جی آج کے لیکچر میں ہم نے کس چیز کے بارے میں بات کرنی ہے it's something that we will have to decide upon let's see now we've covered variables we've covered declarations we've covered some rudimentary arithmetic so why don't we talk about decisions interesting we already took a decision they can decisions ہماری زندگی کا عام حصہ ہے think about a simple statement like اگر دوڑ کی دکان کھولی ہو تو ایک لٹر دوڑ کا لیتے آنا that's an if statement اگر دکان کھولی ہو تب ایک لٹر دوڑ کا خرید لانا یہ اس کیسم کی decision ہم بے شمار کیسم کے ہر وقت لیتے رہتے ہیں پروگریمنگ کا بھی اگر ذکر کریں تو کمپیوٹرز کو ابھی تک تو ہمیں ایک سیکوانس of steps بتانا آیا ہے کہ جی ہم سیمپل rudimentary arithmetic کر سکتے ہیں لیکن then it's no more than a simple calculator or maybe a programmable calculator مزات ابھی آتا ہے جب ہم اپنے programs کے اندر decisions شامل کرنا لگ پڑیں کوئی بھی major programming language ایسی نہیں ہے جس میں decisions کیلئے کوئی نہ کوئی structure نہ ہو see بھی ان سے مختلف نہیں ہے see میں بھی ایک decision structure موجود ہے اس کی ہم آج بات کریں گے اور پھر اس کے variants کو دیکھیں گے see میں جو decisions کیلئے استعمال کی جاتی ہے statement وہ ہے if statement if statement کا structure براہ سیمپلسہ ہے if اس کے بعد ایک condition آتی ہے اگر وہ condition true ہو تو اس کے بعد ایک statement آتی ہے یا ایک group of statements آتی ہے جو execute ہوں گی so we can summarize it as if condition is true statements these statements will be executed if the condition is true condition is true what does that mean you know simple چیزیں like if we talk about اگر علی کا کچھ جو ہے وہ 6 foot سے زیادہ ہے تو اس کو basket ball team کا member بنا دیا جائے گا so if علی's height is greater than 6 feet then علی can become a member of the basket ball team so they are simple word expressions and sometimes they actually mimic everyday life so the structure in C is also very simple and similar اب question یہ ہے کہ جی وہ سیمی کولن جو مشہورہ زمانہ سیمی کولن وہ کہاں جائے گا دیکھیں if statement جو ہے وہ if سے شروع ہوتی ہے جتنی اس میں statement یا statement شامل ہوں body میں ہر statement کے بعد ایک سیمی کولن لگانا لازمی ہے if statement اپنے طور پہ اگر آپ لکھیں گے single statement کے ساتھ تو if اس کے بعد condition normally condition کو ہم parenthesis کے اندر انکلوز کرتے ہیں اس کے بعد ایک statement آئے گی جس کے بعد سیمی کولن لگا ہوگا پھر یہ matter of style رہا جاتا ہے کہ جی if کے سامنی ہی آپ نے parenthesis لگا کے statement لکھ دینی ہے اگر ہم next line پر لکھیں گے تو ہم ان کو style کے لیے indent کر دیں گے by one unit which is normally a tab stop tab stop کیا ہوتا ہے وہ آپ کے keyboard پر a tab key بنی ہوئی ہے اس کو دبائیں تو آپ دیکھیں گے کہ cursor 3-4 جگہیں وہ ایک دم آگے موگ کر جاتا ہے اس کو ہم ایک tab stop کہتے ہیں so we will normally use indentation to make clear کہ if statement کیا if condition کے ساتھ کسی statement کیا if condition کے ساتھ کسی statement execute ہو رہی ہے اب اگر ہم ایک سے زیادہ statement کو execute کرانا چاہیں provided the condition is true what do we do this is where the braces come in I mentioned that the braces can be used to group a number of statements تو اگر کوئی condition ایسی ہو جہاں پہ کئی statements execute کرنی ہو so you can think in terms of 3-4 کام کرنے والے تھے اگر condition true ہے تو اس کس کے اندر جو statements execute ہونی ہے if کے ساتھ ان کو ہم braces کے اندر enclose کر دیتے ہیں اب if کی شکل وہ بن جاتی ہے if پھر آگے condition parenthesis کے اندر اس کے بعد braces یعنی curly brackets ہم کھولتے ہیں اس کے بعد اب جتی مرزی statements لکھیں ایک یا اس سے زیادہ اور پھر curly braces کو بند کر دیں and remember ہر statement کی اخیر کیوں پر semi colon لگانا لازمی ہے اب اس کے اندر پھر style کے issue آتے ہیں لیکن یہ important ہے آپ کے سمجھنے کے لیے کہ جی indentation وہ بزاتِ خود کچھ نہیں کرتی وہ صرف ہمارے لیے ہے تاکہ code پڑھتے وقت یا code کو دیکھتے وقت ہمیں اس کی سمجھ آجائے کہ جی کونسا block کس کس قسم کا ہے یہ کبینہ سمجھے گا کہ جی indentation کی وجہ سے کوئی logic بدل گیا ہے logic جو ہے وہ braces کی وجہ سے بدل سکتا ہے یا braces نہ ہونی کی وجہ سے بدل سکتا ہے یہاں پے I can talk about کہ جی اگر غلط semi colon لگا دیں تو کیا ہوگا لیکن we'll wait a little bit till we come to that let us look at a very simple one line example سپس ہمارے پاس دو students کی ages ہیں اور وہ age وہ integer کسم کا variable ہے اور ہم نے program میں کہیں نہ کہیں اس کو read کر لیا ہوا ہے اور ہم دیکھنا چاہتے ہیں کہ جی student one کی عمر زیادہ ہے یا student two کی عمر وہ زیادہ ہے سپس the variables are age one اور age two then it is a simple case of writing something like if age one is greater than age two then let's say we want to print the statement student one is older than student two so seek اندر اس کا syntax بڑا simple ہے variables میں نے بتا دیا age one and age two ہیں تو ہم اس کو لکھیں گے if parenthesis open age one greater than sign age two parenthesis closed go to the next line give an intentation see out less than less than within quotation marks student one is older than student two and quotes semi calling simple now if if group of statements ہو تو ان سب کو ہم braces کے اندر enclose کر لیں گے now if group of statements اب یہ جو ایک سمپل ہم نے چھوٹا سا جہاں سے شروع کیا اس میں دیکھیں ایک اپریٹر آگیا بیچ میں جو تھا greater than sign جب بھی ہم کوئی condition test کرنا چاہتے ہیں تو ہمیں اس قسم کے اپریٹر کی ضرورت ہوتی ہے ان اپریٹرز کو ہم کہتے ہیں relational operators یہ آپ نے کالکلس میں بھی دیکھے تھے اور ان کو تھوڑا سا رہاں بھی ہم کریں گے اور ان کی کمپلیٹنس کے بارے میں بھی جب ہم relational operators کی بات کرتے ہیں تو obviously ایک کونٹریٹی دوسی سے بڑی ہو سکتی ہے یا بڑی یا اس کے برابر ہو سکتی ہے یا اس کے برابر ہو سکتی ہے یا it can be less than or equal to or it can be strictly less than سو very simple وہی چیزیں جو Algebra میں وہ آپ نے real number لائن کے اوپر کی تھی whenever you are comparing two quantities you can use any of the relational operators and the nice thing with C is that these relational operators وہی ہیں جو کہ ہم Algebra میں on طور پہ لکھتے ہیں یعنی less than کے لیے less than کا sign استعمال ہوتا ہے less than or equal to لیے less than equal to درمیان میں space نہیں دینی ایک operator گنا جاتا ہے اس کے بعد equal to وہ ایک خاص چیز ہے اس کے لیے ہم دو equal to sign استعمال کرتے ہیں ان پر ابھی میں بات کرتا ہوں اور آخری دو operators جو ہیں وہ ہے greater than or equal to اور پھر strictly greater than ایک اور operator چاہی ہے ہمیں completeness کے لیے وہ ہے not equal to اگر دو چیزیں برابر نہ ہوں we have to be able to say not equal to اس کے لیے C میں جو operator ہے وہ ہے exclamation mark equal to کا sign یہی دو caracters they will be not equal to by putting an exclamation sign and then an equal to sign equal to b اس طرح ہم کر دیتے ہیں not equal to اب میں نے کہا تھا کہ جی میں double equals کے بارے میں بات کروں گا دیکھیں single equal to sign کہاں پہ ہم استعمال کرتے ہیں جیاد ہے simple assignment کے لیے so if you were to say x equal to zero that is an assignment statement it is not a relational operator and you have to be very clear about that if you want to test whether x is equal to zero to C میں you have to write x double equal to sign zero for اس چھوٹی سی چیز پہ بہت سارے logical errors کر کر سکتے ہیں so you have to be very very careful when using an equality operator you have to make sure that you put in double equal to sign not single equal to the problem is this اگر آپ double equal to جہاں پہ آپ condition test کرے تھے وہاں single equal to ڈال دیں تو C کا compiler error نہیں detect کرے گا it is not a syntax error and the problem is کہ the every C statement returns a value یہ نہیں اگر آپ کہتے ہیں x equal to zero تو assignment تو ہو گئی اور پھر اس اپنی بجاتے خود جو ہے اس کی ایک value ہے اور وہ value if statement چیک کر لے گی true or false and something wrong logically will happen so you have to be careful with that ابھی اتنی explanation کافی ہے so whenever you are using a decision and you want to check for equality make sure it is a better than and that completes are set of comparison operators or relational operators if statement کا این operators کے ساتھ ایک چھوٹا سا ایک سامپل دیکھ لے تے ہیں let's assume کہ ہمارے پاس دو ستودنٹسیں امر اور امارا اور ہم کہتے ہیں کہ ان کی age لے کے تاہے جب جو سی پروگرم کو شاپ اینکلوڈ آیو اسٹریم دوت ایچ ہے جو سی پروگرم کو کت انپٹوٹ سے کیبورد ہوتا ہے اور اسی کیرے پرانیہوں کو کتا ہے اس کے بعد ہم نے اسی کیرے میںین کی سٹیٹمنٹ آگے لکھ دی اور اسی کیرے میںین وہی ہے سی پروگرم کا انٹری پوینٹ ہوتا ہے اس کے بعد ہم نے بریسز کو کھولا کہلی برکٹ چھورو کیے اب وہی بات کے جیسٹیلسٹیکلی یا آدتن اگر آپ اسی وقت اس کا کلوزنگ بریس ڈال دیں تو بعد میں ایک سنٹیک سرل سے بچ جائیں گے ایک کریکچن سے بچ جائیں گے سو جوڑا ڈال دیں اپننگ بریس اور کلوزنگ بریس پھر اس کے درمیان میں ہم نے کورڈ لکھنا شروع کیا اس پروگرم کے لیے ہمیں دو ویریابل کی ضرورت ہے جس میں ان سٹوڈنٹ کی ایجز سٹور کی جائیں گی سو لیٹس ڈیکلیر اگین پر سیک آف سمپلیسٹی اپنے دو ویریابل کی ایجز سٹوریت ہے اور ہمیں امر ایجز اور امر ایجز سٹوریت ہے بچ میں سپیس نہیں چھوڑنی ویریابل کانتنیوزی ہے ہمیں امر ایجز کاما امر ایجز سیمیکوالرنی ہے اب دیکھیں اگین سٹائلسٹیکلی جب اپنی بریس آگیا تو یہاں پے امر ایجز کو ہم انڈینٹ کر کے لکھیں گے انڈینٹیشن کا سب سے اسان طریقہ ہے کہ آپ تبستوپ استمال کریں وہ ہی اپنے کیبوڑ پہ جو ٹیب ہے اس کو ایک دفعہ دبادیں چیزیں انڈینٹ ہو جائیں گی اگین from اس پروگرمیں ہمیں اس کی ضرورت نہیں ہے لیکن سٹائلسٹیکلی and for as a good programming practice اگر آپ انڈیجر کو دیکلیر کرتے ہیں تو اس کو انڈیشلائز بھی کرلیا کریں don't assume کے کمپائلر یا کمپیوٹر اس کو کوئی ویلیو دے دے گا even if the rules of the language state that when you declare an integer variable تو اس کی انڈیشل ویلیو zero ہوگی for example آپ پھر بھی اگر آپ نے zero بنانا ہے اس کو explicitly بنا دیں کوئی خاص خرچہ نہیں آتا لیکن آپ کا program will always be error free اب اگر ہم اس سے آگے چلتے ہیں تو اب again keeping our user friendly rules in mind ہم پہلے کہتے ہیں کہ جی user کو ایک prompt دے دو تو ہم see out کا استعمال کرتے ہوئے لکھتے ہیں please enter amir's age اور پھر کمپیوٹر کو amir's age پڑھانی ہے so the next statement you have وہ see in statement آجاتی ہے اس کے ذریعے ہم کرتے ہیں see in greater than greater than amir's age semi colon یہ ستیٹمٹ جب ڈیک سیکوٹ ہوگی کمپیوٹر یہاں پہ رکھا ہوگا assuming کہ اب کیبوٹ سے کوئی انپوٹ آئے گی کیبوٹ سے جب آپ ایک integer ڈال کے enter دبائیں گے تو see in کے تhough ہوتا ہوا وہ amir age variable جو ہے اس کو assign ہو جائے گا اس کے بعد پھر ایک prompt دینی چاہیے again as making the program user friendly we say see out اور پھر اس کے ساتھ quotation ماک میں please enter amir's age next line پھر see in کر کے ہم کہتے ہیں see in greater than greater than amir's age اب کیبوٹ سے جو نمبر آپ انٹر کریں گے وہ amir age جو variable ہے اس کے اندر سٹور ہو جائے گا اب ہم نے ان دو variables کو کمپیر کرنا ہے اب یہاں پہ آگیا if statement so we put in a simple if statement saying if open parenthesis amir age greater than amir age close parenthesis next line indentation and say see out amir اور یہ see out کے ساتھ وہی less than less than پھر quotation marks کے اندر ہم لکھ رہے ہیں amir's age is greater than amir's age ختم semi colon ڈالہ brace ختم کیا program complete so it's a simple one line test if amir's age is greater than amir's age we print the line amir is older than amir obviously ہم اس کو تھوڑا سا expand کرنا چاہیں گے but lookیں اس میں if کے ساتھ میں کوئی brace استعمال نہیں کیا لیکن اگر میں کر لے تھا تو اس میں کوئی گلٹی نہیں تھی so I could have easily written the statement as if parenthesis open amir age greater than amir age parenthesis closed نائی لین پے open braces اس کے بعد see out والی statement اس کے بعد next line پے close braces اب اس سے ہوتا کیا ہے کہ جو if تھا اس کے ساتھ ایک block of statements اٹیچ ہو گیا ہے اور وہ block اس اگزامپل کے اندر صرف اس میں ایک statement ہے so کوئی مسئلہ نہیں ہے it is perfectly valid as see and it is good programming practice because کبھی مطلب ان انتنشنالی غلط لوجکنا استعمال ہو جائے ہم braces استعمال کر لیتے ہیں so ایک سمپل سا ہم نے program بنا لیا اب question یہ ہے کہ جب ہمارے programs complex ہوتے جائیں گے اس کے جب ہم ایک problem دیتے ہیں اس کا analysis کرتے ہیں پھر اس کا program لکتے ہیں کیا درمیان میں کوئی step ہے جو ہم استعمال کر لیں for analysis purposes and the answer is yes you've already looked at that you have tools of pseudo code اور flow charting available to you اب ہم بات کرتے ہیں تھوڑی سی flow charts کے بارے میں اب یہاں پہ تھوڑا سا ہم in a way if statement کے بارے میں روک ہے now flow charting representation of our analysis of the program یا problem اس کی بات کر لیتے ہیں پھر ہم واپس if statement کی طرف آئیں گے flow chart سو ہم استعمال کرنا چاہتے ہیں وہ کوئی مشکل representation نہیں ہے بڑی simple simple ہم نے رکھنی ہے in fact if I think about it we've got one, two, three, four total four symbols that we will use ایک program کو start یا stop کرنے کے لیے ہم oval استعمال کریں گے ایک oval بنا کے اس کے اندھا start لکھ دیا اور نیچے ایک oval بنا کے اس کے اندھا stop لکھ دیا باقی کوئی بھی processing ہم نے کرنی ہے input لیے نہیں ہے output لیے نہیں ہے جمع کرنا ہے multiply کرنا ہے کچھ کرنا ہے اس کے لیے ہم rectangle استعمال کریں گے تو rectangle کے اندھا جو بھی کرنا ہے process وہ لکھ دیا کئی rectangle سے استعمال کیے جا سکتے ہیں اور symbols کو آپس میں ہم ایک سیدی line سے جوڑتے ہیں اس کے بعد suppose ہمارا flow chart لمبا ہو جاتا ہے ہم ایک سفے سے دوسرے سفے پہ اس کو continue کرنا چاہتے ہیں اس کے لیے ہم ایک چھوٹا ساکل استعمال کریں گے so circle is a continuation mark اور circle کے اندھر آپ number یا letter لکھ سکتے ہیں جو کہ دوسرے سفے پہ وہی number یا letter لکھ دیا تو پتہ چل گیا کونسا سرکل کہاں پہ جا رہا ہے اب اصل کوئی سچنہ آتا ہے کہ جی if statement کا اس کے لیے symbol کیا استعمال کیا جائے آپ نے پہلے بھی دیکھا ہوگا اور آپ کی کتاب میں بھی اس کا ایکسامپل دیا ہوئے کہ the decision کے لیے ہم ہم ایشہ diamond استعمال کرتے ہیں فرق یہ ہے کہ یہاں پہ جو ہم آپ کو flow charting تکنیگ نہیں کہنا چاہئے symbol کہنا چاہئے یا construct کہنا چاہئے وہ جو استعمال کریں گے یہ آپ کو کتاب میں نہیں ملے گی اور یہ کتابوں سے زراسی ہٹ کے ہے اس کی وجہ یہ ہے کہ جو ہم تکنی چہاں پر انٹروڈیوز کرنے جا رہے ہیں وہ ہماری structured programming اپروچ کے ساتھ زیادہ مناصبت رکھتی ہے یہاں ہے یہاں بیٹر کورسپونڈرنس with the way we write our programs as compared to most of the flow charting symbolوجی that you see in text box now let us see how we draw the if statement what we do is for the moment ہم اوپر سے ایک لائن لاتے ہیں اس کے بعد ایک diamond بناتے ہیں so diamond کے اندر ہم وہ condition لکھتے ہیں جس پہ if کا test ہونا ہے اگر ہم a اور b کو compared کر رہے ہیں اور ہم چاہتے ہیں کہ if a is greater than b تو ہم a greater than b diamond کے اندر لکھتے ہیں diamond کے اوپر اور side پر تھوڑا سا کر کے وہاں پہ ہم لکھتے ہیں if کہ یہ diamond یہ ہے if کو belong کرتا ہے یہاں پہ if لکھنے کا مقصد یہاں ہے کہ یہ identification clear ہو جائے because جسے ہم آگے چلیں گے آپ کو پتا چلے گا کہ یہی diamond ہم اور جگوں پہ بھی استمال کرتے ہیں یہ بھی decisions کیلئے diamond سے آپ نیچے کو ایک سیدھی لائن نکالیں اب یہاں پہ ہم فرق کر رہے ہیں textbook سے textbook میں diamond سے دونوں سائیڈوں کو لائنے نکلتے ہیں ایک طرف کو yes لکھا ہوتا ہے دوسی طرف کو no ہم وہ نہیں کرنا چاہتے ہم سیدھی لائن نیچے نکالیں گے اور اس لائن میں سے ایک لائن side ways نکال دیں گے جس کے اوپر لکھا ہوگا then یعنی if اور پھر اس کے ساتھ ایک block of code آگیا جو process ہے ہم نے کہا ہم rectangle استمال کریں گے وہاں rectangle بنائے اور rectangle سے نیچے لائن جو ہے وہ if کی vertical لائن کے ساتھ لاکے ملا دی اب اگر اس تصویر کو آپ دیکھیں تو you will realize کہ this is exactly the way جو ہم program کے اندر code لکھتے ہیں ہم لکھتے ہیں if condition اور پھر اس کے بعد جو statements آتی ہیں ان کو ہم indent کرتے ہیں from left to right یہاں پہ ہماری تصویر جو ہے وہ بھی if کے ساتھ diamond کے اندر condition اور اس کے نیچے جو بھی block execute کرنے اس کو ہم نے indent کر دیا ایک level left to right always اس construct کے اندر کبھی بھی دوسی طرف کو لائن نہیں جائے گے یعنی جب آپ اپنے flow chart کو آپ نے code کے ساتھ compared کریں گے there will be a one to one correspondence between the two and you will be able to very easily see کہ جی کنسی decision your flow chart کیا تھا وہ code کے اندر کیسے لکھا ہوئے اور وہ صحیح ہے کیا نہیں ہے یہ چیز تھوڑا آپ کو practice سے آئے گی لیکن آپ کے handouts میں بھی if construct ہم نے دی ہوئی ہے اس کو اچھی طرح سٹڈی کریں اور اس کو استعمال کیا کریں آج تو بڑے بڑے ہم سیمپل سے programs کر رہے ہیں کل کو programs complex ہو جائیں گے آپ کو flow charting کی یا کسی اور analysis tool کی ضرورت ہوگی وہاں پہ اس کا بہت زیادہ ہوگا ایک دیماند جو کے لائن اپنی سیمپل سے بہت اچھا ورٹیکلی لائن ایکزٹنگ ورٹیکلی اور وہاں بلک کو تاکہ دیماندیت ہے لوگ کیا ہم ایک اندینٹیشن لیوہ اور اندینٹیشن بھی رکھنگر لیکن پہلیں حیوان اس کو پر تو اس کو پھر پہلیں کیونکہ بعدا استعمال ہوگا ایک اف سٹرکٹر جو اس کا فلو چاٹ ہم نے بنایا ہے اس کی بگننگ اور انڈ کہاں ہے تو دیمانٹ سے اوپر جو لائن آ رہی ہے وہاں پہ ایک نکتا بنا لیں کہ جی یہاں سے یہ کنسٹرکٹ شروع ہوتی ہے اور نیچے جہاں لائن نکل رہی ہے جہاں پہ ریکٹانگل سے لائن واپس آگی ہے اس کے بعد بھی وہاں پہ بھی ایک نکتا لگا لیں کہ جی یہ پورا اف سٹرکٹر ہے اب ہم اس سے آگے چلتے ہیں اور دیکھتے ہیں کہ جی سیمپل ڈسیشنز یا کوئی کمپلیکس ڈسیشنز بھی لیے جا سکتے ہیں جب ہم اف استعمال کرتے ہیں تو اس کے ساتھ یجلی ڈیلس بھی آ جاتا ہے عام زبان میں اس کا کیا مطلب ہے یہ ہم یہ کہہ رہے ہوتے ہیں کہ جی اگر سڑک پہ بھیڈ زیادہ ہو تو یہ رستہ اختیار کرنے نا ورنا تم سیدے چلے جانا جب بھی ہم نے ورنا کی بات کی دیتے ہیں تو یہ پر فہن ڈسیشنز۔ اگر یہ حقا مجھے جو لے گا، اوہاں بھی سیدی کرتے ہیں كبھی بھی کم versions کے ساتھ اپضانہا ہے کہ ہم لوگوں کو دیکھا چاہتے ہیں۔ شایف کو ان میں ایکی طرح ہوتے ہیں۔ بہت確یم شہیر ہے ، کونکوٹن بھی ڈسیشنرو کیا ہے۔ ہم بھی کمپلیکسی پہنمی کمپی پہنی تھی جیسے ہم چلتے جاتے ہیں۔ ہم ایک سمپل بناتے ہیں کہ جی اگر ایک ہماری کلاس کا سٹوڈنٹ کی عمر جو ہے وہ اٹھارہ سال سے زیادہ ہو یا اس کا قد جو ہے وہ پانچ فٹ سے زیادہ ہو تو ہم اس کو فٹبال ٹیم میں شامل کر لیں گے ورنہ ہم اس کو چیس ٹیم میں شامل کریں گے اینہاں ایدر ہی اس ایک ایک بہت صرف سکنے کی جانتے ہیں لہذا ہم یہ آپ بھی کوٹھنا چاہتے ہیں اب اس کے انتر تھوڑی săیطہ کمپلیکسٹری میں نے استعمل کر لیئے اگر اس کے علاوہ بھی بہت ہی سمپل کی جانتے ہیں دیکھیں پہلی چیز جو ہم نے اس میں کمپلیکسریٹی ڈالی ہے اس میں دو کنڈیشنز ڈالدی ہیں دیکھیں اب دو کنڈیشنز جو ہیں وہ اس میں کہا دی ہے کہ جی اگر اس کی عمر زیادہ ہو یا اس کا قد زیادہ ہو سنو دیزہ a connective that is required کنڈیشن one or the English or or condition two اس کو ہم سی میں کیسے لکھیں گے اور اسی طرح بہت ساری اور کمپلیکس کنڈیشنز بنتی ہیں ابھی ہم نے کچھ دیر پہلے relational operators کی بات کی تھی اب ان کو extend کرنے کیلئے ہمیں یہ logical connectives بھی چائیں that means کہ جی دو relational expressions کو اپس میں کیسے جوڑا جائے دو relational expressions کو جوڑنے کیلئے ہم logical connectives جو استعمال کرتے ہیں وہ ہیں and یا or یعنی یہ چیز اور یہ چیز ہو رہی ہے یہ ڈالی اور ہے تو وہ اس کا مطلب ہے the and connective اور اگر ہو یہ چیز یا یہ چیز ہم نے بتانی ہو logicalی تو پھر اس کے لیے or connective ہے اس میں جو operators ہم استعمال کرتے ہیں English and کے لیے وہ ampersand sign ہے آپ کی key board پر number row پر آپ لوکیٹ کر لیجے گا so and کے لیے جو English and کے لیے symbol ہے وہ double ampersand ہے and end لکھا جاتا ہے اور or کے لیے وہ vertical bar ہے جس کو ہم pipe symbol بھی کہتے ہیں key board پر آپ کو شہد simple bar کئی دفعہ نظر آ جاتا ہے کئی دفعہ double bar نظر آتا ہے اوپر اور نیچے وہ بھی آپ لوکیٹ کر لیں اس کو بھی double استعمال ہوتا ہے so it is a vertical bar vertical bar which stands for the English or or symbol so whenever you want to combine relational expressions you say if a is greater than b and c is greater than d so c language میں اس کو لکھا جائے گا if parenthesis a greater than b and and c greater than d parenthesis is closed so وہی بات کیجی اگر age والا اگزامپل لیے لیں اور قد والا اگزامپل لیے لیں تو ہم نے وہاں کہا تھا یا جنی عمر اگر 18 سال سے زیادہ ہے یا اس کا قد 5 سال سے زیادہ ہے 5 foot سے زیادہ ہے پھر ہم یہ connective استعمال کریں گے تو اس میں اگر c میں ہم وہی variables لگا لیے اور نام وہی رکھلے تھے which are obvious so we would say something like if age is greater than 18 so greater than or height greater than 5 so it's now a compound expression again اس کا جواب جو ہے as with all relational expressions یا وہ true میں آئے گا یا وہ false میں آئے گا اور پھر آگے if statement کا normal syntax چلتا ہے اب اس کے آگے ہم else کو لیے آتے ہیں اگر ہم نے else استعمال کرنا ہو تو ہم لکھیں گے if condition اور پھر وہی style والی بات open braces اندر جتی مرزی آپ statements لکھنی چاہیں وہ لکھ لیں اگر condition true ہے braces بند کریں اور پھر لکھیں else پھر braces کھولیں پھر اس میں ایک یا اس سے زیادہ statements لکھیں اور braces بند کریں اب آپ کے پاس if else block بن جاتا ہے back to the flow chart flow chart میں if else کو کیسے دپکت کیا جائے آپ اگر کتاب میں دیکھیں گے تو آپ کو نظر آئے گا کہ if statement میں اوپر سے لائن آئی I get diamond ہے اور پھر اس کے ایک طرف کو line نکال دی yes اور دوسی طرف کو نکال دی no کر کے ہم اس کو draw کچھ اس طرح سے کریں گے کہ جی اوپر سے لائن آئی وہ چلی گی diamond میں جس میں condition لکھ دی اور diamond سے پہلے نیچے کو line سیدی نکال دی اور پھر پہلہ block اس کو write کو indent کیا اس پہ لکھا then اور rectangle بنا کے اس کے اندر process لکھ دی جو بھی statements لکھنی ہے line واپس لے آئے اور اس سے نیچے ایک اور block نکالا right side کو again left to right اور اس لائن کے اوپر آپ لکھ دیں گے else اور پھر نیچے block دیکھے واپس اس سے line واپس لے آئے یہ تھوڑا سا funny structure لگتا ہے لیکن آپ نے then اور else لکھ کے ان blocks کو qualifier کر دی کہ جی یہ کب execute ہونے اور یہ کب execute ہونے فائدہ اس construct کا وہی ہے کہ جی if then else کی flow chart representation وہی آپ اوپر اور نیچے نکتے لگائیں تو یہ پورا structure یہ اس کی representation ہے اس کو جب آپ code کے ساتھ compared کریں گے تو بالکل identical ملے گی کہ جی if کے بعد جو code آرہا ہے اس کو indent کیا ہوا ہے left to right اور پھر else کے ساتھ جو آرہا ہے اس کو پھر indent کیا ہوا ہے دیکھیں جب بھی ہم code intendation کی بات کرتے ہیں وہ ہماری سہولت کے لیے تاکہ ہمیں easily blocks نظر آ جائیں and you know and I know کہ جی indentation left side کو نہیں ہو سکتی left side پر ایک margin آ جاتے اس سے left کو نہیں جا سکتے تو why should we draw flow charts which go left and right اور آگے جا کہ جب ہم nested construct کی بات کریں گے آپ دیکھیں گے یہ بہت problem ہو جاتا ہے کہ وہ جو اس کو پھر ہم spaghetti flow chart کہنے لگ بڑھتے ہیں کہ جی اس کے اندر گھمبیر کی سمکہ construct بنے جس کا code کے ساتھ کوئی تعلق نہیں رہتا تو it is nicer to start using these constructs now perhaps we can use these in a program not the constructs but for the moment the if else statement چھلیں if else کے لیے ہم اپنا وہی age comparison program کو تھوڑا ساگے بڑھاتے ہیں یہاں پہ what we want is that if Amir's age is greater than Amara's age ہم screen پہ display کریں Amir is older than Amara and if that is not true یعنی Amir کی عمر کم ہے Amara کی عمر کے مقابل میں پھر ہم display کرنا چاہتے ہیں Amir is younger than Amara اب پورہ program لکھنی کے بجائے let's just look at the construct دو طریقے ہیں پہلہ طریقہ تو جو ہمیں پہلے آتا تھا if statement اس کو استمال کرتے ہیں ہم کہتے ہیں if parenthesis کے اندر Amir age greater than Amara age پھر اس کے بعد بریس کھول نہیں programming practice یا style اور آگے آجائگا see out Amir is older than Amara end brace اِس سٹیٹمنٹ ختم ہو گیا ایک کندیشن ٹیست ہو گئی دوسری if statement آپ لگا لیں if parenthesis open Amir age less than Amara age parenthesis closed پھر بریس کھولیں گے پھر ہم لکھیں گے see out وہی less than less than Amir is younger than Amara اور brace close اب دیکھیں ان دو کندیشنٹ کو ٹیست کرنے کے لیے ہم نے دو مختلف if statement استمال کی ہیں تھوڑا سا کوڑ لمبہ ہو گیا ہے لیکن ہم یہ زیادہ کام جو ہے وہ زیادہ elegantly ایک else کے ساتھ بھی کر سکتے تھے کیونکہ یا آمر بڑا ہے یا چھوٹا ہے سو لیت سی how we write the else statement with the if statement now what we will do is we will write if parenthesis open Amir age greater than Amara age parenthesis closed open braces پھر ہم کہتے ہیں see out Amir is older than Amara age braces closed else پھر ہم braces کھولتے ہیں اور کہتے ہیں see out Amir is younger than Amara میں وہ quotation mark سیمی کولنٹ mention نہیں کر رہا اور braces ہم کلوز کر دیتے ہیں اب ایک compound if statement بن گیا جس میں if اور else آگیا کوڑ تھوڑا سا چھوٹا ہو گیا تھوڑا سا more readable ہو گیا کیونکہ ہمیں ابھی بالکل کلر ہو گیا ہے کہ اگر condition true ہے تو یہ کرنا ورنا یہ کرنا سو if else is a very common construct then we have to use it almost all the time in a reasonably complex program اب اس کے لیے آپ اپنے طور پہ ایک چھوٹا سا flow chart بنائیں اس کو بنائیں جو میں نے آپ کو گائیڈلائنز دییں اور آپ کے ہندوٹس میں بھی کنسٹرکتی تصویر دی ہوئی ہے اس کو بنائیں یہی program بیشک لکھیں اور اس پر پریکتس کریں اور دیکھیں کہ یہ flow chart اور آپ کا جو code ہے لکھاوہ ان کا one to one correspondence کیسٹرہ سے بنتا ہے it's very neat, very clean and you will appreciate the symbolic representation اب اس میں ہم پھر کوئی complexity دال سکتے ہیں لیکن اس دالنے سے پہلے یہ دیکھ لیں کہ یہ جو ہم نے ابھی conditions لگائیں چھوٹا سا test کیا تھا یہاں یہ complete تھا کہ نہیں تھا کیا خیال ہے جو if else ڈیٹمنٹ کا منی ڈیٹمپل دیا ہے was that a complete test this is almost referring back to the real number line and the calculus ڈیٹمنٹs جو آپ کو پڑھائی گئی ہیں دیکھیں ہم نے دو test کیا ہیں جہاں پہ ہم نے کہا ہے کہ جی if amur age greater than amara age اور پھر کر دیے else جب ہم نے else کیا تو that means all other conditions ڈیٹمپل دیا ہے that means کہ جی if greater than true نہیں ہے تو باقی سارے cases دوسی ڈیٹمنٹ میں ڈیٹمنٹ میں ڈیٹمنٹ ہوں گے اب اس میں کوئی problem آتا ہے یا یہ اچھی بات اچھی بات تو یہ ہے کہ جی the test is complete either amir is older than amara than we do لیکن لوجیکلی ہم نے جو بھی program لکھاتا وہ صحیح نہیں ہے وہ اس باستے کہ جو ہم نے else کے ساتھ لکھا else کے ساتھ ہم نے لکھا ہے کہ amir is younger than amara that is not correct the else now is completing the greater than which was in the if statement therefore the else represents what would have been in the first case if amir age greater than amara age see out amir is older than amara else جو else کے ساتھ see out to be exactly correct means it should state see out less than less than amir is younger than or of the same age as amara so یہ یاد رکھیے گا تو کمپلیٹنیس کا خیال رکھنا بڑا لازمی ہے دیکھیں اس میں ایک کیا چاہتا ہے else نے ہماری جان بچا لی کیونکہ اس نے باقی ساری کسیز کور کر لیے اگر ہم وہ پہلے والے اگزامپل کی دو مختلف اف سٹیٹمنٹ استعمال کر رہا ہوتے تو پھر یہ ہماری ریسپونسبیلٹی کی جی پہلے کس میں اگر ہم نے پہلے نہیں ہم چاہتے ہیں کہ امر امر امر امر یہ لکھنا چاہتے ہیں تو پہلے والے اف کند ہم لکھتے ہیں جس کو ہم سیمبل ایک ہم ایک ہم ایک ہم ایک ہم ایک ایک ایک ایک چیکز کی جانتے ہیں ہم ایک ہم ایک ہم ایک ہم ایک ہم پہلے ہم ایک ہم ایک ہم بہت ہم ایک ہم بہت ہم دو کہ ہم یہ بھی ان چیزوں کی بات ہوئی تھی اور آپ کو یاد ہوگا کہ وہاں پہ آپ نے truth ڈیبلز بھی بنائے تھے. کئی دفعہ یہ تو بڑے سیمپل پروگرمز ہیں یا پروگرمز ہیں جن کی ہم بات کر رہے ہیں جب پروگرم کمپلیکس ہو جاتا ہے اس وقت truth ڈیبلز become very very important. sometimes the problem is so complex that you cannot simply write it down in English اور ڈیبلز اور try to figure out کی جی اس کا جواب کیا آئے گا. تو وہاں پہ اگر آپ truth ڈیبل بنا لیں جن آپ یہ ایک expression ہے اس کی possible values کیا بنتی ہیں کیونکہ یہ logical expressions یہ true false میں چلیں گی. پھر دوسرہ column بنالیں اس میں بھی true false لکھلیں تیسرہ column جو ہے وہ ان کو connect کر کے ہوگا کہ جی expression one and expression two یا expression one اور expression two. تو وہ truth ڈیبلز جو ہے that is also a good analysis tool جس کے ساتھ آپ یہ figure out کر سکتے ہیں کہ جی آپ کا جواب کی آئے گا اور ان cases کو handle کیسے کرنا ہے. ایک operator جو کہ ہم نہیں استعمال کر رہے تھے وہ بھی آپ کسی بھی اپنے لیے ایک program formulate کر لیں a problem formulate کر لیں اس کو program کریں وہ ہے not equal to simple. اگر ہم کہیں کہ جی if amir age exclamation mark equal to amara age تو اس کے ساتھ output statement کیا ہونی چاہی ہے. اس کی simple output statement یہ بنتی ہے کہ جی amir and amaras age ages are not the same simple they are not equal now یہ اس میں نہیں بتایا جا رہا کہ کون بڑا ہے کون چھوٹا ہے it is simply a statement saying not equal to for the sake of completeness ایک اور logical operator میں آپ کو بتاہتا چاہلوں جو ہم نے connectives بتائیں ہیں and or or you need double ampersand sign or double vertical bar یہ جو ہیں یہ پھر binary connectives ہیں یہ دو چیزوں کو جوڑنے کے لیے استعمال ہوتے ہیں so there is expression one and یا اور expression two اور پھر پوری expression کیونکہ logical ہے اس کا اپنا جواب جو ہے will your true آئے گا یا false آئے گا. ایک اور expression ہے operator ہے وہ ہے unary not operator اس کا بھی آپ نے truth table بنایا تھا not operator means کہ جی اگر true ہے تو not true means false اور اگر false ہے تو not false means true so اگر کسی بھی relational expression کو invert کرنا ہو اس کا مطلب تو پھر اس کے آگی آپ not operator لگاتے اور not کا symbol c کے اندر is simply the exclamation mark again like other unary operators the not operator does not affect the operant یہ پھر یاد رکھنے والی چیز ہے کہ جی جس پر operate کیا جا رہا ہے اس کو کچھ نہیں ہوگا لیکن جواب فرق آئے گا so جواب کو affect کرنے کے لیے not operator استعمال کیا جا رہا ہے so if you think about it اور یہ زراہ ساپ کو سوچنا پڑے گا I will not give you the answer here excuse me if you were to write the statement if not or پھر پر انتصیز کے اندر امر ایج گریٹر than امرہ ایج پر انتصیز کلوز تو اب آپ نے سوچنا اس بات پہ ہے جناب اس کا جواب کیا ہے یا اس کا مطلب کیا ہوگا does it mean امر is ینگر than امرہ does it mean امر is امر ایج is less than اور equal to امرہ ایج be care for work it out give it a thought go to the discussion board اپس میں بھی دسکس کرے اور اپنے کلاس فیلوز کے ساتھ دسکشن بوڑ کی اوپر دسکس کرے چلے ایک اور لوجکل کنیکٹیب کا اجام ہو real life آپ سے جو کلاس آتی ہے جو نئی admit ہوتی ہے virtual university میں اس کے لیے ہم نے ایک rule رکھا ہوا ہے کہ جناب انٹر میں کوئی خاص فیصد نمبر چاہیں اور پھر آپ کو admission test میں بھی پاس ہونا ہے یا اس میں رینکنگ میں اوپر آنا ہے تو from a see perspective we have to have something like if parenthesis open انٹر مارکس greater than 45 اب انٹر مارکس جو ہے وہ ہم نے ایک variable کیلیہ اس میں انٹر کے نمبر ہوں گے انٹیجر ہوگا نمبر سفریکچن میں نہیں دیے جاتے اور اس کے ساتھ پھر یہ پہلی کنڈشن ہے اب ہم نے اس کے ساتھ انٹر لگا نا ہے تک انٹر مارکس جو دبل ایم پرس انٹر اور دیکھ سی کجی مارکس ایک مارکس جو پاس مارکس پھر اس کا جو ہم نے ایک چن لے نا ایک چن might بھی as simple as see out welcome to virtual university سو کمپاونڈ لوجکل ایک سپریشن جو ہیں دے are very very common and again you have to be careful in terms of and and or یہ کب استمال کرنے یہ انگریزی کا and here انگریزی کا اور ہے اردو بلا اور نہیں ہے so be careful with that always think in terms of what is the logical expression that you are trying to construct اس کے ساتھ اگر really ٹریکی ہونہ ہے تو اب میں اس کے expression کے بار ایک not لگا دیتا ہوں میں یہ کہتا ہوں if not ٹھیک ہے اور آگے پھر وہی دو چیزیں انٹر مارکس گریٹر than 45 and بہت تست مارکس گریٹر than equal to پاس مارکس اور پھر آگے statements again a question for you اس کا کیا مطلب ہوگا اگر not بہر لگا ہے پر انتسیز کے یہ پوری expression اگر انورٹ ہوگی تو کیا اس کا مطلب ہے کیا یہ مطلب ہے کہ جی اگر آپ کے انٹر کے نمبر کم ہیں اور یا میں اردو بول رہا ہوں کہ جی اور ساتھ جو ہے ٹیست میں مارکس جو ہیں وہ کم ہیں دونوں چیزیں انورٹ ہوگی and یا اور انورٹ ہوگا کیا ہوگا when all else fails go back and draw yourself a truth table truth table سے it'll become very clear and you'll find that this particular answer is quite interesting so آج کے لیے جب ہم بات کر رہے تھے we basically covered the if statement اور اس کے ساتھ اس کا variant کیجی if else کے ساتھ اور ساتھ ہم نے آپ کو انٹروڈیوز کیا ایک چھوٹی سی فلو چارٹنگ تیکنیکس کے ساتھ یا ان کی کونسٹرکس کے ساتھ سیمبلز وہی ہیں جو پہلے بھی آپ نے دیکھے ہوئے ہیں آج ہم نے ان کو فاملی انٹروڈیوز کر دیا ہے اور ہم نے دیکھا کہ جی if statement کیلئے جب بھی ہم مطلب اس کا فلو چارٹ بناتے ہیں تو ہم indentation left to right دکھائیں گے اور اگر if اور else statement ہم نے compound statement بنانی ہے تو ہم پھر بھی indentation left to right ہی رکھیں گے لیکن دو different blocks استعمال کریں گے ایک block کے ساتھ ہم then لکھ دیتے ہیں اور دوسرے block کے ساتھ ہم else لکھ دیتے ہیں اس کا فائدہ let's take a quick look suppose you have nested if statements what does that mean nested if کا مطلب یہ ہوگا کہ ایک if statement کے اندر دوسرہ if statement لکھا ہو پہلہ question کیا یہ لکھا جا سکتا ہے see کے rules کے مطابق see obviously has no restrictions you can nest if ایک اندر دوسرہ دوسرے کے اندر تیسرہ کوئی مسئلہ نہیں ہے stylistic issues ہم بعد میں cover کریں گے کیونکہ اس پیپ ہمارے پاس ایک اور statement بھی ہے لیکن for the moment suppose that we have to cover something like if age is greater than 18 اور پھر آگے چل کے کچھ اور statements execute کرنے کے بعد ہم کہتے ہیں کہ جی within that if if height is greater than 5 feet اب اگر آپ اپنے لیے as an exercise آپ یہ کریں کہ جی اس nested if کا آپ ایک flow chart بنانے کی کوشش کریں let me assure you will find کہ جی آپ نے left to right indent کیا اور اس indentation کے اندر جہاں پہ آپ نے process لکھنا تھا وہاں پہ ایک اور if statement لکھتی ہے تو وہ further left to right indent ہو جائے گا یہ flow chart کی جو تصویر بنے گی یہ آپ کے if a nested if statement کے code کے ساتھ exactly one to one correspond کرے گی as an exercise آپ اسی کو بنانے کی کوشش کریں جو کتاب میں آپ کے پاس دیا ہے if structure اس کے ساتھ بنانے کی کوشش کریں تو you will find کہ جی وہ structure آپ code کے ساتھ کوئی correspondence نہیں رکھتا so do these exercises and what I also want to reiterate is that you just have to keep on programming میں تو آپ کے پاس ایک لیکچر میں کچھ examples دیے کچھ expressions دی but what you should be doing is you should be constantly using whatever we talk about in the lectures and you write yourself some programs 2 4 5 10 programs جو ہیں وہ بار بار آپ لکھیں بار بار لکھیں اپنے لیے کوئی اور چیزیں کو an interesting کسم کی چیز بنانے کوئی comparison سمیہ جاتا ہی بات کی ہے decision کی بات کی ہے bring up some problems perhaps you might want to formulate some problems and put them on the discussion board get other people to work on them get people to say ok here's a challenge یہ ایک problem ہے اس کا code لکھیں بتاو یہ یہ ایک problem ہے اس کا فلو چارٹ بناکے دکھاو so have a lot of discussion and interaction we will also be looking at that discussion we will also have moderated discussion board so we will lead the discussions but keep on programming so آج کے لیے اگر ہم دیکھیں کہ ہم نے کیا کور کیا ہم نے پہلے تو تھوڑا سا recab کیا چھوٹے سے علف بے پے ابھی ہم پڑھ رہے ہیں اس کے بعد آج ہم decisions پے چلے گے اس میں see کا جو decision structure ہے if statement اور پھر اس کے ساتھ else کا statement so if else ہم نے ان کی flow charting constructs کا ذکر کیا ان کی تصویریں آپ کو دکھائیں آپ کو بتایا کیسے بنائا جاتا ہے we looked at some rudimentary code examples and then we looked at unnested if statement اگلی دفعہ we get into even more interesting stuff which are loops loops کے بعد ہماری جو ہے main construct وہ کمپلیٹ ہو جاتی ہے کہ ہمار پس decisions بھی آگے loops بھی آگے اب ہم serious programs لکھ سکتے ہیں so till next time اجازت دیجے خدا ہفز