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

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

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

Transcript

1 Εισαγωγή Στον Προγραµµατισµό «C» Δείκτες Πανεπιστήµιο Πελοποννήσου Τµήµα Επιστήµης & Τεχνολογίας Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας

2 Μνήµη Υπολογιστή Η µνήµη RAM (Random Access Memory) ενός υπολογιστή αποτελείται από πολλές χιλιάδες θέσεις αποθήκευσης δεδοµένων που έχουν διαδοχική αρίθµηση Κάθε θέση ή κελί µνήµης προσδιορίζεται από µία µοναδική διεύθυνση Η διεύθυνση της κάθε θέσης µνήµης είναι ένας αύξοντας αριθµός µε τιµή που κυµαίνεται από το 0 έως µία µέγιστη τιµή (η οποία εξαρτάται από το µέγεθος της διαθέσιµης µνήµης στον συγκεκριµένο υπολογιστή) Το περιεχόµενο της κάθε θέσης µνήµης είναι ένας ακέραιος αριθµός µε µέγεθος 1 byte

3 Μνήµη Υπολογιστή και Μεταβλητές Όταν δηλώνεται µία µεταβλητή, ο µεταγλωττιστής δεσµεύει τις απαραίτητες συνεχόµενες θέσεις (bytes) στη µνήµη, για να αποθηκεύσει την τιµή της Όπως ήδη ξέρουµε, κάθε τύπος µεταβλητής απαιτεί συγκεκριµένο χώρο στη µνήµη Π.χ. ο τύπος char απαιτεί 1 byte µνήµης, οι τύποι float και int απαιτούν 4 bytes, ο τύπος double απαιτεί 8 bytes, κ.ο.κ. Όταν µία µεταβλητή καταλαµβάνει πολλές θέσεις µνήµης (δηλ. περισσότερα από 1 byte), τότε ως διεύθυνση της µεταβλητής θεωρείται η διεύθυνση της πρώτης θέσης µνήµης (δηλ. του 1ου byte από τα bytes που καταλαµβάνει η µεταβλητή)

4 Έστω η δήλωση: int a; Παράδειγµα Τότε: Ο µεταγλωττιστής ψάχνει και βρίσκει 4 συνεχόµενες θέσεις µνήµης στη RAM, οι οποίες δεν πρέπει να έχουν δεσµευτεί για άλλη µεταβλητή, και τις δεσµεύει Σε αυτές τις θέσεις θα αποθηκεύεται η τιµή της µεταβλητής a Στο διπλανό σχήµα θεωρούµε ότι η διεύθυνση της µεταβλητής a αρχίζει στη θέση 5000 Η τιµή της a θα αποθηκευτεί στις θέσεις µνήµης από 5000 έως και 5003 Ο µεταγλωττιστής συσχετίζει το όνοµα της µεταβλητής a, µε τη διεύθυνση της µεταβλητής Όταν το πρόγραµµα χρησιµοποιεί το όνοµα της µεταβλητής, ο µεταγλωττιστής προσπελαύνει αυτοµάτως τη διεύθυνση της µεταβλητής Π.χ. µε την εντολή a = 10; ο µεταγλωττιστής γνωρίζει ότι η διεύθυνση της a είναι η 5000 και θέτει το περιεχόµενό της ίσο µε 10, ξεκινώντας από την οκτάδα µε την χαµηλότερη διεύθυνση Memory Memory

5 Δήλωση Δείκτη Ο δείκτης είναι µία µεταβλητή, στην οποία αποθηκεύεται η διεύθυνση µνήµης µίας άλλης µεταβλητής Η γενική περίπτωση δήλωσης ενός δείκτη είναι: τύπος_δεδοµένων *όνοµα_δείκτη; Παρατηρήσεις O τύπος_δεδοµένων µπορεί να είναι οποιοσδήποτε από τους τύπους µεταβλητών της C και δηλώνει τον τύπο της µεταβλητής στην οποία συνηθίζουµε να λέµε «δείχνει ο δείκτης» Το όνοµα_δείκτη πρέπει να ακολουθεί τους κανόνες ονοµατολογίας της C και να µην υπάρχει άλλη δήλωση µε το ίδιο όνοµα µέσα στο πρόγραµµα Ο τελεστής * χρησιµοποιείται για να δηλώσει ότι η µεταβλητή είναι δείκτης

6 Παραδείγµατα Δήλωσης Δείκτη int *ptr; Η µεταβλητή ptr είναι ένας δείκτης προς κάποια ακέραια µεταβλητή Αυτό σηµαίνει, ότι στον δείκτη ptr θα αποθηκευτεί η διεύθυνση κάποιας ακέραιας µεταβλητής τύπου int double *pt; Η µεταβλητή pt είναι ένας δείκτης προς κάποια πραγµατική µεταβλητή (και µάλιστα, τύπου double) Αυτό σηµαίνει, ότι στον δείκτη pt θα αποθηκευτεί η διεύθυνση κάποιας πραγµατικής µεταβλητής (και πιο συγκεκριµένα, µιας µεταβλητής τύπου double)

7 Απόδοση τιµής σε Δείκτη Ένας δείκτης, πριν χρησιµοποιηθεί, πρέπει να έχει σαν τιµή τη διεύθυνση κάποιας µεταβλητής ή, ισοδύναµα, να «δείχνει» σε κάποια υπαρκτή µεταβλητή Για να βρούµε τη διεύθυνση κάποιας µεταβλητής χρησιµοποιούµε τον τελεστή διεύθυνσης & πριν από το όνοµα της µεταβλητής Υπενθυµίζεται ότι η διεύθυνση είναι η θέση της µεταβλητής στη µνήµη του υπολογιστή και δεν έχει καµία σχέση µε την τιµή της µεταβλητής

8 Παρατηρήσεις Για την εµφάνιση στην οθόνη της διεύθυνσης µνήµης µίας µεταβλητής συνήθως χρησιµοποιείται το προσδιοριστικό %p, το οποίο εµφανίζει τη διεύθυνση σε δεκαεξαδική µορφή (µπορούµε να χρησιµοποιήσουµε και το προσδιοριστικό %d, για την εµφάνιση της διεύθυνσης σε δεκαδική µορφή) Όταν εκχωρείται η διεύθυνση µίας µεταβλητής σε έναν δείκτη, ο δείκτης πρέπει να έχει δηλωθεί σαν δείκτης στον ίδιο τύπο µε τη µεταβλητή Προσοχή λοιπόν σε λάθη όπως αυτό του παρακάτω παραδείγµατος int *ptr; float a; ptr = &a; Η τιµή που εκχωρείται σε έναν δείκτη πρέπει να είναι η διεύθυνση κάποιας υπαρκτής µεταβλητής και όχι µία σταθερή αριθµητική τιµή Στο παρακάτω παράδειγµα ο µεταγλωττιστής θα εµφανίσει µήνυµα λάθους int *ptr; ptr = 1000;

9 Η ειδική τιµή NULL (Ι) Υπενθυµίζεται ότι, όταν δηλώνεται µία µεταβλητή, τότε ο µεταγλωττιστής αναθέτει στη µεταβλητή µία τυχαία τιµή Εποµένως, όταν δηλώνεται µία µεταβλητή-δείκτης, τότε η αρχική τιµή του δείκτη αυτού είναι µία τυχαία διεύθυνση µνήµης Στο παρακάτω παράδειγµα, εµφανίζεται στην οθόνη η τυχαία τιµή που εκχώρησε ο µεταγλωττιστής στον δείκτη ptr

10 Η ειδική τιµή NULL (ΙΙ) Όταν θέλουµε να δηλώσουµε ρητά ότι ένας δείκτης δεν δείχνει πουθενά (null pointer), τότε του αναθέτουµε την τιµή NULL Η τιµή NULL είναι µία ειδική τιµή, ίση µε το µηδέν Εποµένως, το επόµενο παράδειγµα εµφανίζει την τιµή 0

