कोड को पढ़ने में सक्षम लेकिन इसे लिखने के लिए प्रमुख रूप से संघर्ष करना [बंद]


22

मैंने हाल ही में अपनी पहली प्रोग्रामिंग परीक्षा दी थी ... और अच्छी तरह से मैंने इसे बहुत फ्लॉप कर दिया। बहुत अच्छा नहीं किया। मेरे पास केवल कॉलेज के समय के बाहर दोष देने के लिए ही है, मैंने बहुत कुछ नहीं किया।

अब मेरे पास एक और गर्मी का समय आ रहा है और मैं इसे दोबारा नहीं होने दूंगा। कुछ हफ़्ते के लिए अब मैं कुछ और पढ़ रहा हूं, पढ़ रहा हूं। मैं उन पुरानी चीजों को छोड़ता रहता हूं जिन्हें मैंने याद किया है और जो नई चीजें हम कर रहे हैं। इसलिए, जाहिर है कि मैं भाषा की मेरी समझ में बहुत बड़ा अंतर देख सकता हूं। हालाँकि, इसके बारे में है। मैं कोड पढ़ सकता हूं और मुझे अब इस बात का अंदाजा है कि कोड में क्या हो रहा है ... लेकिन जब मुझे कोड लिखने की बात आती है तो मैं सिर्फ क्लूलेस हूं। यह ऐसा है जैसे मैं कभी नहीं जानता कि क्या दृष्टिकोण लेना है और वास्तव में कभी भी प्रश्नों को पूरी तरह से समझ नहीं सकता है।

मैंने पढ़ने की एक उचित मात्रा में किया है (पिछले महीने या तो के लिए लगभग 5-6 घंटे कर रहा है) प्रत्येक दिन ... लेकिन अपनी आईडीई खोलते समय मुझे हमेशा लगता है कि यह वास्तव में ध्वस्त है। खासकर क्योंकि मुझे नोड्स, लिस्ट्स, एंस्लिस्ट्स की जानकारी है, वे एक्ट्रेस को एक्ट्रेस बनाते हैं, लेकिन इसके अलावा उन्हें एक पेज पर पढ़ने के अलावा जो इसके बारे में है। मैं वास्तव में वह सब कुछ इंगित कर सकता हूं जो एक कार्यक्रम में चल रहा है ताकि मैं एक सटीक कोड बताऊं जो मुझे ठीक लगे ... लेकिन अपना कोड लिखना एक और कहानी है ..


8
यह एक लक्ष्य रखने में मदद करता है। यदि, उदाहरण के लिए, आप एक खेल बनाना चाहते हैं, तो आप एक रूपरेखा या पुस्तकालय डाउनलोड कर सकते हैं और परिचयात्मक ट्यूटोरियल का पालन कर सकते हैं। यदि कुछ कम जटिल है, तो आप इन कार्यक्रमों के उदाहरणों की खोज करके शुरू कर सकते हैं, उन्हें विघटित कर सकते हैं और उन्हें संशोधित कर सकते हैं और अपनी आवश्यकताओं या हितों के अनुकूल बना सकते हैं।
काई किंग

10
कम पढ़ें और कार्यक्रम अधिक। सरल प्रोजेक्ट खोजें और उन्हें करें। इसे पूरी तरह से करने की चिंता न करें, बस उन्हें वही करने को कहें जो वे करने जा रहे हैं। फिर सोचें कि आप बेहतर कैसे कर सकते हैं।
फिलिप

1
कुछ हफ़्ते के लिए अब मैं कुछ और पढ़ रहा हूं, पढ़ रहा हूं। - पढ़ना एक शुरुआत है, वास्तव में कोडिंग बहुत बेहतर है। कागज पर psuedocode में एक कार्यक्रम लिखने की कोशिश करें, फिर इसे जावा में अनुवाद करें। यह थोड़ा आसान है यदि आप पहले से ही जानते हैं कि आपको क्या करना है।
एंड्रियास


1
मैंने पाया कि यह एक बहुत ही दिलचस्प लेख है, जिसमें यह पता लगाने की कोशिश की गई है कि कोडिंग की मूल बातें दूसरों को कैसे कोड और सिखाना है: ऊंट के पास दो पट्टियाँ हैं । कुछ लोग इसे तुरंत प्राप्त करते हैं, अन्य कभी नहीं करेंगे - लेकिन हम में से अधिकांश सीख सकते हैं। यदि आप कोड को पढ़ और समझ सकते हैं, तो आप एक शानदार शुरुआत के लिए रवाना होंगे :)
ब्रिचिन्स 19

जवाबों:


45

आप प्रोग्राम लिखकर प्रोग्राम लिखना सीखते हैं।

