Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Δομές.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Δομές."— Μεταγράφημα παρουσίασης:

1 Δομές

2 Απλές Δομές Δομή: ομάδα μιας ή περισσότερων μεταβλητών Έχει ένα όνομα
Μπορεί να έχει μεταβλητές διαφορετικών τύπων

3 Ορισμός Δομής Δήλωση μεταβλητών: struct coord { int x; int y; };
}first, second;

4 Δήλωση μεταβλητών (συνέχεια)
struct coord { int x; int y; }; /*Πρόσθετος κώδικας*/ struct coord first, second;

5 Απόδοση τιμών struct coord first, second; first.x = 50; first.y = 100; second = first; /* Τα first και second είναι στιγμιότυπα (instances) της δομής coord. Το coord είναι το πρότυπο */

6 Παραδείγματα struct date { char day[2]; char month[2]; char year[4]; } current_date; struct time { int hours; int minutes; int seconds; } birth_time = {3, 50, 12};

7 Πιο Πολύπλοκες Δομές struct rectangle { struct coord topleft; struct coord bottomright; } mybox; mybox.topleft.x = 0; mybox.topleft.y = 10; mybox.bottomright.x = 100; mybox.bottomright.y = 200;

8 Άσκηση Σχεδιάστε και υλοποιήστε ένα πρόγραμμα σε C το οποίο να διαβάζει από το πληκτρολόγιο τις δύο αντιδιαμετρικές κορυφές ενός ορθογωνίου, να υπολογίζει και να εμφανίζει στην οθόνη το εμβαδόν του.

9 Δομή με στοιχεία πίνακες
struct data { int x[4]; char y[10]; } record; record.x record.y[8] record

10 Άσκηση Σχεδιάστε και υλοποιήστε ένα πρόγραμμα σε C το οποίο να διαβάζει από το πληκτρολόγιο το όνομα, το επώνυμο και τον αριθμό μητρώου, να τα αποθηκεύει σε μια δομή και στη συνέχεια να τα εμφανίζει στην οθόνη

11 Πίνακας με στοιχεία δομές
struct entry { char first_name[10]; char surname[20]; char phone[15]; } record; struct entry list[1000]; list1[1] = list[5]; strcpy(list[1].phone, list[5].phone); list[1].phone[1] = list[5].phone[3];

12 Παράδειγμα (1/2) /* Demonstrates using arrays of structures. */ #include <stdio.h> /* Define a structure to hold entries. */ struct entry { char fname[20]; char lname[20]; char phone[10]; }; /* Declare an array of structures. */ struct entry list[4]; int i;

13 Παράδειγμα (2/2) main() { /* Loop to input data for four people. */ for (i = 0; i < 4; i++) { printf("\nEnter first name: "); scanf("%s", list[i].fname); printf("Enter last name: "); scanf("%s", list[i].lname); printf("Enter phone in format: "); scanf("%s", list[i].phone); } /* Print two blank lines. */ printf("\n\n"); /* Loop to display data. */ printf("Name: %s %s", list[i].fname, list[i].lname); printf("\t\tPhone: %s\n", list[i].phone);

14 Άσκηση Σχεδιάστε και υλοποιήστε μια συνάρτηση σε C το οποίο να διαβάζει τον προηγούμενο πίνακα και να αλλάζει το πρόθεμα του τηλεφώνου από 0* σε 2*

15 Προσοχή Μη ξεχνάτε το όνομα στιγμιοτύπου και τον τελεστή μέλους (.)
Μη ξεχνάτε το όνομα στιγμιοτύπου και τον τελεστή μέλους (.) Μη μπερδεύετε την ετικέτα μιας δομής με τα στιγμιότυπά της Μη ξεχνάτε τη λέξη κλειδί struct όταν δηλώνετε ένα στιγμιότυπο από μια δομή που έχει οριστεί προηγουμένως

16 Αρχικοποίηση δομών struct entry { char first_name[10]; char surname[20]; int amount; } record = { "Jorge", "Gonzales", 1000 };

17 Ασκήσεις Ορίστε μια δομή που να περιλαμβάνει τα προσωπικά στοιχεία ενός ατόμου Ορίστε δομές που να χρησιμοποιούν τη προηγούμενη δομή και να ορίζουν δύο νέες δομές: αυτή του πελάτη και αυτή του υπαλλήλου. Η δομή του πελάτη έχει επιπλέον πεδίο που αντιστοιχεί σε όριο συναλλαγών και του υπαλλήλου αριθμό μητρώου

18 Δομές ως ορίσματα συναρτήσεων
struct entry { char first_name[10]; char surname[20]; int amount; } my_entry; void print_entry(struct entry x); /* … και η κλήση … */ print_entry(my_entry);

19 Ορισμός Δομής με χρήση typedef
typedef struct { int x; int y; } coord; Δήλωση μεταβλητών: coord topleft, bottomright;

20 Ενώσεις union data { int x; char ch1; } record; union data data1 =

21 Παράδειγμα (1/3) /* Example of a typical use of a union */ #include <stdio.h> #define CHARACTER `C' #define INTEGER `I' #define FLOAT `F' struct generic_tag{ char type; union shared_tag { char c; int i; float f; } shared; }; void print_function( struct generic_tag generic );

22 Παράδειγμα (2/3) main(){ struct generic_tag var; var.type = CHARACTER; var.shared.c = `$'; print_function( var ); var.type = FLOAT; var.shared.f = (float) ; var.type = `x'; var.shared.i = 111; return 0; }

23 Παράδειγμα (3/3) void print_function(struct generic_tag generic){ printf("\n\nThe generic value is..."); switch(generic.type) { case CHARACTER: printf("%c", generic.shared.c); break; case INTEGER: printf("%d", generic.shared.i); case FLOAT: printf("%f", generic.shared.f); default: printf("an unknown type: %c\n", generic.type); }


Κατέβασμα ppt "Δομές."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google