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

Save this PDF as:
 WORD  PNG  TXT  JPG

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

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

Transcript

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

2 Μνήμη Υπολογιστή και Μεταβλητές Όταν δηλώνεται μία μεταβλητή, ο μεταγλωττιστής δεσμεύει τις απαραίτητες συνεχόμενες θέσεις (bytes) στη μνήμη, για να αποθηκεύσει την τιμή της Όπως ήδη ξέρουμε, κάθε τύπος μεταβλητής απαιτεί συγκεκριμένο χώρο στη μνήμη Π.χ. ο τύπος char απαιτεί 1 byte μνήμης, οι τύποι float και int απαιτούν 4 bytes, ο τύπος double απαιτεί 8 bytes, κ.ο.κ. Όταν μία μεταβλητή καταλαμβάνει πολλές θέσεις μνήμης (δηλ. περισσότερα από 1 byte), τότε ως διεύθυνση της μεταβλητής θεωρείται η διεύθυνση της πρώτης θέσης μνήμης (δηλ. του 1ου byte από τα bytes που καταλαμβάνει η μεταβλητή) 3 Παράδειγμα Έστω η δήλωση: int a; Τότε: Ο μεταγλωττιστής ψάχνει και βρίσκει 4 συνεχόμενες θέσεις μνήμης στη RAM, οι οποίες δεν πρέπει να έχουν δεσμευτεί για άλλη μεταβλητή, και τις δεσμεύει Σε αυτές τις θέσεις θα αποθηκεύεται η τιμή της μεταβλητής a Στο διπλανό σχήμα θεωρούμε ότι η διεύθυνση της μεταβλητής a αρχίζει στη θέση 100 Η τιμή της a θα αποθηκευτεί στις θέσεις μνήμης από 100 έως και 103 Ο μεταγλωττιστής συσχετίζει το όνομα της μεταβλητής a, με τη διεύθυνση της μεταβλητής Όταν το πρόγραμμα χρησιμοποιεί το όνομα της μεταβλητής, ο μεταγλωττιστής προσπελαύνει αυτομάτως τη διεύθυνση της μεταβλητής Π.χ. με την εντολή a = 10; ο μεταγλωττιστής γνωρίζει ότι η διεύθυνση της a είναι η 100 και θέτει το περιεχόμενό της ίσο με 10, ξεκινώντας από την οκτάδα με την μεγαλύτερη διεύθυνση 4 2

3 Δήλωση Δείκτη Ο δείκτης είναι μία αριθμητική μεταβλητή, στην οποία αποθηκεύεται η διεύθυνση μνήμης μίας άλλης μεταβλητής Η γενική περίπτωση δήλωσης ενός δείκτη είναι: τύπος_δεδομένων* όνομα_δείκτη; Παρατηρήσεις O τύπος_δεδομένων μπορεί να είναι οποιοσδήποτε από τους τύπους μεταβλητών της C και δηλώνει τον τύπο της μεταβλητής στην οποία δείχνει ο δείκτης Το όνομα_δείκτη πρέπει να ακολουθεί τους κανόνες ονοματολογίας της C και να μην υπάρχει άλλη δήλωση με το ίδιο όνομα μέσα στο πρόγραμμα Ο τελεστής * χρησιμοποιείται για να δηλώσει ότι η μεταβλητή είναι δείκτης 5 Παραδείγματα Δήλωσης Δείκτη int* ptr; Η μεταβλητή ptr είναι ένας δείκτης προς κάποια ακέραια μεταβλητή Αυτό σημαίνει, ότι στον δείκτη ptr θα αποθηκευτεί η διεύθυνση κάποιας ακέραιας μεταβλητής double* ptr; Η μεταβλητή ptr είναι ένας δείκτης προς κάποια πραγματική μεταβλητή (και μάλιστα, τύπου double) Αυτό σημαίνει, ότι στον δείκτη ptr θα αποθηκευτεί η διεύθυνση κάποιας πραγματικής μεταβλητής (και πιο συγκεκριμένα, μιας μεταβλητής τύπου double) 6 3

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

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

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

