Α – Η έννοια του Αλγόριθμου

ΑΛΓΟΡΙΘΜΟΙ – ΕΙΣΑΓΩΓΗ & ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ (ΑΕΠΠ)

ΚΕΦΑΛΑΙΟ Η ΕΝΝΟΙΑ ΤΟΥ ΑΛΓΟΡΙΘΜΟΥ

Διδακτικοί Στόχοι 

Μετά το τέλος της ενότητας ο μαθητής θα πρέπει να είναι σε θέση να:

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

Μάθημα 1οΜάθημα 2οΜάθημα 3οΜάθημα 4ο

ΜΑΘΗΜΑ 1 – ΤΙ ΕΙΝΑΙ ΑΛΓΟΡΙΘΜΟΣ

Διδακτικοί Στόχοι

Μετά το τέλος του μαθήματος ο μαθητής θα πρέπει να είναι σε θέση:

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

  • Πρόβλημα

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

    Μπορείτε να υπολογίσετε πόσο απέχετε από έναν κεραυνό;


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

     

    Ξέρατε ότι;

    Ένας κεραυνός είναι η ταχύτατη κίνηση ηλεκτρικών φορτίων μεταξύ ενός σύννεφου και της γης ή ακόμα και μεταξύ δυο σύννεφων. Σήμερα με τη βοήθεια της επιστήμης γνωρίζουμε ότι κατά τη διάρκεια ενός κεραυνού μεταφέρεται ρεύμα με μέση τιμή έως και 100 kilo amperes (kA). Η τάση εξαρτάται από το μήκος του κεραυνού και για ένα κεραυνό 300 μέτρων η τιμή της είναι 1 giga volt, 1 δισεκατομμύριο βολτ. Συνολική ισχύς της τάξεως των 100 terawatts.
    Αυτή η στιγμιαία ροή φορτίου έχει ως αποτέλεσμα δυο φαινόμενα που τα γνωρίζουμε ως αστραπή και ως βροντή. Το μονοπάτι που ακολουθεί η ροή του ρεύματος έχει θερμοκρασία πολλών χιλιάδων βαθμών κελσίου με πρώτο αποτέλεσμα τη φωτοβολία και τη δημιουργία ενός λαμπερού λευκού φωτός που αντιλαμβανόμαστε ως αστραπή και δεύτερο την υπερβολική θέρμανση του γύρω αέρα της ατμόσφαιρας σε μικρό χρονικό διάστημα που στη συνέχεια δημιουργεί μια έκρηξη της οποίας το ωστικό κύμα αντιλαμβανόμαστε ως βροντή.

    http://www.openscience.gr

    Απίστευτο;
    Το φώς κάνει μια βόλτα ~40000Km γύρω από τον Ισημερινό, σε ~ 13/100 sec = 0,13333…sec.
    Προσέξτε και αυτό!
    Αν βρίσκεστε απομονωμένος σε μια επίπεδη έκταση και νιώθετε να σηκώνονται τα μαλλιά σας (γεγονός που δηλώνει ότι σύντομα θα εκδηλωθεί κεραυνός), κάντε βαθύ κάθισμα, με το κεφάλι ανάμεσα στα πόδια (ώστε να ελαχιστοποιήσετε την επιφάνεια του σώματός σας και την επαφή σας με το έδαφος) και πετάξτε ότι μεταλλικό αντικείμενο έχετε πάνω σας.

    http://www.gscp.gr


  • ΑΝΑΛΥΣΗ ΠΡΟΒΛΗΜΑΤΟΣ

    Τι θα λέγατε για λίγη βοήθεια -στη λύση του προβλήματος;

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

    “Μόλις γίνει αντιληπτή η λάμψη μιας αστραπής, αρχίζετε και μετράτε τα δευτερόλεπτα που θα περάσουν μέχρι να ακουστεί η βροντή. Γνωρίζοντας ότι ο ήχος διαδίδεται με ταχύτητα 344 m/sec, αρκεί για την συνέχεια να πολλαπλασιάσετε τα δευτερόλεπτα που μετρήσατε με τον αριθμό 344 και το αποτέλεσμα θα είναι η απόστασή σας από το σημείο του κεραυνού σε μέτρα. Διαιρώντας το προηγούμενο αποτέλεσμα με το 1000 έχετε την ίδια απόσταση εκφρασμένη σε χιλιόμετρα.”

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

    Δίνουμε τον ακόλουθο ορισμό:

    Δεδομένο είναι οποιοδήποτε στοιχείο που μπορεί να γίνει αντιληπτό από ένα παρατηρητή με μία από τις πέντε αισθήσεις του.

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

    “Αφού μετρήσεις τα δευτερόλεπτα που θα μεσολαβήσουν μεταξύ αστραπής και βροντής, πολλαπλασίασέ τα με τον αριθμό 344 για να υπολογίσεις την απόστασή σου από τον κεραυνό σε μέτρα. Διαίρεσε το προηγούμενο αποτέλεσμα με το 1000 και το νέο αποτέλεσμα είναι η ίδια απόσταση εκφρασμένη αυτή τη φορά σε Km.”

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

    Μια δεύτερη, εκφρασμένη με λίγο διαφορετικό τρόπο περιγραφή των ίδιων ενεργειών θα μπορούσε να είναι και η παρακάτω:

    Βήμα 1ο : Μέτρησε τα δευτερόλεπτα μεταξύ αστραπής & βροντής.
    Βήμα 2ο : Υπολόγισε την απόσταση σε μέτρα πολλαπλασιάζοντας τα δευτερόλεπτα που μέτρησες στο βήμα 1 με το 344.
    Βήμα 3ο : Διαίρεσε το αποτέλεσμα που υπολόγισες στο βήμα 2 με το 1000.
    Βήμα 4ο : Το νέο αποτέλεσμα είναι η απόσταση σου από τον κεραυνό σε χιλιόμετρα.

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

    Θέτουμε τώρα το εξής ερώτημα:

    Υπάρχει κάποια διαφορά μεταξύ των αποτελεσμάτων που θα δώσουν οι δύο λύσεις που προτάθηκαν;

    Η απάντηση; Απολύτως καμία!!!

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


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


    Αξίζει να σταθούμε λίγο περισσότερο εδώ.

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

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

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

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

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


    Μια πιο αναλυτική παρουσίαση

    Ας υποθέσουμε ότι είμαστε εμείς εκείνοι οι οποίοι καλούμαστε να υλοποιήσουμε όσα η περιγραφή της λύσης του προβλήματος επιτάσσει. Ας πάρουμε τα βήματα με την σειρά:

    Βήμα 1ο: Μέτρησε τα δευτερόλεπτα μεταξύ αστραπής & βροντής.

    Ρωτούμε:
    Περιγράφεται κάτι σ’ αυτό το πρώτο βήμα που δεν είναι κατανοητό, ή που μπορεί να γεννήσει αμφιβολίες για το τι ακριβώς μας ζητείται να πράξουμε;

    Απαντούμε:
    Κάτι τέτοιο μπορεί να συμβεί μόνο στην περίπτωση που αγνοούμε το νόημα της φράσης Μέτρησε δευτερόλεπτα, καθώς επίσης και των λέξεων που ακολουθούν (αστραπή, βροντή, μεταξύ). Στην φυσική μας γλώσσα όμως κάτι τέτοιο δεν ισχύει από την στιγμή που το νόημα της κάθε λέξης, της κάθε φράσης έχει αυστηρά καθοριστεί έτσι ώστε να μην αφήνονται περιθώρια αμφιβολίας ή παρερμηνείας από κανένα. Έτσι όλοι γνωρίζουμε τι σημαίνει η λέξη μετράω, ποια φυσικά φαινόμενα περιγράφουν οι λέξεις αστραπή, βροντή κ.λ.π.
    Η πρώτη λοιπόν ενέργεια και σαφής είναι και -εφ’ όσον βέβαια γνωρίζουμε να μετράμε- άμεσα πραγματοποιήσιμη ή αλλιώς εκτελέσιμη είναι. Ο χρόνος μάλιστα που θα απαιτηθεί για να πραγματοποιηθεί αυτή η ενέργεια υπόκειται σε όρια, έχει αρχή και τέλος, είναι όπως λέγεται πεπερασμένος. Μπορεί να είναι δύο δευτερόλεπτα, πέντε δευτερόλεπτα, σαράντα δευτερόλεπτα σε καμία περίπτωση όμως δεν θα είναι άπειρος.

    Συνεχίζουμε με το βήμα 2 : Υπολόγισε την απόσταση σε μέτρα πολλαπλασιάζοντας τα δευτερόλεπτα που μέτρησης στο βήμα 1 με το 344.

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

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


    Εν συντομία,

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

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

    Ολοκληρώνοντας την ανάλυσή μας ορίζουμε ότι,

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

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

  • Αλγόριθμος σε ελεύθερο κείμενο

    “Αφού μετρήσεις τα δευτερόλεπτα που θα μεσολαβήσουν μεταξύ αστραπής και βροντής, πολλαπλασίασέ τα με τον αριθμό 344 για να υπολογίσεις την απόστασή σου από τον κεραυνό σε μέτρα. Διαίρεσε το προηγούμενο αποτέλεσμα με το 1000 και το νέο αποτέλεσμα είναι η ίδια απόσταση εκφρασμένη αυτή τη φορά σε Km.”

     

    Αλγόριθμος σε φυσική γλώσσα κατά βήματα

    Βήμα 1ο : Μέτρησε τα δευτερόλεπτα μεταξύ αστραπής & βροντής.
    Βήμα 2ο : Υπολόγισε την απόσταση σε μέτρα πολλαπλασιάζοντας τα δευτερόλεπτα που μέτρησης στο βήμα 1 με το 344.
    Βήμα 3ο : Διαίρεσε το αποτέλεσμα που υπολόγισες στο βήμα 2 με τον αριθμό 1000.
    Βήμα 4ο : Ο αριθμός που υπολόγισες στο βήμα 3 είναι η απόσταση σου από τον κεραυνό σε χιλιόμετρα.

  • Ο λύκος το πρόβατο και το άχυρο

    Ένας βαρκάρης βρίσκεται στην όχθη ενός ποταμού. Παρέα του ένας λύκος, ένα πρόβατο και ένα δεμάτι άχυρα. Όλοι πρέπει να περάσουν στην απέναντι όχθη ενός ποταμού. Στην βάρκα επιβαίνει πάντα ο βαρκάρης (που την οδηγεί) και ακόμη ένα από τα τρία παραπάνω. Προφανώς ο λύκος δεν πρέπει να μείνει μόνος με το πρόβατο, αλλά ούτε και το πρόβατο με το άχυρο.

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

     

    Δείτε το και σε παιχνίδι.

    https://yolo.gr/o-lykos-to-provato-amp-to-lachano-test-exypnadas-2/

     

    Οι ορειβάτες και η γέφυρα

    Τέσσερις ορειβάτες βρίσκονται στην άκρη µιας µεγάλης γέφυρας και θέλουν να περάσουν απέναντι, είναι όµως νύχτα και ο φακός που διαθέτουν έχει ακόµα 60 λεπτά διάρκεια πριν τελειώσει η µπαταρία. Εκτός αυτού η γέφυρα αντέχει µόνο δυο άτοµα και συνεπώς δεν µπορούν να περάσουν όλοι µαζί. 
    Οι ορειβάτες είναι διαφόρων ηλικιών και φυσικής κατάστασης και ο καθένας κάνει διαφορετικό χρόνο για να περάσει απέναντι. Ο πρώτος κάνει 5 λεπτά ο δεύτερος 10 λεπτά ο τρίτος 20 λεπτά και ο τέταρτος 25 λεπτά. Φυσικά όταν πάνε να περάσουν δυο µαζί την γέφυρα ο χρόνος που θα κάνουν θα είναι αυτός που χρειάζεται ο πιο αργός π.χ. αν πάει ο δεύτερος µε τον τρίτο θα κάνουν 20 λεπτά.

    Περιγράψτε πώς θα καταφέρουν να περάσουν απέναντι και οι τέσσερις χωρίς να τους σβήσει ο φακός, 

    σε ελεύθερο κείμενο και σε φυσική γλώσσα σε βήματα.

  • Αλγόριθμος

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

  • 2.1 Τι είναι αλγόριθμος

    Η θεωρία των αλγορίθμων έχει μεγάλη παράδοση και η ηλικία μερικών αλγορίθμων αριθμεί χιλιάδες χρόνια, όπως για παράδειγμα ο αλγόριθμος του Ευκλείδη για την εύρεση του μέγιστου κοινού διαιρέτη δύο αριθμών ή το λεγόμενο κόσκινο του Ερατοσθένη για την εύρεση των πρώτων αριθμών από 1 ως n. Σήμερα το πεδίο της Θεωρίας Αλγορίθμων είναι ένα ιδιαίτερα ευρύ και πλούσιο πεδίο. Πληθώρα συγγραμμάτων έχει εμφανισθεί στη βιβλιογραφία, ενώ συνεχίζεται η περαιτέρω εμβάθυνση σε νέα σύγχρονα προβλήματα. Οι περισσότεροι από τους αλγορίθμους που συνήθως εξετάζονται στα σχετικά βιβλία έχουν προταθεί τα τελευταία 25 χρόνια, όση περίπου είναι και η ηλικία της Πληροφορικής ως μίας νέας αυθύπαρκτης επιστήμης.

    Ιστορικό σημείωμα

    Η λέξη αλγόριθμος (algorithm) προέρχεται από μια μελέτη του Πέρση μαθηματικού Abu Ja’far Mohammed ibn Musa al Khowarizmi, που έζησε περί το 825 μ.Χ. Πέντε αιώνες αργότερα η μελέτη αυτή μεταφράστηκε στα λατινικά και άρχιζε με τη φράση “Algoritmi dixit…” (ο αλγόριθμος λέει ….). Η μελέτη του al Khowarizmi υπήρξε η πρώτη πλήρης πραγματεία άλγεβρας (όρος που και αυτός προέρχεται από το αραβικό al-jabr=αποκατάσταση), γιατί ένας από τους σκοπούς της άλγεβρας είναι και η αποκατάσταση της ισότητας μέσα σε μια εξίσωση. Ο όρος αλγόριθμος επέζησε επί χίλια χρόνια ως σπάνιος όρος, που σήμαινε κάτι σαν “συστηματική διαδικασία αριθμητικών χειρισμών”. Τη σημερινή του αξία απόκτησε από την αρχή του 20ού αιώνα με την ανάπτυξη της ομώνυμης θεωρίας και φυσικά με την επικαιρότητα των ηλεκτρονικών υπολογιστών.

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

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

     

    2.3 Περιγραφή και αναπαράσταση αλγορίθμων

    Στη βιβλιογραφία συναντώνται διάφοροι τρόποι αναπαράστασης ενός αλγορίθμου:

    • με ελεύθερο κείμενο (free text),

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

    • με φυσική γλώσσα (natural language) κατά βήματα

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

ΜΑΘΗΜΑ 2 – ΜΕΤΑΒΛΗΤΕΣ & ΣΤΑΘΕΡΕΣ

Διδακτικοί Στόχοι

Μετά το τέλος του μαθήματος ο μαθητής θα πρέπει να είναι σε θέση:

  • να αντιλαμβάνεται την διαφορά μεταξύ σταθερών και μεταβλητών.

  • Εκφώνηση προβλήματος

    Ως γνωστό το τσουνάμι είναι ένα θαλάσσιο φαινόμενο, το οποίο προκαλείται συνήθως από υποθαλάσσιους σεισμούς, μεγέθους μεγαλύτερου των 6,5 Ρίχτερ και βάθος μικρότερο από 50 χιλιόμετρα. Το αποτέλεσμα ενός τέτοιου σεισμού είναι η μετατόπιση μεγάλης μάζας νερού σε μια θάλασσα ή μια λίμνη. Αυτή η μετατόπιση των όγκων του νερού έχει σαν αποτέλεσμα τη δημιουργία κυμάτων. Όταν ένα τέτοιο κύμα χτυπήσει την ακτή δημιουργεί διάφορα κύματα με τα βαθύτερα σημεία του να είναι χαμηλότερα από την κανονική στάθμη της θάλασσας. Κάθε ακόλουθο κύμα είναι υψηλότερο από το προηγούμενο. Η περίοδος μεταξύ των κυμάτων που φτάνουν είναι 10 έως 30 λεπτά. Η ταχύτητα V αυτών των γιγαντιαίων κυμάτων είναι τόσο μεγαλύτερη, όσο μεγαλύτερο είναι και το βάθος της θάλασσας και υπολογίζεται από την σχέση \( V = \sqrt {g \cdot h} \), όπου \( g = 9,81 ms^{-2} \) η ένταση (επιτάχυνση) της βαρύτητας και \( h \) το βάθος του νερού.

    Με την βοήθεια αλγορίθμου υπολογίστε την ταχύτητα σε \( Km/h \) ενός τσουνάμι και συμπληρώστε τον παρακάτω πίνακα.

    Βάθος (h) Ταχύτητα (V)
    1000
    800
    730
    500
    100
    5
    2
    1

    Εγκυκλοπαιδικά

    Τσουνάμι είναι ιαπωνική λέξη που σημαίνει το κύμα στο λιμάνι. Δεν είναι όμως ένα απλό παλιρροϊκό κύμα αλλά μια σειρά τεράστιων, γιγαντιαίων κυμάτων που προκαλείται από πολλές αιτίες. Από έναν υποθαλάσσιο σεισμό, από μια ηφαιστειακή έκρηξη, από μια γεωλίσθηση του πυθμένα των ωκεανών, από μια πυρηνική έκρηξη ή δοκιμές, ακόμα και σε μια σύγκρουσημετεωριτών η αστεροειδών με τη Γη.
    Όταν λοιπόν, ο υποθαλάσσιος πυθμένας των ωκεανών παίρνει κλίση ή μετατοπίζεται ή ανυψώνεται ή κατακρημνίζεται κατά τη διάρκεια ενός σεισμού, ο φλοιός της Γης παραμορφώνεται στην περιοχή του κέντρου του σεισμού και αρχίζουν να δημιουργούνται μικρά αθώα κύματα σαν μικρές διαταραχές. Λίγο αργότερα αρχίζουν να κινούνται σαν τα κυκλικά κύματα,  ακτινικά προς κάθε κατεύθυνση με ταχύτητα που ξεπερνά κι αυτή του ήχου, ακόμα και 800 km/h.
    Συνήθως, ένα τσουνάμι μπορεί να έχει μήκος κύματος 100 έως 200 km (η απόσταση δύο διαδοχικών κορυφών του), ενώ το ύψος του κύματος που προχωράει στον ωκεανό είναι μόλις μισό μέτρο, φαίνεται δηλαδή στην αρχή σαν ένα αθώο κύμα.  Όμως, γιγαντώνεται πολύ γρήγορα. Όταν λοιπόν το κύμα φθάνει στην ακτή, το ύψος του μπορεί να φτάσει και τα 40 μέτρα πάνω από την κανονική στάθμη της θάλασσας.

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

    http://www.physics4u.gr


    Λέξεις κλειδιά: δεδομένα, μεταβλητές, σταθερές, επεξεργασία δεδομένων, αποτέλεσμα, αλγόριθμος.

  • Ανάλυση

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

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

    Ας επιχειρήσουμε μια διαφορετική προσέγγιση στο πρόβλημα εντοπισμού των δεδομένων, μια προσέγγιση βασισμένη περισσότερο στην εμπειρία μας.
    Το ζητούμενο του προβλήματος είναι μια αριθμητική τιμή και ως τέτοια πρέπει να προκύπτει μετά από την εκτέλεση κάποιων υπολογισμών. Η εκφώνηση μας πληροφορεί ότι η ταχύτητα του θαλλάσιου κύματος είναι ίση με την τετραγωνική ρίζα του γινομένου του θαλάσιου βάθους επί την επιτάχυνση της βαρύτητας και χρησιμοποιώντας τους παρατιθέμενους συμβολισμούς μπορούμε να πούμε ότι  \( V = \sqrt {g \cdot h} \).

    Τίθεται το ερώτημα:
    – Προκειμένου ο αλγόριθμος που θα αναπτυχθεί να υπολογίζει το V τι πρέπει να γνωρίζει;

    Και απαντάμε!!
    – Μα φυσικά το g και το h.

    Το g και το h είναι λοιπόν τα στοιχεία εκείνα του προβλήματος που η επεξεργασία τους θα μας οδηγήσει στο ζητούμενο. Τι είναι δηλ. το g και το h;
    Είναι τα δεδομένα του προβλήματος.

    Μα καλά θα μπορούσε να αντιτείνει κάποιος! Ο υποθαλλάσιος σεισμός που προκαλεί το τσουνάμι και μπορεί (πιθανόν) να γίνει αντιληπτός από την αίσθηση της ακοής δεν αποτελεί δεδομένο; Η μετατόπιση της μάζας του νερού και το θαλάσσιο κύμα που δημιουργεί ο σεισμός και που μπορεί επίσης να γίνει ορατό (υπό προϋποθέσεις) από τον οποιονδήποτε δεν αποτελεί δεδομένο;

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

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

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

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

     

    Μερικές ενδιαφέρουσες παρατηρήσεις

    Μια λίστα πιθανών τιμών του h δίνεται ήδη από την εκφώνηση του προβλήματος και συμπληρώνοντας μπορούμε να αναφέρουμε, ότι, τουλάχιστον θεωρητικά το h δύναται να παίρνει οποιεσδήποτε θετικές τιμές, που δεν ξεπερνούν1 όμως τον αριθμό 10.838. Η τιμή του  h λοιπόν μπορεί να είναι διαφορετική –αλλάζει, μεταβάλλεται – σε κάθε νέα εκτέλεση του αλγορίθμου2. Το h – όπως επίσης και κάθε ποσότητα που η τιμή της μπορεί να μεταβάλλεται – θα καλείται στο εξής μεταβλητή.
    Αντίθετα το g αντιστοιχεί σε μια αυστηρά προκαθορισμένη τιμή η οποία δεν μπορεί να μεταβάλλεται σε καμμία περίπτωση – θα παραμένει δε σταθερή και ίση με 9,81. Το g θα καλείται στο εξής σταθερά.

    Το V τώρα, παριστάνει μία ποσότητα η τιμή της οποίας εξαρτάται κατά κύριο λόγο από την τιμή του h μιας και το g είναι σταθερό. Το  V, συνεπώς δεν μπορεί παρά ν’ ανήλει και αυτό στην κατηγορία των μεταβλητών. Με λίγα λόγια η τετραγωνική ρίζα του γινομένου μιας μεταβλητής με μια σταθερά, θα μας δώσει την τιμή της ταχύτητας του κύματος, που θα είναι επίσης μεταβλητή ποσότητα.

     

    Η αλγοριθμική περιγραφή της λύσης του προβλήματος σε ελεύθερο κείμενο θα μπορούσε να έχει ως εξής:

    “Θεώρησε την τιμή 1000 για το θαλάσσιο βάθος h, την τιμή 9.81 για την επιτάχυνση της βαρύτητας g και υπολόγισε την τιμή της παράστασης  \( \cfrac { \sqrt {g \cdot h} } {1000} \cdot 3600 \). Το αποτέλεσμα είναι η λύση του προβλήματος εκφρασμένη σε Km/h.”

    Ακολουθεί και μια δεύτερη λύση εκφρασμένη αυτή τη φορά σε φυσική γλώσσα κατά βήματα:

    Βήμα 1ο : Θέσε στο h την τιμή 1000 .

    Βήμα 2ο : Θέσε στο g την τιμή 9.81.

    Βήμα 3ο : Υπολόγισε  \( \cfrac { \sqrt {g \cdot h} } {1000} \cdot 3600 \) και θέσε V το αποτέλεσμα.

    Βήμα 4ο : Γνωστοποίησε την τιμή του V ως αποτέλεσμα της λύσης του προβλήματος.

     

    Στον δεύτερο αλγόριθμο έχει σκοπίμως παραληφθεί η αναφορά στις μονάδες, που συνοδεύουν τα στοιχεία του προβλήματος (m, m/s, Km/h) και αυτό είναι απολύτως αποδεκτό, διότι, εφ’ όσον ο αλγόριθμος περιγράφει τις απαραίτητες ενέργειες που οδηγούν στην λύση του προβλήματος και η εκφώνηση του προβλήματος απαιτεί η λύση αυτή να δοθεί σε Km/h, θεωρείτε βέβαιο, ότι ο αλγόριθμος θα “μεριμνά” για τις πιθανές μετατροπές μεταξύ των μονάδων.

     

    1 Το βαθύτερο μέρος της θάλασσας είναι ανατολικά της νήσου Μιντανάο, στον Ειρηνικό Ωκεανό και φτάνει τα 10838 μ.

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


  • Αλγόριθμος σε ελεύθερο κείμενο

    “Θεώρησε την τιμή 1000 για το θαλάσσιο βάθος h, την τιμή 9.81 για την επιτάχυνση της βαρύτητας g και υπολόγισε την τιμή της παράστασης  \( \cfrac { \sqrt {g \cdot h} } {1000} \cdot 3600 \). Το αποτέλεσμα είναι η λύση του προβλήματος εκφρασμένη σε Km/h.”

     

    Αλγόριθμος σε φυσική γλώσσα κατά βήματα

    Βήμα 1ο : Θέσε στο h την τιμή 1000 .

    Βήμα 2ο : Θέσε στο g την τιμή 9.81.

    Βήμα 3ο : Υπολόγισε  \( \cfrac { \sqrt {g \cdot h} } {1000} \cdot 3600 \) και θέσε V το αποτέλεσμα.

    Βήμα 4ο : Γνωστοποίησε την τιμή του V ως αποτέλεσμα της λύσης του προβλήματος.

     

  • Εξάσκηση

    Ο αλγόριθμος που ακολουθεί αναφέρεται σε ένα παιχνίδι με αριθμούς που εκπλήσσει με τα αποτελέσματά του. Λέει λοιπόν σε ελεύθερο κείμενο:

    “Διάλεξε τυχαία έναν αριθμό π.χ. τον αριθμό 5. Πολλαπλασίασέ τον επί 9 και πολλαπλασίασε το αποτέλεσμα επί 12345679 για να πάρεις ένα νέο αποτέλεσμα. Επίλεξε τώρα έναν άλλο αριθμό π.χ. τον 2. Πολλαπλασίασέ τον επί 7 και το αποτέλεσμα πολλαπλασίασέ το ξανά με τον αριθμό 15873.”

    Εκφράστε τον παραπάνω αλγόριθμο σε φυσική γλώσσα κατά βήματα.

    Αλγόριθμος σε φυσική γλώσσα κατά βήματα Χ Κ Product Έκπληξη_1 Έκπληξη _2
    Βήμα 1ο : Θέσε όπου Χ το 5
    Βήμα 2ο : Θέσε όπου Κ το 9
    Βήμα 3ο : Θέσε ως Product το γινόμενο Κ * Χ
    Βήμα 4ο : Θέσε όπου Κ το 12345679
    Βήμα 5ο : Θέσε ως Έκπληξη_1 το γινόμενο Product *K
    Βήμα 6ο : Θέσε όπου Κ το 7
    Βήμα 7ο : Θέσε όπου Χ το 2
    Βήμα 8ο : Θέσε ως Product το γινόμενο Κ*Χ
    Βήμα 9ο : Θέσε όπου Κ το 15873
    Βήμα 10ο : Θέσε ως Έκπληξη _2 το γινόμενο Product *K
    Βήμα 11ο : Έκπληξη_1, Έκπληξη_2, τα Aποτελέσματα

    Ολοκληρώνουμε μ’ ένα σχόλιο:

    Είναι φανερό ότι οι τιμές των Κ, Χ, Product αλλάζουν, μεταβάλλονται καθώς εκτελείται ο αλγόριθμος. Πρόκειται λοιπόν για μεταβλητές χωρίς καμία αμφιβολία. Να σημειώσουμε εδώ ότι, κάθε φορά που μια μεταβλητή παίρνει μια νέα τιμή η προηγούμενη φυσικά χάνεται. Ως μεταβλητές επίσης χαρακτηρίζονται και οι Εκπληξη_1, Εκπληξη_2 μιας και οι τιμές τους εξαρτώνται από τις τιμές των μεταβλητών Product και K. Σταθερές στον συγκεκριμένο αλγόριθμο δεν υπάρχουν.

  • ….

  • ΚΕΦ 2 ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ

    2.4.1 Δομή ακολουθίας

    Σταθερές (constants). Με τον όρο αυτό αναφερόμαστε σε προκαθορισμένες τιμές που παραμένουν αμετάβλητες σε όλη τη διάρκεια της εκτέλεσης ενός αλγορίθμου. Οι σταθερές διακρίνονται σε:

    • αριθμητικές, π.χ. 123, +5, -1,25
    • αλφαριθμητικές π.χ. “Τιμή”, “Κατάσταση αποτελεσμάτων”
    • λογικές που είναι ακριβώς δύο, Αληθής και Ψευδής

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

     

    ΚΕΦ 7 ΒΑΣΙΚΑ ΣΤΟΙΧΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ -ΓΛΩΣΣΑ

    7.3 Σταθερές

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

    7.4 Μεταβλητές  

    Η έννοια της μεταβλητής (variable) είναι γνωστή από τα μαθηματικά.

    Μια μεταβλητή λοιπόν, παριστάνει μία ποσότητα που η τιμή της μπορεί να μεταβάλλεται.

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

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

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

  •  

