Εργαστήριο 10 Πίνακες. Πίνακες. Η έννοια της δόμησης δεδομένων στη PASCAL. Σκοπός

Σχετικά έγγραφα
Εισαγωγή στο Προγραμματισμό για Μηχανολόγους Οδηγός Προετοιμασίας για τη Τελική Εξέταση

Η ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ Εντολές Επανάληψης REPEAT UNTIL, FOR, WHILE

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης Τα Εργαστηριακά Προγράμματα. Η δομή Επιλογής στη PASCAL. H δομή Επανάληψης στη PASCAL. Η εντολή επανάληψης for

Σκοπός. Αλγεβρικοί και Λογικοί Υπολογισμοί στη PASCAL

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ

Εισαγωγή στο Προγραμματισμό με τη PASCAL & τη Matlab Εξαμηνιαία Εργασία 2014 Μετατρέποντας AC σε DC Τάση Μέρος Β : Πορεία Εργασίας

2. β. Συνθήκη ή επιλογή. 4. δ. Υποπρόγραμμα. 5. ε. ιαδικασία εισόδου ή εξόδου

ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ. Σχήµα 1: H έννοια των πινάκων

Εργαστήριο 9 Συναρτήσεις στη PASCAL. Η έννοια του κατακερματισμού. Συναρτήσεις. Σκοπός

Μονάδες 4. β. x=20 και y=10

Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) a= b= c= 3 read(d,e)

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΠΑΝΕΛΛΑ ΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΓΓΕΛΜΑΤΙΚΩΝ ΛΥΚΕΙΩΝ (ΟΜΑ Α Β ) ΚΑΙ ΜΑΘΗΜΑΤΩΝ ΕΙ ΙΚΟΤΗΤΑΣ

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 2 USB και Σειριακή Επικοι- νωνία Σ Σειριακή Επικοινωνία

8 FORTRAN 77/90/95/2003

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13

Αποτελέσματα προόδου

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Μεταβλητές- Τύποι- Τελεστές

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

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ:

Αλγόριθμοι. Βασικές έννοιες ΤΕΛΟΣ

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ

Pascal, απλοί τύποι, τελεστές και εκφράσεις

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

Δομή Επανάληψης. Κεφάλαιο 7 Mike Trimos

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΤΕΛΟΣ 1ΗΣ ΑΠΟ 6 ΣΕΛΙ ΕΣ

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

Μονοδιάστατοι Πίνακες

ΦΙΛΤΡΑ KALMAN ΕΞΑΜΑΗΝΙΑΙΑ Β - ΕΠΕΞΗΓΗΣΕΙΣ

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β.

Σκοπός. Εργαστήριο 5 Εντολές Επιλογής

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ PASCAL

Εισαγωγή στο προγραμματισμό με τη PASCAL Οδηγός Προετοιμασίας για τη Τελική Εξέταση

ιαφάνειες παρουσίασης #4

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΜΗΜΑ: Γ2

Pascal. 15 Νοεμβρίου 2011

ΚΕΝΤΡΙΚΗ ΟΡΓΑΝΩΤΙΚΗ ΕΠΙΤΡΟΠΗ 8 ου ΠΑΝΕΛΛΗΝΙΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΠΛΗΡΟΦΟΡΙΚΗΣ 1996 ΠΡΟΚΑΤΑΡΚΤΙΚΗ ΦΑΣΗ ΠΑΝΕΛΛΗΝΙΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΘΕΜΑΤΑ ΓΥΜΝΑΣΙΟΥ

Μαζέρας Αχιλλέας. Οι εντολές επανάληψης στην Pascal (While) Φυσικός Αυτοματιστής M.Sc. Νοέµβριος 2009

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

Μάριος Αγγελίδης

ιαφάνειες παρουσίασης #5

Ενότητα 1: «Εισαγωγή στην Αλγοριθμική και τον Προγραμματισμό. Απλές ασκήσεις με γλώσσα Pascal»

ΑΠΑΝΤΗΣΕΙΣ. H διαδικασία ανεύρεσης λογικών λαθών περιλαμβάνει : β- Σωστό. Διαπίστωση του είδους του λάθους γ- Σωστό δ- Λάθος

Pascal. 26 Οκτωβρίου 2011

Σημειώσεις του εργαστηριακού μαθήματος Πληροφορική ΙΙ. Εισαγωγή στην γλώσσα προγραμματισμού

ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ. for (παράσταση_1; παράσταση_2; παράσταση_3) εντολή επόμενη εντολή

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

Διαδικασιακός Προγραμματισμός

Γραπτές εξετάσεις στο μάθημα: ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ (Θ) Εισηγητής: Γεωργίου Χρήστος ΘΕΜΑΤΑ & ΑΠΑΝΤΗΣΕΙΣ. Β. Χαρακτήρας(Αλφαριθμητικά)

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

του προγράμματος diagrama_rohs.zip )

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

Δομές Ακολουθίας- Επιλογής - Επανάληψης. Δομημένος Προγραμματισμός

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΝΕΟ ΚΑΙ ΠΑΛΑΙΟ ΣΥΣΤΗΜΑ

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ-ΦΡΟΝΤΙΣΤΗΡΙΟ ΑΚΑΔΗΜΑΪΚΟ ΕΠΑΛ- ΚΑΝΙΓΓΟΣ 13- ΤΗΛ

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 9 Ανάλυση Fourier: Από τη Θεωρία στην Πρακτική Εφαρμογή των Μαθηματικών

Διαδικασιακός Προγραμματισμός

ΕΚΦΩΝΗΣΕΙΣ ΘΕΜΑ Α. β. Οι πληροφορίες είναι δεδομένα τα οποία δεν έχουν υποστεί επεξεργασία.

2. β. Συνθήκη ή επιλογή. 4. δ. Υποπρόγραμμα. 5. ε. ιαδικασία εισόδου ή εξόδου

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΤΡΙΩΡΗ ΓΡΑΠΤΗ ΔΟΚΙΜΑΣΙΑ

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι

Εισαγωγή στο Προγραμματισμό με τη PASCAL & τη Matlab Εξαμηνιαία Εργασία 2015 Μετατρέποντας AC σε DC Τάση Περισσότερες Επεξηγήσεις

A3. Μονάδες 5 Α4. Μονάδες 10 ΘΕΜΑ B. Β1. writeln Περιεχόμενα Εντολή Αποτελέσματα Παραμέτρων Μονάδες 20 ΘΕΜΑ Γ.

max & min Μεθοδολογία - 1 Τα βήματα που συνήθως ακολουθούμε στις τεχνικές εύρεσης max & min είναι τα εξής:

Εισαγωγή στην Αριθμητική Ανάλυση

ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΤΑΞΗ : Γ ΛΥΚΕΙΟΥ ΣΠΟΥΔΕΣ ΟΙΚΟΝΟΜΙΑΣ & ΠΛΗΡΟΦΟΡΙΚΗΣ

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ - ΓΛΩΣΣΑ

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / Γ ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 27/01/2013

ΕΠΑ.Λ ΧΡΥΣΟΥΠΟΛΗΣ Γ Πληροφορική Προγραµµατισµός Υπολογιστών Κεφάλαιο 9 Σηµειώσεις 03. Εντολή Εκχώρησης - Αντικατάστασης

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

1. Κατασκευάστε ένα διάνυσμα με στοιχεία τους ζυγούς αριθμούς μεταξύ του 31 και 75

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 8 Επεξεργασία Σήματος με την Ανάλυση Fourier. Σύστημα Συλλογής & Επεξεργασίας Μετρήσεων

- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD)

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

Στην εντολή while η επανάληψη συνεχίζεται όσο η λογική έκφραση έχει τιμή false.

- program p_name(output); - uses crt;

ΦΙΛΤΡΑ KALMAN ΕΞΑΜΑΗΝΙΑΙΑ Β - ΕΠΕΞΗΓΗΣΕΙΣ

Κεφάλαιο 9 : Βασικές εντολές

ΠΑΝΕΠΙΣΤΗΜΙΟ ΜΑΚΕ ΟΝΙΑΣ ΤΜΗΜΑ ΕΦΑΡΜΟΣΜΕΝΗΣ ΠΛΗΡΟΦΟΡΙΚΗΣ : ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ ΕΞΑΜΗΝΟ

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ. Για i από 1 μέχρι Μ Εμφάνισε A[4,i] Τέλος_επανάληψης. (μονάδες 6) ΤΕΛΟΣ 1ης ΑΠΟ 7 ΣΕΛΙΔΕΣ

ΘΕΜΑ Α. Μονάδες 10 Α2.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ

Κεφάλαιο 7: Υποπρογράμματα. Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Προγραμματισμός Η/Υ (ΤΛ2007 )

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΒΙΟΜΗΧΑΝΙΚΗΣ ΙΟΙΚΗΣΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ

ΑΣΚΗΣΗ 4 ΠΡΟΒΛΗΜΑΤΑ ΛΟΓΙΚΗΣ ΣΧΕΔΙΑΣΗΣ

Μονάδες 12 ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

- program p_name(input) - uses crt

Κεφάλαιο 7: Υπορουτίνες

Σκοπός. Προγραμματίζοντας τον Arduino ΙΙ Εντολή Εκχώρησης & Εντολές. Συλλογή & Επεξεργασία Δεδομένων. Πρόγραμμα. Εντολές Επεξεργασίας Δεδομένων

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων

1 η Εργαστηριακή Άσκηση MATLAB Εισαγωγή

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

Transcript:

Εργαστήριο 10 Πίνακες Πίνακες. Η έννοια της δόμησης δεδομένων στη PASCAL. Σκοπός

10.1 ΕΠΙΔΙΩΞΗ ΤΗΣ ΕΡΓΑΣΙΑΣ Σ αυτή την άσκηση, εξετάζουμε μία βασική δομή του προγραμματισμού, το πίνακα. Στις μέχρι τώρα ασκήσεις, εξετάσαμε τις εντολές της PASCAL εντολές εισόδου / ε- ξόδου και εντολές για την επεξεργασία των δεδομένων. Όμως, μία γλώσσα προγραμματισμού, εκτός από εντολές περιλαμβάνει και δομές δεδομένων, δηλαδή μορφές ή πρότυπα παράστασης / οργάνωσης των δεδομένων Έτσι σ αυτή την άσκηση, εξετάζουμε την έννοια της δομής δεδομένων και τη βασικότερη δομή που είναι ο πίνακας. Στα μαθηματικά, ο πίνακας είναι μία σειρά / ακολουθία τιμών που οργανώνονται / διατάσσονται σε γραμμές και στήλες. Σ αυτή τη διάταξη τιμών, ορίζονται πράξεις και κάποιες ιδιότητες. Στο προγραμματισμό, ο πίνακας έχει μία διαφορετική και πολύ πιο γενική έννοια. Αναφέρεται / συνδέεται σε έναν τρόπο παράστασης των δεδομένων στη μνήμη του υπολογιστή. Σ αυτή την άσκηση, επιχειρούμε να αναλύσουμε την έννοια και τη λειτουργία που έχει ο πίνακας στο προγραμματισμό. Χρησιμοποιώντας απλά παραδείγματα, εξετάζουμε πως χρησιμοποιούμε τη δομή πίνακα, σ ένα πρόγραμμα, πως δηλαδή: Δηλώνουμε έναν πίνακα. Πως ο πίνακας εξυπηρετεί την αποθήκευση και επεξεργασία των δεδομένων από το πρόγραμμα. Μέσα από πιο συνθετότερα παραδείγματα και προβλήματα επιχειρούμε να εξετάσουμε τη χρησιμότητα / εφαρμογή του πίνακα στη πράξη, σε προγράμματα για προβλήματα πραγματικών εφαρμογών. Πρόγραμμα Εφαρμογών 10.1 Το φωτοβολταικό πάρκο. Οι μετρήσεις στην Εικόνα 1 παριστάνουν τη παραγωγή η- λεκτρικής ενέργειας από ένα φωτοβολταικό πάρκο, ονομαστικής ισχύος P = 100 kw, σε μία συγκεκριμένη ημέρα (17 ΜΑΙ, 2012). Οι μετρήσεις καταγράφουν την ηλεκτρική ενέργεια που παράγει το πάρκο, κάθε τέταρτο της ώρας, σε μία χρονική περίοδο της η- μέρας, από Για παράδειγμα, η τιμή Ε = 9760 Wh, είναι η ηλεκτρική ενέργεια που παρήγαγε το πάρκο, από 12:15 12:30, στις 17 ΜΑΙ, 2012. Γράψτε ένα πρόγραμμα στη PASCAL που να διαβάζει αυτές τις μετρήσεις και να υπολογίζει: Tη μέση παραγωγή ενέργειας από το πάρκο, ανά τέταρτο της ώρας. Τη μέγιστη παραγωγή ενέργειας και το συγκεκριμένο τέταρτο που επιτεύχθηκε. Ποια τέταρτα της ώρας το πάρκο παρήγαγε περισσότερη ενέργεια από το μέσο όρο. Ανάλυση του Προγράμματος Έχουμε δει πως μπορούμε να διαβάζουμε δεδομένα από την οθόνη του υπολογιστή.

Εικόνα 1: Μετρήσεις παραγωγής ηλεκτρικής ενέργειας, από ένα Φωτοβολταικό πάρκο, ονομαστικής ισχύος P = 100 kw.

Εικόνα 2: Γραφική παράσταση της παραγωγής ηλεκτρικής ενέργειας, από το Φωτοβολταικό πάρκο, στις 17 ΜΑΙ, 2012.

Μπορούμε να υπολογίσουμε τη μέση παραγωγή ενέργειας ανά τέταρτο της ώρας και τη μέγιστη παραγωγή ενέργειας, χρησιμοποιώντας μία επανάληψη. Μπορούμε ακόμα να παραστήσουμε τα δεδομένα σε ένα γράφημα, όπως φαίνεται στην Εικόνα 2. Το πρόγραμμα που υπολογίζει τη μέση παραγωγή ενέργειας, ανά τέταρτο της ώρας, για τη χρονική περίοδο, παριστάνεται στην Εικόνα 3. Πρόγραμμα 10.1 Ανάλυση Μετρήσεων Παραγωγής Ενέργειας (P = 100kW) (* * PVC_Park.c * * Created on: 14 Δεκ 2012 * *) program PVC; var time : integer; Power : real; sum : real; n : real; begin sum := 0.0; n := 0; while ( not EOF ) do begin readln(time, Power); sum := sum + Power; n := n + 1; writeln(time, Power, sum); end; readln; end. writeln('average =', sum / n);

Άσκηση 10.1.2 Αναπτύξτε το πρόγραμμα της Εικόνας 3, ώστε εκτός από τη μέση παραγωγή ενέργειας, να υπολογίζει και τη μέγιστη παραγωγή ε- νέργειας, για τη συγκεκριμένη χρονική περίοδο. Από το γράφημα της Εικόνας 3, μπορούμε να δούμε ότι η μέγιστη παραγωγή ενέργειας ήταν: max = 21520 Wh Άσκηση 10.2.2 Έχοντας γράψει το πρόγραμμα για τα δύο πρώτα ερωτήματα τον υπολογισμό της μέσης και της μέγιστης παραγωγής ενέργειας επιχειρούμε να αναπτύξουμε ακόμα περισσότερο το πρόγραμμα, ώστε να υ- πο0λογίζει το τρίτο ερώτημα, δηλαδή πόσες μετρήσεις παραγωγής ηλεκτρικής ενέργειας ήταν πάνω από το μέσο όρο και ποια τέταρτα έγιναν? Το πρόγραμμα, για να υπολογίσει τη μέση παραγωγή ενέργειας, ανά τέταρτο, χρειάζεται να διαβάσει όλες τις μετρήσεις, από τη πρώτη μέχρι τη τελευταία, στο αρχείο των μετρήσεων. Για να υπολογίσει ποια τέταρτα της συγκεκριμένης ημέρας, η παραγωγή ενέργειας ήταν μεγαλύτερη από το μέσο όρο, το πρόγραμμα θα πρέπει να επιστρέψει (rewind) στη πρώτη μέτρηση και να ξαναδιαβάσει όλες τις μετρήσεις, συγκρίνοντας κάθε μία από αυτές με το μέσο όρο. Μπορούμε να υπολογίσουμε ποια τέταρτα της συγκεκριμένης ημέρας η παραγωγή ενέργειας ήταν μεγαλύτερη από το μέσο όρο, χωρίς να ξαναδιαβάσουμε αυτές τις μετρήσεις? Η λύση είναι να αποθηκεύσουμε κάθε μέτρηση που διαβάζουμε από το αρχείο, στη μνήμη του υπολογιστή. Εάν αποθηκεύσουμε όλες τις μετρήσεις στη μνήμη του υπολογιστή, τότε δεν θα χρειαστεί να τις ξαναδιαβάσουμε για να υπολογίσουμε τα τέταρτα που η παραγωγή του πάρκου ήταν μεγαλύτερη από το μέσο όρο. Όμως, πως θα αποθηκεύσουμε τις μετρήσεις στη μνήμη του υπολογιστή? Ημέρα και Ώρα Παραγωγή Ενέργειας [σε Wh] 1215 Όποτε χρειάζεται να αποθηκεύσουμε μία 19040.00 λίστα τιμών στο υπολογιστή, χρησιμοποιούμε τη δομή του πίνακα. Σε αντίθεση με μία μεταβλητή που συνδέεται με μία θέση μνήμης και μας δίνει τη δυνατότητα να αποθηκεύουμε μία τιμή σ αυτή τη θέση μνή- 1800 1745 1730 1715 1700 1645 1630 1615 1600 1545 1530 1515 1500 1445 1430 1415 1400 1345 1330 1315 1300 1245 1230 9240.00 12680.00 9040.00 11640.00 14800.00 13760.00 16160.00 17120.00 18160.00 19000.00 19040.00 19680.00 20320.00 20040.00 20720.00 21160.00 21680.00 21960.00 21920.00 22520.00 21840.00 21400.00 20600.00

