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

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

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

Προγραμματισμός Ι Ενότητα 6 :

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

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

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

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

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

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

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

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

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 10 : Κατασκευή ΝΠΑ. Αλέξανδρος Τζάλλας

Πληροφορική II. Ενότητα 5 : Δομές Δεδομένων και αφηρημένοι. τύποι δεδομένων. Δρ. Γκόγκος Χρήστος

Δομές Δεδομένων Ενότητα 1

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

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

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

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

Εφαρμογή Υπολογιστικών Τεχνικών στην Γεωργία

Λειτουργικά Συστήματα

Ανατομία - Φυσιολογία Ακοής Ομιλίας Λόγου

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

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 9 : Κανονικές Εκφράσεις. Αλέξανδρος Τζάλλας

Προχωρημένα Θέματα Προγραμματισμού Δικτύων

Αρχιτεκτονική υπολογιστών

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

Αρχιτεκτονική υπολογιστών

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 11 : Γραμματικές χωρίς συμφραζόμενα. Αλέξανδρος Τζάλλας

Αρχιτεκτονική υπολογιστών

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

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

Αρχιτεκτονική υπολογιστών

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

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 8 : Αυτόματα NFA - DFA. Αλέξανδρος Τζάλλας

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

Ανατομία - Φυσιολογία Ακοής Ομιλίας Λόγου

Ανατομία - Φυσιολογία Ακοής Ομιλίας Λόγου

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 1 : Σύνολα & Σχέσεις (1/2) Αλέξανδρος Τζάλλας

Ανατομία - Φυσιολογία Ακοής Ομιλίας Λόγου

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

Ανατομία - Φυσιολογία Ακοής Ομιλίας Λόγου

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

Αρχιτεκτονική υπολογιστών

Ανατομία - Φυσιολογία Ακοής Ομιλίας Λόγου

Ιστορία της μετάφρασης

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Στατιστική. 6 ο Μάθημα: Διαστήματα Εμπιστοσύνης και Έλεγχοι Υποθέσεων. Γεώργιος Μενεξές Τμήμα Γεωπονίας ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ

Διδακτική της Πληροφορικής

Φωνολογική Ανάπτυξη και Διαταραχές

Προγραμματισμός H/Y Ενότητα 6: Δομές (structures) Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προχωρημένα Θέματα Προγραμματισμού Δικτύων

Γενικά Μαθηματικά Ι. Ενότητα 15: Ολοκληρώματα Με Ρητές Και Τριγωνομετρικές Συναρτήσεις Λουκάς Βλάχος Τμήμα Φυσικής

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Ανατομία - Φυσιολογία Ακοής Ομιλίας Λόγου

Εισαγωγή στους Αλγορίθμους

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 3 : Γραφήματα & Αποδείξεις. Αλέξανδρος Τζάλλας

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Θεωρία Υπολογισμού Αλφάβητα, Γλώσσες, Κανονικές Εκφράσεις

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Γενικά Μαθηματικά Ι. Ενότητα 12: Κριτήρια Σύγκλισης Σειρών. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

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

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Θεωρία Υπολογισμού. Ενότητα 2 : Σύνολα & Σχέσεις (2/2) Αλέξανδρος Τζάλλας

Εφαρμογή Υπολογιστικών Τεχνικών στην Γεωργία

Εισαγωγή στους Αλγορίθμους

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

Προγραμματισμός H/Y Ενότητα 4: Δείκτες. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Εισαγωγή στους Υπολογιστές

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

Μάρκετινγκ Αγροτικών Προϊόντων

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

Εκκλησιαστικό Δίκαιο

Γενικά Μαθηματικά Ι. Ενότητα 1: Συναρτήσεις και Γραφικές Παραστάσεις. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

Προγραμματισμός Η/Υ. Βασικές Προγραμματιστικές Δομές. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Νοσηλευτική Σεμινάρια

Εκκλησιαστικό Δίκαιο

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Συστήματα Αυτομάτου Ελέγχου. Ενότητα Α: Γραμμικά Συστήματα

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

Διοικητική των επιχειρήσεων

Στατιστική. 5 ο Μάθημα: Βασικές Έννοιες Εκτιμητικής. Γεώργιος Μενεξές Τμήμα Γεωπονίας ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ

Εργαστήριο Χημείας Ενώσεων Συναρμογής

Διοικητική των επιχειρήσεων

Λειτουργικά Συστήματα

Προχωρημένα Θέματα Προγραμματισμού Δικτύων

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Μικροοικονομική. Ενότητα 12 : Μορφές Αγοράς Καραμάνης Κωνσταντίνος

Δομημένος Προγραμματισμός

Θεωρία Υπολογισμού. Ενότητα 5 : Λογικά Επιχειρήματα, Αλφάβητα & Γλώσσες (2/2) Αλέξανδρος Τζάλλας

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

Συστήματα Αναμονής. Ενότητα 9: Ανέλιξη Γέννησης - Θανάτου. Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

Εργαστήριο Χημείας Ενώσεων Συναρμογής

Λειτουργικά Συστήματα

Οδοποιία IΙ. Ενότητα 14: Υπόδειγμα σύνταξης τευχών θέματος Οδοποιίας. Γεώργιος Μίντσης ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Transcript:

1 Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου Προγραμματισμός Ι Ενότητα 9 : Εγγραφές, Σύνολα Αλέξανδρος Τζάλλας

2 Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου Τμήμα Μηχανικών Πληροφορικής Τ.Ε Προγραμματισμός Ι Αλέξανδρος Τζάλλας Λέκτορας Άρτα, 2015 Ενότητα 9 : Εγγραφές, Σύνολα

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 3 3

4 Χρηματοδότηση Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο TEI Ηπείρου» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα.

Σκοποί ενότητας Να γίνει σαφής η αναγκαιότητα ορισμού των εγγραφών και συνόλων. Να περιγραφεί ο τρόπος ορισμού μια εγγραφής/συνόλου. Να αναλυθεί ο σκοπός/χρησιμότητα των εγγραφών και συνόλων στην pascal. 5 5

Περιεχόμενα ενότητας Εγγραφές Records Σύνολα Ορισμός Τύπων Συνόλων Εκχώρηση Στοιχείων Συνόλων σε Μεταβλητές 6 6

Εγγραφές - Records Η εγγραφή (record) είναι ένα σύνολο στοιχείων, τα οποία δεν είναι (υποχρεωτικά) του ίδιου τύπου μεταξύ τους. Τα στοιχεία του record λέγονται πεδία (fields). Η δήλωση ενός record είναι η ακόλουθη: TYPE <ΟΝΟΜΑ ΤΥΠΟΥ> = RECORD <ΟΝΟΜΑ ΠΕΔΙΟΥ 1>: <ΤΥΠΟΣ ΠΕΔΙΟΥ 1>; <ΟΝΟΜΑ ΠΕΔΙΟΥ 2>: <ΤΥΠΟΣ ΠΕΔΙΟΥ 2>;... <ΟΝΟΜΑ ΠΕΔΙΟΥ N>: <ΤΥΠΟΣ ΠΕΔΙΟΥ N>; END; 7 7

Παράδειγμα 1 Εγγραφές - Records Ας υποθέσουμε ότι θέλουμε να επεξεργαστούμε τα στοιχεία των σπουδαστών του Τμήματος Τεχνολογίας Πληροφορικής και Τηλεπικοινωνιών. Τα στοιχεία που θέλουμε να έχουμε είναι: Επώνυμο, Όνομα, Αριθμός Μητρώου, Χρονολογία Γέννησης, Φύλο και Βαθμολογία ενός Μαθήματος. SURNAME NAME AM BIRTHDAY SEX GRADE ΣΩΤΗΡΙΟΥ ΓΕΩΡΓΙΟΣ 145 1982 ΑΓΟΡΙ 7,5 ΓΕΩΡΓΙΟΥ ΜΑΡΙΑ 210 1981 ΚΟΡΙΤΣΙ 8,2 ΣΤΑΜΑΤΙΟΥ ΝΙΚΟΛΑΟΣ 172 1982 ΑΓΟΡΙ 6,7 8 8

