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

Save this PDF as:
 WORD  PNG  TXT  JPG

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

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

Transcript

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

2 Δομές (Structures) Δομή (structure) στη C είναι μία συλλογή από μεταβλητές οποιουδήποτε τύπου, οι οποίες συνήθως χρησιμοποιούνται για την ομαδοποίηση πληροφορίας που περιγράφει μία λογική οντότητα Π.χ. μία δομή μπορεί να περιέχει πληροφορίες για μία εταιρεία, όπως την επωνυμία της, το έτος ίδρυσης, το Α.Φ.Μ, τη διεύθυνσή της, το αντικείμενο εργασιών της, τον αριθμό των υπαλλήλων της, στοιχεία επικοινωνίας, κτλ... 2

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

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

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

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

7 Παρατηρήσεις (Ι) Όταν δηλώνεται μία δομή ο μεταγλωττιστής δεσμεύει μνήμη για την αποθήκευσή της Το μέγεθος της μνήμης που δεσμεύεται είναι τουλάχιστον ίσο με το άθροισμα της μνήμης που δεσμεύεται για καθένα από τα πεδία της Συνεπώς, η έξοδος του προγράμματος αναμένεται να είναι και όντως, είναι 12!! 7

8 Παρατηρήσεις (ΙΙ) Συνεπώς, ποια αναμένεται να είναι η έξοδος του παρακάτω προγράμματος??? Απαντήσατε 13 αλλά εμφανίστηκε... 16??? Don t panic... Για την αποφυγή λαθών στον υπολογισμό της μνήμης που καταλαμβάνει μία δομή να χρησιμοποιείτε πάντα τον τελεστή sizeof και να μην μπαίνετε στη διαδικασία να προσθέτετε τη μνήμη που δεσμεύουν ξεχωριστά τα πεδία της 8

9 Παρατηρήσεις (ΙΙΙ) Θυμηθείτε ότι το μέγεθος της μνήμης που δεσμεύεται είναι τουλάχιστον ίσο (και όχι απαραίτητα ακριβώς ίσο) με το άθροισμα της μνήμης που δεσμεύεται για καθένα από τα πεδία της Στην πράξη, το μέγεθος της μνήμης που δεσμεύεται για μία δομή εξαρτάται από τον υπολογιστή που εκτελείται το πρόγραμμα και από τους τύπους των πεδίων δεδομένων Π.χ., μπορεί να απαιτείται κάθε πεδίο της δομής να αποθηκεύεται σε μία θέση μνήμης που η τιμή της να είναι πολλαπλάσια κάποιου αριθμού (συνήθως του 4) ή πολλαπλάσια του αριθμού των οκτάδων που δεσμεύει ο μεγαλύτερος τύπος δεδομένων των πεδίων της δομής 9

10 Παραδείγματα Ποια αναμένεται να είναι η έξοδος των παρακάτω προγραμμάτων??? Έξοδος: Size = 24 Έξοδος: Size = 28 10

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

12 Παρατηρήσεις Συνήθως, το προσδιοριστικό typedef χρησιμοποιείται για τη δημιουργία συνωνύμων με βασικούς τύπους δεδομένων Π.χ. με τη δήλωση: typedef unsigned int size_t; δημιουργείται ένας νέος τύπος δεδομένων που ονομάζεται size_t και είναι συνώνυμο του τύπου unsigned int Δηλ. οι δηλώσεις: unsigned int i; και size_t i; είναι ισοδύναμες Π.χ. με τη δήλωση: typedef int arr[100]; δημιουργείται ένας νέος τύπος δεδομένων που ονομάζεται arr και είναι ένας πίνακας 100 ακεραίων Δηλ. με τη δήλωση: arr arr1; η μεταβλητή arr1 είναι και αυτή ένας πίνακας 100 ακεραίων 12

13 Αρχικοποίηση πεδίων δομής (Ι) Ο πιο συνηθισμένος τρόπος για να προσπελάσουμε τα πεδία μίας δομής είναι να γράψουμε το όνομα της δομής να προσθέσουμε τον τελεστή τελεία (.) και μετά το όνομα του πεδίου που μας ενδιαφέρει Το επόμενο πρόγραμμα δηλώνει το πρότυπο μίας δομής με όνομα book, αρχικοποιεί τα πεδία της δομής book_1 και τα εμφανίζει στην οθόνη 13

14 Αρχικοποίηση πεδίων δομής (ΙΙ) Εναλλακτικός τρόπος αρχικοποίησης μίας δομής είναι μαζί με τη δήλωσή της (αφού εννοείται έχει δηλωθεί το πρότυπό της) Π.χ. struct book book_1 = {"Literature", 2010, 10.85}; Όπως τα στοιχεία ενός πίνακα, έτσι και τα πεδία μίας δομής που δεν αρχικοποιούνται αποκτούν μηδενικές τιμές Π.χ. book_1.title book_1.year book_1.price book_1.title book_1.year = 0 book_1.price = 0 struct book book_1 = {"Literature"}; Παρόμοια, με τη δήλωση: struct book book_1 = {0} ; οι χαρακτήρες του πεδίου title αρχικοποιούνται με τον τερματικό χαρακτήρα ('\0') και τα πεδία year και price με 0 14

15 Αρχικοποίηση πεδίων δομής (ΙΙΙ) Τέλος, η δήλωση μίας δομής μαζί με τη δήλωση του προτύπου της μπορεί να επεκταθεί για την απόδοση αρχικών τιμών στα πεδία της Π.χ. 15

16 Δείκτης σε πεδίο δομής Όπως χρησιμοποιούμε έναν δείκτη σε μία μεταβλητή, μπορούμε να τον χρησιμοποιήσουμε και σε ένα πεδίο μίας δομής Π.χ. δείτε πώς εμφανίζονται τα πεδία της δομής book_1 με χρήση δεικτών 16

17 Αντιγραφή και Σύγκριση δομών Για την αντιγραφή μιας δομής σε μία άλλη χρησιμοποιείται ο τελεστής = Για να εκτελεστεί η αντιγραφή, οι δομές πρέπει να είναι του ίδιου τύπου. Π.χ. 17

18 Με την εντολή: Παρατηρήσεις (Ι) stud2 = stud1; οι τιμές των πεδίων της δομής stud1 αντιγράφονται στα αντίστοιχα πεδία της δομής stud2 Δηλαδή, η παραπάνω εντολή είναι ισοδύναμη με: stud2.code = stud1.code; stud2.grd = stud1.grd; Αν οι stud1 και stud2 δεν ήταν μεταβλητές του ίδιου προτύπου δομής, η εντολή stud2 = stud1; δεν θα μεταγλωττιζόταν, ακόμα κι αν τα δύο διαφορετικά πρότυπα δομής περιείχαν τα ίδια ακριβώς πεδία και σε αριθμό και σε τύπο δεδομένων 18

19 Παρατηρήσεις (ΙΙ) Εκτός από την ανάθεση καμία άλλη ενέργεια δεν επιτρέπεται μεταξύ δομών Π.χ. οι τελεστές == και!= δεν μπορούν να χρησιμοποιηθούν για τον έλεγχο της ισότητας δύο δομών Δηλαδή, δεν επιτρέπεται να γράψετε: if(stud1 == stud2) ή if(stud1!= stud2) Αν πρέπει να γίνει έλεγχος αν δύο δομές περιέχουν τα ίδια ακριβώς δεδομένα, πρέπει αναγκαστικά να λάβει χώρα σύγκριση όλων των πεδίων των δομών ένα προς ένα και ξεχωριστά Δηλαδή: if((stud1.code == stud2.code) && (stud1.grd == stud2.grd)) 19

20 Παράδειγμα δομής που περιέχει πίνακες Ποια είναι η έξοδος του παρακάτω προγράμματος??? Έξοδος: Values: somebody s s 20

21 Παράδειγμα δομής που περιέχει δείκτες Ποια είναι η έξοδος του παρακάτω προγράμματος??? Έξοδος: ebody

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

23 Παράδειγμα δομής που περιέχει δομή (1/2) Ποια είναι η έξοδος του παρακάτω προγράμματος??? 23

24 Παράδειγμα δομής που περιέχει δομή (2/2) Έξοδος: The product s life is 3 years 24

25 Πεδία Δομής με μέγεθος bit (Ι) Ένα πεδίο δομής μπορεί να περιέχει πεδία, των οποίων το μέγεθος να δηλώνεται σαν ένας συγκεκριμένος αριθμός από bits Ένα τέτοιο πεδίο ονομάζεται πεδίο bit και δηλώνεται με τον ακόλουθο τρόπο: τύπος_δεδομένων όνομα_πεδίου_bit : αριθμός_bits; Δηλαδή, η δήλωση ενός πεδίου bit γίνεται με τη χρήση της άνωκάτω τελείας : ανάμεσα στο όνομα του πεδίου και τον αριθμό των bits που θα έχει Η προσπέλαση των πεδίων bit γίνεται με τους ίδιους τρόπους, όπως και με τα απλά πεδία μίας δομής Οι περισσότεροι μεταγλωττιστές εκτός από τον τύπο int υποστηρίζουν και τους τύπους char, short και long ως επιτρεπτούς τύπους δεδομένων ενός πεδίου bit 25

26 Παράδειγμα: Πεδία Δομής με μέγεθος bit (ΙΙ) Μέγεθος bit: 1 Εύρος τιμών: 0 1 struct person { unsigned char sex : 1; unsigned char married : 1; unsigned char children : 4; char name[30]; }; Μέγεθος bit: 4 Εύρος τιμών:

27 Πεδία Δομής με μέγεθος 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

28 Παρατηρήσεις (Ι) Για βέλτιστη εξοικονόμηση μνήμης οι δηλώσεις των πεδίων bit συνίσταται να γίνονται όλες μαζί και να μην παρεμβάλλονται δηλώσεις απλών πεδίων μεταξύ των Κατά τη δήλωση μίας δομής, προτείνεται τα πεδία bit να δηλώνονται στην αρχή της δομής Όταν εκχωρείται μία τιμή σε ένα πεδίο bit, τότε αυτή η τιμή δεν θα πρέπει να κωδικοποιείται σε περισσότερα bits από ότι το μέγεθος του πεδίου, διότι σε μία τέτοια περίπτωση - είναι πολύ πιθανό να εισάγουμε λογικό λάθος (bug) στον κώδικά μας 28

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

30 Παρατηρήσεις (ΙII) Ο κύριος περιορισμός των πεδίων bit είναι ότι ένας δείκτης δεν μπορεί να δείξει στη διεύθυνση ενός πεδίου bit Δηλαδή, στο παρακάτω πρόγραμμα ο μεταγλωττιστής θα εμφάνιζε μήνυμα λάθους 30

31 Παρατηρήσεις (ΙV) Η τιμή ενός πεδίου bit μπορεί να είναι θετική ή αρνητική, ανάλογα με το αν ο μεταγλωττιστής διαχειρίζεται το bit υψηλότερης σημασίας σαν πρόσημο Για να αποφύγετε την περίπτωση του προσήμου, να δηλώνετε τα πεδία bit με τον τύπο unsigned Αν το μέγεθος ενός πεδίου bit είναι ένα bit, πρέπει υποχρεωτικά να δηλωθεί ως unsigned, γιατί ένα bit δεν μπορεί να έχει πρόσημο 31

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

