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

Γενικό Λύκειο => Γ΄ Λυκείου => Δομή επανάληψης => Μήνυμα ξεκίνησε από: evry στις 11 Δεκ 2007, 03:01:48 ΜΜ

Τίτλος: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: evry στις 11 Δεκ 2007, 03:01:48 ΜΜ

    Αν σας έλεγαν να μετατρέψετε την παρακάτω δομή επανάληψης σε Για...Από...Μέχρι τι θα απαντούσατε?

Κώδικας [Επιλογή]

Ι <-- 27
ΟΣΟ Ι <= 28 ΕΠΑΝΑΛΑΒΕ
   ΕΜΦΑΝΙΣΕ Ι
   Ι <-- Ι  - 8
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: clevercitizen στις 11 Δεκ 2007, 03:21:39 ΜΜ
Ατέρμονος βρόγχος? Χρησιμοποιούμε την ΓΙΑ όταν ξέρουμε τον ακριβή αριθμό επαναλήψεων. Εδώ οι επαναλήψεις είναι άπειρες.
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: alkisg στις 11 Δεκ 2007, 05:24:44 ΜΜ
Κώδικας (ΓΛΩΣΣΑ) [Επιλογή]

ΓΙΑ ι ΑΠΟ 27 ΜΕΧΡΙ 28 !ΜΕ_ΒΗΜΑ 1
  ΓΡΑΨΕ ι
  ι <- ι - 9
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ


:) :) :) lol
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: Βρακόπουλος Αθανάσιος Λ. στις 12 Δεκ 2007, 05:59:16 ΜΜ
Αυτή η επανάληψη εκτελείται άπειρες φορές.
Μια τέτοια δομή επανάληψης δεν μπορεί να γραφεί με το την δομή «Για».
Η δομή επανάληψης  «Για» χρησιμοποιείται για να  εκφράσουμε επανάληψη με καθορισμένο αριθμό επαναλήψεων.
Το τμήμα αλγορίθμου:
ΓΙΑ ι ΑΠΟ 27 ΜΕΧΡΙ 28 !ΜΕ_ΒΗΜΑ 1
  ΓΡΑΨΕ ι
  ι <- ι - 9
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

δεν πρέπει να έχει την εντολή "ι <- ι - 9" διότι αυτή αλλάζει την τιμή της μεταβλητής "ι".
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: alkisg στις 12 Δεκ 2007, 07:22:01 ΜΜ
Εννοείται ότι το πρότεινα για αστείο, γι' αυτό έβαλα και τα lol (laugh out loud) στο τέλος...

Σύμφωνα με το σχολικό εγχειρίδιο δεν προτείνεται να μεταβάλλουμε την τιμή του μετρητή εντός της επανάληψης.
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: EleniK στις 14 Δεκ 2007, 12:26:07 ΠΜ
και εγώ νομίζω θα έγραφα οτι δε γίνεται η μεατροπή, λόγω του ότι είναι ατερμων.
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: Χάρης Τσιαΐρης στις 14 Δεκ 2007, 06:56:34 ΠΜ
Επειδή δεν ίσχύει το κρητήριο της περατότητας, συμπερένουμε ότι δεν είναι αλγόριθμος αλλά υπολογιστική διαδικασία. Άρα δεν έχω να περιγράψω ισοδύναμο αλγόριθμο (κάτι που δεν γίνεται εξάλου), αλλά ισοδύναμη υπολογιστική διαδικασία. (Δηλ. να έχει την ίδια έξοδο για την ίδια είσοδο.)
ʼρα θα έστεκε σαν απάντηση ένας ατέρμονος βρόγχος για κ ... με βήμα 0 (με άσχετη μεταβλητή) που προφανώς δεν είναι αλγόριθμος, αλλά υπολογιστική διαδικασία.

Χάρης Τσιαΐρης
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: prapasl στις 12 Μαΐου 2008, 11:24:45 ΠΜ
Στα θέματα Εσπερινών Ιουνίου 2007 έχει την εξής ερώτηση:

(ΘΕΜΑ 1β)
Δίνεται η παρακάτω εντολή:

Για Α από Β μέχρι Γ με_βήμα Δ
  Εμφάνισε "ΚΑΛΗΣΠΕΡΑ"
Τέλος_επανάληψης