Εγγραφές - Records Στη παραπάνω δήλωση τύπου (type) ορίζουμε τον τύπο STUDENT με στοιχεία: Το επώνυμο(sur) και το όνομα (NAME) του σπουδαστή ως συμβολοσειρές μήκους 20 χαρακτήρων, τον αριθμό μητρώου (ΑΜ) και την χρονολογία γέννησης (BIRTH) ως ακέραιους αριθμούς, το φύλο (SEX) ως χαρακτήρα και τη βαθμολογία (GRADE) ως πραγματικό αριθμό. Type student = record Sur,name:string[20]; Am,birth:integer; Sex:char; Grade:real; End; Var stud:student; 9 9

Εγγραφές - Records Στη VAR δηλώνουμε μια μεταβλητή STUD η οποία είναι τύπου STUDENT. Το όνομα STUDENT δεν μπορεί να χρησιμοποιηθεί στις εντολές του προγράμματος, αφού έχει δηλωθεί ως τύπος δεδομένων και όχι ως μεταβλητή. Η αναφορά των πεδίων ενός RECORD γίνεται με τον τελεστή. TYPE STUDENT = RECORD SUR,NAME:STRING[20]; AM,BIRTH:INTEGER; SEX:CHAR; GRADE:REAL; END; VAR STUD:STUDENT; 10 1

Εγγραφές - Records Η εντολή STUD.SUR := 'ΣΩΤΗΡΙΟΥ'; δίνει στο πεδίο SUR του RECORD STUD την τιμή ΣΩΤΗΡΙΟΥ. Η εντολή STUD.NAME := 'ΓΕΩΡΓΙΟΣ'; δίνει στο πεδίο NAME του RECORD STUD την τιμή ΓΕΩΡΓΙΟΣ. Η εντολή STUD.ΑΜ := 145; δίνει στο πεδίο ΑΜ του RECORD STUD την τιμή 145. Η εντολή STUD.BIRTH := 1982; δίνει στο πεδίο BIRTH του RECORD STUD την τιμή 1982. Η εντολή STUD.SEX := 'M'; δίνει στο πεδίο SEX του RECORD STUD την τιμή M (Male -> Αγόρι). TYPE STUDENT = RECORD SUR,NAME:STRING[20]; AM,BIRTH:INTEGER; SEX:CHAR; GRADE:REAL; END; VAR STUD:STUDENT; Η εντολή STUD.GRADE := 7.5; δίνει στο πεδίο GRADE του RECORD STUD την τιμή 7.5. 11 1

Εγγραφές - Records Πεδία του RECORD μπορεί να είναι και πίνακες. Στο πιο πάνω παράδειγμα θα μπορούσαμε να είχαμε τους βαθμούς (GRADE) 5 μαθημάτων οπότε η δήλωση του RECORD θα γινόταν ως εξής: TYPE STUDENT = RECORD SUR,NAME:STRING[20]; AM,BIRTH:INTEGER; SEX:CHAR; GRADE:ARRAY[1..5] OF REAL; END; VAR STUD:STUDENT; Η εντολή STUD.GRADE[1] := 7,5 δίνει στο πεδίο GRADE[1] του RECORD STUD την τιμή 7.5. (Βαθμό για το 1ο μάθημα). 12 1

Εγγραφές - Records Επίσης στοιχεία ενός πίνακα μπορεί να είναι RECORDS. Στο πρώτο παράδειγμα που χρησιμοποιήσαμε θα μπορούσαμε να είχαμε τα στοιχεία για 50 μαθητές οπότε η δήλωση του RECORD θα γινόταν ως εξής: TYPE STUDENT = RECORD SUR,NAME:STRING[20]; AM,BIRTH:INTEGER; SEX:CHAR; GRADE:REAL; END; VAR STUD:ARRAY[1..50] OF STUDENT; 13 1

Εγγραφές - Records Η εντολή STUD[1].SUR := 'ΣΩΤΗΡΙΟΥ'; δίνει στο πεδίο SUR του RECORD STUD[1] την τιμή ΣΩΤΗΡΙΟΥ. (Για το 1ο Σπουδαστή) Η εντολή STUD[1].NAME := 'ΓΕΩΡΓΙΟΣ'; δίνει στο πεδίο NAME του RECORD STUD[1] την τιμή ΓΕΩΡΓΙΟΣ. (Για το 1ο Σπουδαστή) Η εντολή STUD[1].ΑΜ := 145; δίνει στο πεδίο ΑΜ του RECORD STUD[1] την τιμή 145. (Για το 1ο Σπουδαστή) TYPE STUDENT = RECORD SUR,NAME:STRING[20]; AM,BIRTH:INTEGER; SEX:CHAR; GRADE:REAL; END; VAR STUD:ARRAY[1..50] OF STUDENT; Η εντολή STUD.BIRTH := 1982; δίνει στο πεδίο BIRTH του RECORD STUD[1] την τιμή 1982. (Για το 1ο Σπουδαστή) 14 1

