Παράδειγμα 1, Βιβλίο μαθητή, Ανάγνωση και εκτύπωση αριθμών

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

Αλγόριθμος Παράδειγμα_1
Διάβασε a
Διάβασε b
c ← a + b
Εκτύπωσε c
Τέλος Παράδειγμα_1

Ένας αλγόριθμος διατυπωμένος σε ψευδογλώσσα αρχίζει πάντα με τη λέξη Αλγόριθμος συνοδευόμενη με το όνομα του αλγορίθμου και τελειώνει με τη λέξη Τέλος συνοδευόμενη επίσης με το όνομα του αλγορίθμου. Η πρώτη ενέργεια που γίνεται είναι η εισαγωγή των δεδομένων. Αυτό επιτυγχάνεται με τη χρήση του ρήματος Διαβάζω σε προστακτική. Η λέξη Διάβασε συνοδεύεται με το όνομα μίας ή περισσοτέρων μεταβλητών, όπως η a και εννοείται ότι μετά την ολοκλήρωση της ενέργειας αυτής, η μεταβλητή a θα έχει λάβει κάποια αριθμητική τιμή ως περιεχόμενο. Κάθε λέξη της χρησιμοποιούμενης ψευδογλώσσας, που προσδιορίζει μια σαφή ενέργεια, θα αποκαλείται στο εξής εντολή. Όλες οι εντολές σε έναν αλγόριθμο αποτυπώνονται με διαφορετικό χρώμα από το όνομα του αλγορίθμου και τις διάφορες σταθερές και μεταβλητές. Μετά την ανάγνωση των τιμών των μεταβλητών a και b γίνεται ο υπολογισμός του αθροίσματος με την εντολή: c ← a + b. Η εντολή αυτή αποκαλείται εντολή εκχώρησης τιμής. Η γενική μορφή της είναι:

Μεταβλητή ← Έκφραση

και η λειτουργία της είναι “γίνονται οι πράξεις στην έκφραση και το αποτέλεσμα αποδίδεται, μεταβιβάζεται, εκχωρείται στη μεταβλητή”. Στην εντολή αυτή χρησιμοποιείται το αριστερό βέλος, προκειμένου να δείχνει τη φορά της εκχώρησης. Ας σημειωθεί ότι δεν πρόκειται για εξίσωση, παρ’ όλο που σε άλλα βιβλία μπορεί να χρησιμοποιείται το σύμβολο ίσον “=” για τον ίδιο σκοπό. Ας σημειωθεί επίσης ότι οι διάφορες γλώσσες προγραμματισμού χρησιμοποιούν διάφορα σύμβολα για το σκοπό αυτό. Τέλος ο αλγόριθμος ολοκληρώνεται με την εντολή Εκτύπωσε, που αποτυπώνει το τελικό αποτέλεσμα στον εκτυπωτή. Η σύνταξη της εντολής αυτής είναι ανάλογη με αυτή της Διάβασε. Εναλλακτικά μπορεί να χρησιμοποιηθεί και η εντολή Εμφάνισε, που αποτυπώνει ένα αποτέλεσμα στην οθόνη. Στον προηγούμενο αλγόριθμο οι μεταβλητές a και b είναι τα δεδομένα που αποτελούν την είσοδο, ενώ η μεταβλητή c αντιπροσωπεύει το αποτέλεσμα, δηλαδή την έξοδο του αλγορίθμου. Επιπλέον, ο αλγόριθμος έχει απολύτως καθορισμένη την κάθε εντολή (καθοριστικότητα), τελειώνει μετά από συγκεκριμένο αριθμό βημάτων (περατότητα), ενώ κάθε εντολή του είναι ιδιαίτερα σαφής και απλή (αποτελεσματικότητα). Επομένως ο αλγόριθμος αυτός πληροί τα κριτήρια που χαρακτηρίζουν τον ορισμό της έννοιας του αλγορίθμου, όπως αυτά περιγράφηκαν στην παράγραφο 2.1.

Παράδειγμα 2, Βιβλίο μαθητή, Σύγκριση αριθμών με απλή επιλογή

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

Αλγόριθμος Παράδειγμα_2
Διάβασε a
Αν a < 0 τότε
a ← a*(-l)
Εκτύπωσε a
Τέλος Παράδειγμα_2

Στην παράσταση αλγορίθμων με ψευδογλώσσα η επιλογή υλοποιείται με την εντολή Αν…τότε. Η σύνταξη της εντολής είναι:

Αν συνθήκη τότε εντολή

και η λειτουργία της είναι: Αν ισχύει η συνθήκη (δηλαδή αν είναι αληθής), τότε μόνο εκτελείται η εντολή. Σε κάθε περίπτωση εκτελείται στη συνέχεια η εντολή, που ακολουθεί. Στην εντολή Αν…τότε είναι πιθανό, όταν ισχύει η συνθήκη, να απαιτείται η εκτέλεση περισσότερων από μία εντολές. Στην περίπτωση αυτή οι διαδοχικές εντολές γράφονται από κάτω και σε εσοχή, ενώ το σχήμα επιλογής κλείνει με τη λέξη Τέλος_αν. Π.χ.
Αν συνθήκη τότε
     εντολή_1
     εντολή_2
     …………..
     εντολή_ν
 Τέλος_αν
Όπως και στον αλγόριθμο του προηγούμενου παραδείγματος, εύκολα προκύπτει ότι η τιμή a είναι και είσοδος αλλά και έξοδος του αλγορίθμου. Επιπλέον, ο αλγόριθμος έχει καθορισμένη κάθε του εντολή (καθοριστικότητα), τελειώνει μετά από πεπερασμένο αριθμό βημάτων (περατότητα), ενώ κάθε εντολή του είναι ιδιαίτερα απλή κατά την εκτέλεσή της (αποτελεσματικότητα). Έτσι προκύπτει ότι ο αλγόριθμος αυτός πράγματι πληροί τα κριτήρια που περιγράφηκαν στην παράγραφο 2.1.

Παρατηρήσεις: Απόλυτη τιμή: |+5| = 5 και |-5| = 5, Η συνθήκη είναι μια λογική έκφραση.

par2kef2vm

 

Παράδειγμα 3, Βιβλίο μαθητή, Σύγκριση αριθμών με σύνθετη επιλογή

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

Αλγόριθμος Παράδειγμα_3
Διάβασε a, b
Αν a < b τότε
c ← a + b
αλλιώς
c ← a * b
Τέλος_αν
Εκτύπωσε c
Τέλος Παράδειγμα_3
Στο παράδειγμα αυτό χρησιμοποιείται η γενική μορφή της εντολής επιλογής, που είναι:

Αν συνθήκη τότε
εντολή ή εντολές
αλλιώς
εντολή ή εντολές
Τέλος_αν

par3kef2vm

Παράδειγμα 4, Βιβλίο μαθητή, Ανάθεση γραμμάτων σε αριθμούς

Να διαβασθεί ένας ακέραιος και να εκτυπωθεί το αντίστοιχο γράμμα της αλφαβήτου αν ο ακέραιος έχει τιμή 1 ή 2 ή 3, διαφορετικά να εκτυπωθεί η λέξη “άγνωστος”.

Αλγόριθμος Παράδειγμα_4
Διάβασε a
Αν a = 1 τότε
εκτύπωσε “Α”
αλλιώς_αν a = 2 τότε
εκτύπωσε “Β”
αλλιώς_αν a = 3 τότε
εκτύπωσε “Γ”
αλλιώς
εκτύπωσε “άγνωστος”
Τέλος_αν
Τέλος Παράδειγμα_4

par4kef2bm

Παράδειγμα 5, Βιβλίο μαθητή, Επιλογή ορίων

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

Αλγόριθμος Παράδειγμα 5.
Εμφάνισε “Σε ποια ηλικία άρχισες να μαθαίνεις προγραμματισμό;”
Διάβασε age
Επίλεξε age
Περίπτωση < 0
Εμφάνισε “Είπαμε ηλικία …”
Περίπτωση < 5
Εμφάνισε “Μάλλον τα παραλές !!”
Περίπτωση < 60
Εμφάνισε “Μπράβο”
Περίπτωση < 100
Εμφάνισε “Ποτέ δεν είναι αργά”
Περίπτωση αλλιώς
Εμφάνισε “Κάλλιο αργά παρά ποτέ”
Τέλος_επιλογών
Τέλος Παράδειγμα_5

