डेविड जे मालन: सभी ठीक है, तो इस CS50 है। और यह स्पष्ट रूप से एक शुक्रवार की है। और इस सप्ताह के अंत है। तो आप हम से दूर छोड़ दिया है कि याद कर सकते हैं, एक तरह की Cliffhanger साथ पिछली बार। जिससे हम इस झूठ का पर्दाफाश नहीं है कि बात बढ़ रही है आप सिखाया गया है क्या , 10 से विभाजित 1 में, नहीं है वास्तव में, 0.1 या 0.100 या ०.१००००। वास्तव में, यदि हम इस संकलन कार्यक्रम है, हम कल के साथ किया था, अस्पष्टता बनाने के लिए, और उसके बाद डॉट करते हैं, स्लेश, अस्पष्टता, हम यह क्या सीखा है कि 1 वास्तव में है 10 से विभाजित। तो यह है कि वास्तव में काफी मामला नहीं है। लेकिन इस से कुछ पर संकेत करता है कंप्यूटर के बुनियादी सीमा। और वास्तव में, के बीच बातें हम क्या करने जा रहे हैं आज यह है क्यों पर एक नज़र रखना है क्या हुआ, यह है क्या निहितार्थ मानवता में नाकाम रही है कि कैसे कुछ बहुत ही में इस काबू करने के लिए गंभीर situations-- जिनमें से परिणाम काफी दुखद कर दिया गया है और भी expensive-- और हम कैसे पर एक नज़र रखना वास्तव में बचाव कर सकते हैं सीमाओं के इन प्रकार के खिलाफ। तो intuitively, शायद, क्यों 1 10 से विभाजित है, मेरे कंप्यूटर के अनुसार यहां नहीं है, बस 1/10, 0.10? हाँ। आप क्या सोचते हैं? दर्शकों के सदस्य: मूलांक अलग है? डेविड जे मालन: क्या है? ओह, मूलांक अलग है? तो काफी नहीं है। यह वास्तव में अधिक है हार्डवेयर के लिए मौलिक। अन्य विचार? हाँ। दर्शकों के सदस्य: वे अलग ढंग संख्या का प्रतिनिधित्व करते हैं? डेविड जे मालन: तो they-- ठीक है। वे अलग संख्या का प्रतिनिधित्व करते हैं। गलत, जाहिरा तौर पर। खैर, है- तो यह है कि क्या अलग से? या फिर किससे? हम से? दर्शकों के सदस्य: हाँ। वे दशमलव का उपयोग नहीं करते [अश्राव्य] करने के लिए प्रणाली। डेविड जे मालन: ठीक है। एक अर्थ में तो, वे नहीं करते दशमलव प्रणाली का उपयोग करें। हुड के नीचे, सब कुछ है, वास्तव में, द्विआधारी है और कहा कि वास्तव में, संबंधित है। लेकिन यह भी एक सरल है उस से भी स्पष्टीकरण। हाँ। दर्शकों के सदस्य: वे केवल इतने सारे बिट्स है। वे केवल एक निश्चित करने के लिए स्टोर कर सकते हैं हद, दशमलव के साथ की तरह। डेविड जे मालन: हाँ। यह वास्तव में यह कम हो रही है क्या है। ऐसा लगता है कि कंप्यूटर पता चला है आम तौर पर, हमेशा ही जानकारी का एक निश्चित राशि का उपयोग कुछ का प्रतिनिधित्व करने के लिए। है ना? सब के बाद, हम केवल एक तय कर दी है हार्ड डिस्क स्थान की राशि। हम केवल एक निश्चित राशि है रैम, या कंप्यूटर स्मृति की। और आप केवल एक है, तो कुछ की निश्चित राशि है, निश्चित रूप से आप वास्तव में ऊपर भरोसा नहीं कर सकते इन्फिनिटी या आप चाहते हैं किसी भी नंबर पर। तुम्हें पता है, एक तरह से करने के लिए है लेने के लिए और क्या सीमा का चयन करें का आप का समर्थन करने के लिए जा रहे महत्व देता है। और तो उदाहरण के लिए, एक या दो सप्ताह के लिए पहले, हम आस्की के बारे में बात करते हैं, और हम के बारे में 8 बिट में बात की थी, या एक बाइट, तो बात है, सबसे बड़ी संख्या में हम कर सकते थे 8 बिट के साथ क्या था प्रतिनिधित्व करते हैं? 255। और हम 256 कुल मूल्यों का प्रतिनिधित्व कर सकते हैं लेकिन हम उनमें से एक खर्च नहीं करता है, तो खैर 0-- पर है, लेकिन अगर हम 0 पर उनमें से एक खर्च करते हैं, तो सबसे बड़ी संख्या 255, ज़ाहिर है, है। तो यह है कि यह पता चला है, इस संदर्भ में भी मामला है,। हम बात कर रहे है, पिछली बार शुरू कर दिया चल बिन्दु संख्या के बारे में, जो में, पूर्णांकों से अलग कर रहे हैं वे एक दशमलव बिंदु है कि और हमें उम्मीद है कि कुछ संख्या उसके बाद, लेकिन वे भी कर रहे हैं। एक कंप्यूटर ही आम तौर पर हो रहा है 32 बिट, शायद 64 बिट का उपयोग करने के लिए एक चल बिन्दु मूल्य का प्रतिनिधित्व करने के लिए। भले ही तो हम बड़े हो गए हैं गणित सीखने और जानने के आप पूरी तरह से हो सकता है कि संख्या की एक अनंत संख्या दशमलव बिंदु, नहीं करने के बाद आप परिमित स्मृति किया है। तुम्हें पता है, एक तरह से गोल करने के लिए है, या लेने और चुन जो नंबर आप का प्रतिनिधित्व करने के लिए जा रहे हैं। और इसलिए तुम एक अर्थ में, के बारे में सोच सकते हैं, यह जा रहा है कंप्यूटर के करीबी मूल्य 1/10 को सन्निकटन कि यह सिर्फ 32 या इतने टुकड़े के साथ, प्राप्त कर सकते हैं। और यह सिर्फ 1/10 नहीं है। उदाहरण के लिए, मैं इस बात से बदलते हैं हमें लगता है कि जो 1/3, भी सरल है। तो 1 से 3 से विभाजित। मुझे फाइल को बचाने करते हैं। मुझे आगे जाना है और इसे फिर कंपाइल करने दें। और मुझे यह फिर से चलाते हैं। यहां भी, जाहिर है, 1/3 0.3 नहीं है और फिर 3 के एक अनंत संख्या उसके बाद। आप अंत में इस अस्पष्टता है। तो हम इंसानों सही हैं, और क्या आप, वास्तव में है, सही सीखा लेकिन हम ऊपर मार रहे हैं कुछ सीमाओं के खिलाफ। और मैं क्या सोचा हम आज क्या होता है, शुरू हो गया है स्पष्ट है, को देखकर इस का दुखद परिणाम कभी कभी, जब मानव जाति काफी लागू नहीं करता इस वास्तविकता और इन सीमाओं के लिए। और हम विगनेट्स की एक श्रृंखला देखेंगे लेता है कि हिस्ट्री चैनल से कैसे चीजों पर एक नज़र गलत हो गया है। यह लगभग 8 मिनट लंबा है और हम इस के बाद वापस आ गया हूँ और वास्तव में पर एक नज़र रखना और क्या गलत हो सकता है। हम lights-- मंद सकता है [वीडियो प्लेबैक] , कंप्यूटर, है, हम सभी को स्वीकार करने के लिए आया हूँ अक्सर निराशा समस्याओं कि उनके साथ जाएं। कीड़े, वायरस, और सॉफ्टवेयर glitches के छोटे कीमतों रहे हैं सुविधा के लिए भुगतान करने के लिए। लेकिन में उच्च तकनीक और उच्च गति सैन्य और अंतरिक्ष कार्यक्रम अनुप्रयोगों, छोटी से छोटी समस्या यह कर सकते हैं आपदा में बढ़ाया जा सकता है। 4 जून 1996 पर, वैज्ञानिकों तैयार एक मानव रहित एरियन -5 रॉकेट लांच करने के लिए। यह वैज्ञानिक ले जा रहा था उपग्रहों के लिए बनाया गया ठीक कैसे स्थापित करने के लिए पृथ्वी के चुंबकीय क्षेत्र का आदान सौर हवाओं के साथ। रॉकेट के लिए बनाया गया था यूरोपीय अंतरिक्ष एजेंसी और अपनी सुविधा से बंद उठाया फ्रेंच गयाना के तट पर। -और बारे में 30 सेकंड में उड़ान, वे पहले गौर कुछ गलत हो रहा था। नलिका swiveling गया है कि एक तरह से वे वास्तव में नहीं करना चाहिए। उड़ान में 40 सेकंड के आसपास, स्पष्ट रूप से वाहन, मुसीबत में था वे बनाया और कहा कि जब निर्णय के लिए इसे नष्ट करने के लिए। एक रेंज सुरक्षा अधिकारी के साथ जबरदस्त हिम्मत बटन दबाया, यह हो सकता है इससे पहले कि रॉकेट विस्फोट से उड़ा दिया जनता की सुरक्षा के लिए एक खतरा बन गया है। -यह मायके था एरियन -5 की यात्रा, और इसके विनाश के लिए ले लिया क्योंकि एक दोष के स्थान पर रॉकेट के सॉफ्टवेयर में एम्बेडेड। पर -इस समस्या एरियन था कि वहाँ आवश्यक है कि एक नंबर था 64 बिट्स, व्यक्त करने के लिए और वह परिवर्तित करना चाहता था यह एक 16 बिट संख्या के लिए। वे संख्या में मान लिया है कि बहुत बड़ा होने जा रहा कभी नहीं किया गया था, उस में उन अंकों के सबसे 64 बिट संख्या 0 के थे। वे गलत थे। एक के -इस असमर्थता सॉफ्टवेयर प्रोग्राम को स्वीकार करने के लिए द्वारा उत्पन्न नंबर की तरह एक और विफलता की जड़ में था। सॉफ्टवेयर विकास बन गया था एक नई तकनीक की बहुत महंगा हिस्सा। एरियन 4 रॉकेट बहुत हो गया था सॉफ्टवेयर के सफल, इतना यह भी था के लिए बनाया एरियन -5 पर इस्तेमाल किया। -इस बुनियादी समस्या एरियन था कि 5, तेजी से गया था तेजी से बढ़ी है। और सॉफ्टवेयर नहीं था उस के लिए जिम्मेदार है। रॉकेट के -इस विनाश भारी वित्तीय आपदा थी, पूरे एक मिनट सॉफ्टवेयर त्रुटि के लिए। लेकिन इस के पहले नहीं था समय डेटा रूपांतरण समस्या आधुनिक रॉकेट प्रौद्योगिकी ग्रस्त था। शुरुआत के साथ, 1991 अलावे पहले खाड़ी युद्ध के, पैट्रियट मिसाइल इसी तरह की एक तरह का अनुभव नंबर रूपांतरण समस्या का। नतीजतन, 28 लोग, 28 अमेरिकी सैनिकों मारे गए हैं और के बारे में थे 100 अन्य घायल हो गए, जब माना जाता था जो देशभक्त, भेजे गए scuds के खिलाफ की रक्षा के लिए, एक मिसाइल आग करने में विफल रहा। -जब इराक कुवैत और अमेरिका पर हमला जल्दी 1991 में डेजर्ट स्टॉर्म शुरू की, पैट्रियट मिसाइल बैटरी तैनात किया गया था सऊदी अरब और इसराइल की रक्षा के लिए इराकी स्कड मिसाइल हमलों से। पैट्रियट एक अमेरिकी, मध्यम दूरी की है सतह से हवा प्रणाली रेथियॉन कंपनी द्वारा निर्मित। पैट्रियट इंटरसेप्टर के -इस आकार, ही है, मोटे तौर पर 20 फुट लंबा, के बारे में है। और यह लगभग 2000 पाउंड वजन। और यह about-- का एक बम किया जाता है मैं यह लगभग 150 पाउंड है लगता है। और वारहेड, ही, एक उच्च विस्फोटक है, जो इसके चारों ओर टुकड़े है। बम की आवरण है buckshot की तरह कार्य करने के लिए बनाया गया है। -इस मिसाइलें हैं 4 कंटेनर प्रति किया जाता है, और एक अर्द्ध ट्रेलर से ले जाया जाता है। -इस पैट्रियट एंटी मिसाइल प्रणाली अब कम से कम 20 साल पीछे चला जाता। यह मूल रूप से डिजाइन किया गया था एक वायु रक्षा मिसाइल के रूप में दुश्मन के हवाई जहाज के नीचे गोली मार करने के लिए। पहले खाड़ी युद्ध में, उस युद्ध के साथ आया था जब, सेना के लिए इसका इस्तेमाल करना चाहता था scuds, नहीं हवाई जहाज नीचे गोली मार। इराकी सेना नहीं थी एक समस्या का इतना, लेकिन सेना scuds के बारे में चिंतित था। और इसलिए वे करने की कोशिश की पैट्रियट उन्नयन। एक दुश्मन -Intercepting मिसाइल मच पांच पर यात्रा काफी चुनौतीपूर्ण होने जा रहा था। लेकिन जब पैट्रियट सेवा में ले जाया गया था, सेना के एक के बारे में पता नहीं था कर दिया है कि इराकी संशोधन उनकी scuds हिट करने के लिए लगभग असंभव है। -क्या हुआ, scuds है कि में आ रहे थे, अस्थिर थे वे wobbling थे। इसका कारण, आदेश में, इराकियों था के बाहर 600 किलोमीटर की दूरी पर पाने के लिए एक 300 किलोमीटर दूरी की मिसाइल, सामने बम से बाहर वजन ले लिया और बम हल्का कर दिया। तो अब, पैट्रियट के आने की कोशिश स्कड पर, और समय की सबसे अधिक है, की भारी बहुमत समय, यह सिर्फ स्कड से उड़ जाएगा। पैट्रियट सिस्टम ऑपरेटरों -एक बार पैट्रियट अपने लक्ष्य से चूक का एहसास हुआ वे देशभक्त के बम विस्फोट अगर यह संभव हताहत से बचने के लिए भूमि पर गिर करने के लिए अनुमति दी गई थी। ज्यादातर लोगों को क्या देखा -यही था, आकाश में उन बड़े आग के गोले, और के रूप में गलत समझा स्कड हथियार का अवरोध। रात में यद्यपि आकाश, देशभक्त दिखाई दिया सफलतापूर्वक होने की Dhahran में, scuds को नष्ट करने, वहाँ कोई गलती नहीं हो सकता है अपने प्रदर्शन के बारे में। वहाँ, पैट्रियट के रडार सिस्टम एक आने वाली स्कड का ट्रैक खो दिया है, और, शुरू कभी नहीं एक सॉफ्टवेयर दोष के कारण। यह पहली खोज की है जो इजरायल था अब सिस्टम पर था कि, अधिक से अधिक समय विसंगति कारण एम्बेडेड एक घड़ी के लिए बन गया है, सिस्टम के कंप्यूटर में। -About 2 सप्ताह पहले Dhahran में त्रासदी, इजरायल की सूचना दी रक्षा विभाग, सिस्टम समय खो गया था कि, चल रहा है कि के बारे में 8 घंटे के बाद, वे सिस्टम था कि देखा काफ़ी कम सटीक हो रहा है। रक्षा विभाग द्वारा प्रतिक्रिया पैट्रियट बैटरी के सभी कह रही सिस्टम नहीं छोड़ करने के लिए एक लंबे समय के लिए। वे एक लंबे समय था क्या कभी नहीं कहा। 8 घंटे? 10 घंटे? 1000 घंटे? कोई नहीं जानता। -इस पैट्रियट बैटरी बैरकों में तैनात दहरान, और उसके त्रुटिपूर्ण आंतरिक पर 100 घंटे से अधिक घड़ी पर किया गया था 25 फ़रवरी की रात को। -यह शुद्धता के लिए समय पर नज़र रखी के बारे में 1/10 एक दूसरे के के। अब एक दूसरे के 1/10 है एक दिलचस्प नंबर यह नहीं हो सकता, क्योंकि वास्तव में, द्विआधारी में व्यक्त किया। जो यह नहीं कर सकते हैं, इसका मतलब है व्यक्त किया, वास्तव में, किसी भी आधुनिक डिजिटल कंप्यूटर में। यह विश्वास करना मुश्किल है लेकिन एक उदाहरण के रूप में इस का उपयोग करें। के नंबर, 1/3 लेते हैं। 1/3 व्यक्त नहीं किया जा सकता दशमलव में, बिल्कुल। 1/3 अनंत के लिए चल रहा 0.333 है। ऐसा करने के लिए कोई रास्ता नहीं के साथ नहीं है, दशमलव में पूर्ण शुद्धता,। इस बात का बिल्कुल उसी तरह है पैट्रियट में हुआ है कि समस्या। अब सिस्टम से भाग गया, बदतर समय त्रुटि हो गया। आपरेशन के 100 घंटे -After, त्रुटि समय में केवल 1/3 के बारे में एक दूसरे का था। लेकिन एक को निशाना बनाने के मामले में मिसाइल मच 5 पर यात्रा, यह एक ट्रैकिंग में हुई 600 मीटर से अधिक की त्रुटि। यह एक गंभीर त्रुटि होगा Dhahran में सैनिकों के लिए। हुआ क्या, एक स्कड प्रक्षेपण है था प्रारंभिक चेतावनी उपग्रहों द्वारा पता लगाया, और वे स्कड था कि नई उनकी सामान्य दिशा में आ रहे हैं। यह आ रहा था, जहां उन्हें पता नहीं था। -यह रडार अप करने के लिए अब था पैट्रियट प्रणाली के घटक, पता लगाने और रखने के लिए, Dhahran का बचाव आने वाली दुश्मन मिसाइल का ट्रैक। -इस रडार बहुत होशियार था। यह वास्तव में ट्रैक होगा स्कड की स्थिति और उसके बाद जहां भविष्यवाणी यह शायद होगा अगली बार, रडार बाहर एक पल्स भेजा है। यही कारण है कि सीमा के गेट बुलाया गया था। -फिर, पैट्रियट एक बार पर्याप्त समय है फैसला करता है वापस जाने के लिए और अगले जाँच करने के लिए पारित इस पता लगाया वस्तु के लिए स्थान, इसे वापस चला जाता है। तो यह गलत करने के लिए वापस चला गया जब जगह है, यह तो कोई वस्तु को देखता है और यह कोई नहीं था कि निर्णय लेता है वस्तु है, यह एक गलत पहचान थी, और ट्रैक चला जाता है। आने वाले स्कड गायब हो गया रडार स्क्रीन से, और सेकंड बाद में, यह बैरकों में पटक दिया। स्कड 28 मारे गए थे और पिछले था एक पहले खाड़ी युद्ध के दौरान निकाल दिया। दुर्भाग्य से, अद्यतन सॉफ्टवेयर अगले दिन Dhahran पर पहुंचे। सॉफ्टवेयर दोष था गया तय, समापन परेशान में एक अध्याय पैट्रियट मिसाइल का इतिहास। [अंत प्लेबैक] डेविड जे मालन: तो हम पर एक नज़र रखना होगा सिर्फ एक बिट में कुछ इसी तरह की सीमाओं। लेकिन पहले, चलो कुछ के लिए संक्रमण FYI है। इस सप्ताह के अंत one-- तो, ​​वहाँ सुपर वर्गों हो जाएगा, उखाड़ना के लिए होती हैं, जो नियमित रूप से अनुसूचित वर्गों, जो इसलिए एक सप्ताह से शुरू होगा। CS50 की वेबसाइट पर एक नज़र रखना उन पर और अधिक जानकारी के लिए। उन्होंने यह भी फिल्माया गया है और प्रदर्शित किया जाएगा भाग लेने में असमर्थ लोगों के लिए रहते हैं। समस्या 1 पर है सेट पहले से ही पाठ्यक्रम की वेबसाइट और हम पर एक नज़र रखना होगा सिर्फ एक छोटा सा में है। और कार्यालय समय भी, ले जाएगा गुरुवार के माध्यम से इस सोमवार जगह है। तो यह सबसे विहित था कार्यक्रम में हम पिछले समय में देखा। यह सरल की तरह है तुम सी में लिख सकते हैं प्रोग्राम, और यहां तक ​​कि एक साहसिक दावा का एक सा है। है ना? एक बहुत की है क्योंकि वहाँ इस के लिए जटिलता प्रतीयमान। तो चलो पर एक त्वरित देखो ले चलो क्या इन तत्वों में से कुछ थे और उसके बाद प्रदान करने की कोशिश कैसे के लिए एक मानसिक मॉडल कार्यक्रमों के इन सरलतम काम करते हैं, और फिर हम शुरू करेंगे कभी अधिक जटिल चीजों को देख रहे हैं। इसलिए इस लाइन, यहाँ, अब प्रकाश डाला पीले रंग में है, हम क्या कहा, पिछली बार, यह हमारे लिए करता है? यह कार्य करता उद्देश्य क्या है? आगे पीछे से कोई है? हाँ। दर्शकों के सदस्य: [अश्राव्य] डेविड जे मालन: अच्छा। तो यह है कि आप पहुँच देता है आदेशों के लिए, या चलो उन्हें फोन काम करता है, कि किसी बाकी घोषित कर रहे हैं कि, ने लिखा है, तो कुछ अन्य फ़ाइल में बात करने के लिए। इसलिए हम वास्तव में क्या एक ज फ़ाइल देखेंगे अंत में, एक ग फ़ाइल बनाम है। लेकिन अब के लिए, सिर्फ इतना पता है कि printf, उदाहरण के लिए, किया गया है कि कार्यों के बीच में है कहीं न कहीं, कुछ अन्य फ़ाइल में घोषित बादल की हार्ड ड्राइव पर और है कि हमें printf पहुँच सकते हैं और इसका इस्तेमाल करने की अनुमति देता है एक नए अंदाज़ में करने के लिए बिना खुद पहिया कि। इस बीच, मुख्य। मुख्य, पिछले सप्ताह के अनुरूप क्या था? हाँ। दर्शकों के सदस्य: हरा झंडा क्लिक किया जाता है। डेविड जे मालन: हाँ। खरोंच है, हरे रंग का झंडा क्लिक किया। यह पहेली टुकड़े की तरह है चीज़ें है कि बंद kicks। और तो इसी तरह, दुनिया किया सी में कुछ साल पहले फैसला किया है कि और अन्य भाषाओं का एक गुच्छा, आप एक प्रोग्राम लिखने के लिए चाहते हैं, अपना पहला समारोह मुख्य, के नाम से जाना गया है। और यह इस तरह लग रही है। लेकिन हम वापस आ गया हूँ एक बार, क्या करने के लिए, पूर्णांक, और, शून्य, उस संदर्भ में मतलब है। अभी के लिए, सर्पाकार तरह कर रहे हैं के स्क्रैच की पहेली टुकड़ा आकार की तरह कि लाइनों में से कुछ नंबर encapsulates। और लाइनों पर बीच यहाँ, यहाँ यह एक है। printf जिसका उद्देश्य में एक समारोह है जीवन एक स्वरूपित स्ट्रिंग मुद्रित करने के लिए है। और स्वरूपित से, मैं तुम्हें क्या मतलब प्लेसहोल्डर मूल्यों में प्लग कर सकते हैं, और आप कितने दशमलव निर्दिष्ट कर सकते हैं अंक, कितनी संख्या मुद्रित करने के लिए एक दशमलव बिंदु और पसंद के बाद। और printf, ज़ाहिर है, एक लेता है या तर्क या मापदंडों से अधिक है, अन्यथा अधिक बस, सामग्री के रूप में जाना जाता है,। की एक बहुत पसंद है, तो printf कार्यों, आदानों लेता है। और उन सूचनाओं के गले लगा रहे हैं यहां दो कोष्ठकों द्वारा। और उन लोगों के अंदर एक इनपुट है। यह है कि हम यह कहा जाता है के रूप में, एक स्ट्रिंग है, जो पात्रों में से सिर्फ एक दृश्य है, एक शब्द या एक मुहावरा है, या एक पूरी तरह निबंध भी, दोहरे उद्धरण चिह्नों के बीच में। और कहा कि प्रभावित करने के लिए क्या हो रहा है printf के व्यवहार की वजह से, ज़ाहिर है, यह सिर्फ एक सामान्य प्रिंट समारोह है। यह क्या है पता करने के लिए नहीं जा रहा है आप यह बताने के लिए, जब तक मुद्रित करने के लिए। और फिर, कुछ ज़रा सी बात। हम इस अजीब कहना था कि क्या प्रतीकों के अनुक्रम है? हाँ। दर्शकों के सदस्य: नई लाइन। डेविड जे मालन: नई लाइन। तो यह है कि तुम सिर्फ हिट नहीं कर सकते, पता चला है, आप इस कार्यक्रम को लिख रहे हैं, दर्ज करें। आम तौर पर, संकलक पाने के लिए जा रहा है तुम क्या मतलब है के रूप में एक छोटी सी उलझन में। बल्कि, आप सचमुच करना है यहां मुझे एक नई लाइन दे, कहते हैं। और हां / एन क्या हम आम तौर पर है एक भागने चरित्र कहते हैं। तो एन, नई लाइन के लिए। और संकलक जानता है कि यह / एन देखता है, यह वास्तव में कंप्यूटर के लिए प्रेरित करना चाहिए, अंत में, या printf, इस मामले में, एक वास्तविक नए बाहर मुद्रित करने के लिए रेखा, मार की तरह, प्रवेश अपने कीबोर्ड पर कुंजी। और अंत में, हम क्या कहना था वाक्य रचना के इस टुकड़े के लिए है? यह क्या दिखाता है? हाँ। दर्शकों के सदस्य: [अश्राव्य] डेविड जे मालन: यह बस है रेखा के अंत। यह बयान का अंत है। और हम ऐसा नहीं है कि एहसास हर जगह डाल दिया। हम निश्चित रूप से उन्हें मत डालो हर पंक्ति के सिरों पर। उदाहरण के लिए, पर कोई भी नहीं है, पहली पंक्ति, कोई भी लाइन पर नहीं है, मुख्य साथ, वहाँ कोई नहीं है घुंघराले ब्रेसिज़ के बाद, लेकिन आप देख सकते हैं और पाने के लिए शुरू करेंगे इसके लिए कहा जाता है, जहां से परिचित। और यह एक समारोह के बाद लगभग हमेशा कुछ कार्रवाई, फोन या एक बयान कि आप वास्तव में ले जा रहे हैं। और, विशेष रूप से अगर अब पता कम आराम से उन लोगों के बीच, इन बेकार की बातें की तरह हैं अगर आप गलती से पिटाई कर समाप्त होगा कि पर दीवार के खिलाफ अपने सिर। आप तार्किक हो जाएगा, क्योंकि कुछ समस्या में विश्वास यदि आप एक समस्या के लिए हल कर दिया है सेट, और सिर्फ लानत बात संकलन या भी नहीं चलेंगे। और तो अक्सर, पर जल्दी, यह जा रहा है आप एक कोष्टक याद किया, क्योंकि हो सकता है, या आप एक अर्धविराम याद किया। और तो बस ध्यान में रखना होगा इन चीजों की तरह की, और से निराश नहीं प्राप्त करने की कोशिश उन्हें बहुत जल्दी इस करता है क्योंकि पुरानी टोपी हो जाते हैं। लेकिन इसे पाने के लिए बहुत आसान है नतीजतन, पर जल्दी निराश। तो अब, चलो पर एक नज़र रखना इस लाइन वास्तव में काम कर रहा है और फिर एक थोड़ा को देखो और अधिक जटिल है। तो हम यहाँ, पर है इस स्क्रीन पर आकर्षित करने की क्षमता। और है कि मान लीजिए इस, अपने कंप्यूटर स्क्रीन है लेकिन मुझे लगता है, नमस्कार कार्यक्रम लिख रहा हूँ और मैं printf लागू नहीं किया है। किसी और से, printf लागू किया गया है। कौन करने का दावा करना चाहते हैं , printf लागू कर दिया है? हम कर सकते हैं? ठीक है, तुम्हारा नाम क्या है? छात्र 1: [? कोपल। ?] डेविड जे मालन: कोपल, ऊपर पर आते हैं। आ जाओ। ठीक है। तो हम यहाँ, है, कुछ नाम टैग, हम इस बात का एक छोटा सा खेल कर दूँगा के बाद से। और हम printf, आपको फोन करेंगे। और तुम यहाँ पर आना चाहते हैं, क्या मैं सिर्फ स्क्रीन पर तैयार किया है, यह मुझे नहीं है, काफी बस यह है। ठीक है, तो, नमस्ते मेरा नाम है, printf, तो आप उस पर डाल करने के लिए चाहते हैं। ठीक है। और तुम स्टैंड जा सकते हैं कंप्यूटर स्क्रीन से के रूप में हालांकि आप कार्य कर रहे हैं कि इस कंप्यूटर सिस्टम के साथ आया। और जीवन में अपने उद्देश्य है वास्तव में कुछ मुद्रित करने के लिए। लेकिन कार्यक्रम की तरह हम ज्यादा यहाँ सिर्फ स्क्रीन पर था, हम करने के लिए जा रहे हैं वास्तव में आप कुछ इनपुट दे। और हां, अपने इनपुट हैं, यहाँ है, जाहिर है, क्या printf को पारित कर दिया है, एक तरह से यह इस तरह का नकली करते हैं। मैं सचमुच पर लिखने जा रहा हूँ कागज का एक टुकड़ा है, "नमस्ते, दुनिया," बैकस्लैश एन और स्पष्ट हो, क्या मैं तो बस, कागज के इस टुकड़े पर खींचा है इस तरह दिखता है। इसलिए मैं इस कार्यक्रम को चलाने के लिए, और इस जब कोड के पीले लाइन मार डाला जाता है, यह, मैं नमस्कार कार्यक्रम के रूप में यद्यपि है एक समारोह के लिए रवाना कुछ इनपुट सौंप रहा हूँ किसी और ने लिखा है कि। और यदि आप अपनी उंगली के साथ, वास्तव में कर सकता है, अपनी उंगली से, स्क्रीन पर आकर्षित जो कुछ भी यह आप सौंप दिया गया है है, प्रभाव, अंत में, करने के लिए है ठीक है कि स्क्रीन पर देखते हैं। और यहाँ एक छोटे से कोने मामला। और अच्छा है, हम नहीं देखना चाहिए इस बिंदु पर, नई लाइन। यह आप के लिए गलत होगा स्पष्ट रूप से नई आकर्षित करने के लिए। लेकिन हम रखा है पर शब्द लिख स्क्रीन, वे कहते हैं कि नीचे खत्म होगा। इसलिए आपको बहुत बहुत धन्यवाद, लेकिन छड़ी यहाँ के आसपास बस एक पल के लिए। अब हम एक दूसरे की जरूरत है स्वयंसेवक, हम कर सकते हैं, तो उस भूमिका निभाने की जरूरत जा रहा है of-- यह ऑर्केस्ट्रा में ही लोग है अभी। कैसे ठीक about--। यहीं। आ जाओ। आपका नाम क्या है? छात्र 2: [? Ivay। ?] डेविड जे मालन: क्षमा करें? छात्र 2: [? Ivay। ?] डेविड जे मालन: एतान, ऊपर पर आते हैं। नहीं? मैं भी, कि गलत था आप इसे दो बार के बाद कहा? आ जाओ। यह यहां तक ​​सुनने के लिए मुश्किल है। ठीक। और मैं माफी चाहता हूँ, तुम्हारा नाम क्या है? छात्र 2: [? Ivay। ?] [? डेविड जे मालन: Ivay। ?] ठीक। अभी के लिए, अगर आप ऐसा नहीं मन, आप GetString कर रहे हैं। छात्र 2: ठीक है। कूल। डेविड जे मालन: अगर आप चाहेंगे तो बस एक पल के लिए यहाँ खड़ा करने के लिए, के एक से थोड़ा पर एक नजर डालते हैं और अधिक जटिल प्रोग्राम, कि अब कोड की तीन लाइनें है। इसलिए हम एक है, का उपयोग कर अपने नाम राज्य printf; दो, GetString के लिए एक फोन, एक के लिए एक काम से पीछा चर स्ट्रिंग है, कहा जाता है, या कहा जाता है; और फिर printf, करने के लिए एक और फोन, लेकिन दो आदानों के साथ इस बार। इसलिए हम पहले से ही किया गया है, राज्य अपना नाम, या यों कहें, हम है पहले से ही एक printf कॉल किया। तो मैं अपना नाम राज्य, लिखने जा रहा हूँ। और हां, तो मैं क्या करने के लिए जा रहा हूँ बस एक पल में, printf, पास, यह काफी बस है। आप आगे जाना है और इस आकर्षित करना चाहते हैं तो स्क्रीन पर, कि अपने इनपुट अब है। ठीक है। और अब हम है, स्ट्रिंग भूल जाते हैं यहाँ कोड की अपनी लाइन। इतने में, GetString, हम की जरूरत है वास्तव में, GetString फोन करने के लिए। इसलिए जीवन में अपने उद्देश्य सिर्फ चलने के लिए है ऑर्केस्ट्रा में बाहर, अगर तुम सकता है, और किसी के नाम मिलता है। लेकिन हम आपको दे दें कुछ उस पर डाल दिया। यदि आप जाना चाहते हैं आगे और एक स्ट्रिंग मिलता है, उस पर किसी का नाम मिलता है कागज का टुकड़ा है, अगर तुम सकता है। ठीक है। और हम बस एक पल में, देखेंगे जिसका नाम हम कर रहे हैं। इस बीच, मैं करने के लिए क्या जा रहा हूँ तैयार है, एक खाली टुकड़ा है कागज की, जो में, मैं जा रहा हूँ स्टोर करने के लिए जो कुछ भी मूल्य है कि यह GetString मेरे लिए लौट रहा है है कि, मैं नामक एक स्ट्रिंग चर, एस जा रहा है। ठीक है। तो तुम यहाँ क्या करना है? Nik। ठीक है। तो हम यहाँ Nik का नाम है। तो यह क्या सचमुच है लौटा दिया गया है मेरे लिए, तो GetString से बात करने के लिए। मैं करने जा रहा है, अब, हूँ बाएं हाथ की ओर निष्पादित जहां मैं बस यह है कि अभिव्यक्ति की आज के उद्देश्यों, Nik के लिए, नीचे की नकल। तो अब, मैं एक चर है कहा जाता है, निक के नाम के भंडारण, एस। मैं पहले से ही करने के लिए सौंप दिया गया है, printf, पिछले एक तर्क। लेकिन हमारे तीसरे और अंतिम पंक्ति में कोड, मैं वास्तव में हाथ printf करना है एक छोटे different-- कुछ "हैलो,% s" बैकस्लैश एन। और तो अंतिम पंक्ति मैं जा रहा हूँ मैं पिछले बात send-- को अब नीचे लिखने जा रहा है, यह है। तो कोड की दो लाइनों, या कोड की अंतिम पंक्ति के बजाय, दो inputs-- के लिए कॉल एक, यह है, और दो, यह है। हमारे printf समारोह तो अगर अब इनपुट के रूप में इन ले जा सकते हैं, मुझे आप के लिए स्क्रीन को साफ करते हैं। असल में नहीं, तुम आगे जा सकते हैं। हम के बाद से, इसे छोड़ देंगे यह एक ही कार्यक्रम पर है। हम, नमस्कार, Nik देखना चाहिए। ठीक है। तो यह काफी कुछ था हुप्स बस के माध्यम से कूद करने के लिए लिखने के लिए, राज्य के अपने हैलो, निक नाम है, और। लेकिन संदेश पासिंग की इस सरल विचार है, इनपुट गुजर रहा है और उत्पादन प्राप्त करने के हमारे पास करने के लिए जा रहे मॉडल ठीक है यहां तक ​​कि सबसे जटिल कार्य के लिए। तो आप दोनों को बहुत बहुत धन्यवाद। हम एक सुंदर तनाव है यहाँ आप के लिए गेंद। और हमारे GetString करने के लिए धन्यवाद एक जैसे और printf स्वयंसेवकों। धन्यवाद। ठीक है। आप दोनों के लिए धन्यवाद। इसलिए हम के बारे में बात कर रहा है इस प्रकार अब तक, ज्यादातर तार के बारे में। और यह है कि सी वास्तव में कर सकते हैं पता चला है कुछ अलग प्रकार के डेटा को समझते हैं। वास्तव में, के ले चलो पर आज इन पर दिखेगा। इतनी सी है, और भाषाओं की एक बहुत कुछ है, वर्ण बुलाया चीजों को समझते हैं। एक चार आम तौर पर एक है एकल बाइट, या आठ बिट्स। और यह एक ही चरित्र का प्रतिनिधित्व करता है, पत्र ए, या पूंजी की तरह पत्र ए, या छोटा अक्षर एक, या एक विस्मयादिबोधक बिंदु, या किसी भी चरित्र को आप पर टाइप कर सकते हैं कि अपने कीबोर्ड, और कभी कभी भी अधिक। हम यह भी मंगाई को देखने के लिए होता है। एक नाव, आम तौर पर, एक 32-बिट मूल्य, या चार बाइट्स फिर, क्योंकि एक बाइट आठ बिट है। तो एक नाव एक चल बिन्दु मान है, एक दशमलव बिंदु के साथ कुछ। और वास्तव में, कि क्या हो रहा है फिल्म में बात कर रहा था वे तैरते के बारे में बात की थी जब के बारे में बात मान, बिट्स के कुछ निश्चित संख्या एक वास्तविक संख्या का प्रतिनिधित्व करने के लिए इस्तेमाल किया जा रहा है। लेकिन यह भी युगल में बुलाया बातें की। इन, जावा में मौजूद आप APCs ले लिया है, और एक डबल के रूप में नाम शुक्र पता चलता है, दो बार एक नाव के रूप में बड़ा है। यह अभी भी एक वास्तविक संख्या है, यह सिर्फ अधिक बिट है जिसके साथ, कभी भी और अधिक सटीक होना या यहां तक ​​कि बड़ी संख्या में स्टोर करने के लिए। पूर्णांक के लिए आसान है। हम जानते हैं कि पिछली बार के बारे में बात की थी। यह सिर्फ एक पूर्णांक है। और यह आम तौर पर 32 है बिट्स, या चार बाइट्स। और हां, अगर कोई है तो, चलो अब देखते हैं 32 bits-- और हम हफ्ते 0 में यह किया है, अगर आपके पास कभी इतना briefly-- 32 बिट, सबसे बड़ी क्या है आप एक पूर्णांक के रूप में प्रतिनिधित्व कर सकते हैं नंबर? दे या ले? यह 4 अरब की तरह है और कहा कि हम कर रहे हैं केवल यदि है सकारात्मक संख्या केवल प्रतिनिधित्व। आप 32 बिट है, और आप चाहते हैं के रूप में अच्छी तरह से नकारात्मक संख्या का प्रतिनिधित्व करते हैं, अपनी सीमा अनिवार्य रूप से नकारात्मक है, 2 अरब सकारात्मक करने के लिए 2 अरब। लेकिन आम तौर पर, हम शुरू करेंगे 0 पर 4 अरब से ऊपर जाना है। आप ठीक पता करने के लिए नहीं है, लेकिन सिर्फ मैं यदि हम वास्तव में, यह देख सकते हैं इधर, एक छोटी सी कैलकुलेटर ऊपर खुला। मैं 32 2 करते हैं, और कर सकते हैं कि वास्तव में कितना बड़ा है, कितने मूल्यों आप कर सकते हैं 32 बिट के साथ प्रतिनिधित्व करते हैं। और यह लगभग 4 अरब डॉलर है। तो हम उस संख्या को देखकर रखेंगे कुछ अलग स्थानों में। लेकिन अगर आप लंबे समय तक की जरूरत है तो उस से भी संख्या, यह वहाँ है पता चला है कुछ एक लंबे बुलाया। और एक लंबी लंबी है आम तौर पर 64 बिट, जो यह परिमाण के एक आदेश का मतलब है एक int से भी बड़ा। इसलिए मैं भी सबसे बड़ी उच्चारण नहीं कर सकते आप का प्रतिनिधित्व कर सकते हैं कि संख्या, लेकिन यह स्पष्ट रूप से बड़ा है। अब एक के रूप में अलग है, ऐतिहासिक, एक int 32 बिट है, और एक लंबे 64 बिट्स, कैसे बड़ा एक लंबी नहीं, एक लंबे समय तक है? आप इसे एक पूर्णांक से अधिक समय है लगता था लेकिन शायद कम लंबे समय से एक लंबे, लेकिन यह वास्तव में निर्भर करता है। और तो यह एक बाहर जाती है बहुत कुंठाओं की, कुछ सिस्टम पर कोड लिखने के साथ, है कि इन प्रकार के डेटा नहीं सभी पूर्व निर्धारित मूल्य नहीं है। कभी कभी यह यह कई बिट्स है। कभी कभी यह है कि कई बिट्स है। तो अगर आप वास्तव में पता है, कभी कभी, क्या हार्डवेयर तुम पर अपने सॉफ्टवेयर चल रहे हैं। शुक्र है, अन्य भाषाओं और अब मौजूद है कि अन्य प्रकार के डेटा, आप और अधिक सटीक होना करने के लिए अनुमति देते हैं। खैर, हम, स्ट्रिंग देखा और हम भी, बूल देखा लेकिन यह उन लोगों के आने पता चला है केवल CS50 पुस्तकालय के साथ। तो उन का निर्माण नहीं कर रहे हैं सी में उन के बजाय, कहा जाता है कि फाइल में आ CS50.h, कि हम अंत में हूँ की परतों वापस छील। लेकिन अब के लिए, वे बस रहे अतिरिक्त डेटा प्रकार के। एक बूल एक सही है या गलत है, और एक है स्ट्रिंग पात्रों का एक दृश्य है, एक शब्द की तरह। अब printf, हमने देखा है, है प्लेसहोल्डर्स% s से एक है। और तुम अब तक, सक्षम हो सकता है इन अन्य उदाहरण हैं, कैसे से अनुमान आप एक प्लेसहोल्डर हो सकता था विभिन्न प्रकार के डेटा के लिए। उदाहरण के लिए, एक अनुमान ले अगर आप का उपयोग करते हुए एक भी चार प्रिंट आउट करना चाहता था printf, प्लेसहोल्डर शायद% ग है। और अगर आप एक प्रिंट आउट करना चाहते हैं प्लेसहोल्डर,% मैं के साथ पूर्णांक। % LLD, एक लंबे दशमलव मान है लेकिन लंबे समय तक, कि है कि नक्शे इसलिए। फ्लोटिंग के लिए और फिर% च बिंदु मान या एक डबल के लिए, तो कभी कभी वे फिर से इस्तेमाल कर रहे हैं अलग अलग संदर्भों में। तो हम देखते हैं और इस्तेमाल करेंगे समय के साथ उन लोगों में से कुछ हैं। Printf और भी अन्य कार्य करता है और दूसरों का समर्थन 'भागने दृश्यों, और कभी कभी, ये जरूरी हैं। तो बैकस्लैश n एक नई लाइन है। Backslash टी, किसी को भी करता है एक चाकू ले जाना चाहते हैं? दर्शकों के सदस्य: टैब। डेविड जे मालन: टैब। आप वास्तव में चाहते हैं तो एक टैब नहीं बाहर मुद्रित करने के लिए रिक्त स्थान की एक निश्चित संख्या लेकिन एक वास्तविक टैब वर्ण, आप अपने को मारा नहीं है, कीबोर्ड पर टैब, कुंजी, आम तौर पर, आप वास्तव में बैकस्लैश टी करते हैं। Backslash डबल बोली, यही कारण है कि मैं कभी भी है कि चाहेगा? है ना? क्यों मैं सिर्फ एक नहीं लिख सकते हैं अपने कीबोर्ड पर दोहरे उद्धरण? दर्शकों के सदस्य: अन्यथा, यह है, क्योंकि यह अंत है सोचने के लिए जा के अपने प्रिंट [पसंद है? पाठ। ?] डेविड जे मालन: बिल्कुल। साथ याद है, हमारे printf उदाहरण हैं, जब हम इनपुट में printf को गुजर रहे थे, कि इनपुट स्ट्रिंग के बाईं पर और कहा कि इनपुट के अधिकार पर वसंत, ज़ाहिर है, एक डबल बोली थी। अपने स्वयं के इनपुट एक डबल है तो उस के बीच में बोली, कंप्यूटर संभवतः हो सकता है के रूप में उलझन में मिलता है, इस दोहरे उद्धरण करता है बीच में हैं? यह छोड़ एक साथ हैं करता है? यह सही एक साथ हैं करता है? और हां, तो आप सुपर इसे बनाने के लिए चाहते हैं स्पष्ट है, आप डबल बोली Backslash करते हैं, यह बच रहा है, इसलिए है कि तो बात है, और करने के लिए यह कुछ और के लिए सम्मिश्रण नहीं है। और, यहाँ कुछ अन्य लोगों के भी नहीं है बैकस्लैश आर, एकल उद्धरण, 0, कि हम साथ ही, समय के साथ देख सकते हैं। और अब, क्या कार्यों के बारे में? हम इस प्रकार अब तक ले जा सकते हैं कि कार्रवाई तो इस भाषा में, सी, ठीक है, हमने देखा है, printf, ज़ाहिर है, और सभी स्क्रीन पर दूसरों की, यहाँ, हम के लिए इस्तेमाल करेंगे केवल पाठ्यक्रम के पहले कुछ हफ्तों, जब CS50 पुस्तकालय आते हैं। और वे में, यह बहुत आसान है सी, वास्तव में उपयोगकर्ता इनपुट पाने के लिए। यह सी में पता चला है कि, और स्पष्ट रूप से कुछ भाषाओं में, यह करने के लिए गर्दन में एक असली दर्द है उपयोगकर्ता को संकेत की तरह कुछ सरल, अपने या अपने इनपुट के लिए कीबोर्ड, के लिए। और इसलिए इन कार्यों के लिए यह आसान बनाते हैं। और यह भी त्रुटि है भर की जाँच, इसलिए जब आपको लगता है कि बुधवार हम, पर याद करते हैं , पुन: प्रयास करें, चेतावनी देखा मैं सहयोग नहीं किया, जब और मैं एक शब्द है, बजाय एक नंबर टाइप? हम जल्दी भारी उठाने किया है पर उपयोगकर्ता सहयोग सुनिश्चित करने के लिए। लेकिन ये सिर्फ प्रशिक्षण कर रहे हैं कि हम अंत में होगा पहियों, और जल्दी से दूर ले। संक्षिप्त करने के लिए तो, फिर, चलो एक त्वरित नज़र रखना, हम खरोंच, पर साथ किया था बहुत पसंद है सी में कुछ विहित निर्माणों इस प्रकार, के लिए होती है की, एक बवंडर दौरे हो सकता है, बस इतना है कि आप एक संदर्भ है और आप पहली बार में बातें देखा है कि। लेकिन फिर हम वास्तविक कोडिंग में देख लेंगे इन इमारत ब्लॉकों में से कुछ का उपयोग करें। इतना तो है कि खरोंच में की तरह, हम बयानों की तरह था, सी में है, हम क्या करना है, रुको, कहते हैं या printf की तरह के रूप में अच्छी तरह से काम करता है। हम एक शर्त को व्यक्त करना चाहते हैं सी में, यह भावना में, इसी तरह की है, कि पहेली टुकड़ा करने के लिए कि स्क्रैच में इस तरह से देखा। लेकिन इसके बजाय, हम सचमुच अगर सिर्फ लिखा है। और फिर, कोष्ठक में, हम एक शर्त रख दिया, शर्त यह है कि जहां हम क्या करेंगे एक बूलियन अभिव्यक्ति, फिर से, कहते हैं। और फिर, इस स्यूडोकोड की तरह है। और, वास्तव में, // एक टिप्पणी है। यह अपने आप को सिर्फ अंग्रेजी शब्द है। लेकिन यह सामान्य है एक, अगर, हालत की संरचना। लेकिन हम ठोस देखेंगे बस एक पल में उदाहरण हैं। आप एक के लिए करना चाहते हैं सड़क में दो तरह से कांटा, बहुत तरह हम पर हमारे स्वयंसेवक के साथ किया था बुधवार, तुम अगर नहीं तो, एक हो सकता है। और अगर आप एक तिहाई करना चाहते हैं और अंतिम स्थिति, या डिफ़ॉल्ट स्थिति, आप देखते हैं, बस एक और ब्लॉक कर सकते हैं। और इसी प्रकार, बूलियन अभिव्यक्ति के साथ, आप उन्हें एक साथ कर सकते हैं, और। और हम बुधवार को देखा था कि यह एक एम्परसेंड नहीं है, यह निचले स्तर के कारणों के लिए, दो है कि हम अंत में देखते हैं और साथ खेलेंगे। चीजों को एक साथ या आईएनजी 2 ऊर्ध्वाधर सलाखों है। एक अमेरिकी कीबोर्ड पर, इस एक चाबी आम तौर पर है ऊपर शिफ्ट कुंजी के साथ अपने कुंजी दर्ज करें या कुंजी लौटें। तो फिर इन चीजों है कि वहाँ हम एक या दो बार हो सकता है का उपयोग करेंगे। वे करने के लिए कार्यात्मक समकक्ष हैं अगर और क्या करता है, तो आप एक साथ कर सकते हैं, बाकी अगर नहीं तो, निर्माण, लेकिन वे एक स्विच कर रहे हैं बुलाया। वे बहुत अलग लग रही है, लेकिन हम करेंगे हमारे वितरण कोड में से कुछ में देखते हैं, भविष्य में समस्या सेट के लिए सबसे अधिक संभावना है, यह सिर्फ कभी कभी एक सुंदर है कि एक पूरी व्यक्त करने का तरीका शर्तों का गुच्छा, सर्पाकार का एक बहुत बिना और कोष्ठकों और खरोज का एक बहुत। लेकिन वे हमें कोई अधिक दे शक्ति हम पहले से ही है। और अब छोरों। और यह एक है, हम देख लेंगे और धीरे धीरे एक छोटे से। लेकिन फिर, हम इन का उपयोग करने के लिए शुरू करेंगे, विशेष रूप से पहले से ही परिचित लोगों के लिए। अगर यह अविश्वसनीय रूप से, विहित तरीका है रहस्यमय तरीके से, सी में एक पाश लिखने के लिए अब खरोंच में एक पाश था बहुत सीधा। आप एक, हमेशा के लिए, ब्लॉक है। आप एक, दोहराने, ब्लॉक के साथ है सिर्फ एक नंबर पर आप में टाइप करना है। और, के लिए लूप के साथ, आप कर सकते हैं , उन विचारों के दोनों लागू लेकिन यह एक छोटे से अधिक तकनीकी है। लेकिन स्पष्ट रूप से, यह भी है अपेक्षाकृत सरल। आप का आदेश एक बार आप जानते संचालन, तुम सचमुच सिर्फ मूल्यों में प्लग करने के लिए जा रहे हैं और क्या करना है कंप्यूटर बताओ। यहाँ तो एक उदाहरण है। यह एक पाश है कि काफी बस, एक नंबर ऊपर से गिना जाता है दूसरे के माध्यम से। और बस glancing द्वारा तुम्हारे पास है, भले ही उस पर साथ कोई पूर्व अनुभव इस भाषा, क्या नंबर यह शायद कम से गिनती शुरू करता है? ठीक है, 0। और मुझे लगता है कि आप क्योंकि लग रहा है एक पूर्णांक और एक मैं वहाँ कि वहाँ जो एक चर रहा है। यह 0 करने के लिए प्रारंभ की है। और फिर बाद में, ऐसा लग रहा है हम, एक मूल्य printf गुजर रहे हैं। और, वास्तव में, मैं एक छोटे से यहाँ टाइपो बनाया। लेकिन इतनी आसानी से तय हो रहा है। मुझे यहाँ, मैं में जोड़ दें। अब हम printf किया जा रहा है कि प्लेसहोल्डर मूल्य पारित कर दिया। और के माध्यम से गिनती करने के लिए क्या हो रहा है? दर्शकों: 50। 50। 49। डेविड जे मालन: 49। इसलिए 50, पहली नज़र में, सही लगता है। लेकिन यह है कि, यह पता चला है, होने जा रहा है हम जाँच कर रखना कि हमारी हालत। और हम एक बार बंद करने के लिए जा रहे हैं मैं अब 50 से भी कम है। तो इस लूप, इसके विपरीत, चाहिए इतने लंबे समय मैं 50 से भी कम है, के रूप में निष्पादित। लेकिन यह 50, या 51 हो जाता है जैसे ही, या बुरा, यह स्वचालित रूप से बंद कर देना चाहिए। ठीक है। तो क्या वास्तव में यहाँ क्या होता है? तो इस का आदेश है एक पाश के लिए आपरेशनों। एक, आपके पास प्रारंभ के तथाकथित। यह पीले प्रकाश डाला हिस्सा कोड की, पहले मार डाला है और यह प्रभाव है कि, प्रति है बुधवार, तो आप शायद सोच भी। यह एक चर मैं और यह कहा जाता है बनाता है उस चर में दुकानों मान 0। तो मैं कहानी में इस बिंदु पर 0 है। अगली बात यह है कि इस निर्माण में होता है, हालत की जाँच हो जाता है। तो मैंने तुरंत जाँच मैं 50 से कम है? और हां, इस सवाल का जवाब अब के लिए हाँ, निश्चित रूप से, है। हाँ मैं, 0 है, और क्योंकि कि निश्चित रूप से कम से कम 50 है। तो फिर क्या होता है, यह है कि कोड की लाइन मार डाला जाता है। और वास्तव में, यदि कई वहाँ उन सर्पाकार में कोड की लाइनों, वे सब एक के बाद एक मार डाला। और यहाँ के प्रभाव में है, जाहिर है, बाहर मुद्रित करने के लिए करने के लिए जा रहा है, जो संख्या में मैं, 0, और फिर 1, और फिर 2 होना। लेकिन क्यों? ऐसा क्यों है कि वृद्धि प्राप्त करता है? खैर, चौथी बात यह है कि होता यह वाक्य रचना कि है अर्धविराम के बाद मार डाला जाता है। मैं कह का एक आशुलिपि तरीका है ++; मैं का मान लेते हैं, और यह करने के लिए एक जोड़ने; और फिर अगली बार के आसपास, जोड़ने यह करने के लिए 1; और अगली बार के आसपास, यह करने के लिए 1 जोड़ें। इसलिए हम जा रहा रखने के लिए, क्या होने जा रहा है अगले मैं नहीं जा रहा हूँ है फिर कभी मैं प्रारंभ। मैं प्रारंभ कर रखा हैं मैं 0, इस उदाहरण क्योंकि कभी खत्म नहीं होता मैं 0 में फँस जाएगा। लेकिन ऐसा करने के लिए क्या हो रहा है है हालत जाँच की जाएगी कि, कोड की लाइन मार डाला जाएगा, मैं वृद्धि की जाएगी हालत जाँच की जाएगी, कोड मार डाला जाएगा। और यह फिर से साइकिल चालन रखा और फिर, और फिर, मैं जब तक ++ 50 के मूल्य लाती है। हालत तो कहते हैं, 50 से 50 कम है? जवाब, ज़ाहिर है, कोई है, और ताकि पूरे कोड को क्रियान्वित करने से रोकता है। और आप स्क्रीन पर अधिक कोड है तो नीचे नीचे, कि आगे क्या होता है। यह इन घुंघराले ब्रेसिज़ के बाहर चबूतरे और उस के बाद अधिक मुद्रित करने के लिए जारी है। तो Foxtrot से अब एक मजाक है, कि, आप शायद अब समझ जाओगे। यह हमेशा अजीब बात है। यह दूसरे से टकराए की तरह है एक तरह से, चूना और फिर तुम्हें पता है तुम नहीं करना चाहिए इस तरह हास्य पर हँस होना। लेकिन कुछ उपलब्धि नहीं है यहाँ, शैक्षणिक दृष्टि से भी है। तो यह है कि मैं कर रहा हूँ कि पता चला है वाक्य रचना का एक टुकड़ा याद आ रही है, या Foxtrot के एक लापता यहां वाक्य रचना का टुकड़ा। क्या हमें मिला है, कि याद आ रही है हर दूसरे उदाहरण में, इस प्रकार अब तक? लौटें, तो, वहाँ है कि, कुछ और है हम लंबे समय से पहले करने के लिए वापस आ जाएगा कि। क्या याद आ रही है, हालांकि? हाँ। दर्शकों के सदस्य: [अश्राव्य] के प्रारंभ। डेविड जे मालन: ठीक है। इसलिए। तो वास्तव में, यह अच्छी तरह से है-, और गिनती प्रारंभ किया है ऊपर, या यों कहें, ऊपर की घोषणा की। तो यह इसे करने का एक और तरीका है। लेकिन नहीं एक लाइन में हालांकि यह वैध है। कैसे यहाँ के बारे में? दर्शकों के सदस्य: यह सर्पाकार है? डेविड जे मालन: हाँ। तो सर्पाकार याद कर रहे हैं। लेकिन इस कोड, मैं अपने क्रेडिट करने के लिए, मेरा मतलब है, वास्तव में, वाक्य रचना से वैध है। यह पता चला है, तुम नहीं करते घुंघराले ब्रेसिज़ जरूरत आप केवल कोड की एक पंक्ति है कि अगर आप लूप के अंदर निष्पादित करने के लिए चाहते हैं। अब हम हमेशा कक्षा में और में हमारे वितरण कोड के सभी, घुंघराले ब्रेसिज़ शामिल वैसे भी, सिर्फ स्पष्टता की खातिर। लेकिन पाठ्यपुस्तकों में एहसास है कि और ऑनलाइन उदाहरण हैं, तुम बहुत अच्छी तरह घुंघराले देख सकते हैं कुछ समय लापता ब्रेसेस। और कहा कि ठीक है, क्या करता है, तो आप इंडेंट और इरादा है कोड की सिर्फ एक ही लाइन है, और नहीं संभवतः कोड की कई लाइनों,। ठीक है। के मुद्दे पर तो संबंधित अस्पष्टता, अतिप्रवाह का एक मुद्दा है इस अर्थ में कि, इसी तरह, पूर्णांकों उन्हें सीमा की क्या ज़रूरत है बस चल बिन्दु मूल्यों की तरह? दुनिया एक चल बिन्दु में मूल्यों, हम केवल इतनी सटीक हो सकता है कभी कभी, जिसके बाद बुरी बातें, हो सकता है और हमारे कार्यक्रमों छोटी गाड़ी और त्रुटि हो सकती है। अब भी पूर्णांकों के साथ आप समस्याओं में चला सकते हैं। अब एक पूर्णांक एक भी नहीं है दशमलव बिंदु या के बाद यह संख्या। यह आम तौर पर सिर्फ एक प्राकृतिक संख्या है। तो एक पूर्णांक के साथ क्या गलत जा सकता है? मैं एक पूर्णांक के लिए उपयोग कर रहा हूँ , क्या गलत जा सकता गिनती? एक बहुत सरल लगता है। हाँ। दर्शकों के सदस्य: यदि नंबर हो जाता है [सुनाई] डेविड जे मालन: हाँ। आप इतने उच्च गिनती आपको लगता है कि क्या होगा अगर कि वास्तव में बड़ी संख्या में व्यक्त नहीं कर सकते। है ना? कुछ बिंदु पर, आप जा रहे हैं सीमाओं को पार करने के लिए एक 32-बिट मूल्य या 64-बिट मूल्य की। अब फिर से, मैं कैसे यकीन नहीं है एक 64-बिट मूल्य उच्चारण, लेकिन मैं एक 32-बिट पूर्णांक के साथ पता है, यह हो सकता है सबसे बड़ा मूल्य, यह केवल सकारात्मक है, तो मूल्यों, लगभग 4 अरब डॉलर है। मैं 5 अरब डॉलर तक की गिनती करने की कोशिश करते हैं तो, कुछ होने जा रहा है। लेकिन वास्तव में, क्या हो सकता है, देखते हैं। पूर्णांक की दुनिया में अतिप्रवाह, जहां आप एक अर्थ में, एक की क्षमता अतिप्रवाह पूर्णांक, क्या हो सकता है? तो यहाँ एक द्विआधारी संख्या है, यह 0 के लिए एक विपर्ययण है। यह सब एक है, और प्लेसहोल्डर्स है वहाँ, 2 की शक्तियाँ हैं, इसलिए इस बाइनरी है। इसलिए इन स्क्रीन पर 8, 1 टुकड़े कर रहे हैं। और यदि आपको याद है या आप जल्दी गणित है, क्या मूल्य का प्रतिनिधित्व किया जा रहा है यहां इन आठ 1 बिट्स के साथ? 255। और तुम काफी यकीन नहीं थे, भले ही गणित के, आप इसे बाहर कर सकता है। या आप बस की तरह कर सकता है इसकी एक वजह यह माध्यम से, मैं कर रहा हूँ, तो एक मिनट रुको एक 8 बिट मूल्य का प्रतिनिधित्व, और मैं 256 संभव मूल्यों मिल गया है, लेकिन जो सबसे पहले, 0 है मैं सिर्फ इतना पता है कि सबसे बड़ी, 255 होने जा रहा है और कहा कि यह एक हो सकता है क्या। इसलिए मैं इस मूल्य को 1 को जोड़ने का प्रयास लगता है। आप कक्षा में क्या होगा स्कूल एक 1 उनका कहना है, और यह जब वास्तव में, क्योंकि फिट नहीं है आप एक ले जाने के लिए? जा रहा यह संख्या क्या है आप एक जोड़ने जब बनने के लिए? यह 0 बनने जा रही है। है ना? आप अधिक bits-- था और क्योंकि अगर मैं हूँ एक तरह से, करने की कोशिश here-- इसे बाहर टाइप हम और अधिक बिट्स था, तो क्या हम 1 जोड़ रहा है यहाँ क्या कर सकता है, और फिर हम इस मिलता था। वूप्स। हम यहाँ पर एक एक बिट के लिए सभी तरह होगा। लेकिन यह एक सीमित है, तो मूल्य, यह केवल 8 बिट है, और कहा कि पूर्व निर्धारित है कंप्यूटर से, 1 कि प्रभावी ढंग से नहीं होता है। यह बस की तरह एक पहाड़ से गिर जाता है। और इसलिए तुम 1-255 जोड़ने के लिए, क्या आप जाहिरा तौर पर मूल्य मिलता है? 0। और गलती संख्या इतनी, और शायद, अनजाने में, इस तरह चारों ओर लपेटकर खत्म होता है। तो क्या इस बात का निहितार्थ यह है कि हो सकता है? खैर, कुछ अलग बातें कर रहे हैं। एक तो, यह देख अंत है 0 की तरह, अनजाने में, लेकिन आप की तरह देख सकते हैं यहां तक ​​कि असली दुनिया में, बेहतर या बदतर के लिए, एक सीमा के इस विचार की अभिव्यक्ति। उदाहरण के लिए, आप में से किसी के लिए कौन कभी लेगो स्टार वार्स निभाई है, किसी को भी पता होता है सिक्कों की अधिकतम संख्या आप लेगो स्टार वार्स में जमा कर सकते हैं? के आधार पर एक अनुमान ले लो आज के अग्रणी सवाल। यह 256 या 255 से भी बड़ा है। यह 4 अरब डॉलर है। तो यह पता चला है, और कुछ people-- वहाँ कुछ googling की पुष्टि की आखिरी night-- 4 अरब सोने के सिक्के मिल गया है, या लेगो स्टार वार्स में whatnot। जाहिरा तौर पर, हालांकि है एक तरह से खेल चाल के लिए, एक बग या सुविधा नहीं है, कि आप की सुविधा देता है अभी बहुत सारे और बिन्दु के बहुत जमा। लेकिन सबसे बड़ा संभव मूल्य के अनुसार मैं किसी का इस स्क्रीन शॉट के लिए ऑनलाइन पाया, वास्तव में 4 अरब डॉलर है। अब ऐसा क्यों है? यह ठीक 4 अरब है शायद किसी ने फैसला किया है, क्योंकि इस खेल कौन लिख रहा था, वे 4 अरब कर सकता है, कुछ, कुछ, कुछ, मूल्य की तरह मैं लगाई कैलकुलेटर के साथ पहले, लेकिन यह मनुष्य के लिए सिर्फ एक छोटे से क्लीनर है अधिकतम संख्या में कहने के लिए coins-- या स्टड की, वे आपको लगता है कि them-- फोन के रूप में जमा कर सकते हैं 4 अरब है। और हां, यह क्यों होता है? कैसे लेगो खेल है काउंटर को लागू इस बात का ट्रैक रख रहा है तुम्हारे पास सिक्कों की संख्या? वे क्या प्रयोग कर रहे हैं? दर्शकों के सदस्य: यह बंद हो जाता है 4 अरब के बाद गिनती। डेविड जे मालन: यह बंद हो जाता है 4 अरब के बाद गिनती, जो आप कर सकते हैं इसका मतलब एक प्रोग्रामर के रूप में, अनुमान, वे शायद रहे हैं कि एक 32 बिट पूर्णांक के प्रयोग से। प्रोग्रामर की तरह सचमुच बस टाइप, पूर्णांक, अपने या अपने कोड में, और उस चर के प्रकार है कि वे किसी के कोड स्टोर करने के लिए प्रयोग कर रहे हैं। तो अन्य अभिव्यक्तियों वहाँ सीमा के इन प्रकार के। इसलिए मैं इस game-- नहीं खेला है और मैं इतिहास पर पढ़ रहा था much-- रूप में, लेकिन में इस बात की पुष्टि करने के लिए सभ्यता, जहां के मूल संस्करण आप जाहिरा तौर पर प्रत्येक के साथ बातचीत अन्य और युद्ध छेड़ने या शांति हो सकती है, गांधी में से एक होना चाहिए था सबसे शांतिपूर्ण वर्ण, के रूप में मैं पहली बार में, यह समझना सभ्यता का संस्करण। और वास्तव में, 1 से 10 के पैमाने पर, उसकी आक्रामकता सिर्फ एक एक था। तो कभी इतना हल्का आक्रामक, जाहिरा तौर पर। लेकिन कुछ बिंदु पर, आप जाहिरा तौर पर कर सकते हैं अपने भूगोल में लोकतंत्र स्थापित करें। और अगर आप लोकतंत्र स्थापित करते हैं तो खेल के अपने संस्करण में, फिर अपनी आक्रामकता के स्तर से नीचे चला जाता है। यह अच्छी बात है। लोगों को और अधिक शांत कर रहे हैं जाहिर है, उस स्थिति में। लेकिन जाहिर है, किसी को किया था एक, अगर, हालत नहीं कोड के मूल संस्करण में। इसलिए गांधी की आक्रामकता के स्तर से चला गया एक सकारात्मक, शून्य से 2, 1 नकारात्मक करने के लिए, लेकिन खेल नहीं करता ऋणात्मक संख्याओं को समझते हैं। तो क्या हुआ गांधी की आक्रामकता था स्तर, 1 नकारात्मक करने के लिए, 0, 1 से चला गया का प्रभाव था जो किया जा रहा करने के लिए चारों ओर लपेटकर सबसे आक्रामक चरित्र खेल में, 255 का एक मूल्य पर, 1 से 10 के पैमाने पर। और तब से, वहाँ गया है इस खेल के अधिक अवतारों, और वे के रूप में इसे रखा है ईस्टर अंडे का एक तरह से, गांधी जाहिरा तौर पर है कि तो बहुत आक्रामक। लेकिन यह एक का परिणाम था बहुत ही सरल प्रोग्रामिंग त्रुटि खेल की है कि बहुत जल्दी संस्करण में। अब अधिक परेशान है, और अधिक हाल ही में, बोइंग 787 एक होने के रूप में दर्ज किया गया था डिवाइस का बग, तरह नहीं आप विशेष रूप से एक बग है चाहता हूँ। और लक्षण, कि मैं पढ़ा हूँ यहाँ, एक लेख ऑनलाइन से, यह एक मॉडल 787 हवाई जहाज था कि लगातार संचालित किया गया है 248 दिनों के लिए सभी खो सकते हैं वर्तमान बारी, एसी, के कारण बिजली, जनरेटर नियंत्रण इकाई, GCUs, एक साथ असफल सुरक्षित मोड में जा रहा। तो यह जारी एक चेतावनी थी इस समस्या की खोज की गई थी। इस हालत के कारण होता है एक सॉफ्टवेयर काउंटर से, , GCUs करने के लिए आंतरिक इसलिए एक पूर्णांक या एक चर, 248 के बाद कि इच्छा अतिप्रवाह निरंतर बिजली का दिन। बोइंग की प्रक्रिया में है एक GCU सॉफ्टवेयर अपग्रेड विकासशील कि असुरक्षित स्थिति में सुधार होगा। मिसाइल इतना पसंद परिदृश्य, जिसमें वे चर किसी तरह का था कि, गिनती, और भरोसा था और गिनती, लेकिन धीरे-धीरे बह निकला इसकी क्षमता की सीमाओं, इसी तरह लानत हवाई जहाज किया एक चर अतिप्रवाह है चलाने का पर्याप्त समय के बाद। और तो जीभ में गाल रास्ता इस समस्या को हल काम करने का वास्तव में, रिबूट अपने विमान हर के लिए है स्मृति नष्ट हो जाता है, ताकि 247 दिनों, और चर 0 करने के लिए वापस चला जाता है। लेकिन एहसास, यह एक बहुत है सॉफ्टवेयर की बड़ी अवतार, लेकिन हम एप्पल के बारे में सुना है, खासकर के रूप में कार में जा रहे ऑपरेटिंग सिस्टम, और गूगल से कारों स्वयं ड्राइविंग, और सॉफ्टवेयर के अवतारों में से किसी भी नंबर हमारे दैनिक जीवन, टीवी में और देखता है, और अधिक, सॉफ्टवेयर से घिरे थे एहसास, जिनमें से सब हमें मनुष्य ने लिखा है। और हम सब को जल्द ही पता चल जाएगा, के रूप में यह बहुत आसान है और बहुत खास है सॉफ्टवेयर जब लेखन गलतियों को बनाने के लिए। और आप उन्हें पकड़ने नहीं करते हैं, कुछ बुरी बातें हो सकता है। अब कभी कभी, कुछ अजीब बातें हो सकता है, या कम से कम कभी कभी हम कुछ खराबी की उम्मीद करना जानते हैं। तो 0 ग्रेड से, 0 से विभाजित स्कूल, आम तौर पर एक बुरी बात है। यह अपरिभाषित है। और यह out-- बदल जाता है और देखो अगर चलो इस चुन सकते हैं अपने mic कि एप्पल up-- हाल ही में इस के साथ कुछ मज़ा था। तो मैं यहाँ एक iPhone है। मैं सिरी से बात करने और उसे पूछने के लिए जा रहा हूँ मुझे 0 से विभाजित 0 का जवाब देने के लिए। 0 0 से क्या बांटा गया है? सिरी: आप 0 है कि कल्पना कीजिए कुकीज़, और आप उन्हें समान रूप से विभाजित 0 दोस्तों के बीच। प्रत्येक व्यक्ति कितने कुकीज़ मिलता है? देखें? यह मतलब नहीं है। और कुकी दानव दुख की बात है कोई कुकीज़ देखते हैं कि। और आपको लगता है कि दु: खी हैं आपके कोई मित्र नहीं हैं। डेविड जे मालन: यह अप्रिय की तरह है। तो यह सिर्फ वहाँ क्या कहा गया था है। यह इसे परिभाषित नहीं कर रहा है, अनिश्चित है, और वास्तव में, कई प्रोग्रामिंग भाषाओं या, वास्तव में, थे होगा जब आप एक प्रोग्राम में, का पता लगाने, 0 0 विभाजित करने के लिए प्रयास करें। हालांकि इस से ज्यादा मजेदार है, कि जाहिरा तौर पर, कुकी दानव इन दिनों ट्विटर पर है। और वह इस के साथ, यह करने के लिए कहा, जो बिल्कुल आराध्य है। लेकिन हम पर एक त्वरित देखो ले चलो अन्य निर्माणों की एक जोड़ी, और फिर इस के कुछ रखा है कोड अच्छे तरीके में उपयोग करने के लिए। तो यह इसके अलावा, पता चला है छोरों के लिए नहीं है, कुछ है कि थोड़ी देर के पाश बुलाया अलग दिखता है और कार्यान्वित किया जाता है एक छोटे differently-- और हम अंततः examples-- देखेंगे लेकिन कुछ समझ में, यह है क्योंकि यह आसान है आप प्रारंभ करने के लिए अनुमति नहीं है और पाश की सीमा के भीतर अद्यतन करें। आप अभी भी इसे लागू कर सकते हैं। तो आप सही ही बातें कर सकते हैं थोड़ी देर के पाश के साथ, पाश के लिए एक साथ के रूप में, लेकिन अपने वाक्य रचना, ultimately-- हम अंत में हूँ के रूप में see-- अलग होने जा रहा है। एक करते हैं, जबकि पाश भी नहीं है जो वास्तव में एक छोटे से अलग है कि एक जबकि पाश में और हमेशा एक जबकि पाश यदि, पहले उनकी हालत की जांच आप नीचे करने के लिए इस बात को शीर्ष पढ़ यह करने के लिए जा रहा है जैसे यह एक तरह से लग रहा है यह पिछले क्योंकि यह हालत की जांच कोड की सही मायने में अंतिम पंक्ति। और वास्तव में, कि उपयोगी होने जा रहा है हम लिखने कि कुछ कार्यक्रमों में, आप बस आँख बंद करके कुछ करना चाहते हैं, तो और अंत में हालत की जाँच करें। यह जरूरी है कि एक बुरी बात नहीं है। हम चर चाहते हैं, तो हम क्या कर सकते हैं यह अलग तरीके के एक जोड़े में। और हम Foxtrot में देखा था कार्टून, इसे करने का एक ही रास्ता है, जहां आप अपने चर घोषित, पूर्णांक काउंटर अर्धविराम की तरह, और तब शायद अगले later-- लाइन, शायद 10 लाइनों later-- आप वास्तव में इसे प्रारंभ। कोड की तो इन दो लाइनों int प्रकार की एक चर घोषित यह देता है तो और, काउंटर इसे कहते हैं मुझे पर्याप्त बिट्स एक int धारण करने के लिए। और फिर अंत में कहते हैं, कि चर में मान 0। यह एक में 0 और 1 के व्यवस्थित करता है पैटर्न, हम पिछले हफ्ते से पता है कि, हम 0 के रूप में जानते नंबर प्रतिनिधित्व करता है। या सच कहूँ, तुम इतना कर सकते हैं अधिक संक्षेप में, बस यह पसंद है। अब हम भी है कार्य कॉल करने की क्षमता। और वास्तव में, यहाँ एक 2 रेखा है कार्यक्रम, या उसके एक अंश, कि वास्तव में करने के लिए हमें की अनुमति देता है कुछ कोड लिखने कि user-- से एक स्ट्रिंग हो जाता है ज्यादा हमारे स्वयंसेवक एक पल की तरह ago-- परिणाम में भंडारण नाम एक चर बुलाया, और then-- ज्यादा हमारे स्वयंसेवक के साथ की तरह उन मूल्यों को बाहर printf-- प्रिंटों के साथ दो तर्क में गुजर रहा है, स्ट्रिंग, चर द्वारा पीछा , नाम, खुद को बुलाया। तो चलो पहले, एक नजर डालते हैं हम वहाँ वापस मारियो करने के लिए आ इस बात का अब, उदाहरण के एक जोड़े पर। मैं आगे और खुले जाने के लिए जा रहा हूँ ऊपर, के समारोह-0.c, हम कहते हैं। और हमेशा की तरह, इस कोड है पाठ्यक्रम की वेबसाइट पर उपलब्ध है, इसलिए आप पर साथ खेल सकते हैं घर और बाद में इसे देखो। यह है में लेकिन यहां कार्यक्रम है लाइन 17 से 22 करने के लिए सार,। मुख्य कार्यक्रम है जहां कार्यक्रम हमेशा शुरू करने जा रहा है। इस कार्यक्रम में, जाहिर है, जा रहा है , पेट के बाहर अपने नाम मुद्रित करने के लिए। यह तो GetString फोन करने के लिए जा रहा है बस की तरह हम अपने स्वयंसेवकों के साथ किया था। और फिर, यह दिलचस्प है, यह PrintName फोन करने के लिए जा रहा है। यह वहाँ, यह सब समय पता चला है PrintName नामक एक समारोह हो रहा है। यही कारण है कि किसी का नाम प्रिंट। हम से printf का उपयोग करने की जरूरत नहीं थी पुराने, PrintName नहीं है। लेकिन यह है कि भ्रामक है PrintName नहीं करता है क्योंकि सी लोग नहीं था के साथ आए कुछ 40 या 50 साल पहले यह आविष्कार, मैं इसके बजाय, किया था। और वास्तव में, मैं स्क्रॉल यदि इसके अलावा, सूचना नीचे मैं अपने खुद के कैसे लिख सकते हैं सी कार्यों में हम अंत में हूँ हम कहते रहते क्यों समझा, शून्य, कुछ स्थानों में, लेकिन आज के लिए, चलो बस नाम देखो। 24 लाइन पर, यदि आप चाहते हैं , अपने खुद के समारोह बनाने तुम सचमुच लिखने समारोह का नाम। मैं PrintName चुना है। कोष्ठकों में, आप तो क्या निर्दिष्ट प्रकार आदानों, और आप में से कितने इस समारोह में लेना चाहते हैं। इस मामले में, मुझे ले जाना चाहता हूँ कहा जाता 1 चर, नाम, और इसके बारे में होने जा रहा है प्रकार, स्ट्रिंग, तो यह जा रहा है पात्रों में से कुछ अनुक्रम किया जाना है। और फिर, इस program-- स्क्रैच में बहुत पसंद है, आप कस्टम पहेली हो सकता है pieces-- इस कस्टम व्यवहार किया जा रहा है। यह printf फोन करने के लिए जा रहा है में गुजर रहा है, नमस्कार, प्लेसहोल्डर, और फिर इसे प्लग करने के लिए जा रहा है जो कुछ भी उपयोगकर्ता बुलाया। तो इस का एक उदाहरण है क्या एक कंप्यूटर वैज्ञानिक होगा कॉल अमूर्त या कार्यात्मक अभी जो कर रहे हैं अपघटन, saying-- यदि है की कल्पना तरीके यदि आप इस उच्च स्तरीय विचार पसंद जैसे मैं कार्यक्षमता चाहते हैं कि आप पूरी तरह से, किसी का नाम प्रिंट सचमुच तो printf लिखने के लिए और कर सकते हैं आप चाहते हैं बहस में पारित, और इस कार्यक्रम के लिए काम करेंगे, यह बुधवार के बाद से किया है। लेकिन अगर आप दूर सार करने के लिए शुरू कर सकते हैं एक नाम के मुद्रण की धारणा। आप इसे एक नाम दे सकते हैं, PrintName, और इस तरह हफ्ते 0 से लेयरिंग के इस विचार है। इसके बाद, मैं और आप जानते हैं की जरूरत नहीं है या PrintName कार्यान्वित किया जाता है कैसे ध्यान रखते हैं। हाँ यह है कि यह हो सकता है, printf का उपयोग करता है जिन का उपयोग करता है क्या जानता है, है ना? कौन परवाह करता है? अब मैं यहाँ बात कर रहा हूँ, बजाय नीचे यहाँ की। और वास्तव में, हमारे कार्यक्रमों मिल के रूप में अधिक आधुनिक और परिष्कृत, हम के लिए दी लेने रखने के लिए जा रहे हैं निचले स्तर पहेली टुकड़े मौजूद है। हम उन्हें लिखा था क्योंकि या किसी और इसलिए किया था, हम तो उनमें से शीर्ष पर निर्माण कर सकते हैं। चलो इस पर एक नज़र रखना संस्करण है, एक समारोह। तो यह एक छोटे से अधिक है उन्नत है, लेकिन यह पता चला है CS50 के पुस्तकालय में है कि, केवल एक GetInt समारोह नहीं है। हम करने के लिए, साल पहले, मुझे नहीं लगता था एक GetPositiveInt समारोह को लागू। और वह एक छोटे से परेशान है, क्योंकि अगर तुम लोगों को एक कार्यक्रम जिसमें लिख रहे हैं आप एक सकारात्मक प्राप्त करना चाहते हैं उपयोगकर्ता से पूर्णांक, आप बिल्कुल GetInt उपयोग कर सकते हैं। और आप पूरी तरह से जांच कर सकते हैं हालत और शायद एक पाश कि पूर्णांक अधिक है और 0 से उपयोगकर्ता पर चिल्लाना वह या वह देना नहीं है आप एक सकारात्मक संख्या। लेकिन हम इस का निर्माण करते हैं इमारत, एक अपने आप को ब्लॉक, कस्टम स्क्रैच टुकड़ा, अगर तुम जाएगा। मैं एक कार्यक्रम के लिए जा रहा हूँ यहाँ है कि अंत में, मैं फोन करने के लिए सक्षम होना चाहता हूँ GetPositiveInt, और मैं बनना चाहता हूँ कि पूर्णांक है जो कुछ भी बाहर मुद्रित करने में सक्षम। लेकिन यह अब दूर abstracted है। यह सिर्फ एक उच्च स्तर को देखते हुए किया गया है यह क्या करता है कि कहते हैं, नाम, क्योंकि यह बहुत बढ़िया है, जो पढ़ने के लिए अब बहुत ही सहज। मुझे परवाह करते हैं और जो नीचे है डाकू, मुझे नीचे स्क्रॉल। और यह एक छोटे से डराना है पहली बार में, विशेष रूप से यह आपका पहला कार्यक्रम है, लेकिन हम एक नजर डालते हैं। मैं अब और नहीं, शून्य, कह रहा हूँ यह कार्य भी निकलता है, क्योंकि ज्यादा GetString की तरह कर सकते हैं मेरे लिए एक मूल्य वापसी। वे बस नहीं है स्क्रीन को मुद्रित करने के लिए, वे वास्तव में हाथ कर सकते हैं मुझे वापस कुछ। और PrintName जबकि पहले, मैं कुछ भी वापस की जरूरत नहीं थी। मैं के पक्ष प्रभाव की जरूरत कुछ, स्क्रीन पर दिखा लेकिन मैं एक इंसान की जरूरत नहीं थी मुझे कुछ वापस सौंपने के लिए। इधर, GetPositiveInt साथ GetInt के साथ की तरह, मैं कुछ वापस सौंप दिया जाना चाहते हैं। इसलिए मुझे लगता है, शून्य नहीं कह रहा हूँ रेखा 23, लेकिन पूर्णांक पर, जो कहते हैं, इस समारोह मैं लिख रहा हूँ कि, GetPositiveInt करने जा रहा है बुलाया एक पूर्णांक, नहीं मुझे कुछ नहीं हाथ वापस, शून्य नहीं। इस बीच, यह कोई ले जा रहा है आदानों, तो मैं इसे एक तरह से उलट दिया है। मैं GetPositiveInt किसी भी नहीं दे रहा हूँ इनपुट, मैं यह मेरे अपने उत्पादन देना चाहता हूँ। और फिर अब क्या होता है? तो यहाँ मैं एक चर घोषणा कर सकते हैं कि कैसे है। मैं, लूप के बाहर इसे किया है हम अंत देखेंगे कारणों के लिए, लेकिन यह सिर्फ देता है मुझे 32 बिट कहा जाता है, एन, और मैं पूर्व निर्धारित करने के लिए है उन्हें पूर्णांक स्टोर करने के लिए। और यहाँ, निर्माण, जबकि ऐसा है कि यह उपयोगी है और इस वजह से है। सचमुच ऐसा करते हैं, : 1 से भी कम है, जबकि। तो चलो देखते हैं क्या होता। मैं, कृपया बाहर प्रिंट मुझे एक सकारात्मक पूर्णांक दे। मैं तो CS50 का उपयोग करते हुए, एक int मिल कार्य और n में संग्रहीत। और फिर, कोड की क्या लाइन शायद तार्किक रूप से, अगले मार डाला जाता है? कौन सी लाइन नंबर? हाँ, तो 31। आप है जब तक आप यह पता नहीं होता बताया कि या ऐसा यह अनुमान किया गया है, लेकिन यह सच है। यह नीचे से ऊपर चला जाता है और फिर दोहरा रहता है। मैं नंबर, कहते हैं में टाइप किया है तो अगर एक नकारात्मक, एक नकारात्मक से एन कम है? हाँ। 1 नकारात्मक 1 से कम है क्योंकि। तो क्या होना चाहिए? मैं यह करने के लिए जा रहा हूँ एन 1 से कम है, जबकि इसलिए मैं वापस लाइन 28 पर जाने के लिए जा रहा हूँ। और प्रत्येक time-- और की है- चलाते हैं समारोह 1 यह संकलन करने के लिए बना है, और अब समारोह 1 स्लेश डॉट। मैं नकारात्मक 1 लिखते हैं, तो यह है मुझ पर चिल्ला रखने के लिए जा मैं प्रत्येक क्योंकि सहयोग तक मेरी आदानों की कम से कम 1 है और यह कम से कम 1, जबकि अगर, मैं यह कर रखने के लिए जा रहा हूँ। मैं अंत में 50 की तरह यह एक नंबर देते हैं, शुक्र है, यह 50 के लिए धन्यवाद, कहते हैं। क्यों? N से कम नहीं है, क्योंकि जैसे ही 1, मैं इस पाश में फंस रही बंद और इस नए कीवर्ड आज वापसी, सचमुच ऐसा ही करता है। तो मैं सिर्फ एक में, क्रियान्वित किया है भावना, GetString के बराबर है, जहां मैं करने के लिए वापस सौंप रहा हूँ जो कोई भी, कुछ मूल्य मुझे इस्तेमाल कर रहा है। यह होना जरूरी नहीं है एक स्ट्रिंग, यह एक पूर्णांक है। त्वरित, तो एक साधारण उदाहरण के लिए, लेकिन हम जल्द ही करेंगे कुछ और अधिक परिष्कृत देखना अभी भी संस्करणों। वास्तव में, एक पर एक नजर डालते हैं return.c कहा जाता है जो सांख्यिक एक,। और यह एक वास्तव में है एक छोटे से सरल। इसलिए इस कार्यक्रम के उद्देश्य में life-- के संकलन और इसे चलाते हैं, इसलिए डॉट, वापसी कर स्लैश, return-- नोटिस कार्यक्रम केवल मूल्य 2 क्यूब्स। यह यह कठिन बहुत बेवकूफ है है कोड, यह किसी भी जानकारी नहीं ले करता है, लेकिन यह एक और प्रदर्शित करता है मैं अपने आप को लिखा है कि समारोह। यहाँ तो, मैं घोषित किया है एक चर, int प्रकार की, एक्स बुलाया नंबर 2 के बराबर, पूरी तरह से मनमाना। यह सिर्फ कुछ शराबी मुद्रण है। यह एक्स का कहना है कि अब इस तरह के और इस तरह, cubing डॉट डॉट डॉट। और जादू लाइन 21 में जाहिरा तौर पर है। मैं घन नामक एक समारोह बुला रहा हूँ, मैं इसे कागज के एक पत्रक सौंप रहा हूँ उस पर लिखा नंबर 2 के साथ, और क्या मूल्य है, गणितीय, मैं इसे से बाहर निकलना चाहते हैं? बस एक मानसिक स्वास्थ्य की जांच के रूप में? 8। है ना? मैं 2 से 2, वापस cubed करना चाहते हैं 3 की शक्ति है, तो 8 वापस। तो जहां घन कार्यान्वित किया जाता है? खैर, यह यहाँ नीचे कार्यान्वित की नोटिस। और पहले की तरह, तार्किक, यहां तक ​​कि वाक्य रचना शायद है, हालांकि आप में से कई लोगों के लिए बहुत नया है, मैं इस समारोह चाहते हैं की एक चादर मुझे वापस करने के लिए हाथ उस पर एक पूर्णांक के साथ कागज। तो मैं एक पूर्णांक है, नाम, मनमाने ढंग से है लेकिन सुविधा घन कहा जाता है। यह करने के लिए इनपुट, के एन है इतना है कि, पूर्णांक टाइप मैं संख्या में पारित कर सकते हैं कि कैसे कागज के एक पत्रक पर 2। और फिर यह सी का समर्थन करता है पता चला है गणित, इसलिए यदि आप समय के लिए एक्स की जरूरत नहीं है तुम सिर्फ तारांकन का उपयोग गुणन के लिए। और इस n बार n बार रिटर्न बस एक घन मूल्य है जो एन। तो हम कहाँ इस सब के साथ जा रहे हैं? यह निश्चित रूप से एक है बवंडर दौरे, बाकी का आश्वासन दिया, कि सुपर वर्गों में और इस समस्या में, 1 सेट आप के माध्यम से चला गया हो जाएगा इस सब के सब अधिक। और इस समस्या को एक सेट में, हम संक्रमण करेंगे स्क्रैच की चित्रमय दुनिया से कुछ अधिक कमांड लाइन के लिए सी में लेकिन हम प्रेरणा आकर्षित करेंगे यहाँ इस खेल से पुराने, जिसमें से सी और के मानक संस्करण का उपयोग पी सेट आप मारियो के पिरामिड को लागू करेंगे। और हैकर संस्करण में पी सेट, तुम इतनी चुनाव करने के लिए चुनते हैं, आप थोड़ा और अधिक लागू करेगी दो चोटियों के साथ पिरामिड को चुनौती दे। तुम भी एक को लागू करेंगे एल्गोरिथ्म, एक लालची एल्गोरिथ्म। यह वहाँ है पता चला है कुछ दिलचस्प तर्क की प्रक्रिया के पीछे एक खजांची के स्टेशन चल और वास्तव में सौंपने किसी को वापस बदल जाते हैं। काफी है कि एक एल्गोरिथ्म है सीधा, कि तुम भी हो सकता है जब आप पहली बार पढ़ा जब intuitively काबू it-- कि मैं हमेशा हूँ है साकार मैं किसी को कुछ दिया है किसी भी समय किया आप हमेशा के लिए अनुमति देता है कि पैसे back-- की संख्या कम से कम कागज के नोटों या धातु के सिक्के आप उपयोगकर्ता के लिए वापस सौंपने रहे हैं। और यह, ज़ाहिर है, मजबूर है आप सीवीएस या whatnot के लिए जाना है, क्योंकि अगर आप सौंपा जा नहीं करना चाहते हैं लोगों की एक पूरी गुच्छा या पैसे की एक पूरी गुच्छा। आप fewest चाहते हैं सिक्के, शायद संभव। अंत में, आप भी चुनौती दी हो जाएगा पानी की दुनिया में भिगोना और वास्तव में एक प्रशंसा मिल प्रवाह की दर के बीच एक मानचित्रण के लिए, की बौछार में पानी की तरह, अभी कितना पानी इस्तेमाल किया जाता है। और उसमें संकेत, यहाँ इस क्लिप हो जाएगा, हम पर समाप्त होगा जो सिर्फ 60 सेकंड, कि पेंट का एक चित्र कम प्रवाह सिर बौछार। [वीडियो प्लेबैक] -ठीक है। मैं यहाँ सब कुछ मिल गया। मैं, चक्रवात एफ सीरीज के लिए मिला हाइड्रा, Jetflow, स्टॉकहोम Supersteam, तुम यह नाम है। -और आप क्या सलाह देते हैं? -आप क्या ढूंढ रहे हैं? -पावर मैन। पावर। की तरह Silkwood। -यही विकिरण के लिए है। -यह सही है। यह क्या है -Now? -यही कमांडो 450 है। मुझे लगता है कि एक नहीं बेचते। -लेकिन कि हम क्या चाहते हैं। यह एक कमांडो 450 है। -नहीं मुझे विश्वास है। यह केवल सर्कस में इस्तेमाल किया है। यह हाथियों के लिए है। कुछ भी भुगतान -I'll। जेरी के बारे में क्या? -वह कि नहीं संभाल सकता है। उन्होंने कहा कि नाजुक है। अरे हां। [अंत प्लेबैक] डेविड जे मालन: ठीक है। यही कारण है कि CS50 के लिए यदि है। हम अगले सप्ताह आप देखेंगे। स्पीकर 1: [? स्कली?], [? इयान?] जहाँ तक इस किया परियोजना के रूप में, क्या तुम लोग साथ आए हैं? स्पीकर 2: ठीक है, हम दे दिया है यह सोचा था की एक किस्म है, और हम सबसे अच्छा तरीका है कि लगता है-- अध्यक्ष 3: मैं कर सकता हूँ? स्पीकर 2: हाँ। हर तरह से, वास्तव में। अध्यक्ष 3: तो मुझे लगता है कि हम अपने विचार योग कर सकते हैं एक word-- साथ कुछ भी नहीं outros के लिए। डेविड जे मालन: कुछ नहीं? अध्यक्ष 3: कुछ भी नहीं। डेविड जे मालन: इसका क्या मतलब है? अध्यक्ष 3: Outros बारे में कुछ नहीं कर रहे हैं। स्पीकर 2: ठीक है, मेरा मतलब है, दर्शन में, मेरा मतलब है, कुछ भी नहीं हमेशा कुछ न कुछ है। स्पीकर 1: तो what's-- आधार क्या है? अध्यक्ष 3: तो यह जीवन की तरह है। ठीक। आपने आज क्या किया? डेविड जे मालन: मैं उठकर था, नाश्ता, और काम करने के लिए आया था। अध्यक्ष 3: यह है कि एक किया है। स्पीकर 2: मेरा मतलब है लेकिन, नहीं करना चाहिए कुछ the-- पर उसे करने के लिए होता है अध्यक्ष 3: नहीं, नहीं, नहीं, नहीं। कुछ नहीं हुआ। स्पीकर 1: तो क्यों हम देख रहे हैं? अध्यक्ष 3: क्योंकि यह CS50 के लिए एक किया है। डेविड जे मालन: अभी नहीं।