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

Σχετικά έγγραφα
Εργαστήριο 9 Δομές. int age; double salary; } yp1;

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

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

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

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

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Συναρτήσεις II Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Τύποι δεδομένων, μεταβλητές, πράξεις. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δείκτες Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Δομή του προγράμματος. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

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

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

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

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

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

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

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

Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου. Πληροφορική II. Ενότητα 3 : Γλώσσες προγραμματισμού. Δρ.

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

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

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

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Συναρτήσεις I Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

Πίνακες (Arrays) Εισαγωγή στη C++

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

Προγραμματισμός Υπολογιστών με C++

Πληροφορική 2. Γλώσσες Προγραμματισμού

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Εντολές for, while, do-while Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

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

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

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

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

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

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

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

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

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

ΜΑΘΗΜΑΤΙΚΑ ΓΙΑ ΟΙΚΟΝΟΜΟΛΟΓΟΥΣ

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

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

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

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

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

Δισδιάστατοι Πίνακες (2D Arrays) Εισαγωγή στη C++

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

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

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

Μεταγλωττιστές. Ενότητα 6: Λεκτική ανάλυση (Μέρος 2 ο ) Αγγελική Σγώρα Τμήμα Μηχανικών Πληροφορικής ΤΕ

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Εντολή if. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

Εισαγωγή στον δομημένο προγραμματισμό

Γ7.2 Συμβολοσειρές (Strings) Γ Λυκείου Κατεύθυνσης

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

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Λογιστικές Εφαρμογές Εργαστήριο

Ηλεκτρονικοί Υπολογιστές

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Δομές Επανάληψης. Εισαγωγή στη C++

Προγραμματισμός Υπολογιστών με C++

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι περιλαμβάνει μια μεταβλητή; ΔΕΙΚΤΕΣ. Διεύθυνση μεταβλητής. Δείκτης

{ int a = 5; { int b = 7; a = b + 3;

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΠΡΑΞΕΙΣ ΜΕΤΑΒΛΗΤΕΣ. Ακέραιοι αριθμοί (int) Πράξεις μεταξύ ακεραίων αριθμών

Στατιστική Επιχειρήσεων Ι

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

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

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

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

Οντοκεντρικός Προγραμματισμός

2 η Διάλεξη C++ Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

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

Πληροφορική. Εργαστηριακή Ενότητα 1 η : Εισαγωγή στα Λογιστικά Φύλλα με το MS Excel. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

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

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

Αντικειμενοστραφείς Γλώσσες Προγραμματισμού C++ / ROOT

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

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

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Οντοκεντρικός Προγραμματισμός

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής

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

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

Ειδικά Θέματα Προγραμματισμού

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

Οντοκεντρικός Προγραμματισμός

10 η Διάλεξη C++ - Πίνακες. Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Βιομηχανικοί Ελεγκτές

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

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

Αναφορές, είκτες και Αλφαριθμητικά

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

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Transcript:

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Εισαγωγή στον Προγραμματισμό με C++ Ενότητα # 8: Δομές Κωνσταντίνος Κουκουλέτσος Τμήμα Αυτοματισμού

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

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

Σκοποί Ενότητας Κατανόηση των βασικών δομών και της χρήσης τους 4

Περιεχόμενα Ορισμός δομής Εκχώρηση και σύγκριση δομών Ορισμός πίνακα από δομή Δομές μέσα σε δομές Δομές και Συναρτήσεις Συναρτήσεις που επιστρέφουν δομές Παραδείγματα 5

Ορισμός Δομής (1) Μία δομή είναι ένας σύνθετος τύπος δεδομένων που ορίζεται από τον προγραμματιστή. Μία δομή μπορεί να περιέχει διαφορετικούς τύπους δεδομένων όπως int, chat, double ακόμη και arrays. O ορισμός μίας δομής γίνεται με την δεσμευμένη λέξη struct. Μία δομή που πχ αναφέρεται σε ένα υπάλληλο είναι η εξής: struct ypallilos char eponimo[40]; int age; double salary; } yp1; Οι μεταβλητές eponimo, age, salary είναι τα μέλη ή πεδία της δομής. Η μεταβλητή (αναγνωριστικό yp1) συνίσταται από τα τρία αυτά πεδία. Στο ανωτέρω παράδειγμα ορίστηκε μία δομή και δημιουργήθηκε μία μεταβλητή τύπου δομής. 6

Ορισμός Δομής (2) Ο ορισμός μίας δομής μπορεί να γίνει χωριστά με την δημιουργία μεταβλητών. struct ypallilos char eponimo[40]; int age; double salary; } ; Ypallilos yp1, yp2; Στο παραπάνω παράδειγμα υπάρχει ο ορισμός μίας δομής και κατόπιν η δημιουργία δύο μεταβλητών τύπου δομής με ονόματα yp1 και yp2. Η πρόσβαση στα μέλη μία δομής γίνεται με την χρήση το τελεστή (.) τελείας (dot operator) δηλαδή yp1.age αναφέρεται στην μεταβλητή age του yp1 ενώ το yp2.salary στην μεταβλητή salary του yp2 7

