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



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

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

Αρχεία Ένα αρχείο αποτελείται από μία σειρά ομοειδών δεδομένων που ονομάζονται λογικές εγγραφές (logical record)

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

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

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

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

ΑΠΑΝΤΗΣΕΙΣ ΘΕΜΑ Α A1. 2-Λάθος 3-Λάθος 4-Σωστό 5-Λάθος A2. integer. real. Boolean. char. string A3.

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

Ενότητα 3: «Εισαγωγή στην Αλγοριθμική και στον Προγραμματισμό: loops, subroutines, tables»

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Κανονική εξέταση, Φεβρουάριος 2005

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

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 10 : Εντολές επιλογής και αποφάσεων

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

ΑΠΑΝΤΗΣΕΙΣ. α- Σωστό β- Σωστό γ- Λάθος δ- Λάθος ε- Σωστό στ- Σωστό

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

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

Προγραμματισμός Ι. Ασκήσεις. Τζάλλας Αλέξανδρος, Καθηγητής Εφαρμογών. Τμ. Μηχανικών Πληροφορικής Τ.Ε.

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

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Προγραμματισμός Ι. Ενότητα 7 : Πίνακες I. Αλέξανδρος Τζάλλας

Κεφάλαιο 12 : ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

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

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

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις

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

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

ΜΑΗΣ ΕΞΕΤΑΣΤΙΚΟ ΔΟΚΙΜΙΟ

πινάκων Σύγχρονα Προγραματιστικά Περιβάλλοντα ΠΕΡΙΕΧΟΜΕΝΑ

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

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

Προτεινόμενες λύσεις

Γ7.8 Εγγραφές (Structures) Γ Λυκείου Κατεύθυνσης

Εισαγωγή στον Προγραμματισμό με C++

ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2014

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

Προγραμματισμός και Εφαρμογές Υπολογιστών

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

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

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

8 FORTRAN 77/90/95/2003

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

ΜΑΗΣ ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ ΔΟΚΙΜΙΟΥ. Ενότητα Α - ΛΥΣΕΙΣ

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

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

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

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

Πίνακες. FORTRAN και Αντικειμενοστραφής Προγραμματισμός

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

- program p_name(output); - uses crt;

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

Προγραμματισμός PASCAL

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

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

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

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

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

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

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

ΜΕΡΟΣ Α - Αποτελείται από δέκα (10) ερωτήσεις. Κάθε ερώτηση βαθμολογείται με έξι μονάδες.

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

Υπο-προγράμματα στη Fortran

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Ενότητα 1 Διάλεξη 3. Προγραμματισμός με Εφαρμογές στην Επιστήμη του Μηχανικού. Σιέττος Κωνσταντίνος

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

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

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

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

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

ΠΡΟΤΕΙΝΟΜΕΝΕΣ ΛΥΣΕΙΣ

Pascal - Βασικές Έννοιες

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

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017


9.1. Προσδοκώμενα αποτελέσματα

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ. Κάθε υποπρόγραμμα έχει μόνο μία είσοδο και μία έξοδο. Κάθε υποπρόγραμμα πρέπει να είναι ανεξάρτητο από τα άλλα.

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΔΙΑΓΩΝΙΣΜΑ ΠΡΟΣΟΜΟΙΩΣΗΣ 23/04/2012. Α. Να απαντήσετε με Σ ή Λ στις παρακάτω προτάσεις:

Δομημένος Προγραμματισμός (ΤΛ1006)

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

4. Επιλογή και Επανάληψη

ΟΜΟΣΠΟΝ ΙΑ ΕΚΠΑΙ ΕΥΤΙΚΩΝ ΦΡΟΝΤΙΣΤΩΝ ΕΛΛΑ ΟΣ (Ο.Ε.Φ.Ε.) ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ ΕΠΑΝΑΛΗΠΤΙΚΑ ΘΕΜΑΤΑ 2013

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

ΑΡΧΗ 1ης ΣΕΛΙΔΑΣ ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ : ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΤΑΞΗ / ΤΜΗΜΑ : Γ ΛΥΚΕΙΟΥ ΔΙΑΓΩΝΙΣΜΑ ΠΕΡΙΟΔΟΥ : ΑΠΡΙΛΙΟΣ 2019 ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ : 7 (ΕΠΤΑ)

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

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

ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ. Σκοπός της Άσκησης. 1. Εισαγωγικά στοιχεία για τους Δείκτες

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

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

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

Υπολογιστικά Συστήματα

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

Σχεδίαση και Ανάλυση Αλγορίθμων Ενότητα 7: ΑΝΑΔΡΟΜΗ

Transcript:

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ Διδάσκουσα Δρ Β. Καβακλή Χειμερινό Εξάμηνο 2001 1 Program cinema (input, output); const N = 10; Παράδειγμα χρήσης πινάκων var tickets: array[1..n] of integer; films: array[1..n] of string[50]; i, sum: integer; average : real; Τυπώνει τα ονόματα sum:=0; των ταινιών που for i:=1 to N do έκοψαν περισσότερα εισιτήρια από τον write(output, Onoma tainias: ); μέσο όρο readln(films[i]); write(output, Arith. Eishthrivn: ); readln(input, tickets[i]); sum := sum + tickets[i]; average := sum / N; writeln(output, Oi parakatv tainies ekoyan eisιthria > meso oro: ); for i:=1 to N do if tickets[i] >= average then writeln(output, films[i]); end. 2 1

Πίνακες ως παράμετροι υποπρογραμμάτων! Ένα στοιχείο ενός πίνακα μπορεί να περαστεί ως πραγματική παράμετρος ενός υποπρογράμματος " π.χ. var pin: array[1..10] of integer; tetragvno: integer; στο κυρίως πρόγραμμα μπορώ να έχω: tetragvno:= sqr(pin[1]);! Ολόκληρος ο πίνακας μπορεί να περαστεί σαν πραγματική παράμετρος υποπρογράμματος " Στην περίπτωση αυτή ο τύπος του πίνακα θα πρέπει να έχει ήδη ορισθεί σε ένα εξωτερικό block που περικλείει το υποπρόγραμμα 3 Program sygkrish_pinakvn (input, output); const N = 10; Παράδειγμα type pinakas = array[1..n] of integer; var pin_1, pin_2: pinakas; i : integer; function athroisma(pin: pinakas): integer; var j, sum: integer; sum:=0; for j:=1 to N do sum:=sum + pin[j]; athroisma := sum; Διαβάζει 2 πίνακες 10 ακεραίων και συγκρίνει τα αθροίσματα των στοιχείων τους writeln(output, Diabase ta stoixeia toy 1oy pinaka ); for i:=1 to N do readln(input, pin_1[i]); writeln(output, Diabase ta stoixeia toy 2oy pinaka ); for i:=1 to N do readln(input, pin_2[i]); if athroisma(pin_1) >= athroisma(pin_2) then writeln(output, 1os Pinakas ) else writeln(output, 2os Pinakas ); end. 4 2

Πίνακες 2 διαστάσεων s 11 s 12... s 180 s 21 s 22... s 280 s 31 s 32... s 380! Μια οθόνη που αποτελείται από 3 γραμμές και 80 θέσεις χαρακτήρων ανά γραμμή, μπορεί να δηλωθεί ως ένας διδιάστατος πίνακας: " var screen: array [1..3, 1..80] of char;! Ο χαρακτήρας j της γραμμής i μπορεί να προσπελαστεί από ένα αναγνωριστικό με δύο υποδείκτες " screen[i][j]; ή screen[i, j];! Το αναγνωριστικό " screen[i]! παριστάνει ένα στοιχείο τύπου array[1..80] of char, δηλ. τη γραμμή i της οθόνης! Η παρακάτω εντολή εκχωρεί τον χαρακτήρα c σε όλες τις 240 θέσεις του πίνακα for i:=1 to 3 do for j:= 1 to 80 do screen[i, j] := c ; 5 Πολυδιάστατοι πίνακες! Οι πολυδιάστατοι πίνακες διευκολύνουν στην σύλληψη και λύση ενός προβλήματος! Μια κλασική εφαρμογή πινάκων είναι η απογραφή υλικού (εμπορευμάτων, επίπλων, κ.τ.λ.) " Παράδειγμα: μια αποθήκη περιέχει 10 τύπους εμπορευμάτων και από κάθε εμπόρευμα περιέχει ορισμένο απόθεμα (αρ. μονάδων). " Στην περίπτωση αυτή μπορούμε να δηλώσουμε: # var stock: array[1..10] of integer; " Η εκχώρηση: # stock[3] := 10; σημαίνει ότι η αποθήκη περιέχει 10 κομμάτια από το είδος 3 " Όταν πουληθεί κάποιο εμπόρευμα, ενημερώνουμε την τιμή του αντίστοιχου αποθέματος # stock[3] := stock[3] 1; 6 3