7 Δεν ξεχνώ λοιπόν... Δήλωση Μεταβλητών Δήλωση Μεταβλητών Δεικτών Ανάθεση τιμών στους Δείκτες (τις διευθύνσεις υπαρκτών μεταβλητών) Απόδοση τιμής σε κάποια μεταβλητή, μέσω δείκτη (το περιεχόμενο της διεύθυνσης στην οποία δείχνει ο δείκτης) 13 Παρατηρήσεις (Ι) Πριν χρησιμοποιηθεί κάποια μεταβλητή-δείκτης πρέπει να της έχει εκχωρηθεί μία υπαρκτή διεύθυνση, δηλαδή ο δείκτης να δείχνει στη διεύθυνση κάποιας μεταβλητής Το επόμενο πρόγραμμα θα εμφανίσει μήνυμα λάθους κατά την εκτέλεσή του, γιατί στην εντολή i = *ptr; χρησιμοποιείται ο δείκτης ptr, ο οποίος δεν δείχνει στη διεύθυνση κάποιας μεταβλητής 14 7

8 Παρατηρήσεις (ΙΙ) Το επόμενο πρόγραμμα λειτουργεί σωστά, γιατί τώρα ο δείκτης ptr δείχνει στη διεύθυνση κάποιας υπαρκτής μεταβλητής (της μεταβλητής j) πριν χρησιμοποιηθεί στην εντολή i = *ptr; Επομένως, αφού ο δείκτης ptr δείχνει στη διεύθυνση της μεταβλητής j, το *ptr θα είναι ίσο με την τιμή του j, δηλαδή 10 Άρα, με την εντολή i = *ptr; η τιμή του i θα γίνει ίση με 10 Έξοδος: Value = Παρατηρήσεις (ΙΙΙ) Οι τελεστές * (περιεχόμενο διεύθυνσης μνήμης που δείχνει ο δείκτης) και & (διεύθυνση μνήμης μιας μεταβλητής) είναι μεταξύ τους συμπληρωματικοί ή αντίστροφοι (αλλιώς λέμε ότι αλληλοαναιρούνται ή αλληλοεξουδετερώνονται) Έξοδος: 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 = 0028F

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

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

11 Παραδείγματα (V) Ποια είναι η έξοδος του παρακάτω προγράμματος??? Έξοδος: Χρήση της λέξης const στη δήλωση ενός δείκτη Χρησιμοποιούμε τη δεσμευμένη λέξη const κατά τη δήλωση του δείκτη, όταν επιθυμούμε μία μεταβλητή-δείκτης είτε να μην μπορεί να αλλάξει την τιμή της μεταβλητής στην οποία δείχνει είτε να μην μπορεί να δείξει σε κάποια άλλη μεταβλητή Συνεπώς, τα παρακάτω παραδείγματα αποτελούν μη επιτρεπτές ενέργειες Ο δείκτης ptr δεv μπορεί να αλλάξει την τιμή της μεταβλητής στην οποία δείχνει (της i) Ο δείκτης ptr δεv μπορεί να δείξει σε άλλη μεταβλητή (όπως π.χ. εδώ στην j), παρά μόνο στην i 22 11

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

13 Παράδειγμα Τι εμφανίζει η τελευταία printf() του προγράμματος??? Έξοδος: 1004 (σε δεκαεξαδική μορφή) Αν είχα αντί για ptr++; Την εντολή ptr+=5;??? Έξοδος: 1020 (σε δεκαεξαδική μορφή) 25 Μείωση Δεικτών Ισχύει ακριβώς ό,τι ισχύει και κατά την αύξηση ενός δείκτη Δηλ. στη γενική περίπτωση, όταν αφαιρείται ένας ακέραιος αριθμός n από έναν δείκτη, τότε η τιμή του μειώνεται κατά το γινόμενο: n * μέγεθος του τύπου (στον οποίο δείχνει) Π.χ. Έξοδος: 980 (σε δεκαεξαδική μορφή) 26 13

