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

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

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

Transcript

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

2 . Παρατηρήσεις 1. ιοχέτευση πίνακα ως όρισµα σε συνάρτηση 2. Η Σταθερά NULL Ασκήσεις 2 Περιεχόµενα Μαθήµατος Α. είκτες 1. Η µνήµη του υπολογιστή 2. Η έννοια του δείκτη 3. Ορισµός είκτη 4. Απόδοση τιµής σε δείκτη (Ο τελεστής &) 5. Απόδοση τιµής µέσω δείκτη (ο τελεστής *) 6. Παράδειγµα χρήσης δείκτη Β. είκτες και Πίνακες 1. Το όνοµα ενός πίνακα είναι δείκτης 2. Αποθήκευση ενός πίνακα στη µνήµη 3. Αριθµητική εικτών 4. Ισοδύναµος Συµβολισµός για πρόσβασή σε πίνακα Γ. είκτες και Συναρτήσεις 1. ιοχέτευση είκτη σε Συνάρτηση 2. ιοχέτευση Ορίσµατος σε Συνάρτηση µέσω Τιµής 3. ιοχέτευση Ορίσµατος σε Συνάρτηση µέσω Αναφοράς

3 3 A. είκτες 1. Η Μνήµη του Υπολογιστή Έχουµε ήδη δει κάποιες πληροφορίες για την οργάνωση της µνήµης σε ένα πρόγραµµα. Σε µια απλουστευµένη (αλλά επαρκή) προσέγγιση µπορούµε να φανταστούµε την µνήµη σαν µια ταινία µε χώρους αποθήκευσης δεδοµένων. Κάθε χώρος αποθήκευσης είναι 1 byte (δηλαδή 8 bits). Προκειµένου να µπορούµε να εντοπίσουµε κάθε χώρο αποθήκευσης, έχει έναν αναγνωριστικό αύξων αριθµό (που λέγεται διεύθυνση µνήµης). Έτσι η εικόνα που πρέπει να έχουµε για την µνήµη θα είναι κελιά, το κάθε ένα µε έναν αναγνωριστικό αριθµό, το οποίο θα έχει µέγεθος 1 byte: 0 1Byte x10 9 1Byte 1Byte 1Byte 1Byte 1Byte 1Byte 1Byte

4 4 A. είκτες 1. Η Μνήµη του Υπολογιστή Είδαµε ότι µια συνάρτηση έχει τον δικό της χώρο αποθήκευσης µεταβλητών. Όταν πρόκειται να εκτελεστεί µια συνάρτηση, δεσµεύεται ο χώρος της µνήµης για τις µεταβλητές της συνάρτησης. Έτσι αν για παράδειγµα η main καλεί µια συνάρτηση που έχουµε γράψει (έστω µε όνοµα f), τότε ο µεταγλωττιστής θα µεριµνήσει ώστε κάθε συνάρτηση να έχει τον χώρο της στην µνήµη. Ο χώρος που δεσµεύεται είναι αρκετά µεγάλος για να χωρέσει πάρα πολλές µεταβλητές (το ακριβές πλήθος καθορίζεται από το λειτουργικό σύστηµα, το µεταγλωττιστή κ.λπ.) Χώρος της f Χώρος της main

5 5 A. είκτες 1. Η Μνήµη του Υπολογιστή Όταν δηλώνουµε µεταβλητές σε µια συνάρτηση, ο µεταγλωττιστής επιλέγει κάποιον από τον ελεύθερο χώρο της συνάρτησης για να αποθηκεύσει την µεταβλητή. Έτσι αν π.χ. η f δηλώνει στον χώρο δήλωσης µεταβλητών της δύο ακέραιες µεταβλητές, έστω την x και την y (θεωρούµε ότι µια ακέραια µεταβλητή δεσµεύει 4 bytes όπως συζητήσαµε σε προηγούµενο µάθηµα) Τότε η εικόνα της µνήµης θα είναι η εξής x y Χώρος της f Χώρος της main

6 6 A. είκτες 1. Η Μνήµη του Υπολογιστή Έτσι αν γράψουµε x=1 και y=5 µε εντολές καταχώρησης στο σώµα της f, τότε αποθηκεύονται στις µεταβλητές οι αντίστοιχες τιµές. Ο τρόπος αποθήκευσης στο δυαδικό σύστηµα των αριθµών αυτών δεν µας ενδιαφέρει όταν γράφουµε το πρόγραµµά µας. x y Χώρος της f Χώρος της main Συνοψίζοντας αντιλαµβανόµαστε ότι µία µεταβλητή µπορεί να εντοπιστεί πλήρως από δύο δεδοµένα: τον τύπο δεδοµένων της (για να ξέρουµε πόσα bytes δεσµεύει στην µνήµη) και το πρώτο byte στο οποίο είναι αποθηκευµένη. Π.χ. Για την x αν ξέρω ότι είναι ακέραια και το 1 ο byte της είναι το 1014, τότε µπορώ να εξάγω ότι θα είναι αποθηκευµένη στα bytes

7 7 A. είκτες 2. Η Έννοια του είκτη Έτσι λοιπόν, η εικόνα που θα πρέπει να έχουµε στο µυαλό µας, είναι ότι κάθε µεταβλητή έχει έναν χώρο αποθήκευσης (ίσου µε το µέγεθος της µεταβλητής σε bytes) µε αναγνωριστικό τη διεύθυνση µνήµης του 1 ου byte που αυτή δεσµεύει. x y Χώρος της f Χώρος της main Από την στιγµή όµως που η διεύθυνση µνήµης είναι ένας αριθµός, µπορεί να αντιµετωπιστεί σαν οποιοσδήποτε άλλος αριθµός στην C. Άρα για παράδειγµα µπορούµε να δηλώσουµε µια µεταβλητή στην οποία να αποθηκεύουµε την διεύθυνση µνήµης µιας άλλης µεταβλητής!