Παράδειγμα 6, Βιβλίου, Χαρακτηρισμός ατόμων

Να διαβάζονται δύο αριθμοί που αντιστοιχούν στο ύψος και βάρος ενός άνδρα. Να εκτυπώνεται ότι ο άνδρας είναι “ελαφρύς”, αν το βάρος του είναι κάτω από 80 κιλά, ή να εκτυπώνεται “βαρύς” στην αντίθετη περίπτωση. Επίσης να εκτυπώνεται “κοντός” αν το ύψος του είναι κάτω από 1.70, αλλιώς να εκτυπώνεται “ψηλός”.
Αλγόριθμος Παράδειγμα6
Διάβασε βάρος, ύψος
Αν βάρος < 80 τότε
     Αν ύψος < 1.70 τότε
         εκτύπωσε “ελαφρύς-κοντός”
     αλλιώς
         εκτύπωσε “ελαφρύς-ψηλός”
     Τέλος
αν
αλλιώς
     Αν ύψος < 1.70 τότε
         εκτύπωσε “βαρύς-κοντός”
     αλλιώς
        εκτύπωσε “βαρύς-ψηλός”
     Τέλοςαν
Τέλος
αν
Τέλος Παράδειγμα_6

par6kef2vivlio

Παράδειγμα 7, Βιβλίου, Εκτύπωση διαδοχικών αριθμών με επαναληπτική εντολή: όσο…επανάλαβε

Να γραφεί αλγόριθμος που να εμφανίζει τους αριθμούς από 1 έως 100.
Στον αλγόριθμο αυτό επιζητείται η παρουσίαση μίας σειράς αριθμών. Αν οι αριθμοί αυτοί ήσαν λίγοι, τότε αυτό θα μπορούσε να γίνει με την παράθεση αντίστοιχων εντολών εμφάνισης. Το ίδιο θα συμβεί και στην περίπτωση που οι αριθμοί είναι περισσότεροι, αλλά δεν έχουν καμία σχέση μεταξύ τους, π.χ. 5, 207, -32 κ.ο.κ. Όμως στο ζητούμενο αλγόριθμο παρατηρούμε ότι κάθε αριθμός παράγεται από τον προηγούμενό του με απλό τρόπο, δηλαδή προσθέτοντας κάθε φορά το 1. Μπορεί λοιπόν να χρησιμοποιηθεί μια μεταβλητή, έστω i, η οποία αρχίζει από το 1 και καταλήγει στο 100 αυξανόμενη κατά 1. Η εκάστοτε αύξηση της μεταβλητής αυτής μπορεί να γίνει με τη χρήση της εντολής εκχώρησης

i ← i + 1

Η αρχική τιμή της μεταβλητής i ορίζεται εύκολα με την εντολή i ←1. Το ζητούμενο είναι να εκτελεστεί 100 φορές η εντολή i ← i + 1. Αυτό επιτυγχάνεται με τη χρήση της εντολής Όσο …επανάλαβε. Η σύνταξη της εντολής αυτής είναι:
Όσο συνθήκη επανάλαβε
        εντολές
Τέλος_επανάληψης
Η λειτουργία της εντολής είναι η εξής: Επαναλαμβάνεται η εκτέλεση των εντολών, όσο η συνθήκη είναι αληθής. Όταν η συνθήκη γίνει ψευδής, τότε ο αλγόριθμος συνεχίζεται με την εντολή που ακολουθεί το ‘Τέλος_ επανάληψης’. Με την εισαγωγή της εντολής αυτής η σχεδίαση του ζητούμενου αλγορίθμου είναι:
Αλγόριθμος Παράδειγμα_7
i ← 1
Όσο i ≤ 100 επανάλαβε
Εμφάνισε i
i ← i + 1
Τέλος_επανάληψης
Τέλος Παράδειγμα_7

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

Παράδειγμα 8, Βιβλίου, Επαναληπτική είσοδος στοιχείων

