Αλλαγή συνθήκης από διαγράμματα ροής σε ψευδοκώδικα ?

Ξεκίνησε από lsourtzo, 11 Φεβ 2011, 11:10:31 ΠΜ

« προηγούμενο - επόμενο »

lsourtzo

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

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

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

στις απαντήσεις που τους έδωσε είχε αντιστρέψει τελείως τις συνθήκες των ρόμβων για να μπορέσει να βγει ο ψευδοκώδικας ...

θα ήθελα να έχω και την δική σας άποψη περί του θέματος ...

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

sstergou

Τέτοιες ασκήσεις βάζω στο κεφάλαιο 6 όπου εξηγείται η εντολή goto.

Ο κώδικας :

Ετικέτα1 :
Εντολές
Αν συνθήκη τότε GOTO Ετικέτα1


μετατρέπεται σε :

Αρχή_επανάληψης
  εντολές
Μέχρις_ότου όχι συνθήκη


Για να καταλάβουν οι μαθητές ποιες δομές πρέπει να χρησιμοποιήσουν τους προτρέπω να μετατρέψουν τον αρχικό κώδικα σε διάγραμμα ροης και στην συνέχεια το διάγραμμα σε "δομημένο" αλγόριθμο. Κάτι τέτοιες περίεργες ασκήσεις έχει και το τετράδιο του μαθητή.

Σπύρος Δουκάκης

Αν κατάλαβα καλά εννοείς θέμα παρόμοιο με το παράδειγμα 5 και με την δραστηριότητα ΔΣ1, Κεφ 2 τετράδιο μαθητή;

Νίκος Αδαμόπουλος


pgrontas

Σε αυτές τις ασκήσεις, όπως αυτή που παρέθεσε ο  Στάθης (και εγώ τις βάζω στην GOTO), οι μαθητές έρχονται αντιμέτωποι με το εξής δίλημμα:
Ποια εντολή επανάληψης να διαλέξω; Την ΌΣΟ ή την ΜΕΧΡΙΣ_ΟΤΟΥ;
Η Όσο ταιριάζει με το διάγραμμα ροής που ξέρουν για συνθήκη (αφού η επανάληψη γίνεται όσο η συνθήκη είναι αληθής), ενώ η ΜΕΧΡΙΣ_ΟΤΟΥ ταιριάζει με το γεγονός ότι ο έλεγχος τερματισμού γίνεται στο τέλος, αλλά έχει το πρόβλημα ότι πρέπει να αντιστραφεί η συνθήκη.
Νομίζω ότι το πιο σημαντικό από τα δύο είναι η θέση του ελέγχου τερματισμού της επανάληψης στη ροή του αλγορίθμου (αρχή/τέλος) παρά το αν πρέπει να αντιστρέψουμε τη συνθήκη ή όχι, οπότε ούτε εγώ βλέπω κάποιο πρόβλημα.
Πάντως τέτοιες ασκήσεις δεν τις βρίσκω άσχημες. Τις βλέπω ως ένα πειραματισμό έξω από τα καθιερωμένα σχετικά με τη σειρά εκτέλεσης των εντολών ενός αλγορίθμου.
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

sstergou

Σπύρο είναι στο κεφάλαιο 6 οι ΔΤ1 και ΔΣ1.

Παγαγιώτη, συμφωνώ.

Και μια που το φερε η κουβέντα, φέτος εισήγαγα την δομή επανάληψης (καλά αποτελέσματα) χρησιμοποιώντας την εντολή GOTO.

Νίκος Αδαμόπουλος

Βλ. σχετικά, στην ενότητα 3.3 αλλά και παρακάτω, στο:
http://dide.ilei.sch.gr/keplinet/education/docs/syn_dp2010_adamopoulos.pdf

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

Νίκος Αδαμόπουλος


Sergio

Δε βλέπω τίποτα το περίεργο σε ασκήσεις αυτής της μορφής.. 

