Διδάσκων: Παναγιώτης Ανδρέου

Σχετικά έγγραφα
οµές (structures) και Eνώσεις (unions)

Προγραμματισμός Η/Υ. Ενότητα 9: Ειδικά θέματα Δομών Δεδομένων

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 8: Δομές, Ενώσεις και Απαριθμητοί Τύποι

Διάλεξη 2: Επανάληψη Προγραμματισμού Συμβολοσειρές (strings) Διδάσκων: Παναγιώτης Ανδρέου

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

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Προγραμματισμός Δομές Δεδομένων

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 10 Ο. Δομές Ενώσεις Απαριθμητοί τύποι δεδομένων ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 19η: Δομές δεδομένων

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

Διδάσκων: Παναγιώτης Ανδρέου

Ανάπτυξη και Σχεδίαση Λογισμικού

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

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

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19)

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

ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ

Προγραμματισμός Ι. Δομές & Ενώσεις. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών

οµές (structures) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Πίνακες δοµών, δείκτες σε δοµές, και αυτοαναφορικές δοµές.

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος

Εισαγωγή στον Προγραμματισμό (με. τη C)

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

Ανάπτυξη και Σχεδίαση Λογισμικού

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

Εργαστήριο 1: Επανάληψη Βασικών Εννοιών στη Γλώσσα C

Στόχοι και αντικείμενο ενότητας. Τύπος πίνακα. Τύπος πίνακα (συν.) #6. Πίνακες και Δείκτες

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Μεθόδων Επίλυσης Προβλημάτων

Η γλώσσα C. Νέοι και σύνθετοι τύποι (typedef & structs & unions)

Διάλεξη 5: Δείκτες και Συναρτήσεις

Η γλώσσα C. Νέοι και σύνθετοι τύποι (typedef & structs & unions)

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού

Κεφάλαιο V: Δομές και ενώσεις. 5.1 Δομές.

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

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

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

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

ΗΥ-150. Προγραμματισμός

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

Διάλεξη 26: Σωροί. Διδάσκων: Παναγιώτης Ανδρέου

Εργαστήριο 4: Υλοποίηση Αφηρημένου Τύπου Δεδομένων: Ταξινομημένη Λίστα

Διάλεξη 11: Φροντιστήριο για Στοίβες. Διδάσκων: Παναγιώτης Ανδρέου. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.

Προγραμματισμός Ι (ΗΥ120)

5. ΣΥΝΑΡΤΗΣΕΙΣ. (Πρόχειρο σχέδιο - Μαθήµατος 3) p Συναρτήσεις, που δεν επιστρέφουν κάποια τιµή

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες ( ιάλεξη 18) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

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

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

Οι δείκτες στη γλώσσα C

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Ορισμός μεταβλητών δεικτών και αρχικοποίηση

Δομές δεδομένων (2) Αλγόριθμοι

Εργαστήριο 8: Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ

ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Εργαστήριο 9: Αρχεία

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δείκτες και Συναρτήσεις (Κεφάλαιο 11, KNK-2ED)

Πανεπιστήµιο Θεσσαλίας, THMMY HY120, Σεπτέµβριος 2015 ΟΝΟΜΑΤΕΠΩΝΥΜΟ:

Κεφάλαιο Αλφαριθµητικές Σειρές Χαρακτήρων (Strings)

ΗΥ-150. Προγραμματισμός

Προγραμματισμός Ι (ΗΥ120)

Διάλεξη 17: Επανάληψη για την ενδιάμεση εξέταση. Διδάσκων: Παναγιώτης Ανδρέου. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ.

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

Προγραμματισμός ΙI (Θ)

Διδάσκων: Παναγιώτης Ανδρέου

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

Διδάσκων: Παναγιώτης Ανδρέου

Μεθόδων Επίλυσης Προβλημάτων

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος

Προγραμματισμός Ι (ΗΥ120)

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

Κεφάλαιο 2.5: Τύποι εδοµένων, Τελεστές και Αριθµητικές Εκφράσεις. ( ιαλέξεις 5-6) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

Δομές Δεδομένων Εισαγωγή παράγωγους τύπους δομών δεδομένων Ορισμός και συζήτηση της έννοιας μέλη ετικέτα Τρόπος δήλωσης και ορισμού

5 &6. Τύποι δεδομένων, τελεστές και

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting)

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

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

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

ΦΥΛΛΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ 1

Διάλεξη 22: Δυαδικά Δέντρα. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος

Στόχοι και αντικείμενο ενότητας. Βασικές κατασκευές ΓΠ. Έλεγχος ροής προγράμματος. #4.. Εντολές Επιλογής

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 3 Ο. Σταθερές-Παράμετροι-Μεταβλητές Αριθμητικοί & Λογικοί Τελεστές Δομή ελέγχου-επιλογής Σύνθετοι έλεγχοι

Κεφάλαιο 2.5: Τύποι Δεδομένων, Τελεστές και Αριθμητικές Εκφράσεις. (Διαλέξεις 5-6)

Transcript:

Διάλεξη 5: Απαριθμητές (enums) Δομές (structures)και Ενώσεις (unions) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Απαριθμητές - Δομές, φωλιασμένες δομές, τρόποι δήλωσης δομών - Δομές ως παράμετροι σε συναρτήσεις, δείκτες σε δομές - Αυτό-αναφορικές δομές, χρήση ενώσεων Διδάσκων: Παναγιώτης Ανδρέου ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 1

Απαριθμητές <enum> Συχνά, χρειάζεται να δηλώσουμε και να χρησιμοποιήσουμε κάποιες απλές ακέραιες μεταβλητές για να επιβάλουμε ένα συγκεκριμένο πεδίο τιμών σε κάποιες μεταβλητές Παράδειγμα: τα χρώματα κάποιου αυτοκίνητου constintcred= 0; constintcblue= 1; int auto_colour; auto_colour = cblue; Ερώτηση: Είναι λάθος η δήλωση auto_colour = -13; Απάντηση: ΌΧΙ αφού η μεταβλητή auto_colour είναι ακέραιος. Λογικό Λάθος: Δεν υπάρχει χρώμα με τον αριθμό -13. Οι απαριθμητές μπορούν να εξαλείψουν αυτό το πρόβλημα. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 2

Απαριθμητές <enum> (συν.) Ορισμός Απαριθμητή <enum>: Ένα σύνολο από σταθερές ακέραιες μεταβλητές. Δηλώνεται με enum{ var 1, var 2,, var n } Παράδειγμα: enum Color { cred, cblue, cyellow, cgreen, csilvergrey}; Η δήλωση της μεταβλητής intauto_colour;αλλάζει τώρα σε Color auto_colour; Ερώτηση: Είναι λάθος η δήλωση auto_colour = -13; Απάντηση: ΝΑΙ αφού η μεταβλητή auto_colour δεν είναι πλεόν ακέραιος αλλά τύπου Color. Πλεονεκτήματα Απαριθμητών: Γρηγορότερη δήλωση σταθερών μεταβλητών/ Πιο αποτελεσματική συντήρηση Περιορισμός του πεδίου τιμών κάποιων μεταβλητών Αυτόματος Έλεγχος ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 3

Δομές (structs) Ορισμός Δομής (struct): Δομή είναι ένα σύνολο από άλλες μεταβλητές απλές (int, char, κτλ.) ή/και σύνθετες (structs, unions, κτ.λ.) Δηλώνεται με struct <όνομα δομής> { δηλώσεις πεδίων } ; Παράδειγμα: struct address{ }; char street[50]; int number; Η λέξη structεισάγει τη δήλωση μιας δομής. Οι μεταβλητές που κατονομάζονται μέσα στη δομή ονομάζονται μέληή πεδία. Μια δήλωσηstructορίζει ένα τύπο. Για να δηλώσουμε μεταβλητές ή πίνακες τύπου δομής γράφουμε: struct address x; //μία μεταβλητή τύπου <address> struct address friends_addresses[10]; //ένας πίνακες με μεταβλητές τύπου <address> ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 4