लेकिन आप छोटे आदमी शुरू होगा।

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}  

वहां से, निर्माण शुरू ...

public class HelloWorld {
    static String test = "This is a test";

    public static void main(String[] args) {
        System.out.println(test);
    }
}

और फिर...

public class HelloClass {
    String test;

    public void setTest(String str)
    {
        test = str;
    }  

    public String getTest()
    {
        return test;
    }
}

public class HelloWorld {
    HelloClass myHelloInstance;

    public static void main(String[] args) {
        myHelloInstance = new HelloClass();
        myHelloInstance.SetTest("Hello World.")
        String myResult = myHelloInstance.getTest();
        System.out.println(myResult);
    }
}  

... और इसी तरह। एक बार जब आप यह समझ लेते हैं कि ऑब्जेक्ट कैसे काम करते हैं, तो बड़े कार्यक्रमों को लिखना बहुत आसान होगा।


8
आपका दूसरा उदाहरण संकलित करने में विफल होना चाहिए क्योंकि आप एक स्थिर संदर्भ में एक गैर-स्थिर चर तक पहुंच रहे हैं।
ब्रैंडन

34
@Brandon: तो यह एक डिबगिंग व्यायाम अच्छा और जल्दी है।
ब्रायन बोएचर

यह है कि हर कोई कोड को कैसे सीखता है, मुझे लगता है, या कोड करना सीखना चाहिए।
mrudult

1
अपने भीतर के नाइके को गले लगाओ और "बस करो"।
NotMe

15

बड़ा अच्छा सवाल! यह समझना महत्वपूर्ण है कि आपके पास चढ़ाई करने के लिए कई सीखने वाले मोड़ हैं। बस इतना है कि आपको नहीं लगता कि आप केवल एक प्रोग्रामिंग भाषा सीख रहे हैं। आप उससे कुछ अधिक कर रहे हैं।

आप इसके बारे में जान रहे हैं ...

  1. उपकरण जो आप कोड लिखने के लिए उपयोग करते हैं। आपका विकास परिवेश, संपादक, डीबगर, आपका संकलक। इन सभी उपकरणों के लिए मैनुअल और मदद फाइलें हैं, उन्हें देखें। जितना अधिक आप उपकरण जानते हैं उतना आसान कोड बनाना है।
  2. अध्ययन के तहत प्रोग्रामिंग भाषा का वाक्य विन्यास , आपकी पोस्ट से ऐसा लगता है जैसे आप यहाँ बहुत अधिक ध्यान केंद्रित कर रहे हैं और आपको निश्चित रूप से इसकी आवश्यकता है।
  3. समाधान डिजाइन कौशल । कोड का एक उपयोगी, रखरखाव योग्य टुकड़ा कैसे एक साथ रखा जाए। यह वह मांसपेशी है जिसे आपको बनाने की आवश्यकता है। जैसे अन्य पोस्टरों ने इशारा किया है, आप कर सीखते हैं।

मुझे संदेह है कि यह तीन बिंदु है जहाँ आप संघर्ष कर रहे हैं। आप सीख रहे हैं कि कोड (सिंटैक्स) में चीजों को कैसे कहा जाए, लेकिन वास्तव में आप हमसे पूछ रहे हैं कि मुझे कोड में क्या कहना चाहिए। क्या चीजों को करने का एक सही तरीका और गलत तरीका है?

मैं आपको सुझाव दूंगा कि आप एक चुनौती लें। एक अभ्यास के रूप में निम्नलिखित पर एक नज़र डालें।

http://en.wikipedia.org/wiki/Eight_queens_puzzle

अब यह कड़ी चुनौती है। आपको आठ क्वीन्स को एक शतरंज बोर्ड पर रखना होगा ताकि प्रत्येक क्वींस एक दूसरे से सुरक्षित रहें।

इसलिए एक शिक्षार्थी के रूप में यह एक अति-पहुंच हो सकती है, हालाँकि आप इस समस्या को देख सकते हैं और इसका उपयोग कोड लिखना सीख सकते हैं।

यहाँ एक रणनीति है ...

  1. समस्या को दूर करने के लिए सरल करें कि बताई गई समस्या हल हो जाए । आठ रानियों को भूल जाओ। सिर्फ एक पर ध्यान दें। मेमोरी में शतरंज बोर्ड का प्रतिनिधित्व करने के लिए कोड लिखना सीखें, उस बोर्ड पर एक रानी रखें और फिर इसे उपयोगकर्ता को केवल पाठ में स्क्रीन पर प्रदर्शित करें।

  2. एक बार जब आप स्टेप 1 पर स्टैब बना लेते हैं, तो दो रानियों को इस तरह रखें कि वे दोनों सुरक्षित रहें।

  3. अंत में, बोर्ड पर 2 से अधिक रानियों को रखने पर जाएं ताकि वे सभी सुरक्षित हों।