11 Παρατηρήσεις Όταν δηλώνεται µία µεταβλητή-δείκτης, ο µεταγλωττιστής, όπως κάνει και για οποιαδήποτε µεταβλητή, δεσµεύει τις απαραίτητες θέσεις µνήµης για να αποθηκεύσει την τιµή του Το επόµενο πρόγραµµα εµφανίζει πόσα bytes µνήµης δεσµεύτηκαν για τον δείκτη ptr µε χρήση του τελεστή sizeof Ta bytes που δεσµεύονται για µία µεταβλητή-δείκτη είναι 4, ανεξάρτητα από τον τύπο δεδοµένων στον οποίο δείχνει ο δείκτης Δηλαδή, στο προηγούµενο παράδειγµα είτε έχουµε τη δήλωση char *ptr; ή double *ptr; το αποτέλεσµα είναι 4

12 Χρήση Δείκτη Για να αποκτήσουµε πρόσβαση στο περιεχόµενο κάποιας διεύθυνσης µνήµης µε χρήση δείκτη, χρησιµοποιούµε τον τελεστή * πριν από το όνοµα του δείκτη Π.χ.

13 Δεν ξεχνώ λοιπόν... Δήλωση Μεταβλητών Δήλωση Μεταβλητών Δεικτών Ανάθεση τιµών στους Δείκτες (τις διευθύνσεις υπαρκτών µεταβλητών) Απόδοση τιµής σε κάποια µεταβλητή, µέσω δείκτη (το περιεχόµενο της διεύθυνσης στην οποία δείχνει ο δείκτης)

14 Παρατηρήσεις (Ι) Πριν χρησιµοποιηθεί κάποια µεταβλητή-δείκτης πρέπει να της έχει εκχωρηθεί µία υπαρκτή διεύθυνση, δηλαδή ο δείκτης να δείχνει στη διεύθυνση κάποιας µεταβλητής Το επόµενο πρόγραµµα θα εµφανίσει µήνυµα λάθους κατά την εκτέλεσή του, γιατί στην εντολή i = *ptr; χρησιµοποιείται ο δείκτης ptr, ο οποίος δεν δείχνει στη διεύθυνση κάποιας µεταβλητής Συνήθως, σε Unix/Linux περιβάλλον το παραπάνω λάθος υποδεικνύεται µε το µήνυµα Segmentation fault

15 Παρατηρήσεις (ΙΙ) Το επόµενο πρόγραµµα λειτουργεί σωστά, γιατί τώρα ο δείκτης ptr δείχνει στη διεύθυνση κάποιας υπαρκτής µεταβλητής (της µεταβλητής j) πριν χρησιµοποιηθεί στην εντολή i = *ptr; Εποµένως, αφού ο δείκτης ptr δείχνει στη διεύθυνση της µεταβλητής j, το *ptr θα είναι ίσο µε την τιµή του j, δηλαδή 10 Άρα, µε την εντολή i = *ptr; η τιµή του i θα γίνει ίση µε 10 Έξοδος: Value = 10

16 Παρατηρήσεις (ΙΙΙ) Οι τελεστές * (περιεχόµενο διεύθυνσης µνήµης που δείχνει ο δείκτης) και & (διεύθυνση µνήµης µιας µεταβλητής) είναι µεταξύ τους συµπληρωµατικοί ή αντίστροφοι (αλλιώς λέµε ότι αλληλοαναιρούνται ή αλληλοεξουδετερώνονται) Έξοδος: The address of a is 0028F958 The value of ptr is 0028F958 The value of a is 21 The value of *ptr is 21 Showing that * and & are complements of each other &*ptr = 0028F958 *&ptr = 0028F958

17 Παραδείγµατα (Ι) Ποια είναι η έξοδος του παρακάτω προγράµµατος??? Έξοδος: 30

18 Παραδείγµατα (ΙΙ) Ποια είναι η έξοδος του παρακάτω προγράµµατος??? Έξοδος: 25

19 Παραδείγµατα (ΙΙΙ) Ποια είναι η έξοδος του παρακάτω προγράµµατος??? Έξοδος: 11

20 Παραδείγµατα (ΙV) Ποια είναι η έξοδος του παρακάτω προγράµµατος??? Έξοδος: 0 1 2

21 Παραδείγµατα (V) Ποια είναι η έξοδος του παρακάτω προγράµµατος??? Έξοδος: 200

22 Ο δείκτης void* Ένας δείκτης σε τύπο void* είναι ένας «γενικός» δείκτης, µε την έννοια ότι µπορεί να δείξει σε µία µεταβλητή οποιουδήποτε τύπου Για να ανακτήσουµε το περιεχόµενο µίας διεύθυνσης µε χρήση ενός void* δείκτη πρέπει να προσαρµόσουµε τον τύπο του δείκτη στον τύπο της µεταβλητής, όπως φαίνεται στο παρακάτω πρόγραµµα Για να αποκτήσουµε πρόσβαση στο περιεχόµενο της ακέραιας µεταβλητής i, προσαρµόζουµε τον τύπο του δείκτη σε int* Με αυτόν τον τρόπο, µπορούµε να αλλάξουµε την τιµή της µεταβλητής στην οποία δείχνει ο «γενικός» δείκτης Εποµένως, το πρόγραµµα θα εµφανίσει: 30

23 Χρήση της λέξης const στη δήλωση ενός δείκτη Χρησιµοποιούµε τη δεσµευµένη λέξη const κατά τη δήλωση του δείκτη, όταν επιθυµούµε µία µεταβλητή-δείκτης : είτε να µην µπορεί να αλλάξει την τιµή της µεταβλητής στην οποία δείχνει (χρήση της λέξης const πριν τον τύπο δεδοµένων) είτε να µην µπορεί να δείξει σε κάποια άλλη µεταβλητή (χρήση της λέξης const πριν το όνοµα του δείκτη) Δείτε λοιπόν, τι επιτρέπεται και τι όχι, στα παρακάτω παραδείγµατα Ο δείκτης ptr δεv µπορεί να αλλάξει την τιµή της µεταβλητής στην οποία δείχνει (της i) Ωστόσο, επιτρέπεται να δείξει σε κάποια άλλη µεταβλητή ίδιου τύπου (εδώ της j) Ο δείκτης ptr δεv µπορεί να δείξει σε άλλη µεταβλητή (όπως π.χ. εδώ στην j), παρά µόνο στην i (ωστόσο, επιτρέπεται να αλλάξει την τιµή του i)

24 Αριθµητική Δεικτών Οι µόνοι τελεστές που µπορούν να χρησιµοποιηθούν στην αριθµητική δεικτών είναι οι: και Αντίστοιχα, οι µαθηµατικές πράξεις που επιτρέπονται µε δείκτες είναι οι: πρόσθεση ακεραίου σε δείκτη αφαίρεση ακεραίου από δείκτη και αφαίρεση δύο δεικτών που δείχνουν στον ίδιο τύπο δεδοµένων Οι παραπάνω πράξεις έχουν ορισµένες ιδιαιτερότητες και για τον λόγο αυτό, απαιτείται ιδιαίτερη προσοχή

