Το Στέκι των Πληροφορικών

Γενικό Λύκειο => Γ΄ Λυκείου => Δομή επανάληψης => Μήνυμα ξεκίνησε από: nikolasmer στις 02 Φεβ 2013, 03:09:23 μμ

Τίτλος: Μετατροπή Για σε Όσο
Αποστολή από: nikolasmer στις 02 Φεβ 2013, 03:09:23 μμ
Πιστέυω πως σίγουρα έχω κάνει κάποιο λάθος.

Το παρακάτω ορίζεται έτσι δεν είναι;

Διάβασε κ
Αν κ ≠ 0 τότε
  Για κ από κ μέχρι κ με_βήμα κ
    Εμφάνισε κ
  Τέλος_επανάληψης
Τέλος_αν

και απ' οτι φαίνεται εκτελείται μια φορά.
Κάνω μετατροπή σε όσο και έχω ατέρμον.

Αν κ ≠ 0 τότε
  κ ← κ
  Αν κ < 0 τότε
    Όσο κ ≥ κ επανάλαβε
      Εμφάνισε κ
      κ ← κ - 1
    Τέλος_επανάληψης
  αλλιώς
    Όσο κ ≤ κ επανάλαβε
      Εμφάνισε κ
      κ ← κ + 1
    Τέλος_επανάληψης
  Τέλος_αν
Τέλος_αν
Τέλος α2

Τί στο καλό συμβαίνει.  :'(
Δεν μπορώ να εντοπίσω το λάθος μου.
Τίτλος: Απ: Μετατροπή Για σε Όσο
Αποστολή από: zsdregas στις 02 Φεβ 2013, 04:09:36 μμ
Αυτές οι δύο είναι πάντα αληθείς, όσο κι αν αλλάζει το κ.

Κώδικας: [Επιλογή]
Όσο κ ≥ κ επανάλαβε
Κώδικας: [Επιλογή]
Όσο κ ≤ κ επανάλαβε
Οπότε ό,ποια από τις δύο εκτελείται θα έχεις τον ατέρμονα βρόγχο.
Τίτλος: Απ: Μετατροπή Για σε Όσο
Αποστολή από: nikolasmer στις 02 Φεβ 2013, 04:12:41 μμ
οκ το καταλαβαίνω.
Αλλά εφόσον έχω μετατροπή απο μια δομή σε άλλη , ο αριθμός των εκτελέσεων έπρεπε να είναι ίδιος σωστά; ακολουθώ τα βήματα μετατροπών και καταλήγω εκεί.
Πως θα έπρεπε να έχω τις συνθήκες;
Τίτλος: Απ: Μετατροπή Για σε Όσο
Αποστολή από: noname στις 02 Φεβ 2013, 04:39:43 μμ
Δεν βρίσκω κάποιο ιδιαίτερο νόημα σε μια επανάληψη του τύπου:
Κώδικας: [Επιλογή]
Για κ από κ μέχρι κ με_βήμα κ
    Εμφάνισε κ
  Τέλος_επανάληψης
αλλά πέρα από αυτό, στην εντολή Για -όπως εκτελείται στον διερμηνευτή- το από κ , το μέχρι κ και το με_βήμα κ,  δεν είναι το ίδιο με το Για κ. Το από και το μέχρι ορίζονται οριστικά κατά τον πρώτο έλεγχο στον βρόχο και δεν επηρεάζονται από μετέπειτα αλλαγές του κ.
Όταν όμως κάνεις τη μετατροπή, η τελική τιμή
Κώδικας: [Επιλογή]
Όσο κ<=κ επανάλαβε επαναπροσδιορίζεται κάθε φορά αφού η σύγκριση γίνεται κάθε φορά μεταξύ της μεταβλητής και του εαυτού της.
Τίτλος: Απ: Μετατροπή Για σε Όσο
Αποστολή από: nikolasmer στις 02 Φεβ 2013, 04:46:34 μμ
στην εντολή Για -όπως εκτελείται στον διερμηνευτή- το από κ , το μέχρι κ και το με_βήμα κ,  δεν είναι το ίδιο με το Για κ. Το από και το μέχρι ορίζονται οριστικά κατά τον πρώτο έλεγχο στον βρόχο και δεν επηρεάζονται από μετέπειτα αλλαγές του κ.

Αυτό το οριστικά σημαίνει πως ακόμα και αν μέσα στη Για αλλάξω τις τιμές του από και μέχρι θα έχω πρόβλημα ή το μόνο που δεν πειράζουμε είναι το με_βήμα;
Τίτλος: Απ: Μετατροπή Για σε Όσο
Αποστολή από: noname στις 02 Φεβ 2013, 05:20:20 μμ
Αυτό που σου έγραψα είναι το πώς (βλέπω να) εκτελείται μέσα στον διερμηνευτή. Για παράδειγμα στο pseudolglossa.gr το αντίστοιχο κομμάτι κολλάει. :-) Προφανώς έχει οριστεί διαφορετικά ο τρόπος εκτέλεσης.

Αν ακολουθήσουμε τον τρόπο εκτέλεσης που περιέγραψες αρχικά, τότε οποιοσδήποτε βρόχος με τελική τιμή κ θα κολλάει. :-)

Κώδικας: [Επιλογή]
Για κ από Χ μέχρι κ με_βήμα Β
 ...
Τέλος_επανάληψης

Τίτλος: Απ: Μετατροπή Για σε Όσο
Αποστολή από: gthal στις 02 Φεβ 2013, 08:29:06 μμ
Η αρχική ΓΙΑ είναι προβληματική από μόνη της
  Για κ από κ μέχρι κ με_βήμα κ
    Εμφάνισε κ
  Τέλος_επανάληψης

Ο κ αλλάζει σε κάθε επανάληψη, αλλά ο κ είναι ταυτόχρονα αρχική τιμή, τελική τιμή και βήμα
το να αλλάζουμε αυτές τις τιμές όσο εκτελείται η για, είπαμε, είναι προβληματικό (και νομίζω απαγορευμένο στην ΑΕΠΠ)
Τίτλος: Απ: Μετατροπή Για σε Όσο
Αποστολή από: Λαμπράκης Μανώλης στις 01 Νοε 2014, 09:57:53 πμ
Η αρχική ΓΙΑ είναι προβληματική από μόνη της
  Για κ από κ μέχρι κ με_βήμα κ
    Εμφάνισε κ
  Τέλος_επανάληψης

Ο κ αλλάζει σε κάθε επανάληψη, αλλά ο κ είναι ταυτόχρονα αρχική τιμή, τελική τιμή και βήμα
το να αλλάζουμε αυτές τις τιμές όσο εκτελείται η για, είπαμε, είναι προβληματικό (και νομίζω απαγορευμένο στην ΑΕΠΠ)

καλημέρα σε όλους

να πω και εγώ την άποψή μου... συμφωνώ μα τον συνάδελφο gthal, εγώ προσωπικά έχω καταλάβει ότι στο ΑΕΠΠ δεν αλλάζουμε τις τιμές της ΓΙΑ μέσα στην επανάληψη..... επίσηε θεωρώ πως είναι ολόσωστη η δομή

Για λ από κ μέχρι κ με_βήμα κ ...δηλαδή όλες οι τιμές μπορεί να είνια ίδιες, εκτός φυσικά το βήμα 0, και πάντα κάνει 1 επανάληψη, απλά ο μετρητής πρέπει να είναι κάποιο διαφορετική μεταβλητή