Εγγραφές - Records Η εντολή STUD[1].GRADE := 7.5; δίνει στο πεδίο GRADE του RECORD STUD[1] την τιμή 7.5. (Για το 1ο Σπουδαστή) Επίσης θα μπορούσαμε να είχαμε συνδυασμό ή συνδυασμούς των πιο πάνω περιπτώσεων. π.χ. να είχαμε τα στοιχεία για 50 μαθητές και τους βαθμούς (GRADE) 5 μαθημάτων οπότε η δήλωση του RECORD θα γινόταν ως εξής: TYPE STUDENT = RECORD SUR,NAME:STRING[20]; AM,BIRTH:INTEGER; SEX:CHAR; GRADE:ARRAY[1..5] OF REAL; END; VAR STUD:ARRAY[1..50] OF STUDENT; 15 1

Εγγραφές - Records Η εντολή STUD[1].GRADE := 7.5; δίνει στο πεδίο GRADE του RECORD STUD[1] την τιμή 7.5. (Για το 1ο Σπουδαστή) Επίσης θα μπορούσαμε να είχαμε συνδυασμό ή συνδυασμούς των πιο πάνω περιπτώσεων. π.χ. να είχαμε τα στοιχεία για 50 μαθητές και τους βαθμούς (GRADE) 5 μαθημάτων οπότε η δήλωση του RECORD θα γινόταν ως εξής: TYPE STUDENT = RECORD SUR,NAME:STRING[20]; AM,BIRTH:INTEGER; SEX:CHAR; GRADE:ARRAY[1..5] OF REAL; END; VAR STUD:ARRAY[1..50] OF STUDENT; Η εντολή STUD[1].GRADE[1] := 7.5; δίνει στο πεδίο GRADE[1] του RECORD STUD[1] την τιμή 7.5. (Το πρώτο μάθημα για το 1ο Σπουδαστή) 16 1

Παράδειγμα 2 Εγγραφές - Records Να γραφεί πρόγραμμα σε γλώσσα Pascal το οποίο να διαβάζει τα στοιχεία 5 σπουδαστών (επώνυμο, αριθμό μητρώου, χρονολογία γέννησης και βαθμό στο μάθημα Προγραμματισμός) του Τμήματος Τεχνολογίας Πληροφορικής και Τηλεπικοινωνιών. Να υπολογίζει το μέσο όρο στο μάθημα Δομές Δεδομένων και να τυπώνει τα στοιχεία των σπουδαστών που έχουν βαθμό μεγαλύτερο από το μέσο όρο. 17 1

Εγγραφές - Records Program paradeigma_21; Uses crt; Type student=record Sur:string[20]; Am,birth:integer; Dd:real; End; Var stud:array[1..5] of student; I:integer;sum,mo:real; Begin Clrscr; Sum:=0; For i:=1 to 5 do Begin Write('dose eponymo ',i,' ou spoudasth : '); Readln(stud[i].sur); Write('dose ar. Mhtroou ',i,' ou spoudasth : '); Readln(stud[i].am); Write('dose hm. Gennhshs ',i,' ou spoudasth : '); Readln(stud[i].birth); Write('dose bathmo ',i,' ou spoudasth : '); Readln(stud[i].dd); Sum := sum + stud[i].dd; End; Writeln; Mo := sum / 5; Writeln('o mesos oros einai : ',mo:0:2); Writeln; For i:=1 to 5 do If stud[i].dd > mo then Writeln('eponymo:',stud[i].sur,'a.m.:',stud[i].am,' Hm.gennhshs:',stud[i].birth,'bathmos:',stud[i].dd:0:2); End. 18 1

