جس نے ابھی تک پروگرامنگ کی بنیادی باتوں پر ہارورڈ کے لیکچرز نہیں دیکھے ہیں، یہاں جائیں: https://javarush.com/quests/QUEST_HARVARD_CS50 =)
تعارف۔ CS50 کورس کا ڈھانچہ
دوستو! تعارف میں، ہم آپ کو CS50 کی ساخت کے بارے میں یاد دلائیں گے (یا آپ کو جو بھی بتائیں گے)۔ کورس 12 ہفتوں تک رہتا ہے۔ ہر ہفتے دو لیکچرز کے ساتھ ساتھ ہر طرح کے سیمینار اور وضاحتیں ہوتی ہیں۔ جیسے ہی لیکچرز تیار ہوں گے ہم اس طرح کے مضامین شائع کریں گے۔ اس میں لیکچرز کی مختصر تفصیل، "شارٹس" پر نوٹس اور اضافی معلومات کے ساتھ ساتھ عملی اسائنمنٹس کے ترجمے بھی شامل ہوں گے۔ صفر ہفتہ کے لیکچرز میں درج ذیل امور شامل تھے:- بائنری نمبر سسٹم۔
- ASCII
- الگورتھم اور الگورتھم سوچ
- مرتب کرنے والے
- کھرچنے والی زبان
- بولین ایکسپریشنز
- شرائط
- سائیکل
- متغیرات
- افعال
- صفیں
- سلسلے
- تقریبات
- سمجھیں کہ معلومات کو ڈیجیٹل طور پر کیسے پیش کیا جا سکتا ہے۔
- بنیادی سافٹ ویئر کی تعمیرات اور تصورات سیکھیں۔
- سکریچ کا استعمال کرتے ہوئے اپنی خود کی اینیمیشن، گیم یا انٹرایکٹو سرگرمی بنائیں۔
- اپنے دوستوں کو متاثر کریں =)۔
CS50 ہفتہ 0 (لیکچر 1-2): نوٹس
الگورتھم
ہم امید کرتے ہیں کہ آپ نے پہلے ہی لیکچرز دیکھے ہوں گے اور سمجھ گئے ہوں گے کہ الگورتھم مسائل (مختلف مسائل، ریاضی کے مسائل یا "میٹرو اسٹیشن N تک کیسے پہنچیں") کے حل کو مراحل میں تقسیم کرتا ہے۔ مزید یہ کہ، ہر قدم کو ایک مقررہ وقت میں مکمل کیا جانا چاہیے، اور خود قدموں کی ایک خاص تعداد ہونی چاہیے۔ اس کے علاوہ، اگلا مرحلہ پچھلے ایک پر منحصر ہے. آپ الگورتھم کے بارے میں مزید پڑھ سکتے ہیں، مثال کے طور پر، یہاں ۔ اگر آپ انگریزی جانتے ہیں تو، یہاں ڈیوڈ مالان کی ایک شاندار TED اینیمیشن ہے: https://youtu.be/6hfOvs8pY1k اگرچہ عام طور پر ویڈیو میں موجود معلومات لیکچر میں دہراتی ہیں =)۔بائنری نمبر سسٹم
ہماری 10 انگلیاں ہیں اور نظام اعشاریہ ہے۔ یعنی، ہم 0، 1، 2، 3، 4، 5، 6، 7، 8، 9 کا استعمال کرتے ہوئے کسی بھی عدد کو ظاہر کر سکتے ہیں، چاہے وہ کتنا ہی بڑا ہو۔ مختلف چیزیں: اگر یہ ہندسہ آخری ہے، تو یہ اکائیوں کی جگہ پر واقع ہے، اختتامی عدد دس کی جگہ پر ہے، یہاں تک کہ بائیں جانب بھی سینکڑوں جگہوں پر ہے، وغیرہ۔ بنیادی طور پر، کسی بھی عدد کو ہندسوں کے مجموعے کے طور پر لکھا جا سکتا ہے، جن میں سے ہر ایک کو دس سے ضرب ایک مخصوص طاقت سے کیا جاتا ہے۔ اکائیوں کی صورت میں - صفر۔ مثال کے طور پر، 1573 = 3*10 0 + 7*10 1 +5*10 2 +1*10 3 ۔ ہندسوں کو جس نمبر سے ضرب کیا جاتا ہے اسے نمبر سسٹم کی بنیاد کہا جاتا ہے۔ اعشاریہ نظام کے لیے، بنیاد منطقی طور پر دس ہے۔ کمپیوٹر کی کوئی انگلیاں نہیں ہیں، لیکن دو حالتیں ہیں: مشروط طور پر "کرنٹ بہہ رہا ہے" اور "کرنٹ نہیں بہہ رہا ہے"، صفر اور ایک۔ اس کے مطابق، کمپیوٹر میموری میں تمام اعداد (اور عام طور پر معلومات) صرف دو ہندسوں پر مشتمل ہوتے ہیں - 0 اور 1۔ ان کا مقام، جیسا کہ اعشاریہ نمبر کے نظام کی صورت میں، ہندسے کی نشاندہی کرتا ہے۔ صرف اب نمبر کو دس کی طاقتوں سے نہیں بلکہ دو کی طاقتوں سے ضرب کردہ ہندسوں کے مجموعہ میں تحلیل کیا جاسکتا ہے۔ 0 بائنری میں = 0 1 بائنری میں = 1 2 بائنری میں = 10 7 10 = 111 2 بائنری سے ڈیسیمل میں تبدیل کرنا سیکھیں۔ آپ شاید پہلے ہی سمجھ چکے ہوں گے کہ یہ کیسے کیا جاتا ہے - ہم صرف دائیں سے شروع ہونے والے نمبر کا ہندسہ لیتے ہیں اور اسے بیس سے اس کے ہندسے کے مطابق طاقت سے ضرب دیتے ہیں، اور ہر ہندسے کے ساتھ ہر چیز کو شامل کرتے ہیں۔ مثال: آئیے بائنری نمبر 101101 2 کا اعشاریہ اینالاگ تلاش کریں 2 دائیں طرف والا = 1*2 0 اگلا صفر = 0*2 1 دائیں طرف سے تیسرا = 1*2 2 چوتھا = 1*2 3 .. اور اسی طرح 101101 2 = 1*2 0 + 0*2 1 + 1*2 2 + 1*2 3 + 0*2 4 + 1*2 5 = 1 + 0 + 4 + 8 + 0 + 32 = 45 10 ایک قطار میں ترتیب دیئے گئے آٹھ لائٹ بلب کا تصور کریں۔ ان میں سے ہر ایک کا اپنا سوئچ ہے۔ لائٹ بلب میں سے ہر ایک ڈسچارج ہے۔ آپ کیا تصور کر سکتے ہیں، پہلا لیکچر یاد رکھیں (وہاں ایسا آلہ موجود ہے) یا یہاں آپ کے لیے ایک ویجیٹ ہے: http://cdn.cs50.net/2016/x/psets/0/pset0/bulbs.html کھیلیں اس کے ساتھ، مشق "احساس" یہ بائنری نظام. اعشاریہ سے بائنری میں تبدیل کرنا۔ یہاں، بھی، سب کچھ بہت آسان ہے، اگر آپ جوہر کو سمجھتے ہیں. یہاں ہمارے پاس نمبر 57 10 ہے ۔ اسے بائنری سسٹم میں تبدیل کرنے کے لیے، آپ کو یہ تعین کرنا ہوگا کہ دو کی زیادہ سے زیادہ طاقت اس نمبر سے زیادہ نہیں ہے۔ 2 6 = 64۔ یہ واضح طور پر بہت زیادہ ہے۔ لیکن 2 5 = 32۔ اب ہم نے سب سے اہم ہندسے کا تعین کر لیا ہے۔ 32 10= 100000 2 ۔ اب ہم اگلے ہندسے کی تلاش میں ہیں۔ 57-32 = 25۔ اب 25 کے لیے ہم دو کی طاقت تلاش کر رہے ہیں جو 25 سے زیادہ نہ ہو۔ 2 4 = 16۔ اس کا مطلب ہے کہ ہمارا اگلا ہندسہ بھی 1 کے برابر ہے۔ 32+16 = 48 10 = 110000 2 ۔ 57 – 48 = 9. 2 3 = 8، یہ 9 سے کم ہے۔ اس کا مطلب ہے کہ اگلا ہندسہ بھی ایک ہوگا۔ 32 + 16 + 8 = 56 10 = 111000 2 ۔ 57-56 = 1، یعنی صرف ایک طاقت باقی ہے، 2 0 ۔ اس طرح 57 10 = 111001 2 ۔ اگر اچانک کچھ غیر واضح رہتا ہے، تو آپ Wikibook میں مزید پڑھ سکتے ہیں، اور اگر آپ انگریزی میں مضبوط ہیں، تو یہاں لیکچر میں ایک چھوٹا سا اضافہ ہے۔ASCII
کمپیوٹر صرف صفر اور والے کو سمجھتا ہے، اور اس کی میموری کو سوئچ کے ساتھ لائٹ بلب کی ایک بہت لمبی تار کے طور پر دکھایا جا سکتا ہے، جیسا کہ آپ نے اوپر دیکھا۔ ہم پہلے ہی سمجھ چکے ہیں کہ کمپیوٹر میں نمبروں کی نمائندگی کیسے کی جاتی ہے۔ باقی معلومات کے بارے میں کیا خیال ہے؟ خطوط، تصویریں؟ فرض کریں کہ انگریزی حروف تہجی میں 26 حروف ہیں۔ یعنی، نظریاتی طور پر، ہم صرف بائنری سسٹم میں 0 سے 25 تک کے حروف کی نمائندگی کر سکتے ہیں۔ مندرجہ ذیل سوال پیدا ہوتا ہے: ہم کیسے سمجھ سکتے ہیں کہ ہمارے پاس چھوٹا حرف ہے یا بڑے؟ اوقاف کے نشانات کے بارے میں کیا خیال ہے؟ خالی جگہوں کی طرح پوشیدہ نشانیاں؟ مختصر میں، ہمیں ایک کوڈنگ سسٹم کی ضرورت ہے، Cap! 1960 کی دہائی میں، بہت سی مختلف اسکیمیں تھیں جو حروف کو انکوڈ کرتی تھیں۔ یکسانیت کا فقدان ایک مسئلہ ثابت ہوا، اور 1963 میں، امریکن اسٹینڈرڈز انسٹی ٹیوٹ، اے این ایس آئی نے ASCII (امریکن اسٹینڈرڈ کوڈ فار انفارمیشن انٹرچینج) انکوڈنگ اسکیم کو تیار اور متعارف کرایا۔ ہر ASCII کیریکٹر سات بٹس، یا سات بٹس پر مشتمل ہوتا ہے، جن میں سے ہر ایک قدر 0 یا 1 لے سکتا ہے۔ 7 بٹس بائنری میں 0 سے 127 تک کے نمبر رکھ سکتے ہیں، یعنی ہمارے پاس حروف کو انکوڈ کرنے کے لیے 128 نمبر ہیں۔ ایسا لگتا ہے کہ یہ تحریری انگریزی تقریر کو انکوڈ کرنے کے لئے کافی ہے؟ آئیے شمار کرتے ہیں: az - 26 اختیارات AZ - 26 مزید 0-9 - 10 ,;:~& اور دیگر اوقاف کے نشانات - 32 اور ایک اور جگہ۔ کل - 95 حروف۔ باقی 33 خالی اختیارات نام نہاد کنٹرول کریکٹرز کے لیے استعمال کیے جاتے ہیں، جیسے کہ لائن فیڈ یا کیریج ریٹرن: https://ru.wikipedia.org/wiki/ASCII#/media/File:ASCII_Code_Chart.svg کے درمیان فرق کرنا ضروری ہے۔ حروف 0-9 اور عددی قدریں 0-9۔ حروف 0-9 کی نمائندگی ASCII اقدار 48-57 سے ہوتی ہے۔ یہ نوٹ کرنا دلچسپ ہے کہ ان ASCII اقدار کے سب سے دائیں چار بٹس عددی اقدار 0-9 کی بائنری نمائندگی ہیں۔ یہ کسی حد تک ASCII اقدار اور ان کی اصل عددی اقدار کے درمیان تبدیل کرنے کا طریقہ آسان بناتا ہے۔ آئیے پروگرامنگ شروع کریں؟کھرچنا
تو، سکریچ. آپ کو لیکچر میں اس بصری پروگرامنگ زبان اور اس کے بنیادی احکام کے بارے میں بتایا گیا۔ اپنے لیے سکریچ آزمانے کے لیے، لنک پر عمل کریں اور "شامل ہو جائیں" پر کلک کریں۔ ایک بار رجسٹر ہونے کے بعد، آپ آن لائن پروگرامنگ شروع کر سکتے ہیں۔ ہاں، ویسے، آج سکریچ جزوی طور پر Russified ہے۔ تاہم، مدد اب بھی انگریزی میں ہے۔ اگر آپ چاہیں تو، آپ کھیل سکتے ہیں اور طلباء کے پروجیکٹس کے کوڈ کو بھی دیکھ سکتے ہیں جن کا مظاہرہ لیکچر میں کیا گیا تھا۔ یہ ہے پکاچو پیسٹری کیچ ۔ یا ایک پروجیکٹ جس میں فضلہ کو مختلف کنٹینرز میں چھانٹنا ہے: https://scratch.mit.edu/projects/71161586/ ڈیوڈ اور کمپنی آپ سے کہتی ہے کہ پریشان نہ ہوں اگر آپ کو لگتا ہے کہ آپ اس طرح کے پیچیدہ پروجیکٹ نہیں کر سکتے: اس سطح کو پہلے ہی کچھ مہارت کی ضرورت ہوتی ہے۔ .ورزش
-
سکریچ میں ہونے والے عمل کو بہتر طور پر سمجھنے کے لیے، آپ یہاں سے کئی پروجیکٹس کے لیے سورس کوڈ ڈاؤن لوڈ کر سکتے ہیں ۔ ادھر ادھر کھیلو اور دیکھو۔ کسی اور کا کوڈ سیکھنا بہت مفید ہے۔ یہ معلوم کرنے کا ایک بہترین طریقہ ہے کہ ان پروگراموں کے اندر کیا ہے جن میں آپ خود ابھی تک پختہ نہیں ہوئے ہیں۔ ایک بار جب آپ یہ سمجھنا شروع کر دیں کہ یہ ایپلیکیشنز کیسے کام کرتی ہیں، تو آپ محفوظ طریقے سے آگے بڑھ سکتے ہیں۔
-
اب وقت آگیا ہے کہ آپ خود کچھ کریں۔ چیلنج یہ ہے کہ شروع سے ایک چھوٹے پروجیکٹ کو لاگو کرتے ہوئے تفریح کریں۔ یہ حرکت پذیری، گیم، انٹرایکٹو ایکشن ہو سکتا ہے۔
- پروگرام میں کم از کم دو اسپرائٹس (کردار، تصاویر) پر مشتمل ہونا چاہیے اور ان میں سے ایک بلی نہیں ہونا چاہیے =)۔
- کم از کم تین اسکرپٹ (ایکشن) ہونے چاہئیں۔
- کم از کم ایک شرط، ایک لوپ، اور ایک متغیر کو عمل میں لانا چاہیے۔
- پروگرام میں کم از کم ایک آواز ضرور شامل کی جائے۔
GO TO FULL VERSION