उपरोक्त चरण एक डिजाइन रणनीति पर एक मोड़ है जिसे स्टेप-वार शोधन कहा जाता है। यह डिजाइन के मामले में थोड़ा पुराना है, लेकिन यह आपको खाली स्क्रीन से कुछ ही समय में कुछ दिलचस्प कोड में ले जाएगा।

अन्य डिजाइन और कार्यान्वयन रणनीतियाँ हैं: टेस्ट ड्रिवेन डिज़ाइन, ऑब्जेक्ट ओरिएंटेड डिज़ाइन और डिज़ाइन पैटर्न कुछ के नाम।

समय के साथ आप इन रणनीतियों को शस्त्रागार में जोड़ देंगे और आवश्यकता पड़ने पर उनका उपयोग करेंगे। जितनी अधिक डिज़ाइन रणनीतियाँ आप अध्ययन करते हैं और अभ्यास उतना ही आसान हो जाएगा।

स्रोत आपके साथ हो सकता है।


OO Design Design पैटर्नों से अलग कैसे है? या आप दोनों को एक साथ रख रहे हैं?
पियरे अरलाउड

1
स्टेप वाइज शोधन और OO परस्पर अनन्य नहीं हैं, लेकिन आप शायद यह जानते हैं। स्रोत आपके साथ हो सकता है। +1
गूसडोर

15

एक त्वरित प्राक्कथन

कर के जानें: ज्ञान बनाम पता-कैसे

एक बड़ा अंतर ज्ञान और पता है कि कैसे है। नए शिक्षार्थियों के लिए यह सोचना एक सामान्य गलती है कि क्योंकि वे एक कार्यक्रम को "समझ" सकते हैं जैसा कि वे इसे पढ़ते हैं, वे वास्तव में कार्यक्रम के तर्क को समझ रहे हैं जिस तरह से लिखा जा रहा है।

और उस दूसरे भाग को प्राप्त करने का एकमात्र तरीका अभ्यास करना है। बैठ जाओ, एक पाठ संपादक, एक कमांड लाइन खोलें, और उसके नीचे उतरें।

छोटे में प्रोग्रामिंग

यह संभावना (और अपेक्षित) है कि इस स्तर पर आपके जटिल सॉफ्टवेयर घटक एक दूसरे के साथ बातचीत करने की क्षमता को सीमित करने की क्षमता रखते हैं। और यह वास्तव में एक अच्छी बात है, क्योंकि यह आपको मूल से शुरू करने के लिए मजबूर करता है। बंदूक न चलाएं और सही गति से आगे बढ़ें: छोटे कार्यों के लिए छोटे अभ्यास से शुरुआत करें।

सच कहूं तो मुझे कभी यकीन नहीं हुआ कि जावा के साथ प्रोग्रामिंग सीखना शुरू करने का तरीका है (मैं विश्वविद्यालय में रहने के लिए प्रोग्रामिंग सिखाता था, और अभी भी कभी-कभार निजी ट्यूशन करता हूं)। आप शुरू करने के लिए यह अपने आप में बहुत जटिल है, और अधिकांश जावा पुस्तकें काफी चुनौतीपूर्ण प्रतीत होंगी। फिर भी, यह निश्चित रूप से किया जा सकता है (कम से कम उस वैश्विक ज्ञान के कुछ क्षेत्रों के लिए जो हम प्रोग्रामर से उम्मीद करते हैं), जब तक आप खुद को कदम से कदम सीखने तक सीमित रखते हैं।

पुस्तकें

जैसा कि आप जावा पर सेट हैं, और यदि आपको एक अच्छी जावा बुक की आवश्यकता है, तो मैं सुझाऊंगा:

  • जावा में सोच रहा था । यह ठीक है, हालांकि अब थोड़ा पुराना है।
  • जावा ट्यूटोरियल । यह वास्तव में सबसे अच्छा सीखने वाला साथी नहीं है, लेकिन हाथ में रखने के लिए एक महान संदर्भ है, क्योंकि यह सभी मूल बातें शामिल करता है और उदाहरण प्रदान करता है। सीखना जावा भाषा ट्रेल शायद, अपनी पठन सूची पर होना चाहिए, हालांकि मुझे लगता है कि चाहते हैं यह पूरा शुरुआती के लिए चुनौतीपूर्ण हो सकता है के रूप में यह अवधारणाओं कि पहली बार में समझ में मुश्किल हो सकता है प्रस्तुत करता है।
  • प्रभावी जावा । यह सीखने के लिए एक महान पुस्तक नहीं है, बल्कि एक भयानक संदर्भ भी है जिसे आपको बाद में हाथ में लेना चाहिए। एक बैठे में पढ़ने के लिए नहीं, लेकिन काटने के आकार की चोंच में।