Σύνολα Τα σύνολα είναι τύποι δεδομένων που ορίζονται από τον χρήστη και οι οποίοι έχουν κάποιο βαθμό δόμησης. Όπως και στα μαθηματικά, έτσι και στην Pascal, ένα σύνολο (set) είναι μια διατεταγμένη συλλογή στοιχείων. Ένα σύνολο αποτελείται από μια πεπερασμένη συλλογή (μοναδικών) στοιχείων τα οποία βρίσκονται στον ίδιο προκαθορισμένο τύπο, ο οποίος καλείται βασικός. Η γενική μορφή δήλωσης ενός συνόλου είναι η εξής : Type 'Ονομα_Συνόλου = Set of Τακτικός_Τύπος Ο Τακτικός_Τύπος είναι ένα διατεταγμένο σύνολο τιμών, τα στοιχεία του πρέπει να είναι όλα του ίδιου τύπου και πρέπει να αποτελεί ένα απλό στοιχείο ή ένα υποδιάστημα. Ο Τακτικός_Τύπος δεν μπορεί να έχει πάνω από 256 πιθανές τιμές 19 1

Σύνολα Παράδειγμα Const vowels = ['A', 'E', 'I', 'O', 'U']; upper_case = Set of 'A'..'Z' = ['A'..'Z']; Αφού οριστεί κάποιο σύνολο, ο τελεστής in χρησιμεύει για να εξετάσει την παρουσία ή την απουσία κάποιου συγκεκριμένου στοιχείου από το σύνολο, ως εξής If ch In upper_case Then... If ch In vowels Then... Στα παραπάνω παραδείγματα, το In επιστρέφει την τιμή true αν το ch 20 2

Ορισμός Τύπων Συνόλων Τα σύνολα μπορούν να οριστούν με πολλούς τρόπους : Προκαθορισμένοι τακτικοί τύποι : Type boolean_set = Set of Boolean; char_set = Set of Char; byte_set = Set of Byte; 21 2

Ορισμός Τύπων Συνόλων Υποδιαστήματα προκαθορισμένων τύπων : Type bits = 1..7; byte_bitrs = Set of bits; up_case = Set of 'A'..'Z'; lo_case = Set of 'a'..'z'; Απαριθμητοί τύποι : Type transportation = (bicycle, motorcycle, car, truck, bus); four_wheels = car..bus; trans_set = Set of transportation; four_wheel_set = Set of four_wheels; 22 2

Ορισμός Τύπων Συνόλων Μεταβλητές : Var fast_trans : four_wheels; lower_letters : lo_case; num1, num2 : byte_bits; Σταθερές : Const vowels : Set of Char = ['A', 'E', 'I', 'O', 'U']; up_chars : Set of Char = ['A'..'Z']; lo_chars : Set of Char = ['a'..'z']; 23 2

Εκχώρηση Στοιχείων Συνόλων σε Μεταβλητές Για την εκχώρηση στοιχείων συνόλων σε μεταβλητές χρησιμοποιούνται οι αγκύλες, ως εξής : Μεταβλητή_Συνόλου := [Στοιχείο_Συνόλου] Το κενό σύνολο είναι το [ ] και με τη βοήθειά του μπορούμε να μηδενίσουμε μεταβλητές συνόλων. Ένα σύνολο μπορεί να αποτελείται από μια σειρά στοιχείων, ένα υποδιάστημα ή από τον συνδυασμό και των δύο, ως εξής : set1 := [1, 3, 5, 7, 9] set2 := [0..7]; set3 := [0..7, 14, 15, 16]; char_list := ['A'..'Z', 'a'..'z', '0'..'9']; 24 2

Εκχώρηση Στοιχείων Συνόλων Οι Τελεστές Συνόλων σε Μεταβλητές Οι τελεστές συνόλων προσφέρουν τρόπους για την δημιουργία νέων συνόλων με στοιχεία από ήδη υπάρχοντα σύνολα. Οι τελεστές συνόλων που υποστηρίζει η Pascal είναι οι εξής : Οι Σχεσιακοί Τελεστές Οι σχεσιακοί τελεστές έχουν ως σκοπό την εύρεση της σχέσης δύο ή περισσοτέρων συνόλων. Βασισμένος στις πιθανές καταστάσεις κάποιας σχέσης, ο τελεστής επιστρέφει την τιμή True ή False. 25 2