μης, ο πίνακας μας δίνει τη δυνατότητα να αποθηκεύουμε περισσότερες από μία τιμές στη μνήμη του υπολογιστή και να επεξεργαζόμαστε αυτές τις τιμές όπως θα ε- πεξεργαζόμασταν τις καταχωρήσεις σε μία έντυπη λίστα. Πως δημιουργούμε ένα πίνακα για να μπορεί να αποθηκεύσουμε τις μετρήσεις ηλεκτρικής ενέργειας στη μνήμη? Πως μετά μπορούμε να έχουμε πρόσβαση σε αυτές τις μετρήσεις, να συγκρίνουμε κάθε μία από αυτές με τη μέση τιμή και να εκτυπώσουμε όσες υπερβαίνουν τη μέση τιμή. Παρακάτω, εξετάζουμε αυτές τις λειτουργίες. Δήλωση ενός Πίνακα Είδαμε παραπάνω πως βασική λειτουργία ενός πίνακα σ ένα πρόγραμμα είναι να παριστάνει δεδομένα στη μορφή μίας λίστας. Όμως, πως δημιουργούμε / ορίζουμε έναν πίνακα σ ένα πρόγραμμα και πώς εκτελούμε στα στοιχεία αυτού του πίνακα, τις λειτουργίες που θα εκτελούσαμε στις καταχωρήσεις μίας λίστας? Έχουμε δει ότι μία μεταβλητή συνδέεται με μία θέση στη μνήμη του υπολογιστή και έτσι, επιτρέπει / δίνει τη δυνατότητα να αποθηκεύσουμε μία τιμή, σ αυτή τη θέση μνήμης. Ένας πίνακας θα πρέπει να αποθηκεύει όχι μία τιμή, αλλά μία λίστα τιμών. Παρά τη διαφορά στο πλήθος των δεδομένων που παριστάνουν μία μεταβλητή και ένας πίνακας, μπορούμε να χρησιμοποιήσουμε τον ίδιο βασικό μηχανισμό που επιτρέπει την αποθήκευση δεδομένων στη μνήμη και τη πρόσβαση σε αυτά, μέσα από τις μεταβλητές ενός προγράμματος, για να ορίσουμε / δημιουργήσουμε ένα πίνακα. Έτσι, ορίζουμε / δημιουργούμε ένα πίνακα, δηλώνοντας αυτό το πίνακα, όπως δηλώνουμε και μία μεταβλητή. Στις δηλώσεις των μεταβλητών, δηλώνουμε το τύπο και το όνομα ενός πίνακα, όπως θα δηλώναμε το τύπο και το όνομα μίας μεταβλητής. Όμως, επειδή ένας πίνακας θα πρέπει να αποθηκεύει και να επιτρέπει τη πρόσβαση σε μία λίστα τιμών, εκτός από το τύπο και το όνομα του πίνακα, θα πρέπει να προσδιορίσουμε και το πλήθος των στοιχείων / καταχωρήσεων που θα αποθηκεύει. Για παράδειγμα, για να παραστήσουμε τις μετρήσεις παραγωγής ενέργειας από το φωτοβολταικό πάρκο, θα πρέπει να χρησιμοποιήσουμε έναν πίνακα. Επειδή οι μετρήσεις είναι ανά τέταρτο της ώρας σε μία ημέρα, ο πίνακας που θα δημιουργήσουμε θα πρέπει να μπορεί να αποθηκεύει 100 τιμές: var Power : array[1..100] of real; Time : array[1..100] of integer; Όταν ο μεταγλωττιστής της PASCAL συναντήσει τη δήλωση της μεταβλητής, θα δεσμεύσει αρκετή μνήμη για να χωρέσουν 100 τιμές τύπου real. Οι τιμές που αποθηκεύονται στον πίνακα ονομάζονται στοιχεία του πίνακα (array elements). Προσπέλαση των Στοιχείων ενός Πίνακα Όπως είδαμε, ένας πίνακας επιτρέπει στα προγράμματα μας να αποθηκεύουν πολλές τιμές στην ίδια μεταβλητή. Για να προσπελάσουμε συγκεκριμένες τιμές που είναι αποθηκευμένες στον πίνακα, χρησιμοποιούμε έναν αριθμοδείκτη (index), ο οποίος δείχνει στο στοιχείο που θέλουμε. Για παράδειγμα, για να προσπελάσουμε το πρώτο στοιχείο του πίνακα Power θα χρησιμοποιούσαμε σαν αριθμοδείκτη, την τιμή 0. Για να προσ-