मैं केवल इसका उल्लेख कर रहा हूं क्योंकि मुझे नहीं पता कि आप कक्षा में क्या उपयोग करते हैं। अन्य पुस्तकों का एक टन है। कुछ अच्छे हैं। कुछ वर्षों के लिए छात्रों को अपंग करेंगे।


आपकी अध्ययन प्रक्रिया

मूल वर्कफ़्लो

अब से, मैं आपको सलाह दूंगा कि आप कक्षा में देखे गए सभी अभ्यासों और कोड नमूनों के लिए इस 2-चरण प्रक्रिया का पालन करें:

  1. पढ़ें और अध्ययन करें
    1. अभ्यास पढ़ें
    2. सुनिश्चित करें कि आपने उन्हें समझा है
  2. कोड
    1. किताब को बंद करें
    2. उस कोड एडिटर और कमांड लाइन वाले कंप्यूटर के सामने बैठ जाएं
    3. अपने आप से कार्यक्रम को फिर से लिखने का प्रयास

विफलता के मामले में

यदि आप असफल हो जाते हैं और महसूस करते हैं कि आपको पुस्तक पर एक नज़र डालने की आवश्यकता है, तो आपकी विफलता या तो होने की संभावना है:

  • (सबसे अधिक संभावना है) कि आप वास्तव में समाधान नहीं समझ पाए,
  • (कम संभावना) कि आप भूल गए हैं कि समाधान का एक विशेष सा कैसे दिखता है: वाक्यविन्यास, एपीआई उपयोग, ...

पहला कारण वह होने की संभावना है जो आप सबसे अधिक बार सामना करते हैं। दूसरा एक किस्सा है। दोनों को समवर्ती अभ्यास द्वारा संबोधित किया जाता है।

हर बार जब आप इन शुरुआती उदाहरणों में से एक को लागू करने में विफल होते हैं, तो पुस्तक को फिर से देखें, फिर उसे फिर से बंद करें। पुस्तक को देखते हुए कोड न करें। मैं यह भी सलाह दूंगा कि आप अपना संपूर्ण समाधान हटा दें और शुरुआत करें। पुनरावृत्ति सीखने की प्रक्रिया का एक कष्टप्रद लेकिन महत्वपूर्ण हिस्सा है।

इसे हल्के में न लें। हर बार जब आप अपने आप को बताने के लिए आग्रह करता हूं लगता है "हाँ, ठीक है, मैं जानता हूँ यह" या "मैं 90% वहाँ हूँ, यह लगभग हो गया के रूप में अच्छा के रूप में है" और, एक और अनुभाग में जाएं कि आग्रह करता हूं वापस लड़ने और फिर से प्रारंभ करना चाहते हैं। ईमानदारी से अपने आप को स्वीकार करना बहुत मुश्किल है कि आप पूरी तरह से एक अवधारणा को नहीं समझ पाए हैं।

साइड नोट: मैं इसे एक महान असहमति मानता हूं कि अधिकांश स्कूल कार्यक्रम अब बहुत अधिक नीचे की चीजों को डंपिंग द्वारा प्रोग्रामिंग पाठ्यक्रमों को "किकस्टार्ट" करने का प्रयास करते हैं और टूलींग प्रदान करते हैं जो छात्रों के लिए बहुत उन्नत है: लक्ष्य आपके जीवन को दुखी करना या आपके लिए सीखना भी नहीं है दिल की बातों से जो बाद में आपके करियर में आपके औजारों से स्वचालित हो जाएगा और आपको कभी-कभी मुश्किल से याद भी होगा। यह आपको उन सभी बिट्स को सिखाना है जो चारों ओर तैरते हैं।

सफलता के मामले में: आगे बढ़ो!

यदि आप अपने व्यायाम को लागू करने में सफल होते हैं, तो जरूरी नहीं कि सीधे अगले एक पर कूदें। यह देखने की कोशिश करें कि आप उस एक को बेहतर बनाने के लिए क्या कर सकते हैं। क्या आप उस आउटपुट को बदल सकते हैं जिसे अनुरोध किया गया था? एक छोटी सी सुविधा जोड़ें? एक विकल्प? जैसा कि आप अब उस मज़ेदार क्षेत्र में हैं, जहाँ आप मुख्य कठिनाई से गुज़रे हैं, और ये आत्म-लगाए गए छोटे आवश्यकताएँ आपकी आत्माओं को थोड़ा सा बनाए रखने की अधिक संभावना हैं।