14 Αφαίρεση Δεικτών Η αφαίρεση δεικτών, επιτρέπεται μόνο μεταξύ δεικτών, οι οποίοι δείχνουν σε ίδιο τύπο δεδομένων Το αποτέλεσμα της αφαίρεσης είναι ένας ακέραιος αριθμός που δεν δηλώνει πόσο απέχουν μεταξύ τους (δηλ. πόσες θέσεις μνήμης), αλλά πόσα στοιχεία του τύπου που δείχνουν οι δείκτες μεσολαβούν μεταξύ τους 27 Παράδειγμα Τι εμφανίζει η τελευταία printf() του προγράμματος??? Έξοδος: 10 (και όχι 40) 28 14

15 Αφαίρεση Δεικτών Στη γενική περίπτωση, το αποτέλεσμα της αφαίρεσης δεικτών είναι το πηλίκο της διαίρεσης της αριθμητικής διαφοράς των δύο δεικτών με το μέγεθος του τύπου, στον οποίο δείχνουν Στο προηγούμενο παράδειγμα το αποτέλεσμα προκύπτει ως: ( ) / sizeof(int) = 40/4 = 10 Προφανώς, αν αφαιρέτης είναι ο δείκτης με τη χαμηλότερη διεύθυνση στη μνήμη και αφαιρετέος ο δείκτης με την υψηλότερη διεύθυνση αντίστοιχα, τότε το αποτέλεσμα της αφαίρεσης των δεικτών θα είναι το ίδιο αριθμητικά, με αρνητικό όμως πρόσημο Στο προηγούμενο παράδειγμα αν στην τελευταία printf() ζητούσαμε τη διαφορά ptr1-ptr2, το αποτέλεσμα θα ήταν: ( ) / sizeof(int) = -40/4 = Σύγκριση Δεικτών Η σύγκριση δεικτών επιτρέπεται μόνο μεταξύ δεικτών που δείχνουν στον ίδιο τύπο δεδομένων Σε αυτή την περίπτωση, οι σχεσιακοί τελεστές ==,!=, >, <, >= και <= λειτουργούν κανονικά Π.χ., αν θέλουμε να ελέγξουμε αν δύο δείκτες ptr1 και ptr2 δείχνουν στην ίδια διεύθυνση μνήμης μπορούμε να γράψουμε: if(ptr1 == ptr2) ή αντίστοιχα: if(ptr1!= ptr2) Π.χ., αν θέλουμε να ελέγξουμε αν ο δείκτης ptr1 δείχνει σε κάποια μεταβλητή με «μεγαλύτερη» διεύθυνση από την αντίστοιχη που δείχνει ο δείκτης ptr2 μπορούμε να γράψουμε: if(ptr1 > ptr2) 30 15

16 Παρατηρήσεις Ο μεταγλωττιστής, κατά την αφαίρεση και την πρόσθεση ενός ακέραιου αριθμού σε έναν δείκτη, αλλάζει την τιμή του δείκτη με βάση το μέγεθος του τύπου δεδομένων που δείχνει ο δείκτης Εκτός από την πρόσθεση ή την αφαίρεση ακεραίων αριθμών σε/από έναν δείκτη, τη σύγκριση και την αφαίρεση δεικτών ίδιου τύπου, καμία άλλη αριθμητική πράξη δεν επιτρέπεται Π.χ. οι εντολές: πολλαπλασιασμού ptr *= 2; πρόσθεσης δεκαδικού ptr += 7.5; πρόσθεσης δεικτών ptr1 + ptr2; δεν είναι επιτρεπτές εκφράσεις ακόμα κι αν οι αυτοί δείκτες δείχνουν στον ίδιο τύπο δεδομένων 31 Παραδείγματα (Ι) Ποια είναι η έξοδος του παρακάτω προγράμματος??? Έξοδος: Το τυχαίο περιεχόμενο των επόμενων 4 bytes μετά τη θέση της μεταβλητής i στη μνήμη 32 16

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

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

