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

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

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

Transcript

1 Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 13 η Δομές & Ενώσεις Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης Χριστοδούλου Δομές (Structures) Δομή (structure) στη C είναι μία συλλογή από μεταβλητές οποιουδήποτε τύπου, οι οποίες σχετίζονται λογικά μεταξύ τους Οι δομές χρησιμοποιούνται για την ομαδοποίηση διαφορετικής πληροφορίας σε έναν κοινό τύπο δεδομένων Π.χ. μία δομή μπορεί να περιέχει πληροφορίες για μία εταιρεία, όπως την επωνυμία της, το έτος ίδρυσης, το Α.Φ.Μ, τη διεύθυνσή της, το αντικείμενο εργασιών της, τον αριθμό των υπαλλήλων της, κτλ

2 Πρότυπο Δομής (Ι) Το πρότυπο μίας δομής καθορίζει τον τύπο και το πλήθος των μεταβλητών που περιέχει μία δομή Μία δομή μπορεί να περιέχει μεταβλητές οποιουδήποτε τύπου, συμπεριλαμβανομένων δεικτών, πινάκων, ακόμα και άλλων δομών Η γενική περίπτωση δήλωσης του προτύπου μίας δομής φαίνεται παρακάτω: Παραδείγματα προτύπων δομών: 3 Πρότυπο Δομής (ΙΙ) Όπως φαίνεται από τα προηγούμενα παραδείγματα, η χρησιμότητα μίας δομής είναι η ομαδοποίηση διαφορετικού είδους πληροφορίας για την περιγραφή μίας οντότητας Το πόσα και ποια πεδία θα περιέχονται σε μία δομή εξαρτάται από τον προγραμματιστή και τους σκοπούς του προγράμματος Αν, για παράδειγμα, το πρόγραμμα απαιτεί να υπάρχει ένα πεδίο που να δηλώνει το βάρος του ανθρώπου και ένα άλλο πεδίο που να δηλώνει τη διεύθυνση κατοικίας του, τότε η δομή person του προηγούμενου παραδείγματος θα έπρεπε π.χ. να έχει την ακόλουθη μορφή: 4 2

3 Παρατηρήσεις Το πρότυπο μίας δομής δεν αποτελεί μεταβλητή, δηλαδή, όταν δηλώνεται το πρότυπο μίας δομής, δεν δεσμεύεται μνήμη για την αποθήκευσή του Συνήθως, το πρότυπο μίας δομής δηλώνεται πριν από τη συνάρτηση main(), ώστε η εμβέλειά του να είναι καθολική, σε όλο το πρόγραμμα Αν το πρότυπο μίας δομής δηλωθεί μέσα στο σώμα μίας συνάρτησης, τότε η εμβέλειά του προφανώς είναι τοπική Σε αυτή την περίπτωση, οι υπόλοιπες συναρτήσεις του προγράμματος αγνοούν την ύπαρξή του και δεν μπορούν να το χρησιμοποιήσουν για να δηλώσουν δομές τέτοιου τύπου 5 Δήλωση Δομής Μία μεταβλητή, της οποίας ο τύπος είναι δομή μπορεί να δηλωθεί με έναν από τους παρακάτω δύο τρόπους Α Τρόπος (θεωρώντας ότι έχει δηλωθεί το πρότυπό της) Γενική μορφή δήλωσης: Π.χ. Β Τρόπος (δήλωση ταυτόχρονα με τη δήλωση του προτύπου της) Π.χ. 6 3

4 Παρατηρήσεις (Ι) Όταν δηλώνεται μία δομή ο μεταγλωττιστής δεσμεύει μνήμη για την αποθήκευσή της Το μέγεθος της μνήμης που δεσμεύεται είναι τουλάχιστον ίσο με το άθροισμα της μνήμης που δεσμεύεται για καθένα από τα πεδία της Συνεπώς, η έξοδος του προγράμματος αναμένεται να είναι και όντως, είναι 12!! 7 Παρατηρήσεις (ΙΙ) Κατά συνέπεια, ποια αναμένεται να είναι η έξοδος του παρακάτω προγράμματος??? Απαντήσατε 13 αλλά εμφανίστηκε... 16??? Don t panic

5 Παρατηρήσεις (ΙΙΙ) Θυμηθείτε ότι το μέγεθος της μνήμης που δεσμεύεται είναι τουλάχιστον ίσο (και όχι απαραίτητα ακριβώς ίσο) με το άθροισμα της μνήμης που δεσμεύεται για καθένα από τα πεδία της Στην πράξη, το μέγεθος της μνήμης που δεσμεύεται για μία δομή εξαρτάται από τον υπολογιστή που εκτελείται το πρόγραμμα και από τους τύπους των πεδίων δεδομένων Συγκεκριμένα, κάθε πεδίο της δομής αποθηκεύεται σε μία θέση μνήμης που η τιμή της πρέπει να είναι πολλαπλάσια του μεγέθους του τύπου του Συνεπώς, για να υπολογίσουμε το μέγεθος της μνήμης που δεσμεύεται για μία μεταβλητή τύπου δομής λαμβάνουμε το ελάχιστο ακέραιο πολλαπλάσιο της βασικής μεταβλητής (π.χ. int, float, char, double, κτλ) που απαιτεί την περισσότερη μνήμη, το οποίο (ακέραιο πολλαπλάσιο) βέβαια - πρέπει να επαρκεί για να καλύψει την απαιτούμενη μνήμη για όλα τα πεδία της δομής (δηλ. να είναι μεγαλύτερο ή ίσο από το ακριβές άθροισμα της μνήμης που θα απαιτούνταν, αν τα πεδία της δομής θεωρούνταν ξεχωριστές και ανεξάρτητες μεταβλητές του προγράμματος) 9 Παραδείγματα Ποια αναμένεται να είναι η έξοδος των παρακάτω προγραμμάτων??? Έξοδος: Size = 24 Έξοδος: Size =

6 Δήλωση Δομής με χρήση της εντολής typedef Ένα πρότυπο δομής μπορεί να δηλωθεί εναλλακτικά με χρήση της εντολής typedef Σε αυτή την περίπτωση το όνομα του προτύπου εισάγεται μετά το δεξί άγκιστρο, π.χ. Αν το πρότυπο μίας δομής έχει δηλωθεί με χρήση της εντολής typedef, τότε δεν χρειάζεται να μπαίνει η λέξη struct πριν από τη δήλωση μίας δομής Δηλ. αν είχαμε δηλώσει την παραπάνω δομή (person), θα μπορούσαμε να δηλώσουμε τις μεταβλητές person_1 και person_2 ως εξής: 11 Παρατηρήσεις (Ι) Οι σύγχρονοι μεταγλωττιστές υποστηρίζουν την παράλειψη της λέξης struct, ακόμα και χωρίς τη χρήση της εντολής typedef στο πρότυπο της δομής Ωστόσο, για λόγους ευαναγνωσιμότητας του προγράμματος, προτείνεται η χρήση της λέξης struct στη δήλωση των μεταβλητών δομών, ώστε να γίνεται σαφές ότι οι συγκεκριμένες μεταβλητές είναι δομές 12 6