25 Δείκτες και Ακέραιοι (Αύξηση Δεικτών) Όταν προστίθεται ο αριθµός 1 σε έναν δείκτη, τότε η τιµή του δείκτη αυξάνει σύµφωνα µε το µέγεθος του τύπου δεδοµένων στον οποίο δείχνει Π.χ. αν ο δείκτης έχει δηλωθεί σαν δείκτης σε: char, τότε η τιµή του δείκτη αυξάνεται κατά 1, αφού ο τύπος char δεσµεύει 1 byte από τη µνήµη int ή float, τότε η τιµή του δείκτη αυξάνεται κατά 4, αφού οι τύποι int και float δεσµεύουν 4 bytes από τη µνήµη double, τότε η τιµή του δείκτη αυξάνεται κατά 8, αφού ο τύπος double δεσµεύει 8 bytes από τη µνήµη Στη γενική περίπτωση, όταν προστίθεται ένας ακέραιος αριθµός n σε έναν δείκτη, τότε η τιµή του αυξάνεται κατά το γινόµενο: n * µέγεθος του τύπου (στον οποίο δείχνει)

26 Παράδειγµα Τι εµφανίζει η τελευταία printf() του προγράµµατος??? Έξοδος: 1004 (σε δεκαεξαδική µορφή) Αν είχα αντί για ptr++; Την εντολή ptr+=5;??? Έξοδος: 1020 (σε δεκαεξαδική µορφή)

27 Δείκτες και Ακέραιοι (Μείωση Δεικτών) Ισχύει ακριβώς ό,τι ισχύει και κατά την αύξηση ενός δείκτη Δηλ. στη γενική περίπτωση, όταν αφαιρείται ένας ακέραιος αριθµός n από έναν δείκτη, τότε η τιµή του µειώνεται κατά το γινόµενο: Π.χ. n * µέγεθος του τύπου (στον οποίο δείχνει) Έξοδος: 980 (σε δεκαεξαδική µορφή)

28 Αφαίρεση Δεικτών Η αφαίρεση δεικτών, επιτρέπεται µόνο µεταξύ δεικτών, οι οποίοι δείχνουν σε ίδιο τύπο δεδοµένων Το αποτέλεσµα της αφαίρεσης είναι ένας ακέραιος αριθµός που δεν δηλώνει πόσο απέχουν µεταξύ τους (δηλ. πόσες θέσεις µνήµης), αλλά πόσα στοιχεία του τύπου που δείχνουν οι δείκτες µεσολαβούν µεταξύ τους

29 Παράδειγµα Τι εµφανίζει η τελευταία printf() του προγράµµατος??? Έξοδος: 10 (και όχι 40)

30 Αφαίρεση Δεικτών Στη γενική περίπτωση, το αποτέλεσµα της αφαίρεσης δεικτών είναι το πηλίκο της διαίρεσης της αριθµητικής διαφοράς των δύο δεικτών µε το µέγεθος του τύπου, στον οποίο δείχνουν Στο προηγούµενο παράδειγµα το αποτέλεσµα προκύπτει ως: ( ) / sizeof(int) = 40/4 = 10 Προφανώς, αν αφαιρέτης είναι ο δείκτης µε τη χαµηλότερη διεύθυνση στη µνήµη και αφαιρετέος ο δείκτης µε την υψηλότερη διεύθυνση αντίστοιχα, τότε το αποτέλεσµα της αφαίρεσης των δεικτών θα είναι το ίδιο αριθµητικά, µε αρνητικό όµως πρόσηµο Στο προηγούµενο παράδειγµα αν στην τελευταία printf() ζητούσαµε τη διαφορά ptr1-ptr2, το αποτέλεσµα θα ήταν: ( ) / sizeof(int) = -40/4 = -10

31 Σύγκριση Δεικτών Η σύγκριση δεικτών έχει νόηµα µόνο αν και οι δύο δείκτες δείχνουν σε µέλη της ίδιας δοµής δεδοµένων (π.χ. σε πίνακα) Οι δείκτες µπορούν να συγκριθούν µε χρήση των τελεστών σύγκρισης ==,!=, >, <, >= και <= Π.χ., αν θέλουµε να ελέγξουµε αν δύο δείκτες ptr1 και ptr2 δείχνουν στην ίδια διεύθυνση µνήµης µπορούµε να γράψουµε: if(ptr1 == ptr2) ή αντίστοιχα: if(ptr1!= ptr2) Π.χ., αν θέλουµε να ελέγξουµε αν ο δείκτης ptr1 δείχνει σε κάποια µεταβλητή µε «µεγαλύτερη» διεύθυνση από την αντίστοιχη που δείχνει ο δείκτης ptr2 µπορούµε να γράψουµε: if(ptr1 > ptr2)

32 Παρατηρήσεις Ο µεταγλωττιστής, κατά την αφαίρεση και την πρόσθεση ενός ακέραιου αριθµού σε έναν δείκτη, αλλάζει την τιµή του δείκτη µε βάση το µέγεθος του τύπου δεδοµένων που δείχνει ο δείκτης Εκτός από την πρόσθεση ή την αφαίρεση ακεραίων αριθµών σε/από έναν δείκτη, τη σύγκριση και την αφαίρεση δεικτών ίδιου τύπου, καµία άλλη αριθµητική πράξη δεν επιτρέπεται Π.χ. οι εντολές: πολλαπλασιασµού ptr *= 2; πρόσθεσης δεκαδικού ptr += 7.5; πρόσθεσης δεικτών ptr1 + ptr2; δεν είναι επιτρεπτές εκφράσεις ακόµα κι αν οι αυτοί δείκτες δείχνουν στον ίδιο τύπο δεδοµένων

33 Παραδείγµατα (Ι) Ποια είναι η έξοδος του παρακάτω προγράµµατος??? Έξοδος: Το τυχαίο περιεχόµενο των επόµενων 4 bytes µετά τη θέση της µεταβλητής i στη µνήµη

34 Παραδείγµατα (ΙΙ) Ποια είναι η έξοδος του παρακάτω προγράµµατος??? Έξοδος: i=40 j=60 k=130

35 Παραδείγµατα (ΙII) Ποια είναι η έξοδος του παρακάτω προγράµµατος??? Έξοδος:

36 Παραδείγµατα (ΙV) Ποια είναι η έξοδος του παρακάτω προγράµµατος??? Έξοδος: Value = 20

37 Παραδείγµατα (V) Ποια είναι η έξοδος του παρακάτω προγράµµατος??? Έξοδος: Value = 120

38 Παραδείγµατα (VI) Ποια είναι η έξοδος του παρακάτω προγράµµατος??? Έξοδος: Value = 300

39 Παραδείγµατα (VIΙ) Γράψτε ένα πρόγραµµα το οποίο να διαβάζει δύο ακέραιους, τους οποίους να αποθηκεύει σε δύο δείκτες για ακέραιους. Με χρήση αυτών των δεικτών, αποθηκεύστε το άθροισµά τους σε έναν άλλον δείκτη σε ακέραιο και εµφανίστε τα περιεχόµενα του κάθε δείκτη

40 Δείκτες και Πίνακες - Εισαγωγή Τα στοιχεία ενός πίνακα αποθηκεύονται σε διαδοχικές θέσεις µνήµης, µε το πρώτο στοιχείο στη χαµηλότερη διεύθυνση Τα επόµενα στοιχεία του πίνακα αποθηκεύονται στις υψηλότερες διευθύνσεις Το πόσο υψηλότερα, εξαρτάται από τον τύπο δεδοµένων του πίνακα (char, int, float,..) Π.χ. σε έναν πίνακα χαρακτήρων (char), κάθε στοιχείο του πίνακα βρίσκεται 1 byte µετά από το προηγούµενο στοιχείο και η διεύθυνση κάθε στοιχείου είναι 1 θέση υψηλότερα από τη διεύθυνση του προηγούµενου στοιχείου Παροµοίως, σε έναν πίνακα ακεραίων (int), κάθε στοιχείο του πίνακα βρίσκεται 4 bytes µετά από το προηγούµενο στοιχείο και η διεύθυνση κάθε στοιχείου είναι 4 θέσεις υψηλότερα από τη διεύθυνση του προηγούµενου στοιχείου

