Προγραµµατισµός Ο προγραµµατιστής φτιάχνει προγράµµατα για να λύσει κάποια προβλήµατα. Για κάθε πρόβληµα πρέπει να σκεφτεί τον αλγόριθµο που θα ακολουθήσει για να λυθεί το πρόβληµα. Αλγόριθµος είναι τα βήµατα που θα ακολουθήσει προκειµένου να λύσει το πρόβληµα. Τα βήµατα εκφράζονται µε εντολές. Για κάθε πρόβληµα δεν αποκλείεται να υπάρχουν περισσότεροι από έναν αλγόριθµους που οδηγούν στην λύση. Ως προγραµµατιστές θυµόµαστε πάντα πως οι εντολές που γράφουµε είναι από εµάς στον υπολογιστή µε αποκλειστικό στόχο να λυθεί το πρόβληµα που αντιµετωπίζουµε Ο δοµηµένος προγραµµατισµός εµπεριέχει τρεις προγραµµατιστικές δοµές. Την δοµή ακολουθίας, Την δοµή επιλογής, Και την δοµή επανάληψης. οµή Ακολουθίας Στην δοµή ακολουθίας, που εµπεριέχεται και στις άλλες δυο δοµές, θα πρέπει να θυµόµαστε πως οι εντολές εκτελούνται σειριακά η µια µετά το τέλος της εκτέλεσης της άλλης. Οι βασικές εντολές της δοµής ακολουθίας είναι: Η εντολή Γράψε, Η εντολή ιάβασε Και η εντολή της εκχώρησης Μην ξεχνάτε αυτό που είπαµε πιο πάνω. Ότι δηλαδή οι εντολές δίνονται στον υπολογιστή. Για παράδειγµα όταν λέµε Γράψε καληµέρα, στην ουσία λέµε στον υπολογιστή να γράψει στην οθόνη καληµέρα. Εντολή εκχώρησης
Εντολή ΓΡΑΨΕ Εντολή ιάβασε Κατά την εκτέλεση του προγράµµατος η εντολή ΙΑΒΑΣΕ διακόπτει την εκτέλεσή του και το πρόγραµµα περιµένει την εισαγωγή από το πληκτρολόγιο τιµών, που θα εκχωρηθούν στις µεταβλητές ΜΕΤΑΒΛΗΤΕΣ Μια µεταβλητή λοιπόν, παριστάνει µία ποσότητα που η τιµή της µπορεί να µεταβάλλεται Οι µεταβλητές αντιστοιχούνται από το µεταγλωττιστή σε συγκεκριµένες θέσεις µνήµης Η τιµή της µεταβλητής είναι η τιµή που βρίσκεται στην αντίστοιχη θέση µνήµης και όπως αναφέρθηκε µπορεί να µεταβάλλεται κατά τη διάρκεια της εκτέλεσης του προγράµµατος Μπορούµε να παροµοιάσουµε τη µεταβλητή σαν ένα γραµµατοκιβώτιο, το όνοµα της µεταβλητής και ως περιεχόµενο εσωτερικά, την τιµή που έχει εκείνη τη συγκεκριµένη στιγµή η µεταβλητή Το όνοµα κάθε µεταβλητής, ακολουθεί τους κανόνες δηµιουργίας ονοµάτων, δηλαδή αποτελείται από γράµµατα, ψηφία καθώς και τον χαρακτήρα _, ενώ το όνοµα κάθε µεταβλητής είναι µοναδικό για κάθε πρόγραµµα. Αριθµητικοί τελεστές Οι αριθµητικοί τελεστές που υποστηρίζονται από τη ΓΛΩΣΣΑ καλύπτουν τις βασικές πράξεις: πρόσθεση, αφαίρεση, πολλαπλασιασµό και διαίρεση ενώ υποστηρίζεται και η ύψωση σε δύναµη, η ακέραια διαίρεση και το υπόλοιπο της ακέραιας διαίρεσης
οµή Αλγορίθµου ΑΛΓΟΡΙΘΜΟΣ παράδειγµα Εντολή 1 Εντολή 2 Εντολή 3 ΤΕΛΟΣ παράδειγµα Παρατηρήσεις Κάθε εντολή γράφεται σε ξεχωριστή γραµµή. Οι εντολές είναι σειριακά βήµατα (δοµή ακολουθίας). Η επόµενη εντολή εκτελείται µόλις τελειώσει η προηγούµενη. Λυµένες Ασκήσεις Άσκηση 1 ΠΡΟΒΛΗΜΑ: Η διοίκηση ενός εργοστασίου αποφάσισε να δώσει σε όλους τους υπαλλήλους της αύξηση 11% ως επίδοµα παραγωγικότητας. Να αναπτυχθεί αλγόριθµος που διαβάζει τις µηνιαίες αποδοχές ενός εργαζοµένου και εµφανίζει το ποσό του επιδόµατος παραγωγικότητας αλλά και τον τελικό µισθό του εργαζοµένου. ΑΛΓΟΡΙΘΜΟΣ εργοστάσιο! Είσοδος δεδοµένων ποσοστό_επιδόµατος <- 11/100 ΓΡΑΨΕ ώσε τον µισθό σου ΙΑΒΑΣΕ µισθός! Επεξεργασία δεδοµένων επίδοµα <- µισθός * ποσοστό_επιδόµατος τελικός_µισθός <- µισθός + επίδοµα! Έξοδος δεδοµένων
ΓΡΑΨΕ Το επίδοµα είναι:, επίδοµα ΓΡΑΨΕ Ο τελικός µισθός είναι:, τελικός µισθός ΤΕΛΟΣ εργοστάσιο Άσκηση 2 Να αναπτυχθεί αλγόριθµος ο οποίος διαβάζει έναν θετικό αριθµό Χ και εκτυπώνει την τιµή της συνάρτησης: F(X) = (x-4)/(x+1)3 ΑΛΓΟΡΙΘΜΟΣ ΣυνάτησηF! Εισαγωγή δεδοµένων ΓΡΑΨΕ ώσε έναν Θετικό αριθµό ΙΑΒΑΣΕ Χ! Θεωρούµε πως Χ>0!Επεξεργασία δεδοµένων Fx <- (x-4)/(x+1)^3! Έξοδος δεδοµένων ΕΚΤΥΠΩΣΕ Η τιµή της συνάρτησης είναι:, Fx ΤΕΛΟΣ ΣυνάρτησηF Άσκηση 3 Από την εταιρία ΑΣΤΙΚΑ ΛΕΩΦΟΡΕΙΑ ζητείται να αναπτυχθεί αλγόριθµος για το µηχάνηµα αυτόµατης πώλησης εισιτηρίων. Ο αλγόριθµος θα δέχεται τον αριθµό των εισιτηρίων (κόστους 0,5 το καθένα) και το ποσό πληρωµής. Θα εκτυπώνει τον αριθµό των κερµάτων που δίνονται ως ρέστα. Σηµειώνεται ότι ως ρέστα δίνονται µόνο κέρµατα των 50 λεπτών. ΑΛΓΟΡΙΘΜΟΣ Αστικά_λεωφορεία! είσοδος δεδοµένων ΓΡΑΨΕ ώσε τον αριθµό εισιτηρίων και το ποσό πληρωµής ΙΑΒΑΣΕ εισιτήρια, ποσό_πληρωµής τιµή_εισιτηρίου <- 0,50! Επεξεργασία δεδοµένων κόστος <- τιµή_εισιτηρίου * εισιτήρια ρέστα <- ποσό_πληρωµής κόστος κέρµατα <- ρέστα/0,50! Έξοδος δεδοµένων ΕΚΤΥΠΩΣΕ Το κόστος των εισιτηρίων ειναι:, κόστος, και ο αριθµός των κερµάτων (0,50) είναι, κέρµατα ΤΕΛΟΣ Αστικά_λεωφορεία Παρατήρηση.
Πολλές φορές για χάρη συντοµίας παραλείπουµε τα ΓΡΑΨΕ µπροστά από τα διάβασε για λόγους συντοµίας. Σας προτείνω στις δικές σας ασκήσεις να ΜΗΝ τα παραλείπετε Κι άλλες λυµένες ασκήσεις 1. Στην αλυσίδα καταστηµάτων MakroX markets οι τιµές των προϊόντων στις ετικέττες αναγράφονται χωρίς το ΦΠΑ. Να αναπτυχθεί ο αλγόριθµος που εκτελεί η ταµειακή µηχανή που θα διαβάζει την τιµή πληρωµής (χωρίςφπα) και το ποσό που έδωσε ο πελάτης και θα υπολογίζει το πληρωτέο ποσό και τα ρέστα που δικαιούται ο πελάτης (συντελεστής ΦΠΑ 18%) Αλγόριθµος Ταµειακή_Μηχανή ιάβασε τιµή Πληρωτέο_Ποσό τιµή + 0.18 * τιµή! Θα µπορούσε να είναι και 1.18 * τιµή ιάβασε Χαρτονόµισµα! Θεωρούµε οτι Χαρτονόµισµα > Πληρωτέο_Ποσό Ρέστα Χαρτονόµισµα - Πληρωτέο_Ποσό Εκτύπωσε "Το πληρωτέο ποσό είναι ", Πληρωτέο_Ποσό, " ενώ υπάρχουν και ρέστα ", Ρέστα Τέλος Ταµειακή_Μηχανή 2. Να αναπτυχθεί αλγόριθµος που θα διαβάζει το όνοµα ενός µαθητή της Γ' Λυκείου, τους βαθµούς του στα δυο τετράµηνα καθώς και τον γραπτό του βαθµό στις πανελλήνιες εξετάσεις και να υπολογίζει τον βαθµός πρόσβασης του µαθητή αυτού στο συγκεκριµένο µάθηµα (Σηµείωση: ο βαθµός πρόσβασης υπολογίζεται απο την πράξη 70% * γραπτός βαθµός και 30% * προφορικός βαθµός, όπου ο προφορικός βαθµός είναι ο µέσος όρος των βαθµών στα δυο τετράµηνα) Αλγόριθµος Υπολογισµός_Βαθµός_Πρόσβασης ιάβασε Όνοµα, Βαθµός_ΤετΑ, Βαθµός_ΤετΒ, Γραπτός_Βαθµός Βαθµός_Πρόσβασης 0,7 * Γραπτός_Βαθµός + 0,3 * (Βαθµός_ΤετΑ + Βαθµός_ΤετΒ) / 2 Εκτύπωσε "Ο µαθητής ", Όνοµα, " έχει βαθµό πρόσβασης ", Βαθµός_Πρόσβασης Τέλος Υπολογισµός_Βαθµός_Πρόσβασης
3. Να αναπτυχθεί αλγόριθµος ο οποίος θα διαβάζει έναν θετικό αριθµό x και θα υπολογίζει και θα εκτυπώνει την τιµή της ακόλουθης συνάρτησης Αλγόριθµος ΣυνάρτησηFx ιάβασε Χ! Θεωρούµε πως Χ > 0 Fx (X - 4) / (X + 1) ^ 3 Εκτύπωσε "Η τιµή της συνάρτησης είναι", Fx Τέλος ΣυνάρτησηFx 4. Η εταιρεία κινητής τηλεφωνίας CityTel παρέχει στους συνδροµητές της λογότυπα και µελωδίες για τα κινητά τους. Υπάρχουν δύο εναλλακτικές προσφορές: α. Εγγραφή στο CityTel club, µε πάγιο µηνιαίο κόστος 1.40, και επιπλέον χρέωση 0.23 για κάθε ένα από τα παραπάνω στοιχεία που καταβιβάζονται στο κινητό του συνδροµητή. β. Χρέωση 0,53 για κάθε λογότυπο ή µελωδία που ζητείται. Να γραφεί αλγόριθµος που θα διαβάζει το σύνολο των λογότυπων και µελωδιών που κάποιος συνδροµητής καταβίβασε στο κινητό του και να εκτυπώνει τη χρέωση και µε τις δυο παραπάνω προσφορές Αλγόριθµος CityTel ιάβασε logos, melodies κόστος1 1.40 + 0.23 * (logos + melodies) κόστος2 0.53 * (logos + melodies) Εκτύπωσε "Σύµφωνα µε την πρώτη προσφορά θα πληρώσετε ", κόστος1 Εκτύπωσε "Σύµφωνα µε την δευτερη προσφορά θα πληρώσετε ", κόστος2 Τέλος CityTel 5. Η εταιρεία κινητής τηλεφωνίας CityTel χρεώνει τις υπηρεσίες τηλεφωνίας που παρέχει στους συνδροµητές της ως εξής: Πάγια χρέωση 11, κάθε δευτερόλεπτο συνοµιλίας 0.03 ενώ κάθε µήνυµα SMS χρεώνεται προς 0.84. Να αναπτυχθεί αλγόριθµος που θα διαβάζει τον κωδικό ενός συνδροµητή, το χρόνο οµιλίας και τα µηνύµατα που έστειλε τον περασµένο µήνα και θα εκτυπώνει τον κωδικό και το ποσό που πρέπει να εισπράξει η CityTel. Τονίζεται οτι οι παραπάνω τιµές προσαυξάνονται µε ΦΠΑ 18%
Αλγόριθµος Λογαριαµός_CityTel ιάβασε Κωδικός_Συνδροµητή ιάβασε Χρόνος_Οµιλίας, Αριθµός_Μηνυµάτων! Ο χρόνος οµιλίας είναι σε δευτερόλεπτα ΦΠΑ 0.18! Ο συντελεστής ΦΠΑ µπορεί να θεωρηθεί σταθερά για τον αλγόριθµο Πάγιο 11 Χρέωση Πάγιο + Χρόνος_Οµιλίας * 0.03 + Αριθµός_Μηνυµάτων * 0.84 Πληρωτέο_Ποσό 1.18 * Χρέωση Εκτύπωσε "Ο συνδροµητής ", Κωδικός_Συνδροµητή, " θα πληρώσει ", Πληρωτέο_Ποσό Τέλος Λογαριαµός_CityTel 6. Να αναπτυχθεί αλγόριθµος που θα διαβάζει ένα χρηµατικό ποσό σε δραχµές και θα υπολογίζει και θα εκτυπώνει το αντίστοιχο ποσό σε Αλγόριθµος Μετατροπή ισοτιµία 340.75 ιάβασε ποσό_δρχ ποσό_euro ποσό_δρχ / ισοτιµία Εκτύπωσε "Το ποσό που δόθηκε αντιστοιχεί σε ", ποσό_euro, " "! εκτύπωση σε µορφή α και β λεπτά euro (100 * ποσό_δρχ) div (100 * ισοτιµία)! πρέπει και οι δυο µεταβλητές να είναι ακέραιοι cents (100 * ποσό_δρχ) mod (100 * ισοτιµία)! πρέπει και οι δυο µεταβλητές να ακέραιοι Εκτύπωσε "Το ποσό που δόθηκε αντιστοιχεί σε ", euro, " και ", cents, " λεπτά" Τέλος Μετατροπή