7 Παρατηρήσεις (ΙΙ) Στη γενική περίπτωση, με την εντολή typedef μπορούμε να δημιουργήσουμε ένα συνώνυμο για ένα υπάρχοντα τύπο δεδομένων Π.χ. με τη δήλωση: typedef int new_int; δημιουργείται ένας νέος τύπος δεδομένων που ονομάζεται new_int και έχει την ίδια σημασία με τον τύπο int Δηλ. οι δηλώσεις: int i; και new_int i; είναι ισοδύναμες Π.χ. με τη δήλωση: typedef int arr[100]; δημιουργείται ένας νέος τύπος δεδομένων που ονομάζεται arr και είναι ένας πίνακας 100 ακεραίων Δηλ. με τη δήλωση: arr arr1; η μεταβλητή arr1 είναι και αυτή ένας πίνακας 100 ακεραίων 13 Πρόσβαση πεδίων δομής με τον τελεστή τελεία (.) Για να προσπελάσουμε τα πεδία μίας δομής γράφουμε το όνομα της δομής και το όνομα του πεδίου που μας ενδιαφέρει, ενώ ανάμεσά τους βάζουμε τον τελεστή τελεία (.) Το επόμενο πρόγραμμα δηλώνει το πρότυπο μίας δομής με όνομα person, θέτει τιμές στα πεδία της δομής person_1 και τις εμφανίζει στην οθόνη 14 7

8 Παράδειγμα Ποια είναι η έξοδος του παρακάτω προγράμματος??? Έξοδος: Values: somebody Απόδοση αρχικών τιμών στα πεδία μίας δομής Ο πιο συνηθισμένος τρόπος απόδοσης αρχικών τιμών στα πεδία μίας δομής είναι με τη χρήση του τελεστή τελεία (.), όπως παρουσιάστηκε στα προηγούμενα παραδείγματα Ένας εναλλακτικός τρόπος είναι απευθείας, κατά τη δήλωση της δομής (αφού εννοείται έχει δηλωθεί το πρότυπό της) Π.χ. struct person person_1 = {"somebody",30,1.8}; Επίσης, η δήλωση μίας δομής μαζί με τη δήλωση του προτύπου της μπορεί να επεκταθεί για την απόδοση αρχικών τιμών στα πεδία της 16 8

9 Αντιγραφή δομής σε δομή Για την αντιγραφή των τιμών των πεδίων μίας δομής στα αντίστοιχα πεδία μίας άλλης δομής ίδιου τύπου, χρησιμοποιείται ο τελεστής εκχώρησης (ίσον) =. Π.χ. 17 Με την εντολή: Παρατηρήσεις (Ι) spoud2 = spoud1; οι τιμές των πεδίων της δομής spoud1 αντιγράφονται στα αντίστοιχα πεδία της δομής spoud2 Δηλαδή, η παραπάνω εντολή είναι ισοδύναμη με: spoud2.age = spoud1.age; spoud2.grade = spoud1.grade; 18 9

10 Παρατηρήσεις (ΙΙ) Οι τελεστές == και!= δεν μπορούν να χρησιμοποιηθούν για τον έλεγχο της ισότητας δύο δομών Δηλαδή, δεν επιτρέπεται να γράψετε: if(spoud1 == spoud2) ή if(spoud1!= spoud2) Αν πρέπει να γίνει έλεγχος αν δύο δομές περιέχουν τα ίδια ακριβώς δεδομένα, πρέπει αναγκαστικά να λάβει χώρα σύγκριση όλων των πεδίων των δομών ένα προς ένα και ξεχωριστά Δηλαδή: if((spoud1.age == spoud2.age) && (spoud1.grade == spoud2.grade)) 19 Παράδειγμα δομής που περιέχει πίνακες Ποια είναι η έξοδος του παρακάτω προγράμματος??? Έξοδος: Values: somebody s s 20 10

11 Παράδειγμα δομής που περιέχει δείκτες Ποια είναι η έξοδος του παρακάτω προγράμματος??? Έξοδος: ebody Δομές που περιέχουν δομές Μία δομή μπορεί να περιέχει μία ή περισσότερες δομές, οι οποίες ονομάζονται ένθετες δομές (nested structures) Μία ένθετη δομή πρέπει να δηλώνεται πριν από τη δήλωση της δομής στην οποία περιέχεται, αλλιώς ο μεταγλωττιστής θα εμφανίσει μήνυμα λάθους Για να προσπελάσουμε τα πεδία μίας δομής που περιέχεται μέσα σε μία άλλη δομή χρησιμοποιούμε δύο φορές τον τελεστή τελεία (.) Την πρώτη φορά ανάμεσα στο όνομα της εξωτερικής και της ένθετης δομής και τη δεύτερη φορά ανάμεσα στο όνομα της ένθετης δομής και το όνομα του πεδίου που μας ενδιαφέρει (το οποίο ανήκει στην ένθετη δομή) 22 11

12 Παράδειγμα δομής που περιέχει δομή (1/2) Ποια είναι η έξοδος του παρακάτω προγράμματος??? 23 Παράδειγμα δομής που περιέχει δομή (2/2) Έξοδος: The studies of somebody lasted 4 years 24 12

13 Πεδία Δομής με μέγεθος bit (Ι) Ένα πεδίο δομής μπορεί να δηλωθεί έτσι ώστε να έχει μέγεθος ένα ή περισσότερα bits Ένα τέτοιο πεδίο ονομάζεται πεδίο bit και δηλώνεται με τον ακόλουθο τρόπο: τύπος_δεδομένων όνομα_πεδίου_bit : αριθμός_bits; Δηλαδή, η δήλωση ενός πεδίου bit γίνεται με τη χρήση της άνωκάτω τελείας : ανάμεσα στο όνομα του πεδίου και τον αριθμό των bits που θα έχει Η προσπέλαση των πεδίων bit γίνεται με τους ίδιους τρόπους, όπως και με τα απλά πεδία μίας δομής Οι περισσότεροι μεταγλωττιστές εκτός από τον τύπο int υποστηρίζουν και τους τύπους char, short και long ως επιτρεπτούς τύπους δεδομένων ενός πεδίου bit 25 Πεδία Δομής με μέγεθος bit (ΙΙ) Η τιμή ενός πεδίου bit μπορεί να είναι θετική ή αρνητική Αν επιθυμούμε η τιμή του να είναι πάντα μόνο θετική, τότε προστίθεται η λέξη unsigned πριν από τον τύπο δεδομένων του πεδίου bit Σε περίπτωση που το μέγεθος ενός πεδίου bit είναι ένα bit, τότε ο τύπος δεδομένων του πεδίου πρέπει υποχρεωτικά να δηλωθεί ως unsigned, γιατί ένα bit δεν μπορεί να έχει πρόσημο Παράδειγμα: struct person { unsigned char sex : 1; unsigned char married : 1; unsigned char children : 4; char name[30]; }; Μέγεθος bit: 1 Εύρος τιμών: 0 1 Μέγεθος bit: 4 Εύρος τιμών:

14 Πεδία Δομής με μέγεθος bit (ΙΙΙ) Για την αποθήκευση των τιμών του προηγούμενου παραδείγματος απαιτούνται συνολικά: = 6 bits Αφού ο τύπος δεδομένων των πεδίων είναι unsigned char, τότε ο μεταγλωττιστής δεσμεύει 1 byte μνήμης, από το οποίο τα 2 bits δεν χρησιμοποιούνται Αν ο τύπος δεδομένων των πεδίων είχε δηλωθεί σαν unsigned int αντί για unsigned char, τότε ο μεταγλωττιστής θα δέσμευε 4 bytes μνήμης και δεν θα χρησιμοποιούσε: (4 * 8) - 6 = 26 bits Το μεγάλο πλεονέκτημα της χρήσης των πεδίων bit είναι η εξοικονόμηση μνήμης Στο προηγούμενο παράδειγμα ο μεταγλωττιστής δεσμεύει 1 byte μνήμης αντί για 3 bytes που θα δέσμευε αν δεν χρησιμοποιούσαμε πεδία bit (δηλ. για κάθε αποθήκευση των στοιχείων μίας εγγραφής εξοικονομούμε 2 bytes) Άρα, αν έπρεπε να αποθηκεύσουμε σε ένα αρχείο εγγραφές, θα εξοικονομούσαμε bytes μνήμης, κ.ο.κ. 27 Παρατηρήσεις (Ι) Για βέλτιστη εξοικονόμηση μνήμης οι δηλώσεις των πεδίων bit θα πρέπει να γίνονται όλες μαζί και να μην παρεμβάλλονται δηλώσεις απλών πεδίων μεταξύ των Κατά τη δήλωση μίας δομής, προτείνεται τα πεδία bit να δηλώνονται στην αρχή της δομής Όταν εκχωρείται μία τιμή σε ένα πεδίο bit, τότε αυτή η τιμή δεν θα πρέπει να κωδικοποιείται σε περισσότερα bits από ότι το μέγεθος του πεδίου, διότι σε μία τέτοια περίπτωση - είναι πολύ πιθανό να εισάγουμε λογικό λάθος (bug) στον κώδικά μας 28 14

