सी मध्ये अनंत लूप
अनंत लूप म्हणजे काय?
एक अनंत लूप एक लूपिंग कन्स्ट्रक्शन आहे जी लूप संपुष्टात आणत नाही आणि लूप कायमची अंमलात आणते. याला अनिश्चित लूप किंवा अंतहीन लूप देखील म्हणतात. हे एकतर सतत आउटपुट किंवा आउटपुट तयार करते.
अनंत लूप कधी वापरायचा
वापरकर्ता स्वहस्ते अनुप्रयोगातून बाहेर येईपर्यंत वापरकर्ता इनपुट स्वीकारणार्या आणि सतत आउटपुट व्युत्पन्न करणार्या अनुप्रयोगांसाठी एक असीम लूप उपयुक्त आहे. खालील परिस्थितीत, या प्रकारचे लूप वापरले जाऊ शकते: सर्व ऑपरेटिंग सिस्टम अनंत लूपमध्ये चालतात कारण काही कार्य केल्यावर ते अस्तित्त्वात नाही. जेव्हा वापरकर्ता मॅन्युअली सिस्टम बंद करतो तेव्हाच हे अनंत लूपमधून बाहेर येते. सर्व्हरने सर्व क्लायंट विनंत्यांना प्रतिसाद दिला म्हणून सर्व सर्व्हर अनंत लूपमध्ये चालतात. जेव्हा प्रशासक स्वहस्ते सर्व्हर बंद करतो तेव्हाच हे अनिश्चित लूपमधून बाहेर येते. सर्व खेळ देखील अनंत लूपमध्ये चालतात. वापरकर्ता गेममधून बाहेर येईपर्यंत गेम वापरकर्त्याच्या विनंत्या स्वीकारेल. आम्ही विविध लूप स्ट्रक्चर्सद्वारे एक अनंत लूप तयार करू शकतो. खालील लूप स्ट्रक्चर्स आहेत ज्याद्वारे आपण अनंत लूप परिभाषित करू: लूपसाठी लूप असताना डो-पळवाट करा स्टेटमेंट वर जा सी मॅक्रो
लूपसाठी
चला 'लूप' साठी अनंत पाहूया. लूपसाठी अनंतची व्याख्या खाली आहे:
jaeMvh(; ;)
{
// Sarir cyaa D jaeMvh laupa.
}
आम्हाला माहित आहे की 'फॉर' लूपचे सर्व भाग पर्यायी आहेत आणि वरील पळवाटात आम्ही कोणत्याही अटीचा उल्लेख केलेला नाही; तर, ही लूप असीम वेळा कार्यान्वित करेल.
उदाहरण
#vaapara <PsaTidiAayaAae.Pca>
paunaZ mauqya()
{
jaeMvh(;;)
{
laiha("hWlaae jaavaaTpaEZMT");
}
vaapasakra 0;
}
वरील कोडमध्ये, आम्ही 'लूप अनंत काळासाठी' चालवितो, म्हणून "हॅलो जावाटपॉईंट" अनंत प्रदर्शित केले जाईल.
लूप असताना
आता, आम्ही थोडासा लूप वापरुन एक अनंत लूप कसा तयार करावा हे पाहू. लूप तर अनंतची व्याख्या खाली आहे:
jaeMvhpayaZMta(1)
{
// Sarir cyaa D laupa..
}
वरील लूपमध्ये आम्ही लूपच्या स्थितीत '1' ठेवले. आम्हाला माहित आहे की शून्य नसलेले पूर्णांक खरी स्थितीचे प्रतिनिधित्व करते तर '0' चुकीच्या स्थितीचे प्रतिनिधित्व करते.
चला एक साधे उदाहरण पाहूया.
#vaapara <PsaTidiAayaAae.Pca>
paunaZ mauqya()
{
paunaZ mai=0;
jaeMvhpayaZMta(1)
{
mai++;
laiha("i Aahe :%paunaZ",mai);
}
vaapasakra 0;
}
वरील कोडमध्ये, आम्ही थोडीशी लूप परिभाषित केली आहे, जी असीम वेळा चालवते कारण त्यात कोणतीही अट नसते. 'मी' चे मूल्य अनेक वेळा असीम संख्येने अद्यतनित केले जाईल.
kra .. लूप
Do.. असताना लूपचा वापर अनंत लूप तयार करण्यासाठी देखील केला जाऊ शकतो. अनंत kra.. लूप तयार करण्यासाठी खालील वाक्यरचना आहे.
kra
{
// Sarir cyaa D laupa..
}jaeMvhpayaZMta(1);
वरील डू .. लूपच्या स्थितीत '1' मूल्य प्रदान केल्यामुळे लूप असीम स्थितीचे प्रतिनिधित्व करते. आम्हाला आधीच माहित आहे की शून्य नसलेले पूर्णांक खरी स्थितीचे प्रतिनिधित्व करते, म्हणून ही लूप अनंत वेळा चालवेल.
गोटो स्टेटमेंट
आम्ही अनंत लूप परिभाषित करण्यासाठी GOTO स्टेटमेंट देखील वापरू शकतो.
AnaMtaRlaupa;
// Sarir sTeTmaenT.
jaa AnaMtaRlaupa;
AnaMtaRlaupa;
// Sarir sTeTmaenT.
jaa AnaMtaRlaupa;
वरील कोडमध्ये, GOTO स्टेटमेंट नियंत्रणास अनंत लूपमध्ये हस्तांतरित करते.
मॅक्रो
आम्ही मॅक्रो स्थिरतेच्या मदतीने अनंत लूप देखील तयार करू शकतो. चला उदाहरणाद्वारे समजूया.
#vaapara <PsaTidiAayaAae.Pca>
#naioaaZrita_kra AnaMta jaeMvh(;;)
paunaZ mauqya()
{
AnaMta
{
laiha("hWlaae");
}
vaapasakra 0;
}
maoyae D varila kaed, Aamhi Aahe pariBaaSaita A maWkzae naamaaMkita mhnauna 'AnaMta', Aanai tyaacae maulya Aahe 'jaeMvh(;;)'. jaevhahi D SabD 'AnaMta' yaetae maoyae A kayaZkzma maga tae vaila baiEZ baDlalae sah A 'jaeMvh(;;)'.
आतापर्यंत आम्ही अनंत लूप परिभाषित करण्याचे विविध मार्ग पाहिले आहेत. तथापि, अनंत लूपमधून बाहेर येण्यासाठी आम्हाला काही दृष्टिकोन आवश्यक आहे. अनंत लूपमधून बाहेर येण्यासाठी, आम्ही ब्रेक स्टेटमेंट वापरू शकतो.
चला उदाहरणाद्वारे समजूया.
#vaapara <PsaTidiAayaAae.Pca>
paunaZ mauqya()
{
Axar saiPca;
jaeMvhpayaZMta(1)
{
saiPca=Axar_vaaca();
jar(saiPca=='Pna')
{
YaaMbavaa;
}
laiha("hWlaae");
}
vaapasakra 0;
}
वरील कोडमध्ये, आम्ही डब्ल्यूआयएस लूप परिभाषित केले आहे, जे आम्ही की 'एन' दाबल्याशिवाय असीम वेळा कार्यान्वित करेल. आम्ही लूपमध्ये 'आयएफ' स्टेटमेंट जोडले आहे. 'If' स्टेटमेंटमध्ये ब्रेक कीवर्ड आहे आणि ब्रेक कीवर्ड लूपच्या बाहेर नियंत्रण आणतो.
नकळत अनंत लूप
कधीकधी अशी परिस्थिती उद्भवते जिथे कोडमधील बगमुळे अनजाने अनंत लूप होते. जर आपण नवशिक्या असाल तर त्यांना शोधणे फार कठीण होते. खाली नकळत अनंत पळवाट शोधण्यासाठी काही उपाय आहेत: आम्ही अर्धविरामांची काळजीपूर्वक तपासणी केली पाहिजे. कधीकधी आम्ही अर्धविराम चुकीच्या ठिकाणी ठेवतो, ज्यामुळे अनंत लूप होतो.
#vaapara <PsaTidiAayaAae.Pca>
paunaZ mauqya()
{
paunaZ mai=1;
jaeMvhpayaZMta(mai<=10);
{
laiha("%paunaZ", mai);
mai++;
}
vaapasakra 0;
}
वरील कोडमध्ये, आम्ही अर्धविरामाच्या स्थितीनंतर अर्धविराम ठेवले ज्यामुळे अनंत लूप होते. या अर्धविरामामुळे, लूपची अंतर्गत संस्था कार्यान्वित होणार नाही. आम्ही तार्किक परिस्थिती काळजीपूर्वक तपासली पाहिजे. कधीकधी चुकून आम्ही रिलेशनल ऑपरेटर (= =) ऐवजी असाइनमेंट ऑपरेटर (=) ठेवतो.
#vaapara <PsaTidiAayaAae.Pca>
paunaZ mauqya()
{
Axar saiPca='Pna';
jaeMvhpayaZMta(saiPca='vaaya')
{
laiha("hWlaae");
}
vaapasakra 0;
}
वरील कोडमध्ये, आम्ही असाइनमेंट ऑपरेटर (सीएच = 'वाय') वापरतो ज्यामुळे लूप अनंत वेळा अंमलबजावणी होते. आम्ही चुकीची लूप स्थिती वापरतो ज्यामुळे लूप अनिश्चित काळासाठी कार्यान्वित होते.
#vaapara <PsaTidiAayaAae.Pca>
paunaZ mauqya()
{
jaeMvh(paunaZ mai=1;mai>=1;mai++)
{
laiha("hWlaae");
}
vaapasakra 0;
}
उपरोक्त कोड 'लूपसाठी' असीम संख्येची अंमलबजावणी करेल. आम्ही अट (i> = 1) ठेवली आहे, जी प्रत्येक स्थितीसाठी नेहमीच खरे असेल, याचा अर्थ असा आहे की "हॅलो" अनंत मुद्रित केले जाईल. जेव्हा आम्ही नेस्टेड लूपमध्ये ब्रेक कीवर्ड वापरत असतो तेव्हा आपण सावधगिरी बाळगली पाहिजे कारण ती संपूर्ण लूप नव्हे तर जवळच्या लूपची अंमलबजावणी संपुष्टात आणते.
#vaapara <PsaTidiAayaAae.Pca>
paunaZ mauqya()
{
jaeMvhpayaZMta(1)
{
jaeMvh(paunaZ mai=1;mai<=10;mai++)
{
jar(mai%2==0)
{
YaaMbavaa;
}
}
}
vaapasakra 0;
}
वरील कोडमध्ये, आम्ही आतील लूपमध्ये ब्रेक कीवर्ड वापरतो म्हणून लूपला असीम संख्या अंमलात आणली जाईल. हा ब्रेक कीवर्ड बाह्य लूपमधून नव्हे तर अंतर्गत लूपमधून नियंत्रण आणेल. जेव्हा आपण लूपच्या आत फ्लोटिंग-पॉईंट मूल्य वापरत असतो तेव्हा आपण खूप सावधगिरी बाळगली पाहिजे कारण आपण फ्लोटिंग-पॉईंट त्रुटींना कमी लेखू शकत नाही.
#vaapara <PsaTidiAayaAae.Pca>
paunaZ mauqya()
{
ApaunaZ PKsa = 3.0;
jaeMvhpayaZMta (PKsa != 4.0) {
laiha("x = %ApaunaZ\n", PKsa);
PKsa += 0.1;
}
vaapasakra 0;
}
वरील कोडमध्ये, लूप असीम वेळा चालवेल कारण संगणक वास्तविक मूल्य म्हणून फ्लोटिंग-पॉईंट मूल्याचे प्रतिनिधित्व करतो. संगणक 3.999999 किंवा 4.000001 म्हणून 4.0 च्या मूल्याचे प्रतिनिधित्व करेल, म्हणून अट (x! = 4.0) कधीही खोटे होणार नाही. या समस्येचे निराकरण (के <= 4.0) म्हणून अट लिहिणे आहे. अनंत लूप्स योग्यरित्या नियंत्रित किंवा डिझाइन केलेले नसल्यास समस्या उद्भवू शकतात, ज्यामुळे प्रोग्राम किंवा सिस्टममध्ये जास्त सीपीयू संसाधनाचा वापर आणि अनुवांशिकता उद्भवू शकते. आवश्यकतेनुसार अनंत पळवाट बाहेर काढण्यासाठी यंत्रणा अंमलात आणणे महत्त्वपूर्ण आहे. नकळत अनंत पळवाट टाळण्यासाठी लूपमध्ये बाहेर पडण्याच्या अटींचा समावेश करण्याचा सल्ला दिला जातो. या अटी वापरकर्ता इनपुट, विशिष्ट कार्यक्रम किंवा ध्वज किंवा वेळ मर्यादेवर आधारित असू शकतात. आपला हेतू पूर्ण केल्यावर किंवा विशिष्ट निकषांची पूर्तता केल्यानंतर योग्य बाहेर पडण्याच्या अटींचा समावेश करून लूप संपुष्टात येईल.
अनंत पळवाट रोखण्यासाठी तंत्रे:
जरी असीम लूप कधीकधी हेतू असू शकतात, परंतु ते वारंवार अनावश्यक असतात आणि प्रोग्राम फ्रीझ किंवा क्रॅश होऊ शकतात. प्रोग्रामर अनवधानाने अनंत लूप टाळण्यासाठी खालील रणनीती वापरू शकतात: टर्मिनेशन अट जोडा: लूपची एक अट आहे याची खात्री करा जी शेवटी चुकीच्या गोष्टींचे मूल्यांकन करू शकते, ज्यामुळे ते समाप्त होऊ शकते. एक काउंटर वापरा: पुनरावृत्तीच्या संख्येवर एक टोपी स्थापित करा आणि प्रत्येक लूप पुनरावृत्तीसह वाढणार्या काउंटरची अंमलबजावणी करा. अशाप्रकारे, आवश्यक अट समाधानी नसली तरीही, लूप शेवटी संपेल. कालबाह्य प्रणालीचा परिचय द्या: जर वेळ मर्यादा गाठली गेली तर लूप थांबविला जाईल. किती वेळ उत्तीर्ण झाला आहे हे मोजण्यासाठी टाइमर किंवा सिस्टम फंक्शन्स वापरा. बाह्य किंवा वापरकर्ता-प्रदान केलेले ट्रिगर वापरा: विशिष्ट वापरकर्त्याच्या इनपुट किंवा बाहेरील इव्हेंटच्या प्रतिसादात समाप्त होण्यासाठी लूप डिझाइन करा. विशिष्ट प्रकरणांमध्ये, अनंत लूप हेतुपुरस्सर विशेष अल्गोरिदम किंवा सिस्टम-स्तरीय ऑपरेशन्समध्ये कार्यरत असू शकतात. उदाहरणार्थ, रिअल-टाइम सिस्टम किंवा एम्बेडेड सिस्टम इनपुटचे निरीक्षण करण्यासाठी किंवा विशिष्ट कार्ये सतत कार्यान्वित करण्यासाठी असीम लूपचा वापर करतात. तथापि, सिस्टमच्या कार्यक्षमतेवर किंवा प्रतिसादावर कोणतेही प्रतिकूल परिणाम टाळण्यासाठी अशा पळवाट योग्यरित्या व्यवस्थापित करण्यासाठी काळजी घेणे आवश्यक आहे. आधुनिक प्रोग्रामिंग भाषा आणि विकास फ्रेमवर्क बर्याचदा असीम पळवाट अधिक कार्यक्षमतेने हाताळण्यासाठी अंगभूत यंत्रणा ऑफर करतात. उदाहरणार्थ, ग्राफिकल यूजर इंटरफेस (जीयूआय) फ्रेमवर्क इव्हेंट-चालित आर्किटेक्चर प्रदान करतात जेथे प्रोग्राम्स वापरकर्त्याच्या इनपुट किंवा सिस्टम इव्हेंटची प्रतीक्षा करतात, ज्यामुळे स्पष्ट अनंत लूपची आवश्यकता दूर होते. अनंत लूप वापरताना सावधगिरी बाळगणे आणि विवेकबुद्धी करणे आवश्यक आहे. जेव्हा ते फक्त कार्यरत असावेत जेव्हा अनिश्चित रनिंग रनिंग लूपचे स्पष्ट आणि वैध कारण असेल आणि प्रोग्राम किंवा सिस्टमवर कोणताही नकारात्मक प्रभाव टाळण्यासाठी पुरेसे सेफगार्ड्स लागू करणे आवश्यक आहे.
निष्कर्ष:
शेवटी, सी मधील एक अनंत पळवाट एक लूपिंग कन्स्ट्रक्शन बनवते जे कधीही संपत नाही आणि कायमचे चालू राहते. लूप, लूप, डू-व्हेल लूप, गोटो स्टेटमेंट किंवा सी मॅक्रो यासारख्या वेगवेगळ्या लूप स्ट्रक्चर्सचा वापर तयार करण्यासाठी केला जाऊ शकतो. ऑपरेटिंग सिस्टम, सर्व्हर आणि व्हिडिओ गेम सर्व वारंवार असीम पळवाट वापरतात कारण ते मॅन्युअल समाप्त होईपर्यंत सतत मानवी इनपुट आणि आउटपुटची मागणी करतात. दुसरीकडे, कोड दोषांमुळे नकळत अनंत लूप होऊ शकतात, जे ओळखणे कठीण आहे, विशेषत: नवख्या लोकांसाठी. अर्धविराम, तार्किक निकष आणि लूप टर्मिनेशन आवश्यकतांचा काळजीपूर्वक विचार करणे आवश्यक आहे अनवधानाने अनंत अनंत पळवाट टाळण्यासाठी. अनंत लूप्स अयोग्य अर्धविराम प्लेसमेंट किंवा रिलेशनल ऑपरेटरच्या जागी असाइनमेंट ऑपरेटरच्या वापरामुळे होऊ शकतात. चुकीच्या लूपच्या अटी ज्या नेहमीच सत्यतेचे मूल्यांकन करतात त्याचप्रमाणे अनंत पळवाट होऊ शकतात. याउप्पर, ब्रेक कीवर्ड फक्त सर्वात जवळचा लूप संपत असल्याने, नेस्टेड लूपमध्ये वापरताना सावधगिरी बाळगणे आवश्यक आहे. याउप्पर, ते लूप टर्मिनेशन अट पूर्ण करणे अशक्य करतात, फ्लोटिंग-पॉईंट नंबरसह कार्य करताना फ्लोटिंग-पॉईंट चुका विचारात घ्याव्यात.