Wednesday, 17 February 2016

[12]- STRING


C language tutorial in hindi को आगे बढ़ाते हुए आज हम string के बारे में जानेंगे. इससे पहले Array और char type variable के बारे में जानना आवश्यक है.
What is String
हम char variable के बारे में जान चुके हैं कि यह variable किसी भी एक अक्षर(letter) को store करता  है. अब अगर मान लीजिए कि हमें हमें एक word(जो एक से ज्यादा अक्षरों से मिलकर बना होगा) को store करना है तो उसे कैसे करेंगे? इसके लिए हम char की एक array बनायेंगे, चूंकि array एक ही तरह के एक से ज्यादा variable store कर सकता है अतः इसकी help से हम word या sentence store कर सकते हैं. examples की help से हम word "hindi" को store करने और उसे print करने के 3 अलग अलग तरीके देखते हैं और ये तीनों ही important हैं.
#include <stdio.h>

int main() {
char w[6];
w[0] = 'h';
w[1] = 'i';
w[2] = 'n';
w[3] = 'd';
w[4] = 'i';
w[5] = '\0';
printf("Word we stored is %s \n", w);
printf("1st letter of array is %c \n", w[0]);

scanf("%s", w);
return 0;
}

ऊपर दिए गए program को run करके output देखें. जो कि print करेगा
Word we stored is hindi
1st letter of array is h
अब इसे देखते हैं कि यह काम कैसे करता है. हमने char की एक array बनाई है जिसमे 6 char आ सकते हैं. इसके बाद जिस तरह से हम array में values डालते हैं उसी तरह से इसमें भी सबसे पहले स्थान पर h फिर i इस तरह से value डाल दी हैं. ध्यान दे कि अंतिम स्थान w[5] पर \0 है जो कि 2 char नहीं बल्कि 1 char है, जो कि यह बताता है यह इस word का अंतिम letter है. जिस तरह से \n line break  character है जिसके बाद अगली लाइन में print होता है उसी तरह \0 के बाद आने वाले letter read या print नहीं होते . इसी को जगह देने के लिए हमने 6 char वाली array बनायीं थी वरना hindi शब्द में 5 char ही हैं. अब इसमें यह भी ध्यान दें कि string को print करने के लिए %s का use किया जाता है. w एक string है जबकि w[0], w[1]... सभी char हैं. पहले वाले printf statement में string w को print किया है इसलिए %s का use किया है जबकि दूसरे वाले printf statement में char w[0] को print किया है इसलिए %c का use किया है.
अब नीचे वाला program देखिये जोकि बिलकुल पहले वाले कि तरह काम करता है.
#include <stdio.h>

int main() {
char w[] = {'h', 'i', 'n', 'd', 'i', '\0'};
printf("Word we stored is %s \n", w);
printf("1st letter of array is %c \n", w[0]);

scanf("%s", w);
return 0;
}

इसमें पहले वाले से सिर्फ इतना difference है कि इसमें एक ही line में array को define भी कर रहे हैं और उसमे values भी डाल रहे हैं जिस तरह से किसी variable जैसे int को एक ही line में define करने और value देने के लिए int x = 1; लिखते हैं. इस तरीके से array define करते समय array की length नहीं बताना पड़ती(अर्थात ये नहीं लिखना पड़ता कि array में कितने element आयेंगे)
गलत तरीका char w[6] = {'h', 'i', 'n', 'd', 'i', '\0'};
सही तरीका char w[] = {'h', 'i', 'n', 'd', 'i', '\0'};

अब एक और program देखते हैं वो भी बिलकुल पहले वाले कि तरह काम करता है.
#include <stdio.h>

int main() {
char w[] = "hindi";
printf("Word we stored is %s \n", w);
printf("1st letter of array is %c \n", w[0]);

scanf("%s", w);
return 0;
}

इस program में ऊपर वाले से सिर्फ 1 line में difference यह है कि यहाँ char array बनाने के लिए shortcut का use किया है. यह shortcut सिर्फ char array बनाने के लिए use होता है.
char w[] = "hindi";
यह लिखने से एक char array w बन जायेगी. इस array का पहला element w[0] 'h', दूसरा element w[1] 'i' .... हो जायेगा. अंतिम element w[5] '\0' हो जायेगा. इस syntax(तरीके) में \0 नहीं लिखना पड़ता.

अभी के लिए string में इतना ही, परन्तु आगे इसका बहुत उपयोग आता है. समय समय पर recall करते रहेंगे और बाद में धीरे धीरे इसके बारे में जानते रहेंगे.
इस blog को बेहतर बनाने के लिए आपके सुझावों का सदैव स्वागत रहेगा. सुझाव देने के लिए अपना Reply यहाँ पर दें. अगले लेख में हम function के बारे में जानेंगे जो कि बहुत important है.
अगर आपको यह लेख पसंद आया हो तो अपने दोस्तों को भी बताएं क्योंकि ये उनके लिए भी उपयोगी सिद्ध हो सकता है !! नीचे दिए गए link के माध्यम से इसे आसानी से facebook twitter और Google Buzz पर भी Share कर सकते हैं.

