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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

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

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

Η βασική συνάρτηση προγράμματος main()

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

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

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

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

Η γλώσσα προγραμματισμού C

Προγραμματισμό για ΗΜΥ

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12)

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

Συναρτήσεις. Εισαγωγή

Ηβασικήσυνάρτηση προγράμματος main()

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

Η γλώσσα προγραμματισμού C

Η γλώσσα προγραμματισμού C

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

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

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

Κεφάλαιο , 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

Ενδεικτική περιγραφή μαθήματος

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

12. Συναρτήσεις (Μέρος ΙI)

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

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

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

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8

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

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης

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

Η γλώσσα προγραμματισμού C

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

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

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

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

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β

ΣΧΕΔΙΑΣΗ ΚΑΙ ΥΛΟΠΟΙΗΣΗ ΛΟΓΙΣΜΙΚΟΥ

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

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

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

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C

ΣΥΝΑΡΤΗΣΕΙΣ (Functions)

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

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

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

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

Βασικές Αρχές Προγραμματισμού

Απλά Προγράμματα. Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων

Κεφάλαιο ΙV: Δείκτες και πίνακες. 4.1 Δείκτες.

Προγραμματισμό για ΗΜΥ

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

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

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

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

Εισαγωγή στις Συναρτήσεις

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

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

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

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

7. ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΣΥΝΑΡΤΗΣΕΙΣ

Βήματα: μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων. Δομές Δεδομένων + Αλγόριθμοι = Προγράμματα

Κεφάλαιο 3.1, : Συναρτήσεις I. (Διάλεξη 11)

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

Εισαγωγή στο Bison. Μεταγλωττιστές, Χειμερινό εξάμηνο

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

Προγραμματισμός Η/Υ. Ενότητα 7: Συναρτήσεις

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών

Transcript:

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

Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 2 Ορισμός & Χρήση Συναρτήσεων #include <stdio.h> int SquareIt(int a) { int result; result = a*a; return result; } Παράμετρος Συνάρτησης Ορισμός Συνάρτησης Σώμα Συνάρτησης Τιμή Συνάρτησης Επιστρεφόμενη τιμή Συνάρτησης void main() { int num, square; printf( Enter a number: ); scanf( %d, &num ); square = SquareIt( num ); printf( The square of %d is: %d, num,square); } Όρισμα Συνάρτησης Κλήση Συνάρτησης

Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 3 Πίνακες ως ορίσματα συναρτήσεων Εάν κατά την κλήση μίας συνάρτησης το όρισμα είναι όνομα πίνακα, δεν αποστέλλει στη συνάρτηση ολόκληρο τον πίνακα αλλά τη διεύθυνση του πρώτου byte του πίνακα. Η παράμετρος στη δήλωση της συνάρτησης είναι ένα όνομα τοπικού πίνακα (π.χ. number). Κρατά ένα αντίγραφο της ίδιας διεύθυνσης αλλά χρησιμοποιεί διαφορετικό όνομα. Επιπρόσθετα, στη δήλωση δεν αναφέρεται το ακριβές μέγεθός του αλλά μόνο το γεγονός ότι είναι πίνακας καθώς και ο τύπος στοιχείων του. Επομένως ουσιαστικά γνωστοποιείται στο μεταγλωττιστή η διεύθυνση του πρώτου byte και η απόσταση (αριθμός bytes) μεταξύ των στοιχείων:

Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 4 Παράδειγμα με όρισμα πίνακα #include <stdio.h> display( int num[ ] ) { int i; for (i=0; i<=9; i++) printf( %d,num[i] ); } void main() { int table[10], i; for (i=0; i<=9; i++) table[i]=i; display( table ); }

Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 5 Νέο Πρόγραμμα Δημιουργήστε ένα νέο project με τίτλο function3

Άσκηση Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 6 Ορίστε μια συνάρτηση με 2 ορίσματα: ένα πίνακα και ένα αριθμό που πρόκειται να αναζητηθεί στον πίνακα. Η συνάρτηση επιστρέφει 1 αν ο αριθμός βρεθεί στον πίνακα και 0 αν δεν βρεθεί. Χρησιμοποιήστε τη συνάρτηση σε συνδυασμό με τον αριθμό που εισάγει ο χρήστης και τυπώστε FOUND ή NOT FOUND αν βρεθεί ή όχι ο αριθμός στον πίνακα

Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 7 Νέο Πρόγραμμα Δημιουργήστε ένα νέο project με τίτλο function4