ΜΑΘΗΜΑ 3 – ΨΕΥΔΟΓΛΩΣΣΑ


Διδακτικοί Στόχοι

Μετά το τέλος του μαθήματος ο μαθητής θα πρέπει να είναι σε θέση:

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

Λέξεις κλειδιά: ψευδογλώσσα, αλφάβητο, λεξιλόγιο, γραμματική, σημασιολογία.

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

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

    Ως αλφάβητο της ψευδογλώσσας ορίζεται το σύνολο των στοιχείων που περιλαμβάνει τα γράμματα του ελληνικού και του λατινικού αλφαβήτου (κεφαλαία και πεζά) τα ψηφία (0, 1, 2, 3, …. , 9) όπως επίσης και κάποιους ειδικούς χαρακτήρες (_), σύμβολα (+, -, *, /, ^, <, >, =) σημεία στίξης • ( ) . , ΄ ! & κενός χαρακτήρας κ.λ.π.

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

    Το σύνολο των κανόνων που καθορίζει το νόημα των λέξεων ακούει στο όνομα σημασιολογία, ενώ το σύνολο των αποδεκτών λέξεων αποτελεί το λεξιλόγιο της ψευδογλώσσας.

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

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

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

    κεφαλαία ή πεζά γράμματα του ελληνικού ή του λατινικού αλφαβήτου, ψηφία (0,1,2,…9) και τον χαρακτήρα κάτω παύλα ( _ ).

    Δεν επιτρέπονται κενά διαστήματα και
    ξεκινούν πάντα με γράμμα.

    Έτσι λοιπόν,
    αποδεκτά ονόματα μεταβλητών – σταθερών για το παράδειγμά μας θα μπορούσε επίσης να είναι τα εξής:

    αντί h Bάθος, θαλάσσιο_βάθος, depth, _Depth, h1, …
    αντί g γ, επιτάχυνση_βαρύτητας, επιταχ_g, …
    αντί V ταχύτητα, Ταχύτητα_tsunami, V_τσουνάμι, Vtsunami, speed,…

    Ακολουθεί και μια λίστα μη αποδεκτών ονομάτων μεταβλητών συνοδευόμενη από επισήμανση της αιτίας του λάθους:

    θαλάσσιο βάθος,  έχει κενό
    1speed,  δεν ξεκινά με γράμμα
    επιταχ*βαρύτητας,  μη αποδεκτός χαρακτήρας *

  • 7.1 Το αλφάβητο της ΓΛΩΣΣΑΣ

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

    Συγκεκριμένα

    Γράμματα

    Κεφαλαία ελληνικού αλφαβήτου (Α-Ω)

    Πεζά ελληνικού αλφαβήτου (α-ω)

    Κεφαλαία λατινικού αλφαβήτου (Α-Ζ)

    Πεζά λατινικού αλφαβήτου (a-z)

    Ψηφία

    0-9

    Ειδικοί χαρακτήρες

    – */=•().,΄! & κενός χαρακτήρας Λ

