JavaRush /جاوا بلاگ /Random-SD /ليڪچرز لاءِ اضافي مواد CS50: هفتو 1 (ليڪچر 3 ۽ 4)
Masha
سطح

ليڪچرز لاءِ اضافي مواد CS50: هفتو 1 (ليڪچر 3 ۽ 4)

گروپ ۾ شايع ٿيل
cs50 روسي اضافي مواد ۾ هفتي 1 ڪم

پهرين هفتي جا مقصد

  • پاڻ کي واقف ڪريو بنيادي لينڪس حڪمن سان
  • بنيادي سي نحو سکو ۽ ڪجھ مسئلا حل ڪريو
  • وڌيڪ واضح طور تي سوچڻ شروع ڪريو =)
IDE CS50
ڪم مڪمل ڪرڻ لاءِ، CS50 پيش ڪري ٿو هڪ IDE (Integrated Development Environment) ڪلائوڊ ۾. ان کي استعمال ڪرڻ لاءِ، edX پليٽ فارم تي هڪ کاتو ٺاهيو ۽ اصل ڪورس لاءِ رجسٽر ٿيو . ان کان پوء:
1. cs50.io ڏانھن وڃو، لسٽ مان edX چونڊيو، پنھنجو لاگ ان ۽ پاسورڊ داخل ڪريو، جمع ڪريو تي ڪلڪ ڪريو 2. پنھنجي edX اڪائونٽ جي معلومات داخل ڪريو، ID.CS50.NET ڏانھن واپس وڃو تي ڪلڪ ڪريو . cs50.io 3. اسان انتظار ڪري رهيا آهيون: توهان جي مجازي جاء ٺاهي پئي وڃي. ورچوئل اسپيس cs50 4. ٿي ويو! cs50 ide
ڪمانڊ لائن ۽ لانچ ڪرڻ CS50 IDE
CS50 IDE ونڊو جي تري ۾، ٽرمينل ٽيب ۾، اتي ھڪڙو ٽرمينل ونڊو يا ڪمانڊ لائن پينل آھي. توھان ھتي اسٽرنگ ڪمانڊ داخل ڪري سگھو ٿا: توھان ساڳيو ڪم ڪري سگھو ٿا جيئن ونڊو انٽرفيس سان، مثال طور، ايپليڪيشن لانچ ڪريو، فائلون ڊليٽ ڪريو ۽ ٺاھيو، سافٽ ويئر انسٽال ڪريو. جيڪڏهن توهان ڪمانڊ لائن سان ڪڏهن به ڪم نه ڪيو آهي، اهو طريقو شايد مشڪل لڳي ٿو: توهان کي حڪم ياد رکڻو پوندو ۽ آئڪن ۽ بٽڻ تي ڪلڪ ڪرڻ بدران انهن کي ٽائپ ڪرڻو پوندو. ڪجهه حد تائين اهو سچ آهي، پوء ونڊو انٽرفيس ايجاد ڪيو ويو. بهرحال، ڪمانڊ لائن سڀني آپريٽنگ سسٽم ۾ موجود آهي ۽ منتظمين ان کي پسند ڪن ٿا. ۽ سڀ ڪجهه ڇو ته ڪڏهن ڪڏهن توهان ان کان سواء رهي نٿا سگهو. ٽرمينل ۾ IDE ونڊو ۾، توهان هڪ پراسرار لائين ڏسندا: username: ~/workspace $ جي جاءِ تي "username" اتي هڪ خودڪار طور تي پيدا ٿيل نالو هوندو (توهان جي رجسٽريشن ڊيٽا جي بنياد تي). ٽرمينل ونڊو تي ڪلڪ ڪريو، ٽائپ ڪريو: update50 پريس ڪريو Enter. حڪم سسٽم کي تازه ڪاري ڪرڻ لاء پڇي ٿو. توھان ڏسندا ته لائينون ظاھر ٿيندي ٽرمينل ۾ انسٽاليشن جي عمل کي بيان ڪندي. CS50 IDE کي بند نه ڪريو جيستائين توھان ڏسو اپڊيٽ مڪمل! . ان کان پوء، ڊفالٽ لائن ٻيهر ظاهر ٿيندي، جيڪو توهان جي نالي سان.
IDE ۾ ڪم
اچو ته هڪ فولڊر ٺاهيو جتي توهان جون فائلون محفوظ ڪيون وينديون. CS50 IDE جي مٿين کاٻي ڪنڊ ۾ ~/workspace (توهان جي روٽ ڊاريڪٽري) تي صحيح ڪلڪ ڪريو ، نئون فولڊر چونڊيو . فولڊر جو نالو تبديل ڪريو pset1 (جيڪڏهن توهان نالو غلط لکيو آهي، توهان جي فولڊر تي صحيح ڪلڪ ڪريو ۽ چونڊيو Rename ). پوءِ pset1 فولڊر تي صحيح ڪلڪ ڪريو ۽ نئون فائل چونڊيو . Untilted فائل ظاهر ٿئي ٿي، اچو ته ان جو نالو تبديل ڪريون hello.txt . hello.txt تي ڊبل ڪلڪ ڪريو. CS50 IDE ۾ توهان هڪ نئين ٽيب ۽ ساڄي پاسي هڪ فيلڊ ڏسندا جتي توهان ٽائپ ڪري سگهو ٿا. جيڪڏهن توهان اهو ڪيو آهي، ستاري (*) علامت تي ڌيان ڏيو جيڪو ٽيب تي فائل جي نالي کان اڳ ظاهر ٿئي ٿو - هڪ اشارو جيڪو فائل ۾ تبديليون ڪيون ويون آهن، پر محفوظ نه آهن. فائل محفوظ ڪريو *فائل> محفوظ ڪريو يا ڪمانڊ + S استعمال ڪندي (ايپل مشينن تي) يا Ctrl + S (PC تي). تارو غائب ٿيڻ گهرجي. اچو ته چيڪ ڪريو ته فائل ڪٿي آهي جتي اهو هجڻ گهرجي. اچو ته هي ڪمانڊ لائن استعمال ڪريون، اهو وقت آهي ان کي استعمال ڪرڻ جو :). جيئن اڳ، ٽرمينل ۾ فعال لائن هن طرح نظر اچي ٿي: ڪم اسپيس - موجوده ڪم ڪندڙ ڊاريڪٽري (جيڪو ڪم جي ماحول ۾ کليل آهي). tilde (~) ظاھر ڪري ٿو روٽ ڊاريڪٽري (ڪم جي جڳھ ان ۾ واقع آھي). نوٽ ڪريو ته ٽرمينل ۾ ڪم اسپيس ساڳي آهي ~/workspace icon جي مٿي کاٻي ڪنڊ ۾ CS50 IDE. اچو ته مشق ڪريون. ٽرمينل ۾ ڪٿي به ڪلڪ ڪريو ۽ ڪمانڊ لائن ۾ ٽائپ ڪريو ۽ Enter کي دٻايو. اهي ٻه ننڍا اکر - "فهرست" لاءِ مختصر - موجوده ڪم اسپيس ڊاريڪٽري اندر واقع فائلن ۽ فولڊرن جي هڪ فهرست آڻيندو. ٻين شين مان، توهان ڏسندا pset1 توهان ٺاهيو ! ھاڻي اچو ته ڪمانڊ استعمال ڪندي پنھنجو فولڊر کوليون. اسان ٽائيپ ڪريون ٿا يا وڌيڪ لفظي طور: سي ڊي (ڊائريڪٽري تبديل ڪريو) ڪمانڊ فعال ڊاريڪٽري کي تبديل ڪري ٿو، اسان جي صورت ۾ فعال لڪير ۾ تبديل ٿي وئي آهي اها تصديق ڪري ٿي ته توهان هاڻي ڊاريڪٽري ۾ آهيو (لائن جو مطلب آهي "I am pset1 اندر ڪم اسپيس ۾. فولڊر، جيڪو روٽ فولڊر ۾ آهي، جنهن کي ~" مان ظاهر ڪيو ويو آهي). هاڻي ٽائيپ ڪريو توهان فائل ڏسي سگهو ٿا hello.txt ! جيڪڏهن توهان ٽرمينل ۾ نالي تي ڪلڪ ڪندا، ڪجھ به نه ٿيندو: اهو متن آهي، ۽ اهو هڪ فعال نه ٿو ڏئي. لنڪ، پر اها تصديق ڪري ٿي ته hello.txt اهو آهي جتي اهو هجڻ گهرجي. ٽائيپ ڪريو جيڪڏهن توهان صرف سي ڊي ڪمانڊ پاڻ لکندا آهيو، پر هڪ دليل نه ڏيو (يعني فولڊر جو نالو ان کي وڃڻ گهرجي)، اهو توهان کي واپس ڏيندو. ڊفالٽ روٽ ڊاريڪٽري ڏانهن، تنهنڪري توهان هيٺ ڏنل تصوير کي فعال لائن تي ڏسندا: فولڊر ڏانهن واپس وڃڻ لاء pset1، ڊائل ڪريو cs50 ide فولڊر جو نالو تبديل ڪريوcs50 ideليڪچرز لاءِ اضافي مواد CS50: هفتو 1 (ليڪچر 3 ۽ 4) - 1username:~/workspace $lscd pset1cd ~/workspace/pset1~/pset1username:~/workspace/pset1 $~/workspace/pset1lscdusername:~ $cd workspace ۽ Enter کي دٻايو. پوء cd pset1 ٻيهر داخل ڪريو. توھان انھن ٻن حڪمن کي ھڪڙي، وڌيڪ مستند ھڪڙي سان تبديل ڪري سگھو ٿا: cd workspace/pset1
هيلو، سي!
آخرڪار، هي لمحو آيو آهي! اچو ته پروگرامنگ شروع ڪريون. IDE ۾ اسان جي pset1 فولڊر جي اندر، hello.c نالي هڪ فائل ٺاهيو (وڌيڪ گهربل آهي)، ان کي نئين ٽيب ۾ کوليو (اسان سمجهون ٿا ته توهان کي ياد آهي ته اهو ڪيئن ڪجي پوئين پيراگراف مان). اهم! اکر ننڍا هجن، لينڪس ڪيس حساس آهي. Hello.c ۽ hello.c مختلف فائلون آهن. CS50 IDE ونڊو جي ساڄي پاسي، ٽائپ ڪريو بلڪل ساڳيو متن جيئن توھان ھيٺ ڏسو. ها، توهان ان کي نقل ڪري سگهو ٿا، پر ان کي ٽائيپ ڪرڻ وڌيڪ مفيد آهي. اکر مختلف رنگ آهن ڇو ته CS50 IDE ۾ نحو نمايان آهي. اهو بهتر پڙهڻ جي قابليت لاءِ رنگ سان متن جي بلاڪ کي نمايان ڪري ٿو. رنگ پاڻ فائل ۾ محفوظ نه آهن؛ اهي صرف IDE ۾ نظر اچن ٿا. جيڪڏھن اھي اتي آھن، پوء IDE سمجھي ٿو سي، ۽ توھان اشارو ڪيو آھي ته اھو فائل جي واڌ ۾ سي آھي (*.c). جيڪڏهن توهان ساڳئي فائل کي سڏيو آهي hello.txt، متن هڪ رنگ هوندو. پڪ ڪريو ته توھان سڀ ڪجھ ٽائيپ ڪيو آھي بلڪل جيئن مثال ۾، ٻي صورت ۾ توھان پڪڙيندؤ پھريون بگ =). ٻيهر اسان توهان جو ڌيان لوئر ڪيز ۽ اپر ڪيس اکر جي وچ ۾ فرق طرف ڏينداسين. \n ڪردار ڪرسر کي ايندڙ لڪير ڏانهن منتقل ڪري ٿو، ۽ اڳيان داخل ٿيل متن پروگرام جي آئوٽ پٽ سان گڏ گڏ نه رهندو. ها، ۽ نه وساريو سيميڪولن (؛). هي پروگرام بيانن لاء هڪ اهم ڌار ڪندڙ آهي؛ سي انهن کان سواء ڪم ڪرڻ نه چاهيندو. ڪلڪ ڪريو فائل > محفوظ ڪريو (يا حڪم- يا Ctrl-s). نوٽ ڪريو ته فائل جي نالي جي سامهون ستاري غائب ٿي وئي آهي؟ جيڪڏهن ها، ته پوءِ تبديليون محفوظ ڪيون ويون آهن. توھان جي ڪوڊ ھيٺ ڏنل ٽرمينل ونڊو ۾ ڪٿي به ڪلڪ ڪريو ۽ پڪ ڪريو ته توھان اندر آھيو ~/workspace/pset1 (جيڪڏھن توھان نه آھيو، سي ڊي ڪلڪ ڪريو ۽ Enter کي دٻايو، پوء cd workspace/pset1 ۽ ٻيهر داخل ڪريو). توھان جي فعال لائن ھن طرح ھجڻ گھرجي: اچو ته پڪ ڪريون ته hello.c فائل بلڪل آھي جتي اھو ھجڻ گھرجي. ٽائيپ ڪريو ۽ پريس ڪريو Enter. ڇا توهان hello.c پڻ ڏسي رهيا آهيو؟ جيڪڏهن نه، ڪجهه قدم واپس وڃو ۽ فائل کي ٻيهر گهربل ڊاريڪٽري ۾ ٺاهيو. ... ھاڻي اھو سنگين لمحو اچي ٿو: اسان پنھنجي آڱرين کي پار ڪريون ٿا ۽... اسين ٽائيپ ڪريون ٿا: ۽ اسان جي آڱرين کي پار ڪري، اسان Enter کي دٻايو. بلڪل هيلو، نه هيلو.c. جيڪڏهن توهان هن عمل کان پوءِ توهان جي سامهون سڀ ڪجهه ڏسندا ته اها ٻي فعال لائن آهي، جيڪا بلڪل اڳئين وانگر لڳي ٿي، پوءِ سڀ ڪجهه ڪم ڪري رهيو آهي! توھان جو سورس ڪوڊ ترجمو ڪيو ويو آھي مشين يا اعتراض جي ڪوڊ ۾ (يعني 0s ۽ 1s جي ترتيب ۾). ھاڻي ھي ڪوڊ جاري ڪري سگھجي ٿو (يعني پروگرام هلائي سگھجي ٿو!). هن کي ڪرڻ لاء، ٽائيپ ڪريو: ڪمانڊ لائن ۾، پريس ڪريو Enter. جيڪڏهن توهان "" جي وچ ۾ بند ٿيل متن کي تبديل نه ڪيو، توهان هيٺ ڏسندا: جيڪڏهن توهان هاڻي ڪمانڊ ٽائيپ ڪريو ۽ Enter کي دٻايو، توهان کي هڪ نئين هيلو فائل ڏسڻ ۾ ايندي، hello.c ۽ hello.txt سان گڏ. پهرين هيلو جي نالي کان پوءِ هڪ ستارو هجڻ گهرجي، جيڪو اشارو ڏئي ٿو ته هي هڪ قابل عمل فائل آهي، اهو آهي، جنهن سان توهان پروگرام شروع ڪيو. #include int main(void) { printf("hello, world\n"); } username:~/workspace/pset1 $lsmake hello./hellohello, worldls
بگ؟
جيڪڏهن حڪم ڏيڻ کان پوء توهان غلطيون ڏسندا، اهو وقت آهي پهرين ڊيبنگ لاء! لکت وانگر "متوقع اعلان" جو مطلب آهي ته توهان هڪ ٽائپو ڪيو آهي. مٿي ڏنل ڪوڊ کي ٻيهر چيڪ ڪريو، صرف سڀني تفصيلن بابت تمام محتاط رهو. ڌيان! غلطي جي وضاحت انگريزيء ۾ مهيا ڪئي وئي آهي. جيڪڏهن اهو واضح ناهي، سرچ انجڻ استعمال ڪريو، گوگل ترجمو، يا تبصرن ۾ سوال پڇو. هڪ دفعو توهان غلطين کي درست ڪيو، پڪ ڪريو ته توهان جو ڪوڊ فائل استعمال ڪندي محفوظ ڪريو > محفوظ ڪريو (يا حڪم- يا Ctrl-s)، ٽرمينل ونڊو جي اندر تي ٻيهر ڪلڪ ڪريو ۽ ٽائپ ڪريو make hello (بس پڪ ڪريو ته توهان ~/workspace/pset1 ۾ آهيو. پهريون ). جيڪڏهن وڌيڪ غلطيون نه هجن ته ڪمانڊ ٽائيپ ڪندي پروگرام کي هلايو. ./hello نظريي ۾، توهان کي ڏسڻ گهرجي ته خزاني وارو جملو پرنٽف آپريٽر جي اقتباس جي نشانين ۾ بند ٿيل آهي، جيڪو حڪم ڏئي ٿو "پرنٽ". جيڪڏهن ٽرمينل ونڊو تمام ننڍي لڳي، ته ڪلڪ ڪريو گول پلس (+) آئڪن اڳيان hello.c.
درستي جي چڪاس
چيڪ50 ايپليڪيشن CS50 IDE ۾ ٺهيل آهي. اهو ڪمانڊ لائن مان ڪم ڪري ٿو ۽ ڪجهه پروگرامن کي چيڪ ڪري ٿو غلطين لاءِ. جيڪڏهن توهان اڃا تائين اتي نه آهيو، ٽرمينل ۾ ڪمانڊ هلائڻ سان ~/workspace/pset1 ڊاريڪٽري ڏانهن وڃو: cd ~/workspace/pset1 هاڻي هلو ls توهان کي گهٽ ۾ گهٽ هڪ hello.c فائل نظر ايندي. پڪ ڪريو ته فائل جو نالو هن طرح نظر اچي ٿو ۽ نه، چئو، هيلو. سي يا هيلو. سي. توھان ڪمانڊ mv source destination ماخذ کي هلائڻ سان ھڪڙي فائل جو نالو تبديل ڪري سگھو ٿا - موجوده فائل جو نالو، منزل - نئين فائل جو نالو. mv (انگريزيءَ جي منتقلي مان) ھڪڙو نالو مٽائڻ جي افاديت آھي. جيڪڏھن توھان غلطيءَ سان فائل جو نالو رکيو آھي Hello.c، لائن ٽائپ ڪريو: mv Hello.c hello.c پڪ ڪرڻ کان پوءِ ته فائل کي بلڪل hello.c سڏيو وڃي ٿو، اچو ته چيڪ 50 چيڪ پروگرام کي ڪال ڪريون. مهرباني ڪري نوٽ ڪريو ته 2015.fall.pset1.hello ”هيلو ورلڊ“ مسئلي لاءِ هڪ منفرد سڃاڻپ ڪندڙ آهي. check50 2015.fall.pset1.hello hello.c جيڪڏهن پروگرام صحيح طور تي ڪم ڪيو ويو آهي، توهان ڏسندا: ليڪچرز لاءِ اضافي مواد CS50: هفتو 1 (ليڪچر 3 ۽ 4) - 2 گرين سمائلي منهن جو مطلب آهي امتحان پاس ڪيو. توھان پڻ URL ڏسي سگھو ٿا چيڪ 50 آئوٽ جي ھيٺان، پر اھو صرف ملازمن لاء آھي (جڏھن، جيڪڏھن توھان چاھيو ٿا، ان کي چيڪ ڪريو!). check50 3 ٽيسٽ هلائي ٿو: ڇا hello.c فائل موجود آهي، ڇا hello.c مرتب ڪري ٿي، ۽ ڇا ايپليڪيشن هڪ ليڪ ٺاهي ٿي جيڪا چوي ٿي "هيلو، ورلڊ\n". جيڪڏھن توھان ڏسو اداس لال جذباتي، ان جو مطلب آھي توھان وٽ ھڪڙو بگ آھي. :( hello.c exists \ expected hello.c to exist :| hello.c compiles \ can't check until a frown turns upside down :| prints "hello, world\n" \ can't check until a frown turns upside down هتي چيڪ 50 کي hello.c نه مليو، ۽ ڳاڙهي سمائلي ظاهر ڪري ٿي ته توهان يا ته نالي ۾ غلطي ڪئي آهي يا فائل غلط جاءِ تي اپلوڊ ڪئي آهي. پيلو ”غير جانبدار“ جذباتي معنيٰ آهي ته ٽيسٽون نه ٿيون هلن. ۽ اهي ڪٿي شروع ڪري سگهن ٿا جيڪڏهن پروگرام کي فائل نه ملي جيڪا چيڪ ڪرڻ جي ضرورت آهي؟ ھتي ھڪڙو ٻيو اختيار آھي جيڪو پاپ اپ ٿيندو جيڪڏھن توھان متن تبديل ڪيو ته printf() فنڪشن کي ٻاھر ڪڍڻ گھرجي: :) hello.c exists :) hello.c compiles :( prints "hello, world\n" \ expected output, but not "hello, world" چيڪ 50 رپورٽ ڪري ٿو ته لائين hello، world\n جي توقع ڪئي وئي ھئي، پر ڪجھ ٻيو ظاهر ٿيو. check50 ڪورس مڪمل ڪرڻ لاءِ پوائنٽس جي ڳڻپ نٿو ڪري، پر چيڪ ڪري ٿو ته ڇا تفويض جو نتيجو ان کان مختلف آهي جنهن جي توقع ڪئي وئي هئي. ۽ اهو توهان کي انهي جي تصديق ڪرڻ جي اجازت ڏئي ٿو انهي جي تصديق ڪرڻ کان پهريان ڪورس جي اندر ڪم جي صحيحيت (اسين توهان کي ٻڌائينداسين ته اهو ڪيئن ڪجي).
سي بنياديات: اسڪريچ سان مقابلو
هيلو دنيا سکريچ ۽ سي ۾:
ليڪچرز لاءِ اضافي مواد CS50: هفتو 1 (ليڪچر 3 ۽ 4) - 3 #include int main(void) { printf("hello, world\n"); }
  • ليڪچرز لاءِ اضافي مواد CS50: هفتو 1 (ليڪچر 3 ۽ 4) - 4هڪ فنڪشن جي نمائندگي ڪري ٿو جيڪو اسپرائٽ جي "لفظن" کي اسڪراچ ۾ مزاحيه بلبل ۾ پرنٽ ڪري ٿو، C ۾ هڪ printf فنڪشن آهي جيڪو ساڳيو ڪم ڪري ٿو، صرف ڪارٽون کان سواء.
  • مکيه - انگريزي ۾ - "main". پروگرام ۾ داخلا پوائنٽ. ساڳي طرح ليڪچرز لاءِ اضافي مواد CS50: هفتو 1 (ليڪچر 3 ۽ 4) - 5.
لاتعداد چڪر
ليڪچرز لاءِ اضافي مواد CS50: هفتو 1 (ليڪچر 3 ۽ 4) - 6 C ۾ ترجمو ڪيو ويو: while (true) { printf("hello, world\n"); } جڏهن ته (سچو) ساڳيو ڪم ڪندو آهي: لوپ پنهنجو ڪم جاري رکي ٿو جڏهن ته (جڏهن) قدر سچو آهي (بولين جي اظهار "سچو" يا "هڪ"). هي لوپ لامحدود طور تي هلندو.
هڪ لوپ جيڪو ڏيکاري ٿو هڪ جملي کي اسڪرين تي 10 ڀيرا
اسڪريچ ليڪچرز لاءِ اضافي مواد CS50: هفتو 1 (ليڪچر 3 ۽ 4) - 7 سي for (int i = 0; i < 10; i++) { printf("hello, world!\n"); } i هڪ انسداد متغير آهي؛ ان جي قيمت انڪريمينٽ آپريٽر i++ طرفان تبديل ڪئي وئي آهي، ان کي لوپ جي هر ريٽيشن تي 1 وڌائي ٿو. شروعات ۾، مون کي اسائنمينٽ آپريٽر = استعمال ڪندي قدر 0 تفويض ڪيو ويو آهي. ڌيان! جيئن جاوا ۾، سي برابري ۾ ==، تفويض آپريٽر = طرفان ظاهر ڪيو ويو آهي. اهو آهي، a = 5 جو مطلب آهي ته متغير a کي 5 جي قيمت ڏني وئي آهي، ۽ (a = = 5) جو مطلب آهي بولون ايڪسپريس (جيڪڏهن a 5 جي برابر آهي، پوء اظهار صحيح آهي، جيڪڏهن برابر نه آهي، پوء غلط) . لوپ بند ٿي ويندو جڏهن آئون 9 تائين ”وڌندو“. اهو حساب ڪرڻ آسان آهي، لوپ 10 ڀيرا ڪم ڪيو ويندو. تنهن ڪري، جيڪڏهن توهان کي ڪجهه ڀيرا ورجائڻ جي ضرورت آهي هڪ خاص نمبر، سي ۾ توهان لوپ لاء هڪ وضاحت ڪريو (int i = 0؛ i <10؛ i ++). ٻيو مثال: ليڪچرز لاءِ اضافي مواد CS50: هفتو 1 (ليڪچر 3 ۽ 4) - 8 ۽ ساڳي شيءِ C ۾ ترجمو ٿيل آهي: int counter = 0; while (true) { printf("%i\n", counter); counter++; }
  • انسداد اسٽورن جي قيمت سي ۽ اسڪراچ ۾. سي ۾ اسان int counter = 0 جي بدران سيٽ ڪيو Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 9.
  • وضاحت لاءِ اسان متغير جي قسم کي int طور نشان لڳايو: i is an integer (انگريزي integer، whole مان).
  • %i جيڪو اسان چار لائين تي printf ۾ استعمال ڪريون ٿا اهو هڪ پلیس هولڊر آهي جيڪو اسان کي ڊيسيمل انٽيجر کي پرنٽ ڪرڻ لاءِ ٻڌائي ٿو، جيئن ته اسان printf کي چئون ٿا ته پليس هولڊر کي ان قيمت سان تبديل ڪري جيڪا ڪائونٽر ويريبل وٺندي آهي.
بوليان اظهار
Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 10 اهو ساڳيو آهي (x < y) ((x < y) && (y < z))
حالتون
Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 11 ۽ ”شيٽ“ برابر: Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 12 پهرين سمجھ ۾ نه ايندڙ جملي بابت ڇا؟ ان تي وڌيڪ بعد ۾، ”لائبريري“ سيڪشن ۾. #include
مشروط بيان
اهي ماڻهو چيڪ ڪن ٿا ته ڇا ڪي حالتون (هڪ منطقي اظهار، هڪ سوال جنهن جو جواب صرف ”ها“ يا ”نه“ سان ڏئي سگهجي ٿو) صحيح آهي، ۽ جيڪڏهن ائين آهي ته پوءِ اهي هن حالت سان جڙيل ڪي عمل ڪن ٿا. زندگيءَ مان هڪ مثال: جيڪڏهن مينهن پوي (فرض ڪيو ته برسات پوي ٿي) ۽ مان ٻاهر آهيان (مان ٻاهر آهيان جڏهن برسات پوي ٿي)، مان پنهنجي ڇت کوليندو آهيان. if (condition) { //исполнить, если meaning истинно } هڪ وڌيڪ پيچيده اختيار: جيڪڏهن شرط ملي ٿي، هڪ عمل وٺو؛ جيڪڏهن نه، ٻيو عمل وٺو. if (condition) { //выполнить действие } else { //выполнить другое действие, если condition ложно } مثال: جيڪڏهن توهان 18 کان مٿي آهيو، رسائي کي منظور ڪريو. جيڪڏهن اهو گهٽ آهي، اهو منظور نه ڪيو ويندو. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 12
چونڊ آپريٽر
switch (n) { case const1: // если n equals const1, выполнить break; // condition совершилось — выйти из выбора case const2: // если n equals const2, выполнить break; ... default: // если n не equals ни одной из констант, выполнить break; } مثال: جيڪڏهن n = 50، پرنٽ ڪريو "CS50 ڪمپيوٽر سائنس جو تعارف I"، جيڪڏهن n = 51، ڇاپيو "CS51 ڪمپيوٽر سائنس II جو تعارف آهي"، ٻي صورت ۾ پرنٽ ڪريو "معاف ڪجو، مان ان طبقي کان واقف نه آهيان!" switch (n) { case 50: printf("CS50 is Introduction to Computer Science I\n"); break; case 51: printf("CS51 is Introduction to Computer Science II\n"); break; default: printf("Sorry, I'm not familiar with that class!\n"); break; }
سائيڪلون
جڏهن ته: حالت کي چيڪ ڪري ٿو، پوءِ عمل تي عمل ڪري ٿو جڏهن ته حالت صحيح آهي while (condition) { // выполнять, пока истина } do/جڏهن ته مختلف آهي ته اهو پهريون ڀيرو شرط جي جانچ ڪرڻ کان سواءِ عمل ڪري ٿو، ۽ پوءِ صرف ان کي چيڪ ڪري ٿو. جيڪڏهن شرط صحيح آهي، اهو عمل ٻيهر ورجائي ٿو جيستائين شرط غلط نه ٿي وڃي. do { ) // выполнять, пока истина } while (condition); لوپ لاءِ هڪ عمل کي هڪ مخصوص تعداد ۾ ورجائي ٿو. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 13 لوپ هڪ ٻئي جي اندر اندر رکي سگهجن ٿا. انهي حالت ۾، ٻاهرئين لوپ جي هر قدم تي، اندروني لوپ مڪمل طور تي عمل ڪيو ويندو. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 14
بنيادي ڊيٽا جا قسم C
основные типы данных в C
لائبريريون سي
توهان شايد اڳ ۾ ئي حيران ٿي چڪا آهيو ته سي پروگرام جي پهرين لائن جو مطلب ڇا آهي: ان جو ڪردار ڇا آهي ۽ ڇا ان کان سواءِ ڪرڻ ممڪن آهي؟ #include لائن هڪ تمام اهم ڪم ڪري ٿو: ان ۾ توهان جي پروگرام ۾ اڳ ۾ ئي لکيل ڪوڊ جون لائبريريون شامل آهن. ڳنڍيل لائبريري جو نالو زاويه بریکٹ (<>) ۾ بند ٿيل آهي ۽ هڪ واڌارو آهي (.h). جيڪڏهن لائبريريون نه هجن ها، ته پوءِ ڪنهن به، ايستائين جو بنيادي عمل، هر ڀيري بار بار بيان ڪيو وڃي ها. لائبريري اسان سان ڳنڍيل آهي#include input/output functions تي مشتمل آهي. اھو اھو آھي جيڪو اسان کي استعمال ڪرڻ جي اجازت ڏئي ٿو printf() فنڪشن کي اسڪرين تي پرنٽ ڪرڻ لاء. اهو آهي، جيڪڏهن اسان نه لکي ها #include لائن ، پر ڇڏي ويو printf() فنڪشن کي پروگرام جي جسم ۾؛ جڏهن اسان ان کي هلائڻ جي ڪوشش ڪئي، اسان کي هڪ غلطي ملي ها! ڇاڪاڻ ته هن لائبريري کان سواءِ ڪمپلر کي خبر ناهي ته ڇا آهي printf(). معياري لئبرريون آهن، اهي ٻوليءَ جا لفظ ٺاهينديون آهن. printf() فنڪشن ڪمپيوٽر ۾ نه ٺاهيو ويو آهي، پر سي ٻولي جي معياري لائبريري ۾ شامل ڪيو ويو آهي، اهو آهي، ڪجهه پروگرامر ان کي اڳ ۾ لکيو ۽ ان کي لائبريري ۾ شامل ڪيو. ھاڻي ٻيا ان کي استعمال ڪري سگھن ٿا بغير ڦيٿي کي ٻيهر ٺاھيو. گڏ ڪرڻ واري لاءِ ”سمجھڻ“ لاءِ، اسان ڳنڍيون ٿا . CS50 پروسيس ۾ استعمال ٿيل ٻيون معياري لائبريريون آهن. مثال طور، اسٽرنگ جي هڪ لائبريري، جيڪا بيان ڪري ٿي عملن سان strings (ڊگھائي، اضافي، وغيره جو تعين ڪرڻ). ٻين مشهور پروگرامنگ ٻولين جي مقابلي ۾، معياري سي لائبريرين جو تعداد تمام ننڍڙو آهي. پر اتي خود لکيل آهن، اڪثر گهڻو ڪري اعلي خاص لائبريريون. ها، لائبريري خاص طور تي CS50 شاگردن لاءِ ٺاهي وئي. اهو هڪ اهم نوٽ ڪرڻ جو وقت آهي: پروگرام لکڻ ۽ توهان جي پنهنجي ڪوڊ کي استعمال ڪندي مسئلا حل ڪرڻ کان علاوه، هڪ سٺو ڊولپر وٽ هڪ ٻيو اهم مهارت آهي: اوزارن جي ڄاڻ جيڪي اڳ ۾ ئي لکيا ويا آهن ۽ انهن کي استعمال ڪرڻ جي صلاحيت (ٻين ماڻهن جي لائبريريون) جيئن. وقت ضايع نه ڪرڻ لاءِ ”چيل“ کي نئين سر ترتيب ڏيڻ. تنهن ڪري، جيڪڏهن توهان هڪ مشڪل يا پيچيده مسئلو حل ڪرڻ جي عمل ۾ آهيو جيڪو ڪافي عام لڳي ٿو، پاڻ کان سوال پڇڻ سکو: "ڇا ڪنهن ٻئي حل لکيو؟" امڪان سٺو آهن ته اهو معاملو آهي، ۽ توهان هن فنڪشن کي موجوده لائبريري ۾ ڳولي سگهو ٿا. ٽيڪنيڪل اصطلاحن ۾، لائبريري هڪ بائنري فائل آهي جيڪا هڪ لنڪر استعمال ڪندي اعتراض فائلن جي مجموعن کي گڏ ڪندي ٺاهي ٿي. آبجیکٹ فائلون اهي فائلون آهن جن کي ايڪسٽينشن (*.o) سان ملندي آهي جيڪا توهان حاصل ڪندا آهيو جڏهن توهان اپليڪيشن گڏ ڪندا آهيو.
سي لائبريرين جي جوڙجڪ
Когда программист пишет библиотеку, code распределяется по двум типам файлов — заголовочный файл (header, расширение *.h) и файл реализации (implementation, расширение *.c). Заголовочный файл содержит code, описывающий ресурсы библиотеки, которые вы можете использовать. То есть описания переменных, функций, структур, типов и прочее. Если вам интересно, что содержит та or иная библиотека, нужно заглянуть именно в заголовочный файл. В терминале CS50 IDE (и других средах Linux) вы можете вызвать приложение less для просмотра файлов и открыть с его помощью интересующую вас библиотеку: less /usr/include/stdio.h Файл откроется прямо в терминале. Правда, для новичков он будет очень трудночитаемым. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 15 Whatбы выйти из less, нажмите q на клавиатуре. Заголовочный файл не содержит code функций, что служит примером очень важного понятия — сокрытия данных or инкапсуляции. Пользователю системы незачем знать «внутренности» библиотек, ему достаточно, чтобы она работала. Если вы прошерстите stdio.h, то не найдете там реализации printf(), хотя How её использовать, вы уже знаете. Это сделано для того, чтобы защитить данные от вмешательства, которое порой может плохо отразиться на системе. Так, если кто-то изменит реализацию функции printf() в библиотеке, это отразится на всех тех программах, которые её используют. Любознательным будет интересно, где спрятана реализация. Согласно конвенции (соглашения, принятые в мире программирования) такой code хранят в файле с расширением (*.c). После компиляции библиотеки на основе двух файлов с одинаковым именем, но разным расширением создается an objectный файл, который собран так, чтобы создать файл с двоичным codeом библиотеки. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 16 Author библиотеки передает программисту, который хочет её использовать, два file — с двоичным codeом, а также заголовочный файл. Таким образом, файл с исходным codeом программисту не нужен. Точнее, он может быть нужен, если программист хочет что-то поменять в самой библиотеке и перекомпorровать её под собственные нужды. Whatбы воспользоваться функциями библиотеки в своей программе нужно проделать следующее: 1. Включить заголовочный файл в программу с помощью строки #include В случае стандартных библиотек достаточно указать Name библиотеки в угловых скобках: #include <Name_библиотеки.h> Если библиотека, которую вы хотите подключить, лежит в той же папке, что и ваша программа, подключайте её следующим образом: #include “Name_библиотеки.h” 2.Присоединить бинарный файл для компиляции. Это очень важный шаг, поскольку, How мы говорor выше, заголовочный файл не содержит реализации элементов библиотеки. Whatбы это сделать, нужно вызвать компилятор clang с флагом –l и идущим непосредственно за ним названием библиотеки. Например, компонуем библиотеку cs50: clang hello –lcs50 Clang — один из компиляторов. Для компиляции можно также использовать уже знакомую вам программу make. По сути, она вызывает clang с определенными аргументами командной строки.
И снова Hello C: разбор синтаксиса простейших программ
Директива #include подключает библиотеку ввода/вывода . Программы в C состоят из функций, а те — из операторов и переменных. Функция — это кусок codeа, в котором уже есть or подаются Howие-то данные, а Howие-то данные получают в результате её исполнения. Фигурные скобки { } ограничивают тело функции — описание того, что она должна делать. printf() из стандартной библиотеки stdio выводит любую строку на экран. Строки заключаются в двойные кавычки, а символ “\n” означает перевод курсора на новую строку. Пример: функция «посчитать квадрат целого числа». Передаем функции данные, в нашем случае — число, которое нужно возвести в квадрат. Затем в ней прописывается алгоритм умножения числа на самое себя, и результат этого умножения она выдает на выходе. int sqr(int a) { return a*a; } int sqr(int a) — название функции. В скобках — её аргумент a, это то, что подается на вход функции. Это How переменная в уравнении. То есть, если мы хотим узнать квадрат числа 5, то мы вызовем нашу функцию в виде sqr(5) и получим результат 25. int — тип данных (от англ. integer — целые числа). Наша функция написана так, что мы не можем вызвать её с аргументом a = 5.5. Такая попытка выдаст ошибку, поскольку 5.5 — число дробное, а наше число должно быть целым. int перед именем функции означает тип, который должна эта функция возвращать. Он не обязательно совпадает с типом аргумента. Пример: функция, которая отнимает от целого числа 0.5: double bit_less(int a) { double b; b = a – 0.5; return b; } int main (void) — название главной функции. В одной программе может быть много функций, но, чтобы начать её выполнять, нужна функция под названием main. Слово void в скобках означает, что у этой функции нет аргументов. Внимание! main всегда возвращает int, но return для неё не обязателен. Пример функции не возвращающей значения: void sayhello(void) { printf(“hello everyone!\n”); } При вызове функции в главной программе, она выведет приветствие. Давайте напишем одну программу, в которой будет несколько функций. Тех, что мы уже создали выше. Две созданные нами функции вызовем через главную функцию main(). В C, How и любом языке, есть такой элемент, How комментарий or примечание в коле программы, предназначенное не для компьютера, а для понимания людей. Например, описание, что именно делает code. Компилятор комментариев не видит. Комментирование программ — очень важный момент, поскольку порой разобраться в чужом (и даже своем) codeе очень сложно. //пример однострочного комментария /** а это – многострочного **/ #include //функция возведения в квадрат числа a int sqr(int a) { return a*a; } //выводит приветствие void test(void) { printf ("hello everyone!\n"); } //главная функция int main(void) { test(); printf("%d\n", sqr(5)); } Почти всё, что есть в этой программе вы уже видели. Две функции — возведения в квадрат и приветствия и главная функция main, где мы последовательно вызываем эти две функции. В результате выполнения программы у нас сначала выведется приветствие, на следующей строке — квадрат 5. Обратите внимание, функция test() вызывается с пустыми скобками, потому что её аргументы определены How void.
Еще немного о вводе/выводе в C
Вы, наверное, уже успели заметить странные символы %d и %f в скобках оператора printf. Дело в том, что функция printf выводит данные в следующем обобщенном виде: рrintf ("управляющая строка", аргумент1, аргумент2,...); Управляющая строка содержит компоненты трех типов:
  • символы, которые выводятся на экран дисплея;
  • спецификаторы преобразования, которые вызывают вывод на экран очередного аргумента из последующего списка;
  • управляющие символьные константы.
Спецификатор преобразования начинается со знака % и заканчивается символом, задающим преобразование. Некоторые из таких символов:
  • с: meaningм аргумента является символ;
  • d or i: десятичное целое число;
  • f: десятичное число с плавающей точкой;
  • s: строка символов.
То есть, %d означает, что на экране появится целое десятичное, а %f — десятичное с плавающей запятой. What если нам нужно, чтобы пользователь ввёл данные с клавиатуры? Для этого можно использовать функцию scanf( ), прототип которой также лежит в библиотеке stdio. Whatбы считать с экрана вещественное число, в программе нужно написать строку scanf("%d", &a); Давайте перепишем нашу программу так, чтобы пользователь сам вводил число, которое нужно возвести в квадрат. Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 17
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION