>> [संगीत बजाना]
डौग लॉयड: ठीक है।
एकल के साथ कार्य करना चर बहुत मजेदार है।
लेकिन क्या अगर हम चाहते हैं काम करने के लिए चर का एक बहुत कुछ के साथ,
लेकिन हम में से एक गुच्छा है नहीं करना चाहते हैं हमारे कोड के आसपास अलग-अलग नाम उड़ान?
इस मामले में, सरणियों हैं वास्तव में काम में आने वाला।
सारणियों वास्तव में एक मौलिक डेटा कर रहे हैं किसी भी प्रोग्रामिंग भाषा के लिए संरचना
कि आप प्रयोग करेंगे।
और वे वास्तव में, वास्तव में उपयोगी हो विशेष रूप से, हम सीएस 50 में, देखेंगे के रूप में।
>> हम धारण करने के लिए सारणियों का उपयोग एक ही डेटा प्रकार के मूल्यों
सन्निहित स्मृति स्थानों पर।
यही कारण है कि यह एक है, कहने के लिए है तरीका यह है कि हम समूह कर सकते हैं
साथ में पूर्णांकों का एक गुच्छा स्मृति या अक्षरों का एक गुच्छा
या वास्तव में स्मृति में तैरता एक साथ बंद करने और काम
उनके साथ प्रत्येक देने के लिए बिना एक का अपना अनूठा नाम है, जो कर सकते हैं
थोड़ी देर के बाद बोझिल मिलता है।
>> अब, एक ही रास्ता सरणियों analogize को अपने स्थानीय पोस्ट के बारे में सोचने के लिए है
एक पल के लिए कार्यालय।
तो प्रोग्रामिंग से दूर कदम और सिर्फ अपनी आँखें बंद
और अपने मन में कल्पना अपने स्थानीय पोस्ट ऑफिस।
आमतौर पर, सबसे बाद में कार्यालयों, एक बड़े बैंक भी नहीं है
दीवार पर एक पोस्ट ऑफिस बॉक्स का।
>> एक सरणी एक विशाल खंड है सन्निहित स्मृति की,
एक मेल है कि एक ही रास्ता अपने पोस्ट ऑफिस में बैंक
एक बड़ी जगह पर है पोस्ट ऑफिस की दीवार।
सारणियों, छोटे में विभाजित कर दिया गया है हूबहू अंतरिक्ष के आकार के ब्लॉक,
जिनमें से प्रत्येक में एक तत्व कहा जाता है उसी तरह से पोस्ट की दीवार है कि
कार्यालय, छोटे में विभाजित किया गया है हूबहू अंतरिक्ष के आकार के ब्लॉक,
जो हम एक PO बॉक्स कहते हैं।
सरणी के प्रत्येक तत्व कर सकते हैं , डेटा की एक निश्चित राशि की दुकान
प्रत्येक पोस्ट ऑफिस बॉक्स में सक्षम है बस के रूप में मेल की एक निश्चित राशि धारण करने के लिए।
>> के प्रत्येक तत्व में संग्रहित किया जा सकता है क्या सरणी एक ही डेटा के चर है
इस तरह के सिर्फ पूर्णांक या चार, के रूप में प्रकार, अपनी पोस्ट ऑफिस बॉक्स में की तरह,
आप केवल बातें कर सकते हैं फिट एक समान प्रकार की,
इस तरह के पत्र या छोटे पैकेज के रूप में।
अन्त में, हम में से हर तत्व का उपयोग कर सकते हैं सीधे सूचकांक संख्या से सरणी,
हम अपने पोस्ट ऑफिस तक पहुंच सकते हैं बस के रूप में अपने मेलबॉक्स नंबर जानने के द्वारा बॉक्स।
उम्मीद है, कि सादृश्य आप अपने सिर को पाने में मदद करता है
सरणियों के विचार से चारों ओर कुछ और करने को सादृश्य
आप शायद हैं कि साथ पहले से ही परिचित।
>> सी में, एक सरणी के तत्व होते हैं 1 से नहीं, 0 से शुरू अनुक्रमित।
और यह वास्तव में महत्वपूर्ण है।
यही कारण है कि हम और वास्तव में, यह है, सीएस 50 में, बार और क्यों कंप्यूटर वैज्ञानिकों
0 से गिनती होगी, है क्योंकि सी सरणी की
हमेशा 0 में शुरू होता है, जो अनुक्रमण,।
एक सरणी n तत्वों के होते हैं तो, उस सरणी के पहले तत्व
, 0 सूचकांक में स्थित है और सरणी के अंतिम तत्व
सूचकांक n शून्य से 1 पर स्थित है।
फिर, में n तत्वों है कि अगर वहाँ हमारे सरणी, पिछले सूचकांक n शून्य से 1 है।
>> इसलिए हमारे सरणी 50 तत्व है, यदि पहला तत्व, 0 सूचकांक में स्थित है
और पिछले तत्व सूचकांक 49 पर स्थित है।
दुर्भाग्य से, या सौभाग्य से, आपके दृष्टिकोण पर निर्भर करता है,
सी यहाँ बहुत उदार है।
यह करने से रोकने नहीं होगा अपने सरणी की सीमा से बाहर जा रहा है।
आप शून्य तक पहुँच सकता है अपने सरणी के 3 तत्व
या अपने सरणी के 59 वें तत्व, अपने सरणी केवल 50 तत्वों की है।
यह से अपने कार्यक्रम बंद नहीं होगा संकलन, लेकिन चलाते समय,
आप एक मुठभेड़ हो सकता है खूंखार विभाजन गलती
आप स्मृति का उपयोग करने के लिए शुरू करते हैं कि क्या की सीमा से बाहर है
क्या आप को देने के लिए अपने कार्यक्रम के लिए कहा।
इसलिए सावधान रहना है।
>> क्या एक सरणी करता है घोषणा की तरह लग रही है?
हम अस्तित्व में एक सरणी कोड क्या कैसे जैसे हम किसी भी अन्य चर कोड?
तीन भागों में एक सरणी के लिए कर रहे हैं एक प्रकार declaration--, एक नाम है,
और एक आकार।
यह एक के समान है चर घोषणा, जो
सिर्फ एक प्रकार है और एक नाम है, किया जा रहा आकार तत्व
एक सरणी के लिए विशेष मामला है, हम उनमें से एक गुच्छा हो रही है क्योंकि
एक ही समय में।
>> इसलिए प्रकार चर किस तरह का है आप सरणी के प्रत्येक तत्व होना चाहते हैं।
पूर्णांकों की एक सरणी के लिए यह करना चाहते हैं?
फिर, अपने डेटा प्रकार पूर्णांक होना चाहिए।
आप इसे एक होना चाहते हैं युगल या मंगाई की सरणी?
डेटा प्रकार डबल हो या नाव चाहिए।
नाम क्या है आप अपने सरणी कॉल करना चाहते हैं।
आप इस विशाल नाम करने के लिए क्या करना चाहते हैं पूर्णांकों या मंगाई या वर्ण के बैंक
या डबल्स, या जो कुछ भी आपके पास है?
क्या तुम इसे कॉल करना चाहते हैं?
सुंदर आत्म व्याख्यात्मक।
>> चला जाता है, जो अंत में, आकार, वर्ग कोष्ठक के अंदर,
कितने तत्वों तुम होगा अपने सरणी शामिल करने के लिए की तरह।
आप कितने पूर्णांकों चाहते हो?
आप कितने मंगाई चाहते हो?
>> तो उदाहरण के लिए, छात्र ग्रेड 40 int।
इस छात्र नामक एक सरणी वाणी 40 पूर्णांकों के होते हैं जो ग्रेड,।
सुंदर आत्म व्याख्यात्मक, मुझे आशा है।
यहाँ एक उदाहरण है।
डबल मेनू कीमतों 8।
यह कहा जाता है एक सरणी बनाता है होते हैं जो मेनू कीमतों,
आठ युगल के लिए स्मृति में कमरे से।
>> आप हर तत्व के बारे में सोच प्रकार के डेटा प्रकार की एक सरणी की,
इसलिए, उदाहरण के लिए, एक ही तत्व int प्रकार की एक सरणी, एक ही तरीका है कि आप
किसी अन्य के बारे में सोचना होगा int प्रकार के चर,
सभी परिचित संचालन हम उस संचालन में पहले से चर्चा की
वीडियो समझ कर देगा।
यहाँ तो, हम एक सरणी घोषित कर सकता है Truthtable बुलाया Booleans की,
जो 10 Booleans के लिए कमरे के होते हैं।
>> और फिर, अभी हम सिर्फ आवंटित कर सकते हैं पसंद प्रकार के किसी भी अन्य चर के लिए एक मूल्य
बूलियन, हम कुछ कह सकते हैं Truthtable वर्ग कोष्ठक की तरह
हम से संकेत मिलता है जो कि कैसे 2, जो सच तालिका के तत्व?
के तीसरे तत्व सच तालिका, क्योंकि याद है,
हम 0 से गिनती कर रहे हैं।
तो यह है कि हम से संकेत मिलता है कि कैसे है सच तालिका के तीसरे तत्व।
Truthtable 2, झूठी बराबर होती है बस हम declare-- सकता है की तरह
या हम किसी भी, बल्कि आवंटित कर सकते हैं बूलियन प्रकार चर झूठे हो।
>> हम यह भी परिस्थितियों में इसका इस्तेमाल कर सकते हैं।
(truthtable 7 == यदि कहने के लिए है, जो सच है),
आठवें तत्व है, तो Truthtable का सच है,
शायद हम एक संदेश मुद्रित करना चाहते हैं उपयोगकर्ता, printf ("सच है! n") करने के लिए ;.
यही कारण है कि Truthtable कहने के लिए हमें का कारण बनता है 10 सही, सच के बराबर होती है?
खैर, मैं कर सकता हूँ, लेकिन यह बहुत है खतरनाक है, क्योंकि याद है,
हम 10 Booleans की एक सरणी है।
तो उच्चतम सूचकांक कि संकलक हमें 9 दिया है।
>> इस कार्यक्रम के संकलन होगा, लेकिन यदि स्मृति में कुछ और
जहां हम करेंगे मौजूद है Truthtable 10 जाने की उम्मीद है,
हम एक विभाजन गलती पीड़ित सकता है। हम इसके साथ दूर हो सकता है, लेकिन सामान्य रूप में,
बहुत खतरनाक है।
तो क्या मैं कर रहा हूँ यहाँ कानूनी सी है, लेकिन जरूरी नहीं कि सबसे अच्छा कदम।
अब, आप की घोषणा कब और एक साथ एक सरणी को प्रारंभ,
वास्तव में एक बहुत वहाँ है विशेष सिंटैक्स कि आप
सरणी को भरने के लिए उपयोग कर सकते हैं अपने शुरुआती मूल्यों के साथ।
यह करने के लिए बोझिल प्राप्त कर सकते हैं , आकार 100 के एक सरणी की घोषणा
और फिर कहने के लिए है, तत्व 0 इस के बराबर होती है; तत्व 1 इस के बराबर होती है;
तत्व 2 कि बराबर होती है।
सही, क्या बात है?
>> यह एक छोटा सा सरणी है, तो आप कुछ इस तरह कर सकता है।
बूल truthtable 3 खुले बराबर होती है घुंघराले ब्रेस और फिर अल्पविराम
तत्वों की सूची अलग आप सरणी में डाल करना चाहते हैं।
फिर घुंघराले ब्रेस अर्धविराम बंद करें।
इस की एक सरणी बनाता है आकार Truthtable नामक तीन,
तत्वों, झूठा सच है, और सच के साथ।
और वास्तव में, प्रारंभ मैं यहाँ वाक्य रचना है
कर के रूप में बिल्कुल वैसा ही नीचे व्यक्तिगत तत्व सिंटेक्स।
कोडिंग के इन दो तरीकों से होता है ठीक उसी सरणी का उत्पादन।
>> इसी तरह, हम पुनरावृति सकता तत्वों का सब कुछ खत्म
एक पाश का उपयोग कर एक सरणी, जो, में से तथ्य यह है कि एक बहुत ही जोरदार सिफारिश की है
पर घर व्यायाम।
कैसे आप एक सरणी कैसे बना सकता हूँ 100 पूर्णांक, जहां की
सरणी के प्रत्येक तत्व अपने सूचकांक है?
तो उदाहरण के लिए, हम 100 की एक सरणी है पूर्णांकों, और पहली तत्व में,
हम 0 डाल करना चाहते हैं।
दूसरा तत्व में, हम एक डाल करना चाहते हैं।
तीसरे तत्व में, हम चाहते हैं 2 डाल करने के लिए; और आगे और आगे।
यह एक बहुत अच्छा है पर घर व्यायाम है कि क्या करना है।
>> इधर, यह नहीं दिखता है की तरह बहुत ज्यादा बदल गया है।
लेकिन बीच में है कि नोटिस वर्ग कोष्ठक, इस बार,
मैं वास्तव में नंबर छोड़े गए गए हैं।
आप उपयोग कर रहे हैं, तो यह बहुत ही विशेष प्रारंभ
वाक्य रचना एक बनाने के लिए सरणी, आप वास्तव में नहीं है
आकार संकेत की जरूरत है सरणी के पहले से।
संकलक काफी चालाक है वास्तव में आप जानते हैं कि करने के लिए
, आकार 3 की एक सरणी चाहते हैं आप तीन तत्व डाल क्योंकि
बराबर चिह्न के अधिकार के लिए।
आप चार डाल दिया था, तो यह होता है आप आकार चार के एक सच तालिका दिया;
और आगे और आगे।
>> सारणियों एक भी करने के लिए ही सीमित नहीं हैं जो बहुत अच्छा है आयाम।
आप वास्तव में कई हो सकते हैं पक्ष विनिर्देशकों रूप में आप चाहते।
तो उदाहरण के लिए, यदि आप बनाना चाहते हैं खेल युद्धपोत के लिए एक बोर्ड है, जो,
तुम कभी खेला है, तो है कि एक खेल है 10 ग्रिड से 10 पर खूंटे के साथ खेला जाता है,
आप इस तरह से एक सरणी बना सकते हैं।
आप Bool कह सकते हैं युद्धपोत वर्ग ब्रैकेट 10
बंद वर्ग कोष्ठक वर्ग ब्रैकेट 10 वर्ग ब्रैकेट बंद हुआ।
>> और फिर, आप करने के लिए चुन सकते हैं एक 10 के रूप में अपने मन में इस व्याख्या
कोशिकाओं के 10 ग्रिड द्वारा।
अब, वास्तव में, स्मृति में, यह वास्तव में सिर्फ करता है
एक 100 तत्व रहते हैं एकल आयामी सरणी।
और यह है, वास्तव में, यदि आप के लिए चला जाता है तीन आयामों या चार या पांच लोगों की है।
यह वास्तव में सिर्फ गुणा होता है indices-- के सभी
या आकार के सभी एक साथ specifiers--,
और तुम सिर्फ एक आयामी मिल उस आकार की सरणी।
>> लेकिन संगठन के संदर्भ में और दृश्य और मानव धारणा है,
यह एक बहुत आसान हो सकता है एक ग्रिड के साथ काम करने के लिए
आप एक खेल पर काम कर रहे हैं टिक टीएसी को पैर की अंगुली या युद्धपोत की तरह,
या कुछ इस तरह का।
यह एक महान अमूर्त है, बजाय होने की
एक टिक टीएसी को पैर की अंगुली के बारे में सोचने के लिए नौ वर्ष की एक पंक्ति के रूप में बोर्ड
चौराहों या एक युद्धपोत बोर्ड 100 चौकों की एक पंक्ति के रूप में।
10 ग्रिड या एक तीन से एक 10 तीन से ग्रिड शायद है
एक बहुत अधिक आसान अनुभव करने के लिए।
>> अब, कुछ वास्तव में सरणियों के बारे में महत्वपूर्ण है।
हम प्रत्येक व्यक्ति का इलाज कर सकते हैं एक चर के रूप में सरणी के तत्व।
हम जानते हैं कि पहले देखा था जब हम बताए थे
कुछ Booleans करने के लिए सही मूल्य या सशर्त में उन्हें परीक्षण।
लेकिन हम पूरे इलाज नहीं कर सकते चर के रूप में खुद को arrays।
हम, उदाहरण के लिए, एक सरणी प्रदान नहीं कर सकते असाइनमेंट का उपयोग कर एक और सरणी के लिए
ऑपरेटर।
यह कानूनी सी नहीं है
>> हम example-- के लिए, चाहते हैं क्या हम चाहते हैं कि उदाहरण में कर रहा होगा
दूसरे में एक सरणी कॉपी करने के लिए किया जाएगा।
हम जानते हैं कि हम वास्तव में क्या करना चाहते हैं पर कॉपी करने के लिए एक पाश का उपयोग करने की जरूरत है
एक समय में प्रत्येक व्यक्ति तत्व है।
मैं इसे लेने के लिए थोड़ा समय है पता है।
>> तो उदाहरण के लिए, यदि हम इन जोड़ी थी कोड की लाइनों की, यह काम करेगा?
ठीक है, नहीं, यह सही नहीं होगा?
हम कोशिश कर रहे हैं क्योंकि पट्टी करने के लिए भोजन आवंटित करने के लिए।
यही कारण है कि काम करने के लिए नहीं जा रहा है, यह एक सरणी है, क्योंकि
और हम सिर्फ वर्णित कि कानूनी सी नहीं है कि
>> इसके बजाय, हम करना चाहते हैं भोजन की सामग्री की नकल
जो है, जो बार में हम यहाँ क्या करने की कोशिश कर रहे हैं
हम इस तरह एक वाक्य रचना की आवश्यकता होगी।
हम एक पाश के लिए चला जाता है कि राशि जम्मू से 5 तक के 0 के बराबर है
और हम में से हर यात्रा पर जम्मू वेतन वृद्धि पाश और इस तरह से निरुपित तत्वों।
यह भी बार नतीजा होगा किया जा रहा है एक, दो, तीन, चार, पांच,
लेकिन हम बहुत यह यह करना होगा धीमी तत्व द्वारा-तत्व भी तरह से,
के बजाय सिर्फ द्वारा पूरे सरणी नकल।
अन्य प्रोग्रामिंग में भाषाओं, अधिक आधुनिक लोगों,
आप वास्तव में है, अभी क्या कर सकते हैं कि वाक्य रचना सरल बराबर होती है।
लेकिन सी, दुर्भाग्य से, हम कर रहे हैं ऐसा करने के लिए अनुमति नहीं है।
>> अब, एक दूसरे को देखते है बात यह है कि मैं उल्लेख करना चाहते हैं
सरणियों के बारे में कि एक छोटे से किया जा सकता है थोड़ा मुश्किल पहली बार जब आप
उन लोगों के साथ काम करते हैं।
हम एक वीडियो में चर्चा चर गुंजाइश के बारे में,
कि जब आप कॉल सी में सबसे चर, उन्हें कार्यों में, मूल्य द्वारा पारित कर रहे हैं।
आप इसका क्या मतलब याद है मूल्य से कुछ को पारित करने के लिए?
यह हम की एक प्रतिलिपि बना रहे हैं इसका मतलब में पारित किया जा रहा है कि चर।
कॉल प्राप्त करने वाला समारोह, समारोह कि, चर प्राप्त है
चर खुद को नहीं मिलता है।
यह अपने आप ही स्थानीय हो जाता है यह की नकल के साथ काम करने के लिए।
>> सारणियों, ज़ाहिर है, ऐसा इस नियम का पालन नहीं।
बल्कि, हम यह कहते हैं क्या संदर्भ से गुजर रहा है।
कॉल प्राप्त करने वाला वास्तव में सरणी प्राप्त करता है।
यह प्राप्त नहीं होता है इसकी इसके बारे में अपने स्थानीय प्रतिलिपि।
और आप के बारे में सोचते हैं, तो यह, यह समझ में आता है।
सरणियों वास्तव में बड़े हैं, तो यह इतना समय और प्रयास लेता है
की एक सरणी की एक प्रतिलिपि बनाने के लिए 100 या 1000 या 10,000 तत्वों,
यह एक के लिए इसके लायक नहीं है कि इसकी एक प्रति प्राप्त करने के लिए कार्य करते हैं,
फिर उसके साथ कुछ काम करते हैं, और बस कॉपी के साथ किया जा;
यह करने की जरूरत नहीं है यह अब और चारों ओर लटके।
>> सरणियों हैं क्योंकि कुछ भारी और बोझिल,
हम सिर्फ संदर्भ द्वारा उनके पास।
हम सिर्फ इतना है कि समारोह पर भरोसा , कुछ भी नहीं तोड़ कर लिए।
तो यह वास्तव में सरणी प्राप्त करता है।
यह यह की अपनी खुद की स्थानीय प्रतिलिपि नहीं मिलता है।
>> अच्छा तो इसका क्या मतलब है, तब, जब कॉल प्राप्त करने वाला
सरणी के तत्वों manipulates?
क्या होता है?
अभी के लिए, हम व्याख्या करेंगे यही कारण है कि वास्तव में इस पर
, क्यों सरणियों होता है संदर्भ द्वारा पारित कर रहे हैं
और सब कुछ मान द्वारा पारित कर दिया है।
लेकिन मैं तुमसे वादा करता है, हम करेंगे लौट सकते हैं और आप जवाब दे
बाद में एक वीडियो में यह करने के लिए।
>> यहाँ आप के लिए एक और व्यायाम है हम सरणियों पर चीजों को लपेट से पहले।
यहाँ कोड का गुच्छा, कि नहीं विशेष रूप से अच्छा शैली,
सिर्फ मैं चेतावनी है कि बनाती हूँ।
यहाँ में कोई टिप्पणी नहीं है, जो बहुत बुरा रूप है।
लेकिन यह मैं नहीं जाना चाहता क्योंकि केवल स्क्रीन पर सब कुछ फिट करने में सक्षम।
>> शीर्ष पर, आप है कि मैं देख सकते हैं सेट सरणी के लिए दो समारोह घोषणाओं
और पूर्णांक निर्धारित किया है।
सेट सरणी जाहिरा तौर पर एक सरणी लेता है अपने इनपुट के रूप में चार पूर्णांक।
और सेट पूर्णांक जाहिरा तौर पर लेता है अपने इनपुट के रूप में एक पूर्णांक।
लेकिन उन दोनों को एक उत्पादन की जरूरत नहीं है।
उत्पादन, वापसी हर एक शून्य है की, टाइप करें।
मुख्य रूप से, हमारे पास एक कोड की लाइनों की जोड़ी।
हम एक पूर्णांक चर घोषित एक कहा जाता है और यह मूल्य 10 आवंटित।
हम चार पूर्णांक एक सरणी की घोषणा बी कहा जाता है और तत्वों 0, 1 आवंटित,
क्रमश: 2, और 3,।
तो, हम स्थापित करने के लिए एक फोन है int और एक कॉल सरणी स्थापित करने के लिए।
सेट सरणी और सेट की परिभाषा पूर्णांक तल पर, नीचे से नीचे हैं।
>> और हां, तो फिर, मैं आप सवाल पूछते हैं।
क्या बाहर मुद्रित हो जाता है यहां मुख्य के अंत में?
एक प्रिंटआउट कर्नल है। मैं कर रहा हूँ दो पूर्णांकों को छापता है।
मैं एक की सामग्री को बाहर मुद्रण कर रहा हूँ और बी वर्ग कोष्ठक 0 की सामग्री।
यहाँ वीडियो रोकें और एक मिनट ले।
आप क्या यह समझ सकते समारोह के अंत में मुद्रित होगा?
उम्मीद है, यदि आपको याद है मूल्य से गुजर बीच भेद
और संदर्भ से गुजर रहा है, इस समस्या यह है आप के लिए भी मुश्किल नहीं था।
जवाब और तुम होगा पाया है यह है।
आप के रूप में सच में यकीन नहीं कर रहे हैं यह मामला है क्यों, एक दूसरा ले
वापस जाने के लिए, मैं तो बस क्या था की समीक्षा सरणियों गुजर के बारे में चर्चा
संदर्भ द्वारा, गुजर बनाम मूल्य द्वारा अन्य चर,
और उम्मीद है, यह कर दूँगा एक छोटा सा और भावना।
>> मैं डौग लॉयड हूँ, और इस CS50 है।