inngang 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
inngang 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
På Edit: never mind, jeg er enig jeg ble wronfg på denne.
Det er ikke, fordi ingen ifer testet i en annen ifsom testet true.
Spesielt ditt eksempel:
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
kan skrives som:
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
Kommentar:
En hvis setningen trenger ikke å være nestet i en annen om den skulle være nestet. Det kan nestes inne i et annet -Bill Lizard
Point tatt; Jeg er enig at jeg tar feil på dette.
Du kan tenke på det som logisk tilsvarer følgende:
if(a) {
// code
} else {
if(b) {
// code
} else {
// code
}
}
Så i denne forbindelse, kan du kalle det nestet. I C og lignende språk, er dette nøyaktig hvordan det fungerer siden det er ingen "elseif" statement tilgjengelig. Klammeparentes er valgfritt om, jeg bare tatt dem for å gjøre det klarere.
Det kan bli gjennomført som en nestet sløyfe, avhengig av språket. Men måten du logisk skrev det ut, ville det ikke bli betraktet som en.
De er nestet, men formatert som de ikke er.
Koden er den samme som:
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
Dette er ikke nestet:
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
Dette gjelder i alle (?) Språk som har hvis uttalelser (ignorerer ting som å bruke {} i stedet for endif)
Men noen språk har en faktisk "elseif" (eller "elif") kommando, og da vil du ikke reir, men skrevet som "annet hvis" du kan anta det er bare et annerledes formatert reir.
Det avhenger av selve språket, og hvordan den er skrevet.
For eksempel ved hjelp av VB, disse Ifer uttalelsene ikke nestet:
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
Selv om disse Ifuttalelsene er nestet:
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
Jeg vil si ja de er nestet. Koden er nøyaktig lik
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
Legg merke til at jeg har bare endret mellomrom. Når et språk evaluerer if...else if...elsebestemmelser, det tester hver inntil den finner den egentlige leddet (eller den treffer den endelige else). Den nestede ifs evaluere på nøyaktig samme måte. Vær også oppmerksom på at dette ikke nødvendigvis er tilfelle hvis det ikke er en eksplisitt elsifsøkeord.
En ting jeg legger merke til, er følgende ikke tilsvarende til koden:
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"
Hekkende er nødvendig for å holde all teksten fra å være utgang når alle betingelsene er oppfylt.
Gitt syntaksen vist, tror jeg svaret skal være "Nei", i motsetning til den akkumulerte visdom av de andre svarene.
Du viser:
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
Dette er helt klart en enkelt if... endifuttalelse, og det er derfor ingen hekkende. Hvis det var flere endifuttalelser, ville det være nestet:
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
Så, i språket, ser det ut til at søkeordet elif(brukes av Bourne shell) og elsif(brukt av Perl) og ElseIf(brukt av Visual Basic) er stavet else if.
Hvis det var ingen eksplisitt endiffor å markere slutten av setningen, så ville jeg være enig med de andre svarene - at ifuttalelsene (! Flertall) er nestet, men oppsettet er helt fornuftig og anbefalt.
Nei det er ikke.
En nestet utsagn er en som vises i en samme setningen, som If ... If. Hvis ... ElseIf er alle i samme "statement".
Dette er en noe meningsløs parti med semantikk; det avhenger av syntaksen i språket involvert.
For eksempel i en C-lignende syntaks de vanligvis ville bli betraktet som nestet i annet klausuler, med bukseseler utelatt å skjule det faktum. I dette tilfellet Turnor Rens eksempel er riktig.
I enkelte andre språk, som Python og VB, 'else-if' er en atom konstruere sine egne. I så fall 'hvis' ikke kan anses å være inne i 'annet', så det kan ikke kalles “nestet”.
if (0 <= X and X < 49)
output "abc"
else if (50 <= X and X < 70)
output "def"
endif
Du har ikke definert syntaksen av pseudo tilstrekkelig til å si sikkert, men den etterfølgende 'endif' er mistenkelig. Dens eksistens passer ikke med C-bukseseler-utelates stil; og det faktum at det er bare én av dem, og ikke mer -
else
if (50 <= X and X < 70)
output "def"
endif
endif
- betyr at det ikke samsvarer med-seler (eller begin / end) modell heller. Så skal man dømme etter at syntaks jeg ville sette pseudo språket i 'atom else-if' leiren, og sier ganske vilkårlig: Nei, hvis-erklæringen ikke er nestet.
(Men du kan alltid har definert et språk der endifs er valgfrie eller mellomrom avhengig. Eller kanskje du har definert et språk der de ovennevnte programmet skriver “Hello world” sletter deretter alle filene dine. Og har en innebygd postleser. )