intrare X:
if (0 <= X and X < 49)
output abc
else if (50 <= X and X < 70)
output def
else if (70 <= X and X < 85)
output ghi
else if (85 <= X and X < 100)
output jkl
endif
intrare X:
if (0 <= X and X < 49)
output abc
else if (50 <= X and X < 70)
output def
else if (70 <= X and X < 85)
output ghi
else if (85 <= X and X < 100)
output jkl
endif
Pe Editare: nu minte, voi de acord că a fost wronfg pe asta.
Nu e, pentru că nu ifeste testat în interiorul altui ifcare a testat true.
În special, exemplul dumneavoastră:
if (0 <= X and X < 49) output "abc"
else if (50 <= X and X < 70) output "def"
else if (70 <= X and X < 85) output "ghi"
else if (85 <= X and X < 100) output "jkl"
endif
ar putea fi rescrisă ca:
if (0 <= X and X < 49) output "abc"; return; end if
if (50 <= X and X < 70) output "def"; return; end if
if (70 <= X and X < 85) output "ghi"; return; end if
if (85 <= X and X < 100) output "jkl"; return; end if
// X < 0 or X >= 100
Cometariu:
O declarație în cazul în care nu trebuie să fie încorporată în interiorul ei dacă să fie imbricate. Acesta poate fi imbricate în interiorul unui alt -Bill Lizard
Punctul luate; Sunt de acord că sunt greșit pe asta.
Ai putea gândi la ea ca fiind logic echivalentă cu următoarele:
if(a) {
// code
} else {
if(b) {
// code
} else {
// code
}
}
Deci, în acest sens, ai putea numi imbricate. În C și limbi similare, acest lucru este exact modul în care funcționează, deoarece nu există nici un „elseif“ declarație disponibilă. Acolade sunt opționale, deși, doar le-am inclus pentru a face mai clar.
S-ar putea fi pus în aplicare ca o buclă imbricată, în funcție de limbă. Cu toate acestea, modul în care a scris-o din punct de vedere logic, nu ar fi considerat unul.
Ele sunt imbricate, dar formatate ca ei nu sunt.
Codul dvs. este la fel ca:
if (0 <= X and X < 49)
output "abc"
else
if (50 <= X and X < 70)
output "def"
else
if (70 <= X and X < 85)
output "ghi"
else
if (85 <= X and X < 100)
output "jkl"
endif
endif
endif
endif
Acest lucru nu este imbricat:
if (0 <= X and X < 49)
output "abc"
endif
if (50 <= X and X < 70)
output "def"
endif
if (70 <= X and X < 85)
output "ghi"
endif
if (85 <= X and X < 100)
output "jkl"
endif
Acest lucru este valabil în toate (?), Limbi care au în cazul în declarații (ignorând lucruri cum ar fi folosind {} în loc de endif)
Cu toate acestea, unele limbi au o „elseif“ reale (sau „Elif“) de comandă, caz în care va nu cuib, dar scris ca „altfel dacă“ se poate presupune că este doar un cuib diferit formatat.
Depinde de limba reală, și cum este scris.
De exemplu , folosind VB, aceste Ifdeclarații nu sunt imbricate:
If 0 <= x And x < 49 Then
output("abc")
ElseIf 50 <= x And x < 70 Then
output("def")
ElseIf 70 <= x And x < 85 Then
output("ghi")
ElseIf 85 <= x And x < 100 Then
output("jkl")
End If
În timp ce aceste Ifsunt imbricate declarații:
If 0 <= x And x < 49 Then
output("abc")
Else
If 50 <= x And x < 70 Then
output("def")
Else
If 70 <= x And x < 85 Then
output("ghi")
Else
If 85 <= x And x < 100 Then
output("jkl")
End If
End If
End If
End If
Aș spune că da, ei sunt imbricate. Codul dvs. este exact echivalent cu
if (0 <= X and X < 49)
output "abc"
else
if (50 <= X and X < 70)
output "def"
else
if (70 <= X and X < 85)
output "ghi"
else
if (85 <= X and X < 100)
output "jkl"
endif
Observați că m - am schimbat doar spațiul liber. Atunci când o limbă evaluează if...else if...elseclauze, se testează fiecare până când găsește clauza adevărată (sau lovește finală else). Cele imbricate ifs evalueze exact în același mod. De asemenea , rețineți că acest lucru nu este neapărat cazul în cazul în care există un explicit elsifcuvânt cheie.
Încă un lucru am observat, următorul text este nu echivalent cu codul dumneavoastră:
if (0 <= X and X < 49)
output "abc"
if (50 <= X and X < 70)
output "def"
if (70 <= X and X < 85)
output "ghi"
if (85 <= X and X < 100)
output "jkl"
Adăpostirea este necesară pentru a păstra tot textul de la a fi de ieșire atunci când toate condițiile sunt adevărate.
Având în vedere sintaxa arătat, cred că răspunsul ar trebui să fie „Nu“, spre deosebire de înțelepciunea acumulată a altor răspunsuri.
Tu arati:
if (0 <= X and X < 49)
output "abc"
else if (50 <= X and X < 70)
output "def"
else if (70 <= X and X < 85)
output "ghi"
else if (85 <= X and X < 100)
output "jkl"
endif
Acest lucru este în mod clar o singură if... endifdeclarație, și , prin urmare , nu există nici o cuiburi. Dacă există mai multe endifsituații, ar fi imbricate:
if (0 <= X and X < 49)
output "abc"
else
if (50 <= X and X < 70)
output "def"
else
if (70 <= X and X < 85)
output "ghi"
else
if (85 <= X and X < 100)
output "jkl"
endif
endif
endif
endif
Deci, în limba dvs., se pare că cuvântul cheie elif(utilizat de Bourne shell) și elsif(utilizat de Perl) și ElseIf(utilizat de Visual Basic) este scris else if.
În cazul în care nu a existat în mod explicit endifpentru a marca sfârșitul declarației, atunci aș fi în acord cu celelalte răspunsuri - că ifdeclarațiile (! Plural) sunt imbricate, deși aspectul este perfect sensibil și recomandat.
Nu Nu este.
O declarație imbricată este una care apare într-o aceeași declarație, cum ar fi dacă ... Dacă. Dacă ... elseif este tot în aceeași „declarație“.
Acesta este un joc oarecum inutil de semantica; depinde de sintaxa limbii implicate.
De exemplu, într-o sintaxă ca-C, de obicei, acestea vor fi considerate imbricat în clauzele altceva, cu acolade omis să ascundă acest fapt. În acest caz, de exemplu, tumorali este corect.
În alte limbi, cum ar fi Python și VB, „altceva-în cazul în care“ este un construct atomic al propriei sale. În acest caz, „în cazul în care“ nu poate fi considerată în interiorul „else“, așa că nu a putut fi numit „imbricate“.
if (0 <= X and X < 49)
output "abc"
else if (50 <= X and X < 70)
output "def"
endif
Nu ați definit sintaxa pseudocod dvs. suficient pentru a spune sigur, dar terminația „endif“ este suspect. Existența sa nu se potrivește cu stilul C-acolade-omise; și faptul că există doar una dintre ele și nu mai mult -
else
if (50 <= X and X < 70)
output "def"
endif
endif
- înseamnă că nu se potrivește cu contravântuiri (sau de a începe / final) , fie modelul. Deci , judecând după faptul că sintaxa aș pune limba pseudocod în „altceva dacă-atomic“ tabără, și spune destul de arbitrar: Nu, dacă-declarația nu este imbricate.
(Dar ai putea întotdeauna au definit o limbă în cazul în care endifs sunt opționale sau. Sau dependente de spațiu, este posibil să fi definit o limbă în care se imprimă programul de mai sus „Hello World“ șterge apoi toate fișierele. Și are încorporat un cititor de e-mail. )