41 Έστω η δήλωση του πίνακα: Παράδειγµα int arr[3]; Αν θεωρήσουµε ότι η διεύθυνση του πρώτου στοιχείου είναι η θέση 100 στη µνήµη, τότε η διεύθυνση του δεύτερου στοιχείου είναι η 104 και του τρίτου η 108 Αντίστοιχα, η τιµή του πρώτου στοιχείου του πίνακα (του arr[0]) αποθηκεύεται στις θέσεις 100 έως και 103, η τιµή του δεύτερου στοιχείου (του arr[1]) στις θέσεις 104 έως και 107 και η τιµή του τρίτου στοιχείου (του arr[2]) στις θέσεις 108 έως και 111

42 Δείκτες και Πίνακες (Ι) Ένα όνοµα πίνακα χωρίς αγκύλες είναι ένας δείκτης στο πρώτο στοιχείο του πίνακα Με άλλα λόγια, η τιµή του ονόµατος του πίνακα (χωρίς αγκύλες) ισούται µε τη διεύθυνση του πρώτου στοιχείου του πίνακα Π.χ. αν έχει δηλωθεί ο πίνακας int arr[50]; τότε η τιµή του arr είναι ίση µε τη διεύθυνση του πρώτου στοιχείου του πίνακα (δηλ. ίση µε &arr[0]) και αν η µνήµη του υπολογιστή ήταν όπως αυτή του παρακάτω σχήµατος, η τιµή τους θα ήταν ίση µε 100 Συµπερασµατικά, οι εκφράσεις arr και &arr[0] είναι ισοδύναµες

43 Δείκτες και Πίνακες (ΙΙ) Υπενθυµίζεται από την αριθµητική δεικτών, ότι, όταν προστίθεται ένας ακέραιος αριθµός n σε έναν δείκτη, τότε ο δείκτης δείχνει σε µία νέα διεύθυνση που απέχει (σε bytes): n * µέγεθος του τύπου (στον οποίο δείχνει) Βάσει της λογικής αυτής, η έκφραση arr+1 είναι ένας δείκτης που δείχνει στο δεύτερο στοιχείο του πίνακα, άρα οι εκφράσεις arr+1 και &arr[1] είναι ισοδύναµες, αφού και οι δύο είναι ίσες µε τη διεύθυνση του δεύτερου στοιχείου του πίνακα, κ.ο.κ. Δηλαδή, γενικά ισχύει ότι: arr == &arr[0] arr + 1 == &arr[1] arr + 2 == &arr[2] arr + n == &arr[n]

44 Δείκτες και Πίνακες (ΙΙI) Αφού το όνοµα ενός πίνακα είναι δείκτης στη διεύθυνση του πρώτου στοιχείου του, τότε το περιεχόµενό του θα είναι ίσο µε την τιµή του πρώτου στοιχείου του Δηλαδή, ισχύει ότι το *arr είναι ίσο µε arr[0] Αντίστοιχα, αφού το arr+1 είναι δείκτης στο δεύτερο στοιχείο του πίνακα, τότε ισχύει ότι *(arr+1) είναι ίσο µε arr[1], κ.ο.κ. Δηλαδή, γενικά ισχύει ότι (προσοχή στις παρενθέσεις): *arr == arr[0] *(arr + 1) == arr[1] *(arr + 2) == arr[2] *(arr + n) == arr[n]

45 Παράδειγµα (Ι) Πιθανή Έξοδος:

46 Παράδειγµα (ΙΙ) Πιθανή Έξοδος:

47 Παρατηρήσεις (Ι) SOS!!!!!! Ποιες είναι οι κύριες διαφορές µεταξύ των δηλώσεων: α) int ptr[100]; και β) int *ptr; 1) Δεσµευµένη µνήµη? α) Πίνακας 100 ακεραίων, άρα: 100 * sizeof(int) = 100 * 4 = 400 bytes β) Ένας απλός δείκτης, άρα: sizeof(ptr) = 4 bytes 2) Πού δείχνουν στη µνήµη? α) Το όνοµα του πίνακα χωρίς τις αγκύλες, δηλαδή το ptr, δείχνει στην αρχή αυτής της δεσµευµένης µνήµης Η τιµή του δεν µπορεί να αλλάξει, δηλαδή ΔΕΝ επιτρέπεται να δείξει σε κάποια άλλη διεύθυνση µνήµης β) Ο δείκτης ptr δεν δείχνει σε κάποια διεύθυνση µνήµης Εποµένως, πριν χρησιµοποιηθεί, πρέπει να του εκχωρηθεί µία υπαρκτή διεύθυνση, δηλαδή να δείχνει στη διεύθυνση κάποιας µεταβλητής Μετά την αρχική εκχώρηση, η τιµή του µπορεί να αλλάξει, δηλαδή επιτρέπεται να δείξει σε κάποια άλλη διεύθυνση µνήµης

48 SOS!!!!!! Παρατηρήσεις (ΙI) Ποιον από τους δύο προηγούµενους τρόπους να χρησιµοποιήσετε? α) int arr[100]; ή β) int *arr; Για τον χειρισµό των στοιχείων ενός πίνακα προτείνεται το πρώτο από τα παραπάνω είδη σύνταξης, στο οποίο αποτυπώνεται εµφανώς η θέση του στοιχείου στον πίνακα και όχι η σύνταξη µε τη σηµειογραφία δείκτη, γιατί ο κώδικας του προγράµµατος είναι περισσότερο ευανάγνωστος και λιγότερο επιρρεπής σε λάθη Δηλαδή, το arr[i] είναι πιο κατανοητό και πιο ασφαλές από το *(arr+i) Π.χ. αν ξεχάσουµε π.χ. τις παρενθέσεις, τότε εισάγεται ένα σφάλµα στον κώδικα (bug) που είναι δύσκολο να εντοπιστεί

49 Παρατηρήσεις (ΙIΙ) Αν ένας δείκτης δείχνει σε κάποιο στοιχείο ενός πίνακα, µπορούµε να χρησιµοποιήσουµε τον δείκτη σαν πίνακα Ωστόσο, να θυµάστε ότι, παρά τη στενή σχέση δεικτών και πινάκων, ένας δείκτης δεν είναι πίνακας Για παράδειγµα, το επόµενο πρόγραµµα εµφανίζει τα στοιχεία ενός πίνακα χρησιµοποιώντας τον δείκτη ptr σαν να ήταν πίνακας

50 Παραδείγµατα (Ι) Ποια είναι η έξοδος του παρακάτω προγράµµατος??? Έξοδος: Val1 = 12 Val2 = 30

51 Παραδείγµατα (IΙ) Ποια είναι η έξοδος του παρακάτω προγράµµατος??? Έξοδος: Val = 58

52 Παραδείγµατα (IIΙ) Ποια είναι η έξοδος του παρακάτω προγράµµατος??? Έξοδος: 3

53 Παραδείγµατα (IV) Ποια είναι η έξοδος του παρακάτω προγράµµατος??? Έξοδος: (και δύο τυχαίες τιµές)

54 Παραδείγµατα (V) Υπάρχει κάποιο bug στο παρακάτω πρόγραµµα??? Απάντηση: Όχι... «σκονάκι No1»: θυµηθείτε ότι *(arr+i)= arr[i] Κι άλλη υπόδειξη??? «σκονάκι No2»: *(arr+i)= *(i+arr) Κι άλλο??? «σκονάκι No3»: arr[i]=*(arr+i)= *(i+arr)= i[arr]

