खोज…


अगर निर्माण

if निर्माण (फोरट्रान 77 में एक ब्लॉक IF स्टेटमेंट कहा जाता है) कई प्रोग्रामिंग भाषाओं में आम है। यह सशर्त रूप से कोड के एक ब्लॉक को निष्पादित करता है जब एक तार्किक अभिव्यक्ति का मूल्यांकन किया जाता है।

[name:] IF (expr) THEN
    block
[ELSE IF (expr) THEN [name]
    block]
[ELSE [name]
   block]
END IF [name]

कहाँ पे,

  • नाम - अगर निर्माण का नाम (वैकल्पिक)
  • expr - कोष्ठक में संलग्न एक स्केलर तार्किक अभिव्यक्ति
  • ब्लॉक - शून्य या अधिक विवरण या निर्माण का एक क्रम

if then विवरण की शुरुआत में एक निर्माण नाम का मान होना चाहिए end if कथन में end if में निर्माण नाम है, और यह वर्तमान स्कॉपिंग इकाई के लिए अद्वितीय होना चाहिए।

if बयानों में, (इन) समानताएं और एक कथन का मूल्यांकन करने वाले तार्किक अभिव्यक्ति का उपयोग निम्नलिखित ऑपरेटरों के साथ किया जा सकता है:

.LT.  which is <   ! less than
.LE.           <=  ! less than or equal
.GT.           >   ! greater than
.GE.           >=  ! greater than or equal
.EQ.           =   ! equal
.NE.           /=  ! not equal
.AND.              ! logical and
.OR.               ! logical or
.NOT.              ! negation

उदाहरण:

! simplest form of if construct
if (a > b) then
    c =  b / 2
end if
!equivalent example with alternate syntax
if(a.gt.b)then
   c=b/2
endif

! named if construct
circle: if (r >= 0) then
    l = 2 * pi * r
end if circle

! complex example with nested if construct
block: if (a < e) then
    if (abs(c - e) <= d) then
        a = a * c
    else
        a = a * d
    end if
else
    a = a * e
end if block

if निर्माण का एक ऐतिहासिक उपयोग है, if इसे "अंकगणित अगर" कथन कहा जाता है। चूंकि यह अधिक आधुनिक निर्माणों द्वारा प्रतिस्थापित किया जा सकता है, हालांकि, यह यहां कवर नहीं किया गया है। अधिक विवरण यहां पाया जा सकता है

सेस निर्माण का चयन करें

एक select case निर्माण सशर्त निर्माणों या बयान एक में एक अदिश अभिव्यक्ति के मूल्य के आधार के एक ब्लॉक को निष्पादित करता है select case बयान। इस नियंत्रण निर्माण को गणना goto प्रतिस्थापन के रूप में माना जा सकता है।

[name:] SELECT CASE (expr)
[CASE (case-value [, case-value] ...) [name]
   block]...
[CASE DEFAULT [name]
   block]
END SELECT [name]

कहाँ पे,

  • नाम - select case निर्माण select case नाम (वैकल्पिक)
  • expr - प्रकार पूर्णांक, तार्किक, या वर्ण की एक अदिश अभिव्यक्ति (कोष्ठकों में संलग्न)
  • मामला-मान - एक या अधिक स्केलर पूर्णांक, तार्किक, या वर्ण आरंभिक अभिव्यक्तियाँ कोष्ठक में संलग्न
  • ब्लॉक - शून्य या अधिक विवरण या निर्माण का एक क्रम

उदाहरण:

! simplest form of select case construct
select case(i)
case(:-1)
    s = -1
case(0)
    s = 0
case(1:)
    s = 1
case default
    print "Something strange is happened"
end select

इस उदाहरण में, (:-1) केस वैल्यू मानों की एक श्रेणी है जो शून्य से कम के सभी मानों से मेल खाती है, (0) शून्य से मेल खाती है, और (1:) शून्य से ऊपर के सभी मूल्यों से मेल खाता है, default सेक्शन में अन्य सेक्शन शामिल हैं निष्पादित नहीं किया गया।

ब्लॉक DO निर्माण

एक do निर्माण एक पाशन निर्माण जो एक लूप नियंत्रण द्वारा नियंत्रित पुनरावृत्तियों की एक संख्या है है

integer i
do i=1, 5
  print *, i
end do
print *, i

ऊपर के रूप में, लूप वेरिएबल i लूप से 5 बार गुजरता है, मूल्यों को बदले में 1 से 5 लेता है। निर्माण पूरा होने के बाद लूप वैरिएबल का मान 6 होता है, यानी लूप वेरिएबल लूप के पूरा होने के बाद एक बार फिर बढ़ जाता है

आम तौर पर, do पाश निर्माण इस प्रकार समझा जा सकता है

integer i, first, last, step
do i=first, last, step
end do

पाश के साथ शुरू होता i मान के साथ first , के द्वारा एक यात्रा incrementing step जब तक i से अधिक है last (या कम से कम last है, तो कदम आकार नकारात्मक है)।

