Διαγράμματα ροής

Ξεκίνησε από gpapargi, 26 Οκτ 2006, 10:24:25 ΠΜ

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

gpapargi

Καλημέρα

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

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

Αυτό είναι το πρόβλημα με το ΔΡ. Το ότι δημιουργεί μη δομημένο αλγόριθμο. Έγινε αγώνας για να ανοίξει η πόρτα και να πεταχτεί έξω από τον προγραμματισμό η goto και το ΔΡ την ξαναβάζει από το παράθυρο. Το ΔΡ δίνει περισσότερες ελευθερίες στο σχεδιαστή του αλγορίθμου από όσες επιτρέπει ο δομημένος προγραμματισμός.

Το βιβλίο αναφέρει ότι τα ΔΡ εμφανίζονται όσο πάει και λιγότερο στη βιβλιογραφία και στην πράξη. Ωστόσο είναι περισσότερο ενδεικτικό το λέει στο βιβλίο του «Η τέχνη της αλγοριθμικής επίλυσης προβλημάτων» ένας από τους συγγραφείς του σχολικού βιβλίου, ο καθηγητής του ΑΠΘ Ιωάννης Μανωλόπουλος:

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

Πρακτικά αυτό σημαίνει κάτι σαν αυτό που ανέφερα στην αρχή, δηλαδή τη συμβατότητα με τη goto. Φαίνεται πως οι αλγόριθμοι που μπορούν να αναπαρασταθούν με διάγραμμα ροής είναι υπερσύνολο των αλγορίθμων που μπορούν να αναπαρασταθούν με ψευδογλώσσα. Η διαφορά αυτή αποτελείται κυρίως από μη δομημένους αλγορίθμους. (Ίσως είναι λίγο άδικο να αποκαλούμε τη goto «μαύρο πρόβατο» αφού έχει κάποια χρησιμότητα ακόμα και κατά τους K & R, αλλά τουλάχιστο για την πρώτη επαφή με τους μαθητές δεν ενδείκνυται).

Στο θέμα της διδασκαλίας, πιστεύω πως υπάρχει κάποια χρησιμότητα στα ΔΡ. Όταν ο αλγόριθμος είναι απλός ίσως είναι χρήσιμο να έχουν οι μαθητές μια «εικόνα» για το πώς λειτουργούν τα πράγματα. Αλλά μέχρι εκεί. Προσωπικά απαγορεύω ρητά στους μαθητές μου την ώρα που κατασκευάζουν τον αλγόριθμο να «σκέφτονται» σε ΔΡ. Υπάρχει κίνδυνος να τραβήξουν καμιά βολική αλλά κακιά γραμμούλα.

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

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

Kalli

Θα ήθελα να ρωτήσω αν σε ένα διάγραμμα ροής  στο ρόμβο μπορούμε να βάλουμε μία λογική πράξη Ζ=0 ή Ζ=-1;

EleniK

Ελένη Κοκκίνου
Καθηγήτρια Πληροφορικής, ΠΕ19

gpapargi

Σε συνέχεια των όσων έγραψα παραπάνω (περίπου 1 χρόνο πριν) θα ήθελα να δώσω ένα παράδειγμα που να δείχνει τον κίνδυνο που διατρέχει κάποιος που σχεδιάζει αλγόριθμο απευθείας σε διάγραμμα ροής.

Ας υποθέσουμε ότι δίνεται η εξής εκφώνηση:

«Να κατασκευαστεί αλγόριθμος ο οποίος θα διαβάζει επαναληπτικά μη αρνητικούς αριθμούς (θετικούς ή μηδέν), θα τους προσθέτει και θα εμφανίζει το άθορισμά τους. Η επαναληπτική διαδικασία θα τελειώνει μόλις διαβαστεί αρνητικός αριθμός».

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

Το πρόβλημα είναι ότι ο έλεγχος είναι στη μέση του επαναληπτικού βρόχου και άρα δεν αντιστοιχεί σε κάποια εντολή επανάληψης. Το ΔΡ είναι αδόμητο. Για να γίνει πιστή περιγραφή του σε κάποια γλώσσα χρειάζεται η goto με βάση το εκπαιδευτικό περιβάλλον της ΑΕΠΠ ( ή κάποια break σε αληθινή γλώσσα).

Η λύση με ψευδοκώδικα είναι η εξής:

Διάβασε x
Όσο x>=0 επανάλαβε
   S<-S+x
   Διάβασε x
Τέλος_επανάληψης
Εμφάνισε S

Όμως ο παραπάνω ψευδοκώδικας δεν αντιστοιχεί στο ΔΡ που έστειλα.

Η κατασκευή αλγορίθμου απευθείας σε ΔΡ γινόταν παλιά. Σήμερα δεν γίνεται κυρίως για τους λόγους που προανέφερα. Αναφέρονται κυρίως για ιστορικούς λόγους όπως λέει και το βιβλίο.