Αντίθετα πιστεύω πως δίνουν μία εξαιρετική ευκαιρία για την ανάπτυξη της αλγοριθμικής σκέψης με μεγαλύτερη ελευθερία μέσω της διαγραμματικής αναπαράστασης του αλγόριθμου απ' ότι μέσω της κωδικοποίησης.

Τα τελευταία χρόνια, όπως ανέφερα και σε άλλη ανάρτηση σχετικά με τη Σπειροειδή προσέγγιση στη διδασκαλία του μαθήματος ξεκινάω στην αρχή της χρονιάς αποκλειστικά με διαγραμματική αναπαράσταση (πρώτη σπείρα) , προσφέροντας αυτονόητα  αυτή την ελευθερία στην έκφραση (απλές επιλογές με ενέργεια είτε στο ΝΑΙ είτε ΟΧΙ, βρόχους με συνθήκη συνέχειας στο τέλος ή συνθήκη τερματισμού στην αρχή, κ.ο.κ.). 

Βέβαια περιορίζομαι σε απλά προβλήματα, εστιάζοντας αποκλειστικά στην ανάπτυξη 2 βασικών δεξιοτήτων:
α) ανάλυσης σε επιμέρους βήματα και
β) αναγνώρισης του "τύπου" του βήματος. 
Έχω καταλήξει να τους προτείνω 4 τύπους βημάτων:
#1 : Χρειάζεται πάντα, και γίνεται με συγκεκριμένο τρόπο
#2 : Δε χρειάζεται πάντα, αλλά εκετελείται υπο προϋποθέσεις
#3 : Χρειάζεται πάντα, αλλά έχει περιπτώσεις
#4 : Οτιδήποτε από τα παραπάνω, αλλά χρειάζεται πολλές, συνεχόμενες φορές..

Προτιμώ λοιπόν σε πρώτη φάση (πρώτη σπείρα) να ΜΗΝ ασχολούμαι καθόλου με κωδικοποίηση παρά ΜΟΝΟ με διαγραμματική αναπαράσταση ώστε αφενός να έχουν μεγαλύτερη ελευθερία περιγραφής συνθηκών (είτε επιλογής είτε συνέχειας είτε τερματισμού) χωρίς να περιορίζονται από τους συντακτικούς κανόνες μιας ψευδογλώσσας.

Έτσι, εντελώς αυθόρμητα, αρκετοί μαθητές ερμηνεύουν περιορισμούς της μορφής "το πάγιο χρεώνεται μόνο όταν η διάρκεια ΔΕΝ ξεπερνά τις 3 ώρες" σε συνθήκη επιλογής Διάρκεια > 3 βάζοντας την ενέργεια Κόστος <- Κόστος + Πάγιο στη ροή του ΟΧΙ και αφήνοντας τη ροή του ΝΑΙ κενή..  Ισοδύναμα, επαναλαμβανόμενες διαδικασίες που "απαντάνε" σε εκφώνηση της μορφής "..θα συνεχίζει μέχρι συγκεντρωθούν 100 άτομα.." ερμηνεύονται σε βρόχους (με έλεγχο στο τέλος), όμως από άλλους μαθητές με συνθήκη τερματισμού άτομα >= 100 και από άλλους με συνθήκη συνέχειας άτομα < 100.

Αυτή η "ελευθερία" ΕΙΝΑΙ ζητούμενο σε επίπεδο ανάπτυξης της αλγοριθμικής σκέψης, δίνεται μέσω της διαγραμματικής αναπαράστασης πιο εύκολα απ'ότι μέσω της κωδικοποίησης.