Παράδειγμα: Αντιπροσωπεία αυτοκινήτων! Έστω ότι μηχανογραφούμε τον έλεγχο αποθεμάτων των αυτοκινήτων ενός εξουσιοδοτημένου αντιπροσώπου αυτοκινήτων της HONDA! Για ευκολότερη κατανόηση του προβλήματος μπορούμε να ορίσουμε: " type model = (JAZZ, CIVIC, SHUTTLE, ACCORD, PRELUDE); " var stock: array[jazz..prelude] of integer;! Η παραπάνω βελτίωση μας επιτρέπει να ονομάζουμε τα διάφορα προϊόντα! Η εκχώρηση " stock[jazz] := 3 ;! Σημαίνει ότι έχουμε 3 αυτοκίνητα μοντέλου JAZZ στην αποθήκη! Η εντολή " writeln(output, stock[civic]);! Εμφανίζει τον αριθμό των αυτοκινήτων μοντέλου CIVIC που υπάρχουν στην αποθήκη JAZZ CIVIC SHUTTLE ACCORD PRELUDE stock 3 5 1 2 0 7 Αντιπροσωπεία αυτοκινήτων (συνέχεια...)! Για να προσομοιώσουμε ορθά την πραγματικότητα θα πρέπει να λάβουμε υπόψη ότι τα αυτοκίνητα έχουν διάφορες χωρητικότητες κινητήρων.! Έτσι πρέπει να προσθέσουμε μια δεύτερη διάσταση στον πίνακά μας: type model = (JAZZ, CIVIC, SHUTTE, ACCORD, PRELUDE); cc = (xilia, xilia_diakosia, xilia_pentakosia, xilia_exakosia, dyo_xiliades, dyo_pentakosia); var stock : array[jazz..prelude, xilia.. dyo_pentakosia] of integer; JAZZ CIVIC SHUTTLE ACCORD PRELUDE H νέα δομή δεδομένων (δισδιάστατος πίνακας) έχει μια θέση για κάθε μοντέλο με 6 διαφορετικές χωρητικότητες κινητήρα. Μπορεί να αποθηκεύσει 30 τύπους αυτοκινήτων 1000 1200 1500 1600 2000 2500 8 4

Αντιπροσωπεία αυτοκινήτων (συνέχεια...)! Το επόμενο βήμα είναι να λάβουμε υπ όψη ότι τα αυτοκίνητα έχουν διάφορα τυποποιημένα χρώματα, προσθέτοντας άλλη μια διάσταση στον πίνακα, ως εξής: type model = (JAZZ, CIVIC, SHUTTE, ACCORD, PRELUDE); cc = (xilia, xilia_diakosia, xilia_pentakosia, xilia_exakosia, dyo_xiliades, dyo_pentakosia); color = (aspro, metaliko_mpez, metaliko_ashmi, mavro); apothiki = array[jazz..prelude, xilia.. dyo_pentakosia, aspro..mavro] of integer; var stock: apothiki;! Προσθέτοντας επιπλέον διαστάσεις στον πίνακα Stock μπορούμε να αποθηκεύουμε πληροφορίες για τα αυτοκίνητα με τον τρόπο που εμείς τα αντιλαμβανόμαστε! Για να βρούμε το απόθεμα των αυτοκινήτων SHUTTLE, με 1500 cc, χρώματος μεταλλικού μπεζ, αρκεί η εντολή: " writeln(stock[shuttle, xilia_pentakosia, metaliko_mpez]); 9 Αντιπροσωπεία αυτοκινήτων (συνέχεια...)! Η παρακάτω συνάρτηση μετράει το πλήθος των αυτοκινήτων που έχουν ορισμένο χρώμα: function orismena (xrvma: color; apothema: apothiki): integer; var car: model; xvrhtikothta: cc; plithos: integer; plithos := 0; for car := JAZZ to PRELUDE do for xvrhtikothta := xilia to dyo_pentakosia do plithos := plithos + apothema[car, xvrhtikothta, xrvma]; orismena := plithos;! Στο κυρίως πρόγραμμα μπορούμε να καλέσουμε την παραπάνω συνάρτηση για να βρούμε πόσα άσπρα αυτοκίνητα υπάρχουν στο stock ως εξής: aspra_aytokinhta := orismena(aspro, stock); όπου aspra_aytokinhta μετaβλητή τύπου integer 10 5