Άσκηση Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 8 Γράψτε ένα πρόγραμμα που θα τυπώνει 5 τυχαίους αριθμούς από το 1 έως το 45 και 1 τυχαίο αριθμό από το 1 έως το 20. Χρησιμοποιήστε τη συνάρτηση rand και τον τελεστή % για να δημιουργήσετε τυχαίες τιμές int r; srand(time()); r = 1 + (rand() % 45);

Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 9 Νέο Πρόγραμμα Δημιουργήστε ένα νέο project με τίτλο function5

Άσκηση Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 10 Ορίστε ένα πίνακα 3 θέσεων, και εισάγετε πραγματικούς αριθμούς από το πληκτρολόγιο Γράψτε μία συνάρτηση που να υπολογίζει το άθροισμα των 3 αριθμών και να επιστρέφει αυτή τη τιμή. Χρησιμοποιήστε μία συνάρτηση με όρισμα ένα πίνακα πραγματικών (που θα περιέχει τους αριθμούς)

Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 11 Τοπικές Μεταβλητές Στο σώμα μίας συνάρτησης μπορούμε να ορίσουμε μεταβλητές Οι μεταβλητές αυτές έχουν περίοδο ζωής όσο διαρκεί η λειτουργία της συνάρτησης Οι μεταβλητές αυτές έχουν εμβέλεια και δικαίωμα χρήσης μόνο στο σώμα της συγκεκριμένης συνάρτησης που ορίζονται Είναι γενικά κακό προγραμματιστικό στυλ να χρησιμοποιούμε το ίδιο όνομα για μία τοπική μεταβλητή (local variable) και μία καθολική (global variable)

Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 12 Εμβέλεια Μεταβλητών int num; void main() { int square; printf( Enter a number: ); scanf( %d, &num ); square = SquareIt( num ); Ολική εμβέλεια Global Variable μεταβλητή num Τοπική εμβέλεια Local Variable μεταβλητή square } printf( The square of %d is: %d, num, square); int SquareIt( int a ) { int result; result = a*a; return result; } Τοπική εμβέλεια Local Variable μεταβλητή square

Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 13 Διάρκεια μεταβλητών Η διάρκεια ορίζει το χρόνο κατά τον οποίο το όνομα της μεταβλητής είναι συνδεδεμένο με τη θέση μνήμης που περιέχει την τιμή της μεταβλητής. Ορίζονται ως χρόνοι δέσμευσης και αποδέσμευσης οι χρόνοι που το όνομα συνδέεται με τη μνήμη και αποσυνδέεται από αυτή, αντίστοιχα. Καθολικές Μεταβλητές δεσμεύεται χώρος με την έναρξη εκτέλεσης του προγράμματος και η μεταβλητή συσχετίζεται με την ίδια θέση μνήμης έως το τέλος του προγράμματος. Είναι πλήρους διάρκειας. Τοπικές Μεταβλητές Η ανάθεση της μνήμης σε τοπική μεταβλητή γίνεται με τη είσοδο στο χώρο εμβέλειάς της και η αποδέσμευσή της με την έξοδο από αυτόν. Δηλαδή η τοπική μεταβλητή δε διατηρεί την τιμή της από τη μία κλήση της συνάρτησης στην επόμενη. Είναι περιορισμένης διάρκειας

Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 14 Νέο Πρόγραμμα Δημιουργήστε ένα νέο project με τίτλο function6

