[संगीत बजाना] डेविड मालन: नमस्ते, हर कोई। यह CS50 के supersection है। निरुपित धारा नहीं होगा एक सप्ताह के लिए शुरू करते हैं। और इसलिए आज मैं यहाँ हूँ with-- मारिया: मारिया। डेविड मालन: वास्तव में --to समस्या पर एक नज़र रखना एक, पाठ्यक्रम का सेट सामग्री के पहले सप्ताह, आप CS50 आईडीई के साथ उन्मुख हो, एक सा लिनक्स, है कि ऑपरेटिंग सिस्टम की आईडीई पर चल रहा है, साथ ही संक्रमण से कुछ को देखो सी अग्रणी करने के लिए खरोंच से समस्या का एक सेट अप। तो आगे की हलचल के बिना, समस्या में, एक सेट आप हो जा रहे हैं CS50 आईडीई, के लिए शुरू की है, जो इस वेब आधारित प्रोग्रामिंग है हम क्रम में उपयोग करने वाले पर्यावरण कार्यक्रमों लिखने के लिए। यह बहुत ही देखने के लिए डिजाइन किया गया है एक ठेठ कंप्यूटर की याद ताजा एक ऑपरेटिंग सिस्टम चलाने के लिनक्स बुलाया प्रणाली। लेकिन यह तथाकथित बादल में है, जो क्लास में हर कोई इसका मतलब वास्तव में हो सकता है उसके या उसके अपने खाते के रूप में अच्छी तरह से इस्तेमाल करते हैं और। तो आप में से अधिकांश शायद का इस्तेमाल नहीं किया पहले या शायद एक लिनक्स वातावरण यहां तक ​​कि एक कमांड लाइन वातावरण। और एक कमांड लाइन पर्यावरण अलग है। यह सब शाब्दिक है। यह सब कुंजीपटल आज्ञाओं है। और यह कोई mousing, कोई प्रतीक है, कोई वार्ता खिड़कियां, कोई मेनू। यह विशुद्ध रूप से पाठ है। तो पहली बार में, यह एक तरह एक कदम की तरह लगता है पीछे की ओर मिलावट के मामले में। लेकिन यह एक बहुत समाप्त होता जा रहा अधिक शक्तिशाली है, निश्चित रूप से, एक कंप्यूटर वैज्ञानिक के लिए, अंततः। तो चलो एक नज़र रखना। यहाँ मैं, CS50.io में हूँ जो के माध्यम से आप CS50 आईडीई में लॉग इन कर सकते हैं। और भी बहुत कुछ खरोंच में की तरह नहीं है, इस स्क्रीन पर तीन प्राथमिक क्षेत्रों में। तो बाएं हाथ की ओर है, हम है क्या फ़ाइल ब्राउज़र हो जाएगा। और इस फ़ोल्डर में वहाँ है अब ठीक है जो खाली है ऊपर, मैं सभी से छुटकारा मिल गया के बाद से मेरी supersection पहले फ़ाइलों। और कहा कि जहां हम करेंगे है हम लिखने कि सी फाइलों को बचाने के लिए। शीर्ष सही पर, हम एक जगह है, जहां है हमारे कोड के सभी लिखा मिलता जा रहा है। और वास्तव में, मैं इस प्लस क्लिक करते हैं, इस मुझे नई फ़ाइल का चयन करते जा रहा है। और यहाँ मैं या सी कोड लिखने शुरू कर सकते हैं, वास्तव में, अन्य भाषाओं के किसी भी संख्या। और फिर जहां यह सबसे नीचे कहते हैं jharvard @ ide50-- और तुम्हारा होगा एक छोटे से कुछ का कहना है different-- यह क्या कहा जाता था? टर्मिनल विंडो। हाँ। तो टर्मिनल विंडो है तथाकथित कमांड लाइन आप बातचीत कर सकते हैं, जो के माध्यम से इंटरफेस अंतर्निहित ऑपरेटिंग सिस्टम के साथ। और अब के लिए, हम करने जा रहे हैं है- की बहुत कम इस्तेमाल करते हैं बस को देखने के लिए, संकलन करने के लिए हम देखते हैं कि त्रुटि संदेश, और हमारे कार्यक्रमों को चलाने के लिए। लेकिन अंततः, हम जा रहे हैं साथ ही, इतना अधिक करने के लिए। और तुम भी सॉफ्टवेयर स्थापित कर सकते हैं और अपने कार्यक्षेत्र के लिए प्रशासन CS50 आईडीई के भीतर, के रूप में अच्छी तरह से। लेकिन यह है कि कुछ और समय के बारे में अधिक। तो चलो आगे जाना है और लिखने के लिए एक बहुत ही सरल कार्यक्रम सिर्फ की एक वार्म अप के माध्यम से जाने के लिए शायद है जो hello.c, हम लिख सकते हैं सरलतम कार्यक्रम। मैं पहले से ही एक नया टैब खोल दिया है। मैं आगे जाने के लिए जा रहा हूँ और मानक io.h. शामिल कहना तब मुख्य (शून्य) int। और फिर printf ("हैलो, दुनिया" बैकस्लैश एन, करीब बोली, बंद कोष्ठक, और अर्धविराम। ठीक है। तो अब मेरी खिड़की शीर्षकहीन है नोटिस। तो मैं बहुत जल्दी जा रहा हूँ , फाइल में सेव करने के लिए जाने के लिए। और यह महत्वपूर्ण है कि मैंने कहा, "नमस्ते।" यह नहीं फोन इसलिए एक बहुत ही आम गलती की है, विशेष रूप से समस्या में से एक है, सेट गलती सिर्फ फोन करने के लिए है अपने कार्यक्रम "पानी" या "लालची" या "मारियो" "क्रेडिट" या की तरह या। लेकिन अगर आप वास्तव में करना चाहते हैं सुनिश्चित करें कि आप फ़ाइल एक्सटेंशन यह एक ही तरीका है कि क्योंकि संकलक और भी कोड संपादक आप कर रहे हैं जानता है कि वास्तव में सी कोड लिखने। तो मुझे आगे जाना है और सहेजें क्लिक करते हैं। और अब भी है, क्या CS50 आईडीई यह भी है हमारे लिए किया है वाक्य रचना सब कुछ पर प्रकाश डाला। तो यह सब कुछ बहुत रंगीन बना दिया है। और का पूरा उद्देश्य कि कार्यशील नहीं है। यह करने के लिए मेरी आँखों आकर्षित करने के लिए बस धारणात्मक अलग टुकड़ों इस कार्यक्रम का। तो चलो आगे जाना है और इस संकलन करते। और मैं इस संकलन कर सकते हैं तरीके के एक जोड़े में। और एक सप्ताह में, पुराने स्कूल रास्ता हमने किया इस पर सचमुच था आदेश line-- "बजना hello.c।" और फिर मैं हिट दर्ज करें। और कुछ भी नहीं होने लगता है टर्मिनल विंडो में। लेकिन आईडीई में परिवर्तन क्या किया? कहाँ, फिर से, आईडीई बस का अर्थ संयुक्त विकसित वातावरण। यह कह का एक अच्छा तरीका है इस एकीकृत विकास सॉफ्टवेयर के विकास के लिए पर्यावरण। तो यूआई में क्या बदल गया? आप क्या नोटिस किया था कि मारिया, अलग है? मारिया: मैं कुछ देखा IDE50 के तहत यहां हुआ फ़ोल्डर। डेविड मालन: हाँ। तो यहाँ तक ही नहीं, हम क्या ज़रूरत है "hello.c।" हम यह भी है, "जो a.out" है एक कार्यक्रम के लिए एक गूंगा नाम की तरह। लेकिन वास्तव में, यह एक के लिए डिफ़ॉल्ट नाम है तुम सिर्फ अपने कोड संकलन जब कार्यक्रम और संकलक बता नहीं है उत्पादन करने के लिए क्या फ़ाइल। इसलिए मैं इस चलाना चाहते हैं, मैं compiler-- बताने की जरूरत या यों कहें, मैं करने की जरूरत है कार्यक्षेत्र बताओ कि मैं कहा जाता कार्यक्रम चलाना चाहते हैं "a.out।" दर्ज करें। और, नमस्ते "वहाँ दुनिया। "अब" ./ "। वास्तव में महत्वपूर्ण है। यहां तक ​​कि सामान्य रूप से हम केवल हालांकि आदेशों के नाम लिखते हैं, यह आप है एक प्रोग्राम है जब लिखा है, आप "./" कहने के लिए करना चाहते हैं कि स्पष्ट रूप से लिनक्स बताता है क्योंकि आप एक कार्यक्रम में कहा चलाना चाहते हैं कि इस में है कि "a.out", जहां डॉट मैं वर्तमान में हूँ कि इस निर्देशिका का अर्थ है होना होता है, जिसमें "a.out, कार्यक्षेत्र बुलाया। मैं सिर्फ इतना कहा क्योंकि अगर "a.out," दर्ज करें, मैं आदेश a.out "नहीं लेने जा रहा हूँ पाया "computer-- क्योंकि मैं का आविष्कार किया है, क्योंकि "a.out;" यह computer-- साथ नहीं आया था जहां यह देखने के लिए पता नहीं है, यहां तक ​​कि यह सही है, हालांकि मेरी नाक के नीचे, तो बात करो। ठीक है। तो हम करने के लिए यह बदल सकता है "हैलो -o बजना hello.c।" हो सकता है और मैं में प्रवेश मारा, तो क्या कार्यक्रम यह मेरे लिए उत्पादन करने के लिए जा रहा है? फ़ाइल का नाम क्या है? हाँ, पीठ में। यह सही है। "नमस्ते।" तो "नमस्ते" होने जा रहा है प्रोग्राम का नाम हम का उपयोग किया है, क्योंकि एक तथाकथित बस है जो कमांड लाइन तर्क है, के व्यवहार को बदलने का एक तरीका वास्तव में उत्पादन करने के लिए संकलक एक विशिष्ट फ़ाइल नाम। और वास्तव में, मैं ज़ूम बाहर और यहाँ देखो, अब मैं न केवल "a.out" है और के रूप में अच्छी तरह से "hello.c" बल्कि "हैलो,"। तो अब मुझे क्या करना है "./hello," दर्ज कर सकते हैं। और "नमस्ते, दुनिया।" वहाँ Lastly-- और इस पर अब सम्मेलन होगी हम भर में उपयोग सेमेस्टर, typically-- आप भी सिर्फ कह सकते हैं "हैलो बनाते हैं।" और वास्तव में, यह है कि यह हो रहा है कह रहा है तिथि करने के लिए यह पहले से ही मौजूद है। मुझे आगे जाना है और साथ दूर करते हैं आरएम आदेश, "a.out" दोनों - और कहते हैं कि "नियमित फाइल a.out निकालना चाहते हैं?" सिर्फ इसका मतलब है कि आप कर रहे हैं सुनिश्चित करें कि आप इसे हटाना चाहते हैं? मैं हाँ कहने जा रहा हूँ। और फिर मैं दूर करने के लिए जा रहा हूँ "हैलो" नहीं बल्कि "hello.c।" मैं स्पष्ट रूप से 'हां' कहने जा रहा हूँ लेकिन "वाई" के रूप में अच्छी तरह से पर्याप्त है। और अब यदि नोटिस मैं , ls-- जो, याद टाइप यह सभी सूचीबद्ध करता list-- इसका मतलब मेरा फ़ोल्डर में फ़ाइलों की। और वास्तव में, मैं ज़ूम बाहर और ऊपर छोड़ दिया पर लग रही है, यह क्या हो रहा है कि इस बात की पुष्टि इस फ़ोल्डर में, यहां तक ​​कि इसे यहाँ IDE50 रूप में चिह्नित किया है, हालांकि और न कार्यक्षेत्र, यह सिर्फ "hello.c है।" तो अब यहाँ नीचे, मैं अगर दर्ज "हैलो, बनाने के लिए" है, अब मैं एक बहुत लंबे समय तक आदेश देख सकते हैं लेकिन एक जा रहा है कि और अधिक परिष्कृत आदेश आने वाले हफ्तों में उपयोगी हो सकता है। और अब मैं "./hello।" कह सकते हैं तो चलो एक त्वरित दौरे ले जाने कुछ अन्य लिनक्स हासिल है। तो फिर क्यों हम एक कदम नहीं लेते पीठ और वास्तव में अधिक सेल्सियस पर देखो आम तौर पर, स्क्रैच से परिवर्तित सी के लिए, और उसके बाद एक नज़र के साथ समाप्त पहली समस्या पर सी में सेट ठीक है। तो मैं आगे और सिर्फ स्वच्छ जाने के लिए जा रहा हूँ नियंत्रण-एल बस के साथ मेरे कार्यक्षेत्र ऊपर साफ स्क्रीन रखने के लिए। लेकिन यह है कि कोई कार्यात्मक है अन्यथा प्रभाव। हमने देखा है कि स्मरण करो अब कुछ आदेशों। इसलिए हम जो आम तौर पर, बजना देखा है आप अब और मैन्युअल पर अमल करने की जरूरत नहीं होगी। हम बजाय मेकअप का उपयोग करेंगे। लेकिन हम यह भी एक है जो दिखाता है, रास देखा मेरी निर्देशिका में फ़ाइलों की सूची। और अब क्यों there-- दो वहाँ है अब फाइलों, "नमस्ते" और "hello.c।" क्यों एक एक सितारा या नहीं है "हैलो" के बाद तारांकन? कि आधारित है, क्या दर्शाता था हम एक सप्ताह में देखा था पर? आप क्या सोचते हैं? स्टार का क्या महत्व है? मारिया: "नमस्ते" कार्यक्रम For--? डेविड मालन: "नमस्कार *"। हाँ। अरे हां? ओह, निष्पादन। यह सही है। तो यह है कि इसका मतलब है कि "नमस्ते" निष्पादन योग्य है। तो वास्तव में, यही कारण है मैंने कहा, "./hello।" क्या कर सकते हैं ठीक है। तो और क्या मैं यहाँ क्या कर सकते हैं? खैर, यह मैं कर सकता हूँ पता चला है यह भी निर्देशिका बनाने के। तो मुझे आगे जाना है और पैदा करते हैं, उदाहरण के लिए, एक "pset1" निर्देशिका। और समस्या सेट विनिर्देश आप वास्तव में यह कर होगा, इसलिए आप आज याद करने की जरूरत नहीं है। लेकिन "mkdir pset1" लगता है कोई प्रभाव पड़ता है। लेकिन फिर, कोई त्रुटि संदेश आम तौर पर एक अच्छी बात है। इसलिए मुझे लगता है, आह now-- अब "लोकसभा" टाइप करते हैं मैंने कहा जाता है एक निष्पादन योग्य फ़ाइल है "हैलो," एक सी फ़ाइल "hello.c।" कहा जाता है और फिर स्लैश, करने के लिए इतना बात करते हैं, यह एक निर्देशिका है कि इसका मतलब है। तो वास्तव में, अब मैं इसे खोलना चाहते हैं। और मुझे लगता है की तरह उस पर डबल क्लिक नहीं करते एक जीयूआई, एक चित्रमय वातावरण में। मैं बजाय "सीडी pset1। कहते हैं कि" दर्ज करें। दिलचस्प कुछ भी नहीं है लगता है मेरे छोटे से शीघ्र सिवाय हुआ here-- यह याद दिलाने के लिनक्स की तरह है मुझे कहाँ हूँ, तो क्या फ़ोल्डर खुला है। यह सिर्फ स्पष्ट रूप से मुझे बता रहा है रेखांकन करने का विरोध किया। अगर मैं प्रकार और "रास," यही कारण है कि मैं एक और देखते हो तुम्हें क्या लगता है, तुरंत शीघ्र मैं pset1 की सामग्री की सूची कब? मारिया: आप शायद नहीं है वहाँ में कुछ भी नहीं है। डेविड मालन: हाँ। तो फिर हम स्पष्ट रूप से नहीं है वहाँ में कुछ भी बनाया मैं सिर्फ निर्देशिका बनाया है। अब, मैं के लिए एक file-- बनाना चाहता था, तो उदाहरण के लिए, मैं एक नई फाइल बना सकते हैं। और फिर मैं तक जा सकता है बचाने के लिए और इसे बचाने के लिए, जैसे, "mario.c" आप क्या कर रहे हैं pset एक के मानक संस्करण। और फिर, किसी भी मैक या पीसी की तरह, सिर्फ , सहेजें फ़ोल्डर "pset1 चुनें। और अब फ़ाइल खाली है। लेकिन हम एक दूसरे के लिए फिर से ज़ूम में चलो। चलो यहाँ रास करते हैं। अब हम "mario.c" देखते हैं। तो कुछ अन्य आदेश है कि वहाँ time-- पर मन में रखने लायक हैं स्पष्ट है, या नियंत्रण एल मैं क्या है मार दिया गया; mkdir हमने देखा है; आरएम हम जो है, के रूप में अच्छी तरह से देखा है, हटाने या एक फ़ाइल को हटाने के लिए। अगर तुम देखो तुम also-- सकते खबरदार और ऑनलाइन ट्यूटोरियल में, आप -rf आरएम करेंगे कहने का एक बहुत ही आम रास्ता है उस में सामान है कि एक फ़ोल्डर हटाएँ। बस सुपर सावधान, सुपर होना। -rf बारी बारी से मतलब है जो भी है को नष्ट आप नष्ट करने की कोशिश कर रहे हैं और जबरन इसे हटा दें। यह एक फ़ोल्डर के साथ है, तो इसका मतलब है तो पुनरावर्ती एक फोल्डर के साथ एक फ़ोल्डर के साथ एक फ़ोल्डर, उन सभी को हटा दें। और जबरन भी नहीं है इसका मतलब हाँ मुझे पूछना है या नहीं, मुझे यकीन है? इसलिए इसके बारे में एक सुपर खतरनाक तरीका है जल्दी से सामान के बहुत सारे हटाने। लेकिन beware-- भी अक्सर एक निडर करता है छात्र गलती से, कहते हैं, pset हटाना उदाहरण के लिए, एक। मारिया: और वे सिर्फ अगर -r करते हैं, वे जा रहे हैं हर एक फ़ाइल के बारे में उनसे पूछने के लिए। डेविड मालन: कौन सा है मामूली कष्टप्रद। मारिया: हाँ। डेविड मालन: तो यही कारण है हम में से कई, आत्म शामिल है, -rf उपयोग करने की आदत में हूँ। लेकिन यह खतरनाक है। तो खरीदार खबरदार। और फिर एमवी तरह का है दिलचस्प बात यह नाम दिया है। तो इस कदम का आदेश है, जो अजीब एक छोटे से लगता है आप वास्तव में करने के लिए इसका इस्तेमाल कर सकते हैं, क्योंकि एक और एक जगह से फ़ाइलें स्थानांतरित। उदाहरण के लिए, मैं गड़बड़ लगता है। मैंने बनाया है कि मान लीजिए pset के लिए एक नई फ़ाइल। और मैं के रूप में इसे बचाया "greedy.c।" लेकिन गलती से मुझे लगता है कि इसे बचाने के लिए IDE50-- में मेरे कार्यक्षेत्र में ही इतनी और नहीं pset1 में। आप ऊपर छोड़ दिया पर के रूप में ज्यादा देख सकते हैं। "Greedy.c।" है और कुछ समाधान नहीं है। एक तो, मैं उपयोग कर सकते हैं सुपर उपयोगकर्ता के अनुकूल तरीके की बस खींचने और इसे छोड़ने। और कहा कि वास्तव में होगा इस समस्या को ठीक। लेकिन आज, हम को देखने के लिए कोशिश कर रहे हैं अधिक रहस्यमय लेकिन शक्तिशाली तरीके से यह कर रहा। तो मुझे pset1 में "लोकसभा" ले चलो। और मैं केवल "mario.c।" देखते हैं मुझे आगे जाना है और ऐसा करने दें "सीडी .."। तो सीडी फिर परिवर्तन निर्देशिका है। ".." हालांकि, क्या मतलब है? पिछली बार मैं ने कहा, "सीडी pset1 "pset1 में जाने के लिए। मैंने कहा, "सीडी .. कहते हैं कि" जब तो, मैं क्या कर रहा हूँ? पीछे की ओर। हाँ। तो यह तथाकथित माता पिता के लिए जा रहा है। जैसे, एक स्तर ऊपर जाएँ एक फ़ोल्डर से बाहर बाहर निकलने। तो दर्ज करें। और वास्तव में, यह क्या किया देखो। यह बजाय सिर्फ कार्यक्षेत्र में मुझे ले जाया गया के कार्यक्षेत्र में है जो pset1 में। और अब मैं "लोकसभा" टाइप करते हैं, सामान की एक पूरी गुच्छा है। में "greedy.c" है। तो अब मुझे सचमुच को एमवी का उपयोग करते हैं pset1 में "greedy.c" चलते हैं। और तो लिनक्स का एक बहुत आदेशों वास्तव में इस तरह काम करते हैं। वे कोई तर्क ले या वे एक ले तर्क या वे दो कमांड लाइन ले तर्क और बहुत आगे है। और इस मामले में, यह है सचमुच क्या कर रहा है यह succinctly-- यद्यपि कहते हैं, pset1 में greedy.c चलते हैं। दर्ज करें। कुछ भी नहीं होने लगता है। मैं फिर से एक रास करते हैं लेकिन, लालची चला गया है। मैंने कहा, "सीडी pset1" करते हैं, तो दर्ज है, और रास फिर से, अब यह सही जगह में है। एक तरफ, मानो कुछ विशेष रूप से reason-- आप रुक-रुक कर हो, तो नेटवर्क कनेक्टिविटी या आप के आसपास चल रहे हैं अपने लैपटॉप ढक्कन के साथ कैंपस बंद हो जाती है और फिर इसे ऊपर खुला फिर से और अपने कार्यक्षेत्र कुछ हद तक सिंक, कोई बड़ी बात नहीं से बाहर है। बस अपने ब्राउज़र को फिर से लोड खिड़की, और यह चाहिए resync इतना है कि बाएं हाथ फ़ाइल ब्राउज़र वास्तव में लग रहा है टर्मिनल विंडो की तरह। कोइ चिंता नहीं। जब संदेह में है, इसलिए, पृष्ठ पुनः लोड जब तक आप पहले से ही फाइलों को बचाया गया है। ठीक है। तो एमवी भी फ़ाइलों का नाम बदलने के लिए इस्तेमाल किया जा सकता है। और चलो पर एक नजर डालते हैं यहां यह अंतिम आदेश। तो suppose-- और यह है सुपर आम भी है, पर जल्दी। कुछ छात्रों को कभी कभी एक फाइल बना कहा जाता है, के एक और एक है क्या say-- करते हैं? "WATER.C।" की तरह तो मैं बस के लिए, चिल्लाना करेंगे सभी टोपियां में कोई कारण नहीं। लेकिन यह नहीं है फ़ाइल के लिए सही नाम हमारी समस्या सेट ही है क्योंकि अगर विनिर्देश तुम्हें बता नहीं था सभी टोपी के रूप में फाइल को बचाने के लिए "WATER.C।" इसके बजाय, हम उम्मीद करते हैं छोटे अक्षरों में "water.c"। और, वास्तव में, यह है समस्याग्रस्त क्योंकि check50, आप जा रहे एक कार्यक्रम समस्या में पूरा करने के स्वचालित रूप से है कि परीक्षणों के एक सेट अपने कोड की सत्यता आप पर चिल्लाना जा रहा है, तो यह नहीं कर सकते सभी लोअरकेस में "water.c" लगता है। इसलिए मैं इसे ठीक करने की जरूरत है। इतने सारे अलग अलग तरीकों से , जिनमें से पहला ऐसा करते हैं नियंत्रण क्लिक करें या सही क्लिक करने के लिए किया जाएगा फ़ाइल नाम सिर्फ नाम बदलें बदलने के लिए और। ऐसा करने के लिए पूरी तरह से ठीक है। लेकिन फिर, आज, चलो यह एक छोटे से शौक़ीन है। के बदलने के लिए एमवी का उपयोग करते हैं करने के लिए "WATER.C" "water.c।" तो अगर आप भी पहला तर्क का उपयोग कर सकते हैं दूसरा तर्क को यह नाम बदलने के लिए दूसरा तर्क में नहीं है, तो तथ्य यह है कि एक फ़ोल्डर या एक निर्देशिका का नाम। ठीक है। और अंत में, एक छोटे trick-- तो मैं कर रहा हूँ में इस समय मेरे कार्यक्षेत्र निर्देशिका। मैं pset एक में प्राप्त करना चाहते हैं, मैं निश्चित रूप से "सीडी pset1।" टाइप कर सकते हैं लेकिन यह "pset1" टाइप करने के लिए बहुत कठिन है, या फ़ाइल नाम या निर्देशिका नाम लंबे समय तक अभी भी। तो बहुत बार लिनक्स में, क्या आप "सार्वजनिक उपक्रम" टाइप करना आरंभ कर रहा है क्या कर सकते हैं और बस ऊब टैब मारा, और चलो आप के लिए कंप्यूटर समझ से बाहर। कि आदत में शामिल होने के लिए सुपर मददगार। अगर आपके पास केवल पकड़ है शुरू करने के लिए कई फाइल या फ़ोल्डर पत्र 'पी' के साथ या "पी एस," हो सकता है आप पहले कुछ और टाइप करने के लिए कंप्यूटर क्या करना जानता है। मारिया: हम शॉर्टकट की तरह। डेविड मालन: इस वसीयत तुम इतना समय बचा है। और यह भी, हम तुम, व्याख्यान में कहा ऊपर और नीचे, इतिहास में स्क्रॉल कर सकते हैं, हाल ही में मार डाला लगाने के लिए आदेशों के रूप में अच्छी तरह से। ठीक है। तो अब, चलो हमारे ध्यान में वापस बारी एक साधारण प्रोग्राम के लिए, दुनिया नमस्ते। इसलिए हम वास्तव में इस संकलित किया है। और अब हम क्यों नहीं लेते डेटा प्रकार पर एक नज़र और फिर कुछ से संक्रमण सी खरोंच ब्लॉकों इसी मारिया: बहुत बढ़िया। तो अब आप शुरू कर दिया है कि सी में प्रोग्राम लिखने, हम बात कर शुरू करने के लिए जा रहे हैं डेटा प्रकार और चर के बारे में। तो कुछ डेटा प्रकार है कि आप अब शुरू जानना चाहते हो जाएगा कर रहे हैं कि लोगों को कर रहे हैं नीले रंग में प्रकाश डाला। इसलिए हम पहले int है जो पूर्णांक के लिए खड़ा है। और कहा कि आप के रूप में, पूर्णांकों रखती है हो सकता है guessed-- तो 1, 2, 3, और किसी भी अन्य पूर्णांकों आप सोच सकते हैं कि। डेविड मालन: और भी नकारात्मक। मारिया: और भी नकारात्मक लोगों, हां। और 0। तो फिर हम मंगाई है, जो बिन्दु संख्या तैर रहे हैं। तो यह है कि सभी वास्तविक संख्या है कि दशमलव अंक है। तो 5.0, 5.2, और भी अधिक दशमलव बिंदु के बाद अंक, साथ ही, और भी नकारात्मक वाले। तो फिर हम एक चरित्र है जो चार लोगों की है। इसलिए मुझे लगता है कि हम के बारे में बात की थी लगता है इस व्याख्यान में आज। लेकिन हम एक example-- के लिए, पत्र है एक चार के रूप में संग्रहित किया जा सकता है कि बी, C--। लेकिन फिर हम एक बहुत अधिक प्रतीक है कि एक चार के रूप में संग्रहित किया जा सकता है। और उन ASCII के रूप में जमा हो जाती है। और फिर हम बूल है, जो Booleans हैं। और उन लोगों के सही करने के लिए मूल्यांकन या झूठी या क्रमशः 1 और 0,। डेविड मालन: और याद है कि बूल CS50 पुस्तकालय से आता है। इसलिए इसे बनाया नहीं है सी, लेकिन यह सुपर उपयोगी है सही और गलत की धारणा है। और भले ही आप मजेदार तथ्य यह है think-- हो सकता है। एक बूल तकनीकी रूप से कितने बिट्स की जरूरत है, वास्तव में, झूठी बनाम सच का प्रतिनिधित्व करने के लिए? कितने बिट्स तुम्हें क्या लगता है आप ज़्यादा से ज़्यादा, की आवश्यकता होगी? हाँ, सिर्फ एक। तो यह है कि सी भी निकलता आप सिर्फ एक सा नहीं दे सकता। माप की सबसे छोटी इकाई प्राप्त कर सकते हैं आप आठ है। तो यह है कि वे आप कर रहे हैं एक छोटी सी बेकार है एक पूरे बाइट, या आठ बिट का उपयोग कर, सही है या गलत प्रतिनिधित्व करने के लिए। लेकिन यह है कि यह सिर्फ एक रास्ता है CS50 पुस्तकालय द्वारा सी में लागू किया है। मारिया: हम कर रहे हैं कि और फिर लोगों को के रूप में बड़े पैमाने पर के बारे में बात करने के लिए नहीं जा रहा है सही डबल now--, कि बड़ा तैरता के लिए है। लांग लंबी और छोटी पूर्णांकों के लिए भी कर रहे हैं। डेविड मालन: वास्तव में। Pset एक के हैकर संस्करण में, हम वास्तव में लंबे समय तक इस्तेमाल करते हैं। लेकिन मानक संस्करण के लिए, यह आवश्यक नहीं होना चाहिए। मारिया: कूल। ठीक है। तो आप होना चाहिए operators-- इनमें से अधिकांश के साथ शायद परिचित। इसके अलावा, +; घटाव, -। गुणन के लिए, हम * है। इतना ही नहीं एक्स हम आम तौर पर उपयोग करें। प्रभाग, हम बैकस्लैश है। और सापेक्ष हमारे पिछले ऑपरेटर है कि हम अभी इस बारे में बात करने जा रहे हैं। यह करने के लिए हमें की अनुमति देता है कि एक ऑपरेटर की एक प्रभाग के शेष ले। हम 4% है, तो 2, 4 विभाजित तो 2 से 0 से शेष के साथ 2 है। तो 4% 2 0 है। 4% 3 1 है। आप अंदाज़ा लगा सकता है के रूप में 4% से 5, 4 है। और इन सब का उपयोग करते समय याद ऑपरेटरों PEMDAS नियमों का उपयोग करने के लिए। डेविड मालन: तो, स्पष्ट होने के लिए आप यदि 4% 2 करते हैं, यही कारण है कि वास्तव में, कि 0 है? मारिया: 4 क्योंकि द्वारा विभाजित 2 0 से शेष के साथ 2 है। तो सापेक्ष हमें के रूप में है कि शेष देता है विभाजन के परिणाम का विरोध किया। डेविड मालन: और वास्तव में, हम यह सहायक क्या मिलेगा के लिए कुछ समस्याओं में यह है कि कि, जरूरी नहीं है आप करना चाहते हैं खुद को सीमित करने का प्रभाव संख्या की एक श्रृंखला के लिए कुछ के माध्यम से 0 की तरह, आप के आसपास लपेटो करने के सापेक्ष उपयोग कर सकते हैं पहले 2 अरब तरह से या 4 अरब मूल्य कि हम व्याख्यान में के बारे में बात की है। मारिया: हाँ। और हम भी हो सकता है "लालची" में। डेविड मालन: हाँ, में समस्या के रूप में अच्छी तरह से, एक की स्थापना की। मारिया: हाँ, अच्छा। डेविड मालन: शुभ संकेत है। मारिया: क्षमा करें। बूलियन इसलिए expressions-- बूलियन ऑपरेटरों के लिए, हम सब के बारे में बात करने जा रहे हैं इन कि आप यहाँ देख। इसलिए अभी, हम दो हैं समान लक्षण बराबरी के लिए सूचीबद्ध किया है। तो उन की तुलना के लिए कर रहे हैं। अब तक हम केवल देखा है एक संकेत के बराबर होती है। हम आवंटित है कि जब एक चर के लिए एक मूल्य। इसलिए हम तो, पूर्णांक एन = 5 देखा है हम चर n करने के लिए 5 सौंपा है। लेकिन हम के लिए == उपयोग करना चाहते हैं तुलना के लिए, हम हैं तो == 5 जाँच कर सकते हैं। और एन == 5 है, तो यह सच है। तो बूलियन ऑपरेटरों मूल रूप से, हमें की अनुमति है, बूलियन मूल्यांकन करने के लिए सही है या गलत करने के लिए अभिव्यक्ति। इसलिए हमारे पास बराबर होती नहीं विस्मयबोधक चिह्न और बराबर होती है। इसलिए हम भी n यदि जाँच कर सकता है बराबर नहीं 5-- इसलिए n! = 5। कम से कम या बराबर करने के लिए, कम से कम से अधिक या बराबर करने के लिए, की तुलना में अधिक है, और फिर हम तार्किक है और और तार्किक या। और उन हमें मूल्यांकन करने की अनुमति एक साथ कई बूलियन अभिव्यक्ति मूल रूप से एक साथ के रूप में आने के लिए एक पूरे बूलियन अभिव्यक्ति। हम एक नंबर खोजने के लिए चाहते हैं, तो कहते हैं, कि अधिक से अधिक 5 लेकिन कम से कम 15 है एक ही समय में, हम प्रयोग करेंगे n है तो देखने के लिए तार्किक और ऑपरेटर अधिक से अधिक 5 && कम से कम 15 एन। डेविड मालन: और यहाँ, भी, यह वास्तव में आसान है पर जल्दी करने के लिए गलती से सिर्फ एक ही एम्परसेंड उपयोग या एक भी खड़ी बार। और उम्मीद है कि संकलक होगा पर चिल्लाना आप वास्तव में वे क्योंकि एक बहुत ही अलग अर्थ है। उन उत्सुक के लिए, वे कर रहे हैं बिटवाइस के संचालन के लिए इस्तेमाल किया, व्यक्तिगत बिट्स पर परिचालन। लेकिन आप उन्हें यहाँ की जोड़ी चाहते हैं। और सुपर महत्वपूर्ण यह है कि पहले एक, बराबर चिह्न, समानता ऑपरेटर के रूप में जो है असाइनमेंट ऑपरेटर करने का विरोध किया। मारिया: और ऊर्ध्वाधर बार है हटाएं और वापसी के बीच स्थित है। डेविड मालन: हाँ। एक ठेठ अमेरिका कीबोर्ड पर। मारिया: हाँ। तो चलो सही में कूद जाने सशर्त बयान। खरोंच में, आप है पहले से ही देखा है, शायद, यदि आप करने की अनुमति बयान कि अगर कुछ सच है तो, जाँच कुछ और करें। तो अगर आप चाहते थे कि हो सकता है अपने प्रेत है, तो जाँच करने के लिए कुछ अन्य प्रेत छू या अपने स्क्रीन की सीमा। और फिर तुम चाहते थे कि हो सकता है खेल खत्म हो या कुछ और ही है। उस के लिए वाक्य रचना तो "अगर (हालत) है।" तो अगर आपके प्रेत कुछ को छू रहा है, तब घुंघराले ब्रेसिज़ के अंदर है। तो फिर हम अगर-और बयान है। वरना हमें कुछ करने की अनुमति देता है हालत यह है कि यदि हम शुरुआत में लिए जाँच सच नहीं है। प्रेत छू रहा है तो अगर सीमा और कुछ ऐसा करने के लिए कुछ और ही है। तो अन्यथा कुछ और ही है। तो फिर हम इस के लिए एक छोटा उदाहरण है। तो अगर (military_time <12), हम printf करना चाहते हैं "सुप्रभात!" वरना हम करने जा रहे हैं printf "नमस्कार!" बुनियादी उदाहरण। डेविड मालन: अच्छा। मारिया: कूल। तो अब हम स्विच बयान है। सामान्य सकते में बयानों स्विच हमें एक ही बात का एक बहुत कुछ करने की अनुमति हम सिर्फ बात की है कि अगर बयान के साथ के बारे में। उदाहरण के लिए, अभी हमारे पास है स्विच बयान के सामान्य प्रपत्र कि हमें लेने के लिए अनुमति देता है एक चर बुलाया n और का एक बहुत कुछ करने के लिए यह तुलना विभिन्न मूल्यों, जो यहाँ हम constant1, constant2 बुलाया है। हम एक बहुत अधिक हो सकता है। और उन मामलों कहा जाता है। हम एक स्विच है तो statement-- और यह काम करता है केवल हम एक है integers-- के लिए n है कि इस मामले में चर। चर n है तो , हम constant1 के बराबर कोड के कुछ अंश को अमल करेंगे या हम क्या करना चाहते हैं कि कुछ और। और फिर हम टूट जाएगा। तो तोड़ने का मतलब है कि स्विच बयान यदि क्रियान्वित बंद हो जाएगा एन, constant1 के बराबर है और फिर अपने कार्यक्रम जारी रहेगा। इसे से बाहर बाहर निकल जाएगा बयान स्विच और यह हूँ कुछ और करना जारी है। , तथापि, एन बराबर नहीं है तो constant2 के लिए constant1, तो मामला जाँच की जाएगी। तो एन, कि अन्य constant2 के बराबर होती है, तो कोड के अंश को क्रियान्वित किया जाएगा। और फिर यह तोड़ दूँगा कि यह करने के लिए बराबर है। और फिर हम also-- नहीं हो सकता है जरूरी है, एक डिफ़ॉल्ट मामले though-- n बराबर नहीं है जो अगर कुछ नहीं होगा आप सूचीबद्ध किया है कि मामलों के किसी भी। और डिफ़ॉल्ट मामले में, हम भी जरूरी नहीं कि एक को तोड़ने की जरूरत नहीं है स्विच बयान से पता चल जाएगा क्योंकि यह डिफ़ॉल्ट के बाद समाप्त करने की जरूरत है कि मामला यह है कि अगर मामला है। डेविड मालन: लेकिन Stylistically, हम हमेशा वहाँ में डाल दिया। मारिया: हाँ। डेविड मालन: हाँ। इसलिए विशेष रूप से, जब बाहर शुरू विशेष रूप से उन लोगों के बीच कम है, तो आरामदायक, मैं व्यक्तिगत रूप से होगा सिर्फ आईएफएस के साथ छड़ी की सिफारिश और आईएफएस-elses और अगर-और-अगर elses और आगे तो सिर्फ अगर वे एक छोटे से कर रहे हैं क्योंकि और अधिक सरल। यह एक अच्छा अनुकूलन है, या कभी कभी भी सौंदर्य की दृष्टि से यह कोड और अधिक पठनीय बनाता है। और वास्तव में, शायद मध्य सेमेस्टर हम एक समस्या देखेंगे यह सिर्फ बेहतर लग रहा है, जहां सेट और आसान मनुष्य के लिए पढ़ने के लिए एक स्विच बयान का उपयोग करके। लेकिन चिंता मत करो बहुत जल्दी इस को पकड़। मारिया: हाँ। आप अगर बयान के एक बहुत कुछ है, यह सिर्फ बहुत पठनीय नहीं हो सकता है। यह बहुत तेजी से नहीं हो सकता है के लिए आप इसे माध्यम से जाने के लिए। इसलिए बयानों सकते स्विच बहुत उपयोगी है, के रूप में अच्छी तरह से हो। और यह भी, remember-- नहीं ऐसा नहीं करते वहाँ में टूट जाता है डाल करने के लिए भूल जाते हैं। डेविड मालन: यह याद नहीं है। मारिया: तो आप गिर सकता है, क्योंकि के माध्यम से एक दूसरे के लिए मामले से। तो चलो उस मामले constant1 हम कहते हैं उस में एक ब्रेक बयान नहीं था। तो फिर हम के माध्यम से गिर सकता है अंदर मामले constant2। और हम हैं कि अगर ऐसा नहीं करना चाहते हैं हम पहले से ही मामला constant1 पहुँच गए हैं और यह n के बराबर है। तो, उदाहरण के लिए, हम एक चर है, तो एक वर्ग संख्या में शामिल है कि एन, और हम क्या देखना चाहता हूँ कि एन 50 के बराबर होती है, तो वर्ग, है- हम CS50 है "मुद्रित करने के लिए जा रहे हैं कंप्यूटर विज्ञान आई का परिचय " तो फिर हम तोड़ने के लिए जा रहे हैं। और यह बात है। अगर, हालांकि, एन बराबर है 51 के लिए, हम जा रहे हैं CS51 परिचय है "मुद्रित करने के लिए कम्प्यूटर साइंस द्वितीय करने के लिए। " तो, फिर, हम तोड़ने के लिए जा रहे हैं। हालांकि, तो हम डाल 124, 61, किसी भी आप के बारे में सोच सकता है कि अन्य नंबर, या कार्यक्रम नहीं जा रहा है मान्यता है कि करने के लिए। तो यह क्षमा करें, मैं हूँ "कहने जा रहा है उस वर्ग से परिचित नहीं है। " और इसे तोड़ने के लिए जा रहा है। डेविड मालन: तो क्या तुम सच में देख सकते हैं , अगर और यहाँ कुछ और विचार है, यदि। इसके लिए सिर्फ अलग वाक्य रचना है सटीक एक ही विचार व्यक्त। मारिया: बिल्कुल। अब हम अपने त्रिगुट ऑपरेटरों है। तो त्रिगुट ऑपरेटरों है तीन, एक की हालत parts-- यदि कुछ लेना देना नहीं शर्त यह है कि यह सच है, और फिर कुछ करने के लिए यदि शर्त यह है कि गलत है। तो अगर आप मूल रूप से देखते हैं, यहां इस बात का सिंटेक्स। हम प्रश्न चिह्न है, और तो the-- क्या हम इस कहते हैं? डेविड मालन: पेट के। मारिया: आंतों। धन्यवाद। माफ़ कीजिए। तो चलो करने के लिए हमारे उदाहरण देखो हम है- की भावना कर सकते हैं देखें class_num == 50। यहाँ तो हम == हमारे बूलियन ऑपरेटर देखना उस चर class_num तुलना 50 को। तो class_num दुकानों एक पूर्णांक। और कहा कि पूर्णांक यदि तो हम कर रहे हैं, 50 के बराबर होती है स्टोर करने के लिए जा रहा है "डेविड मालन" स्ट्रिंग प्रोफेसर के अंदर। वर्ग संख्या नहीं करता है "नहीं डेविड मालन," 50 के बराबर प्रोफेसर होने जा रहा है। डेविड मालन: धन्यवाद। और इसलिए इस के बराबर लगती है आप पहली नज़र में, क्या कहेंगे? मारिया: मेरे लिए यह लगता जैसे अगर-और बयान। डेविड मालन: हाँ। और वास्तव में, इस तरह का है एक सुंदर एक लाइनर की, इसलिए लागू करने के लिए, बात करने के लिए के बिल्कुल तर्क अगर-और लेकिन एक कदम में सब कुछ कर रही है। मारिया: बिल्कुल। हाँ। तो अगर-और बयानों से हो सकता है अंतरिक्ष के एक बहुत ऊपर ले लो। वे के लिए बहुत लंबा हो सकता है इस के रूप में सरल रूप में कुछ। तो यह बहुत ही किया जा सकता है संक्षिप्त और बहुत अच्छा है। तो अब हम देख में जा रहे हैं फिर से और फिर कुछ क्रियान्वित करने, इसलिए एक के लिए जाँच कई बार हालत और फिर कुछ करने के लिए जारी शर्त यह है कि सच है, जबकि। तो यह हमें लाता अच्छी तरह से करते हुए छोरों में। बाईं करने के लिए, हमारे पास हमारी पहली जबकि पाश। कुछ सच है तो, जबकि बार-बार कुछ करो। इसलिए कि सूचना के लिए सुनिश्चित करें कि हमारे हालत यहाँ शीर्ष पर मान्य है। हम कहते हैं हमारी दूसरी loop-- के साथ जबकि एक है, जबकि हमें कुछ करना loop-- कि, फिर हम एक की स्थिति की जाँच करें। और शर्त यह है कि यदि सच करने के लिए जारी है, हम वापस जाने के लिए और फिर से काम करते हैं। तो मुख्य अंतर यह है कि जहां है इस हालत के लिए जाँच की है। और कोड कभी नहीं हो सकता हालत नहीं है, तो मार डाला जबकि पाश के साथ सच है। मत करो हालांकि साथ जबकि पाश, हम कोड है कि हमेशा कम से कम एक बार मार डाला है। और फिर हालत जबकि सच करने के लिए जारी है, हम वापस जाने के लिए और अंदर फिर से पुनरावृति कर सकते हैं। तो तुम क्यों हम प्रयोग करेंगे लगता है एक एक जबकि पाश पर पाश करते-करते हुए? ठीक है। हम शीघ्र करना चाहते हैं तो इनपुट के कुछ प्रकार के लिए यूजर हम उन्हें पूछना चाहते हैं उनके नाम दर्ज करने के लिए, हम कम से कम एक बार उन्हें पूछना चाहता हूँ। और वे प्रवेश करते हैं तो उस नाम है, हम नहीं कर रहे हैं फिर उन्हें पूछने वाला हम पहले से ही यह पता है। लेकिन वे दर्ज नहीं करते हैं उनके नाम, या अगर वे कुछ है कि दर्ज स्पष्ट रूप से नहीं एक नाम है, हम अभी भी जारी रखना चाहते हैं उनके नाम के लिए उन पर पूछ रहे हैं। डेविड मालन: और व्याख्यान में हम एक था मिल सकारात्मक पूर्णांक के साथ इस तरह कुछ भी करने के लिए नहीं है, जहां उदाहरण के लिए, आप भी नहीं है, क्योंकि पहली बार में जाँच एक int मिल गया। इसलिए हम है- क्या करना चाहते हैं user-- से एक पूर्णांक के लिए मिल तो शायद, यह जांच, बार बार। मारिया: बिल्कुल। Loops-- ठीक है के लिए। छोरों अनुमति दे सकते हैं के लिए हमें लगभग ऐसा करने के लिए सटीक एक ही बात है, के रूप में अच्छी तरह से। यह वास्तव में सटीक एक ही बात है। तो कुछ भी नहीं है कि आप छोरों के लिए के साथ क्या कर सकते हैं आप में सक्षम नहीं होगा कि जबकि छोरों के साथ क्या करना है। लेकिन छोरों के लिए एक छोटी सी लग सकता है थोड़ा और अधिक जटिल वाक्य रचना क्योंकि वे तीन भागों के अंदर क्या बस से पहले था जबकि छोरों के साथ शर्त। तो पहली बात यह है कि आप समुद्र, बाएं सबसे अधिक है, हम "पूर्णांक बौने = 0" तो यह वह जगह है जहाँ हम हमारे चर को प्रारंभ। तो फिर हम एक अर्धविराम है और "बौने 7. <" तो यह है, जहां बाहर है हालत वास्तव में है। तो यह है कि हम होगा क्या है जबकि बस में डाल loop-- "बौने 7. <जबकि" इधर, कि में चला जाता है हमारे पाश के लिए के बीच। "तो dwaves 7. <" और फिर हमारे पिछले भाग ", बौने ++" है जो हम अपने चर अद्यतन जहां है। महत्वपूर्ण बात यह है तो साकार करने के लिए इस करता है पाश के लिए इस माध्यम से जाना जा रहा है सात बार और निष्पादित सात बार। इसलिए हम सात है बौने, और वे सभी कर रहे हैं मैं यहाँ हूँ "कहने जा रहा आप मदद करने के लिए, स्नो व्हाइट " वे तैयार हैं क्योंकि बर्फ की सफेद करने में मदद करने के लिए। छोरों, हम किया होता, जबकि साथ प्रारम्भ और अद्यतन करने नहीं शर्त के अंदर, फिर से, लेकिन पहले या जबकि पाश अंदर या तो यह सुनिश्चित करना है कि we-- क्योंकि हम हमेशा उन भागों की जरूरत है। इसलिए है कि हम यह सुनिश्चित करना उन्हें, हम अभी भी है उन्हें जोड़ा जाएगा पर, अभी नहीं कोष्ठकों के अंदर। डेविड मालन: और तो यह like-- लग रहा है व्याख्यान में, उदाहरण के लिए, मैं लगभग हमेशा उपयोग की तरह, मैं और n और बहुत उबाऊ चर। आप अधिक उपयोग कर सकते हैं ऐसा लगता है चतुराई से भी, चर नाम दिया है। मारिया: हाँ, यह वास्तव में बहुत अच्छा है थोड़ा और अधिक वर्णनात्मक चर का उपयोग करने के लिए किसी और को है, विशेष रूप से, क्योंकि अगर अपने code-- पढ़ने शायद आप कर रहे हैं ग्रेडर या आप सहयोग कर रहे हैं किसी के साथ-- आप यकीन है कि बनाना चाहते वे आप क्या कर रहे हैं समझते हैं। ठीक है। तो यह कुछ बहुत funky-- है पाश के लिए एक के अंदर पाश के लिए। हम इस से पहले देखा है, तो मैं नहीं जानता। शायद ऩही। लेकिन हम वास्तव में है- हो सकता है इसलिए बजाय छोरों के छोरों। तो किसी को भी हो सकता है चलना चाहता है मुझे क्या के माध्यम से हो रहा है यहाँ? डेविड मालन: मैं एक चाकू ले लेंगे। मारिया: कूल। डेविड मालन: ठीक है। तो, हम सामान मुद्रित करना चाहते spoiler-- कि नीचे दाएँ हाथ के कोने में है क्या आप वहां मौजूद हैं। मारिया: ठीक है। हाँ हाँ। डेविड मालन: तो हम है बस वहाँ कि नमूना उत्पादन डाल दिया। इसलिए मैं से अनुमान कर सकते हैं आप कर रहे हैं कि सर्वोच्च पाश पंक्तियों पर iterating सबसे बाहरी पाश, तो बात करो। और तुम पर पुनरावृति रहे अंतरतम पाश के साथ कॉलम। और intuitively, इस उम्मीद है कि समझ में आता है चाहिए क्योंकि स्वभाव से हमने देखा है कि हर कार्यक्रम जो है, इससे पहले कि printf, समारोह हम, अंत में, का उपयोग कर रहे हैं सामान मुद्रित करने की क्षमता है लाइन से बाहर अनिवार्य रूप से लाइन। की तरह, एक बार आप outputted गए हैं एक नई लाइन, वहाँ है कोई वापस दोहरीकरण और कुछ मुद्रण कम से कम, स्क्रीन में उच्च इस तरह printf का उपयोग नहीं। और तो उस संबंध में, यह बनाता है भावना है कि सबसे बाहरी पाश पंक्तियों की चर्चा करते हुए किया जाना चाहिए प्रत्येक पंक्ति दिया क्योंकि, यदि आप चाहते करने के लिए जा रहे हैं तो XXXXX बाहर प्रिंट, और अगली पंक्ति, XXXXX पर चलते हैं। तो पंक्तियों पहले आओ। और फिर भीतर प्रत्येक पंक्ति, आप स्तंभों प्रिंट। आप ऐसा करने की कोशिश की तो विपरीत, यह शायद नहीं होगा आप का इरादा के रूप में बाहर आ गए। मारिया: हाँ। हम बस को वापस नहीं जा सकता printf के साथ पिछली पंक्ति। डेविड मालन: और क्या दिलचस्प है गुंजाइश के बारे में आज की चैट प्रति, वास्तव में, पंक्ति एक पूर्णांक है कि सर्वोच्च पाश में घोषित किया है। लेकिन यह अभी भी है कि नोटिस के अंदर, तो बात है, घुंघराले ब्रेसिज़ कि तुरंत पालन करें यह तकनीकी रूप से नहीं है, भले ही उन घुंघराले ब्रेसिज़ के भीतर। तो पंक्ति के लिए दायरे में है कोड के अंश की सम्पूर्णता, दोनों पाश के लिए बाहरी के अंदर और पाश के लिए भीतरी के अंदर। लेकिन इसके विपरीत, जहां स्तंभ दायरे में है? चर कॉलम? हाँ, केवल अंदर पाश में। हम तक पहुँच नहीं है और क्योंकि वह ठीक है यह अपने घुंघराले ब्रेसिज़ के बाहर। हम सभी एक नया बाहर प्रिंट है वहाँ बहुत अंत में लाइन। वास्तव में तो यह है कि ठीक है। तो यह प्रभाव पड़ता है, यह की तरह लग रहा है की तीन पंक्तियों और चार स्तंभों कर रही है। मारिया: ठीक है। तो पहले हम हमारी पहली पंक्ति के माध्यम से जाना। और सिर्फ हमारी पहली पंक्ति में, हम करते हैं पहली पंक्ति के अंदर चार स्तंभों। इसलिए हम चार एक्स के बाहर प्रिंट। और फिर हम के बाद से, लूप के लिए बाहर कर सकते हैं हम पहले से ही चार एक्स के बाहर छपा है। और हम एक नई लाइन प्रिंट। और फिर हम के माध्यम से जाना दो और पंक्तियों के लिए एक ही प्रक्रिया तीन में से एक कुल बनाने के लिए। डेविड मालन: और यह यह ध्यान देने योग्य है फ़ॉन्ट का सिर्फ एक विरूपण साक्ष्य, तथ्य नमूना आउटपुट कि , इतना लम्बे लग रहे हैं अधिक नहीं है, हालांकि के रूप में स्तंभों से पंक्तियों। सिर्फ एक्स लेकिन क्योंकि यह है यह व्यापक है की तुलना में लम्बे है। यही कारण है कि वहाँ क्या हो रहा है वह सब है लाइनों के बीच प्लस सफेद स्थान। मारिया: ठीक है। कूल। डेविड मालन: ठीक है। तो समस्या पर एक त्वरित देखो, एक सेट किसी भी प्रश्न पूछ सकते हैं, और फिर स्थगित? ठीक है। समस्या एक सेट में तो, तीन है प्राथमिक चुनौतियों, अंततः। लेकिन पहले, आप पाएंगे समस्या है कि सेट साथ के रूप में विनिर्देश, कई psets इस गिरावट से चलने के लिए जा रहा है कुछ तैयारी में जुट के माध्यम से, कुछ संसाधनों आप बाहर बिंदु कि आप कर सकते हैं या हो सकता है पहले से ही देखा है नहीं। उदाहरण के लिए, CS50 , शॉर्ट्स का एक सूट है लघु वीडियो है, जो कर रहे हैं, नहीं इस के विपरीत, लेकिन लगता है कि बहुत ही विषय specific-- हैं शायद पाँच मिनट, छोरों पर लंबाई में 10 मिनट या शर्तों पर या एल्गोरिदम पर या बाद में और अधिक पर उन्नत विषयों, के रूप में अच्छी तरह से। और हम आम तौर एम्बेड समस्या में उन सेट इसलिए छात्रों कि जिसके साथ एक संसाधन है हो सकता है कि सामग्री की समीक्षा करने के लिए पहले से ही व्याख्यान या अनुभाग में आते हैं। लेकिन इसे इस तरह से और अधिक ध्यान केंद्रित है और अपनी उंगलियों पर अधिक। हम यह भी समस्या में एम्बेड करने के लिए करते हैं walkthroughs बुलाया बातें तय करता है। इसलिए लगभग सभी मुझे क्या करना है उदाहरण के व्याख्यान में, यहाँ मंच पर, हम भी कैमरे पर गोली मार दी है एक अधिक धीमी अग्रिम, पर मेरे द्वारा एक अधिक घनिष्ठ पूर्वाभ्यास कि कोड की अपने लैपटॉप, लाइन से लाइन इसलिए उस वर्ग में, हम अक्सर हूँ कुछ या किसी के माध्यम से हवा में घूमना एक साथ interject होगा एक सवाल के जवाब। लेकिन यह जरूरी नहीं सिंक नहीं करता दर्शकों में हर किसी के लिए में। तो अगर आप कोड walkthroughs मिल जाएगा उदाहरण के अधिकांश के लिए हम व्याख्यान में यहाँ है कि इतनी है कि आप अपनी गति से यह माध्यम से चल सकता है और तेजी से आगे अतीत या या अगर आप चाहते हैं, पूरी तरह छोड़। अक्सर कुछ भी नहीं है वार्म अप सवाल है कि की तरह करने के लिए पूछना इस सामग्री को सुदृढ़ और इससे पहले कि आप आराम कर रहे हैं कि यह सुनिश्चित कर लें आप pset के आराम के साथ आगे बढ़ना है। और फिर, ज़ाहिर है, pset में ही नहीं है। और बातों में से एक बहुत जानबूझ हम CS50 में लगभग हर रसहीन है या बौद्धिक रूप से शुष्क यांत्रिक कदम है कि आप क्या हो सकता है लगभग हमेशा बहुत अच्छी तरह से प्रलेखित है। अवधि के दौरान, हम करेंगे अधिक बयानबाजी सवाल पूछने के लिए शुरू की तरह इस या उस कैसे करना याद है? लेकिन आम तौर पर, आप पाएंगे समस्या सेट है कि आप प्राप्त यांत्रिकी के माध्यम से कुछ का तो यह है कि दिलचस्प है, बौद्धिक चुनौतियों अंत में आप के लिए छात्र को छोड़ दिया जाता है। साथ ही कहा, Zamyla, जिसे हम व्याख्यान में आज बात कर रखा, हमारे पुराने स्टाफ में से एक है यह भी walkthroughs रखती है, जो सदस्य मारियो की तरह विशिष्ट pset समस्याओं पर और लालची है, हालांकि इस साल पानी नहीं। और यह उन लोगों में है वह यह है कि अक्सर walkthroughs के लिए कुछ सुझाव और चालें प्रदान करता है कैसे आप कभी नहीं बता रही है, आगे बढ़ने के लिए वास्तव में क्या करना है, लेकिन एक शर्त की तरह rather--, तुम्हें दे will-- यदि आप कम से कम एक इतना है कि विचारों की जोड़ी यह आप पर निर्भर है अंततः तय करने के लिए उन्हें कैसे दृष्टिकोण करने के लिए। मारिया: की तरह एक उच्च स्तर की तरह के तर्क की समझ क्या हम ऐसा करने के लिए आप पूछ रहे हैं। डेविड मालन: बिल्कुल। और, वास्तव में, Zamyla की walkthroughs होती हैं अक्सर जवाब देने के लिए जहां से पूछा सवाल मैं विशेष रूप से जब शुरू हुआ करते इन लंबे विनिर्देशों हैं थोड़ा कठिन सभी पाठ दिया और वे उन में कल्पना की है कि। तो water.c, आप पाएंगे आप इसे पूरा करने के बाद, वास्तव में अपेक्षाकृत सरल है। बिल्कुल एक गुच्छा रहे हैं आप बैंग के लिए जाने की कोशिश कर दीवार के खिलाफ अपने सिर यह संकलन नहीं है यही कारण है यह पता लगाने के लिए या क्यों इसे सही ढंग से नहीं चल रहा है। लेकिन आप कर रहे हैं एक बार इसके साथ और आप कर लेते हैं किसी के साथ कुश्ती कुछ समय बिताया हो सकता है आप जो बग्स की, आप यह है कि मिल जाएगा एक बहुत ही कम कार्यक्रम। यह बस कुछ ही में किया जा सकता है कोड की लाइनों, जिनमें से सबसे अधिक अगर हम पहले से ही व्याख्यान में यहाँ देखा है अगर आप सही इमारत ब्लॉकों इकट्ठा। और हम के रूप में सुझाव यहाँ, यह पूछने के लिए जा रहा है आप कितने मिनट निर्दिष्ट करने के लिए किसी को परिसर में एक शॉवर ले जा रहा है। हम समस्या में निर्दिष्ट पानी के प्रवाह की दर निर्धारित की तरह, एक कम प्रवाह बौछार में सिर, ज्यादा Seinfeld क्लिप की तरह हम कल देखा था या उसके विपरीत। और फिर आप बस गणित के एक बिट करने के लिए, बताने के लिए सी का उपयोग अंकगणित really-- हमें कैसे पानी के कई, मोटे तौर पर, बोतलें हम कर रहे हैं करने के लिए कि बराबर है एक n मिनट की बौछार ले रही है। अब, mario.c में, यह जा रहा है एक थोड़ा अब कार्यक्रम होने के लिए। यह अभी तक इस होना करने के लिए नहीं जा रहा है। बस कुछ ही लाइनों water.c से अधिक समय। लेकिन यह अवसर होने जा रहा है पुराने स्कूल मारियो विश्राम करने के लिए सुपर मारियो से पिरामिड ब्रदर्स या कुछ फॉलो-ऑन। यह सुंदर के रूप में देखने के लिए नहीं जा रहा है या वहाँ है कि एक के रूप में के रूप में रंगीन। हम तो बस थोड़ा हैशटैग का उपयोग करने के लिए जा रहे हैं जैसे हम स्क्रीन पर यहाँ है ASCII पाठ का उपयोग कर। लेकिन यह एक ही विचार लगभग जाएगा। और यह एक होने जा रहा है पहली नज़र में लगता है कि व्यायाम सिर्फ सुंदर simple-- लगती है एक साधारण पिरामिड प्रिंट। लेकिन कुछ विशेषताओं वहाँ यहां दिलचस्प हैं। के दाएँ किनारे सूचना है कि पिरामिड वास्तव में चौड़ाई दो है। तो बराबर दो वहाँ ऊंचाई कॉलम, जो यह एक छोटा सा की आवश्यकता होती है बनाता है सोचा था की बिट बनाने के लिए सुनिश्चित करें कि आप के रूप में, यह बिल्कुल सही मिल सिर्फ एक पूरी तरह से कोणीय करने का विरोध लाइन। तो यह है कि एक कोने मामले का एक सा है लेकिन वास्तविक खेल से मेल खाता है। और यह भी पहली बार में गैर स्पष्ट है सफेद अंतरिक्ष मुद्रित करने के लिए कैसे नज़र। इसलिए मुझे लगता है पर जब देखो नमूना उत्पादन here-- और यह spec-- में भी है यह एक तरह से, एक आयत की तरह लग रहा है लेकिन एक विकर्ण आयत, काट कर दिया गया है और यह सिर्फ सफेद रिक्त स्थान है, तो बात करने के लिए है। और हां एक अक्सर पूछे जाने वाले सवाल यहाँ अच्छी तरह से, हमेशा होता है, मैं हैशटैग कदम है कैसे सही करने के लिए? या मैं कैसे रिक्त स्थान प्रिंट करूं? और यह वास्तव में आसान है सबसे अधिक छात्रों को लगता है कि अधिक। है ना? तुम बस द्वारा नेत्रहीन यह अनुमान लगा सकता है एक या दो बार अंतरिक्ष बार मार या तीन बार। और इसलिए भी कि हम लगभग printf के साथ यद्यपि हमेशा एक स्ट्रिंग या एक पूर्णांक के बाहर प्रिंट या नमस्ते "की तरह एक शब्द, शब्दों की दुनिया "या श्रृंखला, आप भी सिर्फ प्रिंट कर सकते हैं बोली, अंतरिक्ष, गंदें शब्द बोलना। और कहा कि वास्तव में दे देंगे तुम वहाँ एक सफेद स्थान। तो मन में रखने के लिए और इस overthink नहीं है। आप वास्तव में है पंक्ति से पंक्ति से पंक्ति का फैसला, नहीं अपने उदाहरण के विपरीत एक उन लोगों में से पहले कितने पल कॉलम सफेद रिक्त स्थान होना चाहिए और हैशटैग होना चाहिए कि कैसे उनमें से कई। यह समय का एक सा लगेगा, लेकिन यह है एक तरह की अंततः एक तर्क पहेली। मारिया: हाँ। लेकिन पंक्ति से पंक्ति में जाने का तर्क यहाँ बहुत उपयोगी होने जा रहा है। डेविड मालन: हाँ। मैं नमूना कोड आप भी gave-- लगता है यह एक पूरा कार्यक्रम नहीं था। तुम अब भी पूर्णांक और मुख्य जरूरत और शून्य और # शामिल stdio.h, व्याख्यान से सामान का एक बहुत। लेकिन इमारत ब्लॉकों वहाँ होने लगते हैं। और फिर अंत में कुछ है एक छोटे से अधिक एल्गोरिथम। तो यह किसी भी समय पता चला है कि आप सीवीएस या किसी सुविधा की दुकान में जाने और किसी को आप हाथ खजांची बिल या परिवर्तन के रूप में सिक्कों, यह पता चला है कि वे मनुष्यों, वे यह जानते हैं या नहीं, या नहीं, शायद क्या प्रयोग कर रहे हैं एक लालची एल्गोरिथ्म कहा जाता है, आप बकाया कर रहे हैं, का कहना है, जिसके तहत 21 $ परिवर्तन में क्योंकि किसी कारण के लिए आप बहुत सस्ती कुछ खरीदा सीवीएस पर एक बहुत बड़ा बिल के साथ, अगर यह सच में कष्टप्रद होगा खजांची आप 21 एकल या बुरा दिया अभी तक, सिक्कों की एक पूरी बहुत कुछ। बल्कि, एक उचित व्यक्ति क्या है शायद ऐसा करने जा रहा है कि वे जा रहे है एक $ 20 और फिर एक $ 1 बिल, और हड़पने के लिए आपको लगता है कि इस मामले में सिर्फ दो बिलों का हाथ। मारिया: तो वे कम से कम करने की मांग कर रहे वे तुम्हें करने के लिए वापस दे कि परिवर्तन। डेविड मालन: बिल्कुल। और एक ही सौदा के सिक्कों के साथ, के रूप में अच्छी तरह से। आप बकाया कर रहे हैं, $ 0.50 कहते हैं, उम्मीद है कि आप 50 पैसे नहीं करना चाहती। आप के बजाय दो चाहते हैं उदाहरण के लिए क्वार्टर,। अब, यह मान करता है खजांची है कि हर मज़हब के लिए पर्याप्त है कि वह या वह तुम्हें देने के लिए चाहते हो सकता है। लेकिन हम आपको ग्रहण करने के लिए अनुमति नहीं है समस्या के रूप में ज्यादा। और लक्ष्य के अंत में, करने के लिए है सी कोड में एक लालची एल्गोरिथ्म को लागू करने। तो उपयोगकर्ता की अनुमति दी है कितना में टाइप करने के लिए वह बदल सकते हैं या वह डॉलर के साथ बकाया है और सेंट, चल बिन्दु किसी तरह का शायद मूल्य। और फिर आप गणित क्या करना है और खैर, एल्गोरिदम यह पता लगाने, कितने सिक्के मैं दे सकता है आप न्यूनतम तुम्हें देने के लिए परिवर्तन की ठीक है कि राशि। लेकिन एक होने जा रहा है यहाँ कुछ मुश्किल भागों, है ना? पूरे जैसे वहाँ अस्पष्टता मुद्दा। मारिया: बिल्कुल। तो चल बिन्दु मूल्यों अस्पष्टता है। हम आज व्याख्यान में इस बारे में बात की? डेविड मालन: हम किया था व्याख्यान में पिछली बार। हम अस्पष्टता के बारे में बात की थी। और अगर आप उपयोगकर्ता धोखा नहीं करना चाहते हैं कितना परिवर्तन का वह या वह बकाया है। और तो पूर्वाभ्यास में समस्या सेट विनिर्देश, के रूप में, अंत में, कुछ सोचा दे आप उन लोगों को कम कर सकते हैं कि कैसे अस्पष्टता त्रुटियों, संभवतः। इसके लिए, निश्चित रूप से, परिहार्य है हम के बारे में बात कर रहे हैं आदानों। और, वास्तव में, pennies-- शायद हम Zamyla के लिए स्थगित कर देंगे, मैं वहाँ चाल के लिए, लगता है। तो अंत में, आप एक मिल जाएगा समस्याओं को बढ़ने से इस सप्ताह जिसमें से पहला, बहुत छोटा है तो मध्यम, तो एक बड़ा सा। लेकिन उन सभी को इमारत का उपयोग यह पिछले सप्ताह से ब्लॉक, इस supersection से, समस्या सेट विनिर्देश असंख्य संसाधनों में डालता है। लेकिन फिर भी, अगर सब पर संघर्ष विशेष रूप से कम आराम से उन लोगों के बीच कोई पूर्व की पृष्ठभूमि के साथ, कार्यालय समय के लिए आए सोमवार और मंगलवार और पर बुधवार और गुरुवार। के माध्यम से चर्चा CS50 करने के लिए जाओ पाठ्यक्रम की वेबसाइट जो के माध्यम से आप चैट कर सकते हैं कर्मचारियों और सहपाठियों के साथ। लेकिन अंततः, मुझे लगता है कि सबसे अच्छी सलाह है, बस जल्दी शुरू किया गया है। यह वर्ग की तरह नहीं है कि आप बुधवार को psets शुरू किया जाना चाहिए रात, या बुरा गुरुवार की रात। मारिया: मेरी सबसे अच्छी सलाह है सोमवार से शुरू कर दिया है। डेविड मालन: सोमवार। तो अगर आप कोई already-- शुरू नहीं किया है। लेकिन फिर भी अगर नहीं सोमवार, तो मंगलवार। जितना जल्दी उतना अच्छा। और उस कारण है कोर्स है तो कई देर दिनों की है आप एक का एक सा देने के लिए मनोवैज्ञानिक दबाव पहले शुरू है, लेकिन अभी भी यह बताने के लिए चीजों को अब लेने के लिए जब बातें पर्ची आपकी अपेक्षा से। मारिया: और आप का उपयोग करना चाहते हैं कार्यालय समय भी, आप जितना कर सकते हैं। डेविड मालन: कोई सवाल? ठीक है। खैर, हम यहाँ क्यों स्थगित नहीं करते हैं?