यह ध्यान रखना महत्वपूर्ण है कि फोरट्रान 95 के बाद से, लूप चर और लूप नियंत्रण अभिव्यक्ति पूर्णांक होनी चाहिए।

cycle कथन के साथ समय से पहले एक पुनरावृत्ति को समाप्त किया जा सकता है

do i=1, 5
  if (i==4) cycle
end do

और पूरा निर्माण exit स्टेटमेंट के साथ निष्पादन को रोक सकता है

do i=1, 5
  if (i==4) exit
end do
print *, i

do निर्माण का नाम दिया जा सकता है:

do_name: do i=1, 5
end do do_name

जो विशेष रूप से उपयोगी है जब वहाँ नेस्टेड हैं do निर्माणों

do1: do i=1, 5
  do j=1,6
    if (j==3) cycle        ! This cycles the j construct
    if (j==4) cycle        ! This cycles the j construct
    if (i+j==7) cycle do1  ! This cycles the i construct
    if (i*j==15) exit do1  ! This exits the i construct
  end do
end do1

do निर्माणों भी अनिश्चित पाश नियंत्रण हो सकता है, या तो "हमेशा के लिए" या जब तक किसी दिए गए स्थिति उत्पन्न होने पर

integer :: i=0
do
  i=i+1
  if (i==5) exit
end do

या

integer :: i=0
do while (i<6)
  i=i+1
end do

यह भी एक अनंत के लिए अनुमति देता do एक के माध्यम से पाश .true. बयान

print *,'forever'
do while(.true.)
  print *,'and ever'
end do

एक do निर्माण भी पुनरावृत्तियों अनिश्चित के आदेश छोड़ सकते हैं

do concurrent (i=1:5)
end do

यह देखते हुए कि लूप नियंत्रण का रूप एक forall नियंत्रण के समान है।

बयानों पर विभिन्न प्रतिबंध हैं जो एक do concurrent निर्माण की सीमा के भीतर निष्पादित किए जा सकते हैं जो यह सुनिश्चित करने के लिए डिज़ाइन किए गए हैं कि निर्माण के पुनरावृत्तियों के बीच कोई डेटा निर्भरता नहीं है। प्रोग्रामर द्वारा यह स्पष्ट संकेत संकलक द्वारा अधिक अनुकूलन (समानांतर सहित) सक्षम कर सकता है जो अन्यथा निर्धारित करने के लिए अलग-अलग हो सकता है।

एक अंतराल के भीतर "निजी" चर को do concurrent भीतर एक block निर्माण के उपयोग से महसूस किया जा सकता do concurrent :

do concurrent (i=1:5, j=2:7)
  block
    real tempval  ! This is independent across iterations
  end block
end do

ब्लॉक do कंस्ट्रक्शन का एक अन्य रूप end do बजाय एक लेबल continue स्टेटमेंट का उपयोग करता end do :

    do 100, i=1, 5
100 continue

एक साझा समाप्ति कथन के साथ ऐसे निर्माणों को घोंसला बनाना संभव है

    do 100, i=1,5
    do 100, j=1,5
100 continue

इन दोनों रूपों, और विशेष रूप से दूसरा (जो कि अप्रचलित है), आमतौर पर स्पष्टता के हितों से बचा जाना चाहिए।


अंत में, एक गैर-ब्लॉक do निर्माण भी है। यह भी अप्रचलित होने के लिए और है समझा जाता है कहीं वर्णित , एक ब्लॉक के रूप में पुनर्गठन करने के तरीकों के साथ साथ do निर्माण।

जहां निर्माण हो

where निर्माण, Fortran90 में उपलब्ध के बाद एक नकाबपोश का प्रतिनिधित्व करता है do निर्माण। मास्किंग स्टेटमेंट if स्टेटमेंट के समान नियमों का पालन करता है, लेकिन दिए गए एरे के सभी तत्वों पर लागू होता है। का उपयोग करते हुए where संचालन एक सरणी (या एक ही आकार के कई सरणियों) पर किए जाने के लिए अनुमति देता, तत्व है जो की एक निश्चित नियम को संतुष्ट। इसका उपयोग कई चर पर एक साथ संचालन को सरल बनाने के लिए किया जा सकता है।

वाक्य - विन्यास:

[name]: where (mask)
    block
[elsewhere (mask)
    block]
[elsewhere
    block]
end where [name]

यहाँ,

  • नाम - ब्लॉक को दिया गया नाम है (यदि नाम दिया गया है)
  • मुखौटा - सभी तत्वों पर लागू एक तार्किक अभिव्यक्ति है
  • ब्लॉक - निष्पादित किए जाने वाले आदेशों की श्रृंखला

उदाहरण:

! Example variables
real:: A(5),B(5),C(5)
A = 0.0
B = 1.0
C = [0.0, 4.0, 5.0, 10.0, 0.0]

! Simple where construct use
where (C/=0)
    A=B/C
elsewhere
    A=0.0
end

! Named where construct
Block: where (C/=0)
    A=B/C
elsewhere
    A=0.0
end where Block


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow