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

Επαγγελματικό Λύκειο => Γενικά => Προγραμματισμός Υπολογιστών => Μήνυμα ξεκίνησε από: Mhtsos στις 30 Νοε 2012, 12:54:34 ΠΜ

Τίτλος: Συνθήκη επανέλαβε... Μέχρι
Αποστολή από: Mhtsos στις 30 Νοε 2012, 12:54:34 ΠΜ
Στην συνθήκη επανάληψης (επανέλαβε μέχρι ) άμα μου ζητάει να διαβάζω συνέχεια αριθμούς  μεχριν να δοθεί ο αριθμός 0 ή αριθμός μικρότερος από το 0. θα πρέπει να έλεγχο τον αριθμό που θα καταχωρηθεί κάθε φορά άμα είναι μεγαλύτερος από το 0;

Π.χ
Αρχή
Επανέλαβε
Διάβασε χ
Αν χ>0
Τότε
Αρχή
Υ:=x*2
Εμφάνισε y
Τέλος
Μέχρι χ<=0
Τέλος 
Τίτλος: Απ: Συνθήκη επανέλαβε... Μέχρι
Αποστολή από: dpa2006 στις 30 Νοε 2012, 10:49:38 ΠΜ
για την αρχή επανάληψης δες εδώ (http://users.sch.gr/ptsiotakis/old/aepp/aepp_theory2c.htm)
αν για παράδειγμα θέλεις να διαβάσεις αριθμούς μέχρι ότου δοθει αρνητικός ή μηδέν θα μπορούσες να γράψεις το εξής:
<εντολές>
Αρχή_Επανάληψης
    Διάβασε αριθμός
    <εντολές>
Μέχρις_Ότου αριθμός<=0
<εντολές>
Τίτλος: Απ: Συνθήκη επανέλαβε... Μέχρι
Αποστολή από: Νίκος Αδαμόπουλος στις 30 Νοε 2012, 02:09:51 ΜΜ
Παράθεση από: Mhtsos στις 30 Νοε 2012, 12:54:34 ΠΜ
Στην συνθήκη επανάληψης (επανέλαβε μέχρι ) άμα μου ζητάει να διαβάζω συνέχεια αριθμούς  μεχριν να δοθεί ο αριθμός 0 ή αριθμός μικρότερος από το 0. θα πρέπει να έλεγχο τον αριθμό που θα καταχωρηθεί κάθε φορά άμα είναι μεγαλύτερος από το 0;

Εξαρτάται από το ποιο είναι το ζητούμενο! Ποιο είναι το ζητούμενο στη περίπτωση που αναφέρεις;
Τίτλος: Απ: Συνθήκη επανέλαβε... Μέχρι
Αποστολή από: petrosp13 στις 30 Νοε 2012, 05:23:19 ΜΜ
Παράθεση από: dpa2006 στις 30 Νοε 2012, 10:49:38 ΠΜ
για την αρχή επανάληψης δες εδώ (http://users.sch.gr/ptsiotakis/old/aepp/aepp_theory2c.htm)
αν για παράδειγμα θέλεις να διαβάσεις αριθμούς μέχρι ότου δοθει αρνητικός ή μηδέν θα μπορούσες να γράψεις το εξής:
<εντολές>
Αρχή_Επανάληψης
    Διάβασε αριθμός
    <εντολές>
Μέχρις_Ότου αριθμός<=0
<εντολές>

Αυτό δεν είναι ακριβώς σωστό
Όταν δοθεί αρνητικός αριθμός ή μηδέν, οι εντολές μέσα στην επανάληψη δεν θα πρέπει να εκτελεστούν
Το πρόβλημα λύνεται με μια εντολή Διάβασε πριν την επανάληψη και μια εντολή Διάβασε πριν την συνθήκη του Μέχρις_Ότου
Τίτλος: Απ: Συνθήκη επανέλαβε... Μέχρι
Αποστολή από: Mhtsos στις 30 Νοε 2012, 09:55:53 ΜΜ
Η άσκηση λέει να διαβάζει έναν αριθμό και θα εμφανίζει το διπλάσιο του.αυτο θα επαναλαμβάνεται συνεχώς μέχρι να δοθεί ένας αρνητικός αριθμός η το μηδέν.
Τίτλος: Απ: Συνθήκη επανέλαβε... Μέχρι
Αποστολή από: Νίκος Αδαμόπουλος στις 30 Νοε 2012, 10:45:38 ΜΜ
Παράθεση από: petrosp13 στις 30 Νοε 2012, 05:23:19 ΜΜ
Όταν δοθεί αρνητικός αριθμός ή μηδέν, οι εντολές μέσα στην επανάληψη δεν θα πρέπει να εκτελεστούν
Το πρόβλημα λύνεται με μια εντολή Διάβασε πριν την επανάληψη και μια εντολή Διάβασε πριν την συνθήκη του Μέχρις_Ότου

Κι αν δοθεί από την αρχή αρνητικός αριθμός ή μηδέν (στην 1η Διάβασε), πάλι δεν θα πρέπει να διασφαλισθεί ότι οι εντολές δεν θα εκτελεστούν για αυτόν τον αριθμό;
Τίτλος: Απ: Συνθήκη επανέλαβε... Μέχρι
Αποστολή από: petrosp13 στις 30 Νοε 2012, 11:19:54 ΜΜ
Προφανώς με μια επανάληψη Όσο λύνεται και αυτό το πρόβλημα, αν και θεωρώ μη λογικό να ελεγχθεί μια τέτοια περίπτωση
Τίτλος: Απ: Συνθήκη επανέλαβε... Μέχρι
Αποστολή από: Νίκος Αδαμόπουλος στις 02 Δεκ 2012, 01:58:43 ΜΜ
Παράθεση από: petrosp13 στις 30 Νοε 2012, 11:19:54 ΜΜ
... θεωρώ μη λογικό να ελεγχθεί μια τέτοια περίπτωση

Το θέμα είναι αν θα θεωρηθεί σωστό να μην ελεγχθεί...
Τίτλος: Απ: Συνθήκη επανέλαβε... Μέχρι
Αποστολή από: Καρκαμάνης Γεώργιος στις 02 Δεκ 2012, 11:17:59 ΜΜ
Παράθεση από: Mhtsos στις 30 Νοε 2012, 12:54:34 ΠΜ
Στην συνθήκη επανάληψης (επανέλαβε μέχρι ) άμα μου ζητάει να διαβάζω συνέχεια αριθμούς  μεχριν να δοθεί ο αριθμός 0 ή αριθμός μικρότερος από το 0. θα πρέπει να έλεγχο τον αριθμό που θα καταχωρηθεί κάθε φορά άμα είναι μεγαλύτερος από το 0;

Π.χ
Αρχή
Επανέλαβε
Διάβασε χ
Αν χ>0
Τότε
Αρχή
Υ:=x*2
Εμφάνισε y
Τέλος
Μέχρι χ<=0
Τέλος 

Η λύση που διατυπώνεις είναι η σωστή, καθώς συνηθίζεται η τιμή που δίνεται για τερματισμό της επανάληψης,  να μην χρησιμοποιείται σε οποιαδήποτε πράξη, αθροίσματα, κλπ και να χρησιμοποιείται μόνο για να τερματίζει μια επαναληπτική διαδικασία.
Γι' αυτό τον λόγο τοποθετείται στο εσωτερικό της επανάλαβε, και μετά το Διάβασε, μία εντολή Αν που αποτρέπει την εκτέλεση οποιαδήποτε πράξης με την τιμή τερματισμού.