55 Πίνακας Δεικτών Ένας πίνακας δεικτών είναι ένας πίνακας, όπου κάθε στοιχείο του είναι ένας δείκτης σε έναν συγκεκριµένο τύπο δεδοµένων Για να δηλώσουµε έναν πίνακα δεικτών χρησιµοποιούµε τον τελεστή * πριν από το όνοµα του πίνακα Π.χ. int *array[10]; Δήλωση ενός πίνακα δεικτών µε όνοµα array, ο οποίος περιέχει 10 στοιχεία και το καθένα από αυτά είναι ένας δείκτης σε µία ακέραια µεταβλητή (int) Π.χ. char *arr[5]; Δήλωση ενός πίνακα δεικτών µε όνοµα arr, ο οποίος περιέχει 5 στοιχεία και το καθένα από αυτά είναι ένας δείκτης σε έναν χαρακτήρα (char)

56 Παρατηρήσεις Όταν δηλώνεται ένας πίνακας δεικτών, το όνοµα του πίνακα δεν πρέπει να περικλείεται σε παρενθέσεις Π.χ. µε τη δήλωση: int (*arr)[3]; η µεταβλητή arr δηλώνεται ως δείκτης προς έναν πίνακα τριών ακεραίων και όχι σαν πίνακας τριών δεικτών

57 Παράδειγµα Ποια είναι η έξοδος του παρακάτω προγράµµατος??? Έξοδος:

58 Δείκτης σε Δείκτη Όταν δηλώνεται ένας δείκτης, ο µεταγλωττιστής, όπως κάνει για οποιαδήποτε µεταβλητή, δεσµεύει τις απαραίτητες θέσεις µνήµης για να αποθηκεύσει την τιµή του Εποµένως, αφού έχει δεσµευτεί µία διεύθυνση µνήµης για έναν δείκτη µπορούµε να δηλώσουµε έναν άλλον δείκτη που να δείχνει σε αυτή τη διεύθυνση Για να δηλώσουµε έναν δείκτη σε κάποιον άλλον δείκτη χρησιµοποιούµε δύο φορές τον τελεστή * Παραδείγµατα Δηλώσεων «Δείκτη σε Δείκτη»

59 Χρήση «Δείκτη σε Δείκτη» Αν έχουµε δηλώσει έναν δείκτη σε έναν δεύτερο δείκτη, τότε µε τον τελεστή * έχουµε πρόσβαση στη διεύθυνση του δεύτερου δείκτη και µε τον διπλό τελεστή ** έχουµε πρόσβαση στη µεταβλητή που δείχνει ο δεύτερος δείκτης Δήλωση Μεταβλητής (int) Δήλωση Δείκτη (ptr1) σε int Δήλωση Δείκτη (ptr) σε Δείκτη (που δείχνει σε int) O δείκτης ptr1 δείχνει στον i O δεύτερος δείκτης ptr δείχνει στον πρώτο δείκτη ptr1 **ptr = * (ptr1) = i

60 Παράδειγµα Ποια είναι η έξοδος του παρακάτω προγράµµατος??? Έξοδος:

61 Δείκτες και Διδιάστατοι Πίνακες (Ι) Όπως και στους µονοδιάστατους πίνακες, έτσι και στους πολυδιάστατους, η κάθε διάσταση δηλώνεται µέσα σε αγκύλες [] Π.χ. µε την εντολή: int arr[2][3]; δηλώνεται ένας διδιάστατος πίνακας, ο οποίος αποτελείται από 2 γραµµές και 3 στήλες (δηλ. συνολικά περιέχει 6 ακέραιες µεταβλητές) και σχηµατικά απεικονίζεται όπως παρακάτω Τα στοιχεία του πίνακα αποθηκεύονται σε διαδοχικές θέσεις στη µνήµη ξεκινώντας από τα στοιχεία της 1η γραµµής, συνεχίζοντας µε τα στοιχεία της 2ης γραµµής, κ.ο.κ. Άρα, η σειρά αποθήκευσης των στοιχείων του παραπάνω πίνακα arr στη µνήµη είναι: arr[0][0], arr[0][1], arr[0][2], arr[1][0], arr[1][1] και arr[1][2]

62 Δείκτες και Διδιάστατοι Πίνακες (ΙΙ) Για να χειριστούµε έναν διδιάστατο πίνακα µε χρήση δεικτών, έστω arr[ν][μ], µπορούµε να θεωρήσουµε ότι ο πίνακας arr αποτελείται από έναν πίνακα δεικτών N στοιχείων, arr[0], arr[1],..., arr[n-1], όπου καθένα από αυτά είναι δείκτης σε έναν πίνακα Μ στοιχείων Π.χ. µε την εντολή: int arr[2][3]; το arr[0] µπορεί να χρησιµοποιηθεί σαν δείκτης προς έναν πίνακα 3 ακεραίων που περιέχει τα στοιχεία της πρώτης γραµµής, δηλαδή τα arr[0][0], arr[0][1] και arr[0][2] Συγκεκριµένα, το arr[0] είναι δείκτης στο πρώτο στοιχείο του πίνακα, δηλαδή στο arr[0][0] Άρα, η τιµή του *arr[0] είναι ίση µε το arr[0][0]

63 Δείκτες και Διδιάστατοι Πίνακες (ΙΙΙ) Επίσης, σύµφωνα µε την αριθµητική δεικτών: το arr[0]+1 είναι δείκτης στο δεύτερο στοιχείο του πίνακα, δηλαδή στο arr[0][1] το arr[0]+2 είναι δείκτης στο τρίτο στοιχείο του πίνακα, δηλαδή στο arr[0][2], κ.ο.κ.... συνεπώς, στη γενική περίπτωση ισχύει ότι το arr[0]+κ είναι δείκτης στο στοιχείο arr[0][κ] της πρώτης γραµµής του διδιάστατου πίνακα Δηλαδή, ισχύει ότι: το arr[0]+κ είναι ισοδύναµο µε &arr[0][κ] η τιµή του *(arr[0]+κ) είναι ίση µε arr[0][κ]

64 Δείκτες και Διδιάστατοι Πίνακες (ΙV) Αντίστοιχα, το arr[1] µπορεί να χρησιµοποιηθεί σαν δείκτης προς έναν πίνακα 3 ακεραίων που περιέχει τα στοιχεία της δεύτερης γραµµής, δηλαδή τα arr[1][0], arr[1][1] και arr[1][2] Συγκεκριµένα: το arr[1] είναι δείκτης στο πρώτο στοιχείο του πίνακα, δηλαδή στο arr[1][0] Άρα, η τιµή του *arr[1] είναι ίση µε το arr[1][0] Παροµοίως µε πριν, ισχύει ότι το arr[1]+κ είναι δείκτης στο στοιχείο arr[1][κ] της δεύτερης γραµµής του διδιάστατου πίνακα Δηλαδή, ισχύει ότι: το arr[1]+κ είναι ισοδύναµο µε &arr[1][κ] η τιµή του *(arr[1]+κ) είναι ίση µε arr[1][κ]

65 Δείκτες και Διδιάστατοι Πίνακες (V) Γενικά, θεωρούµε ότι τα στοιχεία ενός πίνακα arr[n][m], είναι τα arr[0], arr[1],..., arr[n-1] τα οποία είναι δείκτες σε πίνακες που περιέχουν Μ στοιχεία της αντίστοιχης γραµµής Δηλαδή, το πρώτο στοιχείο του πίνακα arr[n][m] είναι το arr[0], το οποίο είναι δείκτης σε έναν πίνακα που περιέχει τα Μ στοιχεία της πρώτης γραµµής το δεύτερο στοιχείο του πίνακα arr[n][m] είναι το arr[1], το οποίο είναι δείκτης σε έναν πίνακα που περιέχει τα Μ στοιχεία της δεύτερης γραµµής... ενώ το τελευταίο στοιχείο είναι το arr[ν-1], το οποίο είναι δείκτης σε έναν πίνακα που περιέχει τα Μ στοιχεία της τελευταίας (της Ν-οστής) γραµµής

66 Παράδειγµα Τι κάνει το παρακάτω πρόγραµµα??? Εµφανίζει τις τιµές όλων των στοιχείων του πίνακα µε χρήση δείκτη!!!