Με αυτό τον τρόπο διδάσκονται (πάντα στο πλαίσιο της πρώτης - εσωτερικής σπείρας) όλες τις αλγοριθμικές δομές:
1) ακολουθία (τύπος #1)
2) επιλογή (τύποι #2 & #3)
3) επανάληψη (τύπος #4)
αποκλειστικά με απλές ασκήσεις και ΟΠΩΣΔΗΠΟΤΕ με ταυτόχρονη εξάσκηση στο εργαστήριο με τον  Δημιουργό Διαγραμμάτων Ροής

Στη δεύτερη σπείρα, γίνεται η μετάβαση από τη διαγραμματική αναπαράσταση στην κωδικοποίηση.  Αναφέρονται οι μορφές των αντίστοιχων εντολών, επισημαίνονται οι εγγενείς συντακτικοί και σημασιολογικοί περιορισμοί και οι μαθητές εξασκούνται στη διαδικασία παραγωγής των «αντίθετων συνθηκών», είτε την αντιστροφή της συνθήκης (<= σε >, = σε <> κ.ο.κ.) είτε (απλούστερα) με τη λογική πράξη της άρνησης.  Έτσι, στο πλαίσιο της μετάβασης από τον ένα τρόπο αναπαράστασης στον άλλο, γίνεται μία ομαλή εισαγωγή και στην έννοια των λογικών πράξεων (μόνο της άρνησης σε αυτό το στάδιο)..

Ειδικά για τη δομή επανάληψης, αφού τους αναφέρω ότι ανάλογα με το «λεξιλόγιο» της γλώσσα που θα προτιμήσουν για την κωδικοποίηση του αλγόριθμου, μπορούν να έχουν είτε έλεγχο στο τέλος με συνθήκη συνέχειας, είτε με συνθήκη τερματισμού είτε και με τους δύο τρόπους, τους εξηγώ τον περιορισμό της δικής μας ψευδογλώσσας και καταλήγω στη ορθή σύνταξη της Μέχρις_ότου..

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

Προσωπικά, τα τελευταία χρόνια, μέσα από πειραματισμούς με διάφορες διδακτικές προσεγγίσεις, έχω καταλήξει πως αυτή είναι μέχρι στιγμής η πιο αποτελεσματική..
Απ τη μια η θητεία μου σε σχολικές αίθουσες: να φλυαρώ - να ελπίζω πως κατι κατάλαβαν - να εξερευνώ - να μαθαίνω. Απ την άλλη, σχεδόν συνομήλικη, η Διδακτική της Πληροφορικής: ερευνά διαδικασίες μάθησης - φλερτάρει με την Ψυχολογία - με καλεί να αφήσω το βλέμμα του Πληροφορικού και να δω με τα μάτια του δασκάλου. Τέκνα των 2, οι απόψεις μου.. (προσαρμοσμένο από τον πρόλογο του βιβλίου "Το μακρόν Φυσική προ του βραχέως διδάσκω" του Ανδρέα Κασσέτα)

Sergio

Παράθεση από: sstergou στις 11 Φεβ 2011, 12:15:44 ΜΜ
Σπύρο είναι στο κεφάλαιο 6 οι ΔΤ1 και ΔΣ1.
Οι δραστηριότητες που αυτές από το κεφάλαιο 6 (ΔΤ1 και ΔΣ2), δίνουν αδόμητες κωδικοποιήσεις που, ακολουθώντας τη μεθοδολογία που περιγράφεις (μέσω διαγραμματικής αναπαράστασης) μπορούν να οδηγήσουν στις αντίστοιχες δομημένες κωδικοποιήσεις.

Παράθεση από: sdoukakis στις 11 Φεβ 2011, 11:45:58 ΠΜ
Αν κατάλαβα καλά εννοείς θέμα παρόμοιο με το παράδειγμα 5 και με την δραστηριότητα ΔΣ1, Κεφ 2 τετράδιο μαθητή;
Νομίζω ότι ο Σπύρος αναφερόταν στον προβληματισμό του lsourtzo. Οι περιπτώσεις που αναφέρει από το κεφάλαιο 2 δίνουν διαγραμματικά αλγορίθμους με συνθήκη τερματισμού στην αρχή του βρόχου.

Σωστά;
Απ τη μια η θητεία μου σε σχολικές αίθουσες: να φλυαρώ - να ελπίζω πως κατι κατάλαβαν - να εξερευνώ - να μαθαίνω. Απ την άλλη, σχεδόν συνομήλικη, η Διδακτική της Πληροφορικής: ερευνά διαδικασίες μάθησης - φλερτάρει με την Ψυχολογία - με καλεί να αφήσω το βλέμμα του Πληροφορικού και να δω με τα μάτια του δασκάλου. Τέκνα των 2, οι απόψεις μου.. (προσαρμοσμένο από τον πρόλογο του βιβλίου "Το μακρόν Φυσική προ του βραχέως διδάσκω" του Ανδρέα Κασσέτα)

Σπύρος Δουκάκης

και εγώ αυτό υπέθεσα από το μνμ... και για αυτό ρώτησα... αλλά καλύτερα να απαντήσει ο lsourtzo

Παράθεση από: sdoukakis στις 11 Φεβ 2011, 11:45:58 ΠΜ
Αν κατάλαβα καλά εννοείς θέμα παρόμοιο με το παράδειγμα 5 και με την δραστηριότητα ΔΣ1, Κεφ 2 τετράδιο μαθητή;


Παράθεση από: Sergio στις 11 Φεβ 2011, 03:20:30 ΜΜ

Νομίζω ότι ο Σπύρος αναφερόταν στον προβληματισμό του lsourtzo. Οι περιπτώσεις που αναφέρει από το κεφάλαιο 2 δίνουν διαγραμματικά αλγορίθμους με συνθήκη τερματισμού στην αρχή του βρόχου.

Σωστά;

Παράθεση από: lsourtzo στις 11 Φεβ 2011, 11:10:31 ΠΜ
η καθηγήτρια τους του έβαλε σε ένα διαγώνισμα να μετατρέψουν ένα διάγραμμα ροής στον ισοδύναμο ψευδοκώδικα.

...
στις απαντήσεις που τους έδωσε είχε αντιστρέψει τελείως τις συνθήκες των ρόμβων για να μπορέσει να βγει ο ψευδοκώδικας ...

lsourtzo

καταρχάς ευχαριστώ για την ανταπόκριση και συγνώμη για την αργοπορία να απαντήσω ...
για κάποιο λόγο δεν μου έρχονται ειδοποιήσεις στο mail μου για νέα μηνύματα, και οντάς στο κρεβάτι 3 μέρες με πυρετό δεν μπήκα να δω ...

διάβασα προσεκτικά όλα αυτά που γράψατε και η αλήθεια είναι ότι μου ανοίξατε κάποιες καινούργιες προοπτικές που μάλλον δικό μου λάθος δεν είχα ....

τώρα για να τα πάρω ένα ένα :

1ον : συμφωνώ απόλυτα ότι αν αρχίσουμε να μιλάμε για αδόμητες μορφές αλγορίθμων (όπως η goto) τότε ο καθένας μπορεί να γράψει ότι θέλει και να το αναπαραστήσει με ότι μορφή θέλει ...
στην συγκεκριμένη περίπτωση βέβαια στο κεφάλαιο 2 μιλάμε μόνο για δομημένους τρόπους αναπαράστασης.

2ον : από την άλλο έχω την εντύπωση ότι με τον χαρακτηρισμό μαύρο πρόβατο το βιβλίο χαρακτηρίζει πολύ εύστοχα την χρησιμοποίηση αυτόν τεχνικών.
και εδώ έρχεται η κρίσιμη ερώτηση σχετικά με τον σκοπό του μαθήματος ...
σκοπός είναι η ανάπτυξη δομημένου τρόπου σκέψης στους μαθητές ... ή η επίλυση γενικά κάποιον ασκήσεων αδιαφορώντας για τον τρόπο ...
αυτό που θέλω να πω είναι ότι ίσος χάνουμε λίγο την ουσία με ασκήσεις τέτοιου τύπου ... ιδίως όταν ξέρετε και εσείς καλά όπως και εγώ το πόσες δυσκολίες δημιουργεί στην πλειοψηφία των μαθητών το συγκεκριμένο μάθημα.

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

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

ευχαριστώ.

περιμένω τα σχόλια σας ...

sstergou

Συνάδελφε δίκιο έχεις για τις συγκεκριμένες ασκήσεις με goto αλλά από την στιγμή που αυτή η εντολή υπάρχει στην ύλη δεν μπορούμε να κάνουμε κάτι διοφορετικό.

Κατά την γνώμη μου η goto θα μπορούσε να αξιοποιηθεί διδακτικά για την κατασκευή των δομών επανάληψης, σύνθετης και πολλαπλής επιλογής.

Νίκος Αδαμόπουλος

 H goto δεν οδηγεί κατ' ανάγκη σε αδόμητη μορφή... Είναι καθαρά θέμα τρόπου χρήσης της εντολής αυτής...

Ως προς την εταιρία, εκεί έτσι κι αλλιώς θα χρησιμοποιούνται κανονικές γλώσσες... Μην θεωρούμε την Αρχή_επανάληψης και την Όσο, με τον τρόπο που αυτές δίνονται στο σχολικό βιβλίο ως το α και το ω του προγραμματισμού. Π.χ. στη C έχουμε αντίστοιχα τις:

while (συνθήκη) εντολή

do εντολή while (συνθήκη)

Η 1η έχει τη συνθήκη στην αρχή του βρόχου και η δεύτερη στο τέλος του βρόχου, παρόλα αυτά και οι δύο τερματίζουν το βρόχο με ψευδή συνθήκη!

Ομοίως στη VB έχουμε:

Do [{while | Until} συνθήκη]
  εντολές
Loop


Do
  εντολές
Loop [{while | Until} συνθήκη]


Η 1η έχει τη συνθήκη στην αρχή του βρόχου και η δεύτερη στο τέλος του βρόχου, παρόλα αυτά και οι δύο τερματίζουν το βρόχο με ψευδή συνθήκη (αν χρησιμοποιείται το while) ή και οι δύο τερματίζουν το βρόχο με αληθή συνθήκη (αν χρησιμοποιείται το until)...

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

Για αυτό και πιο πάνω είχα πει ότι "... τα διαγράμματα ροής αποτελούν αυθύπαρκτη μορφή αναπαράστασης αλγορίθμων και τα διάφορα δομικά στοιχεία τους δεν αντιστοιχούν κατ' ανάγκη στο ρεπερτόριο των εντολών που περιλαμβάνει η ψευδογλώσσα του σχολικού βιβλίου...". Στην πραγματικότητα δεν υπάρχει 1 προς 1 αντιστοίχιση των διαγραμμάτων ροής με τη σύνταξη των εντολών στην ψευδογλώσσα ή τη ΓΛΩΣΣΑ του βιβλίου. Βλέποντας κάποιος ένα διάγραμμα ροής που περιέχει βρόχο μπορεί να "δει" μέσα σε αυτό εντολή Όσο, ή να "δει" εντολή Για ή να "δει" GoTο ... κλπ

Σπύρος Δουκάκης

Θα μπορούσες να μας παρουσιάσεις το θέμα του διαγωνίσματος;

Παράθεση από: lsourtzo στις 11 Φεβ 2011, 11:10:31 ΠΜ
καλησπέρα ... διδάσκω το μάθημα εδώ και 10 χρόνια (από την αρχή) σε ένα φροντιστήριο.
φέτος για πρώτη φορά βρέθηκα αντιμέτωπος με το εξής θέμα ...
στο σχολείο μιας μαθήτριας μου η καθηγήτρια τους του έβαλε σε ένα διαγώνισμα να μετατρέψουν ένα διάγραμμα ροής στον ισοδύναμο ψευδοκώδικα.

το θέμα είναι όμως ότι το συγκεκριμένο διάγραμμα ροής δεν έβγαινε με τίποτα ... παραμονών  αν άλλαζες τελείως τις συνθήκες.