Δομές (structs)(συν.) Αρχικοποίησημιας μεταβλητής ή πίνακα τύπου δομής γίνεται αποδίδοντας τιμές στα μέλη ως εξής: struct Person p1 = { Aνδρέας, Ανδρέου, M, 43}; struct Person people[] = { { Χρίστος, Ανδρέου, M, 43}, { Μαρία, Γεωργίου, F, 38}, { Χρίστος, Χαραλάμπους, Μ, 14} }; Αναφορά σε μέλος μιας δομής γίνεται μέσω της κατασκευής: <όνομα δομής>.μέλος Εναλλακτική αρχικοποίηση struct Person p1 struct Person p1; strcpy(p1.firstname, "Aνδρέας"); strcpy(p1.lastname, "Ανδρέου"); p1.gender = 'M'; p1.age = 43; Παράδειγμα Δομής Person struct Person { char firstname[15]; char lastname[15]; char gender; int age; }; ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 5

Δημιουργία Τύπων με typedef Για να αποφεύγετε η συνεχής χρήση του «structstructname», μπορούμε να χρησιμοποιήσουμε την typedefη οποία δημιουργεί/καθορίζει ένα καινούριο τύπο. H Cδιαθέτει την typedefγια δημιουργία νέων ονομάτων τύπων δεδομένων, π.χ., typedef unsigned short int uint16; Έτσι αποφεύγουμε να γράφουμε κάθε φορά «unsigned short int» και δηλώνουμε απλά uint16 X,Y; Παρόμοια, typedef char *String; Τέλος, μπορεί να χρησιμοποιηθεί για να δώσει ονόματα σε δομές: Παράδειγμα με struct struct Person { char firstname[15]; char lastname[15]; char gender; int age; }; struct Person p1; p1.age=43; Παράδειγμα με typedef typedef struct { char firstname[15]; char lastname[15]; char gender; int age; } Person; Person p1; p1.age=43; ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 6

Φωλιασμένες Δομές Δομές μπορεί να είναι αλληλένδετες, δηλαδή να φωλιάζονταιη μια μέσα στην άλλη, δημιουργώντας πιο πολύπλοκες δομές: Παράδειγμα: Στοιχεία Φοιτητή Όνομα Ταυτότητα Διεύθυνση Οδός Αριθμός Επαρχία Δομής Φοιτητή με struct struct address{ char street[50]; int number; }; struct student{ char name[30]; int id; struct address saddress; }; Δομής Φοιτητή με typedef typedef struct { char street[50]; int number; } address; typedef struct { char name[30]; int id; address saddress; } student; student s1; s1.id=123456; strcpy(s1.name, "Aνδρέας"); s1.saddress.number = 14; ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 7

Δομές και Συναρτήσεις Επιτρεπτές πράξεις σε μια δομή είναι: η αντιγραφήτης, η ανάθεσητιμής σ αυτήν (σαν σύνολο), η εξαγωγή της διεύθυνσής της, και η προσπέλαση των στοιχείων της. Μεταβλητές τύπου δομής μπορούν να περαστούν ως ορίσματα σε συναρτήσεις όπως επίσης και να επιστραφούν ως αποτελέσματα συναρτήσεων. Παράδειγμα: Person inc_age (Person x){ x.age += 1; return x; } Person x1, x2; x2 = inc_age(x1); Πέρασμα δια τιμής (το x αντιγράφετε μέσα στην συνάρτηση) ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 8

Δομές και Συναρτήσεις(συν.) Δομές δεν μπορούν να συγκριθούν: π.χ. η έκφραση x1 == x2δεν είναι έγκυρη. Αν θέλουμε να συγκρίνουμε δυο δομές πρέπει η σύγκριση να γίνει βάση των πεδίων αυτών των δομών π.χ. x1.age == x2.age Εξάσκηση (στο σπίτι): Να γράψετε συνάρτηση η οποία παίρνει δύο παραμέτρους τύπου Person και επιστρέφει την ηλικία του μεγαλύτερου ατόμου. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 9

Δομές και Δείκτες Μπορούμε επίσης να χρησιμοποιήσουμε δείκτες σε δομές. Για παράδειγμα η δήλωση Person *pp, p; δηλώνει ότι η μεταβλητή ppείναι δείκτης προς μια δομή τύπου Person. Έτσι μπορούμε να γράψουμε pp = &p; printf( %d, (*pp).age); óπου *ppείναι η δομή που δείχνεται από τον δείκτη, ενώ (*pp).firstname είναι το πρώτο πεδίο της δομής. ΠΡΟΣΟΧΗ: η προτεραιότητα του τελεστή μέλους δομής,.,είναι μεγαλύτερη από αυτή του τελεστή έμμεσης αναφοράς, *. Επομένως οι παρενθέσεις στο (*pp).firstnameείναι απαραίτητες. Δηλαδή το *a.age=5 θα δώσει compile error ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 10

