2012-01-05 14 views
10

साथ पाश कार्य करें:फोरट्रान मैं एक फ़ोरट्रॉन 77 टुकड़ा है कि इस तरह दिखता है आंतरिक गोटो

DO 1301 N=NMLK-2,2,-1              
     Some code... 
     IF(NB1(N).EQ.50) GOTO 1300                
     Some code... 
     IF(BS(N).EQ.0.0) GOTO 1301             
     some code...                
     GOTO 1301                 
    1300 NW(M)=NB1(N)                
     Some code...                
    1301 CONTINUE 

जब यह गोटो 1301 बयान मारता है, पाश की अगले चरण को यह कूद करता है या यह पाश से बाहर निकलें है ? जहां तक ​​मैं समझता हूं कि वापसी कीवर्ड कुछ भी नहीं करता है, इसलिए मुझे लगता है कि यह सिर्फ लूप से बाहर निकल जाएगा और लेबल 1301 से कोड निष्पादन जारी रखेगा, क्या यह सही है?

मैं सी # करने के लिए इस का अनुवाद कर रहा हूँ और अगर यह बराबर है सोच रहा हूँ:

for (N = NMLK; N >= 2; N--) 
{ 
    Some code... 
    if (NB1[N] == 50) 
     goto l1300; 
    Some code... 
    if (BS[N] == 0) 
     return; 
    Some code... 
    return; 
l1300: 
    NW[M] = NB1[N]; 
    Some code... 
} 

या अगर मैं होना चाहिए बजाय "वापसी" के "जारी रखें"?

उत्तर

10

हां, GOTO 1301 कथन प्रोग्राम को अगले पुनरावृत्ति पर कूद देता है।

DO label, label CONTINUE अधिक समकालीन DO ENDDO ब्लॉक लिखने का एक अप्रचलित तरीका है। इस मामले में लूप डीओ लाइन पर निर्दिष्ट चर से अधिक होगा, और label CONTINUE लाइन "ENDDO" प्लेसहोल्डर के रूप में कार्य करता है।

+0

धन्यवाद। इस पर पूरी तरह से स्पष्ट होने के लिए, गोटो 1301 स्टेटमेंट वास्तव में लूप को निष्पादित करने तक जारी रहेगा जब तक कि लूप को समाप्त करने की स्थिति संतुष्ट न हो? –

+0

हां। आपका गोटो 1301 आपको 1301 CONTINUE पर ले जाता है, जो लूप को समाप्त होने तक दोहराएगा। – milancurcic

+0

उत्कृष्ट। बहुत बहुत धन्यवाद, यह बहुत उपयोगी था। –