" esac
" कोड-ब्लॉक " case
बनाने के लिए " " एक पूर्व को समाप्त करता है "।
Algol68 में उनका उपयोग किया जाता है, आम तौर पर परिचय कीवर्ड के उल्टे चरित्र अनुक्रम को बाड़े को समाप्त करने के लिए उपयोग किया जाता है, आदि। ( if ~ then ~ else ~ fi, case ~ in ~ out ~ esac, for ~ while ~ do ~ od ).
मैं उन्हें "गार्डेड ब्लॉक" कहलाऊंगा, जो कि एग्जर डिक्स्ट्रा और उनकी गार्डेड कमांड लैंग्वेज के बाद होगा ।
od
संभवतः यूनिक्स "ओड" कमांड के पूर्व-अस्तित्व के कारण बॉर्न शेल में उपयोग नहीं किया गया था ।
इतिहास:
"संरक्षित ब्लॉक" विचार ALGOL 68 जैसे अंग्रेजी से आया है :
proc days in month = (int year, month)int:
case month in
31,
if year mod 4=0 ∧ year mod 100≠0 ∨ year mod 400=0 then 29 else 28 fi,
31, 30, 31, 30, 31, 31, 30, 31, 30, 31
esac;
सोवियत के अल्गोल 68 एलजीयू कार्यान्वयन ने ऐसा ही किया: अंग्रेजी में अल्गोल 68 के श्रद्धालु केस स्टेटमेंट को पढ़ता है case ~ in ~ out ~ esac
, सिरिलिक में यह पढ़ता है выб ~ в ~ либо ~ быв
।
फिर 1975 में Algol68 के कोड-ब्लॉक उनकी गार्डेड कमांड लैंग्वेज के लिए Edsger Dijkstra द्वारा लिए गए । जैसे
if a ≥ b → max := a
| b ≥ a → max := b
fi
मुमकिन है Dijstra काबू पाने के लिए "पहरा ब्लाकों" का इस्तेमाल किया झूलने किसी और अस्पष्टता में लागू Algol60 और में तो फिर से इंजीनियर सी प्रोग्रामिंग भाषा । (cf. पारी-कम संघर्ष। )
अंत में - Algol68 से - " esac
" यह 1977 में बनाया बॉर्न शैल (जहां की खोज esac
) के सौजन्य से स्टीफन आर बॉर्न जो एक प्रारंभिक Algol68 संकलक कहा जाता विकसित की थी ALGOL 68C ।
पारिवारिक रूप से स्टीफन ने मैक्रो.एच नामक "सी हेडर फ़ाइल" में भी इन्हीं गार्डेड ब्लॉक्स का उपयोग किया था
#define IF if(
#define THEN ){
#define ELSE } else {
#define ELIF } else if (
#define FI ;}
उल्लेखनीय सॉफ्टवेयर जीनियस लैंडोन कर्ट नोल और लैरी बेसल ने 1984 में स्टीव के मैक्रो.एचडी कोड पर ठोकर खाई, जबकि नेशनल सेमीकंडक्टर के जीनिक्स पोर्टिंग समूह में कार्यरत थे और इसके आवेदन को समझने के लिए संघर्ष किया। और इसलिए लैंडन और लैरी ने तब इंटरनेशनल ओब्सेस्ड सी कोड कॉन्टेस्ट बनाया ...
1984 से लेकर आज तक कई हजार अन्य "बेहतर" प्रोग्रामिंग भाषाएं हैं जो कि दिक्जस्ट्रा के गार्डेड कमांड का उपयोग नहीं करती हैं। और स्टीवन बॉर्न के उपयोग के बारे में उन्हें macro.h
अक्सर आईटी के "सॉफ्टवेयर डेवलपमेंट डिस्क्रिप्शन" में उद्धृत किया जाता है, क्योंकि वे व्याख्यान में सो नहीं रहे थे। :-)
esac
अंक के लिए सूचकांक प्रविष्टि बिल्कुल जहां यह होना चाहिए - उस रेखा को जो इसे परिभाषित करता है और दिखाता है कि इसकी आवश्यकता है।