Να γράψετε στο τετράδιό σας πόσες φορές εκτελείται η εντολή Εμφάνισε για καθένα από τους παρακάτω συνδυασμούς των τιμών των μεταβλητών Β, Γ και Δ:
1. Β = 2 Γ = 5 Δ = 1
2. Β =-1 Γ = 1 Δ = 0,5
3. Β =-7 Γ =-6 Δ =-5
4. Β = 5 Γ = 5 Δ = 1

Στον συνδυασμό 3 η απάντηση είναι άπειρες ή καμμία;

Η μετατροπή σε Όσο είναι αυτή...

Α <-- -7
ΟΣΟ Α >= -6 ΕΠΑΝΑΛΑΒΕ
  ΕΜΦΑΝΙΣΕ 'ΚΑΛΗΣΠΕΡΑ'
  Α <-- Α - 5
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

... οπότε δεν εκτελείται καμμία ή αυτή...

Α <-- -7
ΟΣΟ Α <= -6 ΕΠΑΝΑΛΑΒΕ
  ΕΜΦΑΝΙΣΕ 'ΚΑΛΗΣΠΕΡΑ'
  Α <-- Α - 5
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

... οπότε εκτελείται άπειρες !!

Τελικά η φορά του τελεστή σύγκρισης αποφασίζεται από το βήμα (αν θετικό τότε <=, αν αρνητικό >=) ή από το αν τα όρια τιμών του μετρητή πηγαίνουν από κάτω προς τα πάνω (<=) ή από πάνω προς τα κάτω (>=); Είναι προφανές ότι το ένα κριτήριο έρχεται σε σύγκρουση με το άλλο.

Στις τάξεις διαφορετικοί καθηγητές δίνουν διαφορετικές απάντήσεις.
Παρακαλώ πείτε τη γνώμη σας.
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: Αλεξόπουλος Ανδρέας στις 12 Μαΐου 2008, 11:51:14 ΠΜ
Σύμφωνα και με τα παραδείγματα του βιβλίου το πρώτο, δηλαδή το βήμα καθορίζει την φορά του τελεστή σύγκρισης. Εξάλλου η ερώτηση αυτή είναι παρόμοια με το παράδειγμα που αναφέρει το βιβλίο στη σελίδα 44 στο πλάι αριστερά όπου λέει ότι ο βρόχος "Για κ από 5 μέχρι 1" (ενοείται το βήμα θετικό) δεν εκτελείται καμμία φορά. Δηλαδή εδώ έχουμε αρχική τιμή μεγαλύτερη της τελικής και βήμα θετικό, ενώ η ερώτηση στις πανελλήνιες ήταν αρχική τιμή μικρότερη της τελικής και βήμα αρνητικό
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: P.Tsiotakis στις 12 Μαΐου 2008, 11:59:55 ΠΜ
Ακριβώς Ανδρέα..

Λεωνίδα, μας βλέπω να καραφλιάζουμε
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: andreas_p στις 12 Μαΐου 2008, 04:22:04 ΜΜ
Στις τάξεις διαφορετικοί καθηγητές δίνουν διαφορετικές απάντήσεις.

To  καθηγητές , αν το βάλεις σε   '  '  τότε  ...  είμαστε  οκ. (no comment)


Ανδρέας
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: MichaelP στις 04 Δεκ 2008, 04:05:15 ΠΜ
Αν και εχει να λαβει απαντησεις καιρό, θα ήθελα να ρωτησω, ποιο το πρόβλημα του να μεταβάλλεται η μεταβλητη της ΓΙΑ εντός του block αυτης, αν ο κώδικας που προκύπτει δεν είναι ατερμων βρογχος, δηλαδή πληροί τα αλγοριθμικά κριτηρια; :-\

Μ.
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: Laertis στις 04 Δεκ 2008, 08:51:27 ΠΜ
Το πρόβλημα είναι "ψυχολογικό"  ;)
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: evry στις 04 Δεκ 2008, 04:01:00 ΜΜ
  Παραβιάζει τα κριτήρια ορθότητας της δομής Για όπως αυτή ορίζεται στο τετράδιο του μαθητή και φέρνει σε δύσκολη θέση
τους συγγραφείς του διδακτικού πακέτου >:D

