Learn C programming Language Part- 1

प्रारंभ करने से पहले
C/C++ Programming language Introduction
C यह दुनिया की पहलों ऐसा computer language है जो बहुत पुरानी; है पर इसका उपयोग आज भी बड़े पैमाने पर किया जा रहा है. परन्तु बहुत से लोग ऐसे हैं जो C/C++ सीखना चाहते हैं पर अंग्रेजी में सहज महसूस नहीं करते, इस कारण किताबो से पढ़कर नहीं सीख पाते. मजबूरन उन्हें समय और पैसा खर्च करना पड़ता है. आशा है ऐसे लोगो को मेरा प्रयास पसंद आएगा. Hindi में C/C++ programming language सिखाने का मेरा उद्देश्य यह नहीं है कि आप अंग्रेजी मत सीखो, आप जिस क्षेत्र में हैं उसमे अंग्रेजी भी महत्त्वपूर्ण हैं परन्तु अगर आप को यह जानकारी Hindi में उपलब्ध हो तो आप और अच्छी तरह से C/C++ programming language सीख सकते हैं, C/C++ सीखने से पहले आपको अंग्रेजी नहीं सीखना पड़ेगी.
यह C/C++ programming language hindi tutorial किसके लिए और किस प्रकार लिखा जायेगा यह शिक्षण इस प्रकार से लिखा जायेगा; कि जिनको किसी भी computer language का ज्ञान नहीं है वो भी इसे पढ़कर आसानी से C/C++ सीख सके. जिनको अन्य भाषाओ का ज्ञान है पर C/C++ का ज्ञान नहीं है वो भी इससे लाभ ले सकते हैं, इसमें C/C++ की सभी विशेषताओ का कारण सहित अध्ययन किया जायेगा और इसे आकर्षक बनाने का प्रयास किया जायेगा. अंत में ये उन लोगो के लिए लिखा जा रहा है जिन्हें अंग्रेजी समझने में असहजता महसूस होती है. आशा है ये आपके काम आएगा.


Compiler क्या है
हम जब computer के लिए निर्देश(computer program)लिखते हैं तो वो English भाषा की तरह लिखते हैं जिसे हम आप पढ़कर समझ सकते हैं परन्तु computer इसे नहीं समझ सकता. computer मशीन की भाषा समझता है जिसे हम आसानी से नहीं समझ सकते. इसके लिए हमें ऐसी software की जरूरत पड़ती है जो हमारे द्वारा लिखे गए program को computer की language में convert कर देता है, जिसे computer समझकर उसका पालन कर सके. इस तरह के software को compiler कहते हैं.
compiler इन्स्टाल करना
Note: अगर आप बिना compiler Install किये C/C++ program Run करना चाहते हैं तो ऊपर "Run Program Here" पर click करें. 
यहाँ Winodows OS के लिए devcpp और Linux के लिए gcc compiler इन्स्टाल करने की विधि बताई जा रही है.
windows का उपयोग करने वाले यहाँ  पर क्लिक करे. Downloads section में पहले स्थान पर जो लिंक दिया गया है उस पर क्लिक करके 9mb का सॉफ्टवेर डाउनलोड करके इन्स्टाल कर लें. इन्स्टाल करना आसान है. किसी को इन्स्टाल करने में दिक्कत आ रही हो तो टिप्पणी के माध्यम से संपर्क करे.
ubuntu Linux का उपयोग करने वाले terminal खोले (terminal कैसे खोले यह जानने के लिए यहाँ क्लिक करे) और उसमे लिखे
sudo apt-get install gcc
और Enter  का बटन दबा दे. अगर password पूछे तो वो भी Enter कर दे. कुछ देर बाद gcc अपने आप इन्स्टाल हो जायेगा.
कोई भी प्रश्न आने पर या सलाह देने के लिए टिपण्णी करना न भूले. अगर आपको लेख पसंद आये तो मित्रो को भी बताये, facebook ,twitter में share करे.
Disclaimer : यहाँ आने वाले tutorial को लिखने में पूर्ण सावधानी बरती जा रही है और यथासंभव सही जानकारी दी जाएगी, फिर भी किसी भी गलती के लिए और उसके द्वारा पाठक को हुई हानि का जिम्मेदार लेखक नहीं है.



सर्वप्रथम program चलाना सीखें
Important Notice
अब अपना C/C++ computer program run करें online, बिना compiler Install किये. इसके लिए ऊपर "Run Program Here" पर click करें. इससे पहले हम compiler के बारे में जान चुके हैं और उसे इन्स्टाल भी कर चुके हैं. उसे पढ़े बिना आपको यहाँ कठिनाई आ सकती है. अगर आपने मेरी पहले वाली पोस्ट नहीं पढ़ी हो उसे पढने के लिए यहाँ क्लिक करें.
पहले आपको program लिखकर फाइल में save करना पड़ेगा फिर उसको हम चलाना (execution) सीखेंगे. आज हम यही सीखेंगे की ये कैसे करना है.

program को फाइल में सेव करना
===Windows के लिए===
1 . dev-c++ open करें. (Start -> All Programs -> Dev-C++)
2 . यदि Dev-C++ के अन्दर "Tip of the Day"  की window खुल गयी हो तो उसे बंद कर दें. (बंद करने से पहले ये tips पढ़ भी सकते हैं शायद कभी काम आ जाये)
3 . अब File पर क्लिक करे(सबसे ऊपर बाये और की पट्टी में) उसमे New पर क्लिक करे और फिर Source File पर क्लिक करे. अब बॉक्स में आप प्रोग्राम लिखना शुरु कर सकते हैं. अभी के लिए निम्न program वहां पर लिख दें. ?
#include <stdio.h>

int main() {
  printf("Namaskar");

  scanf("%s");
  return 0;
}
4 .  अब menu में Execute ->Compile पर जाये.
नोट: ऊपर दिए गए program को ध्यान से बिना spelling में गलती किये लिखे अन्यथा Compile करने में Error आएँगी.
5 . अब menu में Execute -> Run पर जाये. आपके सामने एक काली window खुलेगी जिसपर लिखा होगा Namaskar. ये इस program का output है.  अब आप काली विंडो को बंद कर सकते हैं.

==Ubuntu Linux के लिए==
1 . किसी भी text editor (vim , gedit , emacs ...) में एक नयी फाइल बनाये.
2 . उस फाइल में निम्न program को लिखें और उसे किसी भी फोल्डर में सेव कर लें. फाइल का नाम namaskar.c रखें. वैसे नाम आप कुछ भी रख सकते है पर C program की फाइल के अंत में .c  लगाना आवश्यक है.?
#include <stdio.h>

int main() {
  printf("Namaskar");

  return 0;
}
3. अब terminal खोले और cd command के उपयोग से उस फोल्डर में जाये जहाँ आपने प्रोग्राम सेव किया है . यहाँ 4 command मुख्य रूप से आपके काम आ सकते है.
१. ls : current फोल्डर के अन्दर स्थित सभी फाइल और फोल्डर के नाम देखने के लिए.
२. cd ..  : current फोल्डर से बाहर आने के लिए.
३. cd <फोल्डर का नाम>: current फोल्डर के अन्दर स्थित किसी फोल्डर में जाने के लिए
४. pwd : current फोल्डर की full location देखने के लिए.
4 . यहाँ टर्मिनल ने टाइप करे
gcc namaskar.c
और Enter करे. अगर कोई  error नहीं आई हो तो आपका प्रोग्राम सफलतापूर्वक compile हो गया है.
5 . Run करने के लिए टाइप करें
./a.out
स्क्रीन पर namaskar लिखा आ जायेगा.और आपका प्रोग्राम Run हो गया. बाहर आने के लिए कुछ भी टाइप करके इंटर करे.
==============
बधाई हो आपका पहला program सफलतापूर्वक Run हो गया हो. कोई दिक्कत हो तो आप इस पोस्ट पर टिपण्णी (comment ) करे, साथ में आपका C/C++ program एवं error भी लिख दें ताकि हम आसानी से आपकी गलती पहचान सकें.
अगर आपको ये लेख पसंद आया हो तो अपने दोस्तों को भी बताएं क्यूंकि ये उनके लिए भी उपयोगी सिद्ध हो सकता है !!