8 8 A. είκτες 2. Η Έννοια του είκτη Συνεπώς µπορούµε να δηλώσουµε µια µεταβλητή (έστω µε όνοµα ptr) που θα αποθηκεύσουµε π.χ. την διεύθυνση της µεταβλητής x. Αυτή η µεταβλητή, η οποία αποθηκεύει ως τιµή την διεύθυνση µνήµης άλλων µεταβλητών ονοµάζεται δείκτης: Χώρος της f Μεταβλητή x είκτης ptr Χώρος της main είτε λοιπόν ότι ο δείκτης ptr έχει ως τιµή την διεύθυνση της µεταβλητής x. Θα λέµε για το λόγο αυτό, ότι ο δείκτης ptr δείχνει στην µεταβλητή x

9 9 A. είκτες 3. Ορισµός είκτη Ένας δείκτης δηλώνεται µε την εντολή δήλωσης: Τύπος_ εδοµένων *Ονοµα_ είκτη ηλώνουµε έναν δείκτη µε όνοµα «Ονοµα_ είκτη» που θα δείχνει σε µια µεταβλητή τύπου δεδοµένων «Τύπος_ εδοµένων» Παραδείγµατα: int *p; Εδώ δηλώνουµε έναν δείκτη σε ακέραιο µε όνοµα p. double *ptr; Εδώ δηλώνουµε έναν δείκτη σε double µε όνοµα ptr ιαπιστώστε ότι ένας δείκτης είναι ακόµη ένας τύπος δεδοµένων. Με την ιδιαιτερότητα ότι οι µεταβλητές που θα αποθηκεύει θα είναι διευθύνσεις µνήµης. Ο τύπος δεδοµένων συµβολικά είναι (int *) και (double *) αντίστοιχα στις δηλώσεις που είδαµε.

10 10 A. είκτες 4. Απόδοση Τιµής σε είκτη Για να έχει νόηµα ένας δείκτης πρέπει να τον συσχετίσουµε µε µια µεταβλητή, ή όπως λέµε να τον βάλουµε να δείχνει στην µεταβλητή. Αυτό γίνεται µε τον εξής τρόπο: int x; int *p; p=&x; // Βάλε τον δείκτη p να δείχνει στην x. Ο τελεστής & (θα τον διαβάζουµε «διεύθυνση του») µπαίνει µπροστά από µια µεταβλητή και µας επιστρέφει την διεύθυνση του. Άρα: αν η x είναι αποθηκευµένη π.χ. στην διεύθυνση 10333, τότε η τιµή &x (διεύθυνση του x) είναι 10333, άρα η τιµή της p µετά την εντολή ανάθεσης είναι

11 11 A. είκτες 5. Απόδοση Τιµής µέσω είκτη (Ο τελεστής *) Ο τελεστής * (που ονοµάζεται τελεστής έµµεσης διευθυνσιοδότησης) έχει δύο χρήσεις: Είδαµε την πρώτη που είναι να δηλώσουµε µια µεταβλητή τύπου δείκτη. Η δεύτερη χρήση είναι η εξής: Αν σε µία εντολή, βάλουµε το * µπροστά από έναν δείκτη, τότε αναφερόµαστε στην µεταβλητή που δείχνει ο δείκτης. Βλέπουµε το παράδειγµα: int x; int *p; p=&x; *p=5; //Η µεταβλητή που δείχνει το *p (άρα το x) παίρνει την τιµή 5 Μετά από αυτό το παράδειγµα αντιλαµβανόµαστε ότι έχουµε δύο τρόπους για να έχουµε πρόσβαση στην µεταβλητή x: Απευθείας µε το όνοµα της x (άµεση πρόσβαση) Μέσω του δείκτη που δείχνει στην x (έµµεση πρόσβαση)

12 12 A. είκτες 6. Παράδειγµα Χρήσης εικτών Μεταγλωττίστε, εκτελέστε και µελετήστε το πρόγραµµα: /* pointers.c: Deixnei tin vasiki xrisi twn deiktwn */ #include <stdio.h> main() { int x; int *ptr; ptr=&x; } x=5; printf("x=%d\t *ptr=%d\t &x=%d\t ptr=%d",x,*ptr,&x,ptr); *ptr=8; printf("\nx=%d\t *ptr=%d\t &x=%d\t ptr=%d",x,*ptr,&x,ptr); x=9; printf("\nx=%d\t *ptr=%d\t &x=%d\t ptr=%d",x,*ptr,&x,ptr);

13 13 Β. είκτες και Πίνακες 1. Το Όνοµα ενός Πίνακα είναι είκτης Οι δείκτες είναι πολύ χρήσιµοι σε συνδυασµό µε τους πίνακες! Αυτό συµβαίνει διότι εξ ορισµού το όνοµα κάθε πίνακα είναι ένας δείκτης µε τύπο δεδοµένων τον τύπο δεδοµένων του πίνακα. Ωστόσο είναι ένας δείκτης που δεν µπορούµε να αλλάξουµε την τιµή του. Μπορούµε όµως να ορίσουµε έναν δείκτη να δείχνει στην αρχή του πίνακα µε τον εξής τρόπο: int pinakas[100]; int *ptr; ptr=pinakas; Ο δείκτης θα δείχνει στον πρώτο ακέραιο αριθµό του πίνακα. Ο δείκτης ptr µπορεί να αλλάξει! Σηµειώστε εδώ ότι θα µπορούσαµε να βάλουµε τον δείκτη να δείχνει στο πρώτο στοιχείο του πίνακα και µε την εντολή int pinakas[100]; int *ptr; ptr=&pinakas[0]; Ωστόσο είναι σηµαντικό να γνωρίζουµε τον πρώτο τρόπο. ptr=&pinakas[0]

14 14 Β. είκτες και Πίνακες 2. Αποθήκευση ενός Πίνακα στη Μνήµη Στο µάθηµα 8, είδαµε ότι τα στοιχεία ενός πίνακα αποθηκεύονται σε διαδοχικές θέσεις µνήµης. Έφτασε η ώρα να το διαπιστώσουµε και πειραµατικά. Είδαµε ότι µε την δήλωση: int pin[4]; ηµιουργείται ένας πίνακας 4 διαδοχικών θέσεων στην µνήµη Χώρος της συνάρτησης pin[0] pin[1] pin[2] pin[3] Γνωρίζουµε πλέον ότι &pin[0],&pin[1],&pin[2],&pin[3] είναι οι διευθύνσεις µνήµης των 4 µεταβλητών του πίνακα. Το πρόγραµµα της επόµενης διαφάνειας δείχνει ότι όντως οι µεταβλητές αυτές αποθηκεύονται σε διαδοχικές θέσεις µνήµης.

