Σκοπός Εισαγωγή στο Προγραμματισμό για Μηχανολόγους Οδηγός Προετοιμασίας για τη Τελική Εξέταση. Επανάληψη των βασικών εννοιών της PASCAL και του προγραμματισμού οι έννοιες της μεταβλητής, του τύπου δεδομένων, των αλγεβρικών & λογικών υπολογισμών, των εντολών σ ένα πρόγραμμα. Κατανόηση της μορφής και της λειτουργίας προγραμμάτων στη PASCAL. Κατανόηση της έννοιας «Δομή Δεδομένων». Κατανόηση των βημάτων στη συστηματική α- νάπτυξη ενός προγράμματος. Κατανόηση των τεχνικών / μεθόδων στην ανάπτυξη του προγράμματος, για ένα πρόβλημα Κατανόηση της έννοιας και της λειτουργίας των Συναρτήσεων στη PASCAL και στο προγραμματισμό. Χρήση των Ολοκληρωμένων Περιβαλλόντων Α- νάπτυξης Προγραμμάτων (IDE) lazarus
Οδηγός Προετοιμασίας για τη Τελική Εξέταση 2012 Μέρος Γ : H ΕΠΑΝΑΛΗΨΗ Ένα, πρόγραμμα, για να εκτελέσει τη λειτουργία του, χρειάζεται πολλές φορές να επαναλάβει μία ενέργεια. Η ανάγκη να επαναλάβουμε μία ενέργεια ή μία λειτουργία, εμφανίζεται πολύ συχνά στη πράξη. Συχνά χρειάζεται, για παράδειγμα, να επαναλάβουμε μία κίνηση για να φτάσουμε σ ένα τελικό προορισμό ή μία πρόταση ή έναν υπολογισμό. Ακόμα και για να προσθέσουμε δύο αριθμούς, χρειάζεται να προσθέσουμε τα μικρότερης τάξης ψηφία τους και μετά να επαναλάβουμε αυτή τη λειτουργία για κάθε ένα από τα μεγαλύτερης τάξης ψηφία. Σ ένα πρόγραμμα, η λειτουργία της επανάληψης υλοποιείται με διάφορες εντολές, for, while, repeat. Όλες εκτελούν την ίδια λειτουργία. Να επαναλάβουν την εκτέλεση μίας ή περισσοτέρων εντολών σ ένα πρόγραμμα. Η χρησιμότητα αυτών των εντολών είναι τέτοια, ώστε θα τις χρησιμοποιούμε σχεδόν σε κάθε πρόγραμμα. Σ αυτή την ενότητα, εξετάζουμε / επαναλαμβάνουμε τη λειτουργία τους, μέσα από κάποια παραδείγματα. Θέμα 1: Γράψτε ένα πρόγραμμα στη PASCAL για να υπολογίζει τη τιμή του π από την άπειρη σειρά: π = 4 4 / 3 + 4 / 5 4 / 7 + 4 / 9 4 / 11 + Χρησιμοποιείστε τη παραπάνω σειρά για να υπολογίστε το π με ακρίβεια δύο δεκαδικών ψηφίων, δηλαδή μέχρι να πάρουμε τη τιμή 3.14 ΑΠΑΝΤΗΣΗ program pi; var pi : real; arithmhths, paranomasths, epomenos_oros : real; n : integer; pi := 0.0; arithmhths := 4.0; paranomasths := 1.0; epomenos_oros := 4.0; n := 1;
Εισαγωγή στο Προγραμματισμό για Μηχανολόγους while abs ( epomenos_oros ) > 0.0009 do if ( n mod 2 = 1 ) then pi := pi + epomenos_oros else pi := pi - epomenos_oros; paranomasths := paranomasths + 2.0; epomenos_oros := arithmhths / paranomasths; n := n + 1; end; writeln( pi ); readln; end.
Οδηγός Προετοιμασίας για τη Τελική Εξέταση 2012 Θέμα 2: Γράψτε ένα πρόγραμμα στη C για να εμφανίζει στη οθόνη το σχήμα μίας σκακιέρας ΑΠΑΝΤΗΣΗ program skakiera; var row, column : integer; for row := 1 to 8 do end. end; if ( row mod 2 = 0 ) then write(' '); for column := 1 to 8 do write('*'); writeln(); readln;
Μέρος Δ : ΠΙΝΑΚΕΣ Σ αυτή την ενότητα, εξετάζουμε μία από τις βασικότερες έννοιες του προγραμματισμού, αυτή του πίνακα. Στο προγραμματισμό, ο πίνακας χρησιμεύει για να διευκολύνει την αποθήκευση και επεξεργασία μεγάλου πλήθους δεδομένων. Ακόμα, χρησιμοποιούμε το πίνακα για να παριστάνουμε διανύσματα και μαθηματικούς πίνακες. Σ αυτή την ενότητα, εξετάζουμε πως χρησιμοποιούμε το πίνακα σε προγράμματα, μέσα από παραδείγματα. Ο πίνακας είναι μία δομή δεδομένων. Είναι η πιο απλή δομή δεδομένων στη PASCAL, αλλά και στη MATLAB, στη JAVA και σε κάθε γλώσσα προγραμματισμού Μία δομή δεδομένων είναι μία μορφή ή σχήμα παράστασης των δεδομένων, σ ένα πρόγραμμα. Ένας πίνακας μπορεί να παριστάνει και να αποθηκεύει στη μνήμη του υπολογιστή ένα πλήθος δεδομένων, του ίδιου τύπου. Αυτά τα δεδομένα μπορεί να είναι οι τιμές ταχύτητας ενός κινούμενου οχήματος σε διαφορετικές χρονικές στιγμές t = 0 sec, 1 sec, 2 sec, 3 sec,, N sec. Μπορεί ακόμα να είναι τιμές τάσης ή έντασης ρεύματος στο χρόνο, σ ένα κύκλωμα ή οι (x, y, z) συντεταγμένες της κίνησης ενός αντικειμένου ή ενός βραχίονα προς ένα τελικό προορισμό, στο χώρο. Ένας πίνακας δεν χρησιμοποιείται μόνον για τις τιμές φυσικών μεταβλητών, όπως θερμοκρασία, τάση, ένταση, κ. ά., αλλά μπορεί να παριστάνει πολλούς άλλους τύπους δεδομένων ή τιμών, όπως τους βαθμούς των φοιτητών ενός τμήματος, τιμές μετοχών στο χρηματιστήριο, τα ονόματα των καθηγητών ή του τίτλους των μαθημάτων, σ ένα τμήμα. Αυτό που χρειάζεται να κατανοήσουμε σ αυτό το στάδιο είναι ότι χρησιμοποιούμε έ- ναν πίνακα σ ένα πρόγραμμα, για να παριστάνουμε μεγάλο πλήθος δεδομένων, του ίδιου τύπου. Εάν λοιπόν θέλουμε να γράψουμε ένα πρόγραμμα για να επεξεργάζεται τις τιμές της ισχύος λειτουργίας ενός κινητήρα σε διαφορετικές χρονικές στιγμές, τότε θα πρέπει να χρησιμοποιήσουμε ένα πίνακα για να αποθηκεύσουμε τις τιμές ισχύος του κινητήρα. Όμως, ο πίνακας δεν χρησιμεύει μόνον για να αποθηκεύουμε δεδομένα στη μνήμη του υπολογιστή. Χρησιμεύει ακόμα για να μπορούμε να αναφερόμαστε εύκολα σε κάθε ένα από αυτά τα δεδομένα και να τα χρησιμοποιούμε σε υπολογισμούς. Εφόσον ο πίνακας επιτρέπει την αποθήκευση δεδομένων και την αναφορά / χρήση αυτών των δεδομένων, μέσα από ένα πρόγραμμα, ο πίνακας είναι μία μεταβλητή. Όμως, ο πίνακας είναι μια σύνθετη μεταβλητή γιατί επιτρέπει την αποθήκευση στη μνήμη του υπολογιστή, όχι μίας τιμής, αλλά ενός πλήθους τιμών του ίδιου τύπου. Μπορούμε να φανταστούμε το πίνακα, σαν τις κούνιες σε μία παιδική χαρά. Μια απλή μεταβλητή είναι σαν μία ατομική κούνια. Ένας πίνακας όμως, είναι σαν την αλυσίδα από κούνιες σε μία παιδική χαρά (Εικόνα 1), όπου κάθε στιγμή, μπορεί να βρίσκονται περισσότερα από ένα παιδιά. Για παράδειγμα, στις κούνιες της Εικόνας 1, μπορεί κάθε στιγμή να βρίσκονται μέχρι 5 παιδιά. Έτσι, και ένας πίνακας στη PASCAL, μπορεί κάθε στιγμή να περιέχει να έχει αποθηκευμένες περισσότερες από μία τιμές.
Οδηγός Προετοιμασίας για τη Τελική Εξέταση 2012 Εικόνα 1: Ένας πίνακας στη PASCAL, είναι σαν τις κούνιες σε μία παιδική χαρά, όπου κάθε στιγμή μπορεί να βρίσκονται και να κάνουν κούνια περισσότερα από ένα παιδιά. Δ.1 Υλοποίηση του πίνακα Ο πίνακας υλοποιείται με τη σύνδεση με ένα συνεχή χώρο στη μνήμη του υπολογιστή. Όπως κάθε μεταβλητή ενός προγράμματος συνδέεται με μία θέση στη μνήμη του υπολογιστή, έτσι ένας πίνακας συνδέεται με ένα χώρο στη μνήμη του υπολογιστή. Όμως, σε αντίθεση με μία απλή μεταβλητή στη οποία διατίθεται μία θέση στη μνήμη του υπολογιστή, για ένα πίνακα διατίθεται / δεσμεύεται χώρος στη μνήμη που αποτελείται / περιλαμβάνει ένα πλήθος συνεχών θέσεων, αρκετών ώστε να μπορούμε να αποθηκεύουμε σε αυτές το πλήθος των δεδομένων που χρειάζεται να παριστάνει ο πίνακας (Εικόνα 2). Δ.1 Πως Αποθηκεύουμε Τιμές στο Χώρο Μνήμης ενός Πίνακα Χρησιμοποιούμε έναν πίνακα για να μπορούμε να αποθηκεύουμε στη μνήμη του υπολογιστή μεγάλο πλήθος δεδομένων, του ίδιου τύπου. Αυτές οι τιμές θα αποθηκευτούν σ ένα χώρο στη μνήμη του υπολογιστή που θα διατεθεί για το πίνακα. Όμως, η αποθήκευσή τους σ αυτό το χώρο μπορεί / θα πρέπει να γίνει, αποθηκεύοντας μία μόνον τιμή κάθε φορά, σε μία αντίστοιχη θέση στο πίνακα.
Εισαγωγή στο Προγραμματισμό για Μηχανολόγους Η μέθοδος που χρησιμοποιείται για να αποθηκεύουμε ένα πλήθος τιμών ή δεδομένων σε ένα πίνακα ακριβέστερα στο χώρο στη μνήμη που διατίθεται για ένα πίνακα είναι η αρίθμηση των θέσεων, σ αυτό το χώρο. Είναι σαν οι θέσεις μνήμης που διατίθενται για ένα πίνακα να αριθμούνται, ξεκινώντας από 1 για τη πρώτη θέση, 2 για τη δεύτερη θέση, 3 για τη τρίτη, κ.ο.κ., μέχρι να αριθμηθεί και η τελευταία θέση στο χώρο στη μνήμη που διατίθεται για το πίνακα. Για να αποθηκεύσουμε μία τιμή, από ένα πλήθος τιμών, σ ένα πίνακα, χρησιμοποιούμε το όνομα του πίνακα και την αρίθμηση της θέσης στην οποία θα αποθηκεύσουμε αυτή τη τιμή. Για παράδειγμα, η εντολή: a[3] : = 12; εκχωρεί / αποθηκεύει τη τιμή 12 στο τρίτο στοιχείο / θέση του πίνακα με όνομα a, δηλαδή στη τρίτη θέση, στο χώρο μνήμης που έχει διατίθεται στο πίνακα a. Εικόνα 2: Πίνακας στη μνήμη. Με τη δήλωση ενός πίνακα, δεσμεύονται τόσες θέσεις στη μνήμη RAM του υπολογιστή, όσες το πλήθος των τιμών που ορίζουμε στη δήλωση του πίνακα. Σ αυτές τις θέσεις, θα αποθηκεύονται οι τιμές που εκχωρούμε στο πίνακα. Αυτή η σύνδεση τιμών με θέσεις του πίνακα θέσεις στο χώρο μνήμης που έχει δεσμευτεί για το πίνακα μας επιτρέπει να αναφερόμαστε και να χρησιμοποιούμε σε υπολογισμούς, τιμές που έχουν αποθηκευτεί σε έναν πίνακα. Έτσι, για να αναφερθούμε σε μία τιμή που έχει αποθηκευτεί σε μία θέση ή στοιχείο ενός πίνακα, χρησιμοποιούμε το όνομα του πίνακα και την θέση / σειρά / αρίθμηση του στοιχείου / θέσης στο πίνακα, αυτής της τιμής. Για παράδειγμα, η εντολή: writeln ( a[3] ); θα εμφανίσει στην οθόνη τη τιμή του τρίτου στοιχείου / θέσης στο πίνακα a. Εάν σ αυτή τη θέση, έχουμε εκχωρήσει τη τιμή 12, τότε η writeln (a[3]) θα εκτυπώσει στην οθόνη αυτή τη τιμή.
Οδηγός Προετοιμασίας για τη Τελική Εξέταση 2012 Εξετάζουμε αυτές τις έννοιες αναλυτικότερα, μέσα από παραδείγματα. Θέμα 3: Γράψτε ένα πρόγραμμα σε PASCAL που να διαβάζει 10 ζεύγη τιμών από την οθόνη του υπολογιστή, για παράδειγμα τα παρακάτω ζεύγη τιμών. Κάθε ζεύγος τιμών αποτελείται από μία τιμή που παριστάνει χρόνο και μία αντίστοιχη τιμή ταχύτητας, τη συγκεκριμένη χρονική στιγμή. Το πρόγραμμα θα πρέπει να υπολογίζει τη μέση ταχύτητα και το πλήθος των τιμών ταχύτητας που υπερβαίνουν το μέση τιμή. 0.0 132.5 0.1 147.2 0.2 148.3 0.3 157.3 0.4 163.2 0.5 158.2 0.6 169.3 0.7 148.2 0.8 137.6 0.9 135.9 ΑΠΑΝΤΗΣΗ program metriseis; var xronos : array [1.. 10] of real; v : array [1.. 10] of real; i, megales_tachytites : integer; athroisma, mesos : real; const plithos = 10; writeln( Δώσε τις μετρήσεις χρόνου και ταχύτητας ); athroisma := 0; for i := 1 to plithos do readln(xronos[i], v[i]); athroisma := athroisma + v[i]; end;
Εισαγωγή στο Προγραμματισμό για Μηχανολόγους mesos := athroisma / plithos; megales_tachytites := 0; for i := 1 to plithos do if v[i] > mesos then megales_tachytites := megales_tachytites + 1; writeln( H μέση ταχύτητα είναι:, mesos); writeln( To πλήθος των τιμών ταχύτητας πάνω από το μέσο όρο είναι:, megales_tachytites); readln; end. Θέμα 4: Η παραγωγή ηλεκτρικής ενέργειας [MW] ενός εργοστασίου ηλεκτρικής ενέργειας, για τις 7 ημέρες μίας εβδομάδας, παριστάνεται από το πίνακα τιμών, παρακάτω. 1 207 2 367 3 211 4 401 5 448 6 21 7 213 4.1 Γράψτε ένα πρόγραμμα που να υπολογίζει τη μέση ημερήσια παραγωγή του εργοστασίου, σε όλη τη περίοδο των 7 ημερών. Το πρόγραμμα θα πρέπει ακόμα να υπολογίζει πόσες και ποιες ημέρες, η παραγωγή του εργοστασίου ξεπέρασε τη μέση ημερήσια παραγωγή. 4.2 Γράψτε ένα πρόγραμμα για να υπολογίζει την ημέρα που σημειώθηκε η μικρότερη ημερήσια παραγωγή ενέργειας.
Οδηγός Προετοιμασίας για τη Τελική Εξέταση 2012 4.3 Γράψτε ένα πρόγραμμα για να υπολογίζει και να εκτυπώνει τη παραγωγή για μία συγκεκριμένη ημέρα της εβδομάδας, π.χ. τη παραγωγή της Δευτέρας, ή της Πέμπτης, κοκ. 4.4 Γράψτε ένα πρόγραμμα για να υπολογίζει τη μέση παραγωγή για ολόκληρη την εβδομάδα ΑΠΑΝΤΗΣΗ Ερώτημα 4.1 program ergostasioenergeias; var paragogi : array [1.. 7] of real; mera : array [1.. 7] of real; i, yperparagogi : integer; athroisma, mesos : real; const plithos = 7; athroisma := 0; for i := 1 to plithos do readln ( mera[i], paragogi[i] ); end; athroisma := athroisma + paragogi[i]; mesos := athroisma / plithos; yperparagogi := 0; writeln ( Οι μέρες της μεγάλης παραγωγής είναι: ); for i := 1 to plithos do if paragogi[i] > mesos then writeln (mera[i]:3); yperparagogi := yperparagogi + 1; end;
Εισαγωγή στο Προγραμματισμό για Μηχανολόγους writeln( Το πλήθος των ημερών μεγάλης παραγωγής είναι:, yperparagogi); writeln( H μέση ημερήσια παραγωγή είναι:, mesos); readln; end. Ερώτημα 4.2 program ergostasioenergeias; var mera, paragogi : real; min, mera_min : real; const plithos = 7; min := 1000000; for i := 1 to plithos do readln (mera, paragogi); if paragogi < min then min := paragogi; mera_min := mera; end (* if *) end; (* for *) writeln( H ελάχιστη παραγωγή ενέργειας είναι:, min); writeln( H ημέρα που σημειώθηκε η ελάχιστη παραγωγή είναι:, mera_min); readln; end.