Άσκηση Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 15 Γράψτε μία συνάρτηση που να υπολογίζει το άθροισμα 3 αριθμών. Καλέστε τη συνάρτηση σας 3 φορές για τις παρακάτω τριάδες αριθμών 10 20 30 40 50 60 70 80 90 υπολογίστε το γενικό άθροισμα και των 9 αριθμών με χρήση καθολικής μεταβλητής

Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 16 Πρωτότυπα Συναρτήσεων (Function Prototypes) Επιστρεφόμενος-τύπος όνομα-συνάρτησης (λίστα-τύπων-παραμέτρων); Δηλώσεις των συναρτήσεων στην αρχή του αρχείου Χρειάζεται οπωσδήποτε αν χρησιμοποιούμε τη συνάρτηση πριν τον ορισμό της Πλεονεκτήματα Ελέγχουμε την ορθή χρήση των συναρτήσεων Μπορούμε να δούμε ποιες είναι οι συναρτήσεις που έχουν υλοποιηθεί στο πρόγραμμα Μπορούμε να καλέσουμε όλες τις συναρτήσεις που έχουν υλοποιηθεί στο πρόγραμμα χωρίς να μας ενδιαφέρει η σειρά που έχουν γραφτεί

Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 17 #include <stdio.h> int maximum( int, int, int); int main() { int a, b, c; int max; a=10; b=20; c=30; max = maximum(a,b,c); printf("maximum is %d\n",max); return 0; } int maximum(int x, int y, int z) { int max=x; if (y>max) max=y; if(z>max) max=z; return max; }

Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 18 #include <stdio.h> int maximum(int x, int y, int z) { int max=x; if (y>max) max=y; if(z>max) max=z; return max; } int main() { int a, b, c; int max; a=10; b=20; c=30; max = maximum(a,b,c); printf("maximum is %d\n",max); return 0; }

Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 19 Αρχεία Κεφαλίδων ομαδοποίηση συναρτήσεων σε αρχεία κεφαλίδων Χρήση των αρχείων κεφαλίδων του χρήστη, όπως και αυτών τους συστήματος αλλά με " " και όχι < > π.χ. #include "mymath.h"

Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 20 Νέο Πρόγραμμα Δημιουργήστε ένα νέο project με τίτλο header1

Άσκηση Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 21 Στο προηγούμενο παράδειγμα, δημιουργήστε ένα πρότυπο συνάρτησης για την maximum() Δημιουργήστε το αρχείο κεφαλίδας myheader.h και ορίστε εκεί τη συνάρτηση maximum() Καλέστε την στο πρόγραμμα σας χρησιμοποιώντας κατάλληλη πρόταση include

Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 22 Static Μεταβλητές Όλες οι μεταβλητές είναι αυτόματα δηλωμένες σαν automatic όταν η εμβέλεια τους περάσει τότε ο χώρος μνήμης που καταλαμβάνουν γίνεται διαθέσιμος για άλλες μεταβλητές που θα χρειαστούν κατά την εκτέλεση του προγράμματος.

Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 23 Static Μεταβλητές Συνεπώς όταν μια συνάρτηση χρησιμοποιεί για παράδειγμα κάποια τοπική μεταβλητή k, και αυτή η μεταβλητή λαμβάνει κάποια τιμή μέσα στη συνάρτηση π.χ. 5 τότε με το τελείωμα της συνάρτησης η εμβέλεια της μεταβλητής k λήγει. Εάν η συνάρτηση κληθεί ξανά δεν μπορούμε να είμαστε σίγουροι ότι η τιμή της μεταβλητής k θα είναι ίση με 5 κατά την αρχή της εκτέλεσης της νέας κλήσης της συνάρτησης. Εάν για κάποιο λόγο χρειάζεται να κρατάμε τη τιμή μιας «τοπικής» μεταβλητής ανάμεσα σε διαδοχικές κλήσεις τότε τη δηλώνουμε σαν static.

Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 24 Νέο Πρόγραμμα Δημιουργήστε ένα νέο project με τίτλο static

Άσκηση Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 25 Τι πρέπει να αλλάξετε στον κώδικα που σας δόθηκε, ώστε να τυπωθεί το μήνυμα στην οθόνη μόνο μία φορά

Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 26 Δομές Δεδομένων Μέχρι τώρα έχουμε δει μεταβλητές που ο τύπος τους είναι ένας από τους βασικούς τύπους που υποστηρίζει η C (π.χ. ιnt, char, float κλπ.) Μια σχετική εξαίρεση ήταν οι Πίνακες που μπορούμε να αποθηκεύσουμε δεδομένα (ενός συγκεκριμένου τύπου) σε μια ακολουθιακή μορφή Δομή Structure νέα μορφή μεταβλητής Επιτρέπει να αποθηκευτούν δεδομένα διαφορετικών τύπων που έχουν κάποια «λογική» σχέση μεταξύ τους Είναι πιο δομημένη από την απλή ακολουθιακή μορφή Πινάκων

Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Παράδειγμα

Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 28 Παράδειγμα Δήλωση Δομής: Παραδείγματα:

Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 29 Παράδειγμα struct { int number; int sex; char name[10]; char address[40]; int age; } person1; Διαφορετικές εμβέλειες struct { int number; int name[10]; int yearsofemployment; } employee1;

Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 30 Αρχικές τιμές σε Δομές Όπως και στους πίνακες, έτσι και μία δομή μπορεί να πάρει αρχικές τιμές κατά τη δήλωση της π.χ. struct { int number; int sex; char name[11]; } person1 = {154, 1, John Smith }, person2 = {180, 2, Mary Jones }; 154 1 John Smith

Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 31 Λειτουργίες σε Δομές Όπως και στους πίνακες, έτσι και στις δομές, η πιο κοινή λειτουργία είναι να βρούμε κάποιο στοιχείο της π.χ. printf( The name of person %d is %s, person1.number, person1.name); Δομή (μεταβλητή) Τελεστής Πρόσβασης Μέλος της Δομής

Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 32 Παράδειγμα scanf( %d, &pesron1.number); Διαβάζουμε το μέλος number person1 = person2; Αποθέτουμε τις τιμές των μελών της person2, στην person1 Σημείωση: Αυτό δεν ήταν εφικτό στους πίνακες

Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 33 Δήλωση Τύπου Δομής Θα θέλαμε να έχουμε την ευχέρεια να δηλώσουμε τον δικό μας τύπο και απλά να χρησιμοποιούμε το όνομά του όπως θα χρησιμοποιούσαμε int, float, κλπ Αυτό επιτυγχάνεται με την εντολή typedef

Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr Ένα πρότυπο δομής μπορεί να δηλωθεί εναλλακτικά με χρήση του προσδιοριστικού typedef Σε αυτή την περίπτωση το όνομα του προτύπου εισάγεται μετά το δεξί άγκιστρο, π.χ. Αν το πρότυπο μίας δομής έχει δηλωθεί με χρήση της εντολής typedef, τότε δεν προσθέτουμε τη λέξη struct πριν από τη δήλωση μίας δομής Δηλ. αν είχαμε δηλώσει την παραπάνω δομή (book), θα μπορούσαμε να δηλώσουμε τις μεταβλητές book_1 και book_2 ως εξής:

Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 35 Νέο Πρόγραμμα Δημιουργήστε ένα νέο project με τίτλο struct1

Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 36 Άσκηση Στον κώδικα που σας δίνεται, ορίστε μία μεταβλητή person, τύπου δομής με τρία πεδία: id : κωδικός name : όνομα age : ηλικία Αρχικοποιήστε την κατά την δήλωση της (με χρήση των { }) με τα στοιχεία σας και τον κωδικό 10 και τυπώστε την στη οθόνη

Άσκηση Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 37 Στο προηγούμενο παράδειγμα ορίστε ένα νέο τύπο δεδομένων (με typedef) για την δομή σας με όνομα customer. Χρησιμοποιήστε τον τύπο customer, για να αρχικοποιήσετε 2 μεταβλητές person1 και person2 και τυπώστε τις μεταβλητές. Καταχωρήστε τις τιμές της person2 στην person1 και τυπώστε την person1

Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων www.bpis.teicrete.gr 38 Πίνακες Δομών Προφανώς μπορούμε να έχουμε διανύσματα που τα στοιχεία τους είναι δομές!! Π.χ. typedef struct { char firstname[10]; char lastname[10]; } persontype; persontype adatabase[100]; Διάνυσμα 100 Δομών Τύπου PersonType Οπότε μπορούμε να γράψουμε adatabase[30].firstname[0] = \0 /* Άδεια συμβολοσειρά */