छद्म कोड में क्या होता है: = मतलब?


25

एल्गोरिदम कार्यान्वयन के अनुभाग में निम्नलिखित कोड हैं:

// Return RC low-pass filter output samples, given input samples,
 // time interval dt, and time constant RC
 function lowpass(real[0..n] x, real dt, real RC)
   var real[0..n] y
   var real α := dt / (RC + dt)
   y[0] := x[0]
   for i from 1 to n
       y[i] := α * x[i] + (1-α) * y[i-1]
   return y

क्या है: = मतलब?


2
मैंने सीखा कि यह दर्शन और तर्क संकेतन से था, जो इसे ": = परिभाषित" के रूप में परिभाषित करता है, इसलिए x: = 1 x को परिभाषित किया गया है 1.
पैट्रिक ह्यूजेस

3
जब मैंने 1990 में एपी कंप्यूटर साइंस लिया, तो हमने पास्कल को अपनी सीखने की भाषा के रूप में इस्तेमाल किया। मैंने हमेशा :="के बराबर हो जाता है" का उच्चारण किया। मैं वास्तव में इसे पसंद करता हूं =और ==प्राकृतिक भाषा में "=" के बाद से एक तुलना ऑपरेटर (या कम से कम सच्चाई का बयान है)
TecBrat

जवाबों:


59

: = भाषाओं के लिए असाइनमेंट ऑपरेटर है जो एकल बराबरी का उपयोग करता है जो समानता परीक्षण पर हस्ताक्षर करता है। उन भाषाओं में सबसे प्रसिद्ध पास्कल है। सी के प्रभाव के कारण अधिकांश भाषाओं ने असाइनमेंट के लिए = और परीक्षण के लिए == पर स्विच किया। कुछ पुराने ग्रंथ और लेखक जिन्हें इस तरह की शैलियों में प्रशिक्षित किया गया था: = स्यूडोकोड के लिए। आप कभी-कभी तीर <- साथ ही असाइनमेंट के लिए भी देखते हैं ।

लेख से:

input: an array a of length n with array elements numbered 0 to n − 1

inc ← round(n/2)
while inc > 0 do:
    for i = inc .. n − 1 do:
        temp ← a[i]
        j ← i
        while j ≥ inc and a[j − inc] > temp do:
            a[j] ← a[j − inc]
            j ← j − inc
        a[j] ← temp
    inc ← round(inc / 2.2)

कुछ आधुनिक भाषाएं असाइनमेंट के लिए तीर का उपयोग करती हैं; सबसे विशेष रूप से आर , जो स्थानीय असाइनमेंट के लिए एकल बराबर (=) का उपयोग करते हुए वैश्विक असाइनमेंट के लिए इसका उपयोग करता है।

सेबेस्टा के कॉन्सेप्ट ऑफ़ प्रोग्रामिंग लैंग्वेज और डॉ। केएन किंग के क्लास नोट्स से हम सीखते हैं कि असाइनमेंट के मानक C या पास्कल की तुलना में बहुत पीछे जाते हैं। ऐसा प्रतीत होता है कि 1958 में जब अल्गोल को डिजाइन किया जा रहा था, तो इसका उपयोग करने का निर्णय लिया गया था: = असाइनमेंट के लिए। यह स्मारक अमेरिकी और यूरोपीय प्रतिनिधियों से बना था। समिति के कुछ जर्मन कोनराड ज़ूस की प्लंककुल भाषा से परिचित थे (जिसे द्वितीय विश्व युद्ध के दौरान ड्राफ्ट किया गया था लेकिन 1972 तक प्रकाशित नहीं किया गया था और 2005 तक लागू नहीं किया गया था) और चाहते थे कि असाइनमेंट उस भाषा की प्रस्तावित असाइनमेंट विधि का पालन करेंb+c => aजहां b + c को a को सौंपा गया है। समिति ने इसे =: को इस आधार पर बदल दिया कि जिस समय कीपंच नामक कार्यक्रम में प्रवेश करने की विधि का उपयोग करने के लिए ">" नहीं था। इसलिए उन्होंने बराबरी के समझौते पर समझौता किया। हालांकि, अमेरिकियों को फोरट्रान (यह 1990 तक कम मामला नहीं था) से परिचित होने के नाते असाइनमेंट बाईं ओर संचालित करना चाहता था, क्योंकि फोरट्रान ने ऐसा कैसे किया।