33 Δείκτης σε Δομή (ΙΙ) Χρησιμοποιώντας τον τελεστή * πριν από το όνομα του δείκτη, αποκτούμε πρόσβαση στο περιεχόμενο της μνήμης που δείχνει ο δείκτης, άρα μπορούμε να προσπελάσουμε τα πεδία μίας δομής Π.χ. Έξοδος: N: somebody G:

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

35 Δείκτης σε Δομή (ΙV) Π.χ. το προηγούμενο παράδειγμα θα μπορούσε να γραφεί με χρήση του τελεστή -> αντί του τελεστή τελεία (.) ως εξής: Έξοδος: N: somebody G:

36 Παρατηρήσεις Για να αποκτήσουμε πρόσβαση στα πεδία μίας δομής με χρήση δείκτη προτιμάται η χρήση του τελεστή -> Για έναν δείκτη σε δομή ισχύουν οι ίδιοι κανόνες αριθμητικής που ισχύουν για τους απλούς δείκτες Π.χ. αν αυξηθεί η τιμή του δείκτη κατά ένα, τότε η τιμή του δείκτη θα αυξηθεί κατά το μέγεθος της δομής στην οποία δείχνει Η συνηθέστερη χρήση δεικτών σε δομές είναι κατά τη δημιουργία δυναμικών δομών δεδομένων, όπως λίστες, στοίβες και ουρές 36

37 Πίνακας Δομών Ένας πίνακας δομών είναι ένας πίνακας, του οποίου κάθε στοιχείο είναι μία δομή Π.χ. αν έχουμε δηλώσει τη δομή: τότε η δήλωση: struct student { char name[50]; int code; float grd; }; struct student stud[100]; σημαίνει ότι η μεταβλητή stud είναι ένας πίνακας 100 στοιχείων, και το κάθε στοιχείο του πίνακα είναι μία δομή τύπου student 37

38 Αρχικοποίηση Πίνακα Δομών (Ι) Α Τρόπος (κατά τη δήλωση του πίνακα δομών) Π.χ. για τη δομή: struct student { char name[50]; int code; float grd; }; με την παρακάτω αρχικοποίηση: struct student stud[] = {{"nick stergiou",555,7.3}, {"john nikas",556,5.8}, {"peter karras",557,6.7}}; η τιμή του πεδίου stud[0].name γίνεται "nick stergiou" η τιμή του πεδίου stud[1].code γίνεται 556 η τιμή του πεδίου stud[2].grd γίνεται

39 Αρχικοποίηση Πίνακα Δομών (ΙI) B Τρόπος (απευθείας ενσωμάτωση στη δήλωση του προτύπου της δομής) Π.χ. : struct student { char name[50]; int code; float grd; } stud[] = {{"nick stergiou",555,7.3}, {"john nikas",556,5.8}, {"peter karras",557,6.7}}; Και με τους 2 τρόπους αρχικοποίησης, τα εσωτερικά άγκιστρα μπορούν να παραλειφθούν (προτείνεται όμως να χρησιμοποιούνται, ώστε ο κώδικας να είναι περισσότερο ευανάγνωστος, δηλ. να ξεχωρίζουν μεταξύ τους οι δομές) 39

40 Παρατηρήσεις (Ι) Οι πίνακες δομών χρησιμοποιούνται πολύ συχνά σε προγράμματα που απαιτείται αποθήκευση πληροφορίας που αντιστοιχεί σε διαφορετικές καταχωρήσεις (π.χ. ένα πρόγραμμα για την καταχώρηση των στοιχείων των υπαλλήλων μίας εταιρείας, των στοιχείων των φοιτητών μίας σχολής, της πληροφορίας των προϊόντων μίας αποθήκης, κτλ...) Δηλαδή, οι πίνακες δομών μπορούν να χρησιμοποιηθούν σαν μία βάση δεδομένων Όταν γίνεται η δήλωση του πίνακα δομών μπορούμε να θέσουμε την τιμή 0 σε όλα τα πεδία κάθε δομής Π.χ. αν γράψουμε: struct student stud[100] = {0} τότε όλα τα πεδία κάθε δομής αποκτούν την τιμή 0 40