Προτεραιότητες (επανάληψη) (). -> (struct)! * / % + < <= >= > ==!= && υψηλότερη = χαμηλότερη ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 11

Δομές και Δείκτες(συν.) Δείκτες για δομές χρησιμοποιούνται τόσο συχνά που παρέχεται ο πιο κάτω εναλλακτικός συμβολισμός ως συντομογραφία: (*p).μέλος_δομής = p->μέλος_δομής Αν μια μεγάλη δομή πρόκειται να μεταβιβαστεί για επεξεργασία σε μια συνάρτηση γενικά είναι αποτελεσματικότερη η μεταβίβαση ενός δείκτη προς τη δομή και όχι η αντιγραφή της. Αυτό μπορεί να γίνει όπως και σε απλούστερες δομές δεδομένων (δηλαδή με το &). void initperson(person *p){ strcpy( p->firstname, "Aνδρέας"); strcpy( p->lastname, "Ανδρέου"); p->gender = 'M'; p->age = 43; } Person p; initperson( &p ); Person *p; //(δέσμευση χώρου για το *p [malloc]) initperson( p ); ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 12

Eνώσεις <unions> Ο τύπος unionχρησιμοποιείται στην Cγια τη δήλωση μεταβλητών που μπορούν να αποθηκεύσουν σε διαφορετικές στιγμές δεδομένα διαφορετικών τύπων και μεγεθών στην ίδια περιοχή μνήμης. Θεωρήστε την περίπτωση που θέλουμε μια σταθερά σε ένα πρόγραμμα να έχει ως τιμή είτε μια ακέραια τιμή (int)είτε μια πραγματική τιμή (float). Θα μπορούσαμε να γράψουμε: struct { } var; int ival; float fval; και να τοποθετούμε τη σταθερά μας σε ένα από τα δύο πεδία της δομής σύμφωνα με την τιμή της. Μειονέκτημα αυτής της λύσης είναι ότι σπαταλά άσκοπα μνήμη: δεσμεύει μνήμη για δύο πεδία ενώ θα χρησιμοποιηθεί μόνο ένα. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 13

Eνώσεις <unions> (συν.) Χρησιμοποιώντας ενώσεις η δήλωση της μεταβλητής μας γίνεται ως εξής: union { } A,B; int ival; double fval; H μνήμη που δεσμεύεται σε αυτή την περίπτωση είναι η μέγιστη που απαιτείται για αποθήκευση ακριβώς μιας μεταβλητής από οποιοδήποτε από τους τύπους των πεδίων (στην πιο πάνω περίπτωση η μνήμη που απαιτείται για αποθήκευση είναι 8 bytes). Η τιμή που ανακτάται κάθε φορά είναι η αυτή που αποθηκεύτηκε πιο πρόσφατα κατά την εκτέλεση. Είναι ευθύνη του προγραμματιστή να παρακολουθεί και να γνωρίζει ποιος τύπος είναι αποθηκευμένος σε μια ένωση. ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 14

Ενώσεις <unions> (συν.) Παράδειγμα: Κάθε άτομο (Person), εκτός από τα πεδία που μελετήσαμε μέχρι τώρα,μπορεί να έχει καταχωρημένη ταυτότητα ή διαβατήριο. typedef struct { char firstname[15]; char lastname[15]; char gender; int age; union { int id; char passport[15]; } identification; } Person; Person p; //Αρχικοποίηση firstname, lastname, gender, age Ερώτηση: Τι θα τυπώσει η ακόλουθη δήλωση σε κάθε βήμα; printf("%d %s\n", p1.identification.id, p1.identification.passport); 1. Μετά την αρχικοποίηση. 2. p1.identification.id=15; 3. strcpy(p1.identification.passport, "E123456"); ΕΠΛ035 Δομές Δεδομένων και Αλγόριθμοι για Ηλ. Μηχ. Και Μηχ. Υπολ. 15