15 15 Β. είκτες και Πίνακες 2. Αποθήκευση ενός Πίνακα στη Μνήµη Μεταγλωττίστε, εκτελέστε και µελετήστε το πρόγραµµα: /* matrix_pointers.c: Deixnei oti oi theseis mnimis enos pinaka einai diadoxikes */ #include <stdio.h> #define N 4 main() { int pin[n]; int i; } for (i=0; i<n; i++) printf("\nstoixeio:%d, Diefthinsi Thesis Mnimis: %d",i, &pin[i]);

16 16 Β. είκτες και Πίνακες 3. Αριθµητική εικτών Μεγάλη προσοχή. Οι δείκτες έχουν µια ιδιαίτερη αριθµητική έτσι ώστε να δουλεύουν αποδοτικά σε συνδυασµό µε τους πίνακες: Έστω το πρόγραµµα int pinakas[100]; int *ptr; ptr=pinakas; Η εντολή: ptr++; εν αυξάνει την τιµή του δείκτη κατά 1! Αλλά αυξάνει την τιµή του δείκτη κατά τόσα bytes όσα είναι και ο τύπος δεδοµένων του δείκτη (για ακέραιο: κατά 4!). Ενώ η εντολή: ptr--; Μειώνει την τιµή του δείκτη κατά τόσα bytes όσα είναι και ο τύπος δεδοµένων του δείκτη (για ακέραιο: κατά 4!).

17 17 Β. είκτες και Πίνακες 3. Αριθµητική εικτών Το παρακάτω πρόγραµµα δείχνει πως µπορούµε να διατρέξουµε τα στοιχεία ενός πίνακα µέσω ενός βοηθητικού δείκτη και όχι απ ευθείας! /* pointer_calc.c: Pws exoume prosvasi sta stoixeia enos pinaka mesw deikti */ #include <stdio.h> #define N 10 main() { int pin[n]; int i; int *ptr; } ptr=pin; for (i=0; i<n; i++) { printf("\nstoixeio:%d, Diefthinsi Thesis Mnimis: %d",i, ptr); ptr++; }

18 18 Β. είκτες και Πίνακες 3. Αριθµητική εικτών Για την ώρα µπορεί να µην φαίνεται χρήσιµο, γιατί να κάνουµε πρόσβαση στα στοιχεία του πίνακα µε αυτόν τον τρόπο! Αργότερα όµως θα δούµε πραγµατικά χρήσιµες εφαρµογές αυτής της ιδιότητας. Ας δούµε όµως ένα ακόµη παράδειγµα: double pinakas[100]; double *ptr; ptr=pinakas; ptr+=2; Η εντολή ptr+=2 λοιπόν θα αυξήσει την τιµή της ptr κατα 2 x (το µέγεθος του double), άρα θα αυξήσει τη διεύθυνση κατά 16, αφού µία double µεταβλητή δεσµεύει 8 bytes. Μετά το πέρας της εκτέλεσης αυτών των εντολών ο δείκτης ptr θα δείχνει στο στοιχείο pinakas[2].

19 19 Β. είκτες και Πίνακες 4. Ισοδύναµος Συµβολισµός για την Πρόσβαση σε Πίνακα Με βάση την αριθµητική δεικτών, η παράσταση: *(array+2) Μπορεί να εξηγηθεί ως εξής: Το (array+2) δίνει την διεύθυνση του 3 ου στοιχείου του πίνακα. Άρα µε το * µπροστά, µας δίνει την τιµή του 3 ου στοιχείου του πίνακα. Έτσι για παράδειγµα ο βρόχος: for (i=0; i<n; i++) printf("%d",array[i]); µπορεί να γραφεί ισοδύναµα: for (i=0; i<n; i++) printf("%d",*(array+i));

20 20 Γ. είκτες και Συναρτήσεις 1. ιοχέτευση είκτη σε Συνάρτηση Από τη στιγµή που ένας δείκτης µπορεί να ειδωθεί σαν µια µεταβλητή (στην οποία αποθηκεύονται διευθύνσεις µεταβλητών), έχουµε κάθε δικαίωµα να τον περάσουµε ως όρισµα σε µια συνάρτηση. Π.χ. Το ακόλουθο πρωτότυπο συνάρτησης: int func(int *p, int x) έχεται ως ορίσµατα δύο πράγµατα: Έναν δείκτη σε ακέραιο (το p) και έναν ακέραιο (το x) Μπορεί βεβαίως και από µία συνάρτηση να επιστραφεί ένας δείκτης σε µια µεταβλητή. Το πρωτότυπο µιας τέτοιας συνάρτησης θα είναι: int *func2(float y) Όπου στο σώµα της συνάρτησης θα ορίζουµε ότι επιστρέφεται ένας δείκτης σε ακέραια µεταβλητή. Μας ενδιαφέρει αυτό; ΠΑΡΑ ΠΟΛΥ! Το πως περνάµε µια µεταβλητή (µέσω µεταβλητής ή µέσω δείκτη) είναι από τις πιο σηµαντικές προγραµµατιστικές τεχνικές της C!

21 21 Γ. είκτες και Συναρτήσεις 2. ιοχέτευση Ορίσµατος σε Συνάρτηση Μέσω Τιµής Στο µάθηµα 6 «Συναρτήσεις», είδαµε ότι κάθε συνάρτηση έχει τον δικό της χώρο µεταβλητών στην µνήµη. Ας µελετήσουµε για να θυµηθούµε τις ιδιότητες αυτές ένα απλό πρόγραµµα. /*byvalue.c: Perasma orismatwn mesw timis */ #include <stdio.h> void swap(int a,int b); main() { int a=5,b=10; printf("\nmain: a=%d,b=%d",a,b); swap(a,b); printf("\nmain: a=%d,b=%d",a,b); } void swap(int a, int b) { int k; k=a; a=b; b=k; printf("\nswap: a=%d,b=%d",a,b); }

