Κυριακή, 7 Μαΐου 2017

Αναθεώρηση 18 (Έκδοση 8.7)

Σε αυτήν την αναθεώρηση διορθώθηκε η Έξοδος Για, η έξοδος από μια δομή Για Επόμενο.  Αυτή η αναθεώτηση προέκυψε από έλεγχο συμβατότητας που διενεργώ συχνά, και εδώ τρέχοντας το πρόγραμμα αυτό

Όλοι οι πιθανοί τρόπο για να διακόψουμε μια Για  {} ή μια Για Επόμενο:
Περιπτώσεις με Για Επόμενο

Για ι=1 έως 100 : Τύπωσε ι : Επόμενο ι
Για κ=1 έως 10
      Αν κ>5 τότε έξοδος για
      Τύπωσε κ
Επόμενο κ
Για κ=1 έως 10
      Αν κ>5 τότε έξοδος για 300
      Τύπωσε κ
Επόμενο κ
Τύπωσε "δεν το βλέπεις αυτό"
300 Τύπωσε "Έξοδος προς αριθμό γραμμής"
Για κ=1 έως 10
      Αν κ>5 τότε έξοδος για αλφα
      Τύπωσε κ
Επόμενο κ
Τύπωσε "δεν το βλέπεις αυτό"
\\ πρέπει το αλφα να είναι ακριβώς με πεζά/κεφαλαία/τόνους
\\ όπως δηλώνεται εδώ, αλλιώς η έξοδος θα είναι για όλο το τμήμα.
αλφα:
Τύπωσε "Έξοδος προς ετικέτα"

Περίπτώσεις με Για { }

Για ι=1 έως 100 {Τύπωσε ι }
Για κ=1 έως 10 {
      Αν κ>5 τότε έξοδος
      Τύπωσε κ
}
Για κ=1 έως 10 {
      Αν κ>5 τότε 300
      Τύπωσε κ
}
Τύπωσε "δεν το βλέπεις αυτό"
300 Τύπωσε "Έξοδος προς αριθμό γραμμής"
Για κ=1 έως 10 {
      Αν κ>5 τότε προς αλφα
      Τύπωσε κ
}
Τύπωσε "δεν το βλέπεις αυτό"
\\ πρέπει το αλφα να είναι ακριβώς με πεζά/κεφαλαία/τόνους
\\ όπως δηλώνεται εδώ, αλλιώς η έξοδος θα είναι για όλο το τμήμα.
αλφα:
Τύπωσε "Έξοδος προς ετικέτα"


Περιπτώσεις όπου θέλουμε να συνεχίσει η μέτρηση αλλά να μην εκτελεστούν όλες οι εντολές εντός της Για.
Αν το επόμενο ι είναι το τελευταίο τότε θα πάμε στο Επόμενο κ και αν είναι το τελευταίο τότε θα κάνουμε έξοδο στο 200. Παρόλο που δεν βλέπουμε μπλοκ η Για Επόμενο χρησιμοποιεί μπλοκ από το σημείο που ξεκινάει μέχρι το τέλος του κώδικα! Απλά δεν ξέρει πότε τελειώνει ο κώδικάς της, πράγμα που η Για {} ξέρει επακριβώς.  Η αν ι<2 Συνέχισε μπορεί να μπει και στη Για Επόμενο αλλά θα προκύψει λάθος στην εκτέλεση, σε άλλο σημείο, αν το ι δεν γίνει ποτέ >=2, και έτσι να μπορεί να εκτελεστεί το Επόμενο ι.
Γενικά σε τέτοιες περιπτώσεις το Για {} είναι καλύτερο (είναι και σχεδόν δυο φορές ταχύτερο από το Για Επόμενο). Η εντολή Συνέχισε δεν ανήκει στη Για {} αλλά έχει δυο εκδοχές, ως Συνέχισε εντός ενός μπλοκ, και ως Συνέχισε εντός ενός μπλοκ σε μια Επίλεξε Με /Τέλος Επιλογής, όπου του λέει να εκτελέσει τη "ροή" όπως θα ήταν αν είχε τερματίσει σε αυτό το σημείο το Με (Η Επίλεξε Με μπορεί να εκτελεί ένα Με ή μια σειρά Με, με χρήση των Διέκοψε και Συνέχισε)


Για κ=1 έως 2
      Για ι=1 έως 2
            Τύπωσε "11111"
            Αν ι <2 τότε Επόμενο ι : Επόμενο κ: Προς 200
            Τύπωσε "22222222"
      Επόμενο ι
Επόμενο κ
200
Τύπωσε "Οκ"
Για κ=1 έως 2 {
      Για ι=1 έως 2 {
            Τύπωσε "11111"
            Αν ι <2 τότε Συνέχισε
            Τύπωσε "22222222"
      }
}
Τύπωσε "Οκ"


Απαρίθμηση με μπλοκ εντολών. Εδώ σχηματίζουμε τη δομή! Η εντολή Κυκλικά απλά σημαδεύει το μπλοκ για επανάληψη και αυτή συμβαίνει όταν τερματίσει το μπλοκ (στο άγκιστρο). Η εντολή Συνέχισε πάει άμεσα στο τέλος, και αν έχουμε τη σημαία "κυκλικά" τότε κάνει άμεσα επαννεκίνηση του μπλοκ, ενώ αν όχι τότε συνεχίζουμε εκτός μπλοκ


ι=1
{
      κ=1
      {
            Τύπωσε κ,
            κ+=1
            Αν κ<=ι τότε κυκλικά
      }
      Τύπωσε
      ι+=1
      Αν ι<=5 τότε κυκλικά
}

Άλλο παράδειγμα (εδώ με ακύρωση=αληθές απλά θα κάνει το ι=1 και μετά η συνέχισε θα εγκαταλείψει το μπλοκ):

'ακύρωση=ψευδές
ακύρωση=αληθές
ι=0
{
      Αν όχι ακύρωση τότε κυκλικά
      ι++
      Αν ι< 5 τότε συνέχισε
      Τύπωσε ι
      Αν ι>=10 τότε έξοδος
}