Γενικό Λύκειο > Εντολή ΓΙΑ...ΑΠΟ...ΜΕΧΡΙ

Μετατροπή ΜΕΧΡΙΣ_ΟΤΟΥ σε ΓΙΑ

(1/2) > >>

ilias_s:
Καλησπέρα!

Θα ήθελα τη γνώμη σας για την Άσκηση 6 Σελ 58 των Οδηγιών Μελέτης

Παραθέτει το τμήμα προγράμματος :


--- Παράθεση ---  sum <- 10
  ΔΙΑΒΑΣΕ x
  ΑΡΧΗ_ΕΠΑΝΑΛΗΨΗΣ
    sum <- sum + x
    ΔΙΑΒΑΣΕ x
  ΜΕΧΡΙΣ_ΟΤΟΥ x <= 0
--- Τέλος παράθεσης ---

και ζητάει τη μετατροπή σε ΟΣΟ...ΕΠΑΝΑΛΑΒΕ (οκ!) και ΓΙΑ...ΑΠΟ...ΜΕΧΡΙ

Μιλάμε για μη-προκαθορισμένο αριθμό επαναλήψεων οπότε η χρήση της ΓΙΑ...ΑΠΟ...ΜΕΧΡΙ δεν συνίσταται από τον ίδιο τον ορισμό της. Κάποιος που θέλει να κάνει αυτή τη μετατροπή μπορεί μεν, αλλά αυτό προϋποθέτει χρήση της ΓΙΑ με "ανορθόδοξο" τρόπο (αλλαγή της μεταβλητής εντός του βρόγχου κτλ). Εκτός αυτού, το ίδιο το διδακτικό πακέτο, κάπου αναφέρει (στο τετράδιο μαθητή αν θυμάμαι καλά) πως κάτι τέτοιο πρέπει να αποφεύγεται...

Έχει νόημα τώρα αυτό το πράγμα;

Η συγκεκριμένη άσκηση πάντως υπήρχε και στην 1η έκδοση των Οδηγιών Μελέτης και συνεχίζει να υπάρχει και στη 2η.

Κωστας τζιαννης:
μηπως εννοει οτι πρεπει να το δειξεις ως παραδειγμα στους μαθητες περιπτωσης που δεν μπορεις να το μετατρεψεις σε για?? αλλιως δεν εχει νοημα ειναι λαθος

FANBOY_21:
Κι όμως μπορεί να γίνει, αλλά... είναι ΠΟΛΥ ΑΙΣΧΡΗ πρακτική:


--- Κώδικας: ---  sum <- 10
  ΔΙΑΒΑΣΕ x
  ΓΙΑ i ΑΠΟ 1 ΜΕΧΡΙ 1
    sum <- sum + x
    ΔΙΑΒΑΣΕ x
    ΑΝ ΟΧΙ (x <= 0) ΤΟΤΕ
      i <- 0
    ΤΕΛΟΣ_ΑΝ
  ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

--- Τέλος κώδικα ---

Χμ... ναι, πιστεύω πως η αποφυγή ή η αρνητική διαπίστωση είναι καλύτερη λύση.

Κωστας τζιαννης:
γενικα ναι γινεται αλλα στο συγκεκριμενο μαθημα απαγορευεται να αλλαζεις το μετρητη της για

FANBOY_21:

--- Παράθεση από: Κωστας τζιαννης στις 21 Οκτ 2019, 10:19:42 μμ ---γενικα ναι γινεται αλλα στο συγκεκριμενο μαθημα απαγορευεται να αλλαζεις το μετρητη της για

--- Τέλος παράθεσης ---

Ακριβώς, εξού και γιατί είναι αισχρότατος ο κώδικας που παρέθεσα.

Επίσης, λίγο άσχετο, αλλά νομίζω πως ο αρχικός κώδικας είναι λίγο κακοφτιαγμένος, καθώς αν ο πρώτος αριθμός είναι αρνητικός, δεν τον μετράει για τιμή-φρουρό.

Πλοήγηση

[0] Λίστα μηνυμάτων

[#] Επόμενη σελίδα

Μετάβαση στην πλήρη έκδοση