ΜΑΘΗΜΑ 4 – ΟΙ ΠΡΩΤΕΣ ΕΝΤΟΛΕΣ ΤΗΣ ΨΕΥΔΟΓΛΩΣΣΑΣ


Διδακτικοί Στόχοι
Μετά το τέλος του μαθήματος ο μαθητής θα πρέπει να είναι σε θέση:

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

  • Εκφώνηση προβλήματος

    O Κωστάκης επένδυσε το έτος 2013 ένα χρηματικό ποσό (κεφάλαιο) σε λογαριασμό ταμιευτηρίου με επιτόκιο 2% και ετήσιο ανατοκισμό. Γράψτε αλγόριθμο που θα υπολογίζει το κεφάλαιο που θα έχει συγκεντρωθεί μετά 10 έτη.

    Λέξεις κλειδιά: κεφάλαιο, επιτόκιο, τόκος, ανατοκισμός, ψευδογλώσσα – εντολές.

  • Μαθηματική Ανάλυση προβλήματος

    Έστω ότι το ποσό που επενδύθηκε (αρχικό κεφάλαιο) αντιστοιχεί σε 2.000 ευρώ. Το κεφάλαιο στο τέλος κάθε έτους θα είναι αυξημένο σύμφωνα με το επιτόκιο. Οι σχετικοί υπολογισμοί δίνονται παρακάτω:

     

    Έτος Επιτόκιο Κεφάλαιο (σε ευρώ)
    2013 2000
    2014 2.000 * 2% = ….. 2.000 + 2.000 * 2% = 2.000 * (1 + 0,02)
    2015 2…… * 2% = ….. 2.000 * (1 + 0,02) + [ 2000 * (1 + 0,02)] * 2% = 2.000 * (1 + 0,02)2
    2016 2.000 * (1 + 0,02)2 + [ 2000 * (1 + 0,02)2 ] * 2% = 2.000 * (1 + 0,02)3
    2017
    2018
    2019
    2020
    2021
    2022 2.000 * (1 + 0,02)9
    2023 2.000 * (1,02)10

     

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

    Ο αλγόριθμος συνοπτικά εκφρασμένος σε φυσική γλώσσα κατά βήματα θα έχει ως εξής:

    Βήμα 1ο : Θέσε επιτόκιο = 0.02

    Βήμα 2ο : Θέσε μια οποιαδήποτε τιμή ως Αρχικό Κεφάλαιο

    Βήμα 3ο : Υπολόγισε Τελικό Κεφάλαιο = Αρχικό Κεφάλαιο x 1.0210

    Βήμα 4ο : Αποτέλεσμα το Τελικό Κεφάλαιο

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

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

    κάθε λέξη που προσδιορίζει μια σαφή ενέργεια σ’ έναν αλγόριθμο, θα ονομάζεται εντολή.

    Στην συνέχεια θα γνωρίσουμε τις πρώτες εντολές της ψευδογλώσσας.

    Η εντολή Θέσε επιτόκιο = 0.02, όπως την έχουμε γνωρίσει κατά την διατύπωση αλγορίθμων στην φυσική γλώσσα, έχει σαν αποτέλεσμα (μετά την εκτέλεσή της) την απόδοση της τιμής 0.02 στην σταθερά επιτόκιο. Στην ψευδογλώσσα η αντίστοιχη εντολή συμβολίζεται με ένα βέλος το οποίο δείχνει πάντοτε προς τα αριστερά ().

    Η εντολή αυτή ονομάζεται εντολή απόδοσης τιμής ή εκχώρησης τιμής.

    Φυσικά το βέλος δεν αρκεί από μόνο του για να δοθεί τιμή σε μια μεταβλητή. Σύμφωνα με όσα προηγήθηκαν, απαραίτητο για κάθε μεταβλητή είναι πρώτον το όνομά της και δεύτερον η τιμή που πρόκειται να της αποδοθεί. Για να είναι ολοκληρωμένη η εντολή επομένως, συνεχίζουμε ορίζοντας ότι το βέλος δείχνει πάντα την φορά της εκχώρησης, αριστερά του γράφεται το όνομα της μεταβλητής και δεξιά η τιμή που θα της εκχωρηθεί.
    Έτσι λοιπόν εφ’ όσον επιτόκιο η σταθερά που έχει επιλεγεί να αντιστοιχεί στο επιτόκιο (τι βολικό!!!) και 0.02 η τιμή που θα της αποδοθεί, αβίαστα μπορούμε να συμπεράνουμε ότι η εκχώρηση στην σταθερά επιτόκιο της τιμής 0.02, θα κωδικοποιηθεί στην ψευδογλώσσα με την εντολή:

    Επιτόκιο 0.02

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

    Διάβασε μεταβλητή

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

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

    Για το παράδειγμά μας θα είναι λοιπόν,

    Διάβασε Αρχικό_Κεφάλαιο

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

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

    Ο υπολογισμός του τελικού κεφαλαίου, οδηγεί στον υπολογισμό της τιμής της παράστασης Αρχικό Κεφάλαιο x 1,0210 και στην εκχώρηση αυτής της τιμής στην μεταβλητή Τελικό_Κεφάλαιο.
    Στην ψευδογλώσσα η κωδικοποίηση μαθηματικών παραστάσεων είναι δυνατό να περιγραφεί με την χρήση των γνωστών από τα μαθηματικά αριθμητικών τελεστών. Πρόκειται για σύμβολα που αντιστοιχούν σε πράξεις που εκτελούνται μεταξύ αριθμών. Στον πίνακα που ακολουθεί παρατίθενται οι τελεστές των βασικών πράξεων που υποστηρίζει η ψευδογλώσσα.

    Πράξη Τελεστής Παράδειγμα Αποτέλεσμα
    Πρόσθεση + 5 + 13 18
    Αφαίρεση 7 – 11 -4
    Πολλαπλασιασμός * 12 * 6 72
    Διαίρεση (τέλεια) / 45/4 11,25
    Ύψωση σε δύναμη ^ 6^2 36

     

     

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

    Ακολουθούν μερικά παραδείγματα μετατροπής εκφράσεων σε ψευδογλώσσα.

     

     

    Μαθηματική παράσταση – Κωδικοποίηση σε ψευδογλώσσα

    Είναι προφανές απ’ όσα προηγήθηκαν ότι κάνοντας χρήση των αριθμητικών τελεστών, η παράσταση Αρχικό Κεφάλαιο x 1,0210, στην ψευδογλώσσα κωδικοποιείται ως Αρχικό Κεφάλαιο * 1,02^10. Επομένως η εντολή εκχώρησης για την μεταβλητή Τελικό_Κεφάλαιο θα γραφεί ως :

    Τελικό_Κεφάλαιο Αρχικό_Κεφάλαιο * 1,02^10

    ή κάνοντας χρήση και της σταθεράς του αλγορίθμου ως

    Τελικό_Κεφάλαιο Αρχικό_Κεφάλαιο * (1 + Επιτόκιο)^10

    Οι μεταβλητές Αρχικό_Κεφάλαιο, Τελικό_Κεφάλαιο καθώς και η σταθερά Επιτόκιο συμμετέχουν στην διαμόρφωση της παράστασης και ονομάζονται τελεστέοι. Την παράσταση συμπληρώνουν οι αριθμοί 1 και 10 με διαφορετικούς ρόλους ο καθένας, καθώς και η παρένθεση. Αυτή η συνύπαρξη τελεστών, τελεστέων, παρενθέσεων δίνει μορφή σε μια παράσταση η οποία θα καλείται στο εξής έκφραση.
    Μια έκφραση είναι δυνατό να αποτελείται από μια μόνο τιμή (μεταβλητή ή σταθερά) μέχρι και μια πολύπλοκη μαθηματική παράσταση.

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

    Πιο ειδικά,

    κάθε έκφραση της οποίας η τιμή είναι αριθμός θα ονομάζεται στο εξής αριθμητική έκφραση.

    Γενική σύνταξη εντολής εκχώρησης

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

    Επιτόκιο ← 0.02

    Τελικό_Κεφάλαιο Αρχικό_Κεφάλαιο * (1 + Επιτόκιο)^10

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

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

    Σύμφωνα με τους κανόνες (1, 2, 3) ορίζεται η γενικά αποδεκτή μορφή της εντολής εκχώρησης ή η γενική της σύνταξη. Αυτή είναι 1:

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

    Το σύνολο των κανόνων, σύμφωνα με το οποίο, ορίζεται η μορφή με την οποία μια εντολή είναι αποδεκτή αποτελεί την γραμματική της ψευδογλώσσας.

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

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

    Για την εντολή εκχώρησης η λειτουργία2 της μπορεί να περιγραφεί ως εξής:

    Εκτελούνται οι πράξεις που ορίζει η έκφραση και το αποτέλεσμα μεταβιβάζεται στη μεταβλητή.

    Ο πίνακας που ακολουθεί συγκεντρώνει όλα τα συμπεράσματα της ανάλυσης που προηγήθηκε σχετικά με την εντολή εκχώρησης.

    Εντολή εκχώρησης τιμής
    Γενική μορφή Λειτουργία
    Μεταβλητή Έκφραση Υπολογίζεται η τιμή της έκφρασης -εκτελούνται οι πράξεις που ορίζει η έκφραση- και το αποτέλεσμα αποδίδεται, εκχωρείται, μεταβιβάζεται στη μεταβλητή αριστερά του βέλους.
    Παραδείγματα Λειτουργία
    Κ ← 12 Ο αριθμός 12 αποδίδεται στην μεταβλητή Κ.
    α ← 12 * 3

    α ← α + 1

    γ ← β ^ 2

    Εκτελείται η πράξη του πολλαπλασιασμού μεταξύ των 12 και 3 και το αποτέλεσμα (36) αποδίδεται στην μεταβλητή α.

    Η τιμή της μεταβλητής α (36) προστίθεται με το 1 και το αποτέλεσμα (37) μεταβιβάζεται εκ νέου στην μεταβλητή α η οποία χάνει την προηγούμενη τιμή της.

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

    Αποτίμηση αριθμητικών εκφράσεων – Αναλυτικά

    Ας δούμε λίγο αναλυτικά την διαδικασία που ακολουθείται σε κάθε περίπτωση για τον υπολογισμό της τιμής μιας αριθμητικής έκφρασης. Θα χρησιμοποιήσουμε για τον σκοπό αυτό τα δεδομένα του προβλήματος που μας απασχόλησε σε προηγούμενο μάθημα. Η εκτέλεση των δύο εντολών εκχώρησης που προηγήθηκαν (g ← 9.81 και h ← 1000) θα έχει σαν αποτέλεσμα την απόδοση, στην μεν σταθερά g της τιμής 9.81, στην δε μεταβλητή h της τιμής 1000. Η διαδικασία που ακολουθείται για την αποτίμηση της έκφρασης (g * h)^0.5 * 3600/1000 περιγράφεται συνοπτικά στο απόσπασμα που ακολουθεί.

    Η έκφραση αρχικά,                                                            (g * h)^0.5 * 3600/1000

    μετά την απόδοση τιμών σε σταθερές, μεταβλητές,           (9.81 * 1000)^0.5 * 3600/1000

    κατά την εκτέλεση των πράξεων,

    προηγούνται οι πράξεις εντός των παρενθέσεων,     9810^0.5*3600/1000

    ακολουθούν δυνάμεις                                                99.04*3600/1000

    στην συνέχεια πολλαπλασιασμοί                              356544/1000

    και τέλος διαιρέσεις                                                   356.544

    Το αποτέλεσμα μετά την εκτέλεση των πράξεων είναι ο αριθμός 356.544 που αντιστοιχεί στην τιμή της έκφρασης3.

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

    Αποτελέσματα //μεταβλητές//

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

    Αλγόριθμος – Φυσική γλώσσα κατά βήματα

    Θέσε επιτόκιο = 0,02

    Θέσε στο αρχικό κεφάλαιο μια οποιαδήποτε τιμή

    Θέσε Τελικό Κεφάλαιο = Αρχικό Κεφάλαιο x 1,0210

    Αποτέλεσμα το Τελικό Κεφάλαιο

     

    Αλγόριθμος – Ψευδογλώσσα

    Επιτόκιο ← 0.02

    Διάβασε Αρχικό_Κεφάλαιο

    Τελικό_Κεφάλαιο ← Αρχικό_Κεφάλαιο * (1+Επιτόκιο)^10

    Αποτελέσματα // Τελικό_Κεφάλαιο //

     

    Επιπλέον των όσο αναφέρθηκαν επισημαίνεται ότι:

    Η πρώτη εντολή σ’ έναν αλγόριθμο στο εξής θα προσδιορίζεται από την λέξη Αλγόριθμος η οποία θα ακολουθείται από ένα όνομα – το όνομα του αλγορίθμου. Η τελευταία εντολή σ’ ένα αλγόριθμο θα είναι η εντολή Τέλος η οποία επίσης θα ακολουθείται από το όνομα του αλγορίθμου. Ολοκληρωμένος ο αλγόριθμος δίνεται παρακάτω:

    Αλγόριθμος – Ψευδογλώσσα

    Αλγόριθμος Καταθέσεις

    Επιτόκιο 0.02

    Διάβασε Αρχικό_Κεφάλαιο

    Τελικό_Κεφάλαιο Αρχικό_Κεφάλαιο * (1 + Επιτόκιο)^10

    Αποτελέσματα // Τελικό_Κεφάλαιο //

    Τέλος Καταθέσεις

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


    1 Για την απόδοση τιμής σε σταθερά η γενική σύνταξη είναι Σταθερά ← Έκφραση όπου η έκφραση αποτελείται από μόνο μια τιμή.
    2 Βλέπε αναλυτική παρουσίαση υπολογισμού τιμής μιας έκφρασης – προηγούμενο παράδειγμα.
    3 Κατά την διενέργεια των υπολογισμών έχει γίνει αυθαίρετα αποκοπή δεκαδικών ψηφίων ώστε το αποτέλεσμα να δοθεί με ακρίβεια δύο δεκαδικών ψηφίων.


  • Αλγόριθμος Καταθέσεις

    Επιτόκιο 0.02

    Διάβασε Αρχικό_Κεφάλαιο

    Τελικό_Κεφάλαιο Αρχικό_Κεφάλαιο * (1 + Επιτόκιο)^10

    Αποτελέσματα // Τελικό_Κεφάλαιο //

    Τέλος Καταθέσεις

  •  

  •  

  •  

     

  •  

Permanent link to this article: https://pervolischool.edu.gr/computer-science/algorithms-aepp/the-algorithm-concept/