हालांकि बहुत दूर न जाएं: आप वर्णमाला को छापने से नहीं जाते हैं और इसे उलट कर अचानक इसे रंग के एक ढाल के साथ स्क्रीन पर विकर्ण पर प्रकट करते हैं। छोटे कदम उठाएं। सीखना एक लंबी और पुनरावृत्ति प्रक्रिया है, और आपको कठिनाई के बढ़ते स्तरों के साथ समस्याओं का सामना करना पड़ता है (उदाहरण के लिए, देखें कि मैं आमतौर पर पुनरावर्तन को कैसे समझा सकता हूं )।


इट्स जस्ट लर्निंग - ए कम्पेरिजन

आपकी समस्या वास्तव में प्रोग्रामिंग से संबंधित नहीं है। यह वही समस्या है जब हजारों लोग गणित सीखने की कोशिश करते हैं।

यदि आप उन्हें कोई समस्या देते हैं, तो वे यह नहीं देखते कि समाधान के लिए कैसे काम किया जाए। हालाँकि, यदि आप उनके लिए समाधान लिखते हैं, तो अधिकांश इसे समझेंगे और सोचेंगे कि ", यह बहुत आसान था!"। फिर भी आप उन्हें अलग-अलग उपायों और परिकल्पनाओं के साथ एक समान समस्या देंगे और वे इसे हल करने में विफल रहेंगे: वे इसके पीछे के तर्क को नहीं समझ पाए, और उन्हें इसे स्वयं करने में सक्षम होने के लिए अभ्यास की आवश्यकता है।

ध्यान दें कि यह गणित के साथ एक सामान्य समस्या है, लेकिन मेरी राय में आप इसे अन्य क्षेत्रों के टन में देखते हैं जहां कुछ तर्क आवश्यक हैं: एकांत, भाषा व्याकरण, भौतिकी, आदि सीखना ... और यह एक "प्राकृतिक" क्षमता के लिए नीचे नहीं है। इन बातों को समझने के लिए: यह बस अभ्यास करने के लिए नीचे आता है (उस क्षेत्र में, या दूसरों में जो इस क्षेत्र में अवधारणाओं को आसानी से समझ लेते हैं)।

कोई कारण नहीं है कि आप कोड लिखना नहीं सीख सकते। तुम बस जब तक आप "आह आह! / यूरेका पल। फिर अगली, कठिन, समस्या पर आगे बढ़ें।


ये बाद में भी मदद कर सकते हैं:


6

मुझे पता है कि यह ऐसा उत्तर नहीं है जिसे आप सुनना चाहते हैं लेकिन: अधिक कोड लिखें!

अधिक विशेष रूप से उस कोड को विच्छेदित करें जिसे आप समझते हैं। यह अक्सर मुझे इसे नियमित अंग्रेजी में "अनुवाद" करने में मदद करता है (जैसा कि मैं एक रिश्तेदार शुरुआती हूं)।

पहले कोड का एक टुकड़ा लिखने के लिए अपने विचार पर विचार करने से डरो मत (यानी "मैं यहां एक चर घोषित करना चाहता हूं, इस खंड आदि के माध्यम से पुनरावृति करना चाहता हूं"), और इन विभिन्न खंडों को कैसे करना है, यह टुकड़ा द्वारा टुकड़ा देखो।

याद रखें कि संस्मरण में कोडिंग एक अभ्यास की तरह कम है और बिल्डिंग ब्लॉक्स से कुछ बनाने के तरीके का पता लगाना। वास्तविक विदेशी भाषा सीखने की तरह, समझ सबसे पहले आती है, यह एक अच्छा संकेत है कि आप अपने रास्ते पर हैं।

बस विश्वास है कि जितना अधिक आप कोड लिखते और पढ़ते हैं, उतना ही यह समझ में आएगा।


5

जैसा कि दूसरों ने कहा है, यह एक ऐसा मामला है जहां आपको अभ्यास, अभ्यास, अभ्यास करना चाहिए।

छोटे कार्यक्रमों का एक गुच्छा लिखें जो केवल एक समस्या को हल करते हैं