Παράθεση από: MichaelP στις 04 Δεκ 2008, 04:05:15 ΠΜ
Αν και εχει να λαβει απαντησεις καιρό, θα ήθελα να ρωτησω, ποιο το πρόβλημα του να μεταβάλλεται η μεταβλητη της ΓΙΑ εντός του block αυτης, αν ο κώδικας που προκύπτει δεν είναι ατερμων βρογχος, δηλαδή πληροί τα αλγοριθμικά κριτηρια; :-\

Μ.
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: pgrontas στις 04 Δεκ 2008, 04:46:17 ΜΜ
Παράθεση από: evry στις 04 Δεκ 2008, 04:01:00 ΜΜ
  Παραβιάζει τα κριτήρια ορθότητας της δομής Για όπως αυτή ορίζεται στο τετράδιο του μαθητή και φέρνει σε δύσκολη θέση
τους συγγραφείς του διδακτικού πακέτου >:D

Παράθεση από: MichaelP στις 04 Δεκ 2008, 04:05:15 ΠΜ
Αν και εχει να λαβει απαντησεις καιρό, θα ήθελα να ρωτησω, ποιο το πρόβλημα του να μεταβάλλεται η μεταβλητη της ΓΙΑ εντός του block αυτης, αν ο κώδικας που προκύπτει δεν είναι ατερμων βρογχος, δηλαδή πληροί τα αλγοριθμικά κριτηρια; :-\

Μ.

Σωστός!!!
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: MichaelP στις 04 Δεκ 2008, 06:12:45 ΜΜ
Θα μπορούσαμε να ισχυριστούμε ότι είναι αυτό που λέμε: "Κακή προγραμματιστική τεχνική". Σαφώς και είναι διότι, δεν συμβάλει στην ευκολία συντήρισης του κώδικα. Αυτό όμως δε σημαίνει ότι απαγορεύεται... Με κάτι τέτοιο θα συμφωνούσα, αλλά δεν θα συμφωνίσω, με όλο το σεβασμό, ότι ή δομή έχει κριτήρια ορθότητας πέρα απο το συντακτικό της.
Επιπλέον, σκευθείτε ότι το βιβλίο αναφέρει πως η μόνη δομή επανάληψης που πάντα εκτελείται τουλάχιστον μία φορά είναι η "Αρχή_Επανάληψης" και που υποννοεί σαφώς ότι η "Για" μπορεί να μήν εκτελεστεί ούτε μία φορά όταν τέλος>αρχή και βήμα < 0 (ή αντίστροφα) και αυτό δεν θεωρείται κακή προγραμματιστική τεχνική, συμπεραίνουμε ότι υπάρχει ασάφεια ως προς τα όρια χρήσης των δομών.
Άλλο παράδειγμα είναι το άν "επιτρέπεται" η χρήση της "Για" με όρια ή/και βήμα μεταβλητές. Αυτό θεωρείται καλή προγραμματιστική τεχνική; Κατα τη γνώμη μου ναι γιατι συμβάλει στη δημιουργία μικρότερου και πιό συμπαγούς κώδικα...

Με εκτίμηση.

Μ.
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: ntzios kostas στις 04 Δεκ 2008, 08:51:56 ΜΜ
Το συγκεκριμένο θέμα το συζητήσαμε και πάλι πριν λίγο καιρό. Γίνεται αλλά δεν πρόκειται για σωστό προγραμματισμό και πολύ καλά το σχολικό λέει για επικίνδυνο προγραμματισμό που καλό είναι να αποφεύγεται. Επίσης λέει στη σελίδα 178 στο αριστερό πλαίσιο ότι η δομή για χρησιμοποιείται μόνο όταν πρόκειται να επαναληφθεί η εκτέλεση κάποιων εντολών για προκαθορισμένο αριθμό επαναλήψεων. Με την λογική να πειράζω τον μετρητή, την αρχική, τελική τιμή και το βήμα της δομής για..από..μέχρι, μέσα στην επανάληψη, όλα τα προγράμματα γίνονται με την δομή αυτή. Δεν είναι ανάγκη να έχουμε συγκεκριμένο αριθμό επαναλήψεων.
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: Σούλας Βασίλης στις 31 Δεκ 2008, 12:11:43 ΠΜ
Μετατρέπετε:

ΓΙΑ Ι ΑΠΟ 27 ΜΕΧΡΙ 28 ΜΕ_ΒΗΜΑ -8
  ΕΜΦΑΝΙΣΕ Ι
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