Εγγραφές! Ένας πίνακας αποτελείται από ομοειδή στοιχεία, δηλ. στοιχεία που έχουν όλα τον ίδιο τύπο! Πολύ συχνά ένα αντικείμενο μπορεί να αποτελείται από στοιχεία διαφορετικού τύπου " τα στοιχεία ενός τηλεφωνικού καταλόγου " τα εμπορεύματα μιας αποθήκης! Παράδειγμα: " Για την αναπαράσταση μιας ημερομηνίας θα μπορούσαμε να δηλώσουμε 3 μεταβλητές: # mera : 1..31; # mhnas: 1..12; # etos: 1900..2900 " Για την αναπαράσταση των προσωπικών στοιχείων: # onoma: string[30]; # fylo: (andras, gynaika); # oikogeneiakh_katastash: (agamos, eggamos, diazeygmenos);! Για την αναπαράσταση τέτοιων αντικειμένων χρησιμοποιούμε τον τύπο record (εγγραφή) 11 Δήλωση Εγγραφών! Ο τύπος εγγραφής (record) είναι μια συλλογή από συστατικά διαφόρων τύπων που το καθένα δηλώνεται με ένα όνομα " Τα συστατικά μιας εγγραφής ονομάζονται πεδία (fields) " Το κάθε πεδίο έχει το δικό του όνομα και ανήκει σε ένα τύπο δεδομένων " Ένα πεδίο μπορεί να είναι και μια άλλη εγγραφή! Η δήλωση της εγγραφής γίνεται στην περιοχή των δηλώσεων νέων τύπων ως εξής: type hmeromhnia = record mera: 1..31; mhnas: 1..12; etos: 1900.. 2900; var shmera, avrio: hmeromhnia; 12 6

Προσπέλαση στα πεδία εγγραφής! Η αναφορά σε πεδίο μιας εγγραφής γίνεται με το όνομα της μεταβλητής τύπου record που ακολουθείται από μια τελεία και το όνομα του πεδίου όπως εμφανίζεται στη δήλωση της εγγραφής: " Παραδείγματα: shmera.mera := 4; shmera.mhnas := 12; shmera.etos := 2001;! Με τη χρήση του with " Παράδειγμα: with shmera do mera := 4; mhnas:= 12; etos := 2001; 13 Program student_record (input, output); type prvtoeths_foithths = record am: integer; eponymo: string[20]; onoma: string[20]; polymesa: integer; istoria_politismoy: integer; mme: integer; var foithths: prvtoeths_foithths; mesos_oros: real; write( AM: ); readln(foithths.am); write( EPONYMO: ); readln(foithths.eponymo); write( ONOMA: ); readln(foithths.onoma); write( POLYMESA: ); readln(foithths.polymesa); write( ISTORIA POLITISMOY: ); readln(foithths.istoria_politismoy); write( MME: ); readln(foithths.mme); Παράδειγμα: Διαβάζει τα στοιχεία ενός φοιτητή και τυπώνει το μέσο όρο βαθμολογίας του mesos_oros := (foithths.polymesa + foithths.istoria_politismoy + foithths.mme) / 3; write( O MESOS OROS BATHMOLOGIAS TOY FOITHTH:, foithths.eponymo,, foithths.onoma, EINAI: ); writeln( mesos_oros:5:2); end. 14 7

Ιεραρχική εγγραφή! Εγγραφές με πεδία άλλες εγγραφές ονομάζονται ιεραρχικές εγγραφές! Δήλωση: type mathimata_a_etoys = record polymesa: integer; istoria_politismoy: integer; mme: integer; prvtoeths_ foithths = record am: integer; eponymo: string[20]; onoma: string[20]; bathmoi: mathimata_a_etoys; prvtoeths_ foithths am eponymo onoma mathimata_a_etoys polymesa istoria_politismoy mme var foithths: prvtoeths_foithths;! Προσπέλαση: " foithths.bathmoi.polymesa := 8; " foithths.bathmoi.istoria_politismoy := 10; " foithths.bathmoi.mme := 9; 15 Παράδειγμα: Κατάλογος Φοιτητών! Για να ορίσουμε έναν κατάλογο 150 θέσεων ο οποίος θα περιέχει αριθμό μητρώου, επώνυμο, όνομα και διεύθυνση φοιτητών θα πρέπει να δηλωθούν τα παρακάτω: type foithths = record am: integer; eponymo: string[20]; onoma: string[20]; diefthinsi: string[60]; var foithtes_tpte: array [1..150] of foithths;! Για να γίνει η εμφάνιση στην οθόνη των στοιχείων του 10ου φοιτητή θα πρέπει να γραφτούν οι εντολές: writeln(foithtes_tpte[10].am); writeln(foithtes_tpte[10].eponymo); writeln(foithtes_tpte[10].onoma); writeln(foithtes_tpte[10].dieythinsi); with foithtes_tpte[10] do writeln(am); writeln(eponymo); writeln(onoma); writeln(diefthinsi); 16 8