Αλγόριθμοι και διαγράμματα ροής
Ένα πρόβλημα λυμένο βήμα βήμα, και σχεδιασμένο σε σχήμα.
35 λεπτά
Θα μάθεις να
- Να ορίζεις τι είναι αλγόριθμος και να ελέγχεις αν μια σειρά οδηγιών είναι σαφής και τελειώνει.
- Να αναγνωρίζεις τα σχήματα του διαγράμματος ροής και τι σημαίνει το καθένα.
- Να ξεχωρίζεις τις τρεις βασικές δομές: ακολουθία, επιλογή, επανάληψη.
- Να εκτελείς ένα διάγραμμα ροής βήμα βήμα με πίνακα τιμών.
Μια συνταγή για τον υπολογιστή
«Βράσε λίγο νερό, ρίξε μακαρόνια, άφησέ τα όσο χρειάζεται.» Ένας άνθρωπος καταλαβαίνει τι εννοείς. Ένας υπολογιστής όμως θα κολλούσε αμέσως: πόσο είναι το «λίγο»; Πόσο είναι το «όσο χρειάζεται»;
Ο υπολογιστής δεν μαντεύει. Για να λύσει ένα πρόβλημα χρειάζεται οδηγίες τόσο ακριβείς, που να μην αφήνουν καμία απορία. Μια τέτοια σειρά οδηγιών λέγεται αλγόριθμος.
Τι είναι αλγόριθμος
Αλγόριθμος είναι μια πεπερασμένη σειρά από σαφή βήματα που, αν εκτελεστούν με τη σειρά, λύνουν ένα πρόβλημα.
Για να είναι μια σειρά οδηγιών αλγόριθμος, πρέπει:
| Ιδιότητα | Τι σημαίνει | Παράδειγμα που αποτυγχάνει |
|---|---|---|
| Είσοδος | παίρνει δεδομένα για να δουλέψει (μπορεί και κανένα) | — |
| Έξοδος | δίνει τουλάχιστον ένα αποτέλεσμα | «Υπολόγισε το άθροισμα» χωρίς να το εμφανίσει πουθενά |
| Σαφήνεια (καθοριστικότητα) | κάθε βήμα έχει μία ερμηνεία | «Ρίξε λίγο αλάτι» |
| Περατότητα | τελειώνει μετά από πεπερασμένο πλήθος βημάτων | «Μέτρα 1, 2, 3, … και μη σταματήσεις» |
| Εκτελεσιμότητα | κάθε βήμα μπορεί πράγματι να γίνει | «Διαίρεσε με το μηδέν» |
Η λέξη προέρχεται από το όνομα του Πέρση μαθηματικού αλ-Χουαρίζμι (9ος αιώνας), που έγραψε κανόνες για αριθμητικές πράξεις βήμα βήμα.
Τρεις τρόποι να γράψεις έναν αλγόριθμο
Ο ίδιος αλγόριθμος μπορεί να γραφτεί με διάφορους τρόπους:
- Με φυσική γλώσσα, σε αριθμημένα βήματα. Εύκολο, αλλά οι λέξεις μπορεί να είναι ασαφείς.
- Με διάγραμμα ροής: σχήματα συνδεδεμένα με βέλη. Φαίνεται με μια ματιά πού πάει η εκτέλεση.
- Με ψευδοκώδικα: σύντομες εντολές που μοιάζουν με γλώσσα προγραμματισμού.
- Και τελικά, σε γλώσσα προγραμματισμού (όπως το Scratch ή η Python), ώστε να τον εκτελέσει ο υπολογιστής.
Τα σχήματα του διαγράμματος ροής
Κάθε σχήμα έχει συγκεκριμένη σημασία:
| Σχήμα | Χρήση | Τι γράφουμε μέσα |
|---|---|---|
| Έλλειψη (οβάλ) | αρχή και τέλος | «Αρχή», «Τέλος» |
| Πλάγιο παραλληλόγραμμο | είσοδος και έξοδος δεδομένων | «Διάβασε α», «Εμφάνισε άθροισμα» |
| Ορθογώνιο | επεξεργασία: πράξη ή ανάθεση τιμής | «άθροισμα ← α + β» |
| Ρόμβος | απόφαση: ερώτηση με απάντηση ΝΑΙ ή ΟΧΙ | «α > β ;» |
| Βέλος | η σειρά εκτέλεσης | — |
Από τον ρόμβο βγαίνουν δύο βέλη, ένα για το ΝΑΙ κι ένα για το ΟΧΙ. Από όλα τα άλλα σχήματα (εκτός από το «Τέλος») βγαίνει ένα.
Το βελάκι ← σημαίνει ανάθεση: «υπολόγισε ό,τι είναι δεξιά και βάλ' το στη
μεταβλητή αριστερά». Το άθροισμα ← α + β διαβάζεται «το άθροισμα γίνεται α
συν β».
Οι τρεις δομές
Ακολουθία: τα βήματα γίνονται το ένα μετά το άλλο, με τη σειρά. Στο διάγραμμα, σχήματα στη σειρά με ένα βέλος ανάμεσα.
Επιλογή: ανάλογα με την απάντηση σε μια ερώτηση, γίνεται ένα από δύο πράγματα. Στο διάγραμμα, ένας ρόμβος που χωρίζει τον δρόμο στα δύο, και οι δύο δρόμοι ξανασμίγουν πιο κάτω.
Επανάληψη: κάποια βήματα γίνονται ξανά και ξανά, όσο ισχύει μια συνθήκη. Στο διάγραμμα, ένα βέλος που γυρίζει πίσω σε έναν ρόμβο που βρίσκεται πιο πάνω.
Ένα διάγραμμα με επανάληψη: η αντίστροφη μέτρηση
Δεν θα το σχεδιάσουμε με εικόνα. Θα γράψουμε κάθε σχήμα σε μια γραμμή, με αριθμό, και θα λέμε πού πηγαίνει το βέλος του:
| Αρ. | Σχήμα | Περιεχόμενο | Μετά πηγαίνει |
|---|---|---|---|
| 1 | Έλλειψη | Αρχή | → 2 |
| 2 | Ορθογώνιο | μετρητής ← 3 | → 3 |
| 3 | Ρόμβος | μετρητής > 0 ; | ΝΑΙ → 4, ΟΧΙ → 6 |
| 4 | Πλάγιο παραλληλόγραμμο | Εμφάνισε μετρητής | → 5 |
| 5 | Ορθογώνιο | μετρητής ← μετρητής − 1 | → 3 (πίσω) |
| 6 | Πλάγιο παραλληλόγραμμο | Εμφάνισε «Εκκίνηση!» | → 7 |
| 7 | Έλλειψη | Τέλος | — |
Το βέλος από το 5 πίσω στο 3 είναι η επανάληψη. Κάθε φορά που περνά από τον ρόμβο, ο μετρητής είναι κατά ένα μικρότερος, οπότε κάποια στιγμή η απάντηση θα γίνει ΟΧΙ και ο αλγόριθμος θα τελειώσει.
Ας εκτελέσουμε το διάγραμμα με το μολύβι. Πριν πατήσεις, πες ποια θα είναι η επόμενη γραμμή.
Ο ίδιος αλγόριθμος σε ψευδοκώδικα
Το διάγραμμα της αντίστροφης μέτρησης, γραμμένο σε ψευδοκώδικα, είναι:
μετρητής ← 3ΟΣΟ μετρητής > 0 ΕΠΑΝΑΛΑΒΕΓΡΑΨΕ μετρητήςμετρητής ← μετρητής - 1ΤΕΛΟΣ_ΕΠΑΝΑΛΗΨΗΣΓΡΑΨΕ 'Εκκίνηση!'
Οι γραμμές 3 και 4 είναι μετατοπισμένες προς τα δεξιά: έτσι φαίνεται ότι βρίσκονται μέσα στην επανάληψη. Στο Scratch, αυτό θα είναι ένα τουβλάκι που «αγκαλιάζει» άλλα τουβλάκια.
Ας το κάνουμε μαζί
Παράδειγμα 1
Γράψε διάγραμμα ροής που διαβάζει δύο αριθμούς α και β και εμφανίζει τον μεγαλύτερο.
Δοκίμασέ το πρώτα. Μετά δες τη λύση.
Παράδειγμα 2
Γράψε αλγόριθμο που διαβάζει 3 βαθμούς, βρίσκει τον μέσο όρο τους, και εμφανίζει «Προάγεται» αν ο μέσος όρος είναι τουλάχιστον 10, αλλιώς «Χρειάζεται στήριξη».
Δοκίμασέ το πρώτα. Μετά δες τη λύση.
Ασκήσεις
Πρώτα ερωτήσεις με επιλογές: διαλέγεις, πατάς «Έλεγξε» και μαθαίνεις αμέσως αν το βρήκες και γιατί. Στο τέλος, λίγες ασκήσεις χωρίς επιλογές — εκεί κρύβεται μόνο η απάντηση.
Τα κατάφερες;
- Να ορίζεις τι είναι αλγόριθμος και να ελέγχεις αν μια σειρά οδηγιών είναι σαφής και τελειώνει.
- Να αναγνωρίζεις τα σχήματα του διαγράμματος ροής και τι σημαίνει το καθένα.
- Να ξεχωρίζεις τις τρεις βασικές δομές: ακολουθία, επιλογή, επανάληψη.
- Να εκτελείς ένα διάγραμμα ροής βήμα βήμα με πίνακα τιμών.
Λύσε τις ασκήσεις πιο πάνω και θα δεις εδώ πού στέκεσαι.