41 Παρατηρήσεις (ΙΙ) Για τους πίνακες δομών ισχύουν όλοι οι κανόνες που ισχύουν για τους απλούς πίνακες Π.χ. για την προηγούμενη δομή stud (με πρότυπο student) αφού το όνομα ενός πίνακα είναι δείκτης στη διεύθυνση του 1ου στοιχείου του, τότε: το *stud είναι ισοδύναμο με stud[0] το *(stud + 1) είναι ισοδύναμο με stud[1] το *(stud + 2) είναι ισοδύναμο με stud[2] κ.ο.κ. Άρα, αν θέλουμε να προσπελάσουμε το πεδίο grd του τρίτου υπαλλήλου, οι εκφράσεις stud[2].grd και (*(stud + 2)).grd είναι ισοδύναμες (οι παρενθέσεις στη δεύτερη περίπτωση είναι απαραίτητες λόγω των προτεραιοτήτων) Προφανώς, ο χειρισμός ενός πίνακα δομών με χρήση της θέσης του κάθε στοιχείου στον πίνακα, είναι πιο απλός και ευανάγνωστος από τον αντίστοιχο χειρισμό με δείκτη 41

42 Συνάρτηση με παράμετρο Δομή Μία δομή μπορεί να διοχετευθεί σαν παράμετρος σε μία συνάρτηση μεταβιβάζοντας είτε την τιμή της είτε τη διεύθυνσής της Υπενθυμίζεται ότι, όταν μεταβιβάζεται η τιμή μιας παραμέτρου σε συνάρτηση, τότε στη συνάρτηση διοχετεύονται αντίγραφα των παραμέτρων του προγράμματος που την καλεί Επομένως, οποιαδήποτε αλλαγή γίνει στις τιμές των πεδίων της δομής μέσα στη συνάρτηση δεν επηρεάζει τις αντίστοιχες τιμές των πεδίων της δομής που διοχετεύθηκε στη συνάρτηση, γιατί οι τυχόν αλλαγές γίνονται σε αντίγραφό της Αντίθετα, σε περίπτωση που μεταβιβάζεται η διεύθυνση της παραμέτρου σε συνάρτηση, στη συνάρτηση διοχετεύονται οι διευθύνσεις μνήμης των παραμέτρων του προγράμματος που την καλεί και όχι αντίγραφά τους, όπως προηγουμένως Επομένως, αφού η συνάρτηση έχει πρόσβαση στη διεύθυνση της δομής του προγράμματος που την κάλεσε, τότε μπορεί να μεταβάλλει τις τιμές των πεδίων της 42

43 Διοχέτευση τιμής της δομής σε συνάρτηση (Ι) Π.χ. αν θεωρήσουμε ότι έχει δηλωθεί η παρακάτω δομή: struct student { char name[50]; int code; float grd; }; Και έχει δηλωθεί κι η παρακάτω συνάρτηση: Όρισμα συνάρτησης: δομή τύπου student void funct(struct student stud_1); Αφού επίσης δηλωθεί και αρχικοποιηθεί μία μεταβλητή-δομή (π.χ. stud) τύπου student: struct student stud; strcpy(stud.name, "somebody"); stud.code = 555; stud.grd = 7; 43

44 Διοχέτευση τιμής της δομής σε συνάρτηση (ΙΙ) Κατά τη διοχέτευση της τιμής μιας δομής σε συνάρτηση (π.χ. από το κύριο πρόγραμμα, δηλ. μέσα από τη συνάρτηση main()): funct(stud); δημιουργείται προσωρινά στη μνήμη η μεταβλητή stud_1, η οποία αποτελεί αντίγραφο της μεταβλητής stud Αντίγραφο σημαίνει ότι οι αρχικές τιμές των πεδίων της δομής stud_1 θα γίνουν ίσες με τις αντίστοιχες τιμές των πεδίων της δομής stud Η μεταβλητή stud_1 δεν έχει καμία σχέση με τη μεταβλητή stud του κυρίως προγράμματος, αφού βρίσκονται σε διαφορετικές θέσεις μνήμης Επομένως, οποιαδήποτε αλλαγή γίνει στις τιμές των πεδίων της δομής stud_1 δεν επηρεάζει τις αντίστοιχες τιμές των πεδίων της δομής stud 44