15 Παρατηρήσεις (ΙI) Γιατί είναι λανθασμένη η παραπάνω εκχώρηση??? Η τιμή 2 απαιτεί 2 bits για να κωδικοποιηθεί (10 2 ) και όχι 1, όπως καθορίζεται στο μέγεθος του πεδίου. Τελικά, στο πεδίο married θα αποθηκευτεί το bit που θεωρεί ο μεταγλωττιστής ως «χαμηλότερης σημασίας». Αν π.χ. αποθηκευτεί το δεξιότερο bit, τότε το πρόγραμμα θα εμφανίσει: Married = 0 29 Παρατηρήσεις (ΙII) Ο κύριος περιορισμός των πεδίων bit είναι ότι ένας δείκτης δεν μπορεί να δείξει στη διεύθυνση ενός πεδίου bit Δηλαδή, στο παρακάτω πρόγραμμα ο μεταγλωττιστής θα εμφάνιζε μήνυμα λάθους 30 15

16 Δείκτης σε Δομή (Ι) Ένας δείκτης σε μία δομή δηλώνεται με τον ίδιο τρόπο που δηλώνεται ένας δείκτης σε οποιονδήποτε τύπο δεδομένων Π.χ. με τη δήλωση: struct student* stud_ptr; η μεταβλητή stud_ptr δηλώνεται ως δείκτης προς κάποια δομή τύπου student Υπενθυμίζεται ότι ένας δείκτης, πριν χρησιμοποιηθεί, πρέπει να έχει σαν τιμή τη διεύθυνση κάποιας μεταβλητής, ή ισοδύναμα να «δείχνει» σε κάποια υπαρκτή μεταβλητή struct student* stud_ptr; struct student stud; stud_ptr = &stud; Ο δείκτης stud_ptr δείχνει στη διεύθυνση της μνήμης που έχει αποθηκευτεί η δομή stud και συγκεκριμένα στη διεύθυνση μνήμης του πρώτου πεδίου της δομής stud 31 Δείκτης σε Δομή (ΙΙ) Χρησιμοποιώντας τον τελεστή * πριν από το όνομα του δείκτη, αποκτούμε πρόσβαση στο περιεχόμενο της μνήμης που δείχνει ο δείκτης, άρα μπορούμε να προσπελάσουμε τα πεδία μίας δομής Π.χ

17 Δείκτης σε Δομή (ΙΙΙ) Ένας εναλλακτικός τρόπος για να αποκτήσουμε πρόσβαση στα πεδία μίας δομής με χρήση δείκτη είναι χρησιμοποιώντας τον τελεστή -> αντί του τελεστή τελεία (.) Θα δείτε και τότε θα κλάψετε - ότι ο συγκεκριμένος τελεστής (->) συνηθίζεται να χρησιμοποιείται στις δυναμικές δομές δεδομένων Δηλαδή, για τη δομή: struct student { char name[50]; float grade; }; Αν: struct student* stud_ptr; οι παρακάτω εκφράσεις, είναι ισοδύναμες: stud_ptr->name ισοδύναμη με (*stud_ptr).name stud_ptr->grade ισοδύναμη με (*stud_ptr).grade 33 Παρατηρήσεις Για να αποκτήσουμε πρόσβαση στα πεδία μίας δομής με χρήση δείκτη προτιμάται η χρήση του τελεστή -> Για έναν δείκτη σε δομή ισχύουν οι ίδιοι κανόνες αριθμητικής που ισχύουν για τους απλούς δείκτες Π.χ. αν αυξηθεί η τιμή του δείκτη κατά ένα, τότε η τιμή του δείκτη θα αυξηθεί κατά το μέγεθος της δομής στην οποία δείχνει Η συνηθέστερη χρήση δεικτών σε δομές είναι κατά τη δημιουργία δυναμικών δομών δεδομένων, όπως λίστες, στοίβες και ουρές 34 17

18 Πίνακες Δομών Ένας πίνακας δομών είναι ένας πίνακας, του οποίου κάθε στοιχείο είναι μία δομή Π.χ. αν έχουμε δηλώσει τη δομή: struct student { char name[50]; int age; float grade; }; τότε η δήλωση: struct student stud[5]; σημαίνει ότι η μεταβλητή stud είναι ένας πίνακας 5 στοιχείων, και το κάθε στοιχείο του πίνακα είναι μία δομή τύπου student 35 Αρχικοποίηση Πίνακα Δομών (Ι) Α Τρόπος (κατά τη δήλωση του πίνακα δομών) Π.χ. για τη δομή: struct student { char name[50]; int age; float grade; }; με την παρακάτω αρχικοποίηση: struct student stud[] = {{"nikos",21,7.3}, {"kostas",22,5.8}, {"petros",23,6.7}}; η τιμή του πεδίου stud[0].name γίνεται "nikos" η τιμή του πεδίου stud[1].age γίνεται 22 η τιμή του πεδίου stud[2].grade γίνεται

19 Αρχικοποίηση Πίνακα Δομών (ΙI) B Τρόπος (απευθείας ενσωμάτωση στη δήλωση του προτύπου της δομής) Π.χ. : struct student { char name[50]; int age; float grade; } stud[] = {{"nikos",21,7.3}, {"kostas",22,5.8}, {"petros",23,6.7}}; Και με τους 2 τρόπους αρχικοποίησης, τα εσωτερικά άγκιστρα μπορούν να παραλειφθούν (προτείνεται όμως να χρησιμοποιούνται, ώστε ο κώδικας να είναι περισσότερο ευανάγνωστος, δηλ. να ξεχωρίζουν μεταξύ τους οι δομές) 37 Παρατηρήσεις (Ι) Οι πίνακες δομών χρησιμοποιούνται πολύ συχνά σε προγράμματα που απαιτείται αποθήκευση πληροφορίας που αντιστοιχεί σε διαφορετικές καταχωρήσεις (π.χ. ένα πρόγραμμα για την καταχώρηση των στοιχείων των υπαλλήλων μίας εταιρείας, των στοιχείων των φοιτητών μίας σχολής, της πληροφορίας των προϊόντων μίας αποθήκης, κτλ...) Δηλαδή, οι πίνακες δομών μπορούν να έχουν χρησιμοποιηθούν σαν μία βάση δεδομένων Όταν γίνεται η δήλωση του πίνακα δομών μπορούμε να θέσουμε την τιμή 0 σε όλα τα πεδία κάθε δομής Π.χ. αν γράψουμε: struct student stud[5] = {0} τότε όλα τα πεδία κάθε δομής αποκτούν την τιμή