67 Χειρισµός Διδιάστατου Πίνακα µε «δείκτη σε δείκτη» (Ι) Ένας εναλλακτικός τρόπος για να διαχειριστούµε έναν διδιάστατο πίνακα µε χρήση δείκτη, είναι χρησιµοποιώντας το όνοµα του πίνακα Θυµηθείτε ότι το όνοµα ενός πίνακα χωρίς τις αγκύλες είναι ισοδύναµο µε τη διεύθυνση του πρώτου στοιχείου του πίνακα Π.χ. αν θεωρήσουµε την παρακάτω δήλωση: int arr[2][3]; το όνοµα του πίνακα arr είναι δείκτης στο πρώτο στοιχείο του πίνακα, δηλ. στο arr[0] Όµως, όπως είδαµε προηγουµένως, το πρώτο στοιχείο του πίνακα (το arr[0]) είναι µε τη σειρά του δείκτης σε έναν πίνακα που περιέχει τα 3 στοιχεία της πρώτης γραµµής Συγκεκριµένα, το arr[0] είναι δείκτης στο πρώτο στοιχείο του πίνακα, δηλαδή στο arr[0][0]

68 Χειρισµός Διδιάστατου Πίνακα µε «δείκτη σε δείκτη» (ΙΙ) Άρα, ισχύει ότι το arr είναι δείκτης στο arr[0] και το arr[0] είναι δείκτης στο arr[0][0] Εποµένως, πώς µπορούµε να χειριστούµε το όνοµα του πίνακα arr??? Η απάντηση είναι ότι µπορούµε να το χειριστούµε σαν δείκτη προς δείκτη Π.χ. αφού το arr είναι δείκτης σε έναν δείκτη που δείχνει στη διεύθυνση του στοιχείου arr[0][0], τότε το **arr είναι ίσο µε την τιµή arr[0][0] Παροµοίως, το arr+1 είναι δείκτης στο arr[1] και το arr[1] είναι δείκτης που δείχνει στη διεύθυνση του στοιχείου arr[1][0] Άρα, το **(arr+1) είναι ίσο µε την τιµή arr[1][0] Στη γενική περίπτωση, ισχύει ότι: το arr+κ είναι ισοδύναµο µε &arr[κ] το *(arr+κ) είναι ισοδύναµο µε arr[κ], δηλαδή µε &arr[κ][0] το **(arr+κ) είναι ισοδύναµο µε arr[κ][0]

69 Παράδειγµα Τι κάνει το παρακάτω πρόγραµµα??? Εµφανίζει τις τιµές όλων των στοιχείων του πίνακα µε χρήση του ονόµατος του πίνακα ως «δείκτη σε δείκτη»!!!

70 Παρατηρήσεις Προφανώς, η διαχείριση των στοιχείων ενός διδιάστατου πίνακα µε χρήση δεικτών (είτε απλού δείκτη είτε «δείκτη σε δείκτη») οδηγεί σε δυσνόητο και µη ευανάγνωστο κώδικα Για τον λόγο αυτό, προτείνουµε η διαχείριση των στοιχείων να γίνεται µε τη χρήση των αγκυλών [][] και των αντιστοίχων θέσεων στον πίνακα

71 Δείκτης προς Συνάρτηση ΠΡΟΣΟΧΗ: Για να γίνει κατανοητή η συγκεκριµένη υποενότητα, θα πρέπει να έχει διδαχθεί η ενότητα των Συναρτήσεων Όταν εκτελείται ένα πρόγραµµα, ο κώδικας για κάθε συνάρτηση που περιέχει το πρόγραµµα φορτώνεται στη µνήµη αρχίζοντας σε µία συγκεκριµένη διεύθυνση Ένας δείκτης προς µία συνάρτηση δείχνει στη διεύθυνση µνήµης, στην οποία είναι αποθηκευµένος ο κώδικας της συνάρτησης Η γενική µορφή της δήλωσης ενός δείκτη προς µία συνάρτηση είναι: τύπος_επιστροφής (*όνοµα_δείκτη) (τύπος_παραµ_1 όνοµα_1, τύπος_παραµ_2 όνοµα_2,..., τύπος_παραµ_ν όνοµα_ν); Ο τύπος_επιστροφής καθορίζει τον τύπο δεδοµένων που επιστρέφει η συνάρτηση στο πρόγραµµα που την κάλεσε Οι µεταβλητές όνοµα_1, όνοµα_2,..., όνοµα_ν αποτελούν τις παραµέτρους της συνάρτησης (εφόσον η συνάρτηση δέχεται παραµέτρους)

72 Παραδείγµατα δήλωσης Δείκτη προς Συνάρτηση

73 Παρατηρήσεις Το όνοµα του δείκτη πρέπει να βρίσκεται ανάµεσα σε παρενθέσεις, γιατί ο τελεστής * έχει χαµηλότερη προτεραιότητα από τις παρενθέσεις που περιβάλλουν τη λίστα παραµέτρων της συνάρτησης Π.χ. αν γράψουµε: int *ptr(int a); αντί για int (*ptr)(int a); τότε δηλώνεται µία συνάρτηση µε όνοµα ptr, η οποία δέχεται µία ακέραια παράµετρο και επιστρέφει έναν δείκτη σε µία ακέραια µεταβλητή

74 Χρήση Δείκτη προς Συνάρτηση Η µόνη απαίτηση για να δείξει ένας δείκτης σε µία συνάρτηση είναι ο τύπος επιστροφής της συνάρτησης και η λίστα παραµέτρων της να είναι ίδια µε τον τύπο επιστροφής και τη λίστα παραµέτρων της δήλωσης του δείκτη Παράδειγµα:

75 Πίνακας Δεικτών σε Συναρτήσεις Ένας πίνακας δεικτών σε συναρτήσεις είναι ένας πίνακας όπου κάθε στοιχείο του είναι δείκτης σε κάποια συνάρτηση Η δήλωσή του είναι παρόµοια µε τη δήλωση ενός δείκτη σε συνάρτηση µε τη διαφορά ότι αντί για ένας δείκτης δηλώνεται ένας πίνακας δεικτών Π.χ. η εντολή: void (*ptr[20])(int a); δηλώνει έναν πίνακα δεικτών µε όνοµα ptr, του οποίου τα στοιχεία είναι 20 δείκτες προς συναρτήσεις, οι οποίες δέχονται µία ακέραια παράµετρο και δεν επιστρέφουν τίποτα

76 Παράδειγµα Τι κάνει το παρακάτω πρόγραµµα??? (συνέχεια προγράµµατος)

77 Παράδειγµα Το πρόγραµµα ανάλογα µε την τιµή του i καλεί την αντίστοιχη συνάρτηση µέσω του δείκτη που δείχνει στη διεύθυνσή της. Η τιµή επιστροφής της συνάρτησης εµφανίζεται στην οθόνη.

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

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

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

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

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

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

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

Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου. Εργαστήριο 3 Επανάληψη Γ μέρος ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ Δομές Δεδομένων (Εργ.) Ακ. Έτος 2017-18 Διδάσκων: Ευάγγελος Σπύρου Εργαστήριο 3 Επανάληψη Γ μέρος 1. Στόχος του εργαστηρίου Στόχος του τρίτου εργαστηρίου είναι

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15

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

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

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

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

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

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

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

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

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

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

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

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

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

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

ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ. Σκοπός της Άσκησης. 1. Εισαγωγικά στοιχεία για τους Δείκτες Σκοπός της Άσκησης ΑΣΚΗΣΗ 6: ΔΕΙΚΤΕΣ Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η εξοικείωση με τη χρήση των δεικτών (pointers). Οι δείκτες δίνουν την δυνατότητα σε προγράμματα να προσομοιώνουν τη

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

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

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

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

ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ. Σχήµα 1: H έννοια των πινάκων

ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ. Σχήµα 1: H έννοια των πινάκων Σκοπός της Άσκησης ΑΣΚΗΣΗ 5: ΠΙΝΑΚΕΣ Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η εξοικείωση µε τη χρήση πινάκων σαν διατάξεις αποθήκευσης δεδοµένων της Γλώσσας Προγραµµατισµού C. H συγκεκριµένη άσκηση

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

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

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

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

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

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

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

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

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

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