Παράδειγμα 1 To παρακάτω παράδειγμα ορίζει και εκχωρεί τιμές σε δομές #include <iostream> using namespace std; int main() struct ypallilos char* eponimo; int age; double salary; } yp1; } yp1.eponimo= "Papadopoulos"; yp1.age = 28; yp1.salary = 1200; cout << "Stoixeia ypallilou \n" << yp1.eponimo << " " << yp1.age << " " << yp1.salary << endl; system("pause"); return 0; 8

Παράδειγμα 2 Είναι επίσης δυνατόν να οριστεί ο τύπος της δομής και μετά να δηλωθούν και δημιουργηθούν μεταβλητές του συγκεκριμένου τύπου δομής. Επίσης είναι δυνατό να δοθούν τιμές στα πεδία μίας δομής ακλουθώντας τον τρόπο που δίδονται τιμές στα στοιχεία ενός πίνακα. #include <iostream> using namespace std; int main() struct ypallilos char* eponimo; int age; double salary; } ; ypallilos yp1 = "Papadopoulos", 28,1200}; ypallilos yp2 = "Pappas", 40,1300}; cout << "Stoixeia ypallilou \n" << yp1.eponimo << " " << yp1.age << " " << yp1.salary << endl; cout << "Stoixeia ypallilou \n" << yp2.eponimo << " " << yp2.age << " " << yp2.salary << endl; system("pause"); return 0;} 9

Παρατηρήσεις Στο παραπάνω πρόγραμμα ορίζονται δύο μεταβλητές με τύπο την δομή ypallilos. Ο ορισμός τους είναι με παρόμοιο τρόπο που ορίζονται δύο μεταβλητές οποιοδήποτε τύπου πχ με δύο ακεραίους int a, b; Τα μέλη μπορεί να είναι οποιοσδήποτε τύπος δεδομένων ακόμη και πίνακες ή και δομές όπως θα δούμε αργότερα. Το παρακάτω παράδειγμα κάνη χρήση δομής με μέλος ένα πίνακα 10

Παράδειγμα 3 #include <iostream> using namespace std; int main() struct spoudastis char spoud_name[40]; float spoud_vathmos[2]; }; struct spoudastis sp1; cout<<" Dose ta stoixia tou spoudasti"<<endl; cout<<" Eponimo "; cin.getline(sp1.spoud_name,40); cout<<" Vathmo "; cin>>sp1.spoud_vathmos[0]>>sp1.spoud_vathmos[1]; cout<<endl<< " Stoixeia spoudasti"<<endl; cout<<sp1.spoud_name<<" "<<sp1.spoud_vathmos[0] <<" "<<sp1.spoud_vathmos[1]<<endl; system("pause"); return 0; } 11

Εκχώρηση και σύγκριση δομών Επιτρέπεται η εκχώρηση από μία μεταβλητή δομής σε μία άλλη εφόσον είναι του ιδίου τύπου δομής. Αντίθετα όπως είναι γνωστό δεν επιτρέπεται εκχώρηση από ένα πίνακα σε ένα άλλο γιατί ο πινάκας θεωρείται ότι είναι δείκτης προς σταθερά (constant pointer) 12