Να γραφεί αλγόριθμος που να διαβάζει ένα άγνωστο πλήθος αριθμών και να εμφανίζει τον κάθε αριθμό.
Το πρόβλημα αυτό παρουσιάζει την εξής ιδιομορφία: ενώ φαίνεται ότι θα χρησιμοποιηθεί για τη λύση του κάποια επαναληπτική διαδικασία, δεν προσδιορίζεται ο τρόπος τερματισμού της. Καταρχήν, λοιπόν, ας εξετάσουμε τον αλγόριθμο που εκτελεί ένας άνθρωπος, όταν αντιγράφει κάποιους αριθμούς, όπως για παράδειγμα όταν συγκεντρώνονται τα έξοδα από διάφορους λογαριασμούς. Ο αλγόριθμος αυτός είναι:
Βήμα 1. Διάβασε έναν αριθμό
Βήμα 2. Γράψε τον αριθμό
Βήμα 3. Επανάλαβε τη διαδικασία από το βήμα 1.
Ο αλγόριθμος αυτός έχει μια ατέλεια, δεν διαθέτει τρόπο τερματισμού (ατέρμων βρόχος). Η έλλειψη αυτή είναι φυσική, εφόσον ο αλγόριθμος εκτελείται από έναν άνθρωπο. Αυτός θα σταματήσει να γράφει, όταν δεν υπάρχουν πλέον άλλοι αριθμοί. Ωστόσο είναι δυνατόν να διορθωθεί αυτή η ατέλεια, αν το βήμα 3 λάβει την εξής μορφή:
Βήμα 3. Αν υπάρχουν άλλοι αριθμοί, επανάλαβε τη διαδικασία από το βήμα 1, αλλιώς σταμάτησε.
Ο αλγόριθμος τώρα είναι σωστός και μπορεί να εκτελεστεί και από μία μηχανή. Όμως έχει ένα άλλο μειονέκτημα: ο τερματισμός γίνεται μέσα από την εντολή Αν … τότε … αλλιώς …, πράγμα που δεν συνιστάται και πρέπει να αποφεύγεται, γιατί εύκολα μπορεί να χάσει ο προγραμματιστής τον έλεγχο της ροής του προγράμματος και να οδηγηθεί σε λάθος. Για την άρση του μειονεκτήματος αυτού πρέπει να χρησιμοποιηθεί μία εντολή επαναληπτικής διαδικασίας, όπως η εντολή Όσο…επανάλαβε. Ο τελικός αλγόριθμος είναι ο εξής:
Αλγόριθμος Παράδειγμα8
Διάβασε x
Όσο x > 0 επανάλαβε
Εμφάνισε x
Διάβασε x
Τέλος
επανάληψης
Τέλος Παράδειγμα_8

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

Όσο x ≠ 999999 επανάλαβε

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

Παράδειγμα 9. Βιβλίου, Εκτύπωση θετικών αριθμών με εντολή: αρχή_επανάληψης…μέχρις_ότου

par9bibliokef2Να διαβάζονται και να εκτυπώνονται όσοι θετικοί αριθμοί δίνονται από το πληκτρολόγιο. Ο αλγόριθμος τελειώνει, όταν δοθεί ένας αρνητικός αριθμός.
Αλγόριθμος Παράδειγμα9
Αρχή
επανάληψης
Διάβασε x
Εμφάνισε x
Μέχρις_ότου x < 0
Τέλος Παράδειγμα_9
Ας σημειωθεί ότι, στο παράδειγμα αυτό ο βρόχος επανάληψης θα εκτελεσθεί οπωσδήποτε τουλάχιστον μία φορά ακόμα και αν η αρχική τιμή της μεταβλητής x είναι αρνητική. Η βασική διαφοροποίηση αυτής της μορφής επαναληπτικής διαδικασίας σε σχέση με την επαναληπτική διαδικασία που παρουσιάσθηκε στο προηγούμενο παράδειγμα, οφείλεται στη θέση της λογικής συνθήκης στη ροή εκτέλεσης των εντολών.

Παρατήρηση: Η εντολή Αρχήεπανάληψης… Μέχριςότου εκτελείται οπωσδήποτε μια φορά

Παράδειγμα 10. Υπολογισμός αθροίσματος αριθμών με επαναληπτική εντολή: για…από…μέχρι

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