कभी-कभी, सबसे कठिन हिस्सा वास्तव में कुछ लायक प्रोग्रामिंग के साथ आ रहा है। यदि आप कर सकते हैं, तो उस विषय में काम करने की कोशिश करें जिसे आप सोचते हैं कि आप संघर्ष कर रहे हैं - जैसे कक्षाएं, विरासत आदि। मेरे सिर के ऊपर से कुछ विचार:

  • 1000 यादृच्छिक संख्या उत्पन्न करें और उन्हें एक संग्रह (कतार, सूची, आदि) में डालें। आपके द्वारा संग्रह को सॉर्ट किए बिना किसी भी तरीके का उपयोग किए बिना संग्रह को क्रमबद्ध करें।
  • जिन 10 लोगों को आप जानते हैं उन्हें सूचीबद्ध करें। पहले उनके नामों को पहले नामों के आधार पर क्रमबद्ध करें और उन्हें प्रदर्शित करें। फिर, उनके नामों को उनके अंतिम नामों के आधार पर क्रमबद्ध करें और उन्हें प्रदर्शित करें। फिर, उन्हें "पिछले, पहले" (यानी स्मिथ, एंड्रयू स्मिथ, जेसिका से पहले होगा) के आधार पर छाँटने की कोशिश करें।
  • 1 और 100 के बीच सभी अभाज्य संख्याएँ खोजें।
  • (इनहेरिटेंस) एक बहुभुज वर्ग बनाएं, और इसे फ़ंक्शन दें GetArea। अब, बहुभुज से कक्षाएं त्रिभुज और आयत विरासत बनाएं, और सुनिश्चित करें कि वे गेटअरे लागू करें। उच्च क्रम बहुभुज (पेंटागन, षट्भुज, आदि) के लिए ऐसा करते रहें।
  • कोड गोल्फ स्टैक एक्सचेंज से चीजें लेने की कोशिश करें *

* कोड गोल्फ का उद्देश्य प्रश्न में बताए गए पात्रों, बाइट्स या कुछ अन्य मीट्रिक की कम से कम मात्रा का उपयोग करके प्रदान किए गए कार्य को करना है। यदि आप कुछ उत्तरों को पढ़ते हैं, तो आप जल्दी से लोगों की इन समस्याओं को हल करने के चतुर तरीकों की सराहना करते हैं। सबसे कम बाइट्स में समस्या को हल करने पर ध्यान केंद्रित न करें ! जो लोग कोड गोल्फ में पोस्ट करते हैं, वे बहुत अनुभवी प्रोग्रामर होते हैं। लेकिन, कुछ प्रश्न अपने आप में आसान कार्य प्रस्तुत करते हैं।

कुछ मजेदार कोड गोल्फ उदाहरण:

  • ४ की शक्तियाँ । एक रेगेक्स के साथ हल करने के बारे में चिंता न करें (यह काफी मुश्किल है, जैसा कि आप उत्तरों द्वारा देख सकते हैं)। लेकिन, इसके बजाय प्रश्न को हल करें "एक स्ट्रिंग एस को देखते हुए, क्या इसकी लंबाई 4 की शक्ति से विभाज्य है?" आप ऑफशूट भी कर सकते हैं: क्या एक स्ट्रिंग की लंबाई 4 से विभाज्य है? क्या यह 6 से विभाज्य है? क्या यह प्रधान है (यह लंबे समय तक तार के लिए मुश्किल है, इसलिए इसे आज़माएं यदि आपको हिम्मत मिलती है!)।
  • सबस्ट्रिंग । एक स्ट्रिंग s को देखते हुए, सभी संभव पदार्थों का उत्पादन।
  • शब्द गणना । यह आपके प्रोग्रामिंग अध्ययनों में कितनी दूर है, इसके आधार पर यह मुश्किल हो सकता है। कुछ चीजें हैं जो इसे बहुत आसान बनाती हैं (जैसे साहचर्य संग्रह), लेकिन अगर आप उन चीजों को नहीं जानते हैं तो यह मुश्किल हो सकता है।
  • यदि शीर्षक आपको गूढ़ लगता है, तो केवल प्रश्न को अनदेखा करें। जैसा कि मैंने कहा, कोड गोल्फ अनुभवी प्रोग्रामर के लिए है। बस सरल समस्याओं पर ध्यान केंद्रित करें, और एक सरल उत्तर के साथ आने की कोशिश करें।

किसी समस्या को हल करने की मूल संरचना:

इनमें से बहुत से आपको एक अच्छा विचार देते हैं कि किसी फ़ंक्शन को कैसा दिखना चाहिए। X को देखते हुए, Y करें, और परिणाम Z होना चाहिए:

void foo()
{
    // Set up X here

    // Do Y here

    // Display Z here
}

मूल बातें सीखने और एक भाषा से परिचित होने के प्रयोजनों के लिए, उपरोक्त टेम्पलेट पर्याप्त है। एक अधिक वस्तु-उन्मुख टेम्पलेट होगा:

Z foo(input X)
{
    Z result;
    // Do Y to X
    return result;
}

