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

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

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

lsourtzo

Παράθεση από: Νίκος Αδαμόπουλος στις 14 Φεβ 2011, 12:03:25 ΜΜ
H goto δεν οδηγεί κατ' ανάγκη σε αδόμητη μορφή... Είναι καθαρά θέμα τρόπου χρήσης της εντολής αυτής...

(μίλαγα πάντα για τα παραδείγματα που αναφέρθηκα παραπάνω.)

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

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

lsourtzo

Παράθεση από: sdoukakis στις 14 Φεβ 2011, 12:17:49 ΜΜ
Θα μπορούσες να μας παρουσιάσεις το θέμα του διαγωνίσματος;

θα προσπαθήσω. δεν το στα χέρια μου, τα παιδιά μου το φέραν πριν κανέναν μήνα. θα ζητήσω να μου το ξαναφέρουν αν το έχουν και θα προσπαθήσω.

Sergio

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

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

Σε αυτό το σημείο, η διαγραμματική αναπαράσταση επιτρέπει μεγαλύτερη ελευθερία από την κωδικοποίηση, τουλάχιστον όσον αφορά στην ψευδογλώσσα (αλλά και στη ΓΛΩΣΣΑ) που διδάσκεται στο πλαίσιο του μαθήματος.  Άλλες γλώσσες, όπως σωστά ανέφερε και ο Νίκος, επιτρέπουν βρόχο με έλεγχο στην αρχή, είτε με συνθήκη συνέχειας είτε με συνθήκη τερματισμού.  Όμοια, επιτρέπουν βρόχο με έλεγχο στο τέλος, είτε με συνθήκη συνέχειας είτε με συνθήκη τερματισμού.  Όμως το ζητούμενο δεν είναι τι προσφέρουν οι γλώσσες, αλλά εάν υπάρχει παιδαγωγικό όφελος στη δημιουργία δομημένων διαγραμμάτων ροής τα οποία όμως δεν ακολουθούν τους περιορισμούς της ψευδογλώσσας.

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

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

Έτσι:
- απλή επιλογή με τις ενέργειες στο ΝΑΙ, θα κωδικοποιηθεί ως ΑΝ (ΣΥΝΘΗΚΗ) ΤΟΤΕ..
- απλή επιλογή με τις ενέργειες στο ΟΧΙ, θα κωδικοποιηθεί ως ΑΝ ΟΧΙ (ΣΥΝΘΗΚΗ) ΤΟΤΕ..
- βρόχος με έλεγχο στην αρχή και είσοδο με το ΝΑΙ, θα κωδικοποιηθεί ως ΟΣΟ (ΣΥΝΘΗΚΗ) ΕΠΑΝΑΛΑΒΕ..
- βρόχος με έλεγχο στην αρχή και είσοδο με το ΟΧΙ, θα κωδικοποιηθεί ως ΟΣΟ ΟΧΙ (ΣΥΝΘΗΚΗ) ΕΠΑΝΑΛΑΒΕ..
- βρόχος με έλεγχο στο τέλος και έξοδο με το ΝΑΙ, θα κωδικοποιηθεί ως ΜΕΧΡΙΣ_ΟΤΟΥ (ΣΥΝΘΗΚΗ)..
- βρόχος με έλεγχο στο τέλος και έξοδο με το ΟΧΙ, θα κωδικοποιηθεί ως ΜΕΧΡΙΣ_ΟΤΟΥ ΟΧΙ (ΣΥΝΘΗΚΗ)..

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

Sergio

Παράθεση από: lsourtzo στις 14 Φεβ 2011, 12:27:26 ΜΜ
Στην πραγματικότητα δεν υπάρχει 1 προς 1 αντιστοίχιση των διαγραμμάτων ροής με τη σύνταξη των εντολών στην ψευδογλώσσα ή τη ΓΛΩΣΣΑ του βιβλίου. Βλέποντας κάποιος ένα διάγραμμα ροής που περιέχει βρόχο μπορεί να "δει" μέσα σε αυτό εντολή Όσο, ή να "δει" εντολή Για ή να "δει" GoTο ... κλπ

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

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

Το αντίστροφο όμως δεν είναι πάντα το ίδιο..
Όπως είπε και ο Νίκος ..Βλέποντας κάποιος ένα διάγραμμα ροής που περιέχει βρόχο μπορεί να "δει" μέσα σε αυτό εντολή Όσο, ή να "δει" εντολή Για ή να "δει" GoTο ... κλπ 

Για παράδειγμα, σε ένα διάγραμμα με βρόχο και έλεγχο στην αρχή, αλλά με συνθήκη τερματισμού, μπορεί να "δει" μία ΟΣΟ η οποία έχει ως συνθήκη συνέχειας την αντίθετης εκείνης που υπάρχει στο διάγραμμα:
Όσο ΟΧΙ (συνθήκη) επανάλαβε
  εντολές
Τέλος_Επανάληψης

Στο ίδιο διάγραμμα, ένας προγραμματιστής VB μπορεί να δει:
Do Until συνθήκη
  εντολές
Loop

Αντίστοιχα, σε ένα διάγραμμα με βρόχο και έλεγχο στο τέλος, αλλά με συνθήκη συνέχειας, μπορεί να "δει" μία ΜΕΧΡΙΣ_ΟΤΟΥ η οποία έχει ως συνθήκη τερματισμού την αντίθετης εκείνης που υπάρχει στο διάγραμμα:
Αρχή_Επανάληψης
  εντολές
Μέχρις_ότου ΟΧΙ συνθήκη

Στο ίδιο διάγραμμα, ένας προγραμματιστής VB μπορεί να δει:
Do
  εντολές
Loop while συνθήκη

ενώ ένας προγραμματιστής C να δει: do εντολή while (συνθήκη)

Επιπλέον, σε ένα διάγραμμα με βρόχο και έλεγχο στη μέση, ένας προγραμματιστής ALGOL μπορεί να "δει" αντίστοιχη εντολή, ενώ σε ψευδογλώσσα, ΓΛΩΣΣΑ, VB ή C, θα πρέπει να γίνει δραστικότερος μετασχηματισμός προκειμένου να κωδικοποιηθεί

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



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