入力X:編集でこのIF文はネストされているかどうか?
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
入力X:編集でこのIF文はネストされているかどうか?
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
:気にしないで、私は、私はこの1つ上wronfgた同意します。
if
は、true
をテストした別のif
の中でテストされていないため、そうではありません。特に
、あなたの例:文が別の場合内にネストする必要がない場合は
アン:
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
コメント:
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
は、以下のように書き換えることができます入れ子にする。それは他の人の中に入れ子にすることができます - リザードをコードします
ポイントを取った;私はこれに間違っていることに同意するでしょう。
ifステートメントは、ネストする場合、別のステートメント内でネストする必要はありません。 elseの中に入れ子にすることができます。 –
次へ論理的に等価であると考えることができます:
if(a) {
// code
} else {
if(b) {
// code
} else {
// code
}
}
だから、この点では、ネストされた、それを呼び出すことができます。 C言語やそれに類する言語では、 "elseif"文が使えないので、これはまさにその動作です。中括弧はオプションですが、私はそれを明確にするためにそれらを含めました。
あなたはまさに正しいです。これは入れ子に見えませんが、おそらくほとんどの言語にあります。 – Jorn
言語に応じてネストループとして実装される場合があります。しかし、あなたが論理的に書いたように、それは一つとは考えられません。
これらはネストされていますが、ネストされていないようにフォーマットされています。これは、ネストされていない
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
:
あなたのコードは同じです
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
これは、文が(使用してのようなものを無視した場合持っているすべての言語で有効です{}(?) endifの代わりに)
しかし、一部の言語では実際の "elseif"(または "elif")コマンドがあります。この場合、ではなくがネストされますが、 "else if"と書かれていると、それはちょうど別の書式設定されたネストだとみなすことができます。
最初の例と同じではありません。それは4つではなく、1つのendifを持っています! –
実際の言語とその書き方によって異なります。 VBを使用して例えば
は、これらのIf
文はネストされていません。
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
これらIf
文がネストされているものの:
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
私はあなたの分析に同意します。 –
私は彼らが入れ子になっているそうだと思います。あなたのコードは全く同じです
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
私は空白を変更したことに注意してください。言語がif...else if...else
句を評価するとき、真の句が見つかるか(または最終的にelse
になる)まで、それぞれをテストします。ネストされたif
は全く同じ方法で評価されます。また、明示的なelsif
キーワードがある場合、必ずしもそうであるとは限りません。私は気づく
もう一つ、次はあなたのコードにない同等です:
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"
ネストが条件のすべてに該当する場合に出力されてから、テキストのすべてを維持するために必要です。
書かれた条件は相互に排他的ではないので、別々の条件として書き直すには、単一の入力に対して複数の出力がないことを保証するために魔法の注意が必要です。 –
表示されている構文を考えれば、回答は他の回答の蓄積された知恵とは逆に、「いいえ」でなければならないと思います。
あなたが示しています
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
は、これは明らかに、単一のif
... endif
文ですので、何のネスティングはありません。複数endif
文があった場合 は、入れ子にすることになります。
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
だから、あなたの言葉で、キーワードelif
(Bourneシェルで使用される)とelsif
(Perlので使用される)とElseIf
を(使用していること表示されますVisual Basic)は、else if
という綴りです。
文の終わりを明示するための明示的なendif
がない場合は、他の回答と一致します。if
ステートメント(複数形)はネストされていますが、レイアウトは完全に賢明で推奨されます。
その単一のendifは私を悩ませましたが、私はそれが擬似コードであることを許しました。 –
いいえ、そうではありません。
ネストされたステートメントは、If ... Ifのように同じステートメント内に表示されます。 If ... ElseIfはすべて同じ "ステートメント"にあります。
これは多少意味のないゲームです。それは関係する言語の構文に依存します。
たとえば、Cのような構文では、通常はelse節にネストされていると見なされますが、その事実を隠すために省略されています。この場合、Turnorの例は正しいです。
PythonやVBのような他の言語では、 'else-if'はそれ自身のアトム構造です。その場合、 'if'は 'else'の内部にあると見なすことができないので、「入れ子」と呼ぶことはできません。
if (0 <= X and X < 49)
output "abc"
else if (50 <= X and X < 70)
output "def"
endif
あなたの疑似コードの構文を十分には定義していませんが、末尾の 'endif'は不審なものです。その存在は、C括弧を省略したスタイルには適合しません。そしていずれか一方のみではなく、よりがありますという事実 -
else
if (50 <= X and X < 70)
output "def"
endif
endif
は - それはどちらかとブレース(または開始/終了)のモデルと一致しないことを意味します。したがって、その文法で判断すると、あなたの擬似コード言語を 'atomic else-if'キャンプに入れ、かなり恣意的に言うでしょう:いいえ、あなたのif文は入れ子になっていません。
(ただし、endifがオプションまたは空白に依存する言語を定義している可能性があります。また、上記のプログラムが "Hello world"を出力してからすべてのファイルを削除する言語を定義しています。 -in mail reader)
これは何を求めているのですか?新しいifがelseにネストされているかどうかにかかわらず、本当の理由は何ですか? – Jorn
@Jorn、何がポイントであるかを尋ねるポイントは何ですか?彼は明らかに知りたいと思っていました。それがネストされていなければ、プログラムのロジックは大きく異なるでしょう。それで、私はイントロプログラミングのクラスで宿題をたくさん見ました。 – mmcdole