Το ερώτημα για μένα είναι «Γιατί πέφτουν στις εξετάσεις;»

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

Μάλιστα θα έλεγα πως όταν ο αλγόριθμος περιλαμβάνει εμφωλευμένες εντολές επανάληψης, το ΔΡ δεν είναι καθόλου ευανάγνωστο. Με το μάτι δεν καταλαβαίνεις αμέσως τη δομή του αλγορίθμου. Αντίθετα αν δεις τον αλγόριθμο σε ψευδογλώσσα (και μάλιστα σωστά στοιχισμένο με τη εσωτερική εντολή να ξεκινάει λίγο πιο μέσα στο χαρτί από την εξωτερική) καταλαβαίνεις αμέσως ότι έχεις να κάνεις με εμφωλευμένες εντολές επανάληψης. Η στοίχιση είναι ένα ωραίο όπλο στην προσπάθεια του να έχεις πιο ευανάγνωστο ψευδοκώδικα. Και μάλιστα πρόκειται για γραφικό όπλο, αν και η γραφική απεικόνιση θεωρείται προνόμιο του διαγράμματος ροής.

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

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

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

pgrontas

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

Οπότε πρέπει να αναρωτηθούμε:
-Πετυχαίνουν τα διαγράμματα ροής στο να δείχνουν την ροή του αλγορίθμου; Νομίζω ναι, ακόμα και αν κάτι είναι πολύπλοκο, μπορείς να δείξεις τμήματα του μόνο με διάγραμμα ροής.
-Είναι διδακτικά σωστό να 'θυσιάζουμε τον δομημένο προγραμματισμό' για να δώσουμε έμφαση στην ροή; Σε αρχικά στάδια, νομίζω ναι, ιδιαίτερα για μαθητές που έρχονται πρώτη φορά σε επαφή με τον προγραμματισμό. Επιπλέον, είναι η πρώτη φορά που έρχονται οι μαθητές σε επαφή με ένα είδος διαγραμματικής αναπαράστασης στην πληροφορική (κάτι που για όσους περάσουν θα έχει και συνέχεια διαγράμματα ER, διαγράμματα UML).
-Να πέφτουν στις εξετάσεις; Δεν θεωρώ ότι είναι κάτι τραγικό και είναι σίγουρα πιο δημιουργικό από το να ζητάς από τον μαθητή να αναφέρει ένα κομμάτι του βιβλίου. Εξάλλου όπως έχει αποδείξει και η ομάδα των διαγωνισμάτων, μπορούν να βρεθούν πρωτότυπες ασκήσεις και με τα ΔΡ.

Δεν είμαι απόλυτος γιατί όντως είναι ξεπερασμένα, αλλά δεν νομίζω ότι πρέπει να εξοριστούν.
Programs must be written for people to read, and only incidentally for machines to execute - Harold Abelson

spartakus

Καλησπερα.Συγγνωμη αν ειμαι εκτος θεματος,αλλα δεν ξερω που αλλου μπορω να γραψω την απορια μου.Θα ηθελα να με βοηθησετε στο διαγραμμα ροης αυτης της ασκησης:

Στον καταλογο μιας καφετεριας αναγραφεται οτι στην τιμη ενος Χ προιοντος περιλαμβανεται 19% ΦΠΑ,8% ποσοστο σερβιτορου,14% δημοτικα τελη και1,5% ΤΕΒΕ.Να γραφει αλγοριθμος ο οποιος να υπολογιζει και να εμφανιζει για εναν καφε των 3,8 ευρω τα αντιστοιχα ποσοστα καθως και το κερδος του καταστηματαρχη.
Εχω γραψει τον αλγοριθμο,αλλα "κολλαω" στο διαγραμμα ροης.

Ευχαριστω εκ των προτερων.

Λάμπρος Μπουκουβάλας

πρώτα γράψε εδώ με copy-paste τον αλγόριθμό σου...
Λάμπρος Μπουκουβάλας
MSc - MRes

http://blogs.sch.gr/lambrosbouk

Ο Θουκυδίδης  (που τον διαβάζουν οι ξένοι, αλλά όχι εμείς)  έγραφε: «Αταλαίπωρος τοις πολλοίς η ζήτησις της αληθείας, και επί τα ετοίμα μάλλον τρέπονται» (Ι, 20, 3). Οι περισσότεροι δηλαδή αναζητούν αβασάνιστα την αλήθεια και στρέφονται σε ό,τι βρίσκουν έτοιμο. Δεν προβληματίζονται...

lykos

3 σύμβολα (εκός των ΑΡΧΗ - ΤΕΛΟΣ):
- Παραλληλόγραμμο - Είσοδος
- Ορθογώνιο - Υπολογισμοί
- Παραλληλόγραμμο - Εξοδος