girişi 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
girişi 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
düzenlemek üzerinde: aldırma, ben bu sefer wronfg edildi kabul edeceğiz.
Hiçbir çünkü değil ifbaşka içeride test edilir iftest olduğunu true.
Özellikle, sizin örnekte:
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
şekilde tekrar yazılabilir:
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
Yorum Yap:
Bir if ifadesi yer alacak şekilde başka bir iç içe olmak zorunda değildir. Bir başka iç içe olabilir -Bill Kertenkele
Nokta alınan; Ben bu sefer yanılıyorum kabul edeceğiz.
Aşağıdakine mantıksal eşdeğer olarak düşünmek olabilir:
if(a) {
// code
} else {
if(b) {
// code
} else {
// code
}
}
bu bakımdan Yani, bunlar iç içe diyebiliriz. Hiçbir mevcut açıklamada "elseif" var çünkü nasıl çalıştığını C ve benzeri dillerde, bu tam olarak bu. küme parantezleri Sadece daha anlaşılabilir olması için onları dahil olsa isteğe bağlıdır.
Bu dile bağlı, iç içe geçmiş bir döngü olarak uygulanmış olabilir. Ancak, mantıklı dışarı yazdım şekilde, biri sayılmaz.
onlar değil gibi onlar iç içe ama biçimlendirilir.
Kodunuz aynıdır:
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
Bu iç içe değildir:
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
Bu, tüm (?) Ifadeleri bulunup bulunmadığını dilde geçerlidir ({kullanarak gibi şeyler göz ardı} yerine endif)
Ancak, bazı diller, bu durumda gerçek bir "else" (veya "elif") komutu var değil bunu sadece bir farklı biçimlendirilmiş yuva olduğunu varsayabiliriz "eğer başka" iç içe, ancak yazılı.
Bu gerçek diline bağlıdır ve nasıl yazmış.
Örnek VB kullanarak, bu Ififadeler iç içe değildir:
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
Iken bu Ififadeler iç içe gibidir:
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
Ben evet onlar yuvalanmış söyleyebilirim. Kodunuz tamamen eşdeğerdir
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
Ben sadece boşluk değiştirdik dikkat edin. Bir dil değerlendirir zaman if...else if...elsecümlecikleri, bu doğru maddesini bulana kadar her birini test (ya da nihai vurur else). İç içe ifler tamamen aynı şekilde değerlendirir. Ayrıca açık varsa bu durum zorunlu olmadığına dikkat elsifanahtar kelime.
Ben fark Bir şey daha, şudur eşdeğer değildir kodunuza:
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"
Yuvalama olan gerekli koşulların tümü doğru olduğunda çıkış olmaktan metnin tamamını tutmak.
gösterilen sözdizimi göz önüne alındığında, cevap "Hayır" olmalıdır diğer cevaplar zihinsel birikimi aykırı düşünüyorum.
Gösterebilir:
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
Bu açıkça bir bekar if... endifdeyim ve bu nedenle hiçbir yuvalama yoktur. Birden olsaydı endififadeleri, bu iç içe olacaktır:
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
Yani, kendi dilinizde, anahtar kelime anlaşılmaktadır elif(Bourne kabuk tarafından kullanılan) ve elsif(Perl tarafından kullanılır) ve ElseIf(Visual Basic tarafından kullanılır) yazıldığından else if.
Hiçbir açık olsaydı endifaçıklamada sonunu işaretlemek için, o zaman ben diğer cevapları ile uyum içerisinde olabilecektir - o ifdüzeni mükemmel mantıklı ve tavsiye edilen olsa ifadeleri (! Çoğul), iç içe yerleştirilmiş.
Hayır öyle değil.
Bir iç içe beyanı olursa ... If gibi bir aynı deyimi içinde görünür biridir. ... Eğer ElseIf hepsi aynı "ifadesi" içindedir.
Bu semantik bir miktar anlamsız oyun; katliama karışan dilin sözdizimi bağlıdır.
parantez gerçeğini gizlemek için ihmal ile bir C-benzeri sözdiziminde Örneğin genellikle başka maddelerinde de iç içe olarak düşünülebilir. Bu durumda Turnor örneği sağ olduğunu.
diğer bazı dillerde, Python ve VB gibi 'else-if' kendi atomik yapıdır. 'Başka' içeride olduğu kabul edilemez, bu nedenle adı edilemedi 'eğer' Bu durumda “iç içe”.
if (0 <= X and X < 49)
output "abc"
else if (50 <= X and X < 70)
output "def"
endif
Eğer pseudocode sözdizimi yeterince kesin söylemek tanımlı değil, ama sondaki 'endif' şüpheli olduğunu. Varlığı C-ayraçları-atlanmış tarzı ile uymuyor; ve aslında bunlardan biri ve en fazla sadece var olduğunu -
else
if (50 <= X and X < 70)
output "def"
endif
endif
- bu with-parantez maç (veya son Başlangıç /) ya modeli anlamına gelir. Yani bu sözdizimi bakılırsa ben 'atom else-if' kampında senin yalancı kod dilini koymak ve oldukça keyfi söyleyebilirim: Hayır, senin beyanı if-yuvalanmış edilmez.
(Ama her zaman endifs isteğe bağlı veya boşluk bağımlı. Yoksa bir dil tanımlanmış olabilir, yukarıdaki Program yazdırır “Merhaba dünya” sonra tüm dosyalarınızı siler bir dil tanımladı. Ve sahip olabilir yerleşik bir posta okuyucu. )