program समझना
नोट: अगर आपको C/C++ computer program चलाना नहीं आता हो तो मेरी पिछली पोस्ट पढ़े या फिर ऊपर "Run Program here" पर click करके सीधे अपना C/C++ program Run कर सकते हैं.
आज Hindi के इस C/C++ programming language tutorial को आगे बढ़ाते हुए पिछले वाले program को समझेंगे. एक बार फिर से नीचे वह program लिख रहा हूँ.?
#include <stdio.h>
int main() {
   printf("Namaskar");
   scanf("%s");
   return 0;
}
आप देख ही चुके हैं की इस C/C++ program को चलाने से screen पर Namaskar लिखा हुआ आता है. आज हम इस program की एक line ही समझेंगे और कुछ महत्त्वपूर्ण बाते जानेंगे.
तीसरी line को ध्यान से देखिये इसमें printf("Namaskar"); लिखा हुआ है. C में printf एक function होता है इसके अन्दर हम जो भी " " के बीच में लिखते हैं वह screen पर लिखा हुआ आ जाता है. अब आप उस line में Namaskar की जगह कुछ और लिखकर program चलाने का प्रयास करें और output देखें.
इस program की अन्य lines को बाद में समझेंगे. अभी ये मान लीजिये की हर program ऊपर वाली 2 line और नीचे वाली 3 line लिखना है, कुछ दिनों तक हम सिर्फ printf वाली line में ही changes करके देखेंगे.
इस program के विषय में कुछ महत्त्वपूर्ण points
1.C का हर program वहां से run होना शुरू होता है जहाँ main() { लिखा होता है. program run होते ही main() { के बाद हर एक line को पढता है और उसे run (execute ) करता है और } का चिन्ह मिलते ही program समाप्त हो जाता है. यहाँ हम बाद में जानेंगे की बाद वाली 2 line execute होने पर क्या होता है.
2.printf एक function या method है (हम यहाँ function नाम use करेंगे), हर function कुछ न कुछ input लेता है जो की function के बाद छोटे कोष्ठक में लिखा जाता है.
3. function का कोष्ठक बंद होने के बाद semicolon का चिन्ह (;) लगाना आवश्यक है. semicolon का चिन्ह compiler को यह बताता है की यह function पूरा हो गया है ताकि वह अगली command पढ़ सके. अब नीचे दिया गया program चलायें.?
#include <stdio.h>
int main() {
   printf("Namaskar")
   scanf("%s");
   return 0;
}
जब आप इस program को compile करेंगे तो यह कुछ इस तरह की error देगा
In function `int main()':
error: expected `;' before "scanf"
Execution terminated
इसका मतलब यह है की scanf के पहले ; लगा होना चाहिए, जैसा की ऊपर बताया जा चुका है. परन्तु अगर आप ध्यान से देखें तो ऊपर दिए गए program में printf function के बाद ; नहीं लगाया गया. इसे सुधार कर compile करने पर यह compile हो जायेगा.
ध्यान रहे किसी program को रन करने से पहले compile करना आवश्यक होता है. अगर आपने program modify किया है तो उसे फिर से compile करना होगा.
अगले topic में हम variables के बारे में जानेंगे और कुछ program सीखेंगे जो कुछ calculation करे जैसे सेल्सियस को फारेनहाइट में बदलना, interest(ब्याज) निकलना इत्यादि.





variables और expressions
आज Hindi के इस C/C++ programming language tutorial को आगे बढ़ाते हुए हम variables और expressions के बारे में जानेंगे.
variables in C/C++ programming language
Variable यहाँ पर गणित की तरह ही होता है, जो कोई भी मान ले सकता है. सबसे पहले variable define करते हैं. define करने का मतलब यह है की सबसे पहले हमें C/C++ program को बताना होता है की हम किस नाम का variable use कर रहे हैं. नीचे दिए उदहारण की सहायता से इसे समझते हैं. ?
#include <stdio.h>
int main() {
  int x;
  x = 1;
  x = 5;

  scanf("%s");
  return 1;
}
अगर इस program की तुलना पहले वाले program से करे तो आप पाएंगे की printf वाली line को हटाकर 3 line add कर दी हैं. अब हम उन 3 line  का अध्ययन करते हैं.
1. int main() { के बाद पहली line में लिखा हुआ है int x;
इसके द्वारा हम program को यह बता रहे हैं की हमने x नाम का variable define किया है और int यह बता रहा है की यह variable केवल integer यानि पूर्णांक मान ले सकता है.
इसी तरह अगर हम लिखे int temp; तो यह temp नाम का variable define करेगा जो integer (पूर्णांक) मान ले सकेगा.
2. x = 1;
अभी तक variable x सिर्फ define किया था, उसे कोई मान नहीं दिया था. इस line के द्वारा हम x का मान 1 कर रहे हैं. इसी तरह अगली line में हम x का मान 5 कर रहे हैं.
किसी भी C/C++ program में हम कितने भी variable define कर सकते हैं परन्तु सभी के नाम अलग अलग होना चाहिए.
Expression in C/C++ programming language
Expression समझने के लिए नीचे example देखिये. ?
#include <stdio.h>

int main() {
  int price;
  int rate ;
  int time;

  price = 1000;
  rate = 5;
  time = 3;

  int interest;
  interest = price*rate*time/100;

  scanf("%s");
  return 1;
}
ऊपर दिए गए program में पहले 3 variable: price, rate, time define किये गए हैं और उनके मान set किये हैं. फिर एक variable interest define किया है. * चिन्ह का मतलब है गुणा (multiplication) और / चिन्ह का मतलब है भाग (division). इस तरह दिए गए value के आधार पर interest variable में ब्याज(interest) की value आ जायेगी. यहाँ ?
1
price*rate*time/100;
एक expression है. इसे हल करने पर 150 आता है अतः interest की value 150 हो जाती है. इसी तरह +, -, *, / और कोष्ठक () का उपयोग करते हुए कोई भी expression लिख सकते हैं.
Variable की value screen में print करना(printf की सहायता से)
पिछले topic में हमने जाना था कि printf(""); में "" के बीच जो भी लिखा जाता है वह screen में लिखा हुआ आ जाता है. आज इसके बारे में थोडा और जानेंगे. नीचे दी गयी line को ध्यान से देखिये.
printf("Value is %d", 8);
यह screen पर print करेगा Value is 8
यहाँ printf function 2 input या parameter ले रहा है. printf सबसे पहले 1st parameter पढता है. अगर 1st parameter में कहीं भी %d लिखा हो तो यह दूसरा paremeter पढता है और screen पर %d की जगह दूसरे parameter की value print करता है. इसी तरह जितनी बार भी %d हो, उतने ही parameter पढता है और उनकी value print करता है. नीचे दिए गए उदहारण से और ज्यादा स्पष्ट हो जायेगा.?
#include <stdio.h>

int main() {
  int price;
  int rate ;
  int time;

  price = 1000;
  rate = 5;
  time = 3;

  int interest;
  interest = price*rate*time/100;

  printf("Price is %d, Rate is %d, time is %d, calculated interest is %d", price, rate, time, interest);

  scanf("%s");
  return 1;
}
ऊपर दिया गया program यह print करेगा
Price is 1000, Rate is 5, time is 3, calculated interest is 150
ध्यान रहे 1st parameter में जितने %d होंगे, उतने ही अतिरिक्त paremeter उसी क्रम में देने होंगे.
अगले लेख में हम integer (पूर्णांक) के अलावा अन्य type के variable का अध्ययन करेंगे और +, - * के अलावा अन्य operators के बारे में जानेंगे.



 variables और expressions – II
आज Hindi के इस C/C++ programming language tutorial को आगे बढ़ाते हुए हम variables और expressions के बारे में थोडा और जानेंगे. 
चलिए पिछले सारे C/C++ hindi tutorial के महत्वपूर्ण बिन्दुओं को एक बार फिर से दोहराते हुए आगे बढ़ते है !
1. Compiler - जो C/C++ में लिखे गए program को मशीनी language में परिवर्तित कर देता है. compile करने के लिए हम Linux में gcc filename.c terminal में लिखते है जो उसी फोल्डर मेंa.out नाम से एक binary फाइल बना देता है. अगर a.out पहले से वहां है तो ये उसे बदल (replace) कर देगा! Windows पर भी यही प्रक्रिया है जो कि build एवं run करने पर background में चलती है!
2. main() function - जहाँ से C का program चलना (execute) होना शुरू होता है. printf() function जो अपने अन्दर लिखे गए expression को बाहर terminal पर print कर देता है. main एवं printf के अन्दर लिखे जाने वाले expressions के बारे में हम आगे विस्तार में अध्ययन करेंगे.
3. Variable declare करना एवं define करना (example int x =10) - जैसा कि पिछले लेख में हमने देखा किसी भी variable के 3 भाग होते हैं, पहला उसका datatype, जैसे की यहाँ integer. दूसरा उसका नाम जैसे कि x एवं तीसरा उसका मान (value), जो कि उपरोक्त उदहारण में 10 है.
अब अगर हम केवल int x; लिखते है, तो इसका मतलब ये है कि हमने इसे declare तो कर दिया है पर इसे अभी define नहीं किया है अर्थाथ x को अभी तक कोई value नहीं दी है. ध्यान रहे जब तक हम किसी भी variable को value नहीं दे देते हमे उसे उपयोग में नहीं लेना चाहिए क्यूंकि compiler x के लिए memory तो निर्धारित (allocate) कर देगा मगर उस memory में पहले से भी कुछ हो सकता है, जो कि वांछनीय(desirable) नही है. सामान्यतया किसी भी function या program के शुरू में हम variables को declare करते है. इसके बाद इसे उपयोग में लेने से पहले उसे उचित मान देते है. मान देने के लिए = चिन्ह से पहले variable का नाम एवं इसके बाद में उसकी value लिखते है. जब हम किसी variable को कोई मान देते है तो execute होते वक़्त वह value निर्धारित memory में लिख दी जाती है.
computer जैसे सारे उपकरणों में सामान्यतया मेमोरी sequential bytes में विभाजित होती है. जिसे हम address कर सकते है. पहली byte का एड्रेस 0 होता है. दूसरी का 1 .. इसी तरह आगे की सारी memory address की जाती है. 1 byte में 8 bits होते है. जहाँ bits किसी भी value को store करने की सबसे छोटी इकाई है. 1 bit में हम या तो 0 store कर सकते हैं या फिर 1.
C/C++ computer programming language में बहुत सारे datatypes है उनमे से मुख्यतया निम्न उपयोग में आते है,
1. int - जो कि एक पूर्णांक (integer) मान लेता है. जिनमे हम −2,147,483,648 से 2,147,483,647 (range) तक की कोई भी value store कर सकते है.
2. float - जो कि एक दशमलव (real number) मान लेता है जैसे कि 1.2, .002 etc.
3. char - जो कि एक अक्षर(character जैसे a,b ...) को store करता है. Computer हर अक्षर को number की तरह store करता है. जैसे की अगर हम a store करना चाहते हैं तो Computer 97 store करेगा. ASCII table की सहायता से आप यह जान सकते हैं की किस character के लिए Computer कौन सा number store करता है. इन datatypes के कई महत्वपूर्ण रूपांतरण (variant) भी है, जैसे कि -
4. double - ये float का variant है जो कि ज्यादा शुद्धता से मान ग्रहण कर सकता है. इसलिए यह float से ज्यादा memory लेता है.
5. short int - ये int का variant है, इसका परिसर( −32,768 से 32,767 ) है, जोकि int से कम है इसलिए यह int से कम memory लेता है..
6. long int - ये भी int का ही एक variant है. जो कि 32 bit architecture machine पर 4 byte एवं 64 bit architecture machine पर 8 bytes लेता है. एवं इसी के अनुसार इसका परिसर int से बड़ा ( −9,223,372,036,854,775,808 से +9,223,372,036,854,775,807 ) या बराबर होता है. इसी तरह long double भी है.
7. unsigned int - ये int का एक ऐसा variant है जो negative value नहीं लेता है. इसी कारन उन्ही 4 bytes में positive परिसर (range) बढ़ कर 0 से +4,294,967,295 हो जाता है. इसी तरह unsigned long int एवं unsigned short int भी है.
हमने पिछले topic(C/C++ hindi tutorial) में एक program लिखा था जो कि दिए गये दर (rate), समय (time) एवं मूल्य (price) के लिए ब्याज (interest) कि गणना करता है. परन्तु हमने उस code में दर, समय एवं मूल्य तीनो int लिए है. क्या ऐसा नहीं हो सकता कि हमे दर दशमलव में दी हो? या फिर समय int ना हो? जरुर हो सकता है! तो हमारे code को उस परिस्थिति में भी काम करवाने के लिए निम्न code से replace कर दें.
#include <stdio.h>
int main() {
float price;
float rate ;
float time;
price = 1000.0 ;
rate = 5.3;
time = 3.5;
float interest;
interest = price*rate*time/100.0;
printf("Price is %f, Rate is %f, time is %f, calculated interest is %f", price, rate, time, interest);
scanf("%s");
return 1;
}
अगर हम ध्यान दे तो ये पायेंगे कि यहाँ printf में हमने %d की जगह %f का उपयोग किया है, %d int को print करने के लिए उपयोग में आता है एवं %f float value को.
Note: अगर आप ऊपर दिए गए C/C++ program को Linux में Run करे तो अंत में यह Segmentation Fault error देगा, जिसे अभी के लिए ignore कर दें उसका कारन और हटाने का तरीका बाद में बताया जायेगा जब हम scanf के बारे में बात करेंगे.


 if else statement
आज Hindi के इस C/C++ programming language tutorial को आगे बढ़ाते हुए हम if-else statement के बारे में जानेंगे. इससे पहले comparison operator के बारे में जानना आवश्यक है अतः इसकी जानकारी नीचे दी जा रही है. operator का मतलब है चिन्ह (जैसे की +, - ...). नीचे दिए गए comparison operator Boolean output देते हैं, मतलब ये यह बताते हैं की दिया गया statement true है या false
* < और > : जैसे की 3 > 1 का output है true जबकि 3 < 1 ka output है false. इसी तरह 3 > 3 का output false होगा 3 से बड़ा 3 नहीं है. 3 < 3 का output भी false है.
* <= और >= : ये ऊपर वाले की तरह ही हैं परन्तु 3 >= 3 और 3 <= 3 का output true हो जायेगा. ध्यान रहे की <= की जगह =< का उपयोग नहीं कर सकते. = का चिन्ह > या < के बाद ही आना चाहिए.
* == : यह बताता है की दो value बराबर हैं या नहीं. यह int, char, आदि सभी को compare कर सकता है. याद रहे की यह = से अलग है. = assignment operator है जो की बाये और लिखे variable को दाई और लिखी value देता है, जबकि == दोनों और लिखे variable या value को compare करता है.
अब हम देखते हैं की इनका उपयोग if else में कैसे करते हैं.
if statement का format निम्न है.
if(boolean expression1) {
statement1;
} else if(boolean expression2) {
statement2;
}
.....
....
....
else {
statementN;
}
boolean expression वह है जिसकी value true हो या false. अगर boolean expression1 का मान true है तो सिर्फ statement1 execute होगा. अगर boolean expression1 का मान false है तो हम boolean expression2 देखेंगे. अगर यह true है तो statement2 execute होगा. इसी तरह आगे बढ़ते जायेंगे. जहाँ भी हमें boolean expression का मान true प्राप्त होगा केवल उसी से सम्बन्धित statement execute होगा, कोई और नहीं. अगर कोई boolean expression true नहीं है तो else के अन्दर जो statement है वो execute होगा. इसे एक उदहारण के द्वारा समझते हैं.
नीचे दिए गए example में दिए गए total marks और obtained marks के अनुसार हम percent निकालेंगे और percent के आधार पर grade print करेंगे.
#include <stdio.h>
int main() {
int total_marks = 500;
int obtained_marks = 272;
int percent = obtained_marks*100/total_marks;
if(percent >= 60) {
printf("Congrats!! You passed in 1st division. ");
printf("Your percentage is %d. ",percent);
}
else if(percent >= 45) {
printf("You passed in 2nd division. ");
printf("Your percentage is %d. ",percent);
}
else if(percent >= 33) {
printf("You just passed in 3rd division. ");
printf("Your percentage is %d. ",percent);
}
else {
printf("Sorry! you failed. ");
printf("Your percentage is %d. ",percent);
}
scanf("%s");
return 1;
}
ऊपर दिखाई गई values के अनुसार percent की value 54 आएगी.(यहाँ गौर करने लायक बात यह है कि percent कि value 54.4 नहीं आएगी क्योंकि हमने अपने program को int बनाया है. ) चूंकि percent 60 से छोटा है अतः पहली वाली condition (percent >= 60) का result false आएगा आएगा इसलिए हम अगली वाली condition (percent >= 45) check करेंगे जो कि true है अतः स्क्रीन पर print होगा
You passed in 2nd division.
Your percentage is 54
अब चूंकि कोई भी condition true होने पर उसके अन्दर वाले statement ही execute होते हैं. अतः यह C/C++ program और कुछ print नहीं करेगा. यहाँ एक बात ध्यान देने लायक है कि हमने printf के अन्दर का उपयोग किया है परन्तु यह print नहीं हुआ, क्योंकि का मतलब है new line character अर्थात के बाद जो भी print होगा वो अगली line में print होगा. यहाँ आप को हटाकर run करें और output देखें. इसी तरह दिए गए example में obtained_marks की अलग अलग value रख कर C/C++ program को run करें और output को ध्यान से देखें. अगर इससे संबधित कोई सवाल आपके पास है तो नीचे comment के माध्यम से पूछ सकते हैं.
अगले topic में हम if else के कुछ और अलग तरह के example देखेंगे.






switch case statement
आज Hindi के इस C/C++ programming language tutorial को आगे बढ़ाते हुए हम switch case statement का उपयोग करना सीखेंगे. इसकी if else statement से बहुत समानता है. वास्तव में बिना switch case statement के भी सारा काम if else के द्वारा भी किया जाता है परन्तु इसके उपयोग से कई बार हमें आसानी हो जाती है. इसे हम एक example द्वारा समझते हैं. नीचे दिए गए example में दो integer दिए गए हैं. हम एक variable की value के द्वारा decide करेंगे कि उनको जोड़ना है या घटाना है...
#include <stdio.h>
int main() {
float v1 = 23;
float v2 = 9;
float result;
char c = 's';
switch(c) {
case 'a':
result = v1 + v2;
printf("Result of addition is %f ", result);
break;
    case 's':
result = v1 - v2;
printf("Result of subtraction is %f ", result);
break;
    case 'm':
result = v1 * v2;
printf("Result of multiplication is %f ", result);
break;
    default:
printf("No operation selected. ");
}
scanf("%s");
return 1;
}
अब इसे समझते हैं. हमने एक variable c define किया है जिसका type char है और value s है. (char के बारे में जानने के लिए मेरे पिछले लेख में जाएँ) अब code को ध्यान से देखें. switch के अंदर लिखे गए variable c का मान हर एक case लिखे गए मान से compare किया जाता है. जैसे कि इस example में c का मान s है. पहले case में लिखा गया मान a है इसलिए इस case के अंदर लिखे गए statements execute नहीं होंगे. इसी तरह आगे बढते जायेंगे. switch(c) अंदर लिखे गए c का मान case 's': में लिखे s से match हो जायेगा इसलिए result variable में v1 और v2 के  difference का मान आ जायेगा और screen पर print होगा Result of substraction is 14. break statement run होने पर यह switch() { } block  से बाहर आ जायेगा. अगर break नहीं लिखा जाता तो यह किसी एक case match होने के बाद आगे के सारे case execute कर देता चाहे वो switch() के अंदर लिखे variable से match हो या न हो. अगर कोई भी case match न हो तो default के अंदर लिखे statement execute हो जाते हैं. ऊपर दिए program में c के अलग अलग मान देकर program run करे और output देखें.



for loop
आज Hindi के इस C/C++ programming language tutorial को आगे बढ़ाते हुए हम for loop के बारे में और जानेंगे. for loop से पहले हम एक और operator के बारे में बात करते हैं.
%: किसी संख्या को दूसरी से भाग देने पर बचने वाला शेष हम इसके द्वारा जान सकते हैं. कुछ example नीचे दिए जा रहे हैं.
int a = 15 % 2;यहाँ a का मान 1 हो जायेगा क्योंकि 15 में 2 का भाग देने पर शेष 1 प्राप्त होगा.
int b = 254 % 2;यहाँ b का मान 0 हो जायेगा क्योंकि 254 में 2 का भाग देने पर शेष 0 प्राप्त होगा.
int c = 37 % 10;यहाँ c का मान 7 हो जायेगा क्योंकि 37 में 10 का भाग देने पर शेष 7 प्राप्त होगा.
अब हम for loop को एक example से समझते हैं. इस example में हम 1 से 10 तक की संख्याओ के square print करेंगे.?
#include <stdio.h>

int main() {
  int i;
  int sq;
  for(i=1; i<=10; i = i+1) {
    sq = i*i;
    printf("square of %d is %d. ", i, sq);
  }

  scanf("%s");
  return 1;
}
* सबसे पहले 2 variable i, sq declare किये गए हैं. for() के अंदर ध्यान से देखें. इसमें 2 जगह ; का चिन्ह लगा होने चाहिए जो इसके अंदर लिखे हुए को 3 भागो में बांटता है. program किस तरह आगे बढ़ता है नीचे बताया गया है.
* सबसे पहले भाग में initialization statement आते हैं. अगर एक से ज्यादा statement हैं तो ; लगाकर लिखते हैं. इस भाग में लिखे गए statement केवल एक बार execute होते हैं. इस example में ये statement i = 1 है अतः सबसे पहले i की value 1 हो जाएगी.
* दूसरे भाग में सिर्फ एक boolean statement होती है जिसका output true या false होता है. पहला भाग execute होने के बाद यह भाग check होता है. अगर यह true है तो हम for के साथ { } के अंदर लिखे सारे statement एक बार execute करते हैं. इस example में {} के अंदर sq का मान 1 हो जायेगा क्योँकि अभी i का मान 1 है, उसके बाद screen पर print होगा square of 1 is 1.
इसके बाद तीसरा भाग execute होता है, और फिर से दूसरा भाग check करते हैं अगर वह true है तो तो हम फिर से {} के अंदर लिखे सारे statement execute हो जाते है. फिर से तीसरा भाग run होता है और फिर से दूसरा भाग check करते हैं और वह true है तो फिर से {} के अंदर लिखे statement execute कर देते हैं.. यह तब तक चलता रहता है जब दूसरा भाग false नहीं हो जाता. इस example में i का मान 2 हो जायेगा जिससे i <= 10 true हो जायेगा और अब {} के अंदर sq का मान 4 हो जायेगा क्योंकि i का मान 2 है. इसी तरह i का मान बढ़ता रहेगा और {} के अंदर लिखे statement execute होते रहेंगे. जब i का मान 11 हो जायेगा तब i <= 10 false आ जायेगा और for loop खत्म हो जायेगा.
ऊपर दिए program को run करके output देखे. अपने अनुसार value change करके run करें और output देखें. नीचे एक और program दिया जा रहा है. जो 1 से 10 तक हर संख्या के लिए print करेगा कि वह सम है या विषम.?
#include <stdio.h>

int main() {
  int i;
  int sq;
  for(i=1; i<=10; i = i+1) {
    switch(i%2) {
      case 0: printf("%d is even. ", i);
        break;
      case 1: printf("%d is odd. ", i);
        break;
    }
  }

  scanf("%s");
  return 1;
}
ऊपर दिए गए program में for loop उसी तरह से चलेगा जैसे पहले बताया गया था और i के 1 से 10 तक हर एक मान के लिए for वाले {} block के अंदर लिखे statement execute होंगे. यहाँ हमने {} के अंदर switch case statement लिखा हुआ है जो हमने पिछले लेख में पढ़ा था. पहली बार जब for के अंदर switch case में आयेंगे तो i का मान 1 होगा अतः i%2 का मान 1 आएगा जोकि case 1 से match होगा इसलिए print होगा 1 is odd. जब दूसरी बार for के अंदर switch case में आयेंगे तो i का मान 2 होगा इसलिए i%2 का मान 0 आएगा जोकि case 0 से match होगा इसलिए print होगा 2 is even. इसी तरह आगे बढते जायेंगे.
अगले  लेख में हम array और runtime पर input लेना सीखेंगे. जिससे यह समझ में आ जायेगा कि हर program के अंत में scanf("%s") क्यों लिखते हैं.



Array and Input
आज Hindi के इस C/C++ programming language tutorial को आगे बढ़ाते हुए ये सीखते हैं कि हम runtime पर यानि जिस समय program run हो रहा है तब input कैसे लेते हैं. इसे एक example से समझते हैं. नीचे दिए गए example में हम user से एक संख्या input में लेंगे और उसके बाद यह print करेंगे कि वह संख्या सम है या विषम.?
#include <stdio.h>
int main() {

  printf("Please enter a number: ");
  int i = 0;
  scanf("%d", &i);

  printf("You entered %d ", i);
  if(i%2 == 0) {
    printf("Number is even ");
  } else {
    printf("Number is odd ");
  }

  scanf("%d", &i);
}
इस program को run करे. यह screen पर print करेगा Please enter a number: और रुक जायेगा. कोई भी संख्या type करके enter दबा दें. इसके बाद यह print करेगा कि आपने कौन सी संख्या type कि थी और यह भी बताएगा कि यह सम(even) है या विषम(odd). अब देखते हैं यह काम कैसे करता है.
इस program में सबसे पहले हमने printf("Please enter a number: "); लिखा है जिससे आप परिचित ही हैं कि यह screen पर क्या print करेगा. इसके बाद हमने variable i define किया है जो उस मान को ग्रहण करेगा जो हम input लेंगे. इसके बाद वाली line को ध्यान से देखिये जिसमे लिखा है scanf("%d", &i);
scanf printf की तरह ही काम करता है. इसका पहला argument "%d" का ठीक वही मतलब है जो printf में होता था, इसके द्वारा हम यह बताते हैं input में int लेंगे. दूसरा argument &i यह बताता है कि जो input लेंगे वह किस variable में store होगा. (यहाँ variable से पहले & चिन्ह लगाना आवश्यक होता है इसका कारण आगे समझेंगे जब pointer के बारे में पढेंगे.) अगर आप screen में 25 enter करेंगे तो i का मान 25 हो जायेगा. उसके बाद वाला program पिछले लेखो के अनुसार आप आसानी से समझ सकते हैं - हमने screen पर उस संख्या को print किया है जो आपने enter किया था. यहाँ यह ध्यान रहे % भाग देने से बचने वाला शेष दे देता है. अतः उस संख्या 2 में का भाग देने पर यही शेष 0 आता है तो हमने print किया है कि Number is even अन्यथा यह print किया है कि Number is odd.
हर program के अंत में scanf लिखने का कारण: अगर आप windows में program run कर रहे है तो एक काली window खुलती है जिसमे output दिखता है परन्तु जैसे ही program समाप्त होता है यह काली window बंद हो जाती है. अंत में scanf लिखने से काली window बंद नहीं होती क्योकि वो हमारे input का wait करती है. अगर ये नहीं लिखेंगे तो program इतनी जल्दी run होकर काली window बंद हो जायेगी कि हम अपने program का output ही नहीं देख पाएंगे.
अब समझते हैं Array के बारे में.
हम variable के बारे में जान चुके हैं कि हर variable कोई value store कर सकता है परन्तु variable define करते समय यह बताना होता है कि वह किस type की value store करेगा integer, character etc. Array एक से अधिक value store कर सकता है. अगर आप 100 int store करना चाहते तो उसे एक array में कर सकते हैं. इसे एक example कि सहायता से समझते है कि एक से अधिक variable Array में कैसे store करते हैं.
नीचे दिए गए example में 0 से 9 तक संख्याओं के square array में store करेंगे और उन्हें print करेंगे. पहले इस program को run करके देखें.?
#include <stdio.h>

int main() {

  int i = 0;
  int arr[10];

  for(i = 0; i < 10; i++) {
    arr[i] = i*i;
  }

  for(i = 0; i < 10; i++) {
    printf("square of %d is %d ", i, arr[i]);
  }

  scanf("%d", &i);
}
अब इसे समझते हैं. int arr[10]; arr variable define कर रहा है जो 10 int store कर सकता है. ध्यान रहे यह केवल int store कर सकता है. ये सारे int इसमें number से store रहते हैं. ध्यान रहे कि इनकी numbering 0 से start होती है जैसे कि इस 10 int की Array arr में पहला int arr[0] पर होगा, दूसरा arr[1] पर ... ऊपर हमने arr कि size 10 रखी है अतः यह 10 int(arr[0] से arr[9]) ही store कर सकता है. इसके बाद के program को आप समझ ही सकते हैं. for loop के अंदर (जो कि 10 बार run होगा) जब हम पहली बार आयेंगे तो i का मान 0 होगा अतः arr[0] (arr array का पहला int) में 0 आ जायेगा इसी तरह आगे बढते हुए जब for loop के अंदर अंतिम बार आयेंगे तो array arr का अंतिम int(arr[9]) में 81 आ जायेगा. इसी तरह अगले for loop में हम arr के उन सभी मानो को print कर रहे हैं.
अधिकांशतः हम किसी array के प्रत्येक मान को access करने के लिए ऊपर दिखाए अनुसार for loop का प्रयोग करते हैं.
अगले लेख में हम while loop के बारे में जानेंगे.
अगर आपको यह लेख पसंद आया हो तो अपने दोस्तों को भी बताएं क्योंकि ये उनके लिए भी उपयोगी सिद्ध हो सकता है !! नीचे दिए गए link के माध्यम से इसे आसानी से facebook twitter और Google Buzz पर भी Share कर सकते हैं.



while loop
आज Hindi के इस C/C++ programming language tutorial को आगे बढ़ाते हुए हम while loop का उपयोग करना सीखेंगे. इसमें एक boolean statement दिया जाता है. जब तक उसकी value true आती है तब तक loop के अंदर लिखे statement run होते रहते हैं. जब तक  नीचे दिए गए example से समझते हैं. while loop का उपयोग करके एक बार फिर से 1 से 10 तक कि संख्याओ के square print करेंगे
#include <stdio.h>
int main() {
int i=1;
int sq;
while(i<=10) {
sq = i*i;
printf("square of %d is %d. ", i, sq);
i = i+1;
}
scanf("%d", &i);
return 1;
}
ऊपर दिए गए program में i की प्रारंभिक  value 1  है. उसके बाद while loop का boolean statement है i<=10 जो कि true  है क्योंकि i की value 1 है, इसलिए loop के अंदर लिखे सारे statement execute हो जायेंगे. ध्यान दें कि हम loop के अंदर i की value 1 बढ़ा रहे हैं. फिर से boolean statement true  हो जायेगा क्योंकि i की  value 2 हो गयी है. इसी तरह आगे बढते रहेंगे. जब i की value 11 हो जायेगी तब boolean statement false हो जाएगा और हम while loop से बाहर आ जायेंगे. इस program को चला कर देखें. यह 1 से 10 तक सभी संख्याओ के square print करेगा.
अगले लेख में हम string का उपयोग करना सीखेंगे और साथ ही उसका use करके कुछ interesting example देखेंगे.
अगर आपको यह लेख पसंद आया हो तो अपने दोस्तों को भी बताएं क्योंकि ये उनके लिए भी उपयोगी सिद्ध हो सकता है !! नीचे दिए गए link के माध्यम से इसे आसानी से facebook twitter और Google Buzz पर भी Share कर सकते हैं.



इसे like करें. 
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] = '';
printf("Word we stored is %s ", w);
printf("1st letter of array is %c ", 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] पर है जो कि 2 char नहीं बल्कि 1 char है, जो कि यह बताता है यह इस word का अंतिम letter है. जिस तरह से line break  character है जिसके बाद अगली लाइन में print होता है उसी तरह के बाद आने वाले 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', ''};
printf("Word we stored is %s ", w);
printf("1st letter of array is %c ", 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', ''};
सही तरीका char w[] = {'h', 'i', 'n', 'd', 'i', ''};
अब एक और program देखते हैं वो भी बिलकुल पहले वाले कि तरह काम करता है.
#include <stdio.h>
int main() {
char w[] = "hindi";
printf("Word we stored is %s ", w);
printf("1st letter of array is %c ", 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] '' हो जायेगा. इस syntax(तरीके) में नहीं लिखना पड़ता.
अभी के लिए string में इतना ही, परन्तु आगे इसका बहुत उपयोग आता है. समय समय पर recall करते रहेंगे और बाद में धीरे धीरे इसके बारे में जानते रहेंगे.
इस blog को बेहतर बनाने के लिए आपके सुझावों का सदैव स्वागत रहेगा. सुझाव देने के लिए अपना Reply यहाँ पर दें. अगले लेख में हम function के बारे में जानेंगे जो कि बहुत important है.
अगर आपको यह लेख पसंद आया हो तो अपने दोस्तों को भी बताएं क्योंकि ये उनके लिए भी उपयोगी सिद्ध हो सकता है !! नीचे दिए गए link के माध्यम से इसे आसानी से facebook twitter और Google Buzz पर भी Share कर सकते हैं.



String
आज 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 ", percent);
  percent = get_percent(500, 340);
  printf("Percent is %d ", 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. ");
    printf("Your percentage is %d. ",percent);
  }
  else if(percent >= 45) {
    printf("You passed in 2nd division. ");
    printf("Your percentage is %d. ",percent);
  }
  else if(percent >= 33) {
    printf("You just passed in 3rd division. ");
    printf("Your percentage is %d. ",percent);
  }
  else {
    printf("Sorry! you failed. ");
    printf("Your percentage is %d. ",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 कर सकते हैं.



function
आज 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 ");
    return;
  }
  printf("Enter the name: ");
  scanf("%s", list[length]);
  length = length + 1;
  printf("name added ");
}
void print_list() {
  int i = 0;
  for(i=0; i < length; i++) {
    int serial_no = i + 1;
    printf("%d : %s ", serial_no, list[i]);
  }
}
int main() {
  int input = 0;
  while(input != 3) {
    if(input == 0) {
      printf("0 - Print this menu ");
      printf("1 - add name to list ");
      printf("2 - print list ");
      printf("3 - quit program ");
    }
    else if(input == 1) {
      add_name();
    }
    else if(input == 2) {
      print_list();
    }
    else {
      printf("Wrong Input, try again ");
    }
    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 है.



function example
आज Hindi के इस C/C++ programming language tutorial को आगे बढ़ाते हुए हम दो important keywords break और continue का use करना सीखेंगे, जो loops (for loop, while loop, switch case) में कभी कभी काम आ जाते हैं.
use of break in c/c++
c/c++ में किसी loop को बीच में ही खत्म करके उससे बाहर निकलने के लिए break का use किया जाता है. उदाहरण के लिए मान लीजिए एक int array में हम किसी number को खोजना चाहते हैं, इसके लिए for loop का use करके array के हर एक element को check करेंगे कि वह number वहां है कि नहीं. यहाँ for loop तब तक चलता रहेगा जब तक हम पूरी array check नहीं कर लेते, पर हम चाहते हैं कि बीच में जब भी वो number मिल जाये जिसे खोज रहे हैं तो for loop बंद करके loop से बाहर आ जाएँ. इसके लिए break का use करेंगे. for loop ही नहीं while loop से बीच में बाहर आने के लिए भी break जा use करते हैं.
इसे नीचे दिए गए example से समझते हैं. इसमें हम 100 से 200 के बीच पहली संख्या search करेंगे जो 21 से विभाजित हो जाये.
#include <stdio.h>
int main() {
  int i;
  for(i=100; i<=200; i++) {
    if(i%21 == 0) {
      printf("1st such number is %d ", i);
      break;
    }
  }
  scanf("%d", &i);
  return 0;
}
यहाँ for loop के अंदर if statement है. आपको याद दिला दें कि % यह बताता है कि पहली संख्या में दूसरी का भाग देने पर शेष क्या बचेगा. जिन संख्याओ के लिए i%21 की value 0 नहीं है अर्थात वो 21 से विभाजित नहीं होते for loop में i के उन मानो लिए हम if के अंदर नहीं जायेंगे (ध्यान दे जैसा कि हम जानते हैं कि यहाँ for loop में i के 100 से 200 तक हर मान के लिए for loop के अंदर लिखे सारे statement run होंगे.) शुरू में if के अंदर वाले statement run नहीं होंगे पर जैसे ही i की value 105(21 से विभाजित) होगी if के अंदर चले जायेंगे और break run हो जायेगा और for loop खत्म हो जायेगा. इसलिए finally for loop के अंदर लिखे statement i के 100 से 105 तक की value के लिए ही run हो पाएंगे क्योंकि i=105 आने के बाद break run होने के कारण for loop खत्म हो जायेगा.
इसी तरह c/c++ में while loop को भी बीच में खत्म करने के लिए break का use करते हैं. switch case statement में हम break का use देख ही चुके हैं.
use of continue in c/c++
जैसा कि हम जानते हैं कि loop में (for loop, while loop) के कुछ statement बार बार run होते रहते हैं. कभी कभी loop के अंत तक जाये बिना ही हमारा काम हो जाता है और हम चाहते हैं कि loop बंद न हो पर इस बार loop के अंदर जो run हो रहा है वो यहीं बंद हो जाये और loop का अगला iteration start हो जाये, इसके लिए continue का use करते हैं. इसे भी नीचे दिए गए example से समझते हैं. इस example में एक array में कुछ number दिए गए हैं. हम continue का use करके odd numbers (विषम संख्याए) print करेंगे.
#include <stdio.h>
int main() {
  int arr[] = {1,4,7,2,0,-5,8,17,5,-10};
  int length = 10;
  int i;
  for(i=0; i<10; i++) {
    if(arr[i]%2 == 0) {
      continue;
    }
    printf("Odd number is %d ", arr[i]);
  }
  scanf("%d", &i);
  return 0;
}
ऊपर दिए गए example में for loop का use करके शुरू से array के एक एक number को देखते हैं. अगर number even है तो हम continue का use करके skip कर देते हैं और अगली बार for loop के अन्दर आते हैं.
इसी तरह while loop में भी continue का use कर सकते हैं. इस blog को बेहतर बनाने के लिए आपके सुझावों का सदैव स्वागत रहेगा. सुझाव देने के लिए अपना Reply यहाँ पर दें. अगले लेख में हम function के बारे में जानेंगे जो कि बहुत important है.





 break and continue
आज Hindi के इस C/C++ programming language tutorial को आगे बढ़ाते हुए हम structure(struct) के बारे में और जानेंगे. अभी तक हम बहुत से datatype के बारे में पढ़ चुके हैं जैसे कि int, char, float, double etc. ये सभी datatype किसी format में data store करते हैं. जैसे कि अगर हमें लोगों के नाम store करना है तो हम char की array में store कर लेंगे, किसी की age store करना है तो int में store कर लेंगे. परन्तु अगर हमें किसी आयत(rectangle) की length और width store करना है तो एक तरीका ये हैं 2 int variable बनाये और उसमें store करें. उसके बाद अगर दूसरे आयत की length और width store करना है तो 2 नए variable अलग नाम से बनाना पड़ेंगे. struct का use करके अलग अलग नाम से variable बनाने कि दिक्कत दूर की जा सकती है. struct का use करने हर एक आयत का एक variable ही बनाना पड़ेगा 
दो आयत की length और width store करने का program struct का use किये बिना नीचे दिया जा रहा है, उसके बाद हम उसका better version struct का use करके भी देखेंगे.
#include <stdio.h>
int main() {
  int length1 = 12;
  int width1 = 8;
  int length2 = 20;
  int width2 = 11;
  printf("Rectangle1: %d %d ", length1, width1);
  printf("Rectangle2: %d %d ", length2, width2);
  scanf("%d", &length1);
}
ऊपर दिए गए program को समझाने कि कोई जरूरत नहीं है. अब हम इसी को struct का use करके कैसे लिखेंगे वो देखते हैं.
#include <stdio.h>
struct Rectangle {
  int length;
  int width;
};
int main() {
  struct Rectangle rect1;
  struct Rectangle rect2;
  rect1.length = 12;
  rect1.width = 8;  
  rect2.length = 20;
  rect2.width = 11;
  printf("Rectangle1: %d %d ", rect1.length, rect1.width);
  printf("Rectangle2: %d %d ", rect2.length, rect2.width);
  scanf("%d", &(rect1.length));
}
इसे ध्यान से समझने कि जरूरत है. सबसे पहले हमने एक struct define किया है जिसका नाम Rectangle है और उसमे दो variable length और width हैं. यहाँ Rectangle एक datatype बन जायेगा. जिस तरह int एक datatype होता है जो कोई भी संख्या store कर सकता है उसी तरह से यहाँ पर Rectangle एक datatype बन जायेगा जो दो int store कर सकता है जिनके नाम length और width हैं. इसे बनाने का तरीका ध्यान से ऊपर देखिये. struct के बाद वह नाम लिखे जिस नाम से datatype बनाना है. जिस तरह से int नाम का datatype है उसी तरह यहाँ Rectangle नाम का datatype बनाया है. उसके बाद {} में वो सब variable लिखते हैं जो उस datatype में store होंगे. जैसे यहाँ Rectangle datatype में दो variable length और width store होंगे. अंत में ; लगाना न भूले अन्यथा compile करने में error आएगा.
अब Rectangle datatype define हो गया है अब हम इसका use करना देखते हैं. जिस तरह से हम int variable define करते हैं उसी तरह Rectangle variable define करते हैं, परन्तु Rectangle से पहले struct लिखना जरूरी है. यहाँ Rectangle type के दो variable rect1 और rect2 define किये गए हैं. प्रत्येक variable दो value length और width ले सकता है जैसा कि पहले struct datatype बनाते समय define किये थे. अब rect1 की length और width rect1.length, rect1.width से access होती है.
यहाँ rect1 एक Rectangle datatype बन गया है यहाँ यह datatype दो value length और width store कर सकता है. इस तरह से किसी भी object को इस तरह के struct बनाकर store कर सकते हैं.
इसे अपने दोस्तों को बताना न भूले. नीचे दिए गए link की सहायता से इसे facebook, twitter, Buzz पर share अपने दोस्तों से करें.






struct (structure)
अब तक हमने C/C++ programming के बारे में बहुत कुछ जान लिया है और इस hindi tutorial के द्वारा आप बड़े बड़े program लिखने के लिए भी Ready हैं. अब हम pointer को सरल तरीके से सीखेंगे जिसे C/C++ में सबसे कठिन माना जाता हैं. इसे सरल तरीके से पेश करने कि कोशिश रहेगी, फिर भी समझने में दिक्कत हो तो नीचे comment करें.
Pointer समझने से पहले Memory के बारे में जानना जरूरी है इसलिए आज हम Memory Structure को समझेंगे. आप में से बहुत से लोगो को पता होगा कि computer या कोई भी electronic device जैसे calculator, micro processor, mobile phone सभी सिर्फ 0 और 1 की भाषा समझते हैं, आज हम इसे detail में समझते हैं. किसी भी device की Memory को हम एक बहुत बड़ी array की तरह देख सकते हैं. जैसा कि नीचे चित्र में दिखाया गया है.
1    1    0    1    0    0    0    1    1    0    . . .
Memory ऊपर दिखाई गयी Array की तरह दिखती है जिसकी हर एक position पर या तो 0 store हो सकता है या 1. हर एक position को एक bit कहते हैं. 1 bit में या तो 0 store होगा या 1. Magnetic memory में इस एक bit को magnetic field की direction के द्वारा represent किया जाता है. अगर direction clockwise है तो इसे computer 0 read करता है, aniclockwise है तो 1. Computer कभी इस एक bit को अकेले read या write नहीं करता. वह हमेशा 8 bits को एक साथ पढता है. इस 8 bit को 1 byte कहते हैं. इसलिए computer Memory को नीचे दिखाए गए चित्र जैसा पढता है.
11010001    10011101    00101001    11111001    10000011    00100110    . . .
अगर Computer ऊपर दिखाई गयी memory(array) का पहला address पढ़े तो उसे मिलेगा 11010001. इसी तरह दूसरे address पर 10011101 etc. Computer किसी भी Memory का पहला address पढ़े तो उसे पहली byte(8 bits) मिलेगी, दूसरे address पर दूसरी byte,... अगर पहली byte के अंदर की तीसरी bit पढनी है तो पहले उसे पहली byte पढनी पड़ेगी उसके बाद उस byte से तीसरी bit. directly पहली byte की तीसरी bit नहीं पढ़ सकते, क्योंकि पहला address पढ़ेगा तो पहली byte (पहली 8 bits) मिल जाएँगी. कहने का मतलब यह है कि Computer में byte level addressing होती है. हर byte का एक address होता है, पर byte के अंदर bit का direct address नहीं होता.
आज के लिए इतना ही. अगली बार हम ये देखेंगे कि इस Memory में इतने variable store कैसे होते हैं उसके बाद pointer सीखेंगे. अगला लेख पढ़ने से पहले Binary to Decimal Conversion सीख लें और दो Binary number को जोड़ना भी सीख लें.




 Memory
आज Hindi के इस C/C++ programming language tutorial को आगे बढ़ाते हुए हम Memory के बारे में थोडा और जानेंगे. पिछली बार हमने यह जाना कि computer एक बार में 1 byte(8 bits) read करता है. चूंकि हर 1 bit में 0 या 1 में से कुछ store हो सकता है इसलिए 1 byte में 00000000 से लेकर 11111111 तक की कोई भी संख्या (8 अंको की binary संख्या) store हो सकती है. लिखने और पढ़ने में 00000000 और 11111111 आसान नहीं है इसलिए हम इसे decimal में convert करके पढते हैं.
00000000 = 0 (in decimal) 
11111111 = 28 -1 = 255 (in decimal) 
इसलिए इस 8 bit या 1 byte में 0 से 255 तक की कोई भी संख्या store हो सकती है.
इसी तरह अगर हमें और ज्यादा बड़ी संख्या store करना हो तो हम 2 byte को एक साथ लेकर उसमे store करेंगे. 2 byte में 00000000 00000000 से 11111111 11111111 यानी 0 से 65535 तक कि संख्या store हो सकती है. अब हम देखते हैं कि विभिन्न datatype किस तरह से store किये जाते हैं.
* char: ASCII table को देखिये इसमें हर एक अक्षर(character) के सामने एक Decimal संख्या लिखी हैं. जब हम char variable में कोई अक्षर store करते हैं तो computer उस अक्षर के सामने वाली संख्या को store कर देता है. जैसे कि अगर हम 'a' store करते हैं तो उसके सामने लिखी संख्या 97(01100001) store हो जायेगी. उस table के अनुसार किसी भी अक्षर को store करने के लिए 255 से बड़ी संख्या की जरूरत नहीं है इसलिए char को store करने के लिए 1 byte memory कि जरूरत होती है.
* short int: short int variable 2 byte(16 bits) में store होता है. 2 byte में 0 से 65535(216-1) तक कि संख्या store कर सकते हैं. चूंकि short int negative value भी ले सकता है इसलिए यह -32768(-215) से 32767(215-1) तक के मान ले सकता है.
* unsigned short int: यह भी 2 byte कि जगह लेता है परन्तु negative value नहीं ले सकता इसलिए 0 से 65535 तक के मान ले सकता है.
* int: यह 4 byte लेता है और negative value भी ले सकता है इसलिए -231 से 231-1 तक की value ले सकता है.
* unsigned int: यह भी 4 byte लेता है परन्तु केवल positive value इसलिए 0 से 232-1 तक की value ले सकता है. 
* float: इसके store करने का format complex है क्योंकि यह दशमलव value भी ले सकता है. यह 4 byte लेता है.
* double: यह 8 byte लेता है और दशमलव value भी ले सकता है.
* इसी  तरह कुछ और भी datatype होते हैं जिनके बारे में जानना अभी आवश्यक नहीं है.
पिछली बार हमने देखा था कि computer, memory को एक एक byte read कर सकता है. हर byte का एक address होता है जैसे पहली byte का address 0, दूसरी byte का address 1... इस तरह से. जब computer किसी variable की value memory में कहीं किसी byte पर लिखता है तो उस byte का address भी याद रखता है. अगर कोई variable(जैसे int) एक से ज्यादा byte लेता है तो continuous store करते हुए पहली byte का address याद रखा जाता है. जैसे कि अगर int(4 bytes) 101st byte से 104th byte तक store हुआ है तो इस int का address 101 हुआ.
अब आप pointer के बारे में जानने के लिए ready है. अगली बार हम pointer के बारे में पढेंगे.




Memory II
आज Hindi के इस C/C++ programming language tutorial को आगे बढ़ाते हुए हम pointer के बारे में जानेंगे जो C/C++ में सबसे कठिन माना जाता है. 
What is Pointer in C/C++ programming language
इससे पहले हम यह जान चुके हैं कोई भी variable Computer की memory में किस तरह से store होता है. जहाँ store होता है उसका address भी होता है जो यह बताता है कि variable की value memory में कहाँ stored है. इस address को ही pointer कहते हैं. C/C++ programming language हमें यह सुविधा देती है कि हम किसी variable का address जान सकें(variable का address = वह Memory address/location जहाँ variable की value stored है). C/C++ programming language में किसी भी variable का address जानने के लिए & का use करते हैं. जैसे कि अगर कोई variable int x; है तो x का address &x से मिल जायेगा. जिस तरह से हम int, char, float etc को variable में store कर लेते हैं उसी तरह किसी variable के address को भी. इसके लिए एक नया datatype होता है जो address store करने के काम आता है जिस तरह से integer store करने के लिए int datatype का use होता है. किसी int variable का address store करने के लिए int* datatype का use करते हैं. इसी तरह char variable का address store करने के लिए char* datatype का use करते हैं. नीचे एक छोटा सा example यह show कर रहा है कि किसी variable में दूसरे variable का address कैसे store करते हैं. 
int x = 5;
int* p;
p = &x
यहाँ पहले एक int variable x define किया है, फिर p ऐसा variable declare किया है जो किसी int का address store करता है. फिर p variable में x का address डाल दिया है.(जैसा कि हम जानते हैं कि किसी भी variable का address जानने के लिए & का use करते हैं.) 
अब हमारे पास एक variable p है जो कि int* type का है और उसमे x का address stored है - means p को print करेंगे तो x का address print हो जायेगा.(ऊपर दिखाए गए अनुसार यहाँ पर x का address 3 है परन्तु अलग अलह time पर C/C++ program run करने पर address अलग अलग आएगा) यदि हमें यह जानना है कि p में जिस Memory का address लिखा हुआ उस memory पर क्या stored है तो *p का use करते हैं(यहाँ p में उस memory का address है जहाँ x है और उस memory यानि x में 5 stored है इसलिए *p यहाँ पर 5 देगा. इसका एक छोटा सा example देखते हैं. इस example को अपने अनुसार change करके चलाकर देखें और experiement करें. 
#include <stdio.h>
int main() {
  int x = 5;
  int* p = &x;
  printf("x = %d ",x);
  printf("address of x = %d ", p);
  printf("value at location p = %d ", *p);
  scanf("%d", &x);
  return 0;
}
आज के लिए इतना ही. अगले topic में Hindi में C/C++ tutorial को आगे बढ़ाते हुए pointer के use देखेंगे.

No comments:

loading...
Powered by Blogger.