45 Διοχέτευση διεύθυνσης της δομής σε συνάρτηση (Ι) Π.χ. αν θεωρήσουμε ότι έχει δηλωθεί η παρακάτω δομή: struct student { char name[50]; int code; float grd; }; Και έχει δηλωθεί κι η παρακάτω συνάρτηση: Όρισμα συνάρτησης: δείκτης σε δομή τύπου student void funct(struct student *stud_ptr); Αφού επίσης δηλωθεί και αρχικοποιηθεί μία μεταβλητή-δομή (π.χ. stud) τύπου student: struct student stud; strcpy(stud.name, "somebody"); stud.code = 555; stud.grd = 7; 45

46 Διοχέτευση διεύθυνσης της δομής σε συνάρτηση (ΙΙ) Κατά τη διοχέτευση της διεύθυνσης μιας δομής σε συνάρτηση (π.χ. από το κύριο πρόγραμμα, δηλ. μέσα από τη συνάρτηση main()): funct(&stud); στη συνάρτηση διοχετεύονται οι διευθύνσεις μνήμης των παραμέτρων του προγράμματος που την καλεί και όχι αντίγραφά τους, όπως προηγουμένως Επομένως, αφού η συνάρτηση έχει πρόσβαση στη διεύθυνση της δομής του προγράμματος που την κάλεσε, τότε μπορεί να μεταβάλλει τις τιμές των πεδίων της 46

47 Παρατηρήσεις Για τη μεταβίβαση μίας δομής σε μία συνάρτηση προτείνεται να γίνεται διοχέτευση της διεύθυνσής της, ακόμα και αν δεν απαιτείται αλλαγή στις τιμές των πεδίων της Ο κύριος λόγος είναι γιατί αποφεύγεται η διαδικασία δημιουργίας αντιγράφου της δομής στη στοίβα, άρα το πρόγραμμα εκτελείται πιο γρήγορα Σε περίπτωση που η συνάρτηση δεν πρέπει να αλλάξει τις τιμές των πεδίων της δομής, τότε ο προγραμματιστής, για να είναι σίγουρος ότι κάτι τέτοιο δεν θα συμβεί στο μέλλον, μπορεί να προσθέσει στη δήλωση της συνάρτησης τη λέξη const πριν από τη λέξη struct, δηλαδή να δηλώσει τον δείκτη stud_ptr ως const Π.χ. void funct(const struct student *stud_ptr); 47

48 Ενώσεις (Unions) Μία ένωση (union) στη C μοιάζει με μία δομή (structure), με τη σημαντική όμως διαφορά, ότι μόνο ένα πεδίο της ένωσης μπορεί να προσπελαύνεται κάθε φορά Αυτό συμβαίνει, γιατί τα πεδία μίας ένωσης δεν καταλαμβάνουν ξεχωριστό χώρο στη μνήμη, αλλά έναν κοινό χώρο μνήμης 48

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

50 Παράδειγμα Ποια είναι η έξοδος του παρακάτω προγράμματος??? Έξοδος: Size: 8 50

51 Πρόσβαση πεδίων Ένωσης Τα πεδία μίας ένωσης μπορούν να προσπελαστούν με τους ίδιους ακριβώς τρόπους που προσπελαύνονται και τα πεδία μίας δομής Ωστόσο, επειδή όλα τα πεδία αποθηκεύονται σε κοινή μνήμη, μόνο το τελευταίο πεδίο στο οποίο εκχωρήθηκε μία τιμή μπορεί να χρησιμοποιηθεί (όλα τα υπόλοιπα πεδία χάνουν τις προηγούμενες τιμές που πιθανόν τους είχαν ανατεθεί και αποκτούν νέες τυχαίες τιμές) 51