20 Παρατηρήσεις (ΙΙ) Για τους πίνακες δομών ισχύουν όλοι οι κανόνες που ισχύουν για τους απλούς πίνακες Π.χ. για την προηγούμενη δομή stud (με πρότυπο student) αφού το όνομα ενός πίνακα χωρίς αγκύλες είναι δείκτης στη διεύθυνση του 1ου στοιχείου του, τότε: το *stud είναι ισοδύναμο με stud[0] το *(stud + 1) είναι ισοδύναμο με stud[1] το *(stud + 2) είναι ισοδύναμο με stud[2] κ.ο.κ. Άρα, αν θέλουμε να προσπελάσουμε το πεδίο age του τρίτου υπαλλήλου, οι εκφράσεις stud[2].age και (*(stud + 2)).age είναι ισοδύναμες (οι παρενθέσεις στη δεύτερη περίπτωση είναι απαραίτητες λόγω των προτεραιοτήτων) Προφανώς, ο χειρισμός ενός πίνακα δομών με χρήση της θέσης του κάθε στοιχείου στον πίνακα, είναι πιο απλός και ευανάγνωστος από τον αντίστοιχο χειρισμό με δείκτη 39 Συναρτήσεις που δέχονται Δομές σαν παραμέτρους Μία δομή μπορεί να διοχετευθεί σαν παράμετρος σε μία συνάρτηση είτε με κλήση μέσω τιμής είτε με κλήση μέσω αναφοράς Υπενθυμίζεται ότι, όταν γίνεται κλήση συνάρτησης μέσω τιμής, τότε στη συνάρτηση διοχετεύονται αντίγραφα των παραμέτρων του προγράμματος που την καλεί Επομένως, οποιαδήποτε αλλαγή γίνει στις τιμές των πεδίων της δομής μέσα στη συνάρτηση δεν επηρεάζει τις αντίστοιχες τιμές των πεδίων της δομής που διοχετεύθηκε στη συνάρτηση, γιατί οι τυχόν αλλαγές γίνονται σε αντίγραφό της Αντίθετα, σε περίπτωση κλήσης μέσω αναφοράς, στη συνάρτηση διοχετεύονται οι διευθύνσεις μνήμης των παραμέτρων του προγράμματος που την καλεί και όχι αντίγραφά τους, όπως προηγουμένως Επομένως, αφού η συνάρτηση έχει πρόσβαση στη διεύθυνση της δομής του προγράμματος που την κάλεσε, τότε μπορεί να μεταβάλλει τις τιμές των πεδίων της 40 20

21 Κλήση μέσω τιμής (Ι) Π.χ. αν θεωρήσουμε ότι έχει δηλωθεί η παρακάτω δομή: struct student { }; char name[50]; int age; float grade; Και έχει δηλωθεί κι η παρακάτω συνάρτηση: Όρισμα συνάρτησης: δομή τύπου student void funct(struct student stud_1); Αφού επίσης δηλωθεί και αρχικοποιηθεί μία μεταβλητή-δομή (π.χ. stud) τύπου student: struct student stud; strcpy(stud.name,"somebody"); stud.age = 20; stud.grade = 5; 41 Κλήση μέσω τιμής (ΙΙ) Κατά την κλήση της συνάρτησης μέσω τιμής (π.χ. από το κύριο πρόγραμμα, δηλ. μέσα από τη συνάρτηση main()): funct(stud); δημιουργείται προσωρινά στη μνήμη η μεταβλητή stud_1, η οποία αποτελεί αντίγραφο της μεταβλητής stud Αντίγραφο σημαίνει ότι οι αρχικές τιμές των πεδίων της δομής stud_1 θα γίνουν ίσες με τις αντίστοιχες τιμές των πεδίων της δομής stud Η μεταβλητή stud_1 δεν έχει καμία σχέση με τη μεταβλητή stud του κυρίως προγράμματος, αφού βρίσκονται σε διαφορετικές θέσεις μνήμης Επομένως, οποιαδήποτε αλλαγή γίνει στις τιμές των πεδίων της δομής stud_1 δεν επηρεάζει τις αντίστοιχες τιμές των πεδίων της δομής stud 42 21

22 Κλήση μέσω αναφοράς (Ι) Π.χ. αν θεωρήσουμε ότι έχει δηλωθεί η παρακάτω δομή: struct student { }; char name[50]; int age; float grade; Και έχει δηλωθεί κι η παρακάτω συνάρτηση: Όρισμα συνάρτησης: δείκτης σε δομή τύπου student void funct(struct student* stud_ptr); Αφού επίσης δηλωθεί και αρχικοποιηθεί μία μεταβλητή-δομή (π.χ. stud) τύπου student: struct student stud; strcpy(stud.name,"somebody"); stud.age = 20; stud.grade = 5; 43 Κλήση μέσω αναφοράς (ΙΙ) Κατά την κλήση της συνάρτησης μέσω αναφοράς (π.χ. από το κύριο πρόγραμμα, δηλ. μέσα από τη συνάρτηση main()): funct(&stud); στη συνάρτηση διοχετεύονται οι διευθύνσεις μνήμης των παραμέτρων του προγράμματος που την καλεί και όχι αντίγραφά τους, όπως προηγουμένως Επομένως, αφού η συνάρτηση έχει πρόσβαση στη διεύθυνση της δομής του προγράμματος που την κάλεσε, τότε μπορεί να μεταβάλλει τις τιμές των πεδίων της 44 22

23 Παρατηρήσεις Για τη μεταβίβαση μίας δομής σε μία συνάρτηση προτείνεται να γίνεται χρήση κλήσης μέσω αναφοράς, ακόμα και αν δεν απαιτείται αλλαγή στις τιμές των πεδίων της Ο κύριος λόγος είναι γιατί αποφεύγεται η διαδικασία δημιουργίας αντιγράφου της δομής στη στοίβα, άρα το πρόγραμμα εκτελείται πιο γρήγορα Σε περίπτωση που η συνάρτηση δεν πρέπει να αλλάξει τις τιμές των πεδίων της δομής, τότε ο προγραμματιστής, για να είναι σίγουρος ότι κάτι τέτοιο δεν θα συμβεί στο μέλλον, μπορεί να βάλει στη δήλωση της συνάρτησης τη λέξη const πριν από τη λέξη struct Π.χ. void funct(const struct student* stud_ptr); 45 Ενώσεις (Unions) Μία ένωση (union) στη C μοιάζει με μία δομή (structure), με τη σημαντική όμως διαφορά, ότι μόνο ένα πεδίο της ένωσης μπορεί να προσπελαύνεται κάθε φορά Αυτό συμβαίνει, γιατί τα πεδία μίας ένωσης δεν καταλαμβάνουν ξεχωριστό χώρο στη μνήμη, αλλά έναν κοινό χώρο μνήμης 46 23

24 Δήλωση Ένωσης Μία ένωση δηλώνεται με τον ίδιο τρόπο όπως δηλώνεται μία δομή με τη διαφορά ότι αντί της λέξης struct χρησιμοποιείται η λέξη union Όπως και στην περίπτωση των δομών, έτσι και στις ενώσεις, το πρότυπο μίας ένωσης δεν αποτελεί μεταβλητή, δηλαδή, όταν δηλώνεται το πρότυπο μίας ένωσης, δεν δεσμεύεται μνήμη για την αποθήκευσή του Προφανώς, αντίστοιχα με τις δομές, όταν δηλώνεται μία ένωση, ο μεταγλωττιστής δεσμεύει μνήμη για την αποθήκευσή της Το μέγεθος της μνήμης που δεσμεύεται είναι ίσο με τη μνήμη που δεσμεύεται για το μεγαλύτερο πεδίο της ένωσης και όχι ίσο με το άθροισμα όλων των πεδίων της 47 Παράδειγμα Ποια είναι η έξοδος του παρακάτω προγράμματος??? Έξοδος: Size:

25 Πρόσβαση πεδίων Ένωσης Τα πεδία μίας ένωσης μπορούν να προσπελαστούν με τους ίδιους ακριβώς τρόπους που προσπελαύνονται και τα πεδία μίας δομής Ωστόσο, επειδή η μνήμη που καταχωρούνται οι τιμές των πεδίων είναι κοινή, μπορούμε να χρησιμοποιήσουμε μόνο το πεδίο, στο οποίο εκχωρήθηκε πιο πρόσφατα μία τιμή, διότι τα υπόλοιπα πεδία χάνουν τις προηγούμενες τιμές τους και αποκτούν νέες τυχαίες τιμές 49 Παράδειγμα Ποια είναι η έξοδος του παρακάτω προγράμματος??? Έξοδος: a τυχαία τιμή τυχαία τιμή τυχαία τιμή 64 τυχαία τιμή τυχαία τιμή τυχαία τιμή

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

Προγραμματισμός Ι. Δομές & Ενώσεις. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Δομές & Ενώσεις Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Προγραμματισμός Δ. Τσελίκας Ι 1 Δομές (Structures) Δομή (structure) στη C είναι μία συλλογή από μεταβλητές οποιουδήποτε

Διαβάστε περισσότερα

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 8 η Δείκτες Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης Χριστοδούλου

Διαβάστε περισσότερα

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

int array[10]; double arr[5]; char pin[20]; Προγραµµατισµός Ι Εισαγωγή Στον Προγραµµατισµό «C» Πίνακες Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Πίνακες στη C Ένας πίνακας στη C είναι

Διαβάστε περισσότερα

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 9 η Χαρακτήρες Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης

Διαβάστε περισσότερα

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 14 η Διαχείριση Μνήμης και Δομές Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη

Διαβάστε περισσότερα

Εισαγωγή στον Προγραµµατισµό «C»

Εισαγωγή στον Προγραµµατισµό «C» Εισαγωγή Στον Προγραµµατισµό «C» Δείκτες Πανεπιστήµιο Πελοποννήσου Τµήµα Επιστήµης & Τεχνολογίας Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Μνήµη Υπολογιστή Η µνήµη RAM (Random Access Memory) ενός υπολογιστή

Διαβάστε περισσότερα

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 2 ο Τύποι Δεδοµένων Δήλωση Μεταβλητών Έξοδος Δεδοµένων Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Μνήµη και Μεταβλητές Σχέση Μνήµης Υπολογιστή και Μεταβλητών Η µνήµη (RAM) ενός

Διαβάστε περισσότερα

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

Προγραμματισμός Ι. Εγγραφές. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Εγγραφές Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Η Ανάγκη Ομαδοποίησης Πολλές φορές έχουμε πληροφορίες διαφορετικού τύπου οι οποίες όμως έχουν μεγάλη

Διαβάστε περισσότερα

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

Προγραμματισμός Ι. Δυναμική Διαχείριση Μνήμης. Δημήτρης Μιχαήλ. Ακ. Έτος 2011-2012. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δυναμική Διαχείριση Μνήμης Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2011-2012 Ανάγκη για Δυναμική Μνήμη Στατική Μνήμη Μέχρι τώρα χρησιμοποιούσαμε

Διαβάστε περισσότερα

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

Προγραμματισμός Ι. Χαρακτήρες. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Χαρακτήρες Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Προγραμματισμός Δ. Τσελίκας Ι Χαρακτήρες - Εισαγωγή Έως τώρα έχουμε κατά κύριο λόγο χρησιμοποιήσει τους αριθμητικούς τύπους

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 2ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΣΦΑΛΜΑΤΑ ΜΕΤΑΓΛΩΤΤΙΣΗΣ Η γλώσσα C κάνει αυστηρή διάκριση μεταξύ πεζών

Διαβάστε περισσότερα

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

Προγραμματισμός Δομές Δεδομένων Προγραμματισμός Δομές Δεδομένων Προγραμματισμός Δομές Δεδομένων (Data Structures) Καινούργιοι τύποι δεδομένων που αποτελούνται από την ομαδοποίηση υπαρχόντων τύπων δεδομένων Ομαδοποίηση πληροφορίας που

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Πίνακες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Πίνακες Πολλές φορές θέλουμε να κρατήσουμε στην μνήμη πολλά αντικείμενα

Διαβάστε περισσότερα

a = 10; a = k; int a,b,c; a = b = c = 10;

a = 10; a = k; int a,b,c; a = b = c = 10; C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 4 ο Τελεστές Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Ο τελεστής εκχώρησης = Ο τελεστής = χρησιµοποιείται για την απόδοση τιµής (ή αλλιώς ανάθεση τιµής) σε µία µεταβλητή Π.χ.

Διαβάστε περισσότερα

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

Η πρώτη παράμετρος είναι ένα αλφαριθμητικό μορφοποίησης Η συνάρτηση printf() Η συνάρτηση printf() χρησιμοποιείται για την εμφάνιση δεδομένων στο αρχείο εξόδου stdout (standard output stream), το οποίο εξ ορισμού συνδέεται με την οθόνη Η συνάρτηση printf() δέχεται

Διαβάστε περισσότερα

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 10 η Αλφαριθμητικά Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Διάλεξη 3η: Τύποι Μεταβλητών, Τελεστές, Είσοδος/Έξοδος Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Μεταβλητές,

Διαβάστε περισσότερα

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

Προγραμματισμός Ι. Δείκτες. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Δείκτες Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Τι είναι ο δείκτης Ένας δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μνήμης. Θυμηθείτε πως

Διαβάστε περισσότερα

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Βασικοί Τύποι Πίνακες (μέρος 1) Συμβολοσειρές Ο Προεπεξεργαστής Τελευταία ενημέρωση: Σεπτέμβριος 2016 Εισαγωγή - 2 short:

Διαβάστε περισσότερα