22 22 Γ. είκτες και Συναρτήσεις 2. ιοχέτευση Ορίσµατος σε Συνάρτηση Μέσω Τιµής Ας θυµηθούµε πως δουλεύει το πρόγραµµα αυτό. Πριν την κλήση της συνάρτησης swap, οι µεταβλητές a και b έχουν πάρει τις τιµές a=5 και b=10. Συνεπώς όταν γίνεται η κλήση της swap, τα ορίσµατα a, και b της συνάρτησης swap έχουν αντίστοιχα τιµές 5 και 10. Η εικόνα της µνήµης είναι: Χώρος της main a 5 Χώρος της swap b a b Αφού εκτελεστούν οι εντολές της swap, αλλάζουν οι τιµές των a και b στην swap, αλλά επειδή αυτές είναι τοπικές µεταβλητές στην swap η τιµή των a,b στην main δεν αλλάζει! Η εικόνα της µνήµης είναι: Χώρος της main a 5 Χώρος της swap b a b

23 23 Γ. είκτες και Συναρτήσεις 2. ιοχέτευση Ορίσµατος σε Συνάρτηση Μέσω Τιµής Πρακτικά, όταν περνάµε ορίσµατα µέσω µεταβλητών, οι αλλαγές που γίνονται στις µεταβλητές που διοχετεύουµε ως ορίσµατα, δεν θα εξακολουθούν να υφίστανται όταν ο έλεγχος του προγράµµατος επιστρέψει στη καλούσα συνάρτηση. Αυτός ο τρόπος για να περάσουµε ένα όρισµα σε µια συνάρτηση λέγεται διοχέτευση ορίσµατος σε συνάρτηση µέσω τιµής (by value) υπό την έννοια ότι στην συνάρτηση έχουµε στα χέρια µας την τιµή της µεταβλητής και όχι την ίδια την µεταβλητή. Είναι προφανές ότι σε κάποιες συναρτήσεις θα επιθυµούµε να αλλάζει η τιµή της µεταβλητής µέσα στην συνάρτηση και αυτό να µπορεί να το «δει» και η καλούσα συνάρτηση. Αυτός είναι ο δεύτερος τρόπος για να περάσουµε ένα όρισµα σε µια συνάρτηση, λέγεται διοχέτευση ορίσµατος σε συνάρτηση µέσω αναφοράς (by reference) και όπως θα δούµε στην συνέχεια δεν διοχετεύουµε ως όρισµα την µεταβλητή, αλλά δείκτη στην µεταβλητή!

24 24 Γ. είκτες και Συναρτήσεις 3. ιοχέτευση Ορίσµατος σε Συνάρτηση Μέσω Αναφοράς Άρα τροποποιούµε την συνάρτηση µας ως εξής: /*byreference.c: Perasma orismatwn mesw anaforas */ #include <stdio.h> void swap(int *ptra, int *ptrb); main() { int a=5,b=10; printf("\nmain: a=%d,b=%d",a,b); swap(&a,&b); printf("\nmain: a=%d,b=%d",a,b); } void swap(int *ptra, int *ptrb) { int k; k=*ptra; *ptra=*ptrb; *ptrb=k; printf("\nswap: a=%d,b=%d",*ptra,*ptrb); }

25 25 Γ. είκτες και Συναρτήσεις 3. ιοχέτευση Ορίσµατος σε Συνάρτηση Μέσω Αναφοράς Να δούµε πως δουλεύει το πρόγραµµα αυτό. Πριν την κλήση της συνάρτησης swap, οι µεταβλητές a και b έχουν πάρει τις τιµές a=5 και b=10. Ας υποθέσουµε ότι η διεύθυνση της a είναι 1000 και της b Χώρος της main a 5 b Χώρος της swap ptra ptrb Η τιµή &a, υπολογίζεται στο 1000, ενώ η τιµή &b υπολογίζεται στο Συνεπώς όταν αρχίζει η εκτέλεση της swap η εικόνα της µνήµης είναι: Χώρος της main a 5 b Χώρος της swap ptra ptrb

26 Γ. είκτες και Συναρτήσεις 3. ιοχέτευση Ορίσµατος σε Συνάρτηση Μέσω Αναφοράς Ας δούµε τώρα αναλυτικά τις εντολές που τρέχουν στην swap: k=*ptra; //Αναθέτει στην µεταβλητή k την τιµή της µεταβήτης που δείχνει ο ptra Χώρος της main a 5 b Χώρος της swap ptra ptrb k 5 26 *ptra=*ptrb; Αναθέτει στην µεταβλητή που δείχνει ο ptra την τιµή που δείχνει ο ptrb Χώρος της main a 10 b 10 ptra 1000 Χώρος της swap ptrb 1012 k *ptrb=k; Αναθέτει στην µεταβλητή που δείχνει ο ptrb την τιµή του k Χώρος της main a 10 b Χώρος της swap ptra ptrb k

27 27 Γ. είκτες και Συναρτήσεις 3. ιοχέτευση Ορίσµατος σε Συνάρτηση Μέσω Αναφοράς Τι παρατηρούµε: Ότι µε έµµεσο τρόπο η συνάρτηση προσπελαύνει τις ίδιες τις µεταβλητές της main! Άρα για τον λόγο αυτό, οι αλλαγές που κάνουµε στις µεταβλητές παραµένουν και στην main! Συνοψίζοντας: Αν θέλουµε να αλλάξει η τιµή µια µεταβλητής σε µια συνάρτηση και το αποτέλεσµα αυτό να διατηρηθεί και στην καλούσα συνάρτηση, διοχετεύουµε το όρισµα µέσω αναφοράς (δηλαδή µέσω δείκτη) Αλλιώς διοχετεύουµε το όρισµα απλά µέσω τιµής. Επιπλέον: είτε ότι µε τον τρόπο αυτό µπορούµε να έχουµε περισσότερα από ένα επιστρεφόµενα αποτελέσµατα. Το ένα επιστρεφόµενο αποτέλεσµα θα το πάρουµε από την return και το άλλο µέσω δείκτη! Ή ακόµη πιο απλά µπορούµε να πάρουµε και τις δύο επιστρεφόµενες τιµές µέσω δείκτη.

