entrée 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
entrée 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
En edit: never mind, je suis d'accord que je wronfg sur celui-ci.
Ce n'est pas, parce que personne ifn'est testé dans un autre ifqui a testé true.
, Votre exemple particulier:
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
pourrait être réécrite comme:
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
Commentaire:
Une instruction if ne doit pas être imbriqué dans un autre cas être imbriquées. Il peut être imbriqué dans un autre -Bill le lézard
Point de prise; Je suis d'accord que je me trompe sur celui-ci.
Vous pourriez penser comme étant logiquement équivalent à ce qui suit:
if(a) {
// code
} else {
if(b) {
// code
} else {
// code
}
}
Donc, à cet égard, vous pouvez l'appeler imbriquée. En C et langues similaires, c'est exactement comment cela fonctionne car il n'y a pas de déclaration « elseif » disponible. Les accolades sont facultatifs mais, je les inclus pour le rendre plus clair.
Il pourrait être mis en œuvre comme une boucle imbriquée, selon la langue. Cependant, la façon dont vous ne serait pas écrit logiquement dehors, être considéré comme l'un.
Ils sont imbriqués, mais comme ils sont formatés pas.
Votre code est le même que:
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
Ce n'est pas imbriqué:
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
Ceci est valable dans tous les (?) Langues qui ont si des déclarations (en ignorant des choses comme l'utilisation de {} au lieu de endif)
Cependant, certaines langues ont une commande réelle « elseif » (ou « Elif »), auquel cas vous ne nid, mais écrit comme « Sinon , si » vous pouvez supposer qu'il est juste un nid formaté différemment.
Cela dépend de la langue réelle, et la façon dont il est écrit.
Par exemple en utilisant VB, ces Ifdéclarations ne sont pas imbriqués:
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
Bien que ces Ifdéclarations sont imbriquées:
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
Je dirais que oui, ils sont imbriqués. Votre code est exactement équivalent à
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
Notez que je n'ai changé les espaces blancs. Quand une langue évalue les if...else if...elseclauses, il teste chacun jusqu'à ce qu'il trouve la vraie clause (ou elle touche la finale else). Les emboîtés ifs évaluent exactement de la même manière. A noter également que ce n'est pas nécessairement le cas s'il y a un explicite elsifmot - clé.
Encore une chose que je remarque, ce qui suit est pas équivalent à votre 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"
L'imbrication est nécessaire de garder tout le texte d'être émis lorsque toutes les conditions sont vraies.
Compte tenu de la syntaxe indiquée, je pense que la réponse devrait être « Non », contrairement à la sagesse accumulée des autres réponses.
Tu montres:
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
Ceci est clairement une seule if... endifdéclaration, et donc il n'y a pas d' imbrication. S'il y avait plusieurs endifdéclarations, il serait imbriqué:
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
Donc, dans votre langue, il semble que le mot - clé elif(utilisé par le shell Bourne) et elsif(utilisé par Perl) et ElseIf(utilisé par Visual Basic) est orthographié else if.
S'il n'y avait pas explicite endifpour marquer la fin de la déclaration, alors je serais en accord avec les autres réponses - que les ifdéclarations (! De pluriel) sont imbriquées, bien que la mise en page est tout à fait raisonnable et recommandé.
Non, ce n'est pas.
Une déclaration imbriquée est celui qui apparaît dans une même déclaration, comme si ... Si. Si ... ElseIf est tous dans le même « déclaration ».
Ce jeu un peu inutile de la sémantique; cela dépend de la syntaxe de la langue concernée.
Par exemple, dans une syntaxe C comme ils seraient généralement considérés comme imbriquées dans les clauses d'autre, les accolades ont omis de masquer ce fait. Dans ce cas, l'exemple de Turnor est juste.
Dans d'autres langues, comme Python et VB, « else-if » est une construction atomique de son propre. Dans ce cas, le « si » ne peut pas être considéré comme à l'intérieur du « autre », il ne pouvait pas être appelé « imbriquées ».
if (0 <= X and X < 49)
output "abc"
else if (50 <= X and X < 70)
output "def"
endif
Vous n'avez pas défini la syntaxe de votre pseudo-code suffisamment pour dire à coup sûr, mais la fuite « endif » est suspect. Son existence ne correspond pas avec le style omis C-accolades; et le fait qu'il n'y a qu'un seul d'entre eux et pas plus -
else
if (50 <= X and X < 70)
output "def"
endif
endif
- signifie qu'il ne correspond pas au modèle avec des entretoises (ou début / fin) soit. Donc , à en juger par cette syntaxe je mettrais votre langage pseudo - code dans le « atomique d' autre, si » le camp, et dire tout à fait arbitraire: Non, votre instruction if est pas imbriqué.
(Mais vous pouvez toujours avoir défini une langue où endifs sont facultatifs ou dépendants-espaces. Ou bien, vous pourriez avoir défini une langue où le programme imprime ci-dessus « Bonjour tout le monde » supprime alors tous vos fichiers. Et a un lecteur de messagerie intégré. )