Εκχώρηση Στοιχείων Συνόλων σε Μεταβλητές Ο παρακάτω πίνακας παρουσιάζει τους σχεσιακούς τελεστές που χρησιμοποιούνται στα σύνολα : ΤΕΛΕΣΤΗΣ ΣΥΝΤΑΞΗ ΕΠΙΣΤΡΕΦΕΙ TRUE ΑΝ = Σύνολο Α = Σύνολο Β Τα Α και Β είναι ταυτόσημα. <> Σύνολο Α <> Σύνολο Β Ένα από τα σύνολα περιέχει τουλάχιστον ένα στοιχείο που δεν βρίσκεται στο άλλο. <= Σύνολο Α <= Σύνολο Β Κάθε στοιχείο του Α είναι και στο Β. < Σύνολο Α < Σύνολο Β Κάθε στοιχείο του Α είναι και στο Β και επιπλέον στο Β υπάρχει τουλάχιστον ένα στοιχείο που δεν βρίσκεται στο Α. >= Σύνολο Α >= Σύνολο Β Κάθε στοιχείο του Β είναι και στο Α. > Σύνολο Α > Σύνολο Β Κάθε στοιχείο του Β είναι και στο Α και επιπλέον στο Α υπάρχει τουλάχιστον ένα στοιχείο που δεν βρίσκεται στο Β. ΙΝ Στοιχείο στο Σύνολο Α Το στοιχείο υπάρχει στο σύνολο Α. 26 2

Εκχώρηση Στοιχείων Συνόλων Ο Τελεστής Ιn σε Μεταβλητές Ο τελεστής Ιn εξετάζει την σχέση δύο ή περισσοτέρων συνόλων. Επιστρέφει ένα αποτέλεσμα τύπου Boolean, ανάλογα με το αν κάποιο στοιχείο είναι μέρος του συνόλου. Το εξεταζόμενο στοιχείο θα πρέπει να είναι του ιδίου τύπου ή συμβατού με τον βασικό τύπο του συνόλου. Η σύνταξή του είναι η εξής : Όνομα_Στοιχείου Ιn Όνομα_Συνόλου Ακολουθούν παραδείγματα : ch In vowels 'i' In consonants operator In ['+', '-', '/', '*'] 27 2

2 Βιβλιογραφία Βλαχάβας Ι. (1994). Η γλώσσα προγραμματισμού Pascal. Εκδόσεις Γαρταγάνης Διονύσιος. Κάβουρας Ι.Κ. (1999). Δομημένος Προγραμματισμός με Pascal. Εκδόσεις Κλειδάριθμος. Αλεβίζου Θ., & Καμπουρέλης Α. (1995). Μαθήματα Προγραμματισμού: Εισαγωγη με τη Γλώσσα Pascal. Εκδόσεις Παπασωτηρίου. Cooper D. (1993). Oh! Pascal!, An Introduction to Computing, του. Εκδόσεις Norton. Larry R.N. (1998). Advanced Programming in Pascal with Data Structures. Εκδόσεις Macmillan USA. Τσελίκης Γ.Σ., Τσελίκας Ν.Δ. (2012). C: από τη Θεωρία στην Εφαρμογή (B' Έκδοση). Εκδόσεις Παπασωτηρίου. Aho A.V., Hopcroft J.E., & Ullman J.D. (1974). The design and analysis of computer algorithms. Εκδόσεις Addison Wesley. Abelson Η., Sussman G.J., Sussman J. (1985). Structure and Interpretation of Computer Programs, MIT Press, McGraw Hill Book Company.

2 29 Σημείωμα Αναφοράς Copyright Τεχνολογικό Ίδρυμα Ηπείρου. Αλέξανδρος Τζάλλας. Προγραμματισμός Ι. Έκδοση: 1.0 Άρτα, 2015. Διαθέσιμο από τη δικτυακή διεύθυνση: http://eclass.teiep.gr/openclass/courses/comp111/

Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά Δημιουργού-Μη Εμπορική Χρήση-Όχι Παράγωγα Έργα 4.0 Διεθνές [1] ή μεταγενέστερη. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, Διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. [1] http://creativecommons.org/licenses/by-nc-nd/4.0/deed.el 3

3 Τέλος Ενότητας Επεξεργασία: Ευάγγελος Καρβούνης Άρτα, 2015

3 Τέλος Ενότητας Εγγραφές, Σύνολα