πελάσουμε το δεύτερο στοιχείο θα χρησιμοποιούσαμε τον αριθμοδείκτη 1. Με τον ίδιο τρόπο, για να προσπελάσουμε την τρίτη τιμή θα χρησιμοποιούσαμε τον αριθμοδείκτη 2, κ.ο.κ. Όπως φαίνεται στην Εικόνα 4, το πρώτο στοιχείο του πίνακα έχει πάντα αριθμοδείκτη 1, και το τελευταίο στοιχείο έχει αριθμοδείκτη ίσο με το μέγεθος του πίνακα. Χρήση Μεταβλητής σαν Αριθμοδείκτη Όταν ένα πρόγραμμα χρησιμοποιεί πίνακες, μία συνηθισμένη πράξη είναι να χρησιμοποιούμε μία μεταβλητή σαν αριθμοδείκτη, για την προσπέλαση των στοιχείων του πίνακα. Για παράδειγμα, αν υποθέσουμε ότι η μεταβλητή n έχει τιμή 3, η παρακάτω πρόταση διαβάζει την επόμενη μέτρηση ενέργειας στο τρίτο στοιχείο του πίνακα readln( time[n], Power[n]); Έχοντας αναλύσει τη δήλωση ενός πίνακα και τον τρόπο πρόσβασης και επεξεργασίας των στοιχείων ενός πίνακα, μπορούμε να γράψουμε το πρόγραμμα της ανάλυσης μετρήσεων. Όλο το πρόγραμμα παριστάνεται στην Εικόνα 5.

Πρόγραμμα 10.1 (Με Πίνακες) Ανάλυση Μετρήσεων Παραγωγής Ενέργειας (P = 100kW) (* * PVC_Park.c * * Created on: 14 Δεκ 2012 * *) program PVC; var time : array [1..100] of integer; Power : array [1..100] of real; sum : real; n : integer; begin sum := 0.0; n := 0; while ( not EOF ) do begin n := n + 1; readln(time[n], Power[n]); sum := sum + Power[n]; writeln(time[n], Power[n], sum); end; readln; end. writeln('average =', sum / n); Πρόγραμμα Εφαρμογών 10.2 Σύστημα κρατήσεων θέσεων για αεροπορικές πτήσεις [Deitel H. και Deitel P., 2003]. Τα αυτοματοποιημένα (online) συστήματα κρατήσεων θέσεων έχουν αλλάξει ριζικά τον τρόπο που αγοράζουμε εισιτήρια και μπορούμε να κλείνουμε θέσεις, από τη κράτηση θέσεων σε μία αεροπορική πτήση, μέχρι μία θεατρική παράσταση. Έτσι, εάν θέλουμε να κλείσουμε θέση σε μία αεροπορική πτήση, επισκεπτόμαστε τα sites διάφο-