και θα εκτελεστεί μηδέν φορές. Το Ι<--Ι-8 είναι το βήμα και δεν μπαίνει μέσα νομίζω. Έχω φτιάξει κάτι σχετικά με τις μετατροπές των δομών επανάληψης.
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: andreas_p στις 31 Δεκ 2008, 09:32:49 ΠΜ
Στην 1η μετατροπή  :

Όχι πάντα  το   "Εντολές"  πριν την ΟΣΟ.

Είναι επανάλαβε και όχι επανέλαβε. ( είναι προστακτική  όπως θα υποστηρίξει και ένας μέτριος φιλόλογος)

Καλή χρονιά
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: Σούλας Βασίλης στις 31 Δεκ 2008, 11:34:50 ΠΜ
Ναι το εντολές στην πρώτη μετατροπή δεν βγαίνει πάντα έξω. Βγαίνει έξω όταν η συνθήκη περιέχει μεταβλητές που διαβάζονται, αν δεν έχει μεταβλητές που διαβάζονται είναι περιτό να τις βγάλεις έξω αλλά όχι λάθος. Έχεις δίκιο επανάλαβε και όχι επανέλαβε. (ο δαίμων του πληκτρολογίου  :D)

Καλή χρονιά!!!!
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: evry στις 31 Δεκ 2008, 12:06:22 ΜΜ
Όχι δεν μετατρέπεται, αυτό που έδωσες δεν εκτελείται καμία φορά, ενώ αυτό που έδωσα στην αρχή του thread εκτελείται άπειρες φορές. Ο σκοπός του ερωτήματος ήταν να δω τι πιστεύουν οι περισσότεροι για το συγκεκριμένο θέμα. Προσωπικά το θεωρώ αδιανόητο να εξαρτάται η συνθήκη στην Όσο από το πρόσημο του βήματος κατά τη μετατροπή αλλά αφού το λέει το βιβλίο τι να κάνουμε, το λέμε και εμείς στους μαθητές.....
  Απλά όταν βλέπεις πρώτη φορά το παρακάτω κομμάτι κώδικα
Κώδικας (ΓΛΩΣΣΑ) [Επιλογή]

ΓΙΑ Ι ΑΠΟ 27 ΜΕΧΡΙ 28 ΜΕ ΒΗΜΑ -1
   ΕΜΦΑΝΙΣΕ Ι
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ


δεν είναι απόλυτα λογικό να σκεφτείς ότι ξεκινάω από το 27 και θέλω να φτάσω στο 28 άρα κατεβαίνω κάθε φορά κατά 1 άρα δεν φτάνω ποτέ αφού κινούμαι προς την αντίθετη κατεύθυνση. Όποιος θέλεις ας το δώσει σε μαθητές να δει τι θα του απαντήσουν, αλλά να μην τους έχει πει πρώτα ότι η συνθήκη εξαρτάται από το πρόσημο του βήματος.

Φυσικά αν ποτέ δεν είχαν βάλει μετατροπές δομών επανάληψης στις εξετάσεις δεν θα συζητάγαμε ποτέ αυτό το θέμα έτσι?

Παράθεση από: Σούλας Βασίλης στις 31 Δεκ 2008, 12:11:43 ΠΜ
Μετατρέπετε:

ΓΙΑ Ι ΑΠΟ 27 ΜΕΧΡΙ 28 ΜΕ_ΒΗΜΑ -8
  ΕΜΦΑΝΙΣΕ Ι
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

και θα εκτελεστεί μηδέν φορές. Το Ι<--Ι-8 είναι το βήμα και δεν μπαίνει μέσα νομίζω. Έχω φτιάξει κάτι σχετικά με τις μετατροπές των δομών επανάληψης.
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: evry στις 31 Δεκ 2008, 12:08:08 ΜΜ
Το όχι λάθος σηκώνει πολύ κουβέντα, γιατί με το σκεπτικό αυτό θα μπορούσε κάποιος απλά να αντιγράψει τις εντολές όσες φορές εκτελούνται μέσα στην επανάληψη και να μην χρησιμοποιήσει καθόλου τη δομή επανάληψης.