Αλγόριθμος Παράδειγμα10
Sum ← 0
Για i από 1 μέχρι 100
Sum ← Sum + i
Τέλος
επανάληψης
Εκτύπωσε Sum
Τέλος Παράδειγμα_10

Όπως γίνεται φανερό, η εντολή Για…από…μέχρι περιλαμβάνει όλα τα απαιτούμενα στοιχεία για την επανάληψη, δηλαδή αρχική τιμή της μεταβλητής i ( = 1) και τελική τιμή ( = 100). Το βήμα μεταβολής της μεταβλητής i είναι 1, το οποίο υπονοείται και δεν σημειώνεται, όταν είναι 1. Η μεταβλητή Sum που υποδέχεται το άθροισμα των διαδοχικών αριθμών, πρέπει να εκκινήσει με τιμή 0, ενώ το εκάστοτε μερικό άθροισμα υπολογίζεται με την εντολή εκχώρησης εντός του βρόχου. Στο τέλος η μεταβλητή Sum θα περιέχει το τελικό άθροισμα.

Παρατήρηση: Sum ← Sum + i ⇒ Η νέα τιμή του Sum είναι η παλιά συν i

Παράδειγμα 11, Βιβλίου, Υπολογισμός αθροίσματος με επαναληπτική εντολή: για…από…μέχρι…με _βήμα

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

Αλγόριθμος Παράδειγμα11
άθροισμα ← 0
Για i από 2 μέχρι 100 με
βήμα 2
άθροισμα ← άθροισμα + i
Τέλος_επανάληψης
Εκτύπωσε άθροισμα
Τέλος Παράδειγμα_11

Από τα προηγούμενα δύο παραδείγματα γίνεται φανερός ο τρόπος χρήσης της εντολής Για…από…μέχρι. Ας σημειωθεί ωστόσο ότι υπάρχουν κάποιες δεσμεύσεις μεταξύ των τιμών από, μέχρι και βήμα. Έτσι το βήμα δεν μπορεί να είναι μηδέν, γιατί τότε ο βρόχος εκτελείται επ’ άπειρον. Είναι δυνατόν όμως το βήμα να έχει αρνητική τιμή, αρκεί η τιμή από να είναι μεγαλύτερη από την τιμή μέχρι, όπως για παράδειγμα στην επόμενη εντολή: Για k από 100 μέχρι 0 με_βήμα -1
Επίσης οι τιμές από, μέχρι και βήμα δεν είναι απαραίτητο να είναι ακέραιες. Μπορούν να λάβουν οποιαδήποτε πραγματική τιμή. Για παράδειγμα, όταν ζητείται να βρεθούν διαδοχικές τιμές μιας συνάρτησης f(x) για x από 0 έως 1, τότε μπορεί να γραφεί η επόμενη εντολή:
Για x από 0 μέχρι 1 με_βήμα 0,01
Παρατήρηση: O βρόχος Για k από 5 μέχρι 5 εκτελείται ακριβώς μία φορά. O βρόχος Για k από 5 μέχρι 1 δεν εκτελείται καμία φορά

Παράδειγμα 12, Βιβλίου, Πολλαπλασιασμός αλά ρωσικά

p12kef2bmΑς θεωρήσουμε την πράξη του πολλαπλασιασμού δύο ακεραίων αριθμών και ας θυμηθούμε πώς αυτή υλοποιείται χειρωνακτικά. Τοποθετούμε, λοιπόν, τους δύο αριθμούς τον ένα κάτω από τον άλλο και πολλαπλασιάζουμε κάθε ψηφίο του κάτω αριθμού με όλα τα ψηφία του επάνω αριθμού. Πιο συγκεκριμένα, για κάθε ψηφίο του κάτω αριθμού παράγεται ένα μερικό γινόμενο, ενώ τα μερικά γινόμενα τοποθετούνται το ένα κάτω από το άλλο με μία μετατόπιση από τα δεξιά προς τα αριστερά καθώς θεωρούμε διαδοχικά τα ψηφία των μονάδων, των δεκάδων, των εκατοντάδων κ.λπ. Στη συνέχεια γίνεται η πρόσθεση των επιμέρους γινομένων, αφού τα τοποθετήσουμε στην κατάλληλη διάταξη όπως φαίνεται στο σχήμα 2.7. (περισσότερα…)