JavaRush /جاوا بلاگ /Random-UR /لیکچرز کے لیے اضافی مواد CS50: ہفتہ 1 (لیکچرز 3 اور 4)
Masha
سطح

لیکچرز کے لیے اضافی مواد CS50: ہفتہ 1 (لیکچرز 3 اور 4)

گروپ میں شائع ہوا۔
روسی اضافی مواد میں cs50 ہفتہ 1 کے کام

پہلے ہفتے کے اہداف

  • بنیادی لینکس کمانڈز سے اپنے آپ کو آشنا کریں۔
  • بنیادی C نحو سیکھیں اور چند مسائل حل کریں۔
  • مزید واضح طور پر سوچنا شروع کریں =)
IDE CS50
کاموں کو مکمل کرنے کے لیے، CS50 کلاؤڈ میں ایک IDE (انٹیگریٹڈ ڈیولپمنٹ انوائرمنٹ) پیش کرتا ہے۔ اسے استعمال کرنے کے لیے، edX پلیٹ فارم پر ایک اکاؤنٹ بنائیں اور اصل کورس کے لیے رجسٹر ہوں ۔ اس کے بعد:
1. cs50.io پر جائیں ۔ cs50.io 3. ہم انتظار کر رہے ہیں: آپ کی مجازی جگہ بنائی جا رہی ہے۔ ورچوئل اسپیس CS50 4. ہو گیا! cs50 ide
کمانڈ لائن اور لانچنگ CS50 IDE
CS50 IDE ونڈو کے نیچے، ٹرمینل ٹیب میں، ایک ٹرمینل ونڈو یا کمانڈ لائن پینل ہے۔ آپ یہاں سٹرنگ کمانڈز درج کر سکتے ہیں: آپ وہی کام کر سکتے ہیں جو ونڈو انٹرفیس کے ساتھ کر سکتے ہیں، مثال کے طور پر، ایپلی کیشنز لانچ کرنا، فائلیں حذف کرنا اور تخلیق کرنا، سافٹ ویئر انسٹال کرنا۔ اگر آپ نے کبھی کمانڈ لائن کے ساتھ کام نہیں کیا ہے، تو یہ طریقہ شاید بوجھل معلوم ہوتا ہے: آپ کو آئیکنز اور بٹن پر کلک کرنے کے بجائے کمانڈز کو یاد رکھنا ہوگا اور انہیں ٹائپ کرنا ہوگا۔ کسی حد تک یہ سچ ہے، تب ونڈو انٹرفیس ایجاد ہوا۔ تاہم، کمانڈ لائن تمام آپریٹنگ سسٹمز میں دستیاب ہے اور منتظمین اسے پسند کرتے ہیں۔ اور سب اس لیے کہ بعض اوقات آپ اس کے بغیر نہیں رہ سکتے۔ ٹرمینل میں IDE ونڈو میں، آپ کو ایک پراسرار لائن نظر آئے گی: username:~/workspace $ "username" کی جگہ خود بخود ایک نام ہوگا (آپ کے رجسٹریشن ڈیٹا کی بنیاد پر)۔ ٹرمینل ونڈو پر کلک کریں، ٹائپ کریں: update50 انٹر دبائیں۔ کمانڈ سسٹم کو اپ ڈیٹ کرنے کو کہتی ہے۔ آپ دیکھیں گے کہ ٹرمینل میں لائنیں نمودار ہوتی ہیں جو انسٹالیشن کے عمل کو بیان کرتی ہیں۔ CS50 IDE کو بند نہ کریں جب تک آپ اپ ڈیٹ مکمل نہ دیکھیں! . اس کے بعد، پہلے سے طے شدہ لائن دوبارہ ظاہر ہوگی، آپ کے نام کے ساتھ۔
IDE میں کام کرنا
آئیے ایک فولڈر بنائیں جہاں آپ کی فائلیں محفوظ ہوں گی۔ CS50 IDE کے اوپری بائیں کونے میں ~/workspace (آپ کی روٹ ڈائرکٹری) پر دائیں کلک کریں ، نیا فولڈر منتخب کریں ۔ pset1 فولڈر کا نام تبدیل کریں (اگر آپ نے نام غلط لکھا ہے تو اپنے فولڈر پر دائیں کلک کریں اور نام تبدیل کریں کو منتخب کریں )۔ پھر pset1 فولڈر پر دائیں کلک کریں اور نئی فائل کو منتخب کریں ۔ Untilted فائل ظاہر ہوتی ہے، آئیے اس کا نام تبدیل کریں hello.txt ۔ hello.txt پر ڈبل کلک کریں۔ CS50 IDE میں آپ کو ایک نیا ٹیب اور دائیں طرف ایک فیلڈ نظر آئے گا جہاں آپ ٹائپ کر سکتے ہیں۔ اگر آپ نے یہ کیا ہے تو، ستارہ (*) کی علامت پر توجہ دیں جو ٹیب پر فائل کے نام سے پہلے ظاہر ہوتا ہے - ایک اشارے کہ فائل میں تبدیلیاں کی گئی ہیں، لیکن محفوظ نہیں کی گئیں۔ فائل کو *فائل> محفوظ کریں یا کمانڈ + S (ایپل مشینوں پر) یا Ctrl + S (PC پر) پر جا کر محفوظ کریں۔ نجمہ غائب ہونا چاہیے۔ آئیے چیک کریں کہ آیا فائل وہیں ہے جہاں اسے ہونا چاہئے۔ آئیے یہ کمانڈ لائن کا استعمال کرتے ہوئے کرتے ہیں، اب اس کی عادت ڈالنے کا وقت ہے :)۔ پہلے کی طرح، ٹرمینل میں ایکٹو لائن اس طرح نظر آتی ہے: ورک اسپیس - موجودہ ورکنگ ڈائرکٹری (وہ جو کام کے ماحول میں کھلی ہے)۔ ٹلڈ (~) روٹ ڈائریکٹری کی نشاندہی کرتا ہے (ورک اسپیس اس میں واقع ہے)۔ نوٹ کریں کہ ٹرمینل میں ورک اسپیس CS50 IDE کے اوپری بائیں کونے میں ~/ ورک اسپیس آئیکن کی طرح ہے۔ آئیے مشق کریں۔ ٹرمینل میں کہیں بھی کلک کریں اور کمانڈ لائن میں ٹائپ کریں اور انٹر دبائیں۔ یہ دو چھوٹے حروف - "فہرست" کے لیے مختصر - موجودہ ورک اسپیس ڈائرکٹری کے اندر موجود فائلوں اور فولڈرز کی فہرست لائے گا۔ دوسری چیزوں کے علاوہ، آپ اپنے تخلیق کردہ pset1 کو دیکھیں گے ! اب کمانڈ کا استعمال کرکے اپنا فولڈر کھولیں۔ ہم لفظی یا زیادہ لفظی طور پر ٹائپ کرتے ہیں: cd (ڈائریکٹری کو تبدیل کریں) کمانڈ ایکٹو ڈائرکٹری کو تبدیل کرتی ہے، ہمارے معاملے میں ایکٹو لائن میں تبدیل ہو گیا ہے یہ اس بات کی تصدیق کرتا ہے کہ آپ اب ڈائرکٹری میں ہیں (لائن کا مطلب ہے "میں ورک اسپیس کے اندر pset1 میں ہوں فولڈر، جو کہ روٹ فولڈر میں ہے، جس کو ~" سے ظاہر کیا گیا ہے ۔ لنک، لیکن یہ اس بات کی تصدیق کرتا ہے کہ hello.txt وہیں ہے جہاں اسے ہونا چاہیے۔ ٹائپ کریں اگر آپ صرف cd کمانڈ خود لکھتے ہیں، لیکن کوئی دلیل فراہم نہیں کرتے ہیں (یعنی اس فولڈر کا نام جس میں اسے جانا چاہیے)، یہ آپ کو واپس کر دے گا۔ پہلے سے طے شدہ روٹ ڈائرکٹری میں، لہذا آپ کو ایکٹو لائن پر درج ذیل تصویر نظر آئے گی: pset1 فولڈر پر واپس جانے کے لیے، ڈائل کریں۔ cs50 ide فولڈر کا نام تبدیل کریں۔cs50 ideلیکچرز کے لیے اضافی مواد CS50: ہفتہ 1 (لیکچرز 3 اور 4) - 1username:~/workspace $lscd pset1cd ~/workspace/pset1~/pset1username:~/workspace/pset1 $~/workspace/pset1lscdusername:~ $cd workspace اور انٹر دبائیں۔ پھر cd pset1 دوبارہ داخل کریں۔ آپ ان دو کمانڈوں کو ایک، زیادہ مستند سے بھی بدل سکتے ہیں: cd workspace/pset1
ہیلو، سی!
آخر کار، یہ لمحہ آ ہی گیا ہے! آئیے پروگرامنگ شروع کرتے ہیں۔ IDE میں ہمارے pset1 فولڈر کے اندر، hello.c نامی ایک فائل بنائیں (ایکسٹینشن درکار ہے)، اسے ایک نئے ٹیب میں کھولیں (ہم سمجھتے ہیں کہ آپ کو پچھلے پیراگراف سے یہ کیسے کرنا ہے یاد ہے)۔ اہم! حروف چھوٹے ہونے چاہئیں، لینکس کیس حساس ہے۔ Hello.c اور hello.c مختلف فائلیں ہیں۔ CS50 IDE ونڈو کے دائیں جانب، بالکل وہی متن ٹائپ کریں جو آپ نیچے دیکھ رہے ہیں۔ ہاں، آپ اسے کاپی کر سکتے ہیں، لیکن اسے ٹائپ کرنا زیادہ مفید ہے۔ حروف مختلف رنگوں کے ہیں کیونکہ CS50 IDE میں نحو کو نمایاں کرنا ہے۔ یہ بہتر پڑھنے کی اہلیت کے لیے رنگ کے ساتھ متن کے بلاکس کو نمایاں کرتا ہے۔ رنگ خود فائل میں محفوظ نہیں ہوتے؛ وہ صرف IDE میں نظر آتے ہیں۔ اگر وہ وہاں ہیں، تو IDE C کو سمجھتا ہے، اور آپ نے اشارہ کیا کہ یہ فائل ایکسٹینشن (*.c) میں C ہے۔ اگر آپ اسی فائل کو hello.txt کہتے ہیں تو متن ایک رنگ کا ہوگا۔ اس بات کو یقینی بنائیں کہ آپ نے ہر چیز کو بالکل بالکل اسی طرح ٹائپ کیا ہے جیسا کہ مثال میں ہے، بصورت دیگر آپ کو پہلا بگ =) ملے گا۔ ایک بار پھر ہم آپ کی توجہ چھوٹے اور بڑے حروف کے درمیان فرق کی طرف مبذول کراتے ہیں۔ \n کیریکٹر کرسر کو اگلی لائن میں لے جاتا ہے، اور اس کے بعد درج کیا گیا متن پروگرام کے آؤٹ پٹ کے ساتھ نہیں لگے گا۔ اوہ ہاں، اور سیمیکولن (؛) کے بارے میں مت بھولنا۔ یہ پروگرام کے بیانات کے لیے ایک اہم الگ کرنے والا ہے؛ C ان کے بغیر کام نہیں کرنا چاہے گا۔ فائل > محفوظ کریں (یا کمانڈ- یا Ctrl-s) پر کلک کریں ۔ نوٹ کریں کہ فائل کے نام کے سامنے والا ستارہ غائب ہو گیا ہے؟ اگر ہاں، تو تبدیلیاں محفوظ ہو گئی ہیں۔ اپنے کوڈ کے نیچے ٹرمینل ونڈو میں کہیں بھی کلک کریں اور یقینی بنائیں کہ آپ ~/workspace/pset1 کے اندر ہیں (اگر آپ نہیں ہیں تو cd-click اور Enter دبائیں، پھر cd workspace/pset1 اور دوبارہ Enter کریں)۔ آپ کی ایکٹو لائن اس طرح نظر آنی چاہئے: آئیے یقینی بنائیں کہ hello.c فائل بالکل وہی ہے جہاں اسے ہونا چاہئے۔ ٹائپ کریں اور انٹر دبائیں۔ کیا آپ hello.c کو بھی دیکھتے ہیں؟ اگر نہیں، تو چند قدم پیچھے جائیں اور دوبارہ مطلوبہ ڈائرکٹری میں فائل بنائیں۔ ... اب پختہ لمحہ آتا ہے: ہم اپنی انگلیوں کو کراس کرتے ہیں اور... ہم ٹائپ کرتے ہیں: اور اپنی انگلیوں کو کراس کرتے ہوئے ہم Enter دباتے ہیں۔ بالکل ہیلو، ہیلو نہیں۔ اگر اس کارروائی کے بعد آپ کے سامنے جو کچھ نظر آتا ہے وہ دوسری فعال لائن ہے، جو بالکل پچھلی لائن کی طرح نظر آتی ہے، تو سب کچھ کام کر رہا ہے! آپ کے سورس کوڈ کا ترجمہ مشین یا آبجیکٹ کوڈ میں کیا گیا ہے (یعنی 0s اور 1s کی ترتیب میں)۔ اب اس کوڈ پر عمل کیا جا سکتا ہے (یعنی پروگرام کو چلایا جا سکتا ہے!)۔ ایسا کرنے کے لیے، ٹائپ کریں: کمانڈ لائن میں، انٹر دبائیں۔ اگر آپ نے "" کے درمیان بند متن کو تبدیل نہیں کیا، تو آپ نیچے دیکھیں گے: اگر آپ اب کمانڈ ٹائپ کرتے ہیں اور 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 نظریہ میں، قیمتی جملہ آپ کے سامنے ظاہر ہونا چاہیے، جو printf آپریٹر کے کوٹیشن مارکس میں بند ہونا چاہیے، جو "print" کا حکم دیتا ہے۔ اگر ٹرمینل ونڈو بہت چھوٹی لگتی ہے، تو hello.c کے آگے سرکلڈ پلس (+) آئیکن پر کلک کریں۔
درستگی کی جانچ کر رہا ہے۔
Check50 ایپلیکیشن CS50 IDE میں بنی ہوئی ہے۔ یہ کمانڈ لائن سے کام کرتا ہے اور کچھ پروگراموں کی غلطیوں کی جانچ کرتا ہے۔ اگر آپ ابھی تک وہاں نہیں ہیں تو، ٹرمینل میں کمانڈ چلا کر ~/workspace/pset1 ڈائریکٹری پر جائیں: cd ~/workspace/pset1 Now run ls آپ کو کم از کم ایک hello.c فائل نظر آئے گی۔ اس بات کو یقینی بنائیں کہ فائل کا نام اس طرح نظر آتا ہے اور نہیں، Hello.c یا hello.C کہیں۔ آپ کمانڈ mv source destination سورس - موجودہ فائل کا نام، منزل - نئی فائل کا نام چلا کر فائل کا نام تبدیل کر سکتے ہیں۔ mv (انگریزی اقدام سے) نام تبدیل کرنے کی افادیت ہے۔ اگر آپ نے غلطی سے فائل کا نام Hello.c رکھا ہے تو لائن ٹائپ کریں: mv Hello.c hello.c اس بات کو یقینی بنانے کے بعد کہ فائل کو بالکل ہیلو ڈاٹ سی کہا جاتا ہے، آئیے چیک 50 چیک پروگرام کو کال کریں۔ براہ کرم نوٹ کریں کہ 2015.fall.pset1.hello "ہیلو ورلڈ" کے مسئلے کے لیے ایک منفرد شناخت کنندہ ہے۔ check50 2015.fall.pset1.hello hello.c اگر پروگرام درست طریقے سے کام کرتا ہے، تو آپ دیکھیں گے: لیکچرز کے لیے اضافی مواد CS50: ہفتہ 1 (لیکچرز 3 اور 4) - 2 سبز سمائلی چہروں کا مطلب ہے کہ امتحان پاس ہو گیا ہے۔ آپ چیک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 یہاں check50 کو hello.c نہیں ملا، اور سرخ سمائلی اشارہ کرتی ہے کہ آپ نے نام میں غلطی کی ہے یا فائل کو غلط جگہ پر اپ لوڈ کیا ہے۔ پیلے رنگ کے "غیر جانبدار" جذباتی نشانات کا مطلب ہے کہ ٹیسٹ نہیں چلے۔ اور اگر پروگرام کو وہ فائل نہیں ملتی جس کو چیک کرنے کی ضرورت ہے تو وہ کہاں سے شروع کر سکتے ہیں؟ یہاں ایک اور آپشن ہے جو پاپ اپ ہو جائے گا اگر آپ متن کو تبدیل کرتے ہیں کہ printf() فنکشن کو آؤٹ پٹ کرنا چاہیے: :) hello.c exists :) hello.c compiles :( prints "hello, world\n" \ expected output, but not "hello, world" check50 رپورٹ کرتا ہے کہ لائن hello, world\n کی توقع تھی، لیکن کچھ اور ظاہر ہوا۔ check50 کورس مکمل کرنے کے لیے پوائنٹس کو شمار نہیں کرتا، لیکن یہ جانچتا ہے کہ آیا اسائنمنٹ کا نتیجہ توقع سے مختلف ہے یا نہیں۔ اور یہ آپ کو کورس کے اندر کام کی درستگی کی تصدیق کرنے سے پہلے اس کی تصدیق کرنے کی اجازت دیتا ہے (ہم آپ کو بعد میں بتائیں گے کہ یہ کیسے کریں)۔
C بنیادی باتیں: سکریچ کے ساتھ موازنہ
سکریچ اور سی میں ہیلو ورلڈ:
لیکچرز کے لیے اضافی مواد CS50: ہفتہ 1 (لیکچرز 3 اور 4) - 3 #include int main(void) { printf("hello, world\n"); }
  • لیکچرز کے لیے اضافی مواد CS50: ہفتہ 1 (لیکچرز 3 اور 4) - 4ایک فنکشن کی نمائندگی کرتا ہے جو اسپرائٹ کے "الفاظ" کو سکریچ میں مزاحیہ بلبلے میں پرنٹ کرتا ہے، C میں ایک printf فنکشن ہے جو صرف کارٹون کے بغیر بھی ایسا ہی کرتا ہے۔
  • مین - انگریزی میں - "مین"۔ پروگرام میں داخلہ پوائنٹ۔ ایسا ہی لیکچرز کے لیے اضافی مواد 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 کا اضافہ ہوتا ہے۔ ابتدائی طور پر، اسائنمنٹ آپریٹر = کا استعمال کرتے ہوئے i کو قدر 0 تفویض کی جاتی ہے۔ توجہ! جیسا کہ جاوا میں، C میں مساوات کو ==، اسائنمنٹ آپریٹر = سے ظاہر کیا جاتا ہے۔ یعنی، a = 5 کا مطلب ہے کہ متغیر a کو قدر 5 تفویض کی گئی ہے، اور (a= =5) کا مطلب بولون اظہار ہے (اگر a 5 کے برابر ہے، تو اظہار درست ہے، اگر برابر نہیں، تو غلط) . جب میں 9 تک بڑھتا ہوں تو لوپ بند ہو جاتا ہے۔ حساب لگانا آسان ہے، لوپ کو 10 بار عمل میں لایا جائے گا۔ لہذا، اگر آپ کو کسی چیز کو ایک خاص تعداد میں دہرانے کی ضرورت ہے، تو C میں آپ a for loop (int i = 0؛ i <10؛ i++) کی وضاحت کرتے ہیں۔ ایک اور مثال: لیکچرز کے لیے اضافی مواد CS50: ہفتہ 1 (لیکچرز 3 اور 4) - 8 اور اسی چیز کا C میں ترجمہ کیا گیا: int counter = 0; while (true) { printf("%i\n", counter); counter++; }
  • C اور سکریچ میں کاؤنٹر اسٹورز کی قدر۔ C میں ہم int counter = 0 کی بجائے سیٹ کرتے ہیں Дополнительные материалы к лекциям CS50: Week 1 (лекции 3 и 4) - 9۔
  • ہم وضاحت کے لیے متغیر کی قسم کو int کے بطور نشان زد کرتے ہیں: i ایک عدد عدد ہے (انگریزی کے عدد سے، پورے)۔
  • %i جو ہم پرنٹف میں لائن چار میں استعمال کرتے ہیں وہ ایک پلیس ہولڈر ہے جو ہمیں اعشاریہ عدد کو پرنٹ کرنے کے لیے کہتا ہے، بالکل اسی طرح جیسے ہم 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 ان پٹ/آؤٹ پٹ فنکشنز پر مشتمل ہے۔ یہ وہی ہے جو ہمیں اسکرین پر پرنٹ کرنے کے لیے printf() فنکشن کو استعمال کرنے کی اجازت دیتا ہے۔ یعنی اگر ہم نے #include لائن نہ لکھی ہوتی ، لیکن پروگرام کے باڈی میں printf() فنکشن کو چھوڑ دیا؛ جب ہم نے اسے چلانے کی کوشش کی، تو ہمیں ایک ایرر موصول ہوتا! کیونکہ اس لائبریری کے بغیر کمپائلر نہیں جانتا کہ printf() کیا ہے۔ معیاری کتب خانے ہیں، وہ زبان کے ذخیرہ الفاظ کو بناتے ہیں۔ printf() فنکشن کمپیوٹر میں نہیں بنایا گیا ہے، لیکن یہ معیاری C لائبریری میں شامل ہے۔یعنی پہلے سے کچھ پروگرامر نے اسے لکھا اور لائبریری میں شامل کیا۔ اب دوسرے اسے پہیے کو دوبارہ ایجاد کیے بغیر استعمال کر سکتے ہیں۔ مرتب کرنے والے کے لیے اسے "سمجھنے" کے لیے، ہم جڑتے ہیں۔ . CS50 کے عمل میں استعمال ہونے والی دیگر معیاری لائبریریاں ہیں۔ مثال کے طور پر، تاروں کی ایک لائبریری، جو سٹرنگز (لمبائی، اضافہ، وغیرہ کا تعین) کے ساتھ کارروائیوں کی وضاحت کرتی ہے۔ دیگر مقبول پروگرامنگ زبانوں کے مقابلے میں معیاری C لائبریریوں کی تعداد بہت کم ہے۔ لیکن خود تحریری، زیادہ تر زیادہ خصوصی لائبریریاں موجود ہیں۔ ہاں، لائبریری خاص طور پر 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