इसलिए वे इसे बदलने में कामयाब रहे: = इसके बजाय और असाइनमेंट को फोरट्रान की शैली में दाईं ओर के बजाय बाईं ओर संचालित किया गया था (एक ज्ञात कार्यान्वित भाषा होने के नाते) प्लैंककुल के बजाय (जर्मनी के बाहर लगभग एक अज्ञात भाषा और कार्यान्वित नहीं) । अल्गोल 60 ने पास्कल और सी सहित सभी प्रमुख बाद की अनिवार्य भाषाओं को दृढ़ता से प्रभावित किया। इस तरह पास्कल ने असाइनमेंट के लिए ALGOL के सिंटैक्स को रखा और दोनों ने असाइनमेंट की वामता को बनाए रखा।

ALGOL को पढ़ने के लिए आसान और गणितीय अंकन के करीब होने के लिए डिज़ाइन किया गया था। यह अगले 20+ वर्षों के लिए पत्रिकाओं में एल्गोरिदम लिखने के लिए वास्तविक (और मूल रूप से डी ज्यूर) मानक था। इसलिए, 1960 से 1980 के दशक तक शिक्षित प्रशिक्षक और कंप्यूटर वैज्ञानिक संकेतन की शैली से परिचित रहे होंगे।

1964 में आईबीएम 029 कीपंच की रिहाई ने > और <वर्णों के लिए अनुमति दी, इस प्रकार दूसरों में सी में उनके शामिल होने का संकेत दिया।


1
लापता अर्धविराम और फ़ंक्शन रिटर्न के अलावा यह कोड वैसे भी PASCAL, MODULA या कुछ अन्य Wirth भाषा जैसा दिखता है।
इंगो

7
अधिकांश छद्म कोड :=असाइनमेंट के लिए उपयोग करते हैं। गणितीय पृष्ठभूमि वाले लोग भी इसका समर्थन करेंगे।
oenone

3
बस यह जोड़ने के लिए कि यह अभी भी बहुत पीएल / एसक्यूएल में व्यावहारिक रूप से उपयोग किया जाता है।
जलयन्

1
पता नहीं क्यों, लेकिन असाइनमेंट के रूप में छोड़ दिया तीर मुझे पागल करता है 9
shabunc

2
पास्कल (और बाकी "द वीर्थ भाषाओं") को यह ALGOL से मिला, जो इसे गणितीय अंकन से मिला।
मेसन व्हीलर

18

बस एक त्वरित और पीडियाटिक नोट। स्यूडोकोड काफी अनौपचारिक है, इसलिए ": =" का मतलब केवल वही है जो आप इसका मतलब चाहते हैं। जैसा कि अन्य लोगों ने कहा है, विशिष्ट भाषाएं जैसे कि पास्कल का उपयोग ": =" असाइनमेंट के लिए समानता के लिए "=" के साथ भ्रम से बचने के लिए, जबकि अन्य भाषाएं "=" और "==" के संयोजन का उपयोग एक ही उद्देश्य के लिए करती हैं।

जहाँ तक वास्तविक स्यूडोकोड का संबंध है, आप "=", "==", "बराबर", "को", ": =", "है", "प्राप्त", या जो भी आपकी नाव तैरती है, का उपयोग कर सकते हैं। जब तक आप सुसंगत हैं, और उपयोग और संदर्भ आपके pseudocode के भीतर है स्पष्ट है।


6

मैं अनुमान लगा रहा हूं कि यह असाइनमेंट है (मुझे लगता है कि यह डेल्फी में असाइनमेंट ऑपरेटर है), इसलिए y [0]: = x [0] में आप x [0] का मान असाइन कर रहे हैं [0]।

लेकिन AFAIK एक मानक छद्म कोड के रूप में ऐसी कोई चीज नहीं है , इसलिए सिद्धांत रूप में यह कुछ भी हो सकता है: =)।


8
@ लाउडसाइट: क्योंकि = पहले से ही एक बहुत अलग अर्थ है: समानता। एक ऑपरेटर का उपयोग करना जो पहले से ही कुछ अलग के लिए एक अच्छी तरह से समझा गया अर्थ है, बेहद बेवकूफ होगा।
जॉर्ग डब्ल्यू मित्तग