for for for for( . */

for for for for( . */ Εισαγωγή Στον Προγραµµατισµό «C» Βρόχοι Επανάληψης Πανεπιστήµιο Πελοποννήσου Τµήµα Πληροφορικής & Τηλεπικοινωνιών Νικόλαος Δ. Τσελίκας Νικόλαος Προγραµµατισµός Δ. Τσελίκας Ι Ο βρόχος for Η εντολή for χρησιµοποιείται

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

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

Οι δείκτες στη γλώσσα C Οι δείκτες στη γλώσσα C Δείκτης είναι µία µεταβλητή η οποία περιέχει σαν τιµή µία διεύθυνση της µνήµης Η τιµή ενός δείκτη δείχνει σε µία άλλη µεταβλητή, η οποία µπορεί να προσεγγισθεί έµµεσα µε τους ειδικούς

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου) ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου) 1. Εισαγωγή Χαρακτηριστικά της γλώσσας Τύποι δεδοµένων Γλώσσα προγραµµατισµού

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

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

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2015-16

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

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

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

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

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

3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting) Εργαστήριο 3: 3.1 Αριθμητικοί και Λογικοί Τελεστές, Μετατροπές Τύπου (Casting) Η C++, όπως όλες οι γλώσσες προγραμματισμού, χρησιμοποιεί τελεστές για να εκτελέσει τις αριθμητικές και λογικές λειτουργίες.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Δείκτες Τι είναι ένας δείκτης (pointer); Όταν δηλώνoυμε μια μεταβλητή σε ένα πρόγραμμα

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

H ΓΛΩΣΣΑ C. Μάθηµα 7: Πίνακες. ηµήτρης Ψούνης

H ΓΛΩΣΣΑ C. Μάθηµα 7: Πίνακες. ηµήτρης Ψούνης H ΓΛΩΣΣΑ C Μάθηµα 7: Πίνακες ηµήτρης Ψούνης 2 Περιεχόµενα Μαθήµατος Α. Πίνακες 1. Μονοδιάστατοι Πίνακες 1. ήλωση Πίνακα 2. Παράδειγµα Χρήσης Πίνακα 3. Αρχικοποίηση πίνακα κατά τη δήλωση 4. Στατική έσµευση

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

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

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

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

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

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

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

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

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

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

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

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

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

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

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

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

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

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

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

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

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

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

Εισαγωγή στη γλώσσα προγραμματισμού C++

Εισαγωγή στη γλώσσα προγραμματισμού C++ Εισαγωγή στη γλώσσα προγραμματισμού C++ Περιβάλλον Εργασίας 2 Περιβάλλον Εργασίας 1. Χρήση απλού κειμενογράφου και Μεταγλωττιστή 2. Ολοκληρωμένα Περιβάλλοντα Εργασίας (Integrated Development Environments)

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

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

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

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

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

Προγραμματισμός ΙI (Θ) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κεντρικής Μακεδονίας - Σέρρες Τμήμα Μηχανικών Πληροφορικής Προγραμματισμός ΙI (Θ) Δρ. Δημήτρης Βαρσάμης Επίκουρος Καθηγητής Μάρτιος 2017 Δρ. Δημήτρης Βαρσάμης Μάρτιος 2017

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

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα.

ΚΕΦΑΛΑΙΟ 7 ο. Έτσι ο προγραµµατισµός µε τη ΓΛΩΣΣΑ εστιάζεται στην ανάπτυξη του αλγορίθµου και τη µετατροπή του σε σωστό πρόγραµµα. ΚΕΦΑΛΑΙΟ 7 ο 1. Επιλογή της κατάλληλης γλώσσας προγραµµατισµού Εκατοντάδες γλώσσες προγραµµατισµού χρησιµοποιούνται όπως αναφέρθηκε σήµερα για την επίλυση των προβληµάτων µε τον υπολογιστή, τη δηµιουργία

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

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

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

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

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

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

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

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

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

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

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

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

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

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2

Οικονόμου Βαγγέλησ Διάλεξη Νο 2. Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2 Οικονόμου Βαγγέλησ Διάλεξη Νο 2 Δομημένοσ Προγραμματιςμόσ - Διάλεξη 2 1 Η έννοια τησ μεταβλητήσ έδωςε λύςη ςτο πρόβλημα τησ αναφοράσ ςτην κύρια μνήμη του υπολογιςτή. Οι γλώςςεσ προγραμματιςμού υποςτηρίζουν

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

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

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 2 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Εργαστήριο 2. Τµήµα Πληροφορικής και Τηλεπικοινωνιών

ΕΡΓΑΣΤΗΡΙΟ 2 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Εργαστήριο 2. Τµήµα Πληροφορικής και Τηλεπικοινωνιών ΕΡΓΑΣΤΗΡΙΟ 2 ΕΙΣΑΓΩΓΗ ΣΤΗ C Εργαστήριο 2 Τµήµα Πληροφορικής και Τηλεπικοινωνιών οµή προγράµµατος Οδηγίες προεπεξεργαστή #include... # define... τµήµα δηλώσεων ηλωσεις και ορισµοί µεταβλητών. ηλωσεις συναρτήσεων

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

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 11η: Δείκτες, μέρος 1

Διάλεξη 11η: Δείκτες, μέρος 1 Διάλεξη 11η: Δείκτες, μέρος 1 Τμήμα Επιστήμης Υπολογιστών, Πανεπιστήμιο Κρήτης Εισαγωγή στην Επιστήμη Υπολογιστών Βασίζεται σε διαφάνειες του Κ Παναγιωτάκη Πρατικάκης (CSD) Pointers I CS100, 2016-2017

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

char name[5]; /* define a string of characters */

char name[5]; /* define a string of characters */ Συµβολοσειρές (Strings) Συµβολοσειρά (string) είναι µια σειρά αλφαριθµητικών χαρακτήρων (γενικά εκτυπώσιµων συµβόλων ASCII). Όταν λέµε σειρά εννοούµε διαδοχικές θέσεις µνήµης που µπορούν να αντιµετωπισθούν

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

επιµέλεια Θοδωρής Πιερράτος

επιµέλεια Θοδωρής Πιερράτος Βασικές έννοιες προγραµµατισµού Η ύλη που αναπτύσσεται σε αυτό το κεφάλαιο είναι συναφής µε την ύλη που αναπτύσσεται στο 2 ο κεφάλαιο. Όπου υπάρχουν διαφορές αναφέρονται ρητά. Προσέξτε ιδιαίτερα, πάντως,

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

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ Μέρος 3ο ΝΙΚΟΛΑΟΣ ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ 1 ΕΚΤΥΠΩΣΗ ΚΕΙΜΕΝΟΥ Ένα κείμενο μπορεί να εκχωρηθεί ως τιμή μιας μεταβλητής

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Υπολογισμός - Συλλογή Δεδομένων - Πίνακες

Υπολογισμός - Συλλογή Δεδομένων - Πίνακες Προγραμματισμός Η/Υ Ι Υπολογισμός - - Πίνακες ΕΛΕΥΘΕΡΙΟΣ ΚΟΣΜΑΣ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2018-2019 ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. 1 Περίληψη Σήμερα... θα συζητήσουμε τη χρήση του πίνακα (array) για τη συλλογή

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

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

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

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

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

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

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

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

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

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

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