यदि यह मदद करता है, तो इसे कागज पर भी लिखें। खुद की प्रक्रिया के माध्यम से बात करें कि एक इंसान के रूप में आप इस समस्या को कैसे हल करेंगे। उदाहरण: संख्याओं i, j और k को देखते हुए, उन्हें अवरोही क्रम में प्रदर्शित करें। एक व्यक्ति के रूप में, इसे हल करना आसान है। कठिन हिस्सा आपके विचारों को लाइन-बाय-लाइन निर्देशों में अनुवाद कर रहा है ताकि एक कंप्यूटर इसे हल कर सके।

अपने खुद के विचारों के साथ आने की कोशिश करें। यह कठिन हो सकता है, लेकिन यहां तक ​​कि कार्यक्रमों में सबसे सरल आपको कुछ सिखा सकता है जो आप नहीं जानते थे। पूरे बिंदु को मूल बातें के साथ खुद को ड्रिल करना है, जब तक कि वे दूसरी प्रकृति नहीं बन जाते।


4

आपको केवल कोड पढ़ने से कहीं नहीं मिलेगा; आपको कोड लिखना होगा। बस कोड लिखें। चिंता न करें यदि आप जो कोड लिखते हैं वह बकवास है; सभी ने बकवास कोड लिखा है। कुछ लोग इससे बाहर रहने का मन बनाते हैं। कोई भी अच्छा कोड लिखना शुरू नहीं करता है और मेरी राय है कि सीखते समय, बुरा कोड लिखना लगभग आवश्यक है क्योंकि तभी अच्छे और बुरे कोड के बीच अंतर वास्तव में स्पष्ट हो जाता है।

कोड के दो खंडों को पढ़ते समय अच्छे और बुरे कोड के बीच के अंतर की सराहना करना कठिन होता है, लेकिन जब आप एक स्क्रिप्ट लिख चुके होते हैं और आपको इसकी समीक्षा करने के लिए कोई जानकार मिलता है और फीडबैक प्रदान करता है, तो अंतर बहुत अधिक स्पष्ट हो जाता है क्योंकि आप इसे सीधे उस पर लागू कर सकते हैं जो आप जानते हैं।

प्रोग्रामिंग कुछ ऐसा नहीं है जिसे आप रटे याद द्वारा सीख सकते हैं; यह इतिहास में आपके समय सारणी या तिथियों की तरह नहीं है। प्रोग्रामिंग एक व्यावहारिक कौशल है जिसे तेज रहने के लिए निरंतर अभ्यास की आवश्यकता होती है। कोड लिखे बिना प्रोग्रामिंग सीखना एक किताब पढ़कर तैरना सीखना जैसा है।


1

इस सवाल के पहले से ही कुछ बहुत अच्छे जवाब हैं, लेकिन कुछ विचार हैं जो मैंने अभी तक नहीं देखे हैं।

एक प्रोग्रामिंग भाषा सीखना एक 'वास्तविक' भाषा सीखने की तरह है: यह लिखने की तुलना में पढ़ना हमेशा बहुत आसान होता है, यह एक वाक्य, एक वैज्ञानिक पेपर या एक किताब हो। पढ़ते समय, संदर्भ से बहुत कुछ समझा जा सकता है, जैसा कि आप इसे पढ़ते हैं। जब आप एक शब्द देखते हैं जिसे आप नहीं जानते हैं, तो शायद आप एक ही तने के साथ एक और शब्द जानते हैं; जब आप एक विधि देखते हैं, तो विधि का नाम आपको यह बताता है कि यह क्या करता है। लिखते समय, आपको न केवल वाक्यविन्यास, बल्कि उपयोग करने के लिए वास्तविक शब्दों को भी याद रखना होगा। और इसकी प्रोग्रामिंग के लिए एक ही है।

जैसा कि दूसरों ने कहा है, आप केवल पढ़ने के कार्यक्रमों से कार्यक्रम लिखना नहीं सीख सकते ।

छोटा शुरू करो। एक जावा ट्यूटोरियल के लिए देखें, और सभी इकाइयों को एक के बाद एक करें। और जब आप पर्याप्त रूप से आश्वस्त होते हैं, तो अपने कौशल का परीक्षण करने के लिए एक छोटी सी परियोजना चुनें, हो सकता है कि कुछ सरल खेल जो आप अच्छी तरह से जानते हैं, जिन्हें बहुत अधिक जीयूआई बातचीत की आवश्यकता नहीं है। जब आपने फैसला कर लिया है, तो बस अपना ग्रहण न खोलें और 'रिक्त पृष्ठ' को देखें। एक स्टोरीबोर्ड बनाएं। आपको विस्तृत यूएमएल आरेखों को बनाने की ज़रूरत नहीं है, बस इस बारे में सोचें कि कार्यक्रम के कुछ पहलुओं को कैसे हल किया जा सकता है - कहानी या आपका तर्क कैसे प्रकट होता है, इसलिए बोलने के लिए। और कोड लिखते समय, एक मोटे मसौदे से शुरू करें। मैं आमतौर पर बहुत सारी टिप्पणियां लिखता हूं, यह बताता हूं कि कार्यक्रम को किस क्रम में करना चाहिए, और फिर वास्तविक कार्यक्रम कोड भरना शुरू करना चाहिए।