ρων αεροπορικών εταιριών και εξετάζουμε τις πτήσεις που διαθέτουν από το μέρος της αναχώρησης μας, στο τελικό προορισμό. Εξετάζουμε διαθεσιμότητα και τιμές και μπορούμε να κλείσουμε θέση online, στη πτήση που μας εξυπηρετεί καλύτερα, από τον υ- πολογιστή μας. Στις Εικόνες, παριστάνεται η διαδικασία της κράτησης μίας θέσης, σε μία πτήση από Χίο για Αθήνα χρησιμοποιώντας το σύστημα κρατήσεων θέσεων μίας συγκεκριμένης αεροπορικής εταιρίας. Σ αυτή την άσκηση, επιχειρούμε να γράψουμε το πρόγραμμα για ένα σύστημα αυτόματης κράτησης θέσεων στις πτήσεις μίας αεροπορικής εταιρίας. Για να απλουστεύσουμε το πρόγραμμα, διατηρώντας τη γενικότητα της λύσης, υποθέτουμε ότι: 1 Το πρόγραμμα κρατήσεων θέσεων περιορίζεται στις πτήσεις της εταιρίας από ένα μόνον μέρος αναχώρησης, για παράδειγμα στις πτήσεις αυτής της εταιρίας από τη Χίο. 2 Η αεροπορική εταιρία του προγράμματος κρατήσεων θέσεων, έχει απευθείας πτήσεις από το συγκεκριμένο μέρος αναχώρησης, προς ένα μόνον προορισμό. Για παράδειγμα, η εταιρία έχει απευθείας πτήσεις από τη Χίο, μόνον για την Αθήνα. 3 Το πρόγραμμα κρατήσεων θέσεων λειτουργεί μόνον για την αμέσως επόμενη πτήση, από την ώρα που επιχειρούμε τη κράτηση. 4 Η γραμμή της εταιρίας από το τόπο αναχώρησης στο μοναδικό απευθείας προορισμό, εξυπηρετείται από ένα μόνον αεροπλάνο που έχει χωρητικότητα 10 επιβάτες! Από τα 10 καθίσματα, πέντε (5) είναι στη Α θέση και τα υπόλοιπα (5) είναι στην οικονομική θέση. Η λειτουργία του προγράμματος ξεκινάει, εμφανίζοντας στην οθόνη ένα μήνυμα που εξηγεί τη λειτουργία του και ζητάει από το χρήστη να επιλέξει ανάμεσα σε μία κράτηση στη Α θέση ή στην οικονομική θέση. Εάν πληκτρολογήσουμε 1, τότε το πρόγραμμα θα εκχωρεί ένα κάθισμα στη Α θέση (Θέσεις 1 5). Εάν πληκτρολογήσουμε 2, τότε το πρόγραμμα θα εκχωρεί ένα κάθισμα στην οικονομική θέση (Θέσεις 6 10). Μετά, το πρόγραμμα θα πρέπει να εμφανίζει / εκτυπώνει ένα μήνυμα επικύρωσης, δείχνοντας το αριθμό του καθίσματος και αν είναι στην Α ή στην οικονομική θέση. Το πρόγραμμα δεν θα πρέπει να εκχωρεί ένα κάθισμα που έχει ήδη δοθεί. Εάν η Α θέση (ή αντίστροφα η οικονομική θέση) είναι συμπληρωμένη, το πρόγραμμα θα πρέπει να ρωτά αν θα είναι δεκτό ένα κάθισμα στην άλλη θέση. Εάν όλες οι θέσεις είναι συμπληρωμένες, τότε το πρόγραμμα θα εκτυπώνει ένα μήνυμα πως η πτήση είναι πλήρης και πως η κράτηση θα πρέπει να γίνει για την επόμενη πτήση (Εικόνα ).

ΕΡΓΑΣΤΗΡΙΟ 10 Εισαγωγή στο Προγραμματισμό με τη PASCAL & τη MATLAB ΠΙΝΑΚΕΣ Όνομα: Πρόγραμμα 10.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; begin writeln( Δώσε τις μετρήσεις χρόνου και ταχύτητας ); athroisma := 0; for i := 1 to plithos do begin readln(xronos[i], v[i]); athroisma := athroisma + v[i]; end; mesos := athroisma / plithos; megales_tachytites := 0; for i := 1 to plithos do writeln( H μέση ταχύτητα είναι:, mesos); writeln( To πλήθος των τιμών ταχύτητας πάνω από το μέσο όρο είναι:, megales_tachytites); end.

Πρόγραμμα 10.4 Αντιστροφή της σειράς των στοιχείων ενός Πίνακα. Γράψτε ένα πρόγραμμα που να διαβάζει πέντε ακέραιες τιμές σ ένα πίνακα και να αντιστρέφει τη σειρά αυτών των τιμών στο πίνακα. Δοκιμάστε τη λειτουργία του προγράμματος, χρησιμοποιώντας τις παρακάτω τιμές: 1 2 3 4 5

Πρόγραμμα 10.5 Πίνακες Χαρακτήρων ή Συμβολοσειρές [Νίκος Μισυρλής, 2007]. Γράψτε ένα πρόγραμμα που να διαβάζει μία γραμμή κειμένου από την οθόνη και να μετατρέπει όλα τα μικρά γράμματα σε κεφαλαία και όλα τα κεφαλαία σε μικρά. Το τέλος της γραμμής, δηλαδή το Enter παριστάνεται στη PASCAL από τη συνάρτηση EOLN.