[13]-FUNCTION


आज Hindi के इस C/C++ programming language tutorial को आगे बढ़ाते हुए हम function के बारे में और जानेंगे. किसी एक काम को अलग अलग समय बार बार करवाने के लिए function का use करते हैं. याद करे कि if else statement वाले topic में हमने एक program लिखा था जो कि total marks और obtained marks के आधार पर percent और division निकाल कर print करता था. अब अगर हमें 5 students के लिए percentage और division निकलना है तो एक तरीका यह है कि हम पहले वाले program में total marks और obtained marks को बार बार modify करें और बार बार program को compile करके run करें. पर इसमें बहुत time लग जायेगा. एक और तरीका यह है कि program का वह भाग जो percentage निकाल कर division print करता है उसे 5 बार copy-paste करें.
इसे आसानी से करने का सबसे अच्छा तरीका है function का use. हम एक ऐसा function लिखेंगे जिसे total marks और obtained marks देने पर वह हमें percentage देदे. अभी percentage print करने का program ही देखते हैं, उसके बाद division print करने का program भी देखेंगे.
नीचे लिखे हुए program को देखिये जिसमे हमने function define किया है. पर इसे run न करे क्योंकि यह run नहीं होगा. इसके बाद function call करने और run करके का तरीका देखेंगे.
int get_percent(int total marks, int obtained marks) {
  int percent = obtained_marks*100/total_marks;
  return percent;
}

सबसे पहले int लिखा गया है जोकि यह बताता है कि function किस तरह का मान हमें return करेगा. इस example में function int type का मान हमें return करेगा. उसके बाद function का नाम लिखते हैं, जोकि यहाँ पर get_percent है. उसके बाद () में function के input variable लिखते हैं जिन्हें parameter या argument कहते हैं input variable लिखते समय यह भी बताना पड़ता है कि वो किस type के हैं और उन्हें function के अंदर किस नाम से access करेंगे. यहाँ दोनों input int हैं. किसी function में हम कितने भी input दे सकते हैं, या फिर अगर एक भी input नहीं देना चाहते तो () के अंदर कुछ नहीं लिखते. यहाँ 2 input दिए गए हैं. उसके बाद {} के अंदर वो लिखते हैं जो function काम करेगा. यहाँ हमने दिए गए input का उपयोग करके percent निकाला है. अंत में return करते हैं.
शुरू में लिखा हुआ int यह बता रहा था कि यह function int type की value हमें देगा(return करेगा). अंत में return लिखकर हम percent return कर रहे हैं जो int type का ही है. अगर return statement के बाद कुछ लिखा है तो वह run नहीं होगा, क्योंकि return आते ही function को यह पता लग जाता है कि क्या value return करना है और function वह value return करके उसी समय खत्म हो जाता है.
अब यह देखते हैं कि इस function का use कैसे करेंगे. नीचे दिए गए program को run करके देखें.
#include <stdio.h>
int get_percent(int total_marks, int obtained_marks) {
  int percent = obtained_marks*100/total_marks;
  return percent;
}
int main() {
  int percent;
  percent = get_percent(500, 360);
  printf("Percent is %d\n", percent);
  percent = get_percent(500, 340);
  printf("Percent is %d\n", percent);
  scanf("%d", &percent);
  return 0;
}

सबसे पहले हमने function define किया है किसका नाम है get_percent, जो int type की value return करेगा और 2 int type के parameter लेगा जैसे कि हम ऊपर भी देख चुके हैं. फिर
main() के अंदर से program run होना start होता है जैसा कि हम अभी तक देखते आये हैं. main के अंदर पहले int type का percent variable define किया है. उसके बाद get_percent function call किया है जो ऊपर define किया था. इस function को हमने 2 parameter 500 और 360 दिए हैं. यहाँ parameter का क्रम भी important है. इस function को call करने पर ऊपर वाला function run होना शुरू हो जायेगा, जिसमे total_marks की value 500 और obtained_marks की value 360 चली जायेगी. इन values के basis पर get_percent percent की value 80 निकालकर return कर देगा.
percent = get_percent(500, 360);
यह लिखने पर get_percent जो भी return करेगा वह percent में store जायेगा. उसके बाद हम main() के अंदर ही percent print कर रहे हैं. इसी तरह एक बार और get_percent function को call करके जो value आती है उसे percent variable में store करके print कर रहे हैं.
यहाँ एक बात note करें कि main भी एक function है जो कोई भी parameter नहीं लेता(इसलिए main() लिखा है () में कुछ नहीं लिखा) और int return करता है इसीलिए हम अंत में हर बार return 0; लिखते आ रहे हैं. जब हम कोई भी C program run करते हैं तो सिर्फ उसका main function call होता है. main के अंदर हम जो जो function call करते हैं वो उसी sequence में call होते हैं. अंत में जब main function के अंत में पहुँच जाते हैं तो program finish हो जाता है. अगर आप किसी ऐसे program को run करे जिसमे main function न हो तो वह कुछ इस तरह कि error देगा कि main method not found.