Παράδειγμα Εκχώρησης //DS03b #include <iostream> using namespace std; int main() struct ypallilos char* eponimo; int age; double salary; } ; ypallilos yp1 = "Papadopoulos", 28,1200}; ypallilos yp2 =yp1; cout << "Stoixeia 1ou ypallilou \n" << yp1.eponimo << " " << yp1.age << " " << yp1.salary << endl; cout << "Stoixeia 2u ypallilou \n" << yp2.eponimo << " " << yp2.age << " " << yp2.salary << endl; system("pause"); return 0; } 13

Εκχωρήσεις - Συγκρίσεις Αντί για εκχώρηση μίας δομής σε άλλη το ίδιο αποτέλεσμα επιτυγχάνεται και με εκχωρήσεις των μελών της μίας μεταβλητής στην άλλη δηλαδή στο παραπάνω παράδειγμα η εκχώρηση yp2=yp1; ισοδυναμεί με τις εκχωρήσεις Yp2.eponimo=yp1.eponymo; Yp2.age=yp1.age; Yp2.salary=yp1.salary; Ενώ επιτρέπεται εκχώρηση μεταξύ δύο μεταβλητών του ιδίου τύπου δομής για να γίνει σύγκριση δύο δομών θα πρέπει να εξεταστούν τα πεδία των δύο δομών χωριστά. Το γεγονός αυτό συνεπάγεται ότι είναι λάθος προτάσεις του τύπου if (yp2==yp1) Η σύγκριση δύο δομών γίνεται με μία πιο σύνθετη λογική πρόταση που εξετάζει όλα τα μέλη της κάθε μεταβλητής χωριστά if (yp2.eponimo==yp1.eponimo && yp2.age==yp2.age && yp2.salary==yp1.salary 14

Ορισμός πίνακα από δομή (1) Ένας πίνακας μπορεί να οριστεί έχοντας σαν στοιχεία μία δομή. Ορίζοντας ένας τέτοιο πίνακα επιτυγχάνεται μία ομαδοποίηση των δεδομένων. Παράδειγμα ds05 int main() struct ypallilos char* eponimo; int age; double salary; } ; struct ypallilos epix[2]= //H lexi struct epanalamvanetai //omos mporei kai na min epanalamvanetai "Papadopoulos", 28,1200}, "Pappas", 40,1300}, }; cout << "Stoixeia ypallilou \n" << epix[0].eponimo << " " << epix[0].age << " " << epix[0].salary << endl; cout << "Stoixeia ypallilou \n" << epix[1].eponimo << " " << epix[1].age << " " << epix[1].salary << endl; system("pause"); return 0; } 15

Ορισμός πίνακα από δομή (2) Ο τρόπος αυτός της οργάνωσης είναι καλύτερος από τον ορισμό πολλών πινάκων για την αποθήκευση των δεδομένων. Στο παραπάνω παράδειγμα θα έπρεπε να δημιουργηθούν 3 πίνακες για να αποθηκεύσουν τα δεδομένα: ένας για τα eponimo ένας για τα age ένας για τα salary O ορισμός πίνακα δομών μπορεί να γίνει ταυτόχρονα με τον ορισμό της δομής struct ypallilos } epix[2] ; char* eponimo; int age; double salary; 16

Δομές μέσα σε δομές Μία δομή μπορεί να έχει σαν μέλος οποιοδήποτε τύπο μεταβλητής ακόμη και μία άλλη δομή. Η πρόσβαση στα μέλη γίνται με διαδοχικές χρήσεις του τελεστή (.) Παράδειγμα struct point int x; int y; }; struct rectangle struct point panoaris; struct point katodexia; } ; int main() struct rectangle rect1; rect1.panoaris.x=-2; rect1.panoaris.y=3; rect1.katodexia.x=8; rect1.katodexia.y=-1; double d1= (rect1.panoaris.x-rect1.katodexia.x); double d2= (rect1.panoaris.y-rect1.katodexia.y); double diag=sqrt(pow(d1,2)+pow(d2,2)); cout<<"diagonios"<<diag<<endl; system("pause"); return 0;} 17

