 اسلام علیکم، today's لیکچر No. 36 of CS201 Introduction to Programming پسلی دفعہ ہم نے Input Output Streams کے بارے میں دسکشن شروع کی تھی اور ہم نے ان کی کچھ Properties اور OBJECT کی دیفنشن دیکھی تھی اس دفعہ ہم دیکھنا چاہتے ہیں کہ ان Streams کو Manipulate کیسے کیا کیا جا سکتا ہے I mentioned last time that you need to include some header files in your program جب بھی ہم CNC out وگرہ استعمال کرنا چاہتے ہیں تو ہم include کرتے ہیں IOStream.h کو جہاں پہ بھی ہم File Manipulation کرنا چاہتے ہیں تو FStream.h آجا جاتا ہے آج کے لیکچر کے لیے IOManip.h which is the input output Manipulating کے لیے header file اس کو include کرنا ہے ہم نے اپنے programs کے اندر so whenever you need to use manipulators کوئی لازمی نہیں ہے کہ آپ manipulators استعمال کریں بلکہ آجتا کھم نے نہیں کیے تھے لیکن if you need to use them you have to include IOManip.h in your programs for the moment let us talk for a few seconds on a specific topic that was part of the previous lecture وہ ہے میں نے بات کی تھی کہ آپ ایک stream کی state کو آپ چک کر سکتے ہیں then you can determine کہ stream کی state کی اندر ہے جن state کے ساتھ ہمارا غرز ہے for example see in کو لیلیں ہم یہ چیک کرنا چاہتے ہیں کہ پڑھتے بے کوئی end of file تو نہیں آگیا so اس کے لیے these stream objects have inside a set of flags flags کو آپ کنسٹر کر لیں کہ یہ ایک integer یا ایک long integer انہوں نے رکھا ہوا ہے جن کی bit positions جنہاں سپیسفائے کرتے ہیں کہ یہ کام ہوا یا نہیں ہوا each bit can be zero or one so it indicates something so end of file کی بھی ایک bit ہے اس کو ٹیست کرنے کے لیے you can say see in end of file and it will return the end of file status the bit will be set اگر end of file اکر کیا ہے اسی طریقے سے ایک fail bit ہے کہ اگر کوئی operation fail کر گیا ہے which means کہ maybe there was a formatting error so see in dot fail as a function call will show you the value of the fail bit کیونکہ یہ value return کر سکتے ہیں آپ اس کو if statement کن در استمال کر سکتے ہیں and recover from the error gracefully پھر ایک bad bit ہے bad bit کہتی ہے کہ جی آپ کا data loss ہو گیا if a bad bit is set that means in the input output operation some data was lost so you can check it by saying see in dot bad with parentheses as a function call and that will allow you to check whether the input operation failed or was successful so EOF bad fail and you can also check good so there is a bit for everything being good اگر bad or fail جو ہے وہ اگر bit set نہ ہوگی تو good bit set ہوگی so you can say see in dot good and you can check that bit and find out whether the input operation was successful اگر کوئی bit set ہوگی ہے like bad bit تو اس کو clear کرنے کے لیے بھی mechanism ہونا چاہی ہے so we have a see in dot clear as a member function for these objects and that will reset the bits to their normal good state خیر any way this was part of checking the state of an input stream آج ہم بات کرنا چاہتے ہیں manipulators کی میں نے last time ڈکر کیا تھا کہ جب بھی ہم کوئی formatting کرنا چاہتے ہیں تو ہم چاہتے ہیں کہ streams وہ manipulate کر سکیں یہ نمبر ایک خاص طریقے سے present ہو left لگا ہو right لگا ہو اتنی جگہ لے and so on so forth اس کے لیے ہمارے پاس stream manipulators ہوتے ہیں manipulators کیا چیز ہے its like something جو کہ ہم stream میں insert کریں گے اور stream کا behavior بدل جائے گا so for example اگر ہمارے پاس ایک floating point number ہے میرا favorite number pie لے لیں اور اس کو ہم نے لکھا ہوئے کہ float pie equals 3.1415926 and so on لیکن ہم چاہتے ہیں کہ جب پرنٹ کریں تو pie should be printed up to 2 decimal places than this is a formatting function اس کے لیے بھی ہمارے پاس ایک manipulator ہے جو بتاہتا ہے کہ اتنی ورد کے اندر پرنٹ کرو اور اتنی decimal places پرنٹ کرو ایک نہیں کئی manipulators ہیں کچھ manipulators جو ہیں وہ تو ہیں parameter less ان کے اندر صرف manipulator کا نام دیا جاتا ہے اور وہ کام کر جاتا ہے ایک اجامپل میں نے پہلی دفعہ منشن بھی کیا تھا ہم کرتے ہیں اسطمال end L now end L actually is a manipulator it's not data it's a manipulator اور جب آپ کہتے ہیں see out less than less than end L تو کرتا ہے کہ ایک new line بھی output ہو جاتی ہے اور buffer بھی flush ہو جاتا ہے so it actually manipulated the output stream اسی طریقے سے flush was a manipulator so you could say see out less than less than flush which means flush the output buffer it manipulates the output لیکن ایک second variety ہے manipulators کی جو کوئی argument بھی لیتی ہے اس کا example ہم exactly مطلب terms میں discuss تھوڑا سا کرتے رہ گئے آپ اس کو formal کر لیتے ہیں کہ جی اگر میں وہی pie جو ہے اس کو چاہوں کہ یہ 2 decimal places کے ساتھ پرنٹ ہو تو کوئی طریقہ ہونا چاہی ہے میں دو کا ہنسہ جو ہے یہ کسی طرح بتا سکوں this is sent in as a parameter so you have manipulators with arguments یعنی parameterized manipulators اب ان parameterized manipulators کو and manipulators without arguments ان کو آج ہم دیکھیں گے لیکن تھوڑا سا دیکھتے چلیں ریویو کرتے چلیں کہ جیسٹیم سمارے لیے کرتی کیا ہے لیکن I mentioned last time that stream was like an ordered sequence of bytes and it connects two things a source and a destination in the middle it does some conversion so maybe it takes binary representation of information and converts it into human readable characters or it takes characters which are human readable and converts them into an internal representation of data ساتھ ساتھ ہم ان کا دیتہ کو conversion کے اندر اور چیزیں بھی کر سکتے ہیں آپ نے دیکھا ہوگا کہ جو اگر کوئی computerized system چیک سپرنٹ کرے تو کئی دفعہ وہ نمبر کے آگے کوئی special characters دال دیتا ہے یعنی اگر ہم نے 4000 کا چیک بنانا ہے تو شاید آپ کو نظر آئے star star star 4 0 0 0 0 0 کبھی خیال کیا ہے یہ آگے stars کیوں دالے میں 4000 سے the idea is so that nobody can add a number before that you don't want کیا آپ نے 4000 کا چیک لکھا تو کئی آگے اس کے ایک لگا دے اور 14000 کا چیک بنانا ہے اس کو cash کر لے ہم چاہتے ہیں کہ یہ آگے stars لگ جائیں یہ بھی ایک اسن کا manipulation ہے جو کہ input output objects کے ساتھ ہم کر سکتے ہیں کہ یہ اٹمیٹیکلی کچھ آگے لکھا جائے ہم چاہیں تو width بتا سکتے ہیں کہ جیساتھ digits کے اندر اس نمبر کو پرنٹ کرنا تو width کی specification بھی ہم کر سکتے ہیں and so on تو ہمیں جو کامایکوچیں ہم کرنے کے ساتھ ہیں and there are many paddings کہ ہمیں جو کاماکتے ہیں and we can use fill characters یہگو میں start کیا ایک meal character ہم آتے ہیں لیکن at the outset میں ایک چیز بتا تا چاہو ان سارے کاموں کو ایکمپلش کرنے کے لئے unfortunately in my opinion دو تین مختلف طریقے ہیں so it becomes a little confusing کہ ایک ہی کام دو یا تین مختلف طریقوں سے کیا جا سکتا ہے کچھ جو ہیں وہ in line manipulators ہیں جیسے in and l ہے وہ ہم نے less than less than sign کے ساتھ استعمال کیا اور in line لکھ دیا کہ آپ نے جو بھی output کرنی ہے چیز اس کے بعد پھر double less than and l that was an in line manipulator لیکن یہی کام شہد آپ flush method کے ساتھ بھی کر سکتے ہیں. so you could say see out dot flush. now that's a little bit confusing ہو جاتا ہے کہ یہ ایک طرف method ہے ایک طرف in line manipulator ہے ایک طرف ہم کہتے ہیں کہ جی ویڈھ کے لیے in line manipulator بھی ہے اور ایک function call بھی ہے. so there are many ways of doing these but in an orderly fashion we will cover these one by one so it won't get too confusing. let us start by taking some very interesting but very simple manipulators ہم نمبرز کے ساتھ deal کرتے آئے ہیں. انٹیجرز لیلیں ہم ان کے ساتھ constantly input output کرتے آئے ہیں اور آپ کو یہ بھی پتا ہے جو آپ نے cs 101 کے اندر بھی پڑا تھا کہ جی ہماری number representations جو ہے وہ کسی base کے ساتھ associate ہوتی ہیں. روزمرہ کی زندگی میں ہم base 10 arithmetic استعمال کر رہے ہوتے ہیں تو base 10 کے نمبرز ہیں یعنی جب bank کے چیک کے اوپر 40000 لکھا ہوئے تو you know this is the value 4000 in the decimal number system لیکن جب ہم computer کی دنیا میں آ جاتے ہیں تو binary بھی ہے یعنی base 2 arithmetic ہے ڈیسیمل بھی ہے اکٹل بھی ہے base 8 ڈیسیمل بھی ہے base 16 کئی دفعا ہم یہ سوچنے پڑھ جاتے ہیں کہ یہ different basis کیوں if you think about it let me try and give you a small simple justification computer جو ہے وہ بیٹس اور بیٹس پہ چل رہے ہیں internally بیٹس ہے وہ 8 بیٹس کی بیٹ ہے اب 8 بیٹس کو اگر آپ دیکھیں تو اس کے اندر کیا کیا values آ سکتی ہیں پہلے 8 بیٹس کا چھوٹا حصہ کریں 8 بیٹس میں تو 256 different values that means from 0 to 255 وہ سٹور ہو سکتی ہیں اگر آپ اس کو آدھا کرلیں 4 بیٹس لے لیں اس میں what is the highest number that you can store have you ever thought about that well it is 2 to the power n minus 1 where n is the number of bits so it is 2 to the power 4 which is 16 minus 1 so it means کہ جی highest number that you can store is 15 but the total numbers that you can store including 0 would be 16 so it's 2 to the power n which is the different values that you can store اب دیکھیں بھائیٹ کو جب ہم نے آدھا کیا تو پتہ چلا کہ جی اس کے اندر 4 بیٹس کے اندر 16 different values سٹور ہو جاتی ہیں 16 base 16 hex a decimal arithmetic it means there is some relationship with numbers which are جن کا بیٹس جو ہے وہ power of 2 ہے تو they are ایسی لی مینی پہلے مینی پہلیٹ بل از ان ان بیٹ فارم چار بیٹس ہیکس what about 8 تین بیٹسوں تو 2 to the power 3 is 8 سو تین بیٹس جو ہے وہ اکٹہ اکٹہ جو ہے اپکہ بیٹس 8 ارثمتک اس کے ساتھ استعمال کر سکتے ہیں which is اکٹل نوٹیشن if we want we can use manipulators to convert these numbers from one base to the other very very simply or see out or see in کے لیے ہمارے پاس manipulators ہیں these are non-parameterized manipulators so if we were to say something like int i equals 10 so now i has the decimal value 10 as we have been using all along ہم کہتے ہیں see out less than less than i تو screen کے اوپر 10 لکھا و آجائے گا اگر ہم یہاں پہ مینی پولیٹر استعمال کرنا چاہے ہم کہتے ہیں کہ ہم اس کو اکٹل میں دیکھنا چاہتے ہیں تو پہلہ تو کوشتنی ہے اکٹل میں 10 کی ویلیو کیا ہوگی well it'll be 8 plus 2 that is 10 سو ایک دیجیٹی دا چلا جائے گا تو آجائے گا تو 1 2 جو ہے that will be اکٹل 10 will that print out how will that print out if he says see out less than less than than less than oct oct short for octal less than less than i تو یہ مینی پولیٹر کرتا کہ ہے کہ جب i سٹریم میں گھوسنے لگتا ہے تو اس سے پہلے oct گھوس چاہتا ہے یہ سٹریم کا مینی پولیٹ کرتا ہے اور کہتے ہیں کہ جی اب convert یوں کریں کہ آپ کو ایک دیسیمل نمبر دیا جا رہا ہے اس کو اکٹل میں convert کر کے اس کو display کرتنے so decimal 10 کی اکٹل representation screen کے اوپر آ جائے گی اسی طریقے سے اسی طریقے سے اگر ہم کہیں see out less than less than hex hex short for hexadecimal اور پھر less than less than i تو hexadecimal is a manipulator جو i سے پہلے output سٹریم میں گھوس کے اس کو manipulate کر دیتا ہے اور کہتے ہیں جو بھی نمبر آ رہا ہے اس کو base 16 میں representation کریں base 16 میں 10 کیسے representation کیا جاتا ہے یاد ہے آپ کو well the digits are 0 to 9 so the value 10 is represented as a تو ہمیں a لکھا ہوا آئے گا that is the hex system so very simple manipulators اکٹ لکھتے تو جو بھی نمبر ہوگا integer number in base 10 it will be output in اکٹل base base 8 اگر آپ درمیان میں hex لکھتے ہیں اور کسی integer کو print out کرنے لگتے ہیں تو it will be represented in base 16 اگر آپ base بدل چکے ہیں بھیس نہیں base بدل چکے ہیں and you want to go back to decimal base تو ڈیک کر دیں d e c short for decimal and numbers will again be output or input in decimals number system these are very simple inline manipulators without any arguments so ڈیل بھی ہوگیا flush بھی ہوگیا یہ جو ہے auct hex ڈیک یہ بھی ہوگا یہ آپ کے inline manipulators ہیں ایک اور ہے white space کیلئے پسی دفعہ میں نے mention کیا تھا کہ white space has a special meaning it is a delimiter دو نمبر کے درمیان اگر white space چھوڑتے ہیں تو automatically پتا چاہتے ہیں کہ یہ پہلا والہ حصہ ایک نمبر تھا پھر کوئی جگہ چھوڑی گئی اور پھر دوسر نمبر ہے so input output operations کے اندر یہ space جو ہے acts as a delimiter اگر ہم چاہیں کہ یہ white space as a delimiter act نا کرے تو we can use a w s manipulator which will skip white space اس کو بھول جائے گا this is sometimes useful but not very often used again a manipulator جس کے اندر کوئی arguments یا parameters نہیں دیا جاتے let us look at some simple manipulators جنگی ہمیں سمجھ بھی آئے لیکن ان کے ساتھ کوئی argument be attached ہو suppose ہم وہی نمبر 1 جو ہے یا number 10 جو ہے اس کو print کرنا چاہتے ہیں لیکن ہم چاہتے ہیں کہ وہ ایک خاص width کے اندر print ہو so اب یہ وہ example جو میں پسلے لیکچر کے اندر بات کی تھی کہ یہ ایک matrix کو ہم بڑے اچھے ترتیب کے ساتھ لکنا چاہتے ہیں تو اس میں نمبر شہد matrix کے اندر values 1 بھی ہو 100 بھی ہو 1000 بھی ہو جب ہم numbers لکھتے ہیں آپ نے دیکھا ہوگا کہ normally they are right justified یعنی one لکھا جاتا ہے تو وہ پہلے column میں لکھا جاتا ہے اگر 10 لکھیں تو 1 0 اس طرح سے لکھیں گے کہ پہلے column میں 0 آئے گا اور دوسرے column میں 1 آ رہا ہوتا ہے 100 لکھیں تو 100 جہاں آخری 0 پہلے column میں آئے گا so they are right justified numbers اگر ہم کچھ نہیں کرتے تو normally یہ left justified آ رہا ہوتے ہیں یا number کو جتنی جگہ چاہیے see out اتنی جگہ میں وہ number display کر دیتا ہے اگر ہم چاہے کہ سارے numbers ایک جتنی width کے اندر display ہوں تو ہم چاہیے نمی کو ہمیں پرزیادہ کجی میں ستا ہی ہ babies ہم جاہے کہ جاتا ہے جو جس سے چاہیے نمی کو دبا ہوں ۔ تو ، جی ہم کہتے ہیں کہ جی کوئی مینائپلیٹر ایسا ڈال دیا جاں ۔ output کے اندر جو کہ ہر انٹیجر کو چاہر ۔ سپیس کے اندر پرنٹ کرے so we have a manipulator called setw short for set width سو اب ہم کہیں گے see out less than less than set w پر انثیسیز کے اندر four that says کتنی ویدت سیٹ کرنی ہے سو it's quite simple set w set with set w four پھر less than less than انٹیجر جو بھی انٹیجر ہے ijk جب یہ انٹیجر پرنٹ ہونے جائے گا تو سکرین پیس کو چارج ہنسوں کی جگے ملے گی اور اس کے اندر یہ right side کے اوپر justify ہو کے پرنٹ ہو جائے گا اب اگر اسی میکنیزم کے ساتھ آپ اوپر نیچے کو پرنٹ کرنا چاہے ہیں تو بڑے نیٹلی arranged آپ کو نمبرس ملیں گے سو it's a good manipulator set with شوٹ اور پر اس کا نام جو actual use ہے وہ set w ہے دوسرہ manipulator میں نے ابھی آپ کو اس کا اگامپل دیا تھا bank checks کا ہم چاہتے ہیں کہ جو خالی جگے ہے اس کو کسی طریقے سے fill کر دیا جائے تاکہ جو ہم output کرنا چاہتے ہیں اس کو manipulate نا کوئی کر لے وہ ہے filling of empty space so the manipulator there is the set fill set file اور اس کے اندر بھی سیمپل یہی ہے see out less than less than set fill پر انتیسیز کے اندر آپ character دیتے ہیں now character جو ہے normally single quotes کے اندر آپ character لکھ دیتے ہیں which usually is مطلب banks جو ہے وہ تو asterisk استعمال کرتی ہیں وہی جو star لکھا ہوا ہوتا so you use a single character in there but it can be any character آپ چاہیں 0 لکھتے ہیں آپ چاہیں x لکھتے ہیں you can even use an integer that has a character representation but then you would need to know as key values and things like that simple is کے ایک single quotes کے اندر character لکھ دیا جائے that becomes the fill character now اگر دیکھا جائے تو fill character کی significance تبھی کام آتی ہے جگہ اگر ہم نے set width بھی کیا ہو یعنی اب ہم چیک لکھنے جا رہے ہیں ہم کہتے ہیں کہ جی جو بھی چیک کی value ہوگی اس کو 10 دجیٹس میں لکھا جائے گا اور 10 دجیٹس میں اگر value کم ہے تو باقی جگہ پر stars لکھے جائے تو ہم کہتے ہیں set fill single quotes کے اندر star اور پھر less than less than set w 10 اور پھر less than less than جو نمبر ہم actually پرنٹ کرنا چاہتے ہیں so if you think about it manipulators بھی cascade ہو سکنے جس کو ہم نے chaining کہا تھا اور کیونکہ یہ less than less than operator جو ہے the stream insertion operator یہ overload ہے اور نہ صرف overload ہے ہر overload جو ہے اس کا it returns a reference to the see out object itself it means that in working from left to right پہلے اس کا fill character set ہوگا returning a reference to see out اس کے بعد اس کی set width ہو جائے گی 10 characters کی again returning a reference to see out سو اب ایک کسم کی ہم نے stream جو ہے اس کو دو طریقے سے manipulator کیا ہوا ہے اور اسے سمجھ لے کہ یہ دو بینٹ دی دی ہے پائپ کو اس کے بعد جو نمبر اس میں جائے گا اس کی پہلے width بھی set ہوگی پھر اس کے ساتھ fill character بھی لگے گا اور check کی اوپر جو ڈبک اندر printing ہوگی وہ 10 characters کی ہوگی in our simple example کہ اگر ہم 4000 لکھنا چاہ رہے ہیں without any decimal point of places تو وہاں پہ 6 stars لگ جائیں گے اور پھر 4 0 0 0 یعنی 4 characters اور ہیڈو جائیں گے توٹل 10 پرنٹ ہوگے so we have these 2 manipulators set width and set fill which are obviously used with see out operations چلیں اس بینٹ چیک کے اگامپل کو آگے چلاتے ہیں نمالی جو ہم چیک لکھ رہے ہوتے ہیں یا کوئی لکھے ہمیں دیتا ہے یا computer printed چیک ہمارے ہاتھ میں آتا ہے تو اس میں صرف whole number نہیں لکھا ہوتا ساتھ point 00 بھی لگا ہوگا گا پورے روپہ بھی دینے آپ کو 4000 point 00 لکھیں گے yeah most of these currencies they have decimal fractions لیکن آپ یہ کبھی نہیں دیکھیں گے چیک کے اوپر لکھا ہوا 4000 point 1234 you don't get 4 decimal places on the right hand side maximum 2 in any currency of any country of the world is there a possibility of setting the precision how do we indicate کجی number of decimal places any the places after the decimal point that should be restricted to so many digits well I've already told you the answer it is the set precision manipulator so set position set precision جو ہے وہ بھی ایک parametrize manipulator ہے وہ ہم لکھتے ہیں with the number of decimal places indicated inside the parentheses so if I say something like see out less than less than set precision to اس کے بعد جو بھی number آئے گا normally floating point number ہوتا ہے یا double precision number ہوتا ہے تو اس کی دو decimal places تاک value print ہوگی let's go back to our original favorite number pie pie ہم نے شاپ دیفائن کے ساتھ بے شاک دال دیا اوپر اور اس کے ہم نے کو چھے یا 8 decimal places تاک precise اس کی value ڈال دی ہوئی ہے program کی اندر جب ہم اس کو print کرنے جاتے ہیں تو اگر میں صرف کون see out less than less than pie تو جیتنی decimal places ہم نے دیفائن کی تھی اس کنسنٹ کے لیے وہ ساری کی ساری print ہو جائیں گی لیکن اگر ہم چاہیں کہ کوئی formatted output ہو اور پای کی جو ہے وہ صرف دو decimal places print ہو تو we can do something like see out less than less than set precision to within parentheses then less than less than pie and what this does is it will print pie accurate to 2 decimal places now i will leave that as an example as an exercise for you کہ آپ یہ مجھے بتائیں بے شاک دیسکرشن بور پی اور send me e-mail کہ جی سیٹ پرسیشن سے rounding ہوتی ہے کہ truncation ہوتی ہے دیکھیں پای کی value میں جذبانی یاد رکھتا ہوں یا استعمال کرتا ہوں وہ تو ہے 3.1415926 اور پھر آگے چلتا جاتے ہیں out to infinity تک اگر پای کو پرنٹ کیا جا ہے up to 5 decimal places کیا value آئے گی up to 4 decimal places کیا value آئے گی کیا آخری دیجٹ کیا وہ round ہوگا یا باقی ہی سے کٹ جائیں گے اور وہ exactly that you can experiment and tell me but for the moment set precision allows you to set the number of places after the decimal point that you would be printing اس کے بعد now comes the confusing part ابھی میں نے آپ کو in line manipulators بتائے جن میں کوئی argument کی ضرورت نہیں تھی ہم لکھتے تھے see out less than less than hex اور اس کے بعد جو نمبر تھا وہ hex or decimal notation کے اندر پرنٹ ہوتا تھا لیکن ایک اور manipulator بھی ہے جو parameterized ہے اور کام یہی کرتا ہے وہ ہے set base تو اگر آپ چاہیں بجائے hex اکٹ اور دیکھ لکھنے کے ان لائن آپ یہ بھی لکھ سکتے ہیں see out less than less than set base پرانثیسی اس ایٹ and that will be the same as writing OCT اکٹ as I always say it's a matter of style which one of these manipulators you start using but you can use either of them and the effect is exactly the same set base 8 means the next number output will be output in base 8 set base 16 will be next number output will be in hex or decimal set base 10 means next number output would be decimal and you can also say set base 0 which is the same as saying set base 10 any 0 is the same as decimal so set base you have will be a manipulator ہے لیکن یہ ایک redundant manipulator ہے in other words you could have done the same job by using hex OCT یا دیکھ اس کے بعد یہ جو ہمارے stream objects ہیں ان کے ساتھ میں نے بات کی تھی کہ جی flags بھی ہیں ایک فلگ کا سیٹ کیو تھا وہ تو سٹیٹ کے لیے تھا کہ جی گود ہے فیل ہے end of file ہے what are the what is the situation of the stream ایک اور سیٹ of flags ہے input output سٹیٹ کے flags یا iOS flags input output system کے flags یہ بھی ایک number ہے جو objects کا حصہ ہے for in flags کبھی اپنا اپنا مطلب ہے so we can use set IO flags and then give a number usually a long number جس کے اندر different bit values سٹ کر دی جاتی ہیں تو flags سٹ ہو جاتے ہیں اتنی ویٹ ہے یہ پرسیڈنیا left justify کرنے right justify کرنے and so on complicated but you can look it up in the book there are some tables that tell you what these flags are and then what values you can use جب کوئی بہت precision والہ کوئی بڑا complicated کسم کی formatting کرنی ہو تو ہم کئی دفعہ iOS flags کو بھی استمال کر لیتے ہیں ان کو set بھی کیا جا سکتا ہے اور reset بھی کیا جا سکتا ہے reset means go back to the default state of the stream as if your program had just started and you had not manipulated anything let's start making things even more complicated ہم نے ایک set W manipulator ابھی اس کی سکتا ہے پیرمیٹرائیز میٹ اپلیٹر which says کس ویٹ کے اندر چیزیں پرنٹ کرنی ہیں is there an alternative unfortunately again there is there is a ممبر فنکشن which is with وہ بھی ممبر فنکشن یہی آگومنٹ لیتا ہے کہ جی بتائیں کتنی ویٹ کے اندر چیزیں پرنٹ کرنی ہے یا کتنی ویٹ سے چیزیں پڑھنی ہیں so it applies both to input streams as well as output streams اس کے لیے ہم لکتے ہیں see in ڈوٹ ویٹ سیوان ساتھ کاریکٹرز کی ایک ویٹ فلی let's say format field بن جائے گی اور اس کے اوپر ہم سیوان کاریکٹرز کی انپرٹ لے سکتے ہیں ہم کہتے ہیں see out ڈوٹ ویٹ 10 تو وہی چیکوال اگسامپل یہ اب output field کی ویٹ دس کر دے گا next number جو پرنٹ ہوگا وہ دس فیس اس کے اندر پرنٹ ہوگا so set w in line manipulator اسی کا function call is see in ڈوٹ ویٹ یا see out ڈوٹ ویٹ with a single argument which is saying how many places same thing again with set precision set precision was a parameterized in line manipulator with said ڈی دیس مل پوینٹ کے بعد کتنی places پرنٹ کرنی ہے there is a member function as well in these objects so you can say see out ڈوٹ precision set precision in line ہے جو کہ ہم stream insertion operator یعنی double less than sign کے ساتھ استعمال کرتے ہیں لیکن اگر ہم function call کے طور پے کرنا چاہیں تو we say see out ڈوٹ precision parenthesis کے اندر 2 it has the same effect so we have different ways of doing things ایک چیز کا خیال رکھنا چاہئے جب ہم in line manipulator لکھتے ہیں we write something like see out double less than set w 7 double less than i اس کے بعد next line پی اگر ہم لکھتے see out less than less than j تو یہ خیال رہے کہ جو set w 7 کیا تھا وہ صرف i کو اپلائے کرتا ہے یعنی the in line manipulator اپلائے only to the very next piece of data that is being output it does not apply to subsequent outputASMI ایک دفار جوے ع Jenn کی سٹیائٹ کو بھی سٹک59 کھر سکتے ہیں دی را There are some which are less permanents some which are more permanent this is another area Pause کہ چیز Battery fahren اس کے بعد آ جاتی ہے ہماری formatting manipulation کے جہ جو چیز ہم ذہب آ چاوٹ کرنا چاہتے ہیں وہ لیف میں ہو گی ایہا ڈرز پین لگیzą گی یا justify ڈ romance Row Fourth اس کے لیے ہمارے پاس ڈیسٹ فیلڈ ایک اڈیسٹمنٹ فیلڈ ہے جسٹیفکیشن کے لیے جوکہ انہی سٹیمز کے ساتھ اسوشیٹڈ ہے اور اس کے ساتھ کچھ ویلیوز ہیں وہ بھی ڈیسٹ کے اندر ڈیفائنٹ ہیں اگر آپ یہ ہندوٹ میں بھی دیکھیں اور ڈیسٹ میں بھی دیکھیں لگتا کomplicated ہے اس کے ساتھ ہمیں ڈیسٹ کمہ ڈیسٹ فیلڈ ڈیسٹ فیلڈ دیکھنا پڑتا ہے تاکہ پتہ چل جائے یہ لیٹھ رویٹ وگرہ کس چیز کو اپلائے کر رہے ہیں اس کا ایک سنٹکس جو ہے you can see on your screen which basically is cout.satf اور پھر ڈیسٹ کے اندر ڈیسٹ کمہ ڈیسٹ فیلڈ ایجست فیلڈ یہ سیٹ ف کیا بلا ہے it is short for set flags i already mention کے flags ہمارے پاس کچھ لنبے لنبے انٹیجرز ہیں which are part of these objects and they are the bit positions represent some things so یہاں پر we can set these flags ایجست فیلڈ کے flag set ہو رہے ہیں ان کی value کیا ہے وہ یا left ہے یا right ہے یا left or right ہے which means 2 bit set ہو جائیں گی so set f is a common function جو کے اور جگوں پہ بھی استعمال ہو جاتا ہے but the syntax is simple enough it's a member function member method ہے so we say c out dot set f then within parenthesis اس کے arguments in this case left right ایجست کرنے یا center کرنے comma کس فیلڈ کے flag set کرنے which happens to be adjust field so that is ios colon colon adjust field now again going on we already had fill ہم نے set fill manipulator استعمال کیا تھا for writing out that famous check of ours we can also use the member function which is c out dot fill behavior is exactly the same we say c out dot fill parenthesis کے اندر within quotes ایک symbol single character جو ہے وہ دال دیا usually asterisk گالا جاتا ہے کئی دفعہ leading zeros بھی استعمال کیا جاتے ہیں تو zero بھی دال دیا جاتا ہے again this is mostly used whenever we using financial transaction but not necessarily کئی دفعہ ہم چاہتے ہیں کہ جی ہمارا scientific data output ہو رہا ہوتا ہے کہ جو بھی number print ہو وہ دس digits پورے میں print ہو تو وہ nice columnar output جو ہے آرہی ہے دس دس characters print ہو رہے ہیں تو اس کے اندر ہم fill character zero بھی دال سکتے ہیں کہتے ہیں کہ جی width بارہ میں print کرو zero fill character پرنٹ کرو اور پھر numbers کی output شروع ہو جاتی ہے تو جو number چھوٹا ہے اس کا pre seed کرنے کے لیے اس سے پہلے ان کے آگے zeros لگ جاتے ہیں you will have seen movie suviz میں اگر وہ دیکھیں computer print out پڑا ہوا تو بہت سارے columns of numbers نظر آ رہے ہیں وہ دیکھا ہوگا کہ تقریبا سارے نمبر ایک ہی width میں print ہو رہا ہوتے ہیں so you can manipulate the output stream by using set width and fill in this case we have called the member function so we say cout.fill and then we can use the inline parameter parameterized manipulator seeing cout less than less than set width 10 and so on so fill and set fill width and set w fill or precision and set precision so for almost every inline manipulator there happens to be a member function that we can also call with these streams don't get confused by it you should in fact take it up as an exercise کہ اگر کتاب کے اندر ایک ہی ٹیبل میں آپ کو یہ سارے manipulators لکھے ہوئے ہیں تو آپ ان کو separate کریں کنسا member function ہے اور کنسا جو ہے manipulator ہے یاد رہے کہ جو چیز member function ہے وہ آپ کو iostream.h سے مل جائے گی کیونکہ کلاس کی definition تو وہاں پہ ہے لیکن جو چیز manipulator ہے وہ آپ کو i o manip.h جو ہیدر فائل ہے وہاں سے ملے گی so you have to include i o manip.h اس کو اگر آپ کو پہاں جاکڑتے ہیں اس میں لائم جو چیز مل ایک ہوتے ہیں میں پڑے گا کہ گا کہ وہ کنسا منطRed لیکن جاتی ہے وہاں پڑھے گا اس بیس کے لئے دو ملے ہے already ہم نے دسکس کیا ہی دیکھ اکٹ ہے انھر گناہ اس میں کنناہ منطRed اللہ without any arguments then set base with arguments of zero or 10 for decimal 8 for سیوگ another one which is setf مہنے کہا تھا وہ setf ڈھو ہے بڑا جنریک سا پڈہن ہے یہ فلگز کو سیٹ کرتا ہے جانیربنا را ہے یہ کبی can اٹ سیوٹ جانیرب و جنیریک سیوٹ سیوٹ سیٹ خace ڈھو سے اس لیٹس سیوٹ کو و ہیڈس سیوٹ کے اندر یہ ڈی نہیں ہیڈس decidedی ہے آپ کو تیاری ہی تک ہے مجھے اولئے دورانتا ہے، ایک افتتِ دنیا بہت اٹھا ہے۔ ایک دورانتی جائے، مجھے بیٹی پر اہم کی جو ہوا بے ہیں۔ ہتا ہے کہ ایک ایک سیم تاکھ جائے۔ ایک سیم تاکھ مزید ہے،ingleئے مجھے میدان ہے۔ جب آپ اپنے بڑی سیم تاکھ دیوڑ کر لیں گے، آپ کو کچھ آپ میں اس کے لئے وہ ایک فلگs کو منیلیٹ کرنا زیادہ سام سمجھیں گے۔ وہاں پہ آپ یہ سیٹ اف، یہ سیٹ فلگs، سیٹ آئیو فلگs، ریسیٹ آئیو فلگs یہ سارے ممبر فنکشنز کال کر رہے ہوں گے کچھ جوہیں ان کا کام اس طرح کا ہو جائے گا کہ جی I'm not interested in these flag business میں تو سیمپل کچھ نمبرز پرنٹ کرنے ہیں کالم میں پرنٹ کرنے ہیں تو ویڈھ میں لیے کافی ہے ویڈھ کر کے آپ ان لائن مینپلیٹر ڈال دیں گے سیٹ ڈبلیو کا یہ آپ نے پرمانیٹلی فکس کرنے ہیں آپ نے see out کے لئے کوئی ویڈھ سیٹ کر لیئے اب ممبر فنکشن کال کر لیہا سیٹ گوہنٹو بھی a matter of programming style but you have to be aware کہ ایک ہی کام کرنے کے لئے کئی جگہ پہ دو or in this case for the base there are even 3 ways of doing this base کیوں کہ سائنٹفک یا computer programming کے اندر خاص طور پہ جب ہم computer science کا کام کر رہے ہوتے ہیں تو base becomes important ہم چاہتے ہیں کہ جی ہیٹسر دیسیمل میں نمر کی دیپرزینٹیشن کیا ہے اگر کوئی اور justification ہے پہلے پہنے کوشش کی کہ جی bits کے ساتھ یہ میچ کرتے ہیں تھوثا آپ کو اور idea دیتا چلوں آج کل کہ ہمارے جو computer ہیں وہ تو simple ڈبیں ہیں تیک ہے کہ closes box آگے ایک button لگاو ہے on off لکھا ہوئے unfortunately ایک چھوٹا ساتھ بٹن بھی ہے وہ reset کبھی بٹن لگاو ہے but جو بڑے والے computer ہیں mini computers, main frames تو ان کی اگرہ تصویریں بھی دیکھیں یا اگر کبھی موقع ملے ان کو دیکھنے کا even today حلکہ the previous versions جو تھے ان میں تو لازمی تھا but آج بھی کئی دفعہ آپ کو آگے rows of switches نظر آتے ہیں so there are many switches in front of a computer which as human beings we can manipulate these switches normally are directly setting values in registers inside the computer so آپ switches کے ساتھ one zero one one zero zero اس طرح اوپر نیچے کر کے switches کے ساتھ ایک register کی value set کر سکتے ہیں we can do that for starting the computer we can do that for signaling a special condition and so on but nonetheless what I'm trying to say is there are switches in front of many of the bigger computers جب ہم switches کو دیکھتے ہیں تو you see this whole row 8 switches لگے میں 10 لگے میں 16 لگے میں and you try to remember کہ جی وہ computer start کرنے کے لیے کیا value ڈالنی تھی بیچ میں I've done that پرانے زمانے کی بات ہے لیکن وہ یہ ہوتا تھا کہ یہ ایک number لکھا ہوتا تھا کاغز کے اوپر اس کو پڑھکے ہم switches کو set کر رہتے ہیں یہ اوپر یہ نیچے یہ اوپر یہ نیچے but as human beings instead of remembering it was one zero one one one zero zero one one zero et cetera پورہ پٹرن if I could remember something like 7FF think about it 7FF اور اب مجھے یہ پتا ہے کہ جی میں hex کے ساتھ deal کر رہا ہوں تو اس 7 کے لیے مجھے 4 bits in other words 4 switches set کرتے ہیں تو میں کہتا ہوں zero one one one 7 set ہوگیا F 4 bits ہیں ساری bits one ہوگی one one one one F set ہوگیا and so on so if you think about it it is shorthand thinking octave and thinking hexadecimal straight off maps to those bits it takes a little bit of practice but some نے آپ کے سوچس کے ساتھ میپنگ ہو جاتی ہے on the other hand decimal does not map to those bits میں کہتا ہوں جی decimal number 52 اس کا اکٹل کیا ہوگا you have to think اچھا جی میں کاکس بنسل لے کے calculate کروں گا کیا اکٹل representation کیا یا hexadecimal کیا ہے اور اگر میں کہدوں binary کیا ہے تو پھر ایک calculations ہوگی وہ آپ کو طریقہ بھی سکھایا گیا cs 101 کے اندر so there are lot of things that you have to calculate on the other hand if I say something like 7 abc سولہ تک کی گنتی تو ہمیں آئی جاتی ہے اور hex کے طور پر ہم چار بیٹس پر میپ کر رہے ہوتے اکٹ کے طور پر ہم ہم ایشہ تین بیٹس کے اوپر میپ کر رہے ہوتے so we can think 7 0 111 a is 10 10 10 8 plus 2 10 so you can quickly set the switches now it may not be relevant today but when you get into actually working with the big computers this even does become relevant there are many times that we have to manipulate binary data using mechanical devices and then thinking in octal thinking in hexadecimal becomes a useful ability to have تھوڑی سی جیسٹیفیکیشن ہے why اس کے اندر لنگوج کے اندر پہنچ کے you have all these many options کیسے بیس سیٹ کرنا ہے so سیٹ بیس کے ساتھ بھی کر لیا oct, hex, deck کے ساتھ بھی کر لیا setf کے ساتھ بھی کر لیا so many ways of doing the same thing but there was a reason for this important and programmers he languages لکھ رہا ہوتی ہیں computer sciences لکھ رہا ہوتی ہیں so they like thinking in octal in hexadecimal تو اس کے لیے وہ facility وہ لنگوج کے اندر بیلڈن کر دیتے lots of stuff اب ہم نے جہاں پہ بیس کی اتنی بات کر لی تو کہیں پہ یہ بھی طریقہ ہونا چاہئے کہ computer میں یہ بھی بتا دے بھی کس بیس کے اندر یہ نمبر میں نے output کیا ہے remember اگر آپ کے پاس نمبر لکھاو آتا ہے نمبر لکھاو but it is written 7 ABC there is no option it has to be hexadecimal 7FF it's hexadecimal but if it is 77 is it decimal is it octal is it hexadecimal because 77 happens to be a valid number with different values of course in all of the different bases so there is a built in facility which is show base show base be flag ہے show base for the output stream اور وہ پھر یہ نمبر دسپلیز کو تھوڑا میں نے پلیٹ کر کے different طریقے سے دسپلے کرے گا اگر آپ نے show base on کیا ہوا ہے syntax آپ دیکھلیں handouts میں بھی دیا ہوا ہے what happens is decimal numbers are printed simply as numbers octal جب آپ پرنت کر رہے ہیں یعنی میں نے پلیٹر آپ نے oct لکھ دیا ہے یا set base کر دیا ہے تو octal کے لئے ایک preceding 0 لکھ دیا جاتا ہے 7 will print as 07 and that immediately indicates to you or to us as human beings کجی computer is outputting an octal value اور اگر ہیکسر دسپل ہے اس کے لئے 0x لکھ دیا جاتا ہے as a prefix so the number 77 in decimal would print as 77 the number 77 in octal اگر میں اس کو 77 نہیں کا because 77 octal is some other value اس کے لئے 7 is a 56 plus 7 is 63 so 77 octal جو ہے it will be output as 077 and then 77 in hexadecimal value نکالیں جلدی سے 167s are 128 plus 7 135 it will be output as 0x77 now as human beings when we read the output we know kiss base میں output لکھی گئی ہے so when we manipulate there are lots of things we can set the base but then we would also want to know کس بیس کے اندر کام ہو رہا ہے we can use that use show base for that purpose now there is another manipulating numbers again ایک اورہاں منیپلیٹر ہیں وہ بھی ہمارے لیے بڑے اہمپورٹنٹ ہیں دیکھیں when numbers start getting big I mean 10,000,000 10,000,000 لاکھ ٹھیک ہے one 5 zeros ایک ملینگر لکھنا ہو تو ایک 6 zeros what about a 100 million18 zeros and so on these numbers are getting big are computer کے لیے تو کبھی مسلانی ہیں they can use big numbers what happens to 10 to the power 20 how do we write a number or display a number which is 20 digits long so we can use scientific notation آپ نے کالکلیٹرز بھی استعمال کیے میں اگر آپ کے پاس سینٹفک کالکلیٹر ہے تو اس پر آپ نے دیکھا ہوگا e or exp لکھا ہوئے so you can do something like 1 e 9 that means 10 to the power 9 کی value یہاں پہ وہی چیز کرنے کے لیے we can use something like ios colon colon scientific so the idea is simple scientific calculator scientific notation اگر آپ فلاگ سیٹ کر لیتے ہیں ios colon colon scientific فلوٹنگ پوٹنگ نمبر they will be displayed in scientific notation which is the whole number part single digit full stop few precision few decimal values then e for exponential 10 to the power will multiply this or plus or minus because it could be a very small number and it has the same problems and then 0 9 لکھا ہوئے which means 10 to the power 9 scientific notation which you see in books as well very common so you can set the output state of a stream to use scientific notation for numbers اسی کو آپ وپس لانا چاہیں تو دوسی نوٹیشن کو ہم fixed notation کہتے ہیں fixed point short کا مطلب پورا word you have a fixed point notation ہے but اس کو ios colon colon fixed کر دیتے ہیں fixed کرتے ہیں تو ہم کہتے ہیں not scientific یہ نہیں اب نمبر as an ordinary number لکھو جتی بھی جیس چاہیں ہوں اس کے لیے fixed میں جب آتے ہیں تو set precision بھی کام کر رہا ہے set width بھی کام کر رہا ہے and so on ایک اور اسی سرسلے میں manipulator ہے which is ios colon colon upper case when we use that manipulator what happens is کہ scientific notation کے اندر جو بھی e لکھا جا رہا ہے یہ upper case میں capital E آئے گا اگر آپ hexadecimal numbers input output کر رہے ہیں تو وہ capitals میں نظر آئیں گے on output so f a b c d e f جو hex کے characters ہیں numbers تو numbers ہیں وہ characters جو ہیں وہ upper case میں آپ کو نظر آئیں گے these are obviously formatting issues but sometimes that is what is required when you have a very knit picking user a very demanding user and you know as programmers you go out and you write programs for other people جو demanding user ہوگا وہ تو یہی کہے گا جنار اس دبے کے اندر نمبر آپ نے لکھنا ہے اس جگہ سے شروع ہونا چاہئے اس جگہ ختم ہونا چاہئے اتنی اس کی decimal places ہونے چاہئے اگر نمبر چھوٹا تو اس کے آگے stars ڈالنے and so on you have to satisfy that so you have to know these manipulators and be able to format things nicely now you have enough knowledge and expertise to start doing some really fancy output as a challenge do something آپ نے matrix استعمال کی ہے take a 3 by 3 matrix which means a two-dimensional array of integers of size 3 and 3 3 rows 3 columns and the exercise for you is to be able to show that matrix on the screen in a neatly formatted manner now ہمارے پاس ابھی تا کوئی ایسا کریکٹر نہیں ہے کہ تین روز کے لیے بڑا سا square برکٹ لگا دے تو ہم تھوڑی سی approximations کر لیتے ہیں ہم کیا کرتے ہیں ہم جو pipe symbol ہے vertical bar اس کو استعمال کر لیتے ہیں ہم Rather کیا کرتے ہیں ہمچھی؟ ہمچھی؟ Trail مرے؟ بیہن بیہن ہمچھی؟ ہمچھی؟ ہمچھی؟ ہمچھی؟ پر حیرت پر حیرت پھر حیرت پر حیرت ہے آپ نے ہمچھاتے ہیں اےnon ہمچھی؟ کیا کہ آپ نے پر حیرت پر حیرت بیہن آپ کے مجیہ کی تنگ lavender ہمچھتے ہیں اس پر حیرت اس کی ٹیبل کا پرنٹ اوٹ کریں اس میں آپ دیکھیں گے کہ جی وہ اس کی ویلیو 128 سے اوپر جو تھا وہاں پہ گرفکل سیمبل شروع ہو گئے تھے you can use those you can actually use those values and try to print graphical symbols جسے آپ بڑی نائس میٹرکس بنا سکتے ہیں instead of this pipe symbol which is a very crude approximation but that has more to do with اس کی اس وقت چیلن جو ہے وہ ہے set width اور precision کو اسٹمال کرتے ہوئے آپ میٹرکس کو nicely formatted screen کو پر پر پرزنٹ کریں well by now you know me things aren't always as simple as i make them out to be آپ کو ایک چیلنج دیا ہے بڑا سیمپل سی چیز ہے کہ جی وہ pipe symbol یعنی vertical bar اور integers کے ساتھ آپ ایک nice formatted matrix پرنٹ کریں جس کے اندر integer values ہوں next challenge اب وہ vertical bars نہیں اسٹمال کرنے وہ graphical symbols اسٹمال کرنے ہیں آپ یہ ضرور پوچھیں گے کہ جی وہ graphical symbol میں output کیسے کروں how do i indicate یہ کریکٹر کیسے آئے گا because not this keyboard پہ تو وہ کریکٹرز ہیں نہیں ایک آپ کو تھوڑا سا trick بتاتا چلوں اس کی table کا جو print out تھا اس کے اندر یہ graphical symbols کی آپ کو numeric values دو مل گئی اب یہ try کریں کوئی numeric value وہاں سے اٹھائیں let's suppose it is 135 جو ہے وہ کسی symbol کی value ہے all کی دبائیں جو ایک آپ کے کی بوٹ کی اوپر دونوں طرف ایک چھوٹی چھوٹی کی لگی ہوتی اس پے a l t لکھا ہوئے آج تا کبھی اسٹمال نہیں کی اب اسٹمال کرتے ہیں all کی دبا کے جو right side پے numeric کی پیڈ ہے اس میں دیکھ لیں new lock on ہونا چاہیے number lock on ہونا چاہیے light جلری ہوگی اس کی وہاں سے وہ 135 number تائپ کریں so you say all 135 all کو جب چھوڑیں گے تو سکرین کے اوپر ایک character نظر آئے گا that should be the character جو کے آپ کے اس کی table میں پرنٹ ہوا تھا now that was the trick I've given you using the all کی you can actually generate those characters اب آپ table میں جائیں دیکھیں کہ جناب یہ ایک matrix جو ہم نومل کتاب میں لکھتے ہیں وہ دو square brackets کے اندر number لکھے ہوتے ہیں square bracket بنانا کیسے جب وہ square bracket 3 یا 4 یا 5 لائنے اون چاہے so you should not be using any of the characters on the keyboard but you should be using the extended graphical characters which are available in your اس کی table use the all کی so اگر آپ نے ڈالنا ہے کہیں پہ آپ single quotes کے اندر یہ character ڈالیں گے a single quote آپ نے تیپ کر لی آپ نے program کے اندر all ڈبایا graphical character کی numeric value ڈالی پھر single quote ڈالا وہاں پہ وہ value آجائے گی which is normally the چھوٹا انگل آجائے گا پھر vertical line آئے گی keep referring to that but here's your second challenge now you want to draw that matrix on the screen which is not only nicely formatted but also uses the correct graphical notation which is used in mathematics anyway what we have covered in the last two lectures is input output streams and then their manipulation in c++ major advantage of using streams as opposed to the standard c کا input output system کہ کہیں پہ ہم نے یہ نہیں ہمیں بتانا پڑتا نہ input stream کو نہ output stream کو کہ جناب ہم integer output کر رہے ہیں یا floating point number آ رہے یا character string آ رہی ہے وہ overloading کے through یہ کام ہمارے لیے ہو جاتا ہے ہمارے پاس facility ضرور ہے کہ we can always overload these operators we can overload them so that they can handle objects of our own creation ہم نے اپنی کوئی کلاس کے objects instantiate کیے ہوئے ہیں ان کے ساتھ بھی ہم ان کو استعمال کر سکتے ہیں c کے اندر جب بھی ہم input output operations کرتے تھے تو اس function call کو which was print f یا scan f اس کے اندر میں indicate کرنا پڑتا تھا کہ جی decimal number پڑا جا رہے کیا پڑا جا رہے کیسے پڑنا ہے یا کیسے اس کو لکھنا ہے so i o streams جہاں c++ کی they are much more convenient to use and because they are classes and objects they are extendable extendable by us as ordinary programmers you need not be the compiler writer as an ordinary programmer you can extend it you can add more operators you can even add manipulators user defined manipulators بھی ہم دال سکتے ہیں انی کلاس کے اندر ان کو استعمال کر سکتے ہیں ایک manipulator دے دیں بنائیں اپنا ابھی آپ کو نہیں آتا کیسے بناتے ہیں maybe we get into it maybe we don't it's a little bit of a complex topic but you could do a manipulator which could set the width set the precision and do a right justification all in one command nonetheless you now have the rudiments of formatting in your command اس کے ساتھ ہوتا کیا ہے کہ جی اب آپ کی جو output آری ہے programs کے ساتھ وہ زرا سی زیادہ neat and clean ہونے لگ پڑے کہ it'll look more professional یہ جو formatting آپ کو ہم نے last two lectures میں کبر کی ہے اس کو please practice کریں and make sure that you develop enough expertise so that you don't have to always look at the reference manual and always at the book make it part of your vocabulary so you can easily write programs without having to refer not that I'm suggesting کہ آپ اس کو memorize totally کر لیں but کچھ چیزیں ایسی ہوتی ہیں جن کو یاد رکھنا کنمینین ٹرائت ہے when we're doing a lot of programming till next time کدھا ہفز