अब हम एक और program देखते हैं जो division भी print करे. इसे run करके देखें.
#include <stdio.h>
void get_percent(int total_marks, int obtained_marks) {
  int percent = obtained_marks*100/total_marks;
  if(percent >= 60) {
    printf("Congrats!! You passed in 1st division.\n");
    printf("Your percentage is %d.\n",percent);
  }
  else if(percent >= 45) {
    printf("You passed in 2nd division.\n");
    printf("Your percentage is %d.\n",percent);
  }
  else if(percent >= 33) {
    printf("You just passed in 3rd division.\n");
    printf("Your percentage is %d.\n",percent);
  }
  else {
    printf("Sorry! you failed.\n");
    printf("Your percentage is %d.\n",percent);
  }
}
int main() {
  get_percent(500, 360);
  get_percent(500, 340);

  int abc;
  scanf("%d", &abc);
  return 0;
}

इस example में get_percent function division भी print कर रहा है. इसमें पहले वाले function से थोडा difference यह है कि यह function ही सब कुछ print कर रहा है इसलिए main में अलग से print करने कि जरुरत नहीं है. शुरू में void लिखा गया है इसका मतलब है कि यह function कुछ return नहीं करेगा, इसलिए main में function को सिर्फ call किया गया है, जबकि पहले वाले example में जो value function return कर रहा था उसे एक variable में store कर रहे थे.
Exercise:
1. एक function print_month लिखो जिसे एक int parameter दे जो किसी महीने का number होगा और वह function महीने का नाम print कर दे. जैसे अगर हम उसे 10 दे तो वह October print कर दे. इस function को कुछ return नहीं करना चाहिए, सिर्फ print करना चाहिए. उसके बाद इस function को main से अलग अलग parameter देके call करें.
2. ऊपर वाले program में main में पहले scanf का use करके input ले और इस input parameter के साथ print_month call करें.
अगले लेख में हम कुछ और example देखेंगे.
अगर आपको यह लेख पसंद आया हो तो अपने दोस्तों को भी बताएं क्योंकि ये उनके लिए भी उपयोगी सिद्ध हो सकता है !! नीचे दिए गए link के माध्यम से इसे आसानी से facebook twitter और Google Buzz पर भी Share कर सकते हैं.

[14]-SCOPE OF VARIABLE


आज Hindi के इस C/C++ programming language tutorial को आगे बढ़ाते हुए हम function के कुछ examples के द्वारा variable के scope के बारे में जानेंगे. अगर आपको C function और C variables का ज्ञान नहीं है तो पहले इन्हें पढ़ लें.

What is scope
C में किसी variable के scope का मतलब यह है कि उस variable को declare या define करने के बाद कहाँ कहाँ पर उसकी value पढ़ सकते हैं. अगर हमने किसी function के अंदर कोई variable x define किया है तो उस function के अंदर कहीं भी उस variable को read/write कर सकते हैं परन्तु किसी अन्य function के अंदर नहीं. अगर किसी loop के अंदर कोई variable define किया है तो उस loop के अंदर कहीं भी उस variable को read/write कर सकते हैं परन्तु उसके बाहर नहीं.
इसे समझना बहुत आसान है. किसी भी {...} के अंदर define किया गया variable उसके अंदर कहीं भी read/write किया जा सकता है परन्तु उसके बाहर नहीं. इसे हम नीचे दिए गए example से समझेंगे.
नीचे दिए गए program में हम एक register बनायेंगे जिसमेकोई भी नाम add कर सकते हैं और सभी नामों को print कर सकते हैं. program को run करने पर एक Menu आयेगा जिसके द्वारा हम उस register में name add कर सकते हैं या register के सभी नामो को print कर सकते हैं.
#include <stdio.h>
char list[10][20]; 
int length = 0;
void add_name() {
  if(length >= 10) {
    printf("list is full\n");
    return;
  }
  printf("Enter the name: ");
  scanf("%s", list[length]);
  length = length + 1;
  printf("name added\n");
}
void print_list() {
  int i = 0;
  for(i=0; i < length; i++) {
    int serial_no = i + 1;
    printf("%d : %s\n", serial_no, list[i]);
  }
}
int main() {
  int input = 0;
  while(input != 3) {
    if(input == 0) {
      printf("0 - Print this menu\n");
      printf("1 - add name to list\n");
      printf("2 - print list\n");
      printf("3 - quit program\n");
    }
    else if(input == 1) {
      add_name();
    }
    else if(input == 2) {
      print_list();
    }
    else {
      printf("Wrong Input, try again\n");
    }
    scanf("%d", &input);
  }
}

