[संगीत बजाना] डेविड जे मालन: ठीक है। यह CS50 और यह है 2 सप्ताह की शुरुआत है। और तुम उस पर याद होगा सप्ताह की पिछले कुछ, हम कंप्यूटर को शुरू किया गया है विज्ञान और, बारी में, प्रोग्रामिंग। और हम के माध्यम से कहानी शुरू कर दिया स्क्रैच, कि चित्रमय भाषा एमआईटी मीडिया लैब से। और फिर सबसे हाल ही में, पिछले सप्ताह हमने किया एक higher-- एक परिचय निचले स्तर की भाषा में जाना जाता है सी, कुछ ऐसा है जो विशुद्ध शाब्दिक रूप में है। और, वास्तव में, पिछली बार जब हम इस संदर्भ के भीतर का पता लगाया अवधारणाओं की एक संख्या है। यह, याद है, बहुत था पहला कार्यक्रम हम पर देखा। और इस कार्यक्रम, काफी बस, बाहर प्रिंट, "हैलो, दुनिया।" लेकिन वहाँ इतना सूरत से जादू चल रहा है। इस # शामिल है इन कोण कोष्ठक के साथ। वहाँ int है। वहाँ (शून्य)। कोष्ठक, घुंघराले ब्रेसिज़ नहीं है, अर्द्ध कॉलन, और इतना अधिक। और हां, याद है कि हम खरोंच शुरू की इतना है कि हम, आदर्श, अतीत देख सकता है कि वाक्य रचना, सामान सच नहीं है कि सब है कि बौद्धिक दिलचस्प लेकिन जल्दी पर , बिल्कुल, थोड़ा मुश्किल अपने मन के आसपास लपेटो करने के लिए। और, वास्तव में, सबसे आम में से एक बातों पर जल्दी एक प्रोग्रामिंग वर्ग में, खासकर उन लोगों के लिए कम आरामदायक, से निराश हो जाता है और कुछ वाक्यात्मक द्वारा गच्चा त्रुटियों, तार्किक त्रुटियों का उल्लेख नहीं है। और हमारे लक्ष्य के बीच इतना आज वास्तव में, होगा कुछ के साथ लैस करने के लिए हो के लिए कैसे समस्या को हल करने की तकनीक बेहतर समस्याओं को खुद हल करने के लिए डिबगिंग के रूप में। और आपको याद होगा, भी, कि पर्यावरण कि हम शुरू की पिछली बार CS50 आईडीई बुलाया गया था। यह वेब आधारित सॉफ्टवेयर है कि आप क्लाउड में कार्यक्रम के लिए अनुमति देता है, तो बात है, जबकि सभी को ध्यान में रखते हुए अपने एक साथ फ़ाइलें, जैसा कि हम आज फिर से होगा। और कहा कि हम याद करते हैं यहां इन विषयों पर दोबारा गौर, उन के बीच में काम करता है, और छोरों, और चर, और बूलियन अभिव्यक्ति, और शर्तों। और वास्तव में कुछ अधिक है कि हम स्क्रैच की दुनिया से अनुवाद सी की दुनिया में लेकिन मौलिक निर्माण ब्लॉक, तो बात है, वास्तव में अभी भी एक ही पिछले सप्ताह थे। एक वास्तव में, हम वास्तव में सिर्फ था अलग पहेली टुकड़ा, अगर तुम जाएगा। कि बैंगनी रंग के बजाय ब्लॉक बचाने के लिए, हम बजाय printf था, जो है सी में इस समारोह में कहा कि आप कुछ प्रिंट करने देता है और स्क्रीन पर यह प्रारूप। हम CS50 शुरू की लाइब्रेरी, तुम कहाँ अपने निपटान get_char पर अब है, और get_int, और get_string, और के रूप में कुछ अन्य कार्यों खैर, जो के माध्यम से आप इनपुट प्राप्त कर सकते हैं उपयोगकर्ता की अपनी कीबोर्ड से। और हम भी बातों पर एक नज़र लिया these- बूल, और चार तरह, और डबल, नाव, पूर्णांक, long_long स्ट्रिंग। और वहाँ सी में भी अन्य प्रकार के डेटा दूसरे शब्दों में, जब आप की घोषणा में एक चर कुछ मूल्य की दुकान, या जब आप एक समारोह को लागू कि कुछ मान देता है, आप क्या निर्दिष्ट कर सकते हैं मूल्य है कि के प्रकार। यह एक स्ट्रिंग है, एक तरह पात्रों के अनुक्रम? यह एक पूर्णांक की तरह एक नंबर है? यह एक चल बिन्दु है मूल्य, या पसंद है? तो सी में, स्क्रैच के विपरीत, हम वास्तव में किस प्रकार का डेटा निर्दिष्ट करने के लिए शुरू किया हम लौटने या उपयोग कर रहे थे। लेकिन जाहिर है, हम भी में भाग गया कंप्यूटिंग के कुछ बुनियादी सीमा। खास तरीके से, इस भाषा सी, याद हम पर एक नज़र लिया है कि पूर्णांक अतिप्रवाह, वास्तविकता कि अगर आप केवल एक है स्मृति की निश्चित राशि या, विशेष रूप से, एक परिमित संख्या बिट्स के लिए, आप केवल इतनी अधिक भरोसा कर सकते हैं। और इसलिए हम यहां इस उदाहरण को देखा जिससे एक हवाई जहाज में एक काउंटर, वास्तव में, अगर लंबे समय पर्याप्त होता चल रहा है अतिप्रवाह और एक सॉफ्टवेयर में परिणाम एक वास्तविक भौतिक संभावित त्रुटि। हम यह भी तैर को देखा बिंदु अस्पष्टता, वास्तविकता कि केवल एक सीमित संख्या के साथ बिट्स के लिए, चाहे वह 32 या 64 है, आप केवल इतने सारे संख्या निर्दिष्ट कर सकते हैं एक दशमलव बिंदु के बाद जिसके बाद आप imprecise पाने के लिए शुरू करते हैं। उदाहरण के लिए, एक तिहाई तो यहाँ दुनिया, हमारे इंसानों की दुनिया में, हम जानते हैं कि अभी एक अनंत संख्या है दशमलव बिंदु के बाद 3s की। लेकिन एक कंप्यूटर जरूरी नहीं कर सकते संख्या की एक अनंत संख्या का प्रतिनिधित्व अगर आप केवल अनुमति देते हैं यह कुछ जानकारी के सीमित मात्रा में। इतना ही नहीं, हम आप से लैस किया मामले में अधिक से अधिक शक्ति के साथ कैसे तुम अपने आप को अभिव्यक्त कर सकता है प्रोग्रामिंग के मामले में एक कीबोर्ड, हम भी सीमित क्या आप वास्तव में क्या कर सकते हैं। और वास्तव में, कीड़े और गलतियों से कर सकते हैं मुद्दों के उन प्रकार से उत्पन्न होती हैं। और वास्तव में, विषयों के बीच आज डिबगिंग जैसे विषयों को होने जा रहे हैं और वास्तव में हुड के नीचे तलाश कैसे चीजों को पेश किए गए पिछले सप्ताह में वास्तव में लागू कर रहे हैं इतनी है कि आप बेहतर समझ में दोनों की क्षमताओं और सी की तरह एक भाषा की सीमाओं और वास्तव में, हम वापस परत छील कर देंगे डेटा संरचना का सरलतम की, कुछ एक सरणी कहा जाता है, जो स्क्रैच एक फोन करने के लिए होता है 'की सूची। " यह एक छोटा सा है इस संदर्भ में अलग है। और फिर हम भी की एक मिलवाता हूँ हमारे डोमेन-विशिष्ट समस्याओं का पहला CS50 में, की दुनिया क्रिप्टोग्राफी, पांव मार करने की कला या में इतनी जानकारी संकेताक्षर आप गुप्त संदेश भेज सकते हैं कि और गुप्त संदेशों को डिकोड दो व्यक्तियों, ए और बी के बीच इसलिए हम संक्रमण से पहले कि नई दुनिया के लिए, चलो कुछ से लैस करने की कोशिश करते हैं तकनीक है जिसके साथ आप समाप्त कर सकते हैं या कम से कम कुछ कम कुंठा की आप शायद का सामना करना पड़ा है कि पिछले एक सप्ताह से अकेले खत्म हो गया। वास्तव में, आप के आगे के कुछ कर रहे हैं such-- सी और बाधाओं में अपना पहला समस्याएं हैं अगर तुम मुझे पसंद कर रहे हैं, पहली बार आप एक प्रोग्राम बाहर टाइप करने के लिए कोशिश करते हैं, भले ही आप तार्किक लगता है कार्यक्रम बहुत आसान है, आप बहुत अच्छी तरह से एक दीवार हिट हो सकता है, और संकलक सहयोग करने के लिए नहीं जा रहा है। करो या बजना नहीं जा रहा है वास्तव में अपनी बोली करने के लिए। और क्यों है कि हो सकता है? खैर, चलो पर एक नज़र रखना शायद, एक साधारण प्रोग्राम। मुझे आगे जाना है और इस को बचाने के लिए जा रहा हूँ एक फ़ाइल जानबूझ buggy0.c कहा जाता है, क्योंकि मैं इसे करने के लिए पता अग्रिम में त्रुटिपूर्ण हो। लेकिन मुझे पता है कि अगर यह नहीं हो सकता है पहले या दूसरे या तीसरे कार्यक्रम है कि मैं वास्तव में खुद बना रहा हूँ। तो मैं आगे जाने के लिए जा रहा हूँ और बाहर प्रकार, int मुख्य (शून्य)। और फिर मेरी घुंघराले ब्रेसिज़ के अंदर, एक बहुत परिचित ( "हैलो, world-- बैकस्लैश, एन ") - और एक अर्धविराम। मैं फ़ाइल बचा लिया। अब मैं नीचे जाने के लिए जा रहा हूँ मेरे टर्मिनल विंडो पर और प्रकार बनाने buggy0, क्योंकि, फिर से, आज फ़ाइल का नाम buggy0.c है। तो मैं buggy0 बनाने, दर्ज टाइप करें। और, ओह, भगवान, पिछली बार से याद करते हैं कि कोई त्रुटि संदेश एक अच्छी बात है। तो कोई उत्पादन एक अच्छी बात है। लेकिन यहाँ मैं स्पष्ट रूप से है गलतियों से कुछ संख्या है। उत्पादन की पहली पंक्ति तो buggy0 बनाने लिखने के बाद, याद है, बजना की काफी वाचाल उत्पादन है। हुड के नीचे, CS50 आईडीई कॉन्फ़िगर किया गया है की एक पूरी गुच्छा का उपयोग करने के लिए इस संकलक के साथ विकल्प ताकि आप की जरूरत नहीं है कि उनके बारे में सोचने के लिए। और यह सब है कि पहली पंक्ति है इसका मतलब है कि बजना के साथ शुरू होता है। लेकिन उसके बाद, समस्या उनकी उपस्थिति बनाने के लिए शुरू करते हैं। लाइन 3, चरित्र पर Buggy0.c 5, वहाँ एक बड़ा, लाल त्रुटि है। वो क्या है? परोक्ष पुस्तकालय समारोह की घोषणा साथ प्रकार पूर्णांक (const चार * printf, ...) [-Werror]। मैं बहुत जल्दी मतलब है, यह बहुत रहस्यमय हो जाता है। और निश्चित रूप से, पहली बार में नज़र, हम नहीं होगा आप समझने की उम्मीद उस संदेश की संपूर्णता। और तो सबक के एक आज के लिए जा रहा है नोटिस करने की कोशिश करने के लिए किया जाना है पैटर्न, या इसी तरह की बातें, त्रुटियों के तुम हो सकता है अतीत में सामना करना पड़ा। तो चलो अलावा केवल छेड़ो उन शब्दों है कि परिचित लग रही है। बड़े, लाल त्रुटि स्पष्ट रूप से है कुछ का प्रतीक गलत जा रहा है। उलझाव की घोषणा पुस्तकालय समारोह printf। तो भी अगर मैं काफी समझ में नहीं आता कि क्या परोक्ष पुस्तकालय समारोह की घोषणा इसका मतलब है, निश्चित रूप से समस्या किसी भी तरह printf से संबंधित है। और कहा कि इस मुद्दे का स्रोत यह घोषणा के साथ नहीं है। घोषणा एक समारोह है पहली बार के लिए यह उल्लेख। और हम पिछले हफ्ते शब्दावली का इस्तेमाल किया एक समारोह के प्रोटोटाइप की घोषणा की, या तो के शीर्ष पर एक लाइन के साथ अपने खुद फ़ाइल या एक तथाकथित हेडर फाइल में। और क्या हम फ़ाइल कहा था पिछले हफ्ते कि printf उद्धरण है, गंदें शब्द बोलना, घोषित? क्या फाइल में अपने प्रोटोटाइप है? तो अगर आप याद है, बहुत पहले की बात मैं टाइप, लगभग हर कार्यक्रम पिछले time-- और गलती से एक पल पहले शुरू myself-- लिखकर इस एक here-- था hash-- # शामिल