Πίνακες. 1 Πίνακες. 30 Μαρτίου 2014 Πίνακες 0 Μαρτίου 014 1 Πίνακες Είδαμε ότι δηλώνοντας μία μεταβλητή κάποιου συγκεκριμένου τύπου δεσμεύουμε μνήμη κατάλληλη για να αποθηκευτεί μία οντότητα του συγκεκριμένου τύπου. Στην περίπτωση που θέλουμε

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές. Δρ. Γιώργος Λαμπρινίδης 23/10/2015 Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές. Δρ. Γιώργος Λαμπρινίδης 23/10/2015 Η - Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 1 Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Εργαστήριο 2 Εντολές Εισόδου/Εξόδου Τελεστές Δρ. Γιώργος Λαμπρινίδης amprinidis@pharm.uoa.gr 1 Αριθμητικοί Τελεστές + πρόσθεση - αφαίρεση * πολλαπλασιασμός / διαίρεση Προσοχή! Διαίρεση

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

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

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

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

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL 8.1. Εισαγωγή ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PACAL Πως προέκυψε η γλώσσα προγραμματισμού Pascal και ποια είναι τα γενικά της χαρακτηριστικά; Σχεδιάστηκε από τον Ελβετό επιστήμονα της Πληροφορικής Nicklaus Wirth to

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

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

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

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

1.1 A. ΟΙ ΠΡΑΓΜΑΤΙΚΟΙ ΑΡΙΘΜΟΙ ΚΑΙ ΟΙ

1.1 A. ΟΙ ΠΡΑΓΜΑΤΙΚΟΙ ΑΡΙΘΜΟΙ ΚΑΙ ΟΙ . A. ΟΙ ΠΡΑΓΜΑΤΙΚΟΙ ΑΡΙΘΜΟΙ ΚΑΙ ΟΙ ΠΡΑΞΕΙΣ ΤΟΥΣ ΘΕΩΡΙΑ. Τα σύνολα των αριθµών Το σύνολο των φυσικών αριθµών. Το σύνολο των ακεραίων αριθµών. N {0,,, 3 } Z { 3,,, 0,,, 3 } Το σύνολο των ρητών αριθµών. Q

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

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

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

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

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ ΣΤΑΘΕΡΕΣ είναι τα μεγέθη που δεν μεταβάλλονται κατά την εκτέλεση ενός αλγόριθμου. Εκτός από τις αριθμητικές σταθερές (7, 4, 3.5, 100 κλπ), τις λογικές σταθερές (αληθής και ψευδής)

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

ΑΣΚΗΣΗ 3: ΠΡΟΤΑΣΕΙΣ, ΕΚΦΡΑΣΕΙΣ ΚΑΙ ΤΕΛΕΣΤΕΣ

ΑΣΚΗΣΗ 3: ΠΡΟΤΑΣΕΙΣ, ΕΚΦΡΑΣΕΙΣ ΚΑΙ ΤΕΛΕΣΤΕΣ ΑΣΚΗΣΗ 3: ΠΡΟΤΑΣΕΙΣ, ΕΚΦΡΑΣΕΙΣ ΚΑΙ ΤΕΛΕΣΤΕΣ Σκοπός της Άσκησης Ο σκοπός αυτής της εργαστηριακής άσκησης είναι η χρήση των βασικών τελεστών της Γλώσσας Προγραµµατισµού C : αριθµητικοί τελεστές, τελεστές

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

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

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

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

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

3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 3ο σετ σημειώσεων - Πίνακες, συμβολοσειρές, συναρτήσεις 5 Απριλίου 01 1 Πίνακες Είδαμε ότι δηλώνοντας μία μεταβλητή κάποιου συγκεκριμένου τύπου δεσμεύουμε μνήμη κατάλληλη για να αποθηκευτεί μία οντότητα

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

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) 1 Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) ηµήτριος Κατσαρός, Ph.D. Χειµώνας 2005 ιάλεξη 4η 2 Ιστοσελίδα του µαθήµατος http://skyblue.csd.auth.gr/~dimitris/courses/cpp_fall05.htm Θα

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ I. 4 η ΔΙΑΛΕΞΗ Αριθμητικά Συστήματα

ΠΛΗΡΟΦΟΡΙΚΗ I. 4 η ΔΙΑΛΕΞΗ Αριθμητικά Συστήματα ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ - ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ ΕΙΣΑΓΩΓΙΚΗ ΚΑΤΕΥΘΥΝΣΗ ΤΟΥΡΙΣΤΙΚΩΝ ΕΠΙΧΕΙΡΗΣΕΩΝ ΚΑΙ ΕΠΙΧΕΙΡΗΣΕΩΝ ΦΙΛΟΞΕΝΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗ I 4 η ΔΙΑΛΕΞΗ Αριθμητικά Συστήματα ΧΑΣΑΝΗΣ ΒΑΣΙΛΕΙΟΣ

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

Εισαγωγή στον δομημένο προγραμματισμό

Εισαγωγή στον δομημένο προγραμματισμό Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Εισαγωγή στον δομημένο προγραμματισμό Ενότητα 7 η : Δείκτες Αν. καθηγητής Στεργίου Κώστας e-mail: kstergiou@uowm.gr Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

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

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

ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΑΘΕΡΕΣ ΜΕΤΑΒΛΗΤΕΣ ΓΛΩΣΣΑ ΑΛΦΑΒΗΤΟ Κεφαλαία και μικρά γράμματα ελληνικού αλφαβήτου: Α Ω και α ω Κεφαλαία και μικρά γράμματα λατινικού αλφαβήτου: A Z και a z Αριθμητικά ψηφία: 0 9 Ειδικοί χαρακτήρες: + - * / =. ( ),! & κενός

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

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

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ Σκοπός του μαθήματος Σκοπός του παρόντος μαθήματος είναι να μάθετε να κάνετε εισαγωγή δεδομένων σε πίνακες και περαιτέρω επεξεργασία

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

Επιλογή και επανάληψη. Λογική έκφραση ή συνθήκη

Επιλογή και επανάληψη. Λογική έκφραση ή συνθήκη Επιλογή και επανάληψη Η ύλη που αναπτύσσεται σε αυτό το κεφάλαιο είναι συναφής µε την ύλη που αναπτύσσεται στο 2 ο κεφάλαιο. Όπου υπάρχουν διαφορές αναφέρονται ρητά. Προσέξτε ιδιαίτερα, πάντως, ότι στο

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

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 2 ο

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ Κεφάλαιο 2 ο 43 2.55 Ποιες είναι οι δύο μορφές της δομής πολλαπλής επιλογής και ποτέ χρησιμοποιείται; 1 η Μορφή:Η πολλαπλή επιλογή εφαρμόζεται στα προβλήματα όπου μπορούν να ληφθούν διαφορετικές αποφάσεις ανάλογα με

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

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

ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Δεύτερη Διάλεξη Βασικά στοιχεία της γλώσσας προγραμματισμού C Μία γλώσσα προγραμματισμού όπως και μια ανθρώπινη γλώσσα μπορεί να μελετηθεί ως προς το αλφάβητό της,

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 Αριθμητική στο δυαδικό σύστημα (γενικά) Συμπληρωματικά για δυαδικό σύστημα Η πρόσθεση στηρίζεται στους κανόνες: 0 + 0 = 0, 0 + 1 = 1, 1

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

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

ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β ΤΕΜ-101 Εισαγωγή στους Η/Υ Εξεταστική Ιανουαρίου 2011 Θέματα Β 1. (10 μον.) Απαντήστε σωστό ή λάθος στις παρακάτω ερωτήσεις (αʹ) _2togo είναι έγκυρο όνομα μεταβλητής (βʹ) Αν p είναι δείκτης στο πρώτο στοιχείο

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