1

जैसे अन्य लोग कह रहे हैं, आपको केवल लेखन कोड का अभ्यास करने की आवश्यकता है। उसे पूरा करने के लिए, आपको किसी प्रकार की समस्या को हल करने के साथ खुद को चुनौती देने की आवश्यकता है, चाहे वह पूर्वनिर्धारित संदेशों को प्रिंट करना हो, एक साधारण इंटरैक्टिव कैलकुलेटर बनाना या कुछ विशिष्ट कार्य को हल करना हो।

यदि आप प्रेरणा से कम हैं, तो प्रोजेक्ट यूलर में बढ़ती कठिनाई के गणित / प्रोग्रामिंग अभ्यासों की अधिकता है। वे आपको पूरा करने के लिए स्पष्ट और चुनौतीपूर्ण लक्ष्य देते हैं, और आपको अधिक आरामदायक डिजाइनिंग कार्यक्रम प्राप्त करने में मदद करनी चाहिए।


1

बस सोचा था कि मैं इस विषय पर झंकार करूंगा क्योंकि यह वास्तव में घर के करीब है।

आपको बस कोडिंग शुरू करने की आवश्यकता है। मुझे गलत मत समझो, पढ़ना बहुत अच्छा है लेकिन वास्तव में आपको क्या देता है कि काम कोडिंग ज्ञान वास्तव में कुछ बना रहा है। मैंने पिछले वर्ष की तुलना में एक ग्रीष्मकालीन नियुक्ति से अधिक सीखा, जिसके बारे में मैंने पढ़ा था।

मुझे यह भी जोड़ना चाहिए कि आपको आँख बंद करके कोडिंग शुरू नहीं करनी चाहिए । अपने लिए एक प्रोजेक्ट बनाएं। आपको खुद को ढालने के लिए किसी प्रकार की दिशा की आवश्यकता है ताकि आप जान सकें कि आप क्या बनाना चाहते हैं। आपको यह देखकर आश्चर्य होगा कि आप कितनी जल्दी सीखेंगे। यदि आप सिर्फ एक आईडीई खोलते हैं और सरल हैलो दुनिया उदाहरण बनाना शुरू करते हैं, तो यह समझ में आता है कि आप पर जल्दी से गुस्सा आएगा। थोड़ी गहराई के साथ कुछ ढूंढें और इससे पहले कि आप जानते हैं कि आप इसका विस्तार करेंगे।


इससे पहले की पोस्ट में पहले से ही जो कुछ पोस्ट किया गया था, उस पर कुछ भी जोड़कर नहीं लगता
gnat

@gnat मैं मान रहा हूं कि आपका मतलब "नहीं है" और आपकी राय है। मैं ठीक उसी स्थिति से गुज़रा हूँ, हालाँकि वह जा रही है और मैं वही साझा कर रहा हूँ जिसने मेरी मदद की। अगर आप उनके सवाल का परिचय भूल गए तो यहाँ है: "क्या आप लोग कोई सुझाव दे सकते हैं ..."
सीनू

@ सीनियन - प्रोग्रामर एसओ के साथ आपके द्वारा उपयोग किए जा सकने वाले काम से थोड़ा अलग है। यदि कुछ पहले से ही अच्छी तरह से उत्तर दिया गया है, तो अपने स्वयं के उत्तर में समान बिंदुओं को पुन: प्रसारित करना यह सब रचनात्मक नहीं है। और इस बात की परवाह किए बिना कि ओपी सुझाव या राय मांग रहा है या नहीं। यह सिर्फ अच्छे प्रश्नोत्तर के लिए नहीं है। मौजूदा उत्तर (वोटों) को वोट देना बेहतर है और संभवतः एक रचनात्मक टिप्पणी को छोड़ दें, जो यह दर्शाता है कि चूक हुई थी।

+1, यह उत्तर मिश्रण में कुछ महत्वपूर्ण जोड़ता है। उदाहरणों और छोटे परीक्षण कार्यक्रमों पर ही नहीं, बल्कि एक वास्तविक परियोजना पर काम करने का महत्व।
ग्रैंडमास्टरबी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.