19 Παραδείγματα (VI) Ποια είναι η έξοδος του παρακάτω προγράμματος??? Έξοδος: Value = Παραδείγματα (VIΙ) Γράψτε ένα πρόγραμμα το οποίο να διαβάζει δύο ακέραιους, τους οποίους να αποθηκεύει σε δύο δείκτες για ακέραιους. Με χρήση αυτών των δεικτών, αποθηκεύστε το άθροισμά τους σε έναν άλλον δείκτη σε ακέραιο και εμφανίστε τα περιεχόμενα του κάθε δείκτη 38 19

20 Δείκτες και Πίνακες - Εισαγωγή Τα στοιχεία ενός πίνακα αποθηκεύονται σε διαδοχικές θέσεις μνήμης, με το πρώτο στοιχείο στη χαμηλότερη διεύθυνση Τα επόμενα στοιχεία του πίνακα αποθηκεύονται στις υψηλότερες διευθύνσεις Το πόσο υψηλότερα, εξαρτάται από τον τύπο δεδομένων του πίνακα (char, int, float,..) Π.χ. σε έναν πίνακα χαρακτήρων (char), κάθε στοιχείο του πίνακα βρίσκεται 1 byte μετά από το προηγούμενο στοιχείο και η διεύθυνση κάθε στοιχείου είναι 1 θέση υψηλότερα από τη διεύθυνση του προηγούμενου στοιχείου Παρομοίως, σε έναν πίνακα ακεραίων (int), κάθε στοιχείο του πίνακα βρίσκεται 4 bytes μετά από το προηγούμενο στοιχείο και η διεύθυνση κάθε στοιχείου είναι 4 θέσεις υψηλότερα από τη διεύθυνση του προηγούμενου στοιχείου 39 Έστω η δήλωση του πίνακα: Παράδειγμα int arr[3]; Αν θεωρήσουμε ότι η διεύθυνση του πρώτου στοιχείου είναι η θέση 100 στη μνήμη, τότε η διεύθυνση του δεύτερου στοιχείου είναι η 104 και του τρίτου η 108 Αντίστοιχα, η τιμή του πρώτου στοιχείου του πίνακα (του arr[0]) αποθηκεύεται στις θέσεις 100 έως και 103, η τιμή του δεύτερου στοιχείου (του arr[1]) στις θέσεις 104 έως και 107 και η τιμή του τρίτου στοιχείου (του arr[2]) στις θέσεις 108 έως και

21 Δείκτες και Πίνακες (Ι) Ένα όνομα πίνακα χωρίς αγκύλες είναι ένας δείκτης στο πρώτο στοιχείο του πίνακα Με άλλα λόγια, η τιμή του ονόματος του πίνακα (χωρίς αγκύλες) ισούται με τη διεύθυνση του πρώτου στοιχείου του πίνακα Π.χ. αν έχει δηλωθεί ο πίνακας int arr[100]; τότε η τιμή του arr είναι ίση με τη διεύθυνση του πρώτου στοιχείου του πίνακα (δηλ. ίση με &arr[0]) και αν η μνήμη του υπολογιστή ήταν όπως αυτή του παρακάτω σχήματος, η τιμή τους θα ήταν ίση με 100 Συμπερασματικά, οι εκφράσεις arr και &arr[0] είναι ισοδύναμες 41 Δείκτες και Πίνακες (ΙΙ) Υπενθυμίζεται από την αριθμητική δεικτών, ότι, όταν προστίθεται ένας ακέραιος αριθμός n σε έναν δείκτη, τότε ο δείκτης δείχνει σε μία νέα διεύθυνση που απέχει (σε bytes): n * μέγεθος του τύπου (στον οποίο δείχνει) Βάσει της λογικής αυτής, η έκφραση arr+1 είναι ένας δείκτης που δείχνει στο δεύτερο στοιχείο του πίνακα, άρα οι εκφράσεις arr+1 και &arr[1] είναι ισοδύναμες, αφού και οι δύο είναι ίσες με τη διεύθυνση του δεύτερου στοιχείου του πίνακα, κ.ο.κ. Δηλαδή, γενικά ισχύει ότι: arr == &arr[0] arr + 1 == &arr[1] arr + 2 == &arr[2] arr + n == &arr[n] 42 21

