ingang 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
ingang 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
Op Edit: laat maar, ik zal het eens was ik wronfg op deze.
Het is niet, omdat er geen ifis getest in een ander ifdat getest true.
In het bijzonder, uw voorbeeld:
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 worden herschreven als:
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
Commentaar:
Een if-statement niet hoeft te worden genest binnen een ander als te worden genest. Het kan worden genest binnen een else -Bill de Lizard
Punt gemaakt; Ik ben het eens dat ik verkeerd ben op dit één.
Je zou kunnen denken aan het als logisch gelijk aan de volgende:
if(a) {
// code
} else {
if(b) {
// code
} else {
// code
}
}
Dus in dit opzicht, zou je het noemen genest. In C en soortgelijke talen, dit is precies hoe het werkt omdat er geen "elseif" statement beschikbaar. De accolades zijn optioneel hoewel, ik begrepen ze gewoon om het duidelijker te maken.
Het kan worden uitgevoerd als een geneste lus, afhankelijk van de taal. Echter, de manier waarop je logisch schreef het uit, het zou niet worden beschouwd als een.
Ze zijn genest, maar opgemaakt alsof ze niet zijn.
De code is hetzelfde als:
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
Dit is niet genest:
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
Dit is geldig in alle (?) Talen die hebben als verklaringen (het negeren van dingen zoals het gebruik van {} in plaats van endif)
Echter, sommige talen hebben een echte "elseif" (of "Elif") commando, in welk geval u niet nest, maar geschreven als "anders als" kun je aannemen dat het gewoon een anders geformatteerde nest.
Het hangt af van de feitelijke taal, en hoe het is geschreven.
Bijvoorbeeld met behulp van VB, deze Ifzijn uitspraken niet genest:
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
Hoewel deze Ifverklaringen zijn genest:
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
Ik zou zeggen ja ze zijn genest. De code is precies gelijk aan
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
Merk op dat ik alleen ben veranderd de witruimte. Wanneer een taal evalueert if...else if...elseclausules, test het een ieder tot hij de ware clausule vindt (of het raakt de finale else). De geneste ifs evalueren op precies dezelfde manier. Merk ook op dat dit niet noodzakelijk het geval als er een expliciete elsifzoekwoord.
Nog één ding valt me op, de volgende is niet gelijk aan uw code:
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"
De nesten is nodig om alle tekst uit dat wordt uitgevoerd als aan alle voorwaarden wordt voldaan te houden.
Gezien de syntax getoond, ik denk dat het antwoord moet zijn "Nee", in tegenstelling tot de verzamelde wijsheid van de andere antwoorden.
U toont:
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
Dit is duidelijk een if... endifstatement, en daarom is er geen nesten. Als er meerdere endifverklaringen was het genest:
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
Dus, in uw taal, lijkt het erop dat het zoekwoord elif(gebruikt door de Bourne shell) en elsif(gebruikt door Perl) en ElseIf(gebruikt door Visual Basic) wordt gespeld else if.
Als er geen expliciete endifnaar het einde van de verklaring te markeren, dan zou ik in overleg met de andere antwoorden - dat de ifverklaringen (! Meervoud) zijn genest, hoewel de lay-out is perfect verstandig en aan te bevelen.
Nee dat is het niet.
Een geneste statement is er een die binnen een zelfde verklaring verschijnt, zoals If ... If. If ... ElseIf is allemaal in dezelfde "statement".
Dit is een enigszins zinloze spel van semantiek; het hangt af van de syntaxis van de taal betrokken.
Bijvoorbeeld in een C-achtige syntax zouden ze meestal geneste in de else clausules worden beschouwd, met de beugels weggelaten om dat feit te verdoezelen. In dit geval voorbeeld Turnor is gelijk.
In sommige andere talen, zoals Python en VB, 'anders-if' is een atomaire constructie van zijn eigen. In dat geval is de 'als' niet kan worden beschouwd als binnen het 'anders', dus het kan niet worden genoemd “genest”.
if (0 <= X and X < 49)
output "abc"
else if (50 <= X and X < 70)
output "def"
endif
Je hebt niet gedefinieerd de syntaxis van uw pseudocode voldoende zekerheid te zeggen, maar de afsluitende 'endif' is verdacht. Het bestaan ervan past niet bij de C-beugels-weggelaten stijl; en het feit dat er slechts één van hen en niet meer -
else
if (50 <= X and X < 70)
output "def"
endif
endif
- betekent dat niet overeenkomt met het met beugels (of begin / eind) model niet. Dus oordelen dat syntax ik zou uw pseudocode taal zet in de 'atomaire anders-if' camp, en zegt heel willekeurig: Nee, je if-statement niet is genest.
(Maar je kunt altijd een taal waarin endifs zijn optioneel of witruimte-afhankelijk. Of gedefinieerd, kunt u een taal waar de bovenstaande programma print “Hello world” wist dan al uw bestanden hebt gedefinieerd. En heeft een ingebouwde e-mailprogramma. )