Σε αυτήν την αναθεώρηση διορθώθηκε η Έξοδος Για, η έξοδος από μια δομή Για Επόμενο. Αυτή η αναθεώτηση προέκυψε από έλεγχο συμβατότητας που διενεργώ συχνά, και εδώ τρέχοντας το πρόγραμμα αυτό
Όλοι οι πιθανοί τρόπο για να διακόψουμε μια Για {} ή μια Για Επόμενο:
Περιπτώσεις με Για Επόμενο
Περίπτώσεις με Για { }
Περιπτώσεις όπου θέλουμε να συνεχίσει η μέτρηση αλλά να μην εκτελεστούν όλες οι εντολές εντός της Για.
Αν το επόμενο ι είναι το τελευταίο τότε θα πάμε στο Επόμενο κ και αν είναι το τελευταίο τότε θα κάνουμε έξοδο στο 200. Παρόλο που δεν βλέπουμε μπλοκ η Για Επόμενο χρησιμοποιεί μπλοκ από το σημείο που ξεκινάει μέχρι το τέλος του κώδικα! Απλά δεν ξέρει πότε τελειώνει ο κώδικάς της, πράγμα που η Για {} ξέρει επακριβώς. Η αν ι<2 Συνέχισε μπορεί να μπει και στη Για Επόμενο αλλά θα προκύψει λάθος στην εκτέλεση, σε άλλο σημείο, αν το ι δεν γίνει ποτέ >=2, και έτσι να μπορεί να εκτελεστεί το Επόμενο ι.
Γενικά σε τέτοιες περιπτώσεις το Για {} είναι καλύτερο (είναι και σχεδόν δυο φορές ταχύτερο από το Για Επόμενο). Η εντολή Συνέχισε δεν ανήκει στη Για {} αλλά έχει δυο εκδοχές, ως Συνέχισε εντός ενός μπλοκ, και ως Συνέχισε εντός ενός μπλοκ σε μια Επίλεξε Με /Τέλος Επιλογής, όπου του λέει να εκτελέσει τη "ροή" όπως θα ήταν αν είχε τερματίσει σε αυτό το σημείο το Με (Η Επίλεξε Με μπορεί να εκτελεί ένα Με ή μια σειρά Με, με χρήση των Διέκοψε και Συνέχισε)
Απαρίθμηση με μπλοκ εντολών. Εδώ σχηματίζουμε τη δομή! Η εντολή Κυκλικά απλά σημαδεύει το μπλοκ για επανάληψη και αυτή συμβαίνει όταν τερματίσει το μπλοκ (στο άγκιστρο). Η εντολή Συνέχισε πάει άμεσα στο τέλος, και αν έχουμε τη σημαία "κυκλικά" τότε κάνει άμεσα επαννεκίνηση του μπλοκ, ενώ αν όχι τότε συνεχίζουμε εκτός μπλοκ
Άλλο παράδειγμα (εδώ με ακύρωση=αληθές απλά θα κάνει το ι=1 και μετά η συνέχισε θα εγκαταλείψει το μπλοκ):
Όλοι οι πιθανοί τρόπο για να διακόψουμε μια Για {} ή μια Για Επόμενο:
Περιπτώσεις με Για Επόμενο
Για
ι=1 έως
100 : Τύπωσε
ι : Επόμενο
ι
Για κ=1 έως 10
Αν κ>5 τότε έξοδος για
Τύπωσε κ
Επόμενο κ
Για κ=1 έως 10
Αν κ>5 τότε έξοδος για 300
Τύπωσε κ
Επόμενο κ
Τύπωσε "δεν το βλέπεις αυτό"
300 Τύπωσε "Έξοδος προς αριθμό γραμμής"
Για κ=1 έως 10
Αν κ>5 τότε έξοδος για αλφα
Τύπωσε κ
Επόμενο κ
Τύπωσε "δεν το βλέπεις αυτό"
\\ πρέπει το αλφα να είναι ακριβώς με πεζά/κεφαλαία/τόνους
\\ όπως δηλώνεται εδώ, αλλιώς η έξοδος θα είναι για όλο το τμήμα.
αλφα:
Τύπωσε "Έξοδος προς ετικέτα"
Για κ=1 έως 10
Αν κ>5 τότε έξοδος για
Τύπωσε κ
Επόμενο κ
Για κ=1 έως 10
Αν κ>5 τότε έξοδος για 300
Τύπωσε κ
Επόμενο κ
Τύπωσε "δεν το βλέπεις αυτό"
300 Τύπωσε "Έξοδος προς αριθμό γραμμής"
Για κ=1 έως 10
Αν κ>5 τότε έξοδος για αλφα
Τύπωσε κ
Επόμενο κ
Τύπωσε "δεν το βλέπεις αυτό"
\\ πρέπει το αλφα να είναι ακριβώς με πεζά/κεφαλαία/τόνους
\\ όπως δηλώνεται εδώ, αλλιώς η έξοδος θα είναι για όλο το τμήμα.
αλφα:
Τύπωσε "Έξοδος προς ετικέτα"
Περίπτώσεις με Για { }
Για
ι=1 έως
100 {Τύπωσε
ι }
Για κ=1 έως 10 {
Αν κ>5 τότε έξοδος
Τύπωσε κ
}
Για κ=1 έως 10 {
Αν κ>5 τότε 300
Τύπωσε κ
}
Τύπωσε "δεν το βλέπεις αυτό"
300 Τύπωσε "Έξοδος προς αριθμό γραμμής"
Για κ=1 έως 10 {
Αν κ>5 τότε προς αλφα
Τύπωσε κ
}
Τύπωσε "δεν το βλέπεις αυτό"
\\ πρέπει το αλφα να είναι ακριβώς με πεζά/κεφαλαία/τόνους
\\ όπως δηλώνεται εδώ, αλλιώς η έξοδος θα είναι για όλο το τμήμα.
αλφα:
Τύπωσε "Έξοδος προς ετικέτα"
Για κ=1 έως 10 {
Αν κ>5 τότε έξοδος
Τύπωσε κ
}
Για κ=1 έως 10 {
Αν κ>5 τότε 300
Τύπωσε κ
}
Τύπωσε "δεν το βλέπεις αυτό"
300 Τύπωσε "Έξοδος προς αριθμό γραμμής"
Για κ=1 έως 10 {
Αν κ>5 τότε προς αλφα
Τύπωσε κ
}
Τύπωσε "δεν το βλέπεις αυτό"
\\ πρέπει το αλφα να είναι ακριβώς με πεζά/κεφαλαία/τόνους
\\ όπως δηλώνεται εδώ, αλλιώς η έξοδος θα είναι για όλο το τμήμα.
αλφα:
Τύπωσε "Έξοδος προς ετικέτα"
Περιπτώσεις όπου θέλουμε να συνεχίσει η μέτρηση αλλά να μην εκτελεστούν όλες οι εντολές εντός της Για.
Αν το επόμενο ι είναι το τελευταίο τότε θα πάμε στο Επόμενο κ και αν είναι το τελευταίο τότε θα κάνουμε έξοδο στο 200. Παρόλο που δεν βλέπουμε μπλοκ η Για Επόμενο χρησιμοποιεί μπλοκ από το σημείο που ξεκινάει μέχρι το τέλος του κώδικα! Απλά δεν ξέρει πότε τελειώνει ο κώδικάς της, πράγμα που η Για {} ξέρει επακριβώς. Η αν ι<2 Συνέχισε μπορεί να μπει και στη Για Επόμενο αλλά θα προκύψει λάθος στην εκτέλεση, σε άλλο σημείο, αν το ι δεν γίνει ποτέ >=2, και έτσι να μπορεί να εκτελεστεί το Επόμενο ι.
Γενικά σε τέτοιες περιπτώσεις το Για {} είναι καλύτερο (είναι και σχεδόν δυο φορές ταχύτερο από το Για Επόμενο). Η εντολή Συνέχισε δεν ανήκει στη Για {} αλλά έχει δυο εκδοχές, ως Συνέχισε εντός ενός μπλοκ, και ως Συνέχισε εντός ενός μπλοκ σε μια Επίλεξε Με /Τέλος Επιλογής, όπου του λέει να εκτελέσει τη "ροή" όπως θα ήταν αν είχε τερματίσει σε αυτό το σημείο το Με (Η Επίλεξε Με μπορεί να εκτελεί ένα Με ή μια σειρά Με, με χρήση των Διέκοψε και Συνέχισε)
Για
κ=1 έως
2
Για ι=1 έως 2
Τύπωσε "11111"
Αν ι <2 τότε Επόμενο ι : Επόμενο κ: Προς 200
Για ι=1 έως 2
Τύπωσε "11111"
Αν ι <2 τότε Επόμενο ι : Επόμενο κ: Προς 200
Τύπωσε
"22222222"
Επόμενο ι
Επόμενο κ
200
Τύπωσε "Οκ"
Για κ=1 έως 2 {
Για ι=1 έως 2 {
Τύπωσε "11111"
Αν ι <2 τότε Συνέχισε
Τύπωσε "22222222"
}
}
Τύπωσε "Οκ"
Επόμενο ι
Επόμενο κ
200
Τύπωσε "Οκ"
Για κ=1 έως 2 {
Για ι=1 έως 2 {
Τύπωσε "11111"
Αν ι <2 τότε Συνέχισε
Τύπωσε "22222222"
}
}
Τύπωσε "Οκ"
Απαρίθμηση με μπλοκ εντολών. Εδώ σχηματίζουμε τη δομή! Η εντολή Κυκλικά απλά σημαδεύει το μπλοκ για επανάληψη και αυτή συμβαίνει όταν τερματίσει το μπλοκ (στο άγκιστρο). Η εντολή Συνέχισε πάει άμεσα στο τέλος, και αν έχουμε τη σημαία "κυκλικά" τότε κάνει άμεσα επαννεκίνηση του μπλοκ, ενώ αν όχι τότε συνεχίζουμε εκτός μπλοκ
ι=1
{
κ=1
{
Τύπωσε κ,
κ+=1
Αν κ<=ι τότε κυκλικά
}
Τύπωσε
ι+=1
Αν ι<=5 τότε κυκλικά
}
{
κ=1
{
Τύπωσε κ,
κ+=1
Αν κ<=ι τότε κυκλικά
}
Τύπωσε
ι+=1
Αν ι<=5 τότε κυκλικά
}
Άλλο παράδειγμα (εδώ με ακύρωση=αληθές απλά θα κάνει το ι=1 και μετά η συνέχισε θα εγκαταλείψει το μπλοκ):
'ακύρωση=ψευδές
ακύρωση=αληθές
ι=0
{
Αν όχι ακύρωση τότε κυκλικά
ι++
Αν ι< 5 τότε συνέχισε
Τύπωσε ι
Αν ι>=10 τότε έξοδος
}
ακύρωση=αληθές
ι=0
{
Αν όχι ακύρωση τότε κυκλικά
ι++
Αν ι< 5 τότε συνέχισε
Τύπωσε ι
Αν ι>=10 τότε έξοδος
}
Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου
You can feel free to write any suggestion, or idea on the subject.