28 28. Παρατηρήσεις 1. ιοχέτευση Πίνακα ως Όρισµα σε Συνάρτηση Σηµείωση: Επειδή είναι πολύ συνηθισµένο να διοχετεύουµε έναν πίνακα ως όρισµα, και για να είναι πιο εµφανές στην ανάγνωση ότι πρόκειται περί πίνακα και όχι δείκτη σε µεταβλητή, η C µας δίνει την δυνατότητα: Αντί να γράψουµε το πρωτότυπο: void print(int *pinakas, int n); Να γράψουµε το πρωτότυπο: void print(int pinakas[], int n); Οποιοδήποτε από τα δύο πρωτότυπα και να χρησιµοποιήσουµε θα έχουµε το ίδιο αποτέλεσµα. Με βάση τα παραπάνω εξ ορισµού το πέρασµα ενός πίνακα σε µία συνάρτηση γίνεται µέσω αναφοράς. Άρα θα θυµόµαστε ότι οποιαδήποτε αλλαγή γίνεται σε έναν πίνακα που διοχετεύουµε ως όρισµα, παραµένει και στην καλούσα συνάρτηση. Αν θέλουµε να περάσουµε αντίγραφο του πίνακα ως όρισµα σε µία συνάρτηση, θα πρέπει να κατασκευάσουµε πρώτα ένα αντίγραφό του.

29 29. Παρατηρήσεις 2. Η Σταθερά NULL Ένα πολύ συνηθισµένο λάθος είναι να καταχωρούµε τιµή σε έναν δείκτη που δεν τον έχουµε συσχετίσει µε µια µεταβλητή. Π.χ. ο κώδικας: int x; int *p; *p=15; Θα δηµιουργήσει σφάλµα εκτέλεσης! Το p δεν δείχνει πουθενά, άρα όταν πάµε να εκτελέσουµε την εντολή δεν επηρεάζουµε κάποια µεταβλητή, άρα το πρόγραµµα έχει µια απροσδόκητη συµπεριφορά! Συνεπώς πάντα όταν δηλώνουµε ένα δείκτη, θα πρέπει να τον συσχετίζουµε µε µια µεταβλητή η οποία θα είναι αποθηκευµένη στην µνήµη. Θα υπάρξουν και κάποιες περιπτώσεις που θα θέλουµε ο δείκτης να µην έχει τιµή. Για τον λόγο αυτό στην C είναι ορισµένη µία συµβολική σταθερά, το NULL, την οποία θα την χρησιµοποιούµε συµβολικά για να λέµε ότι «ο δείκτης δεν δείχνει πουθενά». Παράδειγµα: int *p; p=null; /* O p δεν δείχνει πουθενά */

30 30 Ε. Ασκήσεις 1. Υπολογισµός Ριζών Β Βάθµιας Εξίσωσης 1. Γράψτε µια συνάρτηση µε όνοµα: int rizes(float a, float b, float c, float *x1, float *x2); Η οποία να υπολογίζει τις ρίζες της εξίσωσης ax 2 +bx+c=0. Η συνάρτηση να επιστρέφει (µέσω ορίσµατος) στις µεταβλητές x1 και x2 τις πραγµατικές ρίζες της εξίσωσης και να επιστρέφει µε return το πλήθος των λύσεων της εξίσωσης Βοήθεια: Θα χρειαστείτε την συνάρτηση: double sqrt(double x); Η οποία είναι ορισµένη στο αρχείο κεφαλίδας math.h Βοήθεια: Ο προσδιοριστής των printf, scanf για τύπο δεδοµένων float είναι %f (αντί για %d στους ακεραίους) 2. Έπειτα γράψτε µια συνάρτηση main, που θα διαβάζει από την είσοδο τις τιµές των a,b,c (συντελεστές της εξίσωσης) και αφού εκτελέσει την συνάρτηση rizes θα εκτυπώνει τα κατάλληλα µηνύµατα µε τις ρίζες της β βάθµιας εξίσωης.

31 31 Ε. Ασκήσεις 2. Συνάρτηση init_array 1. Γράψτε την συνάρτηση: void init_array(int *pinakas, int n, int a, int b) που να αρχικοποιεί έναν πίνακα n ακεραίων, µε τυχαίους αριθµούς στο διάστηµα [a..b] 2. Ελέγξτε την ορθότητα της συνάρτησής σας µε κατάλληλα παραδείγµατα

32 32 Ε. Ασκήσεις 3. Συνάρτηση print_array Επεκτείνετε το πρόγραµµα της προηγούµενης άσκησης: 1. Γράψτε την συνάρτηση: void print_array(int *pinakas, int n) που να τυπώνει τα περιεχόµενα του πίνακα ακεραίων pinakas. 2. Ελέγξτε την ορθότητα της συνάρτησής σας µε κατάλληλα παραδείγµατα

33 33 Ε. Ασκήσεις 4. Συνάρτηση max_array Επεκτείνετε το πρόγραµµα της προηγούµενης άσκησης: 1. Γράψτε την συνάρτηση: int max_array(int *pinakas, int n) που να επιστρέφει τον µέγιστο στοιχείο του πίνακα ακεραίων pinakas 2. Ελέγξτε την ορθότητα της συνάρτησής σας µε κατάλληλα παραδείγµατα

34 34 Ε. Ασκήσεις 5. Ένα Πολύπλοκο Πρόγραµµα Συνεχίζοντας το προηγούµενο παράδειγµα, γράψτε µία συνάρτηση main η οποία: 1. Να δηλώνει έναν πίνακα ακεραίων 1000 θέσεων 2. Μέσα από ένα επαναλαµβανόµενο βρόχο να δίνει 6 επιλογές στον χρήστη: 1. Να εισάγει το µέγεθος του πίνακα 2. Να αρχικοποιεί µε τυχαίους αριθµούς από το a έως το b τα στοιχεία του πίνακα, όπου a και b είναι αριθµοί που ζητούνται από το χρήστη. 3. Να βρίσκει τον µέγιστο του πίνακα και να τον τυπώνει 4. Να τυπώνει όλα τα στοιχεία του πίνακα 5. Να κάνει έξοδο από τον επαναλαµβανόµενο βρόχο

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

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

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

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

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

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

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

