ΑΛΓΟΡΙΘΜΙΚΗ ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΩΝ ΑΛΓΟΡΙΘΜΙΚΗ ΕΠΙΛΥΣΗ ΠΡΟΒΛΗΜΑΤΩΝ ΔΕΔΟΜΕΝΑ ΕΙΣΟΔΟΣ ΠΛΗΡΟΦΟΡΙΕΣ ΕΞΟΔΟΣ ΕΠΕΞΕΡΓΑΣΙΑ Κάθε στοιχείο δεδομένου αντιστοιχίζεται σε μια μεταβλητή ώστε να μπορούμε να το επεξεργαστούμε. Στο στάδιο της επεξεργασίας με κατάλληλες εντολές, που επεξεργάζονται τις τιμές των μεταβλητών που παριστάνουν τα δεδομένα, προσπαθούμε να καταλήξουμε στα αποτελέσματα. Συνήθως τα αποτελέσματα των εντολών επεξεργασίας αποθηκεύονται σε ενδιάμεσες μεταβλητές μέχρι να τοποθετήσουμε τα αποτελέσματα στις τελικές μεταβλητές που θα εμφανίσουμε. Το στάδιο της επεξεργασίας είναι το δυσκολότερο γιατί απαιτεί μαθηματικο-λογικές ενέργειες.
ΠΩΣ ΓΡΑΦΟΥΜΕ ΑΛΓΟΡΙΘΜΟ ΜΕ ΨΕΥΔΟΓΛΩΣΣΑ Ξεκινάμε πάντα με τη δήλωση: Αλγόριθμος όνομα_αλγορίθμου Δίνουμε τιμή στις απαραίτητες μεταβλητές, είτε με την εντολή Διάβασε, είτε με απ’ ευθείας εκχώρηση (). Χρησιμοποιούμε αν χρειάζεται δομές διακλάδωσης και δομές επανάληψης . Κάνουμε τους υπολογισμούς μας εκχωρώντας τα αποτελέσματα σε μεταβλητές () Εμφανίζουμε στην οθόνη τα αποτελέσματα με την εντολή: Εμφάνισε Τελειώνουμε με τη δήλωση Τέλος όνομα_αλγορίθμου Παράδειγμα: Εμβαδό κύκλου Αλγόριθμος εμβαδό_κύκλου π 3.14 Διάβασε ρ Εμβ π * ρ ^ 2 Εμφάνισε “Εμβαδό= “, Εμβ Τέλος εμβαδό_κύκλου
ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ (1) Σημαίνει ότι η εκτέλεση των εντολών, γίνεται με τη σειρά που εμφανίζονται (ακολουθιακά). Χρησιμοποιούμε μόνο εντολές εισόδου-εξόδου και εντολές εκχώρησης. Παράδειγμα: Εύρεση Μέσου όρου 3 αριθμών Δήλωση έναρξης αλγορίθμου Αλγόριθμος μέσος_όρος Διάβασε x1, x2, x3 μο (x1+x2+x3) / 3 Εμφάνισε ′Μέσος όρος ’, μο Τέλος μέσος_όρος Εισαγωγή τιμών στις x1, x2, x3 από το χρήστη Υπολογισμός και εκχώρηση τιμής στη μο Εμφάνιση αποτελέσματος μο Δήλωση τέλους αλγορίθμου
ΑΛΓΟΡΙΘΜΟΙ ΜΟΝΟ ΜΕ ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ (2) Σε περίοδο εκπτώσεων ένας υπάλληλος ενός καταστήματος ρούχων θέλει να υπολογίσει τις νέες τιμές των προϊόντων του μαγαζιού στο οποίο εργάζεται. Να γραφεί αλγόριθμος που θα διαβάζει την αρχική τιμή και το ποσοστό έκπτωσης ενός ρούχου και θα υπολογίζει και εμφανίζει (με κατάλληλα μηνύματα) την νέα του τιμή μετά την έκπτωση. Πρέπει να ξέρουμε ότι: Νέα τιμή = Αρχική τιμή - Ποσό έκπτωσης Ποσό Έκπτωσης = Αρχική τιμή * Ποσοστό έκπτωσης % Διαβάζουμε: Αρχική τιμή, Ποσοστό έκπτωσης % Μεταβλητές: ατ πε Υπολογίζουμε: Ποσό έκπτωσης, Τελική τιμή Μεταβλητές: εκπτ ττ Εμφανίζουμε: Τελική τιμή
Αλγόριθμος Εκπτώσεις Διάβασε ατ, πε εκπτ ← ατ * πε/100 ! Ποσό έκπτωσης ττ ← ατ - εκπτ ! Τιμή μετά την έκπτωση Εμφάνισε ″Η τελική τιμή είναι ″, ττ, ″ €″ Τέλος Εκπτώσεις
ΑΛΓΟΡΙΘΜΟΙ ΜΟΝΟ ΜΕ ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ (3) Κάποιος θέλει να αγοράσει ένα υπολογιστή με δόσεις. Να γραφεί αλγόριθμος που θα διαβάζει τον αριθμό των δόσεων που επιθυμεί ο πελάτης, την αξία του υπολογιστή (σε Ευρώ) και θα εμφανίζει την αξία του υπολογιστή με τις δόσεις (με τόκο 10%) καθώς και το ποσό κάθε δόσης. Διαβάζουμε: Αριθμό δόσεων, Αξία υπολογιστή Μεταβλητές: αδ αρχ_αξ Υπολογίζουμε: Αξία με δόσεις, Ποσό κάθε δόσης Μεταβλητές: τελ_αξ δοση Εμφανίζουμε: Αξία με δόσεις , Ποσό κάθε δόσης Για τους υπολογισμούς πρέπει να ξέρουμε ότι: Αξία με δόσεις = Αρχική αξία + τόκοι (τόκοι = 10% αρχικής αξίας) Ποσό κάθε δόσης = Αξία με δόσεις / Αριθμό δόσεων
Αλγόριθμος Δόσεις Διάβασε αδ, αρχ_αξ τελ_αξ ← αρχ_αξ + αρχ_αξ * 10/100 ! Αξία με δόσεις δόση ← τελ_αξ / αδ ! Ποσό κάθε δόσης Εμφάνισε ″Η τελική αξία είναι ″, τελ_αξ Εμφάνισε ″Ποσό κάθε δόσης ″, δόση Τέλος Δόσεις
ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ (4) Το ημερομίσθιο ενός εργαζομένου είναι 40€ και επιβαρύνεται με ποσοστό κρατήσεων 10% για ασφάλεια και 6% για φόρο. Να γραφεί αλγόριθμος που να διαβάζει το όνομα ενός εργαζομένου και τις ημέρες απασχόλησης του για ένα μήνα και θα εμφανίζει το σύνολο των κρατήσεών του καθώς και τις καθαρές αποδοχές του με κατάλληλα μηνύματα. Πρέπει να ξέρουμε ότι: Ακαθάριστες αποδοχές = ημερομίσθιο x ημέρες εργασίας Κρατήσεις = κρατήσεις ασφάλειας + κρατήσεις φόρου Καθαρές αποδοχές = ακαθάριστες αποδοχές - κρατήσεις Διαβάζουμε: όνομα, ημέρες εργασίας Μεταβλητές: ονομ ημερ Υπολογίζουμε: ακαθάριστες αποδοχές, κρατήσεις, καθαρές αποδοχές Μεταβλητές: ακαθ κρατ καθ Εμφανίζουμε: κρατήσεις, καθαρές αποδοχές
Αλγόριθμος Αποδοχές1 Διάβασε ονομ, ημερ ακαθ ← 40 * ημερ κρατ ← ακαθ * 10/100 + ακαθ * 6/100 καθ ← ακαθ - κρατ Εμφάνισε ″Ο ″, ονομ, ″έχει κρατήσεις ″, κρατ , ″ €″ Εμφάνισε ″Οι καθαρές αποδοχές του είναι ″, καθ , ″ €″ Τέλος Αποδοχές1
ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ (5) Αν ο εργαζόμενος του προηγούμενου προβλήματος δούλεψε παραπάνω ώρες σαν υπερωρίες να τροποποιηθεί ο αλγόριθμος ώστε να υπολογίζονται και οι υπερωρίες στις ακαθάριστες αποδοχές. Κάθε ώρα υπερωρίας πληρώνεται με το 20% του ημερομισθίου. Διαβάζουμε επιπλέον: ώρες υπερωριών Μεταβλητή: ωρ_υπερ Για τις υπερωρίες Υπερωρίες = ώρες υπερωριών x 20% ημερομισθίου 40 Μεταβλητές: αμ_υπερ ωρ_υπερ
Αλγόριθμος Αποδοχές2 Διάβασε ονομ, ημερ, ωρ_υπερ αμ_υπερ ← ωρ_υπερ * 20/100*40 ! Αμοιβή υπερωριών ακαθ ← 40 * ημερ + αμ_υπερ ! Ακαθάριστες αποδοχές κρατ ← ακαθ * 10/100 + ακαθ * 6/100 ! κρατήσεις καθ ← ακαθ - κρατ ! Καθαρές αποδοχές Εμφάνισε ″Ο ″, ονομ, ″έχει κρατήσεις ″, κρατ , ″ €″ Εμφάνισε ″Οι καθαρές αποδοχές του είναι ″, καθ , ″ €″ Τέλος Αποδοχές2