22 Δείκτες και Πίνακες (ΙΙ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] 43 Παράδειγμα (Ι) Πιθανή Έξοδος: 44 22

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

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

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

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

27 Παραδείγματα (V) Υπάρχει κάποιο bug στο παρακάτω πρόγραμμα??? Απάντηση: Όχι... «σκονάκι No1»: θυμηθείτε ότι *(arr+i)= arr[i] Κι άλλη υπόδειξη??? «σκονάκι No2»: *(arr+i)= *(i+arr) Κι άλλο??? «σκονάκι No3»: arr[i]=*(arr+i)= *(i+arr)= i[arr] 53 Πίνακας Δεικτών Ένας πίνακας δεικτών είναι μία ειδική περίπτωση πίνακα, όπου κάθε στοιχείο του πίνακα είναι ένας δείκτης σε έναν συγκεκριμένο τύπο δεδομένων Για να δηλώσουμε έναν πίνακα δεικτών χρησιμοποιούμε τον τελεστή * πριν από το όνομα του πίνακα Π.χ. int* array[10]; Δήλωση ενός πίνακα δεικτών με όνομα array, ο οποίος περιέχει 10 στοιχεία και το καθένα από αυτά είναι ένας δείκτης σε μία ακέραια μεταβλητή (int) char* arr[10]; Δήλωση ενός πίνακα δεικτών με όνομα arr, ο οποίος περιέχει 10 στοιχεία και το καθένα από αυτά είναι ένας δείκτης σε έναν χαρακτήρα (char) 54 27

28 Παράδειγμα Ποια είναι η έξοδος του παρακάτω προγράμματος??? Έξοδος: Δείκτης σε Δείκτη Όταν δηλώνεται μία μεταβλητή-δείκτης, ο μεταγλωττιστής, όπως κάνει για οποιαδήποτε μεταβλητή, δεσμεύει τις απαραίτητες θέσεις μνήμης για να αποθηκεύσει την τιμή της Επομένως, αφού έχει δεσμευτεί μία διεύθυνση μνήμης για έναν δείκτη μπορούμε να δηλώσουμε έναν άλλον δείκτη που να δείχνει σε αυτή τη διεύθυνση Για να δηλώσουμε έναν δείκτη σε κάποιον άλλον δείκτη χρησιμοποιούμε δύο φορές τον τελεστή * Παραδείγματα Δηλώσεων «Δείκτη σε Δείκτη» 56 28

29 Χρήση «Δείκτη σε Δείκτη» Αν έχουμε δηλώσει έναν δείκτη σε έναν δεύτερο δείκτη, τότε με τον τελεστή * έχουμε πρόσβαση στη διεύθυνση του δεύτερου δείκτη και με τον διπλό τελεστή ** έχουμε πρόσβαση στη μεταβλητή που δείχνει ο δεύτερος δείκτης Δήλωση Μεταβλητής (int) Δήλωση Δείκτη (ptr1) σε int Δήλωση Δείκτη (ptr) σε Δείκτη (που δείχνει σε int) O δείκτης ptr1 δείχνει στον i O δεύτερος δείκτης ptr δείχνει στον πρώτο δείκτη ptr1 **ptr = * (ptr1) = i 57 Παράδειγμα Ποια είναι η έξοδος του παρακάτω προγράμματος??? Έξοδος:

30 Δείκτες και Διδιάστατοι Πίνακες (Ι) Όπως και στους μονοδιάστατους πίνακες, έτσι και στους πολυδιάστατους, η κάθε διάσταση δηλώνεται μέσα σε αγκύλες [] Π.χ. με την εντολή: int arr[2][3]; δηλώνεται ένας διδιάστατος πίνακας, ο οποίος αποτελείται από 2 γραμμές και 3 στήλες (δηλ. συνολικά περιέχει 6 ακέραιες μεταβλητές) και σχηματικά απεικονίζεται όπως παρακάτω arr[0][0] arr[0][1] arr[0][2] arr[1][0] arr[1][1] arr[1][2] Τα στοιχεία του πίνακα αποθηκεύονται σε διαδοχικές θέσεις στη μνήμη ξεκινώντας από τα στοιχεία της 1η γραμμής, συνεχίζοντας με τα στοιχεία της 2ης γραμμής, κ.ο.κ. Άρα, η σειρά αποθήκευσης των στοιχείων του παραπάνω πίνακα arr στη μνήμη είναι: arr[0][0], arr[0][1], arr[0][2], arr[1][0], arr[1][1] και arr[1][2] 59 Δείκτες και Διδιάστατοι Πίνακες (ΙΙ) Η C για να χειριστεί με χρήση δεικτών έναν διδιάστατο πίνακα, έστω arr[ν][μ], θεωρεί ότι ο πίνακας arr αποτελείται από έναν πίνακα δεικτών N στοιχείων, arr[0], arr[1],..., arr[n-1], όπου καθένα από αυτά είναι δείκτης σε έναν πίνακα Μ στοιχείων Π.χ. με την εντολή: int arr[2][3]; η C θεωρεί ότι το arr[0] είναι ένας δείκτης προς έναν πίνακα 3 ακεραίων που περιέχει τα στοιχεία της πρώτης γραμμής, δηλαδή τα arr[0][0], arr[0][1] και arr[0][2] Συγκεκριμένα, το arr[0] είναι δείκτης στο πρώτο στοιχείο του πίνακα, δηλαδή στο arr[0][0] Άρα, η τιμή του *arr[0] είναι ίση με το arr[0][0] 60 30

31 Δείκτες και Διδιάστατοι Πίνακες (ΙΙΙ) Επίσης, σύμφωνα με την αριθμητική δεικτών: το arr[0]+1 είναι δείκτης στο δεύτερο στοιχείο του πίνακα, δηλαδή στο arr[0][1] το arr[0]+2 είναι δείκτης στο τρίτο στοιχείο του πίνακα, δηλαδή στο arr[0][2], κ.ο.κ.... συνεπώς, στη γενική περίπτωση ισχύει ότι το arr[0]+κ είναι δείκτης στο στοιχείο arr[0][κ] της πρώτης γραμμής του διδιάστατου πίνακα Δηλαδή, ισχύει ότι: το arr[0]+κ είναι ισοδύναμο με &arr[0][κ] η τιμή του *(arr[0]+κ) είναι ίση με arr[0][κ] 61 Δείκτες και Διδιάστατοι Πίνακες (Ι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][κ] 62 31

32 Δείκτες και Διδιάστατοι Πίνακες (V) Γενικά, θεωρούμε ότι τα στοιχεία ενός πίνακα arr[n][m], είναι τα arr[0], arr[1],..., arr[n-1] τα οποία είναι δείκτες σε πίνακες που περιέχουν Μ στοιχεία της αντίστοιχης γραμμής Δηλαδή, το πρώτο στοιχείο του πίνακα arr[n][m] είναι το arr[0], το οποίο είναι δείκτης σε έναν πίνακα που περιέχει τα Μ στοιχεία της πρώτης γραμμής το δεύτερο στοιχείο του πίνακα arr[n][m] είναι το arr[1], το οποίο είναι δείκτης σε έναν πίνακα που περιέχει τα Μ στοιχεία της δεύτερης γραμμής... ενώ το τελευταίο στοιχείο είναι το arr[ν-1], το οποίο είναι δείκτης σε έναν πίνακα που περιέχει τα Μ στοιχεία της τελευταίας (της Ν-οστής) γραμμής 63 Παράδειγμα Τι κάνει το παρακάτω πρόγραμμα??? Εμφανίζει τις τιμές όλων των στοιχείων του πίνακα με χρήση δείκτη!!! 64 32

