εισόδου 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
εισόδου 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
Σε edit: δεν πειράζει, εγώ θα συμφωνώ ήμουν wronfg σε αυτό το σημείο.
Δεν είναι, επειδή δεν ifέχει δοκιμαστεί μέσα σε ένα άλλο ifπου δοκιμάζεται true.
Ειδικότερα, το παράδειγμα σας:
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 (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 δεν πρέπει να φωλιάζει μέσα σε ένα άλλο, αν πρόκειται να φωλιάζει. Μπορεί να είναι ένθετα μέσα σε ένα άλλο -Bill η Σαύρα
Κατανοητό; Θα συμφωνήσουμε ότι είμαι λάθος σε αυτό το σημείο.
Θα μπορούσατε να σκεφτείτε από το ως λογικά ισοδύναμη με την ακόλουθη:
if(a) {
// code
} else {
if(b) {
// code
} else {
// code
}
}
Έτσι, στο πλαίσιο αυτό, θα μπορούσατε να το ονομάσουμε ένθετα. Στην C και παρόμοιες γλώσσες, αυτό είναι ακριβώς πώς λειτουργεί καθώς δεν υπάρχει «elseif» δήλωση διαθέσιμη. Τα άγκιστρα είναι προαιρετική όμως, εγώ τους περιλαμβάνεται μόνο για να καταστεί σαφέστερο.
Θα μπορούσε να εφαρμοστεί ως μια ένθετη βρόχο, ανάλογα με τη γλώσσα. Ωστόσο, ο τρόπος που το έγραψε λογικά έξω, δεν θα πρέπει να θεωρείται μία.
Είναι ένθετα, αλλά διαμορφωθεί σαν να μην είναι.
Ο κωδικός σας είναι το ίδιο:
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»), στην οποία περίπτωση θα δεν φωλιά, αλλά γραμμένο ως «άλλο αν» μπορείτε να υποθέσετε ότι είναι απλά ένα διαφορετικό τρόπο διαμορφωμένη φωλιά.
Εξαρτάται από την πραγματική γλώσσα, και πώς έχει γραφτεί.
Για παράδειγμα, χρησιμοποιώντας 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). Τα ένθετα ifs αξιολογούν με τον ίδιο ακριβώς τρόπο. Επίσης, σημειώστε ότι αυτό δεν είναι απαραιτήτως η περίπτωση εάν υπάρχει ρητή 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 shell) και elsif(χρησιμοποιείται από Perl) και ElseIf(που χρησιμοποιείται από τη Visual Basic) γράφεται else if.
Αν δεν υπήρχε ρητή endifγια να σηματοδοτήσει το τέλος της πρότασης, τότε θα είναι σε συμφωνία με τις άλλες απαντήσεις - ότι οι ifοι δηλώσεις (! Πληθυντικό) ένθετες, αν και η διάταξη είναι απόλυτα λογικό και συνιστάται.
Οχι, δεν είναι.
Μια ένθετη δήλωση είναι αυτή που εμφανίζεται μέσα στην ίδια δήλωση, όπως και Αν ... Αν. Αν ... ElseIf είναι όλα στο ίδιο «δήλωση».
Πρόκειται για ένα κάπως άσκοπο παιχνίδι της σημασιολογίας? εξαρτάται από τη σύνταξη της γλώσσας που εμπλέκονται.
Για παράδειγμα σε ένα C-σαν συντακτικό συνήθως θα θεωρούνταν ένθετη στις ρήτρες άλλο, με τα εγκάρσια στηρίγματα παραλειφθεί να συσκοτίσει το γεγονός αυτό. Σε αυτή την περίπτωση το παράδειγμα Turnor είναι σωστό.
Σε ορισμένες άλλες γλώσσες, όπως η Python και VB, «αλλιώς, αν είναι μια ατομική κατασκευή της δικής του. Στην περίπτωση αυτή, το «αν» δεν μπορεί να θεωρηθεί ότι είναι μέσα στο «άλλο», γι 'αυτό δεν θα μπορούσε να ονομαστεί «ένθετα».
if (0 <= X and X < 49)
output "abc"
else if (50 <= X and X < 70)
output "def"
endif
Δεν έχουν οριστεί η σύνταξη του ψευδοκώδικα σας αρκετά για να πούμε με σιγουριά, αλλά το trailing «endif» είναι ύποπτη. Η ύπαρξή του δεν ταιριάζει με το C-τιράντες-παραλείπεται στυλ? και το γεγονός ότι υπάρχει μόνο ένας από αυτούς και όχι περισσότερο -
else
if (50 <= X and X < 70)
output "def"
endif
endif
- σημαίνει ότι δεν ταιριάζει με τις με-τιράντες (ή έναρξης / λήξης) μοντέλο, είτε. Έτσι, αν κρίνουμε από την εν λόγω σύνταξη θα έβαζα γλώσσα ψευδοκώδικα σας στην «ατομική άλλο, αν κατασκήνωση, και να πω αρκετά αυθαίρετα: Όχι, το αν-δήλωση δεν ένθετα.
(Αλλά θα μπορούσατε πάντα να ορίζεται μια γλώσσα όπου endifs είναι προαιρετικές ή κενά που εξαρτώνται. Ή, μπορεί να έχετε καθορίσει μια γλώσσα όπου οι παραπάνω εκτυπώσεις πρόγραμμα «Hello world», στη συνέχεια, διαγράφει όλα τα αρχεία σας. Και έχει ένα ενσωματωμένο αναγνώστη ταχυδρομείου. )