Δομές και Συναρτήσεις Mία δομή μπορεί να μεταβιβαστεί σαν παράμετρος σε μία συνάρτηση τους δύο γνωστούς τρόπους: δια τιμής και δια αναφοράς. Επιπλέον μία συνάρτηση μπορεί να επιστρέφει μία τιμή τύπου δομής. Αυτό είναι αντίθετο από ότι συμβαίνει με τους πίνακες όπου οι πίνακες μεταβιβάζονται δια αναφοράς και μόνο, αφού στην ουσία μεταβιβάζεται η διεύθυνση του πρώτου στοιχείου του πίνακα. Επίσης μία συνάρτηση δεν μπορεί να επιστρέφει τιμές τύπου πίνακα. Στο επόμενο παράδειγμα χρησιμοποιούνται δύο συναρτήσεις. Η μία συνάρτηση (instoixeia) διαβάζει και αποθηκεύει τα στοιχεία μίας δομής. Επειδή η συνάρτηση καλείται από το κυρίως πρόγραμμα, όπου μεταβιβάζονται και τα εισαγόμενα στοιχεία, η τυπική παράμετρος της συνάρτησης είναι διεύθυνση προς δομή (reference to structure) και επομένως η κλήση είναι δια αναφοράς. Η άλλη συνάρτηση (printstoixeia) εμφανίζει τα στοιχεία της δομής στην οθόνη και η μεταβίβαση γίνεται δια τιμής. 18

Παράδειγμα struct dstudent // ds06 char lastname[40]; int testscore; int programmingscore; double mesos; }; void instoixeia(dstudent& fstud) int score; cout<<"dose eponymo"; cin >> fstud.lastname; cout<<"dose tous dio vathmous"; cin >> fstud.testscore >> fstud.programmingscore; fstud.mesos = (fstud.testscore + fstud.programmingscore) / 2.0; } void printstoixeia(dstudent fstud) cout<< fstud.lastname<< " " << fstud.testscore << " " << fstud.programmingscore << " " << fstud.mesos << endl; } int main() dstudent stud1,stud2; instoixeia(stud1); instoixeia(stud2); printstoixeia(stud1); printstoixeia(stud2); system("pause"); return 0; } 19

Συναρτήσεις που επιστρέφουν δομές Μία συνάρτηση μπορεί να έχει σαν επιστρεφόμενο τύπο μία δομή. Στην περίπτωση αυτή η συνάρτηση δηλώνεται ότι επιστρέφει δομή. Το αμέσως προηγούμενο παράδειγμα μπορεί, αντί της συνάρτησης instoixeia που είναι τύπου void να κάνει χρήση μίας συνάρτησης που επιστρέφει στο κυρίως πρόγραμμα μία δομή. H συνάρτηση ReadStoixeia που επιστρέφει μία δομή δεν δέχεται καμία παράμετρο και όταν καλείται στο κυρίως πρόγραμμα η τιμή που επιστρέφει εκχωρείται σε μεταβλητή τύπου δομής. Η συνάρτηση κάνει χρήση μίας τοπικής μεταβλητής τύπου δομής για να αποθηκεύσει το στοιχεία και η εντολή return επιστρέφει τα στοιχεία στο κυρίως πρόγραμμα. 20

Παραδείγματα συναρτήσεων που επιστρέφουν δομές Παράδειγμα 1 Παράδειγμα 2 //DS 07 eisodos me sinartisi #include <iostream> using namespace std; struct dstudent char lastname[40]; int testscore; int programmingscore; double mesos; }; //sinartisi pou epistrefei domi dstudent ReadStoixeia ( ) dstudent fstud; cout<<"dose eponymo"; cin >> fstud.lastname; cout<<"dose tous dio vathmous"; cin >> fstud.testscore >> fstud.programmingscore; fstud.mesos = (fstud.testscore + fstud.programmingscore) / 2.0; return fstud; } void printstoixeia(dstudent fstud) cout << fstud.lastname << " " << fstud.testscore << " " << fstud.programmingscore << " " << fstud.mesos << endl; } int main() dstudent stud1,stud2; stud1= ReadStoixeia ( ); stud2= ReadStoixeia ( ); printstoixeia(stud1); printstoixeia(stud2); system("pause"); return 0; } 21

Τέλος Ενότητας