52 Παράδειγμα Ποια είναι η έξοδος του παρακάτω προγράμματος??? Έξοδος: a τυχαία τιμή τυχαία τιμή τυχαία τιμή 64 τυχαία τιμή τυχαία τιμή τυχαία τιμή

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 ο Τελεστές Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Ο τελεστής εκχώρησης = Ο τελεστής = χρησιµοποιείται για την απόδοση τιµής (ή αλλιώς ανάθεση τιµής) σε µία µεταβλητή Π.χ.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 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;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3 ο Εργαστήριο Μεταβλητές, Τελεστές

3 ο Εργαστήριο Μεταβλητές, Τελεστές 3 ο Εργαστήριο Μεταβλητές, Τελεστές Μια μεταβλητή έχει ένα όνομα και ουσιαστικά είναι ένας δείκτης σε μια συγκεκριμένη θέση στη μνήμη του υπολογιστή. Στη θέση μνήμης στην οποία δείχνει μια μεταβλητή αποθηκεύονται

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

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

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

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

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

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

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

Κλάσεις και αντικείμενα #include <iostream.h<

Κλάσεις και αντικείμενα #include <iostream.h< Κλάσεις και αντικείμενα #include class Person private: char name[30]; int age; public: void readdata() cout > name; cout > age; void

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 13: Σύνθετοι Τύποι Δεδομένων (Δομές) Σύνθετοι τύποι δεδομένων Συχνά τα δεδομένα ενός προγράμματος δεν είναι απλά κάποιοι μεμονωμένοι αριθμοί ή χαρακτήρες. Χρειάζεται να

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

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

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

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

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

Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος Τμήμα Πληροφορικής & Επικοινωνιών Δρ. Θεόδωρος Γ. Λάντζος http://www.teiser.gr/icd/staff/lantzos lantzos@teiser.gr 1 Μονοδιάστατοι Πίνακες (tables) Μια συλλογή μεταβλητών ίδιου τύπου οι οποίες είναι αποθηκευμένες

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΗΥ-150. Προγραμματισμός ΗΥ-150 Εντολές Ελέγχου Ροής Σειριακή εκτέλεση εντολών Όλα τα προγράμματα «γράφονται» χρησιμοποιώντας 3 είδη εντολών: Σειριακές εντολές (sequential built in C) Εντολές απόφασης (if, if/else, switch) Περιλαμβάνει

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

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

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

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

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

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

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

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

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

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

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου

Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου Εργαστήριο 2: Δομή Προγράμματος C++, Χειρισμός Μεταβλητών και Συναρτήσεις Εισόδου - Εξόδου Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η ανάλυση των βασικών χαρακτηριστικών της Γλώσσας Προγραμματισμού

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

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

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

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

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

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

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

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

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Ενότητα 12 Δομές (Structures) Πανεπιστήμιο Αιγαίου Τμήμα Μηχανικών Πληροφοριακών και Επικοινωνιακών Συστημάτων Αφαιρετικότητα Με τις συναρτήσεις επιτυγχάνουμε αφαιρετικότητα

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

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

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

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

Προγραµµατισµός Ι Αλφαριθµητικά Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Προγραµµατισµός Ι 1 Νικόλαος Δ.