33 Χειρισμός Διδιάστατου Πίνακα με «δείκτη σε δείκτη» (Ι) Ένας εναλλακτικός τρόπος για να διαχειριστούμε έναν διδιάστατο πίνακα με χρήση δείκτη, είναι χρησιμοποιώντας το όνομα του πίνακα Θυμηθείτε ότι το όνομα ενός πίνακα χωρίς τις αγκύλες είναι ισοδύναμο με τη διεύθυνση του πρώτου στοιχείου του πίνακα Π.χ. αν θεωρήσουμε την παρακάτω δήλωση: int arr[2][3]; το όνομα του πίνακα arr είναι δείκτης στο πρώτο στοιχείο του πίνακα, δηλ. στο arr[0] Όμως, όπως είδαμε προηγουμένως, το πρώτο στοιχείο του πίνακα (το arr[0]) είναι με τη σειρά του δείκτης σε έναν πίνακα που περιέχει τα 3 στοιχεία της πρώτης γραμμής Συγκεκριμένα, το arr[0] είναι δείκτης στο πρώτο στοιχείο του πίνακα, δηλαδή στο arr[0][0] 65 Χειρισμός Διδιάστατου Πίνακα με «δείκτη σε δείκτη» (ΙΙ) Άρα, ισχύει ότι το 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] 66 33

34 Παράδειγμα Τι κάνει το παρακάτω πρόγραμμα??? Εμφανίζει τις τιμές όλων των στοιχείων του πίνακα με χρήση του ονόματος του πίνακα ως «δείκτη σε δείκτη»!!! 67 Παρατηρήσεις Προφανώς, η διαχείριση των στοιχείων ενός διδιάστατου πίνακα με χρήση δεικτών (είτε απλού δείκτη είτε «δείκτη σε δείκτη») οδηγεί σε δυσνόητο και μη ευανάγνωστο κώδικα Για τον λόγο αυτό, προτείνουμε η διαχείριση των στοιχείων να γίνεται με τη χρήση των αγκυλών [][] και των αντιστοίχων θέσεων στον πίνακα 68 34

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

36 Παρατηρήσεις Το όνομα του δείκτη πρέπει να βρίσκεται ανάμεσα σε παρενθέσεις, γιατί ο τελεστής * έχει χαμηλότερη προτεραιότητα από τις παρενθέσεις που περιβάλλουν τη λίστα παραμέτρων της συνάρτησης Π.χ. αν γράψουμε: int *ptr(int a); αντί για int (*ptr)(int a); τότε δηλώνεται μία συνάρτηση με όνομα ptr, η οποία δέχεται μία ακέραια παράμετρο και επιστρέφει έναν δείκτη σε μία ακέραια μεταβλητή 71 Χρήση Δείκτη προς Συνάρτηση Η μόνη απαίτηση για να δείξει ένας δείκτης σε μία συνάρτηση είναι ο τύπος επιστροφής της συνάρτησης και η λίστα παραμέτρων της να είναι ίδια με τον τύπο επιστροφής και τη λίστα παραμέτρων της δήλωσης του δείκτη Παράδειγμα: 72 36

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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/ Εξάμηνο: Εαρινό 2015-16

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος 2012-13 Κων/νος Φλώρος Απλοί τύποι δεδομένων Οι τύποι δεδομένων προσδιορίζουν τον τρόπο παράστασης των

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι 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

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

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

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

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

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

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

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

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

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

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

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

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

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

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα "Αλφαριθμητικά"

Πίνακες: μια σύντομη εισαγωγή. Πίνακες χαρακτήρων: τα Αλφαριθμητικά Πίνακες: μια σύντομη εισαγωγή Πίνακες χαρακτήρων: τα "Αλφαριθμητικά" Πίνακες(Arrays): έννοιες και ορισμοί Ορισμός: Πίνακας (array) = σύνολο μεταβλητών του ιδίου τύπου (int, float, char,...) με ένα κοινό

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ ΕΠΙΜΕΛΕΙΑ: ΜΑΡΙΑ Σ. ΖΙΩΓΑ ΚΑΘΗΓΗΤΡΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΘΕΩΡΙΑ 2 ΟΥ και 7 ΟΥ ΚΕΦΑΛΑΙΟΥ ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ και ΔΟΜΗ ΑΚΟΛΟΥΘΙΑΣ 2.1 Να δοθεί ο ορισμός

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

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

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

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

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

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

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

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

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

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

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

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

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

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ

6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ 6. ΠΙΝΑΚΕΣ & ΑΛΦΑΡΙΘΜΗΤΙΚΑ 6.1 Η Έννοια του Πίνακα Συχνά είναι προτιμότερο να αντιμετωπίζουμε ένα σύνολο μεταβλητών σαν ενότητα για να απλοποιούμε το χειρισμό τους. Έτσι οργανώνουμε σύνθετα δεδομένα σε

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

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C Master Mind εφαρμογή στη γλώσσα προγραμματισμού C Φεβρουάριος/Μάρτιος 2013 v. 0.1 Master-mind: κανόνες παιχνιδιού Στο master mind χρειάζεται να παράγονται κάθε φορά 4 τυχαία σύμβολα από ένα πλήθος 6 διαφορετικών

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

7 ο Γυμνάσιο Καβάλας Καλλιόπη Παρσέλια Σχολ. έτος: Το περιβάλλον προγραμματισμού MicroWorlds Pro

7 ο Γυμνάσιο Καβάλας Καλλιόπη Παρσέλια Σχολ. έτος: Το περιβάλλον προγραμματισμού MicroWorlds Pro Το περιβάλλον προγραμματισμού MicroWorlds Pro 1 Εντολές στο Microworlds Pro Η εντολή εξόδου δείξε χρησιμοποιείται: 1. Για να εκτελέσουμε αριθμητικές πράξεις Παραδείγματα Εντολές στο κέντρο εντολών Αποτέλεσμα

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

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

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

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

for for for for( . */

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

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

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

Εισαγωγή στον προγραμματισμό. Τμήμα Πληροφορικής & Επικοινωνιών ΤΕΙ Σερρών Εργαστήριο 2 Εισαγωγή στον προγραμματισμό Τμήμα Πληροφορικής & Επικοινωνιών ΤΕΙ Σερρών Εργαστήριο 2 Δομή Προγράμματος Όλα τα προγράμματα που γράψαμε έχουν λίγο πολύ την ακόλουθη μορφή: Κάποιος κώδικας εδώ main( ) {

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

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

Κεφ 2. Βασικές Έννοιες Αλγορίθμων Κεφ 2. Βασικές Έννοιες Αλγορίθμων 2.7 Τι είναι οι μεταβλητές και τι οι σταθερές; ΑΠΑΝΤΗΣΗ Μεταβλητές: Μια μεταβλητή είναι μια θέση μνήμης του υπολογιστή με συγκεκριμένο όνομα, που χρησιμοποιείται για να

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

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

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

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

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

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

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

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

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

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

8 FORTRAN 77/90/95/2003

8 FORTRAN 77/90/95/2003 ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ 1: Εισαγωγή... 17 1.1. Ανασκόπηση της ιστορίας των υπολογιστών... 18 1.2. Πληροφορία και δεδομένα... 24 1.3. Ο Υπολογιστής... 26 1.4. Δομή και λειτουργία του υπολογιστή... 28 1.5.

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

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

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

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

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

Προγραμματισμός Ι. Προχωρημένα Θέματα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Προχωρημένα Θέματα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ανακατεύθυνση Εισόδου/Εξόδου Συνήθως η τυπική είσοδος ενός προγράμματος (stdin) προέρχεται

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

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

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

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

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης

Αντικειμενοστρεφής Προγραμματισμός -Python. Κ.Π. Γιαλούρης Κ.Π. Γιαλούρης Στόχοι του σημερινού μαθήματος Εξοικείωση με τα περιβάλλοντα της Python Κατανόηση βασικών εννοιών & τεχνικών Τύπος δεδομένων Μεταβλητή Εντολή ανάθεση τιμής / εντολή αντικατάστασης Εισαγωγή

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

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

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

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