ऊपर दिए गए program को run करने पर शुरू में एक menu print होगा जो यह बताएगा कि क्या enter करने पर क्या होगा. List में नाम add करने के लिए 1 press करके enter करें, इसके बाद या पूछेगा कि कौन सा नाम add करना है. नाम type करके enter करें. फिर से दूसरा नाम add करना हो तो फिर से 1 enter करें. List print करने के लिए 2 Enter करें. पहले इस program को run करके देखें फिर इसे समझते हैं कि यह कैसे काम करता है.

अब देखते हैं कि यह कैसे काम करता है. शुरू में हमने 2 variable list और length declare किया है. चूंकि ये दोनों variable किसी function के अंदर नहीं बल्कि सबसे बाहर हैं इसलिए इन्हें किसी भी function या loop के अंदर से read/write कर सकते हैं. नियम यह है कि variable जिस {} के अंदर declare किये गए हैं उससे बाहर कहीं भी access नहीं किये जा सकते, उसके अंदर कहीं भी access किये जा सकते हैं.
अब आते हैं char list[10][20]; पर. अगर सिर्फ char list[10]; होता तो इसका मतलब यह होता कि list एक array है जिसमे 10 char आ सकते हैं. पर यहाँ char list[10][20]; है इसका मतलब है कि list एक array है जिसमे 20 char वाली 10 array आ सकती हैं. यहाँ 10 char की जगह 10 array आएँगी और हर एक array 20 char वाली होगी.
अगर int a[2][3] होता तो इस तरीके से देख सकते हैं.
a = {  {1,2,3} ,   {4,5,6}   };

यहाँ पर a के अंदर 2 array आ सकती हैं एक array a[0] में और एक a[1] में. उन दोनों array में 3 3 int आ सकते हैं.
char list[10][20]; का use नाम store करने के लिए करेंगे. हम देख चुके हैं कि नाम string है जिसे char array में store करते हैं. यहाँ list में 10 char array आ सकती हैं इसलिए इसमें हम 10 नाम store कर सकते हैं. हर एक array में 20 char आ सकते हैं इसलिए हम वही नाम store कर सकते हैं जिसमे 20 या उससे कम letter हो. दूसरा variable length या बताता है कि currently list में कितने नाम हैं, जोकि शुरू में 0 है.
इसके बाद add_name function है जिसे call करने पर यह list में एक नाम add कर देगा. पहले हम check करते हैं अगर list में 10 नाम आ चुके हैं तो return का use करके function को वहीँ समाप्त कर देते हैं, अन्यथा scanf का use करके list variable में सीधे नाम read कर लेते हैं. ध्यान दें कि scanf का पहला argument "%s" है जो कि string read करता है इसलिए दूसरा argument char array होना चाहिए. list[0], list[1], list[2] ... list[19] सभी 20 char वाली array हैं.
list में नाम add होने के बाद हम length 1 बढ़ा देते हैं. list[length] हमें list में हमेशा अगली खाली जगह दे देगा क्योंकि शुरू में list खाली है इसलिए list[length] (length=0) वाली char array खाली है. एक नाम list[0] में add होने के बाद length = 1 हो जायेगा, अब list[length] (length = 1) वाली array खाली है.
इसके बाद print_list function define किया है, जिसे length से यह पता चल जाता है कि list में कितने नाम हैं उतना ही for loop से print कर लेते हैं. यहाँ for loop के अंदर एक variable serial_no define किया है जो उस loop के बाहर से access नहीं होगा.

अंत में main function है जहाँ program run होना start होता है. जिसमे if-else statement का use करके input variable की value के according list में नाम add करते हैं, list print करते हैं, menu print करते हैं. इस पुरे if-else को while loop के अंदर लिखा गया है, जो कि तब तक run होगा जब तक input की value 3 नहीं हो जाती. while loop खत्म होने से पहले input variable में scanf का use करके input read करते हैं, अगर input 3 है तो while loop खत्म होके program finish हो जायेगा otherwise while loop के अंदर फिर से आकर input value के according if-else का use करके list में नाम add करते हैं, list print करते हैं, menu print करते हैं और फिर से input variable में scanf का use करके input read करते हैं.
अगले लेख में हम function के बारे में जानेंगे जो कि बहुत important है.

No comments:

Post a Comment