Bu EĞER deyimi iç içe, ya da değil mi?

oy
0

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
Oluştur 11/04/2009 saat 00:47
kaynak kullanıcı
Diğer dillerde...                            


9 cevaplar

oy
-1

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.

Cevap 11/04/2009 saat 00:51
kaynak kullanıcı

oy
8

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.

Cevap 11/04/2009 saat 00:56
kaynak kullanıcı

oy
0

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.

Cevap 11/04/2009 saat 01:11
kaynak kullanıcı

oy
5

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ı.

Cevap 11/04/2009 saat 01:11
kaynak kullanıcı

oy
3

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
Cevap 11/04/2009 saat 01:17
kaynak kullanıcı

oy
3

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.

Cevap 11/04/2009 saat 01:20
kaynak kullanıcı

oy
1

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ş.

Cevap 11/04/2009 saat 01:45
kaynak kullanıcı

oy
0

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.

Cevap 11/04/2009 saat 01:54
kaynak kullanıcı

oy
1

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. )

Cevap 11/04/2009 saat 02:50
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more