1
@ Jörg W Mittag वैसे मुझे लगता है कि यह इस बात पर निर्भर करता है कि इच्छित दर्शक कौन है। मैं अधिकांश डेवलपर्स (जावा, सी / सी ++, आदि ..) के लिए कल्पना करूँगा = इसका अर्थ है असाइनमेंट।

5
@loudsight: ज्यादातर डेवलपर्स तब पैदा भी नहीं हुए थे, जब पहला छद्म कोड लिखा गया था। उस समय यह ज्यादातर एक मजबूत गणितीय पृष्ठभूमि, जो एल्गोरिदम नीचे लिखा है, जो बनाता है से लोगों था :=स्वाभाविक पसंद है, क्योंकि गणितीय संकेतन में x := vअर्थ है "चलो xहो v" के रूप में करने का विरोध किया x = vहै, जो अर्थ है " xके बराबर होती है v" और इसलिए भ्रम की स्थिति का कारण होगा।
back2dos

8
यदि एक मानक छद्म कोड होता है, तो हम बहुत सारे छद्म छद्म कोड देखेंगे।

2
@ back2dos इत्यादि आज भी =असाइनमेंट के लिए उपयोग करना भ्रामक है। मुझे अभी भी याद है, बहुत पहले जब मैंने पहली बार प्रोग्राम करना सीखा था, तो यह देखना कितना भ्रामक था x = x + 1। एक बार जब आपने बुनियादी हाई-स्कूल गणित का अध्ययन कर लिया, तो x = x + 1बस असंभव विरोधाभासी अस्पष्टता की तरह दिखता है। आगे मैंने सामान्य पाठक के लिए कंप्यूटर विज्ञान पर एक उत्कृष्ट पुस्तक पढ़ी ( मुझे लगता है कि यह ऐसा था ) जो <-असाइनमेंट के लिए उपयोग किया जाता है। x <- x + 1समझने में बहुत आसान है।
मार्क जे

-1

आमतौर पर इसका मतलब वही होता है जो गणित में होता है: असाइनमेंट।


6
मेरे ज्ञान में गणित में "असाइनमेंट" जैसी कोई चीज नहीं है।
इंगो

7
गणित में, :=आमतौर पर "परिभाषा के अनुसार" या "परिभाषा के बराबर है" का अर्थ है।
oenone

3
@Ingo: "अभिव्यक्ति x के मान के लिए बिट पैटर्न को उस मेमोरी लोकेशन पर लिखें जिसका नाम y है" प्रोग्रामिंग भाषाओं में असाइनमेंट से पूरी तरह से अलग है। आप जो वर्णन करते हैं वह असाइनमेंट स्टेटमेंट्स को निष्पादित करने का एक संभावित कार्यान्वयन है।
back2dos

3
@ भारत: मैं असहमत हूं। अकेले तथ्य को बताएं, कि गुणों के मामले में, एक असाइनमेंट कॉल करता है, और यह तथ्य कि कोड का एक बड़ा हिस्सा आभासी मशीनों में या दुभाषियों द्वारा निष्पादित किया जाता है, बजाय सीधे "वर्तमान वास्तुकला" पर, यहां तक ​​कि चर के लिए असाइनमेंट अनुकूलन के कारण इस तरह के ऑपरेशन का परिणाम नहीं हो सकता है। कुछ अपवादों के साथ, एक भाषा को इसके विनिर्देशों के अनुसार उपयोग किया जाना चाहिए और इसके कार्यान्वयन के बारे में कुछ मान्यताओं पर आधारित नहीं होना चाहिए। आप सभी वास्तव में वेरिएबल्स को असाइनमेंट के बारे में कह सकते हैं कि y नाम वाला वेरिएबल एक्सप्रेशन x के मान से रिबाउंड है।
back2dos

3
@Ingo: नहीं, यह बकवास नहीं है। संकलित करना x := 1; y := 2; if (x = 1) y := 3जैसे कि यह सिर्फ y := 3एक उचित अनुकूलन था (यह मानते हुए कि बाद में x का उपयोग नहीं किया गया है)। 3 असाइनमेंट में से 2 स्थैतिक विश्लेषण के माध्यम से लागू किए जाते हैं। असाइनमेंट की आपकी "परिभाषा" एक कंबल बयान है, कि बस कई मान्यताओं के बिना पकड़ नहीं है इस शब्द की एक परिभाषा पर निर्भर नहीं होना चाहिए।
back2dos
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.