Search This Blog

Tuesday, September 27, 2011

Recurssions


Recurssion के नाम से ही हमे पता चल रहा है की यह उस क्रिया का नाम है जो री अकर हो वही
recurssion होता है | जैसे अगर हम किसी function में उसी function को कॉल किया जाता
है तो उस समय हम इसका प्रयोग करते है | 
 
उदहारण :
अगर हम किसी व्यस्त रहने वाले भोजनालय में जाते है , तो हम देखते है की ,वाहा लोग आ रहे है ,खाना 
खा रहे है  बिल चुकाते है और चले जाते है | अब अगर हम देखे की येही क्रिया जब तक चलती रहेगी जब तक
वहा अंतिम व्यक्ति खाना न खा ले या भोजनालय बंद होने का समय नहीं हो जाये |

अगर इसी बात को में आपको जावा के रूप में कहू तो में एक ग्रहिक के आने से लेकर बिल जमा करने तक की 
क्रिया को function में लिखूंगा और हर ग्रहिक को उसका आर्गुमेंट बनाऊँगा | जब भी एक ग्रहिक (function
ख़तम होगा , तभी हम इसी function को फिर से कॉल करेगा |
 
इसी बात को ज्यादा समझने के लिए आप निचे binary सर्च का उदहारण देखिये और देखिये की कैसे हमने इसी क्रिया 
का प्रयोग प्रोग्राम में कैसे किया है :  
      
   
/**
 * एक अर्रे A जो बड़ते हुए क्रम में जमा हुआ हो, उसमे से कोई value सर्च करनी है 
 * अगर value मिल जाये तोह उस value के इंडेक्स को रिटर्न करो नहीं तो -1 रिटर्न करो 
 */
static int binarySearch(int[] A, int loIndex, int hiIndex, int value) {
      
   if (loIndex > hiIndex) {
         // शुरवाती जगह फिनाल जगह के बाद आ रही हूँ ,
         // तो इसका मतलब है ,की बताई गयी रंगे में कोई element नहीं होगा 
         // इसीलिए यहाँ पर खली लिस्ट होगी तोह हम -1 रिटर्न कराएँगे 
      return -1;
   }
   
   else {
         // लिस्ट के बिलकुल बीच में देखो ,अगर वह value मिल जाती है तो 
         // value को रिटर्न करो , नहीं तोह ,फिर से सर्च करो बिलकुल इसी 
         // तरह से या तोह पहले हिस्से में ,या फिर दुसरे में 
         // जो बीच में सर्च करते वक़्त लिस्ट में बन गए थे 
      int middle = (loIndex + hiIndex) / 2;
      if (value == A[middle])
         return middle;
      else if (value < A[middle])
         return binarySearch(A, loIndex, middle - 1, value);
      else   // value must be > A[middle]
         return binarySearch(A, middle + 1, hiIndex, value);
   }

} // binarySearch() का अंत 
class Binarysearchcg {

 static int Binarysearch(int[] A, int loIndex, int hiIndex,int value) {

				if(loIndex > hiIndex) {
					return -1;
						      }
				else {

					int middle= (hiIndex+loIndex)/2;
						if(value > A[middle]) 
								{
								 loIndex= middle;
								return Binarysearch(A, loIndex, hiIndex, value);
								}					
						else if(value < A[middle]) {
								hiIndex = middle; 
								return Binarysearch(A, loIndex, hiIndex, value);
								}
						else {
							return middle; }
					}
									}


public static void main(String[] args) {


			
			int[] sortedarray = { 1, 2, 5, 6, 7, 8, 9, 13 ,15};
			int valuetosearch=9;
			int found=Binarysearch(sortedarray , 0 ,9 , valuetosearch);
			System.out.println(found);
					}
                      }

Monday, September 26, 2011

Matrix Multiplication

अगर आपको गणित में माट्रिक्स को गुणा करना आता है ,तो आपको जावा में माट्रिक्स को समझाने में ज्यादा परेशानी नहीं होगी | जावा में माट्रिक्स को गुणा करने के लिए दो कांसेप्ट काम में आते है :

१. २डी अर्रे 
२. फॉर लूप 

दोनो के बारे में हम विस्तार से चर्चा कर चुके है , अब आईये इनको काम में लेकर देखते है |

class Matrixmultiplication {

   public static void main(String[] args) {

double[][] a = new double[3][3];
double[][] b = new double[3][3];
double[][] c = new double[3][3];

int i,j,k;
int m=10;

System.out.println("First Matrix is : \n");
 for(i=0;i<3;i++) {
			for(j=0;j<3;j++) {
			a[i][j] =m;
                        b[i][j] =m+1;
			System.out.print(a[i][j] + " \t");
			
				}
		 System.out.println();	
}
System.out.println();	
System.out.println("Second Matrix is : \n");
 for(i=0;i<3;i++) {
			for(j=0;j<3;j++) {
			System.out.print(b[i][j] + " \t");
			
				}
		 System.out.println();	
}
System.out.println();	
System.out.println("Multiplication of Matrix is: \n"); 
for(i=0;i<3;i++) {   
    for(j=0;j<3;j++) {           
            for(k=0;k<3;k++) {
                      c[i][j]+= a[i][k] * b[k][i];      
                      	      }	 			   
                                    
 			System.out.print(c[i][j] + " \t" );                                           
			}
                System.out.println("");
	 } 
 					}

} 

Sunday, September 25, 2011

Functions in java Part 2

Functions के द्वितीय भाग में हम कही functions बनायेंगे और देखेंगे की हम इसका कैसे प्रयोग कर सकते है |  

// अगर हमे 90 डिग्री वाले त्रिकोण का कर्ण (hypotenuse) निकालना हो , तो हमे 
//उसकी दोनो बाजू (sides) का square निकाल कर जोड़ना पड़ता है |
// अब देखिये हम इसका function कैसे बनाते है 
   
    public static double hypotenuse(double a, double b) { // public और static का मतलब में पहले आपको बता 
                                                                                       //चूका हूँ , double datatype बड़ी संख्या के लिए उपयोग 
                                                                                       // करते है , a और b इस function के आर्गुमेंट है 
       
return Math.sqrt(a*a + b*b);         //यह हमने जावा के अन्दर दिए हुए  Math.sqrt function का उपयोग किया है 
                                                     // जो हमे value  square करके return करेगा |                                         
    }

    // Harmonic एक प्रकार से जोड़ वाली series होती है जैसे 
 //अगर हमे इस series को function में लिखना हो तो उसके लिए function होगा  :
    public static double H(int N) {
        double sum = 0.0;
        for (int i = 1; i <= N; i++)
            sum += 1.0 / i;
        return sum;
    }

    // कोई भी random नंबर पाना हो तो  
    public static int uniform(int N) {
        return (int) (Math.random() * N);
    }

    // एक त्रिबुझ को बनाने का funtion 
    public static void drawTriangle(double x0, double y0, double x1, double y1, double x2, double y2) {  
        StdDraw.line(x0, y0, x1, y1);
        StdDraw.line(x1, y1, x2, y2);
        StdDraw.line(x2, y2, x0, y0);
    }



    

Tuesday, September 20, 2011

Reverse the string using string buffer

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

// क्लास के नाम का declaration 
class ReverseString { 
// स्ट्रिंग को उल्टा करने के लिए हम revereIt नाम का function declare करेंगे , जिसमे 
//आर्गुमेंट इनपुट हम स्ट्रिंग ही देंगे , आर्गुमेंट का नाम हमने source रखा है |
    public static String reverseIt(String source) {
//अब दो variable declare करेंगे एक तोह i एवं दूसरा len जो स्ट्रिंग की लम्बाई को स्टोर करेंगा 
        int i, len = source.length();
 // यहाँ पर हम नया स्ट्रिंग बफर dest बनायेंगे जिसके लम्बाई हमारे पूरानी स्ट्रिंग जितनी ही होगी 
        StringBuffer dest = new StringBuffer(len);
//अब फॉर लूप की सहायता से हम एक एक करके पूरानी स्ट्रिंग्स के सभी char को नयी स्ट्रिंग में अपेंड करेंगे  
        for (i = (len - 1); i >= 0; i--) {
            dest.append(source.charAt(i));
        }
//यहाँ से नहीं स्ट्रिंग को function को return कर देंगे |
        return dest.toString();
    }
}


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

Monday, September 19, 2011

Java Applets

जावा अप्पलेट्स एक छोटी सी एप्लीकेशन होती है जो इसके यूजर को बाइट कोड के रूप में प्रदान की जाती है । जावा ही की तरह एप्लेट भी प्लेटफार्म से स्वतंत्र होते है और इन्हें किसी भी मशीन में चलाया जा सकता है । यूजर इनको किसी भी वेब ब्राउज़र से एक्सेस कर सकता है ।
<html>
<head>
  <title>Namaste Bharat</title>
</head>
<body>
  <h1>Java applet ka ek example</h1>
applet ko html mein embedded karne ka tarika: <applet code="NamasteBharat.class" height="40" width="200">
  </applet><br />

</body>
</html>

ऊपर दिए गए उधाहरण में हमने क्लास को सीधा प्रयोग में लिया है पर हम एप्लेट को छोटा एवं कंप्रेस करके भी  प्रयोग में सकते  है और इन कॉम्प्रेस फाइलो का एक्सटेंशन .jar होता है 
अप्प्लेट की क्लास का नाम और फाइल का नाम दोनो एक होने अनिवार्य है |  
import java.applet.*;
import java.awt.*;
public class Linedrawkaro extends Applet {
 
   // "int" इन्तिजर टाइप के दो variables का declaration (घोषणा) 
   int width, height; // एक लाइन की चोड़ाई बताएगा और दूसरा लम्बाई  
 
   // अप्प्लेट के शुरू होने के साथ ही यह execute होगा |
   public void init() {

    // अप्प्लेट की लम्बाई और चोड़ाई भविष्य में काम लेने के लिए Store(संगृहीत) करते हुए 
      width = getSize().width;
      height = getSize().height; 
      // आप्लेट के पीछे के रंग को कला करे 
      setBackground( Color.black );
   }
 
   // जब भी अप्प्लेट को दुबारा बनाना हो तब यह execute करो |
   public void paint( Graphics g ) {

      // अभी के drawing color को green करो |
      g.setColor( Color.green );

      // दस लाइन loop की सहायता से बनाओ 
      // हम यहाँ पर temporary variable i declare कर रहे है जो int type का है |    
      // ध्यान रखे की "++i" ,"i=i+1" का छोटा रूप है |
      for ( int i = 0; i < 10; ++i ) {

         // The "drawline" function को चार नंबर की आवश्यकता होगी :
         // the x and y बिंदु जहा से शुरू करना है ,
         // और  x and y बिंदु जहा लाइन का अंत करना है ,
         // हमे सोचना है की हमे लाइन दाए से बाए चाहिए या ऊपर से निचे ,
         // यहाँ पर मुझे ऊपर से निचे चाहिए 
         // 2D graphics में ऊपर के कोने में X=0 ,Y=0 मानते है 
         // x की वलुए बढाने पर वोह दाहिने ओर बढता है और  
         // Y की वलुए बढाने पर वोह निचे की ओर बढता है 
         g.drawLine( width, height, i * width / 10, 0 );
      }
   }
}

Two Dimensional Arrays


अगर हमे कभी matrix की values को array में स्टोर करना हो तोह हमे द्वि आयामी (2 Dimensional Array) का प्रयोग करना पड़ेगा . 2 dimensional array वो अर्रे होते है जिनके दो आयाम हो जैसे single dimensional array a[i] के एक ही आयाम है i , ऐसे ही २ dimensional array के  a[i][j] दो आयाम है i और j.

Sunday, September 18, 2011

String Concatenation

दो स्ट्रिंग्स को जोड़ने के काम को स्ट्रिंग concatenation कहते है | वैसे जावा operators(-, *, /) को सीधा स्ट्रिंग्स पर कार्य करने की इज़ाज़त नहीं देता पर स्ट्रिंग को जोड़ने के लिए इसमें + का इस्तमाल करने की हमे छुट है | इससे स्ट्रिंग को जोड़ना हमारे लिए बहुत आसान हो जाता है | आप में से कही लोग को लग रहा होगा की स्ट्रिंग को जोड़ने में इतना खास क्या है की जावा ने हमे इससे जोड़ने की छुट दी | अगर आप रोज़ कंप्यूटर पर काम करने वालो में है तोह आपने देखा होगा की कही सॉफ्टवेर हम से पहला और अंतिम नाम अलग अलग पूछते है और जब स्टोर करते है तोह एक साथ कर देते है | ऐसे है बहुत सारे सॉफ्टवेर इसका बहुत ज्यादा बार उपयोग करते है |

Saturday, September 17, 2011

Strings in Java


स्ट्रिंग को जावा में क्यो बनाया गया ?

अक्षरो के क्रम को बताने के लिए जावा स्ट्रिंग ऑब्जेक्ट को बनाया गया . जैसे a , b , c तीन अलग अलग अक्षर है , अगर हम इन्हें साथ लिखना चाहे जैसे abc तोह बिना स्ट्रिंग ऑब्जेक्ट के हमे इसे बताना बहुत मुश्किल होगा  , पर स्ट्रिंग मेथड से हम इस काम को आसानी से कर सकते है |  इतना ही नहीं जावा में हम स्ट्रिंग पर सीधे रूप में काम कर सकते है जैसे उन्हें जोड़ और घटा भी सकते है | abc को अगर हमे def से जोड़ना हो तो हम स्ट्रिंग क्लास के जोड़ने वाले function का प्रयोग कर सकते है | 


String str = "abc";
      ऊपर और निचे लिखी दोनो बातें समान है |

char data[] = {'a', 'b', 'c'};
String str = new String(data);


स्ट्रिंग्स को declare एवं allocate करना 

स्ट्रिंग क्लास के  ७ अलग अलग constructor होते है . हम यहाँ जो काम के constructor है उन्ही की बात करेंगे | ज्यादा जानकारी के लिए आप http://download.oracle.com/javase/1.4.2/docs/api/java/lang/String.html का उपयोग कर सकते है | 

स्ट्रिंग ऑब्जेक्ट को बनाने का सबसे आसन तरीका यह है की स्ट्रिंग के अक्षरो को quotes में लिख कर उसे स्ट्रिंग ऑब्जेक्ट में डाल दो | यहाँ पर ध्यान रखने वाली बात यह ही की स्ट्रिंग जो assignment के द्वारा declare की जाती है उसमे न्यू लिखने की जरुरत नहीं होती जो हम आम तोर पर लिखते है |

जैसे निचे में कही तरीके से स्ट्रिंग को declare और assign करना बता रहा हूँ :

पहला तरीका :

                    String str = "abc";
                    String language = "Java";

दूसरा तरीका :

                     या फिर स्ट्रिंग ऑब्जेक्ट constructor के द्वारा भी बनाया जा सकता है 

                     public String() //यह एक नयी स्ट्रिंग बनाएगा जिसमे कोई character नहीं होगे |  
                                              //लेकिन इसकी value NULL नहीं होगी 
                     public String( String value ) // bracket में दिए अनुसार स्ट्रिंग बनाएगा 
     
                     public String( char[] value ) // char array के हिसाब से स्ट्रिंग बनाएगा 

तीसरा तरीका :

                    String s1 = new String();
                   String s2 = new String( "abc" );          //  "abc" को पहले स्ट्रिंग में convert  किया
                                                      
                    String s3 = new String( s2 ); //   फिर आर्गुमेंट के रूप में use किया 
चोथा तरीका :

char data[] = { 'a', 'b', 'c' };
String s4 = new String( data );

एक उदहारण देखिये :

class LearnString {


			public static void main(String[] args) {


			String name = "Java ";

			String lastname = "Uncle ";

			String message = " string ko aise padte hai";

			System.out.println(name + lastname + "ji " + message );

								}

		}

Thursday, September 15, 2011

Functions in Java

functions का नाम सुनते ही काफी विद्यारती डर जाते है | जबकि इनको आपका काम आसान करने के लिए बनाया गया है | function को आप एक ऐसी मशीन समझ सकते है जो सिर्फ एक काम करना जानती है | वोह काम कुछ भी हो सकता है | जैसे कोई मशीन सिर्फ दो नंबर को जोड़ना जानती हो , तोह जब भी आप उसे दो नंबर देंगे वैसे ही वोह आपको उसे जोड़ कर बता देगी | लेकिन चुकी मशीन तोह मशीन ही होती है , दो नंबर को जोड़ने वाली मशीन को तीसरा नंबर देने पर उसको नहीं पता होता की क्या करना है ? इसीलिए जावा ने हमे कहा की लीजिये हम यह आप पर छोड़ते है की आपको कैसी मशीन बनानी है | आप जैसे छाए वैसे मशीन बनाये | और उस मशीन का नाम जावा ने function दे दिया | 

इसके साथ जावा ने हमे यह ताकत भी दी की हम चाहे तोह इस मशीन का इस्तमाल किसी को भी करने दे (public) , और अगर चाहे तोह इसको सिर्फ कुछ अन्दर के लोगो को (private, protected) |

आप में से काफी लोग सोच रहे होगे की आखिर हमे मशीन की आवश्यकता ही क्या है ?
हमे इसके जरूरत इसलिए है की बार बार एक ही काम करने के लिए हमे कंप्यूटर को बार बार कोड लिख कर समझाना पड़ता है | इससे हमारा प्रोग्राम बहुत बड़ा हो जाता है अथवा उसको समझने में भी परेशानी होने लगती है | ऐसे जगह अगर सिर्फ एक बार लिखा गया function हमारा काम संभाल ले तोह हमे बार बार लिखने की झंझट से छुटकारा मिल सकता है | 

हम यहाँ दो उधाहरण देखेंगे , एक तो हमेशा हमारी दी हुई संख्या को +ve कर देगा और दूसरा हमे यह बताएगा की नंबर prime है या नहीं ?

public class Functions {  // यहाँ हम क्लास का नाम Functions दे रहे है , आप नाम अपनी पसंद का भी रख सकते है 

    // इनटीजर variable  की absolute value (किसी भी integer की absolute value हमेशा +ve होगी ) निकालना    

       public static int abs(int x) {    // पब्लिक का मतलब बहार से भी एक्सेस कर सकते है , static मतलब
                                                   // fixed , int इसका return टाइप है , abs funtion का नाम , (int x) इसका
                                                   // argument 
        if (x < 0) return -x;       // अगर x की value 0 से कम है तो x को minus "-" से गुना करके return करो
        else       return  x;        // नहीं तोह जो x है वही value return करो
    }

    // double value variable  की absolute value (overloading)
    public static double abs(double x) {
        if (x < 0) return -x;
        else       return  x;
    }

    // if else की मदद से value return करना साथ ही हम function में फॉर लूप का प्रयोग भी देखेंगे 
    public static boolean isPrime(int N) { // इस function से हम यह पता लगायेंगे की क्या N Prime है ?
        if (N < 2) return false;        // दो से कम है तोह false return करो क्यों की फिर x prime नहीं हो सकता
        for (int i = 2; i <= N/i; i++)     // फॉर लूप  यहाँ से समझे 
            if (N % i == 0) return false; // अगर n को इ की किसी भी value से भाग दिया जा सके तोह वोह prime
                                                      // नहीं होगा
        return true; // अथवा होगा
    }


The Main Method

    import java.util.Date;
    class DateApp {
        public static void main(String args[]) {
            Date today = new Date();
            System.out.println(today);
        }
    }

Tuesday, September 13, 2011

Average


/*************************************************************************
 *  कमांड कमांड प्रोम्प्ट या टर्मिनल पर लिखे जायेंगे 
 *  कमपाइल करने का कमांड  :  javac Average.java
 *  Execution के लिए कमांड :    java Average < data.txt
 *  निर्भरता : यह प्रोग्राम में इन दोनों फइल को इम्पोर्ट करना होगा StdIn.java StdOut.java
 *  
 *  क्रम में दिए गए real numbers को जोड़ना, और उनका average फलाना |
 *
 *  % java Average
 *  10.0 5.0 6.0
 *  3.0 7.0 32.0
 *  <Ctrl-d>
 *  Average is 10.5

 *  यहाँ <Ctrl-d> unix की फाइल का अंत बताता है |
 *  विंडो में <Ctrl-z> काम आएगा |
 *
 *************************************************************************/

public class Average {  // बहार से एक्सेस(public) हो सकने वाली क्लास का नाम , पहला अक्षर
                        // हमेशा बड़ा आएगा 
    public static void main(String[] args) { // इसको रटना है, यह प्रोग्राम का मुख्य द्वार है|  
        int count = 0;       // यह याद रखेगा की हमने कुल कितनी संक्या डाली है , अभी इसको 
                             // शुन्य किया है |   
        double sum = 0.0;    // यह डाली गयी संख्या का जोड़ करेगा , double यहाँ int से दुगनी क्षमता  
                             // वाली संक्या को स्टोर करने के लिए उपयोग किया गया है
                             // इसके बारे में डाटा टाइप के पाट में बात करेंगे
    
        // यहाँ हम डाटा को पढेंगे और फलावट करेंगे 
        while (!StdIn.isEmpty()) {
            double value = StdIn.readDouble(); // संक्या को फाइल से पढते हुए 
            sum += value; // उस संख्या को सम में डालते हुए , यहाँ लिखा हुआ आदेश(instruction)
                          // sum = sum + value; का छोटा स्वरुप है  
            count++;      // यह काउंट=काउंट + 1  का छोटा रूप , इससे हम टोटल संक्या का पता 
                          // लगा लेंगे , जैसे पहली संक्या जुड़ेगी तोह यह अपने आप १ हो जायेगा  
        }

        // average की फलावट 
        double average = sum / count; // कुल जोड़ को कुल संक्या से फलाने से average निकलेगा 

        // average को स्क्रीन पर प्रिंट करने का तरीका 
        StdOut.println("Average is " + average); // यह Average is 10.5 प्रिंट  करेगा 
    }
}

Compiling and Running Java Programs

जावा सोर्स कोड को कमपाईल करना

जावा की कृतिम मशीन के, जावा प्रोग्राम को रन करने से पहले हमे जावा सोर्स कोड को byte code में कमपाईल करना पड़ता है |  कमपाईल करने का काम जावाक (javac) कमपाईलर करता है | जावा का byte code प्लेटफार्म से स्वछंद(platform independent) होता है | प्लेटफार्म से स्वछंदता का मतलब यह है  की इसको कोई फर्क नहीं पड़ता की आप कौन सा कंप्यूटर चला रहे है , विंडोज का , युनीक्स का या फिर मेक |

Monday, September 12, 2011

Inheritence in Java


Inheritance प्रोग्राम के कॉमपाइल होते वक़्त होने वाली क्रिया है | इससे हम बेस क्लास को दूसरी क्लास की मदद से बढा सकते है |

याद रखने वाली बातें : जो क्लास एक्सटेंड होती है उसे हम बेस क्लास या सुपर क्लास कहते है
जिसकी मदद से बेस क्लास एक्सटेंड होती है उसे सब क्लास या डीराइवड क्लास  कहते है |


ईनहेरीटेनस दो प्रकार से काम में लिए जा सकता है :

class ईनहेरीटेनस -  एक नयी क्लास बनाना और पिछली क्लास को इनहेरिटेड करना ताकि उसके कोड को बिना दुबारा लिखे काम में ले सके |जिसका मतलब होता है derived क्लास बेस क्लास के पब्लिक मेथड एवं डाटा को काम में ले सकती है

2. Interface inheritance -  किसी क्लास को जब  sub typing के लिए इन्हेरइट किया जाए तोह उसे इंटरफेस  inheritance बोलेंगे  

अब देखते है की इसको लिखते कैसे है :
public class derived-क्लास extends base-क्लास  {  //यहाँ पर हम base class में लिखी सभी बातो को नयी क्लास 
                                                                              //में पेस्ट कर रहे है जिसे हम inheritance कहते है 


 // बेस क्लास के कोड को use करना और कही बार बदल भी देना 

// इसके लिए एक्सटेंड का उपयोग करते है







      }


package MyPackage;

class Base {

private int x;

public int f() { ... }

protected int g() { ... }

}

class Derived extends Base {

private int y;

public int f() { /*  Base.f() क्लास के लिए नया implementation */ }

public void h() { y = g(); ... }

}



Saturday, September 10, 2011

how to become successful programmer ?

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

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

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


What is programming language?

Program आदेशो की वो कड़ी होता है जिसकी पालना कंप्यूटर करता है | एक साधारण सी बात भी कंप्यूटर को समझाने के लिए इस प्रकार लिखनी पड़ती है की कंप्यूटर समझ सके | जो भाषा कंप्यूटर समझता है उसे हम प्रोग्रामिंग भाषा कहते है| प्रोग्रामिंग भाषा और हमारी भाषा में कही भिन्नताए होती है | हमारी भाषा में एक ही बात को विभिन्न प्रकार से बोल सकते है, जैसे की हमे किसे को चाय पे बुलाना हो तोह हम कह सकते है: तुम मेरे यहाँ चाय पीने चलो या आओ मेरे घर पर चाय पीते है या फिर पूछ सकते है की क्या चाय पीओगे ?,आओ मेरे घर चले .कंप्यूटर की भाषा इस प्रकार नहीं होती | उसे सीधी सीधी बात (बिना लाग लपेट) समझ में आती है | कंप्यूटर इसमें बहुत स्पष्ट है की भाषा में क्या होना चाहिए और क्या नहीं | साथ ही साथ उसको भाषा का व्याकरण भी एक दम शुद्ध चाहिए|


कंप्यूटर के व्याकरण के नियम भी एक दम स्पष्ट है |इसमें यह बताया गया है की प्रोग्राम में कौन से शब्दो का प्रयोग होगा , उसको किस प्रकार लिखा जायेगा जैसे loops, branches, और subroutines कैसे लिखे जायेगे .सही तरीके से लिखा प्रोग्राम वोह होता है जो सफलता पूर्ण तरीके से compile या execute हो सके|


तो, एक सफल प्रोग्रामर बनाने के लिए, आपको पूरी तरीके से प्रोग्राम के व्याकरण को सिखना होगा |

सफल प्रोग्रामर कैसे बने ?

प्रोग्रामिंग भाषा का इतिहास:

वैसे तो प्रोग्रामिंग भाषा का इतिहास बहुत पुराना है , पर में आपको ७० के दशक में ले जाना चाहूंगा , जब प्रोग्रम्मेर 0 और 1 ,binary भाषा में प्रोग्राम लिखा करते थे | फिर आई अस्सेम्ली भाषा , जो आज भी कही कॉलेज में मिक्रोप्रोसस्सर विषय में पढाई जाती है | यह भाषा एक ट्रांसलेटर के रूप में काम करती थी , जैसे जो भी हम अस्सेम्ब्ली भाषा में लिखते थे वो 0 और 1 (मशीनी भाषा ) में परिवर्तित हो जाता था , इसका फायदा यह था की प्रोग्रम्मेर को अब हर शब्द के कोड (जैसे 5 नंबर का binary कोड होता है 1 0 1 )याद रखने की जरूरत नहीं थी , वोह सिर्फ अस्सेम्ब्ली भाषा के कुछ कमांड याद रखते थे जो binary से बहुत आसन थे क्युकी वो नंबर और अक्षर वैसे ही थे जैसे अंग्रेजी में होते है | आज भी अगर आप में से कुछ जो hacking विषय में जानकारी रखते है , या प्रोग्राम को समझने के लिए उसको debug करते है , उनका इस भाषा से सामना होता रहता है |

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

इस समस्या का समाधान compiler ने किया | और इसमें c भाषा का सबसे बड़ा योगदान है | यह भाषा अस्सेम्ब्ली भाषा से बहुत ज्यादा आसान थी , और इसमें कोड का दुबारा प्रयोग भी किया जा सकता था | साथ ही साथ compiler मशीन के हिसाब से इसको compile करने का काम कर देता था |

आज की भाषाए c से काफी मिलती जुलती है इसीलिए सभी कंप्यूटर पढने वाले लोगो को c के बारे में जरूर पढाया जाता है | लेकिन c भाषा की भी कुछ सिमाय थी , और सबसे बड़ी समस्या थी प्रोग्राम की सुरक्षा | जो एक प्रोग्राम के लिए सबसे अहम है |

फिर आई c ++ जो c का ही एक नया रूप था पर यह एक पूरी तरीके से ऑब्जेक्ट oriented भाषा थी | C ++ वैसे तो एक पूर्ण भाषा है लेकिन इसको भी हर नयी मशीन के लिए अलग से compile करना पड़ता है |

इसका समाधान है जावा , जिसने इस मशीन वाली समस्या से निजात पाने के लिए एक नया तरीका खोजा | जावा ने खुद की एक कृतिम मशीन तैयार की और उसका नाम JVM( Java virtual machine) रखा | इसका फायदा यह हुआ की अगर कंप्यूटर में जावा कृतिम मशीन डाल दी जाए तो प्रोग्राम को बार बार compile नहीं करना पड़ता |





Sunday, September 4, 2011

Array



जावा में arrays वेसे ऑब्जेक्ट के रूप में पहचाने जाते है जो मेमोरी में एक साथ स्टोर होते है , यह एक ही
नाम के होते है और इनका datatype भी एक ही होता है . जैसे int[] c में c array के सभी datatype 
integer प्रकार के होंगे.
 
उदहारण :


int[] c, d;                // याहा पर हम c और d का रेफेरेंस declare कर रहे है
c = new int [ 4 ];         // c के 4 elements को जगह देने के लिए यह कमांड काम आता है
d = new int [ 125 ];       // array d के 125 elements के लिए जगह 
 
अगर ऊपर दिए काम को एक ही कमांड से करना हो तोह हम इसके निचे दिए तरीके से कर सकते है
 
byte[] b = new byte [ 100 ];   // याहा पर हमने array को declare भी किया है साथ में उसके
100 elements के लिए जगह भी कर दी है |
 
 
array को अच्छी तरह समझने के लिए हमे इसका प्रोग्राम बना के देखना होगा . ऊपर दिए गए उदहारण की मदद
 से हम एक प्रोग्राम बनायेगे . इस प्रोग्राम में हम integer array को declare करेंगे फिर उसमे values को स्टोर करेंगे .फिर हम स्टोर की हुई values को प्रिंट करेंगे. 





class ArrayDemo {
     public static void main(String[] args) {
          int[] anArray;           // integers का अर्रे के बारे में प्रोग्राम को बताते हुए 
           anArray = new int[10];// १० integers के लिए मेमोरी allote करने का तरीका 
            
          anArray[0] = 100; // पहले एलेमेन्ट को initialize करना एवं उसमे १०० को भरना 
          anArray[1] = 200; //second एलेमेन्ट को initialize करके उसमे २०० स्टोर करते हुए  
          anArray[2] = 300; // इसी प्रकार सभी अर्रे में values डालेंगे 
          anArray[3] = 400;
          anArray[4] = 500;
          anArray[5] = 600;
          anArray[6] = 700;
          anArray[7] = 800;
          anArray[8] = 900;
          anArray[9] = 1000;
// ऊपर हमने सभी arrays को initialize किया था अब सबको स्क्रीन पर प्रिंट कराएँगे 
          System.out.println("Element at index 0: " + anArray[0]);
          System.out.println("Element at index 1: " + anArray[1]);
          System.out.println("Element at index 2: " + anArray[2]);
          System.out.println("Element at index 3: " + anArray[3]);
          System.out.println("Element at index 4: " + anArray[4]);
          System.out.println("Element at index 5: " + anArray[5]);
          System.out.println("Element at index 6: " + anArray[6]);
          System.out.println("Element at index 7: " + anArray[7]);
          System.out.println("Element at index 8: " + anArray[8]);
          System.out.println("Element at index 9: " + anArray[9]);
     }
} 

 प्रोग्राम का ओउत्पुत स्क्रीन पर इस प्रकार है :
Element at index 0: 100
Element at index 1: 200
Element at index 2: 300
Element at index 3: 400
Element at index 4: 500
Element at index 5: 600
Element at index 6: 700
Element at index 7: 800
Element at index 8: 900
Element at index 9: 1000



Thursday, September 1, 2011

if else loop

अगर हमे कोई प्रोग्राम बनाना हो जहा कोई हमे प्रोग्राम को बताना हो की अगर यह बात है तोह इस काम को करना है वरना उस काम को.
इसको एक उदहारण के साथ समझिये जैसे अगर मेहमान आये तो चाय बनाना नहीं आये तो मत बनाना. ऐसी बातो को check करने के लिए 
हम if-else loop का उपयोग करते है. निचे दिए उदहारण से आपको यह और स्पष्ट हो जायेगा की इसका प्रयोग प्रोग्राम में कब और कैसे 
करते है. 

 
If (condition) then
{
 यह काम करना है  
}
Else
{
   नहीं तोह यह यह काम करना है 

}
 
  चाय वाले उदहारण को if else में डालकर देखते है 
If (मेहमान आये ) then
{

तोह चाय पिलाओ
 }
Else
{
      
वर्ना कुछ मत पिलाओ
}
 
अब सोचिये अगर इस प्रोग्राम को और उपयोगी बनाना हो तोह . इसके लिए जावा में if else if loop होते है. जैसे की ऊपर दिए
प्रोग्राम में हम चाहे की राम आये तोह चाय पीलाओ , भरत आये तोह काफ्फी और उनके आलावा कोई भी और आये तोह कुछ मत पिलाओ : 
 
If (राम आये) then
{
 चाय पीलाओ }
Else If (भरत आये ) then
{ 
   काफी  पीलाओ  } 
 
Else
{
   वर्ना कुछ मत पिलाओ }
 
अब देखिये हम if-else loop का बच्चो की grade बताने वाले प्रोग्राम में कैसे उपयोग करते है .उदहारण के लिए हम एक बच्चे के
नंबर ४० लेंगे और प्रोग्राम से कहेंगे की if else if का प्रयोग करके हमे इस बच्चे का grade बताओ : 

class IfElseUdharan {     // क्लास का declaration 
        public static void main(String[] args) {  // इसको रट लो यह प्रोग्राम का मुख्य द्वार है


        int testscore = 36;  // testscore जिसका grade निकलना है वोह  integer टाइप का है 
        char grade; // grade char टाइप का डाटा टाइप है 


        if (testscore >= 90) {      //अगर score 90 आये तोह  A grade
            grade = 'A';
        } else if (testscore >= 80) { //अगर score 80 आये तोह  B grade
            grade = 'B';
        } else if (testscore >= 70) { //अगर score 70 आये तोह  C grade
            grade = 'C';
        } else if (testscore >= 60) { //अगर  score 60 आये तोह  C grade 
 
            grade = 'D';
        } else {              //अगर 60 आये तोह  F grade
            grade = 'F';
        }
        System.out.println("Grade = " + grade); // यह command प्रोग्राम का output स्क्रीन पर दिखायेगा 
    }
}

 output :

    Grade = F 
प्रोग्राम ने ओउत्पुत फ दिखाया है, आब आप टेस्ट score बदल कर देखे की क्या grade आती है?