Παράθεση από: Σούλας Βασίλης στις 31 Δεκ 2008, 11:34:50 ΠΜ
Ναι το εντολές στην πρώτη μετατροπή δεν βγαίνει πάντα έξω. Βγαίνει έξω όταν η συνθήκη περιέχει μεταβλητές που διαβάζονται, αν δεν έχει μεταβλητές που διαβάζονται είναι περιτό να τις βγάλεις έξω αλλά όχι λάθος.
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: Σούλας Βασίλης στις 31 Δεκ 2008, 01:44:58 ΜΜ
Για την μετατροπή την οποία ξεκίνησες στην αρχή του thread έχεις απόλυτο δίκιο. Για την μετατροπή της αρχή_επανάληψης σε Όσο.. επανάλαβε απλά δίνω ένα γενικό τρόπο, αν τώρα θα μπουν οι εντολές μια φορά απ' έξω πιστεύω ότι είναι εύκολο να διακριθεί, αλλά και να τις βάλει κάποιος λέω δεν θα είναι λάθος γιατί την μετατροπή την έκανε. Αν βάλει τις εντολές όσες φορές εκτελείται η επανάληψη μπορεί να μην είναι λάθος αλλά μετατροπή δεν κάνει με χρήση της Όσο.
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: Σούλας Βασίλης στις 31 Δεκ 2008, 01:56:27 ΜΜ
ΠαράθεσηΑν σας έλεγαν να μετατρέψετε την παρακάτω δομή επανάληψης σε Για...Από...Μέχρι τι θα απαντούσατε?

Κώδικας:

Ι <-- 27
ΟΣΟ Ι <= 28 ΕΠΑΝΑΛΑΒΕ
   ΕΜΦΑΝΙΣΕ Ι
   Ι <-- Ι  - 8
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Τι λέτε γι αυτό;

Ι <-- 27
ΓΙΑ Κ ΑΠΟ 1 ΜΕΧΡΙ 3 ΜΕ_ΒΗΜΑ 0 !ότι αρχ. τιμή, τελ. τιμή θέλουμε
ΕΜΦΑΝΙΣΕ Ι
Ι <-- Ι-8
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Αφού έχει τα ίδια αποτελέσματα με το Όσο... επανάλαβε και χρησιμοποιώ την Για θεωρείται σωστό; Η έννοια της μετατροπής είναι να κάνω κάτι ισοδύναμο με την χρήση της Για αντί της Όσο; Πιστεύω ότι αυτή η μετατροπή καλύπτει αυτό που μας ζητήται να κάνουμε.
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: evry στις 31 Δεκ 2008, 02:22:42 ΜΜ
Ενδιαφέρουσα μετατροπή, ας περιμένουμε να μπει ο νέος χρόνος για να δούμε τι θα πουν και οι άλλοι συνάδελφοι
για την παραπάνω μετατροπή

Καλή Χρονιά σε όλους με υγεία και ευτυχία
μακάρι οι ευχές σας να βγουν αληθινές, η δική μου ευχή είναι:
να βγει από την ύλη το κεφάλαιο 6 και να μπουν τα 3 (ολόκληρο), 4 και 5  :D
και Ειρήνη στον Κόσμο
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: gpapargi στις 05 Ιαν 2009, 10:25:53 ΠΜ
Νομίζω ότι αυτό το θέμα έχει πάρει μεγαλύτερη έκταση από όσο πρέπει.
Όταν μιλάμε για μετατροπή από Όσο σε Για (η το αντίστροφο) εννοούμε με βάση το πως έχει συμφωνηθεί ότι ορίζεται αυτή η μετατροπή και όχι με βάση το πως θα δοθεί η ίδια έξοδος. (Γενικά η ίδια έξοδος είναι κάτι που για μένα δεν αποτελεί καν κριτήριο για μετατροπές… αλλά αυτό είναι μια άλλη κουβέντα).

Αν λοιπόν το βήμα της Για είναι αρνητικό, ο τελεστής  της Όσο είναι >=. Άρα  το «Ι <= 28» και το «Ι <-- Ι-8» δεν πάνε μαζί. Το ότι κάθε για μετατρέπεται σε Όσο δε σημαίνει ότι ισχύει και το αντίστροφο. Δεν μετατρέπεται κάθε Όσο σε Για ακόμα κι αν έχει το μετρητή στο τέλος και τελεστή <= ή >=. Δεν έχει αρκετή ελευθερία η εντολή Για προκειμένου να κάνει κάτι τέτοιο.
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: P.Tsiotakis στις 05 Ιαν 2009, 10:47:22 ΠΜ
Κάθε Όσο μπορεί να μετατραπεί σε Για, καθώς θεωρούμε οτι μπορούμε να διακόψουμε την επανάληψη του Για, αλλάζοντας την τιμή του μετρητή εντός του βρόχου
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: Eri στις 05 Ιαν 2009, 01:44:25 ΜΜ
Παράθεση από: Σούλας Βασίλης στις 31 Δεκ 2008, 01:56:27 ΜΜ
ΠαράθεσηΑν σας έλεγαν να μετατρέψετε την παρακάτω δομή επανάληψης σε Για...Από...Μέχρι τι θα απαντούσατε?

Κώδικας:

Ι <-- 27
ΟΣΟ Ι <= 28 ΕΠΑΝΑΛΑΒΕ
   ΕΜΦΑΝΙΣΕ Ι
   Ι <-- Ι  - 8
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Τι λέτε γι αυτό;

Ι <-- 27
ΓΙΑ Κ ΑΠΟ 1 ΜΕΧΡΙ 3 ΜΕ_ΒΗΜΑ 0 !ότι αρχ. τιμή, τελ. τιμή θέλουμε
ΕΜΦΑΝΙΣΕ Ι
Ι <-- Ι-8
ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣ

Αφού έχει τα ίδια αποτελέσματα με το Όσο... επανάλαβε και χρησιμοποιώ την Για θεωρείται σωστό; Η έννοια της μετατροπής είναι να κάνω κάτι ισοδύναμο με την χρήση της Για αντί της Όσο; Πιστεύω ότι αυτή η μετατροπή καλύπτει αυτό που μας ζητήται να κάνουμε.


Μα το παραπάνω παράδειγμα παραβιάζει το κριτήριο της περατότητας, άρα ΔΕΝ είναι αλγόριθμος!! Τι μετατροπή να γίνει;; Νομίζω κάτι τέτοιο θα ήταν εντελώς άτοπο ως θέμα... ετσί δεν είναι είναι;
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: gpapargi στις 05 Ιαν 2009, 02:41:52 ΜΜ
Παράθεση από: Τσιωτάκης Παναγιώτης στις 05 Ιαν 2009, 10:47:22 ΠΜ
Κάθε Όσο μπορεί να μετατραπεί σε Για, καθώς θεωρούμε οτι μπορούμε να διακόψουμε την επανάληψη του Για, αλλάζοντας την τιμή του μετρητή εντός του βρόχου

Είσαι ο τελευταίος από τον οποίο θα περίμενα να ακούσω κάτι τέτοιο  ;D :D

Εννοώ χωρίς αλλαγές μετρητών, goto και γενικά διάφορα "απαγορευμένα" κόλπα.

Καλή χρονιά σε όλους (το παρέλειψα πριν)
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: P.Tsiotakis στις 05 Ιαν 2009, 03:27:39 ΜΜ
Αυτό λέω ρε Γιώργο, είναι "απαγορευμένα" τελικά;;; Εφόσον συζητάμε και συνεχώς επανέρχεται το θέμα πως μπορούμε να αλλάζουμε τις αρχική, τελική, το βήμα αλλά και το μετρητή εντός του βρόχου, τότε γιατί η δομή Για δεν είναι ισοδύναμο με τις Όσο και Μέχρις_ότου?

Εγώ λέω πως ΠΟΤΕ να μην το κάνουμε (όπως λέει και το τετράδιο μαθητή).

Το ερώτημά μου αυτό είναι στην ίδια κατηγορία με το "ποιες είναι τελικά οι δεσμευμένες λέξεις στις ψευδογλώσσα?"
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: pgrontas στις 05 Ιαν 2009, 10:50:24 ΜΜ
Καλά Παναγιώτη με κούφανες και μένα.

Η άποψη την οποία υποστήριζα ανέκαθεν (δείτε και μια έντονη συζήτηση  (https://alkisg.mysch.gr/steki/index.php?topic=959.msg5033#msg5033)για σχετικό θέμα στις πανελλήνιες του 2007 ) είναι ότι όλες οι δομές επανάληψης είναι ισοδύναμες.
Κάποιες συστήνεται (η λέξη κλειδί εδώ) να χρησιμοποιούνται σε ειδικές περιπτώσεις στην ψευδογλώσσα-γλώσσα (πχ. η ΓΙΑ σε γνωστό αριθμό επαναλήψεων) κάποιες είναι πιο γενικές. Συμφωνώ στο ότι είναι καλό οι μαθητές να εξασκούνται στην πειθαρχία σωστής χρήσης της κάθε δομής. Αυτό δεν σημαίνει όμως πως δεν είναι δυνατόν να μετατρέψουμε την μία στην άλλη ή πολύ περισσότερο αν δούμε μια τέτοια λύση να την κόψουμε χωρίς να δούμε προσεκτικά την σκέψη του μαθητή.

Χρόνια πολλά και καλή χρονιά σε όλους.
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: P.Tsiotakis στις 07 Ιαν 2009, 07:59:59 ΜΜ
Όσον αφορά το αγαπημένο μας μάθημα (ελπίζω ο Άρης να το διατηρήσει και στο νέο σύστημα εξετάσεων), στηρίζω Παναγιώτη ανεπιφύλακτα αυτήν την πειθαρχία χωρίς να με απασχολεί διόλου κάποια διαφορετική χρήση της δομής Για.

Και επιμένω οτι βλέπω πολύ μικρή την πιθανότητα κάποιος μαθητής απο μόνος  του να χρησιμοποιήσει με τέτοιο τρόπο τη δομή Για.
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: Laertis στις 07 Ιαν 2009, 08:44:33 ΜΜ
Ας συζητήσουμε τώρα το θέμα της Μετατροπής του Ευριπίδη σε Άρη ...
Είναι ή δεν είναι εφικτή ;  :)
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: ntzekakis στις 29 Δεκ 2009, 12:55:50 ΜΜ
Ηθελά να επαναφέρω το θέμα της μετατροπής της ΟΣΟ σε ΓΙΑ.
Θέλω να ρωτήσω αν μπορώ να έχω σαν βήμα της ΓΙΑ μια μεταβλητή. Πιστεύω ότι αν γνωρίζω το πρόσημο αυτής της μεταβλητής δεν θα ήταν λάθος. Τι λέτε;
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: P.Tsiotakis στις 29 Δεκ 2009, 01:59:13 ΜΜ
Ναι...

Βέβαια δεν πρέπει η μεταβλητή αυτή να έχει την τιμή 0 (άπειρες επαναλήψεις)
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: Νίκος Αδαμόπουλος στις 29 Δεκ 2009, 08:59:24 ΜΜ
Τη μεταβλητή αυτή σκοπεύεις να τη "μεταβάλεις" κατά τη διάρκεια των επαναλήψεων;
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: vistrian στις 04 Νοε 2010, 07:49:55 ΠΜ
καλημέρα συνάδελφοι. Η παρακάτω μετατροπή είναι σωστή; Έχω έναν ενδιασμό για το μετρητή της Για

Διάβασε χ
α← 35
Εκτύπωσε α
Όσο α<=χ επανάλαβε
   α← α + α div 6
   Εκτύπωσε α
Τέλος_επαναληψης
Εμφάνισε "--------------------"

Δίαβασε χ
α←35
εκτύπωσε α
Για α απο α + 5 μέχρι χ + 5 με_βημα α div 6
   Εκτύπωσε α
Τέλος_επανάληψης
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: Laertis στις 04 Νοε 2010, 11:26:44 ΠΜ
Το βήμα δε μπορεί να μεταβάλλεται σε κάθε επανάληψη.
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: meteo_xampos στις 04 Νοε 2010, 04:43:26 ΜΜ
Ναι, αλλά το τμήμα κώδικα που δίνεται παραπάνω τρέχει στο pseudoglossa.gr...
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: Νίκος Αδαμόπουλος στις 04 Νοε 2010, 07:55:48 ΜΜ
Από την επίσημη διευκρίνηση του υπουργείου: http://dide.ilei.sch.gr/keplinet/education/docs/aepp_yp_2010.pdf

...αντιγράφω:

Όσον αφορά τη μεταβολή του μετρητή μιας ΓΙΑ μέσα στο βρόχο του, δεύτερη υπόδειξη της σελίδας 78 του Τετραδίου Μαθητή αναφέρεται: «Ποτέ μην χρησιμοποιείς εντολές που αλλάζουν την αρχική τιμή, την τελική τιμή, το βήμα ή τη μεταβλητή που ελέγχει την επανάληψη μέσα σε ένα βρόχο ΓΙΑ. Αν και μερικές γλώσσες προγραμματισμού επιτρέπουν αυτές τις αλλαγές, να τις αποφεύγεις, γιατί οδηγούν σε προγράμματα δυσνόητα και συνήθως λανθασμένα». Από το απόσπασμα αυτό προκύπτει ότι η ΓΛΩΣΣΑ δεν περιλαμβάνεται στις «μερικές γλώσσες προγραμματισμού». Επίσης, στο Βιβλίο Μαθητή στην ενότητα 8.2.3, σελ. 179, για τη λειτουργία της ΓΙΑ ... ΑΠΟ ... ΜΕΧΡΙ αναφέρεται: «ΛΕΙΤΟΥΡΓΙΑ Οι εντολές του βρόχου εκτελούνται για όλες τις τιμές της μεταβλητής από την αρχική τιμή μέχρι την τελική τιμή, αυξανόμενες με την τιμή του βήματος. Αν το βήμα είναι ίσο με 1, τότε παραλείπεται». Από τα προαναφερθέντα προκύπτει ότι η ΓΛΩΣΣΑ αποκλείει τη μεταβολή του μετρητή.

Βάσει αυτών "ποτέ δεν θα πρέπει να χρησιμοποιείς εντολές που αλλάζουν την αρχική τιμή, την τελική τιμή, το βήμα ή τη μεταβλητή που ελέγχει την επανάληψη μέσα σε ένα βρόχο ΓΙΑ".
Τίτλος: Απ: Μετατροπή δομής Όσο...Επανάλαβε σε Για...Από...Μέχρι
Αποστολή από: gthal στις 05 Νοε 2010, 01:45:06 ΠΜ
Κατ' αρχήν θέλω να πω ότι δεν έχω καμία αντίρρηση η ΓΛΩΣΣΑ, ως εκπαιδευτική γλώσσα, να μην επιτρέπει τη μεταβολή των εν λόγω μεταβλητών.

Παρόλα αυτά, αυτό το απόσπασμα της διευκρίνισης μου σπάει τόσο απίστευτα τα νεύρα. (κάπου το έχουμε ξανασυζητήσει αυτό; )
Χρησιμοποιεί μια επιχειρηματολογία που δεν έχει καμία λογική και πραγματικά, κάθε φορά που το διαβάζω προσβάλλει τη νοημοσύνη μου και εκνευρίζομαι.
Επειδή προσπαθούν να καλύψουν ένα κενό, και να στηρίξουν το βιβλίο, πάνε να μας βγάλουν εμάς τρελούς;

Το απόσπασμα καταλήγει
Από τα προαναφερθέντα προκύπτει ότι η ΓΛΩΣΣΑ αποκλείει τη μεταβολή του μετρητή.
Εντάξει, άλλ' αντ' άλλων !!! Πραγματικά, πουθενά μα πουθενά στα παραπάνω δεν προκύπτει ότι η ΓΛΩΣΣΑ αποκλείει τη μεταβολή του μετρητή. Πώς οι συμβολές του τύπου "ποτέ μην χρησιμοποιείς εντολές που αλλάζουν ..."  ή  "... να τις αποφεύγεις, γιατί οδηγούν ..." καταλήγουν να γίνονται απόδειξη του ότι είναι προφανές ότι η ΓΛΩΣΣΑ αποκλείει τη μεταβολή του μετρητή ;;;;;;
Ίσα ίσα, δεν είναι απόδειξη του ότι την επιτρέπει, και γιαυτό εμείς πρέπει να την αποφεύγουμε ;

και το κορυφαίο, κάπου εκεί στη μέση αναφέρει ένα απόσπασμα του βιβλίου:
«... Αν και μερικές γλώσσες προγραμματισμού επιτρέπουν αυτές τις αλλαγές, να τις αποφεύγεις, γιατί οδηγούν σε προγράμματα δυσνόητα και συνήθως λανθασμένα»
και σχολιάζει:
Από το απόσπασμα αυτό προκύπτει ότι η ΓΛΩΣΣΑ δεν περιλαμβάνεται στις «μερικές γλώσσες προγραμματισμού».
Μάλιστα !!!   :D
Τότε και από τη δήλωση "μερικές γλώσσες προγραμματισμού δεν είναι αντικειμενοστραφείς" προκύπτει ότι η ΓΛΩΣΣΑ δεν ανήκει σε αυτές, άρα η ΓΛΩΣΣΑ είναι αντικειμενοστραφής!   :D