bemenet 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
bemenet 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
A szerkesztés: sebaj, én egyetértek én wronfg ez.
Nem, mert nem ifvizsgáljuk belül egy másik if, hogy a vizsgált true.
Különösen fontos, hogy például:
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
lehetne átírni:
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
Megjegyzés:
Egy, ha az állítás nem kell ágyazva egy másik, ha kell egymásba ágyazni. Meg lehet ágyazva egy else Bill a Lizard
Megértettem az álláspontodat; I agree tévedek ebben.
Lehet gondolni rá, hogy a logikailag egyenértékű a következő:
if(a) {
// code
} else {
if(b) {
// code
} else {
// code
}
}
Tehát ebben a tekintetben, akkor lehet nevezni beágyazott. A C és hasonló nyelven, ez pontosan hogyan működik, mivel nincs „elseif” nyilatkozatot elérhető. A kapcsos zárójelek opcionális bár én csak azokat is, hogy egyértelműbb legyen.
Ez lehet vezetni, mint egy beágyazott hurok, attól függően, hogy a nyelvet. Azonban ahogy logikusan írta ki, hogy nem tekinthető az egyik.
Ezek egymásba, de a formátuma nem azok.
A kód ugyanaz, mint:
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
Ez nem beágyazott:
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
Ez érvényes minden (?) Nyelveken, amelyek utasításból (figyelmen kívül hagyva a dolgok, mint a {} helyett endif)
Azonban egyes nyelvekben egy tényleges „elseif” (vagy „elif”) parancsot, amely esetben akkor sem fészket, de írt a „else if”, akkor feltételezhető, hogy ez csak egy eltérő formátumú fészket.
Attól függ, hogy a tényleges nyelvi, és hogyan van írva.
Például az VB, ezek Ifaz állítások nem beágyazott:
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
Bár ezek a Ifkijelentések egymásba:
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
Azt mondanám, hogy igen, vannak beágyazva. Az Ön kódja pontosan megegyezik
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
Figyeljük meg, hogy én már csak megváltoztatta a szóközöket. Ha egy nyelv értékeli if...else if...elsekikötések, tesztel mindegyiket, amíg megtalálja az igazi záradékot (vagy eléri a végleges else). A beágyazott ifs értékeli ugyanúgy. Szintén fontos megjegyezni, hogy ez nem feltétlenül van így, ha van egy explicit elsifkulcsszó.
Még egy dolog, amit észre, a következő nem egyenértékű a kódot:
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"
A fészkelő van szükség , hogy az összes szöveg a kimeneten, ha az összes feltétel igaz.
Tekintettel a szintaxis látható, azt hiszem, a választ kellene adni a „Nem”, ellentétben a felhalmozott bölcsesség a többi választ.
Te mutatod:
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
Ez egyértelműen egy if... endifnyilatkozat, és ezért nincs fészkelő. Ha lenne több endifkimutatások lenne beágyazott:
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
Tehát, a nyelvet, úgy tűnik, hogy a kulcsszó elif(használt a Bourne shell) és elsif(használt Perl) és ElseIf(használt Visual Basic) írta else if.
Ha nem volt egyértelmű endif, hogy a végét a nyilatkozat, akkor lennék egyetértésben a többi választ, hogy - a ifnyilatkozatok (többes!) Vannak beágyazva, de az elrendezés teljesen ésszerű és ajánlott.
Nem, ez nem.
A utasításra az egyik, hogy úgy tűnik, egy állítás, mint ha ... ha. Ha ... ElseIf mind ugyanabban a „nyilatkozat”.
Ez egy kissé értelmetlen játék szemantikai; ez függ a szintaxis a nyelv szó.
Például egy C-szerű szintaxis általában úgy kellene tekinteni a beágyazott más záradékokat, a kapcsos zárójelek elhagyhatók eltakarni a tényt. Ebben az esetben Turnor példája is jobb.
Néhány más nyelveken, mint a Python és a VB „else-if” ez az atomi szerkezet saját. Ebben az esetben a „ha” nem tekinthető a belsejében a „más”, ezért nem lehet az úgynevezett „beágyazott”.
if (0 <= X and X < 49)
output "abc"
else if (50 <= X and X < 70)
output "def"
endif
Még nem határozott a szintaxis az Ön pszeudokódokra kellően biztosat mondani, de a végén egy „endif” gyanús. Léte nem illik a C-merevítők-elhagyható stílusban; és az a tény, hogy ez csak az egyik, és nem több -
else
if (50 <= X and X < 70)
output "def"
endif
endif
- azt jelenti, hogy nem egyezik a with-zárójelek (vagy kezdet / vég) modell sem. Így ítélve, hogy szintaxis azt tegye meg pszeudokódját nyelven a „atomi else-if” tábor, és azt mondják, elég önkényesen: Nem, a ha-állítás nem illesztjük.
(De akkor is mindig meghatározott egy nyelvet, ha endifs választhatók vagy szóközzel függ. Vagy lehet, hogy meghatározott egy nyelvet, ha a fenti program a „Hello világ”, akkor törli az összes fájlt. És van egy beépített levelező programja. )