>> [संगीत बजाना]
डेविड मालन: ठीक है।
इस CS50 है, और इस सप्ताह 2 का अंत है।
मैंने सोचा कि मैं नहीं हो सकता है तो माफी चाहता हूँ वहाँ आज आप सभी के साथ,
लेकिन आप बहुत अच्छे हाथों में हो।
मुझे अपने बारे में बताने का मौका दो CS50 के स्वयं के रोब बोडेन।
आरओबी BOWDEN: और हां, तो हम इस तथ्य का मजाक बनाने के लिए है
वह हमें एक ऊर्ध्वाधर भेजा कि वीडियो और इस शो।
>> [वीडियो प्लेबैक]
>> [संगीत बजाना]
>> [नक्शेकदम]
>> -यह वीडियो नहीं किया इस तरह से देखने के लिए है।
इसे रोका जा सकता था।
कोई खड़ी वीडियो के लिए कहो।
>> -Vertical वीडियो जब आप को कुछ नहीं अपने कैमरे में गलत तरीके से पकड़।
आपके वीडियो का अंत हो जाएगा ऊपर बकवास की तरह देख रहे हैं।
>> - [ग्रन्ट]
>> आदी अधिक से अधिक लोगों को वहाँ रहे हैं हर दिन खड़ी वीडियो बनाने के लिए।
यह दरार या कुछ भी नहीं कर रहा है, लेकिन यह अभी भी वास्तव में बुरा है।
की दो अलग अलग प्रकार के होते हैं वीवीएस से पीड़ित हैं, जो लोगों को।
पहले समूह को मानते हैं वीडियो में वे चित्रों की तरह गोली मार।
वे किसी भी नुकसान मतलब नहीं है।
वे सिर्फ इतना है कि समझ में नहीं आता आप एक तस्वीर बदल सकते हैं, जबकि
आप वास्तव में एक वीडियो चालू नहीं कर सकता।
>> [दुर्घटनाग्रस्त]
>> - [बंदर ध्वनियों]
>> -इस अन्य वर्ग के लोगों को है जो एक [आवाज़] देना नहीं है।
>> -Vertical वीडियो सिंड्रोम खतरनाक है।
मोशन पिक्चर्स है हमेशा क्षैतिज गया।
टीवी क्षैतिज हैं।
कंप्यूटर स्क्रीन क्षैतिज हैं।
लोगों की आँखों क्षैतिज हैं।
हम करने के लिए नहीं बनी हैं खड़ी वीडियो देखने।
>> -मैं खड़ी वीडियो प्यार करता हूँ।
>> -Nobody आप के बारे में परवाह नहीं है।
>> -यदि इस समस्या का अनियंत्रित, तुम भी छोड़ दिया
चार वीडियो दिखा शुरू हो जाएगा एक बार में सिर्फ बैंडविड्थ को बचाने के लिए।
>> -Letterboxed खड़ी वीडियो होगा एक डाक टिकट के आकार का हो।
>> -और यह हर जगह फैल जाएगा।
मूवी स्क्रीन है हमेशा क्षैतिज गया।
खड़ी वीडियो हो जाते हैं स्वीकार किए जाते हैं, फिल्म थिएटर
लंबा और पतला होना पड़ेगा।
>> -और फिल्म सिनेमाघरों के सभी होगा नीचे फाड़ा और फिर से बनाया जाना है।
और जब तक वे फिर से बनाया गया, मिला कुनिस पुराने और कुरूप होगा।
>> -Birds उन्हें में दुर्घटना और मर जाएगा।
>> -We'll सभी कड़ी मिल ऊपर दिख से गर्दन।
>> -और कोई नहीं में बैठेंगे आगे की पंक्ति फिर कभी।
>> जॉर्ज लुकास फिर से रिलीज होगी स्टार युद्धों पतली संस्करण again--।
>> -मैं बताने के लिए वास्तव में सक्षम नहीं था मैं बताना चाहता था कि कहानी।
यह मेरे लिए एक बहुत अच्छा मौका था एक नई तकनीक के साथ प्रयोग।
>> -तुम घटिया हो।
>> एक मोबाइल डिवाइस के लिए प्रयोग किया जाता है -Every समय वीडियो रिकॉर्ड, प्रलोभन है।
बस नहीं कहना।
जॉर्ज लुकास के लिए नहीं कहा।
पुरानी मिला कुनिस के लिए नहीं कहा।
कोई खड़ी वीडियो के लिए कहो।
>> यदि आप किसी को यह कर देखते हैं, तो और, कहते हैं, "आपको लगता है कि सही डमी शूटिंग नहीं कर रहे हैं!"
>> [संगीत बजाना]
>> [अंत प्लेबैक]
>> [वाहवाही]
>> [ऑडियो आउट]
आरओबी BOWDEN: --simple क्रिप्टोग्राफी का रूप है,
जो मूल रूप से एन्क्रिप्शन है गुप्त संदेश की और डिक्रिप्शन।
यहाँ तो हम एक बहुत ही सरल खिलौना है।
और विचार बाहरी रिंग है आंतरिक रिंग के चारों ओर घूमता है।
और तुम मैं ज़ूम हो सकता है अगर, देख सकते हैं में, यह देखने के लिए मुश्किल है that--।
लेकिन, जैसे, संख्या 1-- ठीक है, कि ले जाया गया।
>> नंबर 1 पत्र के नक्शे पत्र के लिए एक्स, नंबर 2 के नक्शे
जे मुश्किल अविश्वसनीय रूप से आगे छोड़ करने के लिए नहीं।
पत्र 2 जे के नक्शे संख्या 3 तो डी के नक्शे
इस अंगूठी के साथ आप दे सकते हैं किसी को एक संदेश 1, 2, 3।
किसी कारण से आप के लिए उन्हें XJD बताना चाहता हूँ।
लेकिन अगर आप उन्हें दे सकते हैं संख्या के कुछ संदेश है,
और वे इस अंगूठी के रूप में लंबे समय के रूप में, वे आप कहने की कोशिश कर रहे हैं क्या डिक्रिप्ट कर सकते हैं।
>> तो अगर आप देखा हो सकता है यह क्रिप्टोग्राफी का विशिष्ट उदाहरण
इससे पहले कि क्रिसमस के मौसम के आसपास है, तो आप एक क्रिसमस स्टोरी देख चुके है।
आप कभी नहीं देखा गया है यह पहले, तो बस
सचमुच में टीबीएस मोड़ पर है | क्रिसमस की पूर्व संध्या पर किसी भी समय,
वे अभी वापस करने के लिए इसे वापस दिखाने क्योंकि पूरे दिन वापस करने के लिए वापस करने के लिए वापस करने के लिए।
और प्रासंगिक वीडियो यह है।
[वीडियो प्लेबैक]
यह सभी और विविध के लिए जाना जाता रहो राल्फ पार्कर एतद्द्वारा है कि
लिटिल के सदस्य नियुक्त अनाथ एनी गुप्त सर्किल
और सभी सम्मान के हकदार है और लाभ बहां होने वाली।
छोटे से अनाथ एनी हस्ताक्षर किए गए।
स्याही में पियरे आंद्रे प्रतिहस्ताक्षरित!
सम्मान और लाभ पहले से ही नौ साल की उम्र में!
>> [रेडियो से चिल्ला]
-चलो।
इसके साथ पर मिलता है।
मैं सब जाज की जरूरत नहीं तस्करों और समुद्री डाकुओं के बारे में।
साथ -listen कल रात समापन साहसिक
काले समुद्री डाकू जहाज की।
अब इसके लिए समय आ गया है एनी गुप्त संदेश
गुप्त सर्किल के सदस्यों के लिए।
बच्चों, केवल सदस्यों को याद रखें एनी की सीक्रेट सर्किल की
एनी के गुप्त संदेश को डिकोड कर सकते हैं।
याद रखें, एनी आप पर निर्भर करता है।
बी 2 के लिए अपने पिन सेट करें।
यहाँ संदेश है।
12।
1 1।
2।
-मैं मेरा पहला गुप्त बैठक में हूँ।
>> -25।
14।
1 1।
18।
16।
>> -ओह, पियरे महान आवाज आज रात में है।
मुझे लगता है कि आज रात बता सकता है संदेश वास्तव में महत्वपूर्ण था।
-3।
25।
यही कारण है कि एनी खुद से एक संदेश है।
किसी को बताना नहीं है, याद रखें।
>> -Five सेकंड बाद में, मैं ही में हूँ घर में कमरे में जहां नौ का एक लड़का
गोपनीयता और व्याख्या में बैठ सकता है।
अहा!
बी!
मैं अगले करने के लिए चला गया।
ई पहला शब्द "होना है।"
एस यह अब आसान आ रहा था।
यू 25।
यही कारण है कि आर है
आओ पर, Ralphie!
मुझे जाना ही होगा!
ठीक नीचे होना -I'll, मा!
हाइ - फाइ पढ़ाकू।
क्या करना सुनिश्चित करें - टी ओ "यकीन है कि"?
लिटिल अनाथ था क्या एनी कहने की कोशिश?
क्या करने के लिए यकीन है कि हो सकता है?
>> -Randy जाने के लिए मिल गया है!
आप बाहर आ करेंगे?
>> -सभी सही, माँ!
मैं ठीक से बाहर हो जाएगा!
मैं करीब अब हो रही थी।
तनाव भयानक था।
यह क्या था?
ग्रह के भाग्य अधर में लटका सकता है!
>> -Ralphie, रेंडी जाना है!
>> जोर से रोने के लिए, सही बाहर हो -I'll!
लगभग वहाँ!
मेरी उंगलियों के लिए उड़ान भरी।
मेरा मन एक इस्पात जाल था।
हर रोम स्फूर्त।
यह लगभग स्पष्ट हो गया था!
हाँ।
अपने Ovaltine पीने के लिए सुनिश्चित हो।
Ovaltine?
एक फालतू वाणिज्यिक?
दुष्ट।
>> [अंत प्लेबैक]
>> आरओबी BOWDEN: तो है कि कैसे है Ovaltine क्रिप्टोग्राफी से संबंधित है।
असल में CS50 सिर्फ विज्ञापित Ovaltine, तो हम कर सकते थे
Ovaltine के लिए एक फालतू वाणिज्यिक होना।
ठीक है।
तो अब वास्तविक कंप्यूटर विज्ञान।
सोमवार को याद रखें कि हम से दूर छोड़ दिया तार में गहरी डाइविंग।
तो हम साथ काम कर रहे थे स्ट्रिंग "Zamyla।"
और हम पहचानने थे हम इलाज कर सकते हैं तथ्य यह है कि
पात्रों के एक दृश्य के रूप में "Zamyla"।
और हम पता चला कि याद ब्रैकेट संकेतन।
इस संग्रहीत किया गया तो अगर फिर एक स्ट्रिंग में "एस"
हमने कहा कि अगर ब्रैकेट 0, कि होगा पत्र राजधानी जेड का संकेत
और हम ब्रैकेट 1, ने कहा है कि यदि पहले लोअरकेस एक संकेत होता है,
और इतने पर ब्रैकेट 5 तक, जो पिछले एक संकेत होगा।
>> अब जब कि याद इस स्ट्रिंग की लंबाई, 6
लेकिन स्ट्रिंग में सूचकांक हैं 0 से 5 तक, उस के माध्यम से Z एक पिछले।
तो यह अब एक बड़ी तस्वीर में फिट बैठता है आपके कंप्यूटर की मेमोरी, अपने राम की।
तो कहीं कार्यक्रम कि आप अपने कंप्यूटर चला रहे हैं
Zamyla याद करने की जरूरत है स्मृति में कहीं।
तो मैं एक स्वयंसेवक हो सकती है?
हाँ कृपया।
और तुम्हारा नाम क्या है?
>> डीन: डीन।
>> आरओबी BOWDEN: डीन?
डीन आपसे मिलकर अच्छा लगा।
तो यहाँ पर आते हैं, और हम आपको आकर्षित किया जा रहे हैं
स्मृति के बारे में हमारी अच्छी निफ्टी लेआउट पर।
अब मैं स्मृति के बारे में सोचना पसंद बाइट्स की एक लंबी पट्टी के रूप में,
लेकिन सिर्फ प्रदर्शन प्रयोजनों के लिए हम करेंगे बस नीचे करने के लिए सही, शीर्ष करने के लिए छोड़ दिया है।
ठीक है?
>> तो मैं एक शो करने जा रहा हूँ Getstrings.c program--।
और इसलिए सभी को इस कार्यक्रम है कर रही चार तार अनुरोध किया है
साथ उपयोगकर्ता से GetString और फिर मुद्रण
जो कुछ भी है कि पहली स्ट्रिंग में प्रवेश किया था।
हम चार के माध्यम से दो अनदेखी कर रहे हैं।
ठीक।
तो यहाँ पर now-- जब जब मैं पहली बार अनुरोध एस 1।
तो अगर आप कंप्यूटर हैं।
और अगर आप GetString लागू कर रहे हैं।
तो अगर आप एक स्ट्रिंग से अनुरोध मुझे, और मैं, ठीक है, डीन का कहना है।
स्ट्रिंग दे "डीन।"
>> तो कहीं स्मृति में आप याद करने की जरूरत "डीन।"
तो कहीं स्मृति में लिखें।
बिल्कुल सही।
ठीक।
तो अब हम S2 है।
और S2 होने जा रहा है GetString के लिए एक अनुरोध।
तो मैं एक स्ट्रिंग दर्ज करने के लिए जा रहा हूँ।
मैं प्रवेश करने के लिए जा रहा हूँ "हन्ना।"
तो कहीं स्मृति में "हन्ना" दर्ज करें।
हाँ।
एक-एच।
>> ठीक है, तो अब S3।
और यह एक और होने जा रहा है GetString करने के लिए अनुरोध करते हैं।
और तो अब "मारिया।" दर्ज
ठीक है।
और फिर एक आखिरी वहाँ GetString करने के लिए अनुरोध, S4।
तो, मैं नहीं जानता।
कैसे हम साथ जाने के बारे में antidisestablishmentarianism।
तो स्मृति में है कि दर्ज करें।
हाँ।
तो बस "रोब।" करना
>> ठीक।
ऐसा क्यों किया तो अब explain-- आप इन स्थानों छोड़ दिया?
आप इस खाली है क्यों यहाँ, यहाँ, और यहाँ तक अंतरिक्ष?
हाँ।
मुझे जाना है तो जब नोटिस यदि ऐसा है तो s1-- मुद्रित करने के लिए हम
था, "हन्ना" चल रहा है ठीक ऊपर अगले करने के लिए "डीन,"
हम जब पता चलेगा कि कैसे स्ट्रिंग "डीन" समाप्त हो जाती है?
तो स्ट्रिंग एस 1 मुद्रण हो सकता है बस "DeanHannahMariaRob" मुद्रित
यह कोई सुराग नहीं है "डीन" वास्तव में समाप्त होता है की जब।
>> ठीक है।
तो स्मृति में जिस तरह से हम वास्तव में एक स्ट्रिंग के इस अंत का प्रतिनिधित्व
बैकस्लैश शून्य के साथ है।
इसलिए इस जगह हम चाहते थे कि क्या वास्तव में है।
यह एक बैकस्लैश शून्य होना चाहिए।
यह एक बैकस्लैश शून्य हो जाएगा और यह एक बैकस्लैश शून्य हो जाएगा।
और अगर आप एक शानदार पुरस्कार हो सकता है एक आदर्श स्वयंसेवक होने के लिए।
एक तनाव गेंद ले लो!
>> ठीक।
इसलिए इस चरित्र बैकस्लैश शून्य है कैसे हम एक स्ट्रिंग के अंत का संकेत मिलता है।
यह कैसे जब किसी भी कार्यक्रम है एक स्ट्रिंग मुद्रित करने के लिए चाहता है,
हमने सीखा याद how-- यह है strlen समारोह पिछले सप्ताह?
स्ट्रिंग लंबाई?
यह स्ट्रिंग लंबाई करने में सक्षम है कि कैसे है एक स्ट्रिंग है कि कितने समय तक निर्धारित करते हैं।
यह सिर्फ पुनरावृति रहता है अक्षरों से अधिक
यह पाता है जब तक शून्य चरित्र Backslash।
महत्वपूर्ण बात का एहसास करने के लिए तो बैकस्लैश शून्य चरित्र के बारे में
यह प्रतिनिधित्व का है बिट्स में सभी शून्य से।
तो यह अलग है कि नोटिस शून्य चरित्र से।
तो शून्य चरित्र, अगर तुम्हें याद है उदाहरण में वह अंत में दे दिया है कि
व्याख्यान के पात्रों को मैप जहां 65 को राजधानी के एक नक्शे की तरह है--।
97 को एक नक्शे लोअरकेस।
लोअरकेस ख 98 होगा।
तो संख्या 0 नक्शे मैं नहीं है-- मेरे सिर के ऊपर से पता है।
44 या 45।
कहीं न कहीं उस क्षेत्र में।
>> तो चरित्र 0 एक वास्तविक संख्या है।
लेकिन बैकस्लैश शून्य सभी शून्य बिट्स के लिए नक्शे।
तो एक अंतर है बैकस्लैश शून्य के बीच,
जो हम अशक्त टर्मिनेटर फोन करता हूँ।
एक अंतर के बीच नहीं है बैकस्लैश शून्य और चरित्र शून्य।
>> ठीक है।
तो तार के बारे में थोड़ा और अधिक बात कर।
तो फिर हम यह कैसे है यहाँ देखें यह स्मृति में बाहर रखी जाएगी।
तो एक दृश्य के रूप में तार के इस विचार characters-- की आधिकारिक कंप्यूटर इसलिए
अनुक्रम के लिए sciency अवधि एक सरणी है।
तो हम एक स्ट्रिंग फोन होगा पात्रों में से एक सरणी।
और वास्तव में अन्य डेटा देखते हैं हम से बाहर सरणियों कर सकते हैं कि प्रकार के।
>> इसलिए इस प्रेरित करने के लिए, एक उदाहरण देखो।
हम मैं हूँ ages0.c यह फोन करता हूँ कॉपी और हमारे टेम्पलेट पेस्ट करें।
ठीक।
इस कार्यक्रम में तो क्या हम क्या करना चाहते उम्र हड़पने है
पाठ्यक्रम में तीन छात्रों की।
इसलिए हम जानते हैं कि पूर्णांक age-- और अब मैं 0 कहने जा रहा हूँ।
तो अगर आप age1 कहना चाहते हैं, लेकिन हो सकता है प्रयोजनों के लिए हम बहुत जल्द ही देखेंगे,
मैं पूर्णांक age0 GetInt के बराबर होती है कहूँगा।
GetInt के लिए एक ही कॉल तो हम मैं का उपयोग किया गया है कि
उत्साह होना होगा नहीं है "मुझे उम्र दे।" यह कहकर
लेकिन सिर्फ यह अनुरोध करता है।
>> और age1 GetInt बराबर होती है।
और int age2 GetInt बराबर होती है।
तो, फिर से, तीन छात्रों को, लेकिन अंततः चर सूचकांकों
age2 के माध्यम से age0 हैं।
ठीक।
इसलिए इस कार्यक्रम करना होगा जो कुछ भी हम age0, age1, और age2 के साथ चाहते हैं,
लेकिन इस कार्यक्रम अंततः तीन छात्रों के लिए काम करता है।
>> ठीक।
तो अब मैं चार छात्रों चाहते हैं, तो क्या?
खैर, मैं वापस जाने के लिए जा रहा हूँ मेरे कोड में, इस टिप्पणी को बदलने,
और अब हम एक पूर्णांक है age3 GetInt बराबर होती है।
ठीक।
तो जो यहाँ समस्या देखता है?
समस्या क्या है स्थापना के इस प्रकार के साथ?
हाँ।
तो हम एक बना रहे हैं प्रत्येक छात्र के लिए चर।
अब यह काम करता है, लेकिन अंतत: क्या अब मैं यदि
मैं साल की उम्र हथियाना चाहते हैं कहते हैं, " आठ छात्रों या 16 छात्रों
की या फिर भी कई छात्रों CS50 में छात्रों के सैकड़ों
या परिसर में छात्रों के हजारों या दुनिया में लोगों के अरबों?
तो अंततः यह स्थायी नहीं है।
यदि आप अपने आप को कॉपी देख किसी भी समय और इस तरह चिपकाने कोड,
आप आम तौर पर महसूस करना चाहिए वहाँ एक बेहतर तरीका है।
>> हम परिचय तो यह है जहां एक सरणी घोषणा।
तो अगर आप एक सरणी की घोषणा करते हैं, यह क्या सामान्य स्वरूप है
की तरह लग रहा है।
हम प्रकार कहने के लिए जा रहे हैं।
और फिर हम करने जा रहे हैं उस सरणी का नाम देते हैं,
अभी हम किसी भी चर को परिभाषित के रूप में।
और फिर अंत में हम प्रयोग कर रहे हैं इस ब्रैकेट संकेतन फिर
लेकिन एक अलग संदर्भ में कैसे हम पहले भी यह प्रयोग कर रहे थे।
>> यहाँ तो यह एक सामान्य की तरह लग रहा है हमने देखा है कि चर घोषणा।
इसलिए हम पहले int x सेमी कॉलन देखा है।
खैर अब हम कुछ देख सकते हैं int x कोष्ठक 5 की तरह।
और में इस विचार डाल हम have-- कि GetInt कार्यक्रम
इसलिए हम लागू कर सकते हैं उसी तरह इस।
>> हम उपयोग करते हैं सीएस में हम कहते हैं कुछ की संख्या के रूप में एन।
यहाँ तो हम करने जा रहे हैं चार छात्रों की दुकान।
और अब हम पूर्णांक उम्र कह सकते हैं ब्रैकेट काफी यह yet-- नहीं मिल N--
चार छात्रों की एक सरणी की घोषणा करने के लिए।
तो इस में कैसे दिखेगा स्मृति इस के समान हो जाएगा।
यह स्पष्ट।
और हम कहीं जा रहे हैं memory-- में मैं वहाँ इस डाल देता हूँ।
>> तो कहीं स्मृति में।
एक दो तीन चार।
हम एक पंक्ति में चार पूर्णांक है चार पूर्णांक इस सरणी के लिए।
तो, वर्तमान में, क्या है इन बक्सों में से एक का आकार?
हाँ।
यह चार बाइट्स है।
यह 32 बिट है।
तो अब यह अलग है सरणी से है कि हम
पात्रों में से पहले, सरणी देखा।
एक स्ट्रिंग में प्रत्येक बॉक्स, केवल एक बाइट था एक चरित्र केवल एक बाइट है।
लेकिन पूर्णांकों की एक सरणी के साथ, प्रत्येक बॉक्स क्रम में चार बाइट्स हो गया है
एक पूरी पूर्णांक फिट करने के लिए।
तो यह क्या है की एक सरणी चार ints की तरह लग रही होगी।
>> और फिर वापस करने के लिए कोड।
अब हम वास्तव में संग्रहीत करना चाहते हैं उस सरणी में पूर्णांकों।
तो अब यह एक बहुत, बहुत, बहुत है कुछ बिंदु पर होगा कि आम पैटर्न
मांसपेशियों की स्मृति हो जाते हैं।
तो मैं 0 के बराबर होती है int।
मैं n से कम है।
मैं प्लस प्लस।
आयु वर्ग मैं GetInt बराबर होती है।
>> तो इस लूप के लिए, इस प्रारूप, तुम बहुत करने के लिए इस्तेमाल किया जाना चाहिए।
तो यह आम तौर पर है कि कैसे हम करेंगे लगभग किसी सरणी पर पुनरावृति।
अब का इस तरह का नोटिस शुरू से ही बताते हैं कि क्यों
हम छोरों पूर्णांक के लिए जाने के लिए नहीं था मैंने सोचा कि मैं कम से कम या 10 के बराबर, 1 के बराबर होती है।
से शुरू है कि कारण किया जा रहा शून्य सरणियों के साथ अच्छी तरह से इस काम में आता है।
तो सरणियों अनुक्रमित शून्य हैं।
इस सरणी लंबाई 4 का है, सूचकांक 3 के माध्यम से 0 कर रहे हैं।
>> पहले के माध्यम से तो पाश के लिए इस बात का चलना
हम उम्र की स्थापना करने जा रहे हैं GetInt के लिए एक फोन के बराबर ब्रैकेट 0।
इसलिए मैं जो कुछ भी हुआ कीबोर्ड पर दर्ज करने के लिए।
दूसरा पास में, हम कर रहे हैं GetInt को age1 बराबर की स्थापना।
तीसरा पास, age2।
अंतिम पास age3।
लूप के पहले पास में तो अगर मैं, कीबोर्ड पर 4 नंबर दर्ज
तो हम यहाँ एक 4 डालने देंगे।
मैं प्रवेश दूसरा पास पर हैं 50, हम यहां एक 50 डाल देता हूँ।
तीसरे पास पर मैं हो सकता है दर्ज एक नकारात्मक, एक नकारात्मक,
और फिर अंत में मैं 0-- प्रवेश अगर और अब इस सूचकांक तीन साल का था कि याद है।
>> हम पाश वापस करने के बाद, मैं है जा रहा से 4 वृद्धि की जाए।
मैं अब 4 है जो एन, की तुलना में कम है।
और हम लूप के बाहर तोड़।
तो इस के साथ क्या गलत हो सकता है?
[अश्राव्य]?
दर्शकों: [अश्राव्य]
>> हाँ।
तो सरणी केवल चार स्थानों पर है, जो 3 के माध्यम सूचकांकों 0 के रूप में इसका मतलब है।
अगर इस मामले थे, मैं होता तो कुछ बिंदु पर मूल्य 4 पर ले लो।
आयु वर्ग 4 की स्थापना की जाएगी जो कुछ भी यहाँ पर होना होता है
मैं क्या कहना चाहता है के लिए, 6 दर्ज करें।
यही कारण है कि 6 को यह स्थापित करने होंगे।
>> लेकिन हम यहाँ पर क्या है पता नहीं है।
इस स्मृति नहीं है कि हम का उपयोग करने के लिए किया था।
तो तुम से याद है पिछले व्याख्यान,
वह Zamyla के मूल्यों बाहर मुद्रण किया गया था और कुछ बिंदु पर वह इस विभाजन को मारा
गलती। तो आप शायद देखकर किया जाएगा आप के रूप में कई विभाजन के दोष
समस्या सेट में से कुछ को लागू करने।
लेकिन इस तरीके से एक है जिसमें आप एक विभाजन का सामना कर सकते हैं
आप तक पहुँचने शुरू करते हैं, तो गलती तुम नहीं होना चाहिए कि मायनों में स्मृति।
तो हम करने के लिए उपयोग नहीं किया इस स्थान है और यह एक बग है।
>> तो यह बेहतर है।
अब अभी भी एक छोटा सा नहीं है इस कोड के साथ इस मुद्दे।
और कहा कि हम कर रहे हैं कि मूल रूप से है अभी भी चार छात्रों पर अटक गया।
अब मैं ठीक है, आठ छात्रों उपयोग करना चाहते हैं।
यह है कि एक बड़ा सौदा नहीं है।
मैं बदलने में जा सकते हैं टिप्पणी, और एन बदल जाते हैं।
अब इस आठ छात्रों के साथ काम करेंगे।
मैं इस संकलन और चलाते हैं यही नहीं, यह me-- दिखाएगा
यह आठ विकेट पर पूर्णांकों का अनुरोध करेंगे छात्रों और यह सिर्फ काम करेंगे।
लेकिन यह करने की जरूरत के लिए आदर्श से कम नहीं है कार्यक्रम हर एक बार फिर कंपाइल
मैं छात्रों की संख्या को बदलना चाहते हैं मैं के लिए उम्र में प्रवेश करना चाहते हैं।
>> तो अंतिम सुधार पर हम here-- देखेंगे के रूप में यह है, हम कर रहे हैं
लोगों की संख्या का अनुरोध करने जा रही है।
यहाँ हम एक संख्या है कमरे में लोगों की
या कमरे में लोगों की किसी भी उम्र के।
लेकिन हम नंबर का अनुरोध करने के लिए जा रहे हैं उपयोगकर्ता से कमरे में लोगों की।
तो यह ठीक उसी मत करो हालांकि है हम पहले देखा है कि पाश।
यह सही ही है मत करो हालांकि पाश कि आप
समस्या सेट पर लागू किया जा सकता।
तो जब तक वे कर रहे हैं के रूप में 1 से एक एन कम में प्रवेश,
इतने में वहाँ के लिए मिल गया है कमरे में कम से कम एक व्यक्ति।
जब तक वे कर रहे हैं के रूप में 1 से एक एन कम में प्रवेश,
उसके बाद हम फिर से पूछ रखने के लिए जा रहे हैं।
संख्या दर्ज करें कमरे में लोगों की।
अब, एक बार हम नंबर है room-- में लोगों की
इसलिए मुझे लगता है कि वहाँ से प्रवेश कर सकता है इस कमरे में 200 लोग हैं।
यहाँ तो नीचे हम आने के लिए जा रहे हैं और आकार 200 की एक सरणी की घोषणा।
हम है कि सरणी की घोषणा कर रहे हैं बहुत बड़ा 200 उम्र धारण करने के लिए।
नीचे आ रहा है, यह पाश के लिए है तुम बहुत करने के लिए इस्तेमाल किया हो जाएगा।
तो इस सरणी पर iterating, प्रत्येक स्थान के लिए बताए
उस सरणी में एक पूर्णांक, और फिर अंत में यहाँ हम कर रहे हैं
सिर्फ पुनरावृति का एक उदाहरण हो रही है कि सरणी पर, मूल्यों आवंटित करने के लिए नहीं,
लेकिन मूल्यों का उपयोग करने के लिए।
>> यहाँ पर तो हम देखते हैं कि हम उस अब से एक साल, कह रहे हैं,
व्यक्ति% मैं, मैं साल पुराने% हो जाएगा पहली% मैं मैं प्लस 1 है जहां।
इसलिए मैं इस सूचकांक चर रहा है।
और दूसरा% मैं होने जा रहा है उम्र सरणी प्लस 1 में संग्रहीत मूल्य।
इसलिए इस प्लस 1 हम कर रहे हैं, सिर्फ इसलिए है , इस प्लस 1 saying-- उम्र मैं प्लस 1।
इस प्लस 1 हम कर रहे हैं, सिर्फ इसलिए है अब व्यक्ति से एक साल, कह रही
इस पुराने हो जाएगा।
>> तो क्यों यह मैं प्लस 1 है?
क्यों हम वहाँ एक प्लस 1 है?
हाँ।
तो सरणियों शून्य अनुक्रमित रहे हैं याद है।
हम के लिए इस बाहर मुद्रण कर रहे हैं तो अगर किसी को सिर्फ उत्पादन को पढ़ने के लिए,
तो शायद वे कुछ देखना चाहते हैं व्यक्ति एक, व्यक्ति नंबर एक की तरह,
20 साल का हो जाएगा।
व्यक्ति के नंबर दो 15 साल का हो जाएगा।
बल्कि वे व्यक्ति नहीं देखना चाहते हैं संख्या शून्य से 15 साल पुराना है।
>> तो यह संकलन और बस को देखकर क्या यह कुछ जगह बनाएं like-- लग रहा है।
उम्र compiles बनाओ।
उम्र के चल रहा है।
हम कमरे में लोगों की संख्या को देखते हैं।
इसलिए मैं देखते हैं कहूँगा कमरे में तीन लोग हैं।
व्यक्ति के नंबर एक की उम्र, 15, 20, 25 कहते हैं।
और अब मैं एक साल से कह देंगे अब वे 16, 21, 26 हो जाएगा।
इस के साथ काम करता है कि चलो देखते हैं 3 के बराबर नहीं है कि एक एन।
तो अगर मैं लोगों की संख्या, एक 5 का कहना है कि दो, तीन, दो, एक, अब से एक साल
वे, दो, तीन हो जाएगा चार, तीन, दो साल पुराना है।
तो मैं बस के रूप में कर सकता है आसानी से n 10,000 हो गए हैं।
अब मैं काफी के लिए यहां बैठे हो जाएगा थोड़ी देर के उम्र में प्रवेश करने के लिए, लेकिन यह काम करता है।
>> तो अब स्मृति में कहीं न कहीं हम , आकार 10,000 की एक सरणी है
इसलिए अंतत: 40,000 बाइट्स, क्योंकि वहाँ रहे हैं
उन पूर्णांकों से प्रत्येक के लिए चार बाइट्स।
तो की एक सरणी है आकार 10,000 जहां हम कर सकते हैं
उन 10,000 लोगों की उम्र की दुकान।
ठीक है।
इस में से किसी के बारे में प्रश्न?
हाँ।
क्या आप एक नकारात्मक नंबर दे दिया तो क्या होगा?
चलिए देखते हैं क्या होता है।
इस विशेष case-- संख्या में तो कमरे, नकारात्मक एक में लोगों की।
ऐसा लगता है कि खारिज कर दिया, यहां तक ​​कि हम भी हो, क्योंकि
n है, तो यह तथ्य है कि संभाल करने के लिए कम से कम एक हम फिर से पूछने के लिए जा रहे हैं।
आप एक घोषित करने की कोशिश करते हैं नकारात्मक आकार की सरणी,
यह आम तौर पर काम नहीं करता।
>> तो चलो कोशिश करते हैं।
की उपेक्षा करते हैं जो कुछ भी n के लिए मूल्य वे इनपुट
और सिर्फ पूर्णांक उम्र नकारात्मक एक कहते हैं।
यह भी संकलित करता है, तो चलो देखते हैं।
मुझे यकीन नहीं है।
नहीं।
इसलिए उम्र के एक के रूप में घोषित किया जाता है एक नकारात्मक आकार के साथ सरणी।
इसलिए अग्रिम यह एक सरणी नहीं कर सकते पहचानता है नकारात्मक आकार का हो सकता है और इसे खारिज कर दिया।
अब, हम संभाल नहीं था, तो इस मत करो हालांकि पाश सही ढंग से,
हम जाँच नहीं कर रहे थे, तो एन कम से कम 1-- है यदि
हम बस कहना है पर यह सब नहीं था
और इसके बजाय हम सिर्फ एक पूर्णांक हासिल किया है।
कोई फर्क नहीं पड़ता कि पूर्णांक क्या है, हम उस आकार की एक सरणी की घोषणा।
>> तो संकलक नहीं कर सकते संभवतः अब शिकायत करते हैं।
मैं है- संकलन इसलिए यह शिकायत नहीं कर सकता,
यह मैं कर रहा हूँ कि पता नहीं कर सकते क्योंकि एक नकारात्मक नंबर दर्ज करने के लिए जा रहा है,
जो अमान्य हो सकता है।
यह सभी के लिए मैं सकता है, जानता है एक सकारात्मक संख्या दर्ज करें,
जो पूरी तरह से वैध है।
मैं एक नकारात्मक दर्ज तो अगर मैं कल्पना कमरे में लोगों, गलती विभाजन।
>> तो ठीक है।
तो चलो इस बस वापस जोड़ दें यह मूल रूप से क्या था इसे रख लो।
इसलिए उम्र के हैं।
अब मैं एक कोशिश करना चाहते हैं नकारात्मक तो चलो age--
कमरे में पांच लोग कर रहे हैं कहते हैं।
व्यक्ति के नंबर एक की उम्र , व्यक्ति तीन नकारात्मक 4
शून्य, व्यक्ति ठीक three-- है।
यहाँ तो एक साल अब से, व्यक्ति नंबर एक 3 साल की उम्र नकारात्मक हो जाएगा।
तो शायद समझ नहीं पड़ता है।
लेकिन वह सिर्फ लग रही है क्योंकि कोड पर सब हम कर रहे हैं
GetInt अनुरोध किया है।
>> अब, हम कर दिया था कि अगर GetPositiveInt समारोह
या हम सिर्फ और सिर्फ इस किया था वहाँ नीचे एक ही समय पाश की तरह,
तो यह पूरी तरह से ठीक से काम करेगा।
लेकिन इस विशेष में मामला है, हम अभी नहीं है
नकारात्मक मूल्यों से निपटने होना होता है।
सरणियों के बारे में कोई अन्य प्रश्न?
ठीक।
>> तो क्या अब हम सरणियों देखा है।
और हम का उपयोग करने की आवश्यकता के लिए जा रहे हैं कमांड लाइन तर्क के लिए यह।
तो समस्या में two-- सेट मैं आप में से कई जानते हैं
अभी भी समस्या सेट पर काम किया जा सकता है एक है, लेकिन समस्या दो आ रहा है निर्धारित किया है।
समस्या दो सेट में, आप करने जा रहे हैं तार, सरणियों के साथ निपटने की जरूरत है,
और कमांड लाइन तर्क।
>> कमांड लाइन तर्क क्या हैं?
अब, आप यहाँ एक नीचे देख सकते हैं है कि क्या वास्तव में के लिए थोड़ा टीज़र
जा रहा हो रहा हो।
हम int मुख्य, कांग्रेस argc देखना स्ट्रिंग argv कोष्ठक।
तो पहले की व्याख्या करने के लिए कोशिश करते हैं क्या कहना है कि कोशिश कर रहा है।
अब ठीक।
>> तो कमांड लाइन पर आप होना चाहिए इन आदेशों से कुछ के लिए इस्तेमाल हो रही है
अब, और आप शायद भाग लिया पहले टर्मिनल में सीडी।
तो हम सीडी pset1 कहते हैं, आपको लगता है कि पता होना चाहिए कि
pset1 निर्देशिका में बदल जाएगा।
>> अब आप कभी नहीं किया है कि नोटिस इस तरह से पहले एक कार्यक्रम में लिखा।
आप लिखा है कि प्रत्येक कार्यक्रम आप कहते हैं, चला जाएगा मारियो स्लेश डॉट,
डॉट लालची स्लेश, और फिर इसे इनपुट के लिए संकेत हो सकता है।
अब, कि क्या नहीं है परिवर्तन निर्देशिका करता है।
आप सीडी चलाते हैं, यह तो नहीं कहना है आप सीडी के लिए जो निर्देशिका में करना चाहते हैं?
इसके बजाय, आप बस कहना है, सीडी pset1, और यह सिर्फ pset1 निर्देशिका में चला जाता है।
>> तो इसी तरह से हम अन्य उदाहरण है।
नमस्कार करते हैं।
आप कर चलाते हैं, यह तो नहीं कहना है कार्यक्रम के लिए जो आप करना चाहते हैं?
तुम बस में कहते हैं, कमांड लाइन नमस्कार करते हैं।
>> हटो एक और उदाहरण है।
हम आगे बढ़ रहे हैं यह एक एक निर्देशिका फाइल mario.c।
तो अब हम इस उदाहरण के साथ पता हम वास्तव में दो तर्क गुजर रहे हैं।
पहले तर्क के रूप mario.c है, और डॉट डॉट दूसरा तर्क है।
और फिर आप कर चला करते हैं कि वास्तव में लंबे समय कमांड देखना line--
कि वास्तव में लंबे समय कमान कमांड लाइन पर छपी।
तो यह है कि लंबे समय से इस command-- यह सिर्फ एक छोटा हिस्सा है,
लेकिन अब हम तीन हैं कमांड लाइन तर्क।
डॉट पानी का छींटा शून्य, नमस्कार, और hello.c।
>> इसलिए इन कमांड-लाइन कर रहे हैं तर्क, तर्क
आप कम से गुजर रहे हैं कि कमांड लाइन इतनी है कि यह
संकेत करने के लिए जरूरी नहीं है आप इस कार्यक्रम को चला रहे हैं।
यह निराशा होगी यदि जब आप बजना भागा यह ठीक कहा, "
program-- जो जो फ़ाइल आप संकलन कर रहे हैं?
Hello.c।
क्या झंडे तुम होगा प्रवेश करने के लिए पसंद है? पानी का छींटा ओ।
आप क्या पसंद करेंगे फ़ाइल कहा जा सकता है?
नमस्ते।
नहीं, तुम सिर्फ बजना चलाने ओ हैलो hello.c पानी का छींटा।
>> तो वापस इस पर देख रहे हैं।
अब argc-- argc तर्क गिना जाता है।
यह कमांड लाइन का नंबर है तर्क कमांड लाइन पर प्रवेश किया।
वैसे, तकनीकी argv-- वी, वेक्टर के लिए खड़ा है
जो मूल रूप से सरणी इसका मतलब है।
लेकिन आपको लगता है कि उपेक्षा कर सकते हैं।
Argv-- हम, स्ट्रिंग argv है इसलिए स्ट्रिंग argv कोष्ठक।
तो इस का दूसरा रूप है आप पहले नहीं देखा है कोष्ठक।
तो हमने देखा है ब्रैकेट हमने कहा है कि जब संकेतन,
जैसे, स्ट्रिंग एस Zamyla बराबर होती है।
ब्रैकेट 0 चरित्र जेड तक पहुँचता है
>> हम यह भी कोष्ठक जब देखा है हम int उम्र 5 ब्रैकेट कहा।
यही कारण है कि आकार 5 की एक सरणी की घोषणा की।
तो यहाँ का एक संस्करण है कोष्ठक हम पहले नहीं देखा है।
स्ट्रिंग argv की तो इस तरह की है कि पूरी तरह से परिचित हो जाएगा
यह सिर्फ एक स्ट्रिंग होगा।
अब कोष्ठक का संकेत कि यह एक सरणी है।
तो स्ट्रिंग argv कोष्ठक साधन कि argv तारों की एक सरणी है।
अब तकनीकी रूप से एक स्ट्रिंग पात्रों में से एक सरणी है।
तो यह अब एक सरणी है पात्रों में से एक सरणी की।
लेकिन इसके बारे में सोचने के लिए बहुत आसान है तार के इस रूप में सिर्फ एक सरणी।
>> तो क्यों कोष्ठक खाली हो सकता है?
की तरह, क्यों हम यह नहीं कह सकते ब्रैकेट 5, ब्रैकेट N?
हाँ।
हम कितने पता नहीं है आदानों वहाँ होने जा रहे हैं।
इसलिए हम बजना उदाहरण पर नजर डालें तो, हम नमस्कार hello.c ओ पानी का छींटा बजना कहना।
इस विशेष मामले में, वहाँ हो तीन कमांड लाइन तर्क हो।
और तो brackets-- हम देखेंगे एक सेकंड में यह तीन नहीं होगा।
यह तकनीकी रूप से चार होगा।
लेकिन कोष्ठक, हम करेंगे कहते हैं, वहाँ तीन हैं।
लेकिन अब हम इस कदम को देखा, तो mario.c डॉट डॉट, कोष्ठक
हम उन में दो डाल करना चाहते हैं।
>> और आदेशों का एक बहुत देखते हैं कि कमांड लाइन का एक चर संख्या है
तर्क।
तो क्या हुआ के इस संस्करण ब्रैकेट संकेतन इंगित करता है
argv तारों की एक सरणी है।
लेकिन हम कितने पता नहीं है तार कि सरणी में हैं।
और कैसे हम तो जानते हैं कि कैसे कई तार सरणी में कर रहे हैं?
यह पूरी बात argc है।
argc argv है कितनी देर तक हमें बताता है।
>> इसलिए पिछले बात में रखने के लिए मन, कि तकनीकी रूप से है
आदेश में ही एक के रूप में गिना जाता है कमांड लाइन तर्क की।
सीडी pset1 तो, वहाँ दो हैं कमांड लाइन तर्क।
अपने आप में कार्यक्रम, सीडी, और उसके बाद इसके बारे में वास्तविक तर्क हिस्सा है, pset1।
आप इस प्रकार अब तक लिखा है कि किसी भी कार्यक्रम एक कमांड लाइन argument-- डॉट पड़ा है
मारियो स्लेश।
यही कारण है कि केवल कमांड लाइन तर्क है।
>> तो अब बजना पर देख रहे हैं ओ हैलो hello.c पानी का छींटा।
तो argc क्या है?
4।
तो argc 4 है।
बजना, इसलिए argv ब्रैकेट 0 बजना है।
argv ब्रैकेट 1 डैश 0 है।
argv ब्रैकेट 2 नमस्कार है, और argv ब्रैकेट 3 hello.c है।
ठीक है, तो इस पर सवाल, और फिर हम करेंगे कुछ कार्यक्रम संबंधी उदाहरण देखो।
>> ठीक।
इसलिए हम hello3.c पर एक नज़र रखेंगे।
तो क्या इस से परिचित होना चाहिए पहली सी उदाहरणों में से एक
हम सिर्फ इतना कहना होता है, जहां हम हैलो था, दुनिया है, लेकिन अब यह अधिक सामान्य है।
यहाँ तो हम नमस्ते कह रहे हैं % S के बैकस्लैश एन argv ब्रैकेट 1।
इस बिंदु तक इतनी Notice--, यह है क्या मेरे टेम्पलेट फ़ाइल की तरह देखा गया है।
मैं int मुख्य (शून्य) था, और फिर मैं होता मुख्य समारोह में कुछ करना है।
अब इसके बजाय, एक बार हम काम शुरू कमांड लाइन तर्क के साथ,
हम एक राज्य की जरूरत है मुख्य का अलग रूप।
>> तो hello3 पर देख रहे हैं फिर, मुख्य जा रहा है
int argc now-- दो तर्क लेने के लिए, कमांड लाइन तर्क की संख्या,
और स्ट्रिंग कोष्ठक argv, वास्तविक तार कमांड लाइन पर प्रवेश किया।
इसलिए मुझे लगता है कि बदलने के लिए जा रहा हूँ टेम्पलेट है कि इस तथ्य को प्रतिबिंबित करने के लिए।
अब जब भी आप लिखना एक कार्यक्रम है, अगर तुम नहीं करते
किसी भी कमांड लाइन लेने की जरूरत तर्क है, तो बस int मुख्य (शून्य) का उपयोग करें।
लेकिन अब आप लिख रहे हैं जब कमांड लाइन तर्क कार्यक्रम, जो
आप समस्या के लिए कर रही हो जा रहे हैं तो अब आप चल रहे हैं कि two-- सेट
लेने की जरूरत है कि कार्यक्रमों कमांड लाइन तर्क,
आप इस फार्म की मुख्य जरूरत है।
>> तो here-- इस बड़ी उपयोग होता है कमांड लाइन तर्क की।
तो argv 1 मुद्रण।
ठीक है तो के संकलन करते और इस कार्यक्रम चलाते हैं।
Hello3 बनाओ।
संकलित।
डॉट hello3 स्लेश।
और चलो, हम कहते हैं "रोब।"
हैलो रोब।
मैं, "नमस्ते मारिया," नमस्ते मारिया कहते हैं।
नमस्ते मारिया।
हन्ना अभी भी हैलो कहते हैं, " मारिया, "मैं नहीं हूँ क्योंकि
हमारे argv 2 के साथ कुछ भी कर रही है।
Argv 2 अब "हन्ना।" होगा
Argc 3 होगा।
क्या मैं इस किया था तो क्या होगा?
तो हैलो अशक्त।
>> उन्होंने कुछ समय तक इस तथ्य को छुआ कि, तकनीकी, GetString
अशक्त वापसी हो सकती है, लेकिन हम एक मिल जाएगा अधिक क्या अशक्त में बहुत कुछ वास्तव में है।
लेकिन के एक मामले के रूप में ले कोई आम तौर पर खराब है कि तथ्य यह है।
अगर हम कुछ गलत किया है यह "नमस्ते अशक्त।" मुद्रण है
और कारण हमने किया है- अच्छी तरह से कुछ गड़बड़ है,
मैं डॉट स्लेश hello3 भाग गया, जब argc 1 था।
तो यह है कि argv की लंबाई 1 था इसका मतलब है।
एक सरणी की लंबाई 1 का है, केवल वैध सूचकांक शून्य है।
और यहाँ तो एक बाहर है argv इस सरणी की सीमा होती है।
यह जब मैंने कोशिश से पहले के समान था सरणी के अंत के बाहर 6 स्टोर करने के लिए।
तो मैं कुछ का उपयोग करने की कोशिश कर रहा हूँ argv गिनती के बाहर,
और हम अशक्त हो रही है।
>> की तो एक बेहतर संस्करण यह एक सुधार,
स्पष्ट argc जाँच कर रहा है।
Argc 2 के बराबर होती है तो, अगर है कि हम भागा इसका मतलब डॉट स्लेश hello3 लूटने की तरह कुछ।
और यह "नमस्ते रोब।" प्रिंट होगा
Argc बराबर नहीं है तो 2, तो यह सिर्फ जा रहा है
तुम डाल जो कुछ अनदेखी करने के लिए कमांड लाइन तर्क पर
कमांड लाइन तर्क के रूप में।
आप सब पर किसी भी नहीं डाली, तो यह है सिर्फ इतना है कि उपेक्षा और सिर्फ कहने के लिए जा रहे हैं,
"कैसे हो तुम।"
>> तो यह संकलन।
Hello4 बनाओ।
और hello4 चल रहा है।
इसे इस तरह से चल रहा है, क्या मुद्रित किया जाना चाहिए?
"कैसे हो तुम।"
कैसे हो तुम।
क्या hello4 रोब के बारे में?
"नमस्ते रोब।"
और अंत में, हैलो रोब मारिया , "नमस्ते आप" फिर बस है
क्या तुम सच में प्रवेश नहीं किया था क्योंकि यह उम्मीद है कि कुछ और।
आप अधिक नामों में प्रवेश किया इसे संभाल सकता है, की तुलना में
तो यह सिर्फ करने के लिए चूक हैलो आप व्यवहार।
इस पर सवाल तो?
या कमांड लाइन तर्क?
>> ठीक है, तो एक पर एक नज़र लेने का उपयोग कर के कुछ और उदाहरण
कमांड लाइन पहले arguments-- हम पानी का छींटा 1 डॉट ग argv है।
तो टिप्पणी दूर दे क्या इस कार्यक्रम कर किया जाना चाहिए।
लेकिन, पाश के लिए इस now-- नोटिस इस सटीक पैटर्न से मेल खाता
मैं पहले कह रहा था।
हम सिर्फ होना होगा n के बजाय argc इस्तेमाल करते हैं।
अब argc वास्तव में n है।
यह argv सरणी की लंबाई है।
तो argv पर iterating कर रहे हैं सरणी printf आईएनजी प्रत्येक argv मूल्य।
>> मैं यह इसलिए यदि।
Argv 1 बनाओ।
यह संकलित।
डॉट argv 1 स्लेश।
बस यह चल रहा है, यह प्रिंट स्लेश argv 1 डॉट
कि केवल कमांड लाइन का था तब से कार्यक्रम का नाम argument--।
हमेशा least-- पर हो जाएगा argc, एक की तुलना में कम नहीं हो सकता
के बाद से वहाँ हमेशा कम से कम कार्यक्रम को चलाने के नाम हो।
तो 1 रोब 1 argv प्रिंट होगा argv और उसके बाद नई लाइन पर "रोब।"
>> पहली यात्रा में तो इस लूप की, मैं 0 है।
Argv 0 कार्यक्रम का नाम है।
डॉट argv 1 स्लेश।
और फिर 1 मेरा पहला है argv रोब है जो कमांड लाइन तर्क,।
इस बिंदु पर, हम argc के बराबर हैं।
हम लूप से बाहर तोड़ने के लिए और हम कर रहे हैं।
तो यह एक मनमाना के लिए काम करेंगे कमांड लाइन तर्क की संख्या।
सूचना है कि यह argv 0, argv प्रिंट 1, argv 2, argv 3, argv 4।
और कोई argv 5 है।
argc 5 के बराबर है।
इसलिए मैं 5 के बराबर होती है पर argc-- पर, हम लूप के बाहर तोड़।
ठीक।
हम पहले उस पर सवाल तो एक अधिक जटिल उदाहरण देखो?
>> तो 2 argv।
ठीक है।
इसलिए हम अभी भी मुद्रण कर रहे हैं कमांड लाइन तर्क।
लेकिन अब हमारे पास नोटिस एक पाश के लिए नेस्ट।
तो क्या कर रही है?
तो पहले पाश कर रही है वास्तव में क्या यह पहले किया था।
हम अभी भी पर पाशन रहे प्रत्येक कमांड लाइन तर्क है,
लेकिन अब इस दूसरे loop-- हम है पहले भी कुछ इस तरह देखा।
वह खत्म पुनरावृति गया तो Zamyla जेड-ए-एम-वाई-एल-ए को छापता है।
तो पूर्णांक जम्मू के लिए इस दूसरे लूप के बराबर होती है 0, एन argv ब्रैकेट मैं की strlen बराबर होती है।
>> तो चलो पहले के लिए लगता है the-- के माध्यम से चलते हैं।
चलो क्या कंप्यूटर होगा लगता है सिर्फ बिंदी के रूप में मैं इस कार्यक्रम में भाग गया, तो ऐसा
argv डैश 2 स्लेश।
तो अगर मैं तो इस कोड को दौड़ा argc 1 के बराबर होने जा रहा है।
और स्ट्रिंग वहाँ केवल argv-- argv में एक सूचकांक होने जा रहा,
और कहा कि डॉट के बराबर होने जा रहा है argv स्लेश 2-- कार्यक्रम का नाम।
>> ठीक है, तो अब मैं से मैं कम, 0 के बराबर होती है 1, मैं प्लस प्लस पूर्णांक जे 0 के बराबर होती है के लिए,
n में तो, argv ब्रैकेट 0 से strlen के बराबर होती है इस पाश की पहली यात्रा। argv
ब्रैकेट 0 डॉट स्लेश argv 2 है।
तो यह है कि स्ट्रिंग की लंबाई क्या है?
वैसे, एक-आर-जी वी डैश 2 स्लेश डॉट।
इस बात का strlen तो 8 हो जाएगा।
तो जे 0 के बराबर होती है, एन 8 के बराबर होती है।
जब तक जम्मू 8, J ++ की तुलना में कम है।
और उस के साथ हम हो जा रहे हैं एक ही चरित्र, मुद्रण, जो
मैं जम्मू ब्रैकेट argv ब्रैकेट है।
>> इतना ही मैं शून्य है।
हम अभी भी केवल एक ही है कमांड लाइन तर्क।
कि पहली यात्रा में पाश के लिए, हम कर रहे हैं
मुद्रण होने जा रहा argv ब्रैकेट 0 ब्रैकेट 0।
और फिर जम्मू वेतन वृद्धि करने जा रहा है।
और हम मुद्रण करने के लिए जा रहे हैं argv ब्रैकेट 0 ब्रैकेट 1।
और फिर ब्रैकेट 0 ब्रैकेट 2 argv।
>> तो यह हमारी पहली मुठभेड़ है बहु-आयामी arrays की।
मैंने कहा कि पहले याद रखें कि argv तकनीकी रूप से है
पात्रों की सरणियों की एक सरणी।
तो यहाँ मैं कुछ तरह ने कहा कि अगर स्ट्रिंग एस, argv ब्रैकेट मैं बराबर होती है
और फिर मैं रों ने कहा, ब्रैकेट जम्मू, इस एक ही बात को पूरा किया जाएगा।
अब, आप पहले ब्रैकेट जम्मू देखा है।
वह सिर्फ जम्मू-वीं का उपयोग कर रहा है इस स्ट्रिंग के चरित्र।
इस के साथ तो, हम हो रही है मैं वें argv की जम्मू-वें चरित्र।
>> तो क्या यह अंततः उत्पादन करना चाहिए?
Argv 2 बनाओ।
यह संकलित।
डॉट argv 2 स्लेश।
"रोब मारिया हन्ना," और हमें कुछ कमरा दे।
इसलिए हम इस outputting है कि वहाँ अपनी लाइन और स्लेश पर डॉट
अपनी लाइन पर अपनी लाइन और एक पर।
यह पता प्रत्येक मुद्रण है व्यक्ति के चरित्र
प्रत्येक कमांड लाइन तर्क की।
और फिर उन दोनों के बीच में, क्योंकि इस नई लाइन की
हम में, यहाँ नीचे मुद्रण कर रहे हैं उन दोनों के बीच यह एक नई लाइन प्रिंट हूँ।
>> तो इस के समान है प्रायर argv पानी का छींटा 1,
प्रत्येक मुद्रित जो कमांड लाइन तर्क है,
लेकिन अब हम मुद्रण कर रहे हैं कमांड लाइन तर्क
और फिर एक के माध्यम से पुनरावृति प्रत्येक कमांड लाइन तर्क का चरित्र
इस उत्पादन प्राप्त करने के लिए।
ठीक है?
इस पर सवाल तो?
>> नोट करने के लिए एक बात यह है कि कमांड लाइन arguments--
इसलिए वे के रूप में रिक्त स्थान से अलग हो रहे हैं आप स्वाभाविक रूप से उन्हें होने की उम्मीद है।
तो एक स्ट्रिंग में यह रिक्त स्थान हो सकता है।
यह सुपर महत्वपूर्ण नहीं है, लेकिन मुझे लगता है कि अगर तीसरे कमांड लाइन तर्क चाहता था
मैं तो उस में एक जगह है कुछ इस तरह कह सकते हैं।
ठीक है?
तो अब यह अभी भी केवल तीन है कमांड लाइन arguments-- अच्छी तरह से 4।
डॉट argv डैश 2 स्लेश, रोब, मारिया, और हन्ना ब्लूमबर्ग।
ठीक।
इस पर प्रश्न?
>> विशेष कुछ भी नहीं है अंतरिक्ष चरित्र के बारे में।
यह सिर्फ इतना है कि होना होता है कमांड लाइन अंतरिक्ष चरित्र व्यवहार करता है
कैसे के रूप में आप प्रत्येक तर्क अलग।
ठीक है।
तो फिर समस्या सेट आप हो जा रहे हैं two--
गुप्त कुंजी क्रिप्टोग्राफी पर देख रहे हैं।
कि उदाहरण के लिए तो, समान हम एक क्रिसमस स्टोरी से देखा
आप कुछ को लागू करने जा रहे हैं एक संदेश दिया है कि एल्गोरिदम,
आप सक्षम होने के लिए जा रहे हैं संदेश है कि एन्क्रिप्ट करने के लिए
उस रहस्य के साथ ही है कि किसी को कुंजी, कि डिकोडर अंगूठी के साथ,
डिक्रिप्ट करने के लिए सक्षम होना चाहिए।
>> तो यह है कि मानक संस्करण है।
आप को लागू करने जा रहे हैं दो अलग अलग संस्करणों।
आप एक बार देख लेने के लिए होता है हैकर अब Edition-- पर,
हम देने के लिए जा रहे हैं आप इस तरह एक स्ट्रिंग,
जो एक एन्क्रिप्टेड पासवर्ड का प्रतिनिधित्व करता है।
तो अपने लक्ष्य को बाहर निकालने के लिए है decrypted पासवर्ड क्या है।
अब यह वास्तव में कैसे पासवर्ड है कंप्यूटर के एक बहुत में जमा हो जाती है,
और यह सिर्फ इस संग्रहीत करता है पात्रों के यादृच्छिक स्ट्रिंग।
आप प्राप्त करने के लिए बाहर निकालने के लिए किया है अक्षरों के इस यादृच्छिक स्ट्रिंग से
मूल पासवर्ड क्या था।
>> और अंत में, के बाद इस समस्या सेट, तुम चाहिए
क्या इसका मतलब यह समझने में सक्षम हो।
तो आप को डिक्रिप्ट करने के लिए सीखना होगा यादृच्छिक स्ट्रिंग के इस तरह के।
इसी तरह, आप सप्ताह से याद है 0 आप इस यूआरएल देखा हो सकता है।
और आप के लिए सक्षम होना चाहिए अंततः इस डिक्रिप्ट।
तुम खुश नहीं हो सकता है जब आप इसे डिक्रिप्ट और लिंक पर क्लिक करें।
ठीक है।
आज के लिए इतना ही।
तो अगले हफ्ते मिलते हैं!
>> [इलेक्ट्रॉनिक संगीत खेल]