Wednesday, May 6, 2009

सीखिए सी - 20 : सशर्त कथन ___ ?___ : ___

अभ्यास – 2 का हल

प्रोग्राम – 10
--------------------------------
/*Abhyas 2 ka hal */

#include <stdio.h>
#include <conio.h>

void main()
{

clrscr();

float praptank;

printf("Batayiye, pariksha me kitne ank aaye: ");
scanf("%f", &praptank);
if(praptank >= 60)
{
printf("\nFirst Division.");
}

else if (praptank >=50)
{
printf("\nSecond Division.");
}
else if(praptank >=40)
{
printf("\nThird Division.");
}
else
{
printf("\nFail.");
}
getch();
}
-------------------------------


आउटपुट
-------------------------------
Batayiye, pariksha me kitne ank aaye: 65
First Division.
Batayiye, pariksha me kitne ank aaye: 54
Second Division.
Batayiye, pariksha me kitne ank aaye: 45
Third Division
Batayiye, pariksha me kitne ank aaye: 35
Fail.
-------------------------------

अब आपने सीख लिया है कि सी प्राग्रामों में if ... else संरचना की मदद से किस तरह विशाखन को अंजाम दिया जाता है।

सी में विशाखन लाने के कुछ अन्य तरीके भी हैं, यथा ? प्रचालक और switch संरचना। इनमें से ? प्रचालक, जिसे सशर्त कथन (conditional statement) कहा जाता है, अधिक सरल है, और उसका विवेचन हम इस लेख में करेंगे। switch संरचना को ठीक से समझने के लिए continue, break और exit कथनों की थोड़ी जानकारी प्राप्त करना आवश्यक है। इन कथनों की जानकारी हम आवर्तन के बारे में सीखने के बाद प्राप्त करेंगे, और उसके बाद switch को भी समझेंगे।

? प्रचालक का रूप इस तरह होता है।

तार्किक कथन ? व्यंजक 1 : व्यंजक 2

यानी, इसके तीन भाग होते हैं, जिन्हें ? और : द्वारा अलगाया हुआ होता है।

पहला भाग एक तार्किक व्यंजक होता है, जिसका मूल्यांकन पहले होता है और इसके परिणाम स्वरूप सही (1) या गलत (0) का मान प्राप्त होता है। तार्किक कथन के मूल्यांकन से यदि सही का मान आए, तो व्यंजक 1 में विद्यमान मान प्राप्त होता है, और यदि गलत का मान आए, तो व्यंजक 2 का मान होता है।

स्पष्ट ही सशर्त कथनों के प्रयोग से केवल दो विकल्पों को संभाला जा सकता है। दो से अधिक विकल्प होने पर if... else अथवा switch कथनों का सहारा लेना अनिवार्य हो जाता है।

आइए, सशर्त कथनों को एक प्रोग्राम के जरिए समझते हैं।

प्रोग्राम -11
-------------------------------
/* ? prachalak (conditonal statement) ka udaharan */

#include <stdio.h>
#include <conio.h>

void main()
{
clrscr();

float praptank;
char parinaam;

printf("\nPariksha me kitne ank aaye: ");
scanf("%f", &praptank);

result = (praptank>=40) ? 'P' : 'F';

printf("\nParinaam: %c", result);

getch();
}
-------------------------------

आउटपुट
-------------------------------
Pariksha me kitne ank aaye: 56
Parinaam: P
Pariksha me kitne ank aaye: 34
Parinaam: F
-------------------------------

इस प्रोग्राम में दो राशियां घोषित की गई हैं, praptank जो float प्रकार की राशि है, और parinaam जो char प्रकार की राशि है। scanf के जरिए praptank में प्राप्तांक का मान जमा किया जाता है।

इसके बाद की पंक्ति को ध्यान पूर्वक देखिए। आपकी सुविधा के लिए उसे यहां दुबारा दिया जा रहा है –

result = (praptank>=40) ? 'P' : 'F';

इसमें ? प्रचालक का उपयोग किया गया है। क्या आप इस प्रचालक में विद्यमान तीन व्यंजकों को पहचान पाएं? वे हैं –
1. (praptank>=40)
2. 'P'
3. 'F'

प्रोग्राम की यह पंक्ति इस तरह से काम करती है –

सबसे पहले praptank >= 40 का मूल्यांकन किया जाता है। यदि praptank 40 या उससे बड़ा हुआ, तो इस व्यंजनक को 1 का मान मिलता है, यानी यह व्यंजन सही ठहरता है। यदि praptank 40 से कम हुआ, तो इस व्यंजक को 0 का मान मिलता है, यानी यह व्यंजक गलत ठहरता है। यदि praptank >= 40 का मान 1 हो, तो result में P मान रख दिया जाता है। यदि praptank >= 40 का मान 0 हो, तो result में F मान रख दिया जाता है।

सशर्त कथन, यानी ? प्रचालक हमेशा कोई एक मान लौटाता है। यदि उसकी प्रथम उक्ति का मान 1 है, तो वह ? के बाद वाला मान लौटाता है, और यदि प्रथम उक्ति का मान 0 है, तो : के बाद वाला मान। इस मान को किसी राशि में पकड़ा जा सकता है। उपर्युक्त उदाहरण में इस मान को result राशि में पकड़ा गया है। इसके लिए = प्रचालक का प्रयोग किया है। यह अपने दाहिनी ओर के मान को (इस उदाहरण में सशर्त कथन द्वारा लौटाए गए मान को) अपने बाईं ओर की राशि में जमा करता है, जो यहां result है।

सशर्त कथन के बाद वाला prinft उक्ति result के मान को दर्शाता है।

सशर्त कथन सी की उन विरल उक्तियों में से एक है जिन्हें त्रिपक्षीय (ternary) प्रचालक कहा जाता है, यानी ये तीन राशियों पर काम करते हैं। =, &&, / आदि अधिकांश अन्य प्रचालकों में केवल दो पक्ष ही होते हैं, बायां पक्ष (lvalue) और दायां पक्ष (rvalue)। लेकिन सशर्त कथन में ? और : अलगाए हुए तीन पक्ष होते हैं।

1 comment:

  1. sir, muje HTML sikhna h. coz meri " O Level" ki exam january me h.
    sir, PLZ help me
    \

    ReplyDelete