Κεφάλαιο 8.7. Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 8.7 Πίνακες & Συναρτήσεις ( ιάλεξη 17) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 17-1 Εισαγωγή Στις προηγούµενες διαλέξεις µάθαµε πώς να δηλώνουµε, αρχικοποιούµε και να επεξεργαζόµαστε πίνακες. Σήµερα θα µελετήσουµε

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II. ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II ( ιάλεξη 12) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 12-1 Ανασκόπηση οµής Προγράµµατος µε Συναρτήσεις #include 1 void PrintMessage (); Πρότυπο ( ήλωση) Συνάρτησης (

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

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

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

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

H ΓΛΩΣΣΑ C. Μάθηµα 12: υναµική έσµευση Μνήµης. ηµήτρης Ψούνης

H ΓΛΩΣΣΑ C. Μάθηµα 12: υναµική έσµευση Μνήµης. ηµήτρης Ψούνης H ΓΛΩΣΣΑ C Μάθηµα 12: υναµική έσµευση Μνήµης ηµήτρης Ψούνης 2 Περιεχόµενα Μαθήµατος 1. Στατική έσµευση Μνήµης 1. Η συνάρτηση malloc 2. Η συνάρτηση free 3. έσµευση Μεταβλητής 4. έσµευση Μονοδιάστατου Πίνακα

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

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

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

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

H ΓΛΩΣΣΑ C. Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C. ηµήτρης Ψούνης

H ΓΛΩΣΣΑ C. Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C. ηµήτρης Ψούνης H ΓΛΩΣΣΑ C Μάθηµα 1: Το Πρώτο µας Πρόγραµµα σε C ηµήτρης Ψούνης 2 Περιεχόµενα Μαθήµατος Α. Θεωρία 1. Κύκλος Ανάπτυξης Προγράµµατος 1. Συγγραφή και Μεταγλώττιση ενός προγράµµατος 2. Εκτέλεση του προγράµµατος

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

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

Κεφάλαιο Πίνακες Ι. ( ιάλεξη 15) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 8.1-8.3 Πίνακες Ι ( ιάλεξη 15) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 15-1 Πίνακες (Arrays) Σε αυτή την ενότητα θα µιλήσουµε για την δοµή δεδοµένων Πίνακας: 1. Εισαγωγή & Σύνταξη 2. ήλωση Πίνακα 3. Αρχικοποίηση

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

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

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

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

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

Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 9.8 Δείκτες (Pointers) Ένας δείκτης είναι μια μεταβλητή με τιμή μια διεύθυνση μνήμης. 1000 1001 1002 1003 1004 1005 12 9.8 9976 3 1010 26 1006 1007 1008 1009 1010 1011 16 125 1299 a 13 1298 Δήλωση Δήλωση Τύπος

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

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

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

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

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

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

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

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