if(συνθήκη) {... // οµάδα εντολών } C: Από τη Θεωρία στην Εφαρµογή 5 ο Κεφάλαιο

if(συνθήκη) {... // οµάδα εντολών } C: Από τη Θεωρία στην Εφαρµογή 5 ο Κεφάλαιο C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 5 ο Έλεγχος Προγράµµατος Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Η εντολή if (Ι) Η εντολή if είναι µία από τις βασικότερες δοµές ελέγχου ροής στη C, αλλά και στις περισσότερες

Διαβάστε περισσότερα

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

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ Σκοπός της Άσκησης Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας

Διαβάστε περισσότερα

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική Ενότητα 8: Αρχεία και Δομές Νικόλαος Στεργιούλας Τμήμα Φυσικής Άδειες Χρήσης Το παρόν

Διαβάστε περισσότερα

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Δομές Δεδομένων και Κυρίως Πρόγραμμα Δομές δεδομένων εκτός από πίνακες: Structs Unions Enums Κυρίως πρόγραμμα Παράμετροι που

Διαβάστε περισσότερα

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εργαστήριο 9η εβδομάδα. Κοζάνη, 2 Δεκεμβρίου 2008. Δίνονται παραδείγματα που αποσαφηνίζουν και συμπληρώνουν όσα αναφέρθηκαν στο μάθημα σχετικά με τις δομές

Διαβάστε περισσότερα

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

Διάλεξη 19η: Δομές δεδομένων Διάλεξη 19η: Δομές δεδομένων Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Πρατικάκης (CSD) Δομές CS100, 2016-2017 1 / 13 Δομές Δεδομένων (Data Structures) Καινούργιοι

Διαβάστε περισσότερα

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

ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Ενότητα 3: Πίνακες, Δομές και Δυναμική Διαχείριση Μνήμης Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons

Διαβάστε περισσότερα

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

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες (Διάλεξη 19) Κεφάλαιο 8.7 Πολυδιάστατοι Πίνακες (Διάλεξη 19) Πολυδιάστατοι πίνακες Μέχρι τώρα μιλούσαμε για Μονοδιάστατους Πίνακες. ή π.χ. int age[5]= {31,28,31,30,31; για Παράλληλους πίνακες, π.χ. int id[5] = {1029,1132,1031,9991,1513;

Διαβάστε περισσότερα

scanf() scanf() stdin scanf() printf() int float double %lf float

scanf() scanf() stdin scanf() printf() int float double %lf float Εισαγωγή Στον Προγραµµατισµό «C» Είσοδος Δεδοµένων Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Η συνάρτηση scanf() Η συνάρτηση

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 2: Δομή ενός προγράμματος C Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες

Διαβάστε περισσότερα

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 11 η Συναρτήσεις Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή Σωτήρης

Διαβάστε περισσότερα

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Βασικά Στοιχεία Το αλφάβητο της C Οι βασικοί τύποι της C Δηλώσεις μεταβλητών Είσοδος/Έξοδος Βασικές εντολές της C Αλφάβητο

Διαβάστε περισσότερα

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

Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις Ενώσεις δεδομένων Απαριθμητές Ψηφιακοί τελεστές Αναδρομικές συναρτήσεις Ενώσεις δεδομένων (union) τι και γιατί Συσκευές με μικρή μνήμη => ανάγκη εξοικονόμησης πόρων Παρατήρηση: αχρησιμοποίητη μνήμη. Έστω

Διαβάστε περισσότερα

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

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C Εισαγωγή στην C Μορφή Προγράµµατος σε γλώσσα C Τµήµα Α Με την εντολή include συµπεριλαµβάνω στο πρόγραµµα τα πρότυπα των συναρτήσεων εισόδου/εξόδου της C.Το αρχείο κεφαλίδας stdio.h είναι ένας κατάλογος

Διαβάστε περισσότερα

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 4ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΟΙ ΤΕΛΕΣΤΕΣ ΣΥΓΚΡΙΣΗΣ Με τους τελεστές σύγκρισης, συγκρίνουμε τις

Διαβάστε περισσότερα

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

Ενδεικτική περιγραφή μαθήματος ΜΑΘΗΜΑ: ΔΙΔΑΣΚΩΝ: ΤΜΗΜΑ: Προγραμματισμός Η/Υ Συνδουκάς Δημήτριος Διοίκησης Επιχειρήσεων (Γρεβενά) Ενδεικτική περιγραφή μαθήματος 1. Εισαγωγή: Εισαγωγή στον προγραμματισμό, γλώσσες προγραμματισμού, μεταγλωτιστές.

Διαβάστε περισσότερα

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

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 12 η Αναζήτηση/Ταξινόμηση Πίνακα Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Κεφάλαιο ΙV: Δείκτες και πίνακες. 4.1 Δείκτες. Κεφάλαιο ΙV: Δείκτες και πίνακες. 4.1 Δείκτες. Η C, όπως έχουμε αναφέρει, είναι μια γλώσσα προγραμματισμού υψηλού επιπέδου η οποία αναπτύχθηκε για πρώτη φορά το 1972 από τον Dennis Ritchie στα AT&T Bell

Διαβάστε περισσότερα

Στοιχειώδης προγραμματισμός σε C++

Στοιχειώδης προγραμματισμός σε C++ Στοιχειώδης προγραμματισμός σε C++ Σύντομο Ιστορικό. Το πρόγραμμα Hello World. Ο τελεστής εξόδου. Μεταβλητές και δηλώσεις τους. Αντικείμενα, μεταβλητές, σταθερές. Ο τελεστής εισόδου. Θεμελιώδεις τύποι.

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 4: Τύποι Δεδομένων και τελεστές Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Οι δείκτες στη C Η έννοια του δείκτη Την έννοια του δείκτη τη συναντήσαμε σε προηγούμενα μαθήματα. Η συνάρτηση scanf(), καταχωρίζει τιμές σε μεταβλητές χρησιμοποιώντας τον τελεστή

Διαβάστε περισσότερα

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 9: Συναρτήσεις Ορισμός συναρτήσεων () { /* δήλωση μεταβλητών */ /* εντολές ελέγχου/επεξεργασίας */ o Μια συνάρτηση ορίζεται δίνοντας

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Πρόλογος... 11. 1. Εισαγωγικά Στοιχεία... 13

Πρόλογος... 11. 1. Εισαγωγικά Στοιχεία... 13 ΠΕΡΙΕΧΟΜΕΝΑ Πρόλογος... 11 1. Εισαγωγικά Στοιχεία... 13 Το πρώτο πρόγραμμα... 15 Οι βασικοί τύποι δεδομένων και ο χειρισμός τους... 19 Σταθερές και Μεταβλητές... 19 Σταθερές τύπου ακεραίου... 19 Μεταβλητές

Διαβάστε περισσότερα

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Εισαγωγή στον Προγραµµατισµό Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011 Hello World /* Αρχείο hello.c * Εµφανίζει στην οθόνη το * µήνυµα hello world */ #include

Διαβάστε περισσότερα

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

Προγραμματισμός Ι. Είσοδος/Έξοδος. Δημήτρης Μιχαήλ. Ακ. Έτος 2009-2010. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Είσοδος/Έξοδος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2009-2010 Είσοδος/Έξοδος Μέχρι τώρα όποτε θέλαμε να διαβάσουμε χρησιμοποιούσαμε πάντα

Διαβάστε περισσότερα

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

Προγραμματισμός Ι. Συναρτήσεις. Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Συναρτήσεις Πανεπιστήμιο Πελοποννήσου Τμήμα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Προγραμματισμός Δ. Τσελίκας Ι Συναρτήσεις - Εισαγωγή Μία συνάρτηση είναι ένα ανεξάρτητο τμήμα κώδικα, που εκτελεί μία

Διαβάστε περισσότερα

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 23 ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 2ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος I/O 24 Βασική βιβλιοθήκη συναρτήσεων εισόδου/εξόδου #include Η συνάρτηση εξόδου printf printf("συμβολοσειρά

Διαβάστε περισσότερα

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

Διάλεξη 5: Δείκτες και Συναρτήσεις Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 5: Δείκτες και Συναρτήσεις (Κεφάλαιο 11, KNK-2ED) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 5-1 Περιεχόμενο

Διαβάστε περισσότερα

Βασικά Στοιχεία της Java

Βασικά Στοιχεία της Java Βασικά Στοιχεία της Java Παύλος Εφραιμίδης Java Βασικά Στοιχεία της γλώσσας Java 1 Τύποι Δεδομένων Η Java έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) τύπους δεδομένων αναφορές Java Βασικά

Διαβάστε περισσότερα

Διάλεξη 6: Δείκτες και Πίνακες

Διάλεξη 6: Δείκτες και Πίνακες Τμήμα Πληροφορικής Πανεπιστήμιο Κύπρου ΕΠΛ132 Αρχές Προγραμματισμού II Διάλεξη 6: Δείκτες και Πίνακες (Κεφάλαιο 12, KNK-2ED) Δημήτρης Ζεϊναλιπούρ http://www.cs.ucy.ac.cy/courses/epl132 6-1 Περιεχόμενο

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 7ο Τμήμα Διοίκησης Επιχειρήσεων Παλαιό ΕΠΔΟ α εξάμηνο Β. Φερεντίνος Δείκτες (Pointers) (1) 142 Κάθε μεταβλητή, εκτός από την τιμή της, έχει και μία συγκεκριμένη διεύθυνση

Διαβάστε περισσότερα

Βασικά στοιχεία της Java

Βασικά στοιχεία της Java Βασικά στοιχεία της Java προτάσεις, εκφράσεις, µεταβλητές, σταθερές, τελεστές Ορισµοί Πρόταση (statement) είναι µία απλή εντολή σε µία γλώσσα προγραµµατισµού. Γιαπαράδειγµα: int x=12; Έκφραση (expression)

Διαβάστε περισσότερα

Ο βρόχος for Η εντολή for χρησιμοποιείται για τη δημιουργία επαναληπτικών βρόχων στη C

Ο βρόχος for Η εντολή for χρησιμοποιείται για τη δημιουργία επαναληπτικών βρόχων στη C Ο βρόχος for Η εντολή for χρησιμοποιείται για τη δημιουργία επαναληπτικών βρόχων στη C Επαναληπτικός βρόχος καλείται το τμήμα του κώδικα μέσα σε ένα πρόγραμμα, το οποίο εκτελείται από την αρχή και επαναλαμβάνεται

Διαβάστε περισσότερα

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Δυναμική Κατανομή Μνήμης Δυναμική εκχώρηση μνήμης Σωρός Συναρτήσεις malloc(), calloc(), realloc(), free() Δυναμικές δομές

Διαβάστε περισσότερα

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

Δομές Δεδομένων Εισαγωγή παράγωγους τύπους δομών δεδομένων Ορισμός και συζήτηση της έννοιας μέλη ετικέτα Τρόπος δήλωσης και ορισμού Δομές Δεδομένων Εισαγωγή Στη γλώσσα C μπορούμε, εκτός από τους τύπους που ήδη υπάρχουν, int, float, double, char, να επινοήσουμε και χρησιμοποιήσουμε καινούριους, δικούς μας τύπους δεδομένων με συνδυασμό

Διαβάστε περισσότερα

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ 1 (Εργαστήριο) Προγραμματισμός Η/Υ 1 (Εργαστήριο) Ενότητα 10: Συναρτήσεις Καθηγήτρια Εφαρμογών: Τσαγκαλίδου Ροδή Τμήμα: Ηλεκτρολόγων Μηχανικών Τ.Ε. Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης

Διαβάστε περισσότερα

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

Διαδικαστικός Προγραμματισμός Διαδικαστικός Προγραμματισμός Ενότητα 7: Δείκτες Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες,

Διαβάστε περισσότερα

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον

Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον Ανάπτυξη Εφαρμογών σε Προγραμματιστικό Περιβάλλον ΚΕΦΑΛΑΙΑ 3 και 9 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΑΛΓΟΡΙΘΜΟΙ ΠΙΝΑΚΕΣ Δεδομένα αφαιρετική αναπαράσταση της πραγματικότητας και συνεπώς μία απλοποιημένη όψη της δηλαδή.

Διαβάστε περισσότερα

Περιεχόμενα. Πρόλογος... 17

Περιεχόμενα. Πρόλογος... 17 Περιεχόμενα Πρόλογος... 17 Κεφάλαιο 1: Εισαγωγή... 19 Πώς να διαβάσετε αυτό το βιβλίο... 20 Η γλώσσα C Ιστορική αναδρομή... 22 Τα χαρακτηριστικά της C... 23 C Μια δομημένη γλώσσα... 23 C Μια γλώσσα για

Διαβάστε περισσότερα

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 1 Εισαγωγή στη C Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr Διαδικαστικά Ιστοσελίδα μαθήματος: http://eclass.uoa.gr/courses/f30/ Υποχρεωτική παρακολούθηση: Παρασκευή 14:00 16:00 στην

Διαβάστε περισσότερα

Η δήλωση πού δηµιουργεί αποθήκευση τών δεδοµένων ονοµαζεται ορισµός τής µεταβλητής.

Η δήλωση πού δηµιουργεί αποθήκευση τών δεδοµένων ονοµαζεται ορισµός τής µεταβλητής. Από το βιβλίο C: Βήµα-Πρός-Βήµα, Κεφάλαιο 3ο Συγγραφείς: Οµάδα Waite, Mitchell Waite και Stephen Prata Εκδότης: Μ. Γκιούρδας Ανατύπωση σε ηλεκτρονική µορφή: Αλέξανδρος Στεφανίδης 3.4 Τύποι εδοµένων τής

Διαβάστε περισσότερα

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

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Κλάσεις και Αντικείμενα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Κλάσεις Η γενική μορφή μιας κλάσης είναι η εξής: class class-name { private data and

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Υπολογιστικά Συστήματα

Υπολογιστικά Συστήματα Υπολογιστικά Συστήματα Ενότητα 3: Βασικά στοιχεία της γλώσσας προγραμματισμού Visual Basic for Applications (VBA) Σαπρίκης Ευάγγελος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια: Εργαστήριο 6: 6.1 Δομές Επανάληψης Βρόγχοι (Loops) Όταν θέλουμε να επαναληφθεί μια ομάδα εντολών τη βάζουμε μέσα σε ένα βρόχο επανάληψης. Το αν θα (ξανα)επαναληφθεί η εκτέλεση της ομάδας εντολών καθορίζεται

Διαβάστε περισσότερα

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client ΕΣΔ 516 Τεχνολογίες Διαδικτύου Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client Περιεχόμενα Περιεχόμενα Javascript και HTML Βασική σύνταξη Μεταβλητές Τελεστές Συναρτήσεις

Διαβάστε περισσότερα

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα 1. Ποια είναι η σχέση της έννοιας του μικροεπεξεργαστή με αυτή του μικροελεγκτή; Α. Ο μικροεπεξεργαστής εμπεριέχει τουλάχιστο έναν μικροελεγκτή. Β. Ο

Διαβάστε περισσότερα

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

Δομημένος Προγραμματισμός Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Δομημένος Προγραμματισμός Ενότητα 11: Δομές Δεδομένων και Αλγόριθμοι Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις

Διαβάστε περισσότερα

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Συναρτήσεις εισόδου/εξόδου, τελεστές Η συνάρτηση scanf() είσοδος δεδομένων Διαβάζει από το πληκτρολόγιο (stdin) μορφοποιημένες τιμές μεταβλητών. scanf (ΣΕΙΡΑ_ΕΛΕΓΧΟΥ, δείκτης_μεταβλητής-1,

Διαβάστε περισσότερα

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ Η ΓΛΩΣΣΑ PASCAL ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ Απλοί ή στοιχειώδης Τ.Δ. Ακέραιος τύπος Πραγματικός τύπος Λογικός τύπος Χαρακτήρας Σύνθετοι Τ.Δ. Αλφαριθμητικός 1. Ακέραιος (integer) Εύρος: -32768 έως 32767 Δήλωση

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Ακαδημαϊκό έτος 2010/2011 Επιμέλεια Ξενοφών Βασιλάκος Περιεχόμενα Φροντιστηρίου A. Πρωταρχικοί τύποι B. Είσοδος/ Έξοδος C. Πράξεις 2 Δήλωση / Αρχικοποίηση / Εκχώρηση A. Πρωταρχικοί

Διαβάστε περισσότερα

ΑΕΠΠ 6o Επαναληπτικό Διαγώνισμα

ΑΕΠΠ 6o Επαναληπτικό Διαγώνισμα ΑΕΠΠ 6o Επαναληπτικό Διαγώνισμα Ονοματεπώνυμο: ΘΕΜΑ Α Α1. Να γράψετε στο τετράδιό σας τον αριθμό καθεμίας από τις παρακάτω προτάσεις 1-5 και, δίπλα, τη λέξη ΣΩΣΤΟ, αν η πρόταση είναι σωστή, ή τη λέξη ΛΑΘΟΣ,

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 6 : ΠΙΝΑΚΕΣ Κων. Κόκκινος ΠΙΝΑΚΕΣ (ARRAYS) Είναι χώροι της μνήμης για προσωρινή αποθήκευση δεδομένων του ίδιου τύπου. Οι πίνακες είναι δομές δεδομένων που τις

Διαβάστε περισσότερα

C: Από τη Θεωρία στην Εφαρμογή

C: Από τη Θεωρία στην Εφαρμογή Δρ. Γ. Σ. Τσελίκης Δρ. Ν. Δ. Τσελίκας C: Από τη Θεωρία στην Εφαρμογή Ενδεικτικές Ασκήσεις από το Βιβλίο C: Από τη Θεωρία στην Εφαρμογή (Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας) Ενδεικτικές Ασκήσεις του Βιβλίου Ε.Α.1

Διαβάστε περισσότερα

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

οµές (structures) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Πίνακες δοµών, δείκτες σε δοµές, και αυτοαναφορικές δοµές. οµές (structures) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Πίνακες δοµών, δείκτες σε δοµές, και αυτοαναφορικές δοµές. ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1 Παράδειγµα Πρόβληµα: Να γράψετε

Διαβάστε περισσότερα

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη.

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη. Εργαστήριο 4: 4.1 Η Δομή Ελέγχου if Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη. Γενική Μορφή: Παρατηρήσεις:

Διαβάστε περισσότερα

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος http://www.teiser.gr/icd/staff/lantzos lantzos@teiser.gr 1 Πώς δημιουργούμε πρόγραμμα Η/Υ; 1. Ανάλυση του προβλήματος 2. Επινόηση & Σχεδιασμός

Διαβάστε περισσότερα

Εντολές της LOGO (MicroWorlds Pro)

Εντολές της LOGO (MicroWorlds Pro) Εντολές της LOGO (MicroWorlds Pro) Εντολές εμφάνισης (εξόδου) και αριθμητικές πράξεις δείξε Εμφανίζει στην οθόνη έναν αριθμό, το αποτέλεσμα πράξεων, μια λέξη ή μια λίστα (ομάδα) λέξεων. δείξε 200 200 δείξε

Διαβάστε περισσότερα

Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ )

Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ ) Κεφάλαιο 7 ο Βασικές Έννοιες Προγραμματισμού (σελ. 147 159) Για τις γλώσσες προγραμματισμού πρέπει να έχουμε υπόψη ότι: Κάθε γλώσσα προγραμματισμού σχεδιάζεται για συγκεκριμένο σκοπό, δίνοντας ιδιαίτερη

Διαβάστε περισσότερα

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

Εργαστήριο 2ο. Περίγραμμα Εργαστηριακής Άσκησης Γλώσσες Προγραμματισμού Εργαστήριο 2ο Τύποι Δεδομένων - Είσοδος / Έξοδος Εργαστήριο 2ο Περίγραμμα Εργαστηριακής Άσκησης Εργαστήριο 2ο...1 Θεωρία εργαστηρίου...2 Τύποι δεδομένων...2 Η συνάρτηση printf()...3

Διαβάστε περισσότερα

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 8ο Τμήμα Διοίκησης Επιχειρήσεων Παλαιό ΕΠΔΟ α εξάμηνο Β. Φερεντίνος ΔΟΜΕΣ (STRUCTURES) 161 Οι δομές ομαδοποιούν ένα σύνολο μεταβλητών (πιθανόν διαφορετικών τύπων) κάτω

Διαβάστε περισσότερα

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

Ειδικά Θέματα Προγραμματισμού Ειδικά Θέματα Προγραμματισμού Ενότητα 3: Τύποι Δεδομένων - Τελεστές Μιχάλας Άγγελος Τμήμα Μηχανικών Πληροφορικής ΤΕ Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

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

Δομές Δεδομένων. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής. Δομές Δεδομένων. Τμήμα Εφαρμοσμένης Πληροφορικής Ενότητα 5: Δείκτες και Δυναμική Δέσμευση- Αποδέσμευση Μνήμης στη C/ Υλοποίηση ΑΤΔ Συνδεδεμένη Λίστα με δείκτες /Ένα πακέτο για τον ΑΤΔ Συνδεδεμένη Λίστα Καθηγήτρια Μαρία Σατρατζέμη Άδειες Χρήσης Το παρόν

Διαβάστε περισσότερα

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

Δομές δεδομένων (2) Αλγόριθμοι Δομές δεδομένων (2) Αλγόριθμοι Παράγωγοι τύποι (struct) σύνοψη προηγουμένων Πίνακες: πολλές μεταβλητές ίδιου τύπου Παράγωγοι τύποι ή Δομές (struct): ομαδοποίηση μεταβλητών διαφορετικού τύπου struct Student

Διαβάστε περισσότερα

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Αριθμητική Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Δεύτερο Πρόγραμμα 1 / * Second Simple Program : add 2 numbers * / 2

Διαβάστε περισσότερα

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

Πληροφορική 2. Γλώσσες Προγραμματισμού Πληροφορική 2 Γλώσσες Προγραμματισμού 1 2 Γλώσσες προγραμματσιμού Επιτρέπουν την κωδικοποίηση των αλγορίθμων Η εκτέλεση ενός προγράμματος θα πρέπει να δίνει τα ίδια αποτελέσματα με την νοητική εκτέλεση

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΕΡΓΑΣΤΗΡΙΟ 4: Μεταβλητές, Δομές Ελέγχου και Επανάληψης

ΕΡΓΑΣΤΗΡΙΟ 4: Μεταβλητές, Δομές Ελέγχου και Επανάληψης ΕΡΓΑΣΤΗΡΙΟ 4: Μεταβλητές, Δομές Ελέγχου και Επανάληψης Στο εργαστήριο αυτό, θα εξοικειωθούμε με τους τύπους δεδομένων που μας παρέχει η γλώσσα C, θα χρησιμοποιήσουμε τις δομές επανάληψης (for, while, do...while),

Διαβάστε περισσότερα

7. Βασικά στοιχεία προγραµµατισµού.

7. Βασικά στοιχεία προγραµµατισµού. 7. Βασικά στοιχεία προγραµµατισµού. ΗΜ01-Θ1Γ Δίνονται οι παρακάτω έννοιες: 1. Λογικός τύπος δεδοµένων 2. Επιλύσιµο 3. Ακέραιος τύπος δεδοµένων 4. Περατότητα 5. Μεταβλητή 6. Ηµιδοµηµένο 7. Πραγµατικός τύπος

Διαβάστε περισσότερα

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 10: Δείκτες Δείκτες Υπάρχουν περιπτώσεις που δεν ενδιαφέρει το περιεχόμενο αλλά η μιας μεταβλητής. Χρειάζεται κατάλληλος μηχανισμός αναφοράς και επεξεργασίας τιμών που

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο

Διαβάστε περισσότερα

Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Πληροφορική Ι. Αναπαράσταση αριθμών στο δυαδικό σύστημα. Δρ.

Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας. Πληροφορική Ι. Αναπαράσταση αριθμών στο δυαδικό σύστημα. Δρ. Τμήμα Χρηματοοικονομικής & Ελεγκτικής ΤΕΙ Ηπείρου Παράρτημα Πρέβεζας Πληροφορική Ι Αναπαράσταση αριθμών στο δυαδικό σύστημα Δρ. Γκόγκος Χρήστος Δεκαδικό σύστημα αρίθμησης Ελληνικό - Ρωμαϊκό Σύστημα αρίθμησης

Διαβάστε περισσότερα

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

Προγραμματισμός Η/Υ. Ενότητα 9: Ειδικά θέματα Δομών Δεδομένων Προγραμματισμός Η/Υ Ενότητα 9: Νίκος Καρακαπιλίδης, Καθηγητής Δημήτρης Σαραβάνος, Καθηγητής Πολυτεχνική Σχολή Τμήμα Μηχανολόγων & Αεροναυπηγών Μηχανικών Σκοποί ενότητας Κατανόηση της έννοιας της Δομής

Διαβάστε περισσότερα