Προγραµµατισµός Ι Αλφαριθµητικά Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Προγραµµατισµός Ι 1 Νικόλαος Δ. Αλφαριθµητικά Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι 1 Αλφαριθµητικά - Εισαγωγή Ένα αλφαριθµητικό (string) είναι µία

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

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

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

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

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ )

Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ ) Κεφάλαιο 2 ο Βασικές Έννοιες Αλγορίθμων (σελ. 25 48) Τι είναι αλγόριθμος; Γ ΛΥΚΕΙΟΥ Αλγόριθμος είναι μία πεπερασμένη σειρά ενεργειών, αυστηρά καθορισμένων και εκτελέσιμων σε πεπερασμένο χρονικό διάστημα,

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

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

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

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

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

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

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

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

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

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 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 στην

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

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

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

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Εκφράσεις και Λίγες Εντολές Οι εκφράσεις της C Τελεστές Απλές και σύνθετες εντολές Εντολές ελέγχου (επιλογής) Εισαγωγή σε

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

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

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

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

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

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

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

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

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

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Προγραμματισμός Η/Υ Ενότητα 2 η : Η Γλώσσα Προγραμματισμού VB.NET (1 ο Μέρος) Ι. Ψαρομήλιγκος Χ. Κυτάγιας Τμήμα Λογιστικής & Χρηματοοικονομικής

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

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

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

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

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

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΠΡΑΞΕΙΣ ΜΕΤΑΒΛΗΤΕΣ. Ακέραιοι αριθμοί (int) Πράξεις μεταξύ ακεραίων αριθμών ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΠΡΑΞΕΙΣ ΜΕΤΑΒΛΗΤΕΣ 1 Τύποι δεδομένων Η γλώσσα προγραμματισμού C++ υποστηρίζει τους παρακάτω τύπους δεδομένων: 1) Ακέραιοι αριθμοί (int). 2) Πραγματικοί αριθμοί διπλής ακρίβειας

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

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

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

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

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

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

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

Κλάσεις και Αντικείµενα

Κλάσεις και Αντικείµενα Κλάσεις και Αντικείµενα Γρηγόρης Τσουµάκας Τµήµα Πληροφορικής, Αριστοτέλειο Πανεπιστήµιο Θεσσαλονίκης Κλάσεις και Αντικείµενα 2 Τα αντικείµενα σε µια αντικειµενοστρεφή γλώσσα προγραµµατισµού, µοντελοποιούν

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

3. Εκφράσεις και έλεγχος ροής

3. Εκφράσεις και έλεγχος ροής 3. Εκφράσεις και έλεγχος ροής Τελειώνοντας αυτό το κεφάλαιο θα μπορείτε: Να διακρίνετε ανάμεσα σε μεταβλητές μέλη και αυτόματες μεταβλητές Να περιγράφετε την αρχικοποίηση των μεταβλητών μελών Να αναγνωρίζετε

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

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript

Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript Β. Εισαγωγή στον Προγραμματισμό Η/Υ με την JavaScript Β.1 Τύποι Δεδομένων Όλες οι γλώσσες προγραμματισμού (πρέπει να) υποστηρίζουν πέντε (5) πρωταρχικούς τύπους δεδομένων: char (character) int (integer)

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

ΑΣΚΗΣΗ 1. Structural Programming

ΑΣΚΗΣΗ 1. Structural Programming ΑΣΚΗΣΗ 1 Structural Programming Στην άσκηση αυτή θα υλοποιήσετε σε C ένα απλό πρόγραµµα Βάσης εδοµένων το οποίο θα µπορούσε να χρησιµοποιηθεί από την γραµµατεία ενός πανεπιστηµίου για την αποθήκευση και

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

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στην Python Python scripts Ένα πρόγραμμα στην Python (συχνά αποκαλείται script) αποτελείται από μία ακολουθία ορισμών και εντολών. H ακολουθία των ορισμών και

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

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

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

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

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ

2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 8 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΔΟΜΗ ΕΠΙΛΟΓΗΣ 1) Ποιοι είναι οι τελεστές σύγκρισης και

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

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β.

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β. ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ Διδάσκουσα Δρ Β. Καβακλή Χειμερινό Εξάμηνο 2001 1 Σύνολο χαρακτήρων της Pascal Για

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