Κεφάλαιο 8.7. Πολυδιάστατοι Πίνακες ( ιάλεξη 18) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 8.7 Πολυδιάστατοι Πίνακες ( ιάλεξη 18) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Πολυδιάστατοι πίνακες Μέχρι τώρα µιλούσαµε για Μονοδιάστατους Πίνακες. ή π.χ. int age[5]= {31,28,31,30,31; για Παράλληλους πίνακες,

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

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

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

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

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

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

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

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

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

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

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

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

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

Μεθόδων Επίλυσης Προβλημάτων ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 13 Πίνακες & Συναρτήσεις Εισαγωγή Στις προηγούμενες

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ Διάλεξη 3: Δείκτες και Πίνακες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Αριθμητική Δεικτών Δείκτες και Πίνακες Παραδείγματα Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

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

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

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

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

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

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

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

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

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

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

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

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

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

H ΓΛΩΣΣΑ C. Μάθηµα 4: Τελεστές και η οµή Ελέγχου (if$else) ηµήτρης Ψούνης

H ΓΛΩΣΣΑ C. Μάθηµα 4: Τελεστές και η οµή Ελέγχου (if$else) ηµήτρης Ψούνης H ΓΛΩΣΣΑ C Μάθηµα 4: Τελεστές και η οµή Ελέγχου (if$else) ηµήτρης Ψούνης 2 Περιεχόµενα Μαθήµατος Α. Τελεστές 1. Παραστάσεις στην C 1. Απλές Παραστάσεις 2. Σύνθετες Παραστάσεις 2. Ο τελεστής καταχώρησης

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

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

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

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

ΗΥ-150. Πίνακες (Arrays)

ΗΥ-150. Πίνακες (Arrays) ΗΥ-150 Προγραµµατισµός Πίνακες (Arrays) Προγραµµατισµός Εισαγωγικά Έστω ότι θέλουµε να αποθηκεύσουµε 100 ονόµατα φοιτητών και τους βαθµούς τους. Πως θα το κάναµε αυτό µε µεταβλητές; Πως θα µπορούσαµε να

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

Η Γλώσσα Προγραµµατισµού 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 Θα

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

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

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

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

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

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

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

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

Κεφάλαιο , 3.2: Συναρτήσεις II. (Διάλεξη 12) Κεφάλαιο 3.5-3.6, 3.2: Συναρτήσεις II (Διάλεξη 12) 12-1 Ανασκόπηση Δομής Προγράμματος με Συναρτήσεις 1 void PrintMessage (); Πρότυπο (Δήλωση) Συνάρτησης (Δηλώνουν τι επιπλέον συναρτήσεις θα χρησιμοποιήσουμε

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

H ΓΛΩΣΣΑ C. Μάθηµα 17: Είσοδος/Έξοδος: Επικοινωνία µε το Λειτουργικό Σύστηµα. ηµήτρης Ψούνης

H ΓΛΩΣΣΑ C. Μάθηµα 17: Είσοδος/Έξοδος: Επικοινωνία µε το Λειτουργικό Σύστηµα. ηµήτρης Ψούνης H ΓΛΩΣΣΑ C Μάθηµα 17: Είσοδος/Έξοδος: Επικοινωνία µε το Λειτουργικό Σύστηµα ηµήτρης Ψούνης 2 Περιεχόµενα Μαθήµατος Σύστηµα 1. Γενικά 2. Λειτουργικό Σύστηµα 3. Ορίσµατα Γραµµής Εντολής 1. Ορισµός της main

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

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

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

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο Αλφαριθµητικές Σειρές Χαρακτήρων (Strings)

Κεφάλαιο Αλφαριθµητικές Σειρές Χαρακτήρων (Strings) Κεφάλαιο 9.1-9.2 Αλφαριθµητικές Σειρές Χαρακτήρων (Strings) ( ιάλεξη 19) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 1) Strings στη C Ένα string είναι µία ακολουθία αλφαριθµητικών χαρακτήρων, σηµείων στίξης κτλ. Π.χ.

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

H ΓΛΩΣΣΑ C. Μάθηµα 15: Είσοδος/Έξοδος: Συναρτήσεις Εισόδου. ηµήτρης Ψούνης

H ΓΛΩΣΣΑ C. Μάθηµα 15: Είσοδος/Έξοδος: Συναρτήσεις Εισόδου. ηµήτρης Ψούνης H ΓΛΩΣΣΑ C Μάθηµα 15: Είσοδος/Έξοδος: Συναρτήσεις Εισόδου ηµήτρης Ψούνης 2 Περιεχόµενα Μαθήµατος Α. Ροές 1. Γενικά 2. Η ροή προκαθορισµένης εισόδου stdin 3. Η ροή προκαθορισµένης εξόδου stdout 4. Η ροή

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

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

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

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

5ο σετ σημειώσεων - Δείκτες

5ο σετ σημειώσεων - Δείκτες 5ο σετ σημειώσεων - Δείκτες 11 Ιουνίου 01 1 Γενικά Σύμφωνα με το γενικό μοντέλο υπολογιστή, ένας υπολογιστής είναι μία μηχανή που διαθέτει μία κεντρική μονάδα επεξεργασίας η οποία μπορεί μεταξύ άλλων να

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

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

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

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

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

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

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

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

Μεθόδων Επίλυσης Προβλημάτων ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 9 Συναρτήσεις Μέρος II Θέματα ιάλεξης Μη- ομημένος

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

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

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

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

ΠΛΗ111. Ανοιξη Μάθηµα 1 ο Ανασκόπηση της Γλώσσας Προγραµµατισµού C. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης

ΠΛΗ111. Ανοιξη Μάθηµα 1 ο Ανασκόπηση της Γλώσσας Προγραµµατισµού C. Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης ΠΛΗ111 οµηµένος Προγραµµατισµός Ανοιξη 2005 Μάθηµα 1 ο Ανασκόπηση της Γλώσσας Προγραµµατισµού C Τµήµα Ηλεκτρονικών Μηχανικών και Μηχανικών Υπολογιστών Πολυτεχνείο Κρήτης Ανασκόπηση της C είκτες Πίνακες

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

Βαθμός Σχόλια. lab5 PASS PASS PASS PASS PASS. Οριακά PASS - Καλή δουλειά

Βαθμός Σχόλια. lab5 PASS PASS PASS PASS PASS. Οριακά PASS - Καλή δουλειά Α. Μ. Βαθμός Σχόλια 1183 1194 1238 1239 1240 1241 - Καλή δουλειά 1242 1243 1244 1245 - Κακή χρήση συναρτήσεων. Κάνεις τον ίδιο έλεγχο και εντός και εκτός της συνάρτησης. Θα έπρεπε να έχεις βρεί ένα τρόπο

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

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

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

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

Ορισμός μεταβλητών δεικτών και αρχικοποίηση

Ορισμός μεταβλητών δεικτών και αρχικοποίηση Ορισμός μεταβλητών δεικτών και αρχικοποίηση Η έννοια του δείκτη Κάθε μεταβλητή σχετίζεται με μια θέση στην κύρια μνήμη του Η/Υ η οποία έχει τη δική της ξεχωριστή διεύθυνση Ο δείκτης είναι μια μεταβλητή

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

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

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

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

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C Οι συναρτήσεις τι είναι Πρόκειται για ανεξάρτητα τμήματα ενός προγράμματος (υποπρογράμματα) που επιτελούν συγκεκριμένες εργασίες. Καλούνται από το κυρίως

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

Κεφάλαιο Πίνακες Ι. (Διάλεξη 16)

Κεφάλαιο Πίνακες Ι. (Διάλεξη 16) Κεφάλαιο 8.1-8.3 Πίνακες Ι (Διάλεξη 16) 15-1 Πίνακες (Arrays) Σε αυτή την ενότητα θα μιλήσουμε για την δομή δεδομένων Πίνακας: 1. Εισαγωγή & Σύνταξη 2. Δήλωση Πίνακα 3. Αρχικοποίηση Πίνακα 4. Πρόσβαση

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

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

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

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

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

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

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

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

ΣΥΝΑΡΤΗΣΕΙΣ (Functions) ΣΥΝΑΡΤΗΣΕΙΣ (Functions) Δομή Συνάρτησης τύπος όνομα ( λίστα τυπικών παραμέτρων ) Δηλώσεις μεταβλητών εντολή_1 εντολή_2 : εντολή_ν Σώμα της συνάρτησης Δομή της Λίστας Τυπικών Παραμέτρων τύπος_1 τύπος_2

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

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

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

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

ΗΥ-150. Προγραµµατισµός. Πίνακες (Arrays)

ΗΥ-150. Προγραµµατισµός. Πίνακες (Arrays) ΗΥ-150 Προγραµµατισµός Πίνακες (Arrays) Προγραµµατισµός Εισαγωγικά Έστω ότι θέλουµε να αποθηκεύσουµε 100 ονόµατα φοιτητών και τους βαθµούς τους. Πως θα το κάναµε αυτό µε µεταβλητές; Πως θα µπορούσαµε να

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

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

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

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

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

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

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

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

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

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

Προγραµµατιστικές τεχνικές

Προγραµµατιστικές τεχνικές Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Προγραµµατιστικές τεχνικές Βασίλειος Βεσκούκης ρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Ρωµύλος Κορακίτης

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

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

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

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

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

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

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

οµές (structures) και Eνώσεις (unions)

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

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

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

Κεφάλαιο 3.1, : Συναρτήσεις I. ( ιάλεξη 11) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 3.1,3.3-3.4: Συναρτήσεις I ( ιάλεξη 11) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 11-1 Μη- οµηµένος Προγραµµατισµός Το πρόγραµµα στα αριστερά δεν είναι Αρθρωτό (δεν έχει σωστή δοµή). Όλη η λειτουργικότητα

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

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

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

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

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

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

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

Συναρτήσεις. Κατασκευαστικά Τεµάχια για τη ηµιουργία Αρθρωτών Προγραµµάτων

Συναρτήσεις. Κατασκευαστικά Τεµάχια για τη ηµιουργία Αρθρωτών Προγραµµάτων Συναρτήσεις Κατασκευαστικά Τεµάχια για τη ηµιουργία Αρθρωτών Προγραµµάτων ιεπαφή Συναρτήσεων (Πρωτότυπα Συναρτήσεων function prototypes): εδοµένα εισόδου (παράµετροι parameters): πέρασµα δια τιµής ή µέσω

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

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

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

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

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

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

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

3 Αναδροµή και Επαγωγή

3 Αναδροµή και Επαγωγή 3 Αναδροµή και Επαγωγή Η ιδέα της µαθηµατικής επαγωγής µπορεί να επεκταθεί και σε άλλες δοµές εκτός από το σύνολο των ϕυσικών N. Η ορθότητα της µαθηµατικής επαγωγής ϐασίζεται όπως ϑα δούµε λίγο αργότερα

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

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

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

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

C Programming EPL032 Maria Stavrinou Ioannou Εισαγωγή στη Γλώσσα C

C Programming EPL032 Maria Stavrinou Ioannou Εισαγωγή στη Γλώσσα C Εισαγωγή στη Γλώσσα C Η C είναι µια δοµηµένη (structured ) γλώσσα ηλαδή ένα C πρόγραµµα αποτελείται από υποπρογράµµατα τα οποία ονοµάζονται συναρτήσεις ( functions ), όπου η κάθε συνάρτηση εκτελεί µια

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

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 1 Είσοδος/ Έξοδος Σε σχεδόν όλα τα προγράµµατα πρέπει να πάρουµε κάποια δεδοµένα και να δώσουµε

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

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

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 11 - Απαντήσεις

ΕΡΓΑΣΤΗΡΙΟ 11 - Απαντήσεις Με µαύρο τα κοµµάτια από την εκφώνηση. Με µπλε απαντήσεις κι επεξηγήσεις. Με κόκκινο τα πιο συχνά λάθη που είδαµε. Άσκηση Παρασκευής ΕΡΓΑΣΤΗΡΙΟ 11 - Απαντήσεις Σε αυτή την άσκηση θα γράψετε ένα πρόγραµµα

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

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

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

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

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

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

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

2.2.3 Η εντολή Εκτύπωσε

2.2.3 Η εντολή Εκτύπωσε 2.2.3 Η εντολή Εκτύπωσε Η εντολή Εκτύπωσε χρησιµοποιείται προκειµένου να εµφανίσουµε κάτι στην οθόνη του υπολογιστή. Για τον λόγο αυτό ονοµάζεται και εντολή εξόδου. Ισοδύναµα µπορεί να χρησιµοποιηθεί και

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

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

Εισαγωγή στις Συναρτήσεις Εισαγωγή στις Συναρτήσεις Η φιλοσοφία σχεδίασης της C βασίζεται στη χρήση των συναρτήσεων. Έχουμε ήδη δει και χρησιμοποιήσει πολλές συναρτήσεις που έχει το σύστημα, όπως είναι οι printf(), scanf(),αλλά

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος 2001-2002 ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4 «Προγραμματισμός Η/Υ» - Τετράδιο Εργαστηρίου #4 2 Γενικά Στο Τετράδιο #4 του Εργαστηρίου θα αναφερθούμε σε θέματα διαχείρισης πινάκων

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

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

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 3: Δείκτες (pointers) και Πίνακες Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Αριθμητική Δεικτών - Δείκτες και Πίνακες - Παραδείγματα Διδάσκων: Παναγιώτης

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

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

Μεθόδων Επίλυσης Προβλημάτων ΕΠΛ 032.3: 3: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων Αχιλλέας Αχιλλέως, Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου Email: achilleas@cs.ucy.ac.cy Κεφάλαιο 11 Πίνακες Ι Πίνακες (Arrays) Σε αυτή την ενότητα

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

Κεφάλαιο 5ο: Εντολές Επανάληψης

Κεφάλαιο 5ο: Εντολές Επανάληψης Χρήστος Τσαγγάρης ΕΕ ΙΠ Τµήµατος Μαθηµατικών, Πανεπιστηµίου Αιγαίου Κεφάλαιο 5ο: Εντολές Επανάληψης Η διαδικασία της επανάληψης είναι ιδιαίτερη συχνή, αφού πλήθος προβληµάτων µπορούν να επιλυθούν µε κατάλληλες

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf(%u\n, x); Β. unsigned char ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Β Περιόδου 2015 (8/9/2015) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

for for for for( . */

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε

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

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

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

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

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

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

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

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

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

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

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

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

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για τον πίνακα είπαμε ότι

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

Επεξεργασία Αρχείων Κειµένου

Επεξεργασία Αρχείων Κειµένου Επεξεργασία Αρχείων Κειµένου Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Αρχεία Κειµένου Γενικά Συναρτήσεις Επεξεργασίας Αρχείων Κειµένου ΕΠΛ 132 Αρχές Προγραµµατισµού ΙΙ 1 Αρχεία Γενικά

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 ❶ Προετοιµασία για το 1 ο Εργαστήριο

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

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

ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C. Τµήµα Πληροφορικής και Τηλεπικοινωνιών ΕΡΓΑΣΤΗΡΙΟ 1 ΕΙΣΑΓΩΓΗ ΣΤΗ C Τµήµα Πληροφορικής και Τηλεπικοινωνιών Περιεχόµενα Εισαγωγή Πρόγραµµα Φάσεις Υλοποίησης µε χρήση του εργαλείου DEV C + + οµή Προγράµµατος Η συνάρτηση main Μεταβλητές Τι είναι

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