Η Γλώσσα Προγραμματισμού C (Μέρος 3 - Συναρτήσεις, Πίνακες και Δείκτες) Εισαγωγή στις Συναρτήσεις

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

Download "Η Γλώσσα Προγραμματισμού C (Μέρος 3 - Συναρτήσεις, Πίνακες και Δείκτες) Εισαγωγή στις Συναρτήσεις"

Transcript

1 Η Γλώσσα Προγραμματισμού C (Μέρος 3 - Συναρτήσεις, Πίνακες και Δείκτες) Εισαγωγή στις Συναρτήσεις Η φιλοσοφία σχεδίασης της C βασίζεται στη χρήση των συναρτήσεων. Έχουμε ήδη δει και χρησιμοποιήσει πολλές συναρτήσεις που έχει το σύστημα, όπως είναι οι printf(), scanf(), strlen() και άλλες, αλλά έχουμε δημιουργήσει και δικές μας συναρτήσεις. Οι πιο πολλές είχαν το όνομα. Τα προγράμματα της C πάντα αρχίζουν με την εκτέλεση των εντολών της συνάρτησης και μετά η καλεί άλλες συναρτήσεις. Ήρθε βέβαια ο καιρός για να δούμε τις συναρτήσεις αναλυτικότερα. Συνάρτηση αποκαλείται μια αυτοδύναμη μονάδα κώδικα προγράμματος που έχει σχεδιασθεί για να εκτελεί μια συγκεκριμένη εργασία. Μια συνάρτηση της C κάνει την ίδια δουλειά με τις συναρτήσεις, τις υπορουτίνες και τις διαδικασίες των άλλων γλωσσών. Μερικές συναρτήσεις, όπως η printf(), έχουν σαν αποτέλεσμα να γίνει μια ενέργεια. Μερικές άλλες συναρτήσεις υπολογίζουν μια τιμή, που χρησιμοποιείται από το πρόγραμμα, όπως η strlen(). Γενικά, μια συνάρτηση μπορεί να παράγει ενέργειες ή και να παράγει τιμές. Χρησιμοποιούμε τις συναρτήσεις για να γλυτώσουμε από τον επαναλαμβανόμενο προγραμματισμό. Δηλαδή, αν πρέπει να γίνει μια συγκεκριμένη εργασία πολλές φορές μέσα σ ένα πρόγραμμα, τότε γράφουμε μια φορά μια κατάλληλη συνάρτηση και μετά την χρησιμοποιούμε από το πρόγραμμα όταν και όπου την χρειαζόμαστε. Μπορούμε να χρησιμοποιήσουμε την ίδια συνάρτηση σε διαφορετικά προγράμματα, αλλά ακόμα και αν κάνουμε μια εργασία μόνο μία φορά μέσα στο πρόγραμμα, θα είναι πιο σωστό να χρησιμοποιήσουμε μια συνάρτηση, επειδή έτσι το πρόγραμμα γίνεται πιο εύκολο στην ανάγνωση και στην τροποποίησή του και είμαστε πιο κοντά σ' αυτό που λέγεται δομημένος προγραμματισμός. Για παράδειγμα, αν θέλουμε να κάνουμε ένα πρόγραμμα που να διαβάζει μια λίστα αριθμών, να τους ταξινομεί, να βρίσκει τον μέσο όρο τους και να τυπώνει ένα ραβδόγραμμα, θα μπορούσαμε να δημιουργήσουμε το εξής πρόγραμμα :

2 #include <stdio.h> #define SIZE 50 float list[size]; readlist(list, SIZE); sort(list, SIZE); average(list, SIZE); bargraph(list, SIZE); Όταν χρησιμοποιούμε περιγραφικά ονόματα για τις συναρτήσεις, είναι ευκολότερο να καταλάβουμε τι κάνει ένα πρόγραμμα και πώς αυτό οργανώνεται. Μπορούμε ακόμα να επεξεργαστούμε ξέχωρα την κάθε συνάρτηση μέχρι να πετύχουμε την σωστή εκτέλεση μιας εργασίας. Ένα ακόμη όφελος είναι ότι αν δημιουργήσουμε τις συναρτήσεις κατά γενικό τρόπο, θα μπορούμε τότε να τις χρησιμοποιήσουμε και σ άλλα προγράμματα. Οι συναρτήσεις έχουν σαν σκοπό να μας βοηθήσουν να επικεντρώνουμε την προσοχή μας στην συνολική σχεδίαση ενός προγράμματος και όχι στις λεπτομέρειές του. Πριν να γράψουμε τον κώδικα μιας συνάρτησης, πρέπει να σκεφτούμε πρώτα τι δουλειά πρέπει να κάνει αυτή η συνάρτηση και πώς θα συσχετίζεται με τ όλο πρόγραμμα. Δημιουργία και Χρήση μιας Απλής Συνάρτησης Ακολουθεί ένα πρόγραμμα που χρησιμοποιεί τις συναρτήσεις και starbar(). Το πρόγραμμα τυπώνει μια επικεφαλίδα από γράμματα και δύο σειρές από 65 αστεράκια, μία πριν και μία μετά την εκτύπωση των γραμμάτων. Η συνάρτηση, δηλ. το κυρίως πρόγραμμα τυπώνει την επικεφαλίδα και η συνάρτηση starbar() έχει αναλάβει τη δουλειά που γίνεται δύο φορές, δηλ. την εκτύπωση της σειράς με τα 65 αστεράκια. /* prog35.c διαμόρφωση επικεφαλίδας */ #include <stdio.h> #define NAME "Florina pe sempre " ebooks4greeks.gr

3 #define ADDRESS "Florina" #define PLACE "West Macedonia" #define LIMIT 65 void starbar(); /* δήλωση της συνάρτησης */ starbar(); printf("%s \n", NAME); printf("%s \n", ADDRESS); printf("%s \n", PLACE); starbar(); void starbar() /* ορισμός της συνάρτησης starbar() */ int count; for (count = 1; count <= LIMIT; count++) putchar( \n ); putchar( * ); Το αποτέλεσμα του προγράμματος θα είναι : *************************************************************** ** Florina per sempre Florina

4 West Macedonia *************************************************************** ** Ας δώσουμε λίγη προσοχή στα παρακάτω σημεία του προγράμματος : 1. Η συνάρτηση starbar() καλείται από τη συνάρτηση χρησιμοποιώντας απλά τ όνομά της. Μετά το όνομα της συνάρτησης και τις παρενθέ-σεις πρέπει να ακολουθεί το σύμβολο (;), ως εξής : starbar(); Όταν το πρόγραμμα καθώς εκτελείται φθάσει σε μια κλήση συνάρτησης, αναζητά τη συνάρτηση αυτή και ακολουθεί τις εντολές που βρίσκονται σ' αυτήν. Όταν τελειώσει, επιστρέφει στην επόμενη γραμμή του καλούντος προγράμματος. 2. Όταν γράφουμε μια συνάρτηση ακολουθούμε την ίδια μορφή που ξέρουμε από τη, δηλ. πρώτα το όνομα, μετά το σύμβολο, μετά η δήλωση των μεταβλητών, μετά οι προτάσεις ορισμού της συνάρτησης και τέλος το σύμβολο. 3. Οι παρενθέσεις στη starbar() λένε στον μεταγλωττιστή ότι η starbar() είναι μια συνάρτηση. Η starbar() δεν ακολουθείται από το σύμβολο ;, πράγμα που σημαίνει ότι η συνάρτηση αυτή ορίζεται παρά ότι χρησιμοποιείται. 4. Η μεταβλητή count στη starbar() είναι μια τοπική μεταβλητή, δηλ. μια μεταβλητή γνωστή μόνο για τη starbar(). Μπορούμε να χρησιμοποιήσουμε το όνομα count και σ άλλες συναρτήσεις χωρίς κανένα πρόβλημα, ακόμα και μέσα στην ίδια την. 5. Οι συναρτήσεις έχουν κι αυτές τύπους όπως οι μεταβλητές. Ο τύπος void χρησιμοποιείται για συναρτήσεις χωρίς τιμές επιστροφής και ο τύπος αυτός εμφανίζεται στον ορισμό της συνάρτησης. 6. Προγράμματα που χρησιμοποιούν μια συνάρτηση πρέπει να περιέχουν τη δήλωση του τύπου πριν η συνάρτηση χρησιμοποιηθεί. Γι' αυτόν τον λόγο, η περιέχει την εξής δήλωση : void starbar(); Έτσι δηλώνουμε ότι το πρόγραμμα χρησιμοποιεί μια συνάρτηση τύπου void που ονομάζεται starbar() και ότι ο μεταγλωττιστής θα βρει τον ορισμό αυτής της συνάρτησης κάπου αλλού. 7. Η συνάρτηση starbar() δεν έχει είσοδο, αφού δεν χρειάζεται καμία πληροφορία από το καλούν πρόγραμμα.

5 Ορίσματα Συνάρτησης Ας δούμε τώρα πώς θα τροποποιηθεί η συνάρτηση starbar() που χρησιμοποιήσαμε προηγουμένως για να κεντράρει αυτή τη φορά όλους τους τίτλους. Η νέα μας συνάρτηση ονομάζεται n_char() και θα χρησιμοποιήσουμε τώρα ορίσματα γι' αυτή τη συνάρτηση, όπου το ένα θα είναι ο εκτυπούμενος χαρακτήρας και το άλλο ο αριθμός των επαναλήψεων αυτού του χαρακτήρα. Η γραμμή με τους αστερίσκους έχει πλάτος 65 διαστήματα, άρα η συνάρτηση στην περίπτωση αυτή καλείται σαν n_char('*', 65). Η φράση Florina per sempre έχει πλάτος 18 διαστημάτων, άρα για να την κεντράρουμε θα πρέπει να αφήσουμε 23 κενά διαστήματα από δεξιά και από αριστερά της, δηλ. καλούμε την n_char(' ', 23). /* prog36.c κεντράρισμα επικεφαλίδας */ #include <stdio.h> #define NAME "Florina pe sempre " #define ADDRESS "Florina" #define PLACE "West Macedonia" #define LIMIT 65 #define SPACE int spaces; void n_char(); n_char( *, LIMIT); /* χρήση σταθερών ως ορίσματα */ putchar( \n ); n_char(space, 23); printf("%s \n", NAME); spaces = (65 - strlen(address))/2; διαστήματα που θα αφήσει */ /* υπολογίζει τα κενά

6 */ n_char(space, spaces); /* μια μεταβλητή ως όρισμα */ printf("%s \n", ADDRESS); n_char(space, (65 - strlen(place))/2); printf("%s \n", PLACE); n_char( *, LIMIT); putchar( \n ); /* μια έκφραση ως όρισμα void n_char(ch, num) /* ορισμός της συνάρτησης */ char ch; int num; int count; for (count=1; count<=num; count++) putchar(ch); Το αποτέλεσμα του προγράμματος θα είναι : *************************************************************** ** Florina per sempre Florina West Macedonia *************************************************************** ** Ας δούμε τον ορισμό της παραπάνω συνάρτησης με ορίσματα αυτή τη φορά :

7 void n_char(ch, num) char ch; int num; Η πρώτη γραμμή μάς πληροφορεί ότι η συνάρτηση έχει δύο ορίσματα, τα ch και num. Η δεύτερη γραμμή δηλώνει τους τύπους των ορισμάτων και πρέπει να παρατηρήσουμε ότι τα ορίσματα δηλώνονται πριν από την πρώτη αγκύλη της συνάρτησης. Και οι δύο αυτές μεταβλητές, ch και num, ονομάζονται τυπικά ορίσματα. Είναι και αυτά τοπικές μεταβλητές της συνάρτησης και μπορούν να χρησιμοποιηθούν και αλλού μέσα στο πρόγραμμα. Για να δώσουμε τιμές στα τυπικά ορίσματα ch και num χρησιμοποιούμε πραγματικά ορίσματα στην κλήση της συνάρτησης. Το τυπικό όρισμα είναι μια μεταβλητή στο πρόγραμμα που καλείται και το πραγματικό όρισμα είναι μια συγκεκριμένη τιμή, που καταχωρείται στη μεταβλητή αυτή από το πρόγραμμα που καλεί. Το πραγματικό όρισμα μπορεί να είναι μια σταθερά, μια μεταβλητή ή ακόμη και μια πιο πολύπλοκη έκφραση. Ο,τιδήποτε κι αν είναι, το πραγματικό όρισμα υπολογίζεται και η τιμή του μεταδίδεται (περνάει) στη συνάρτηση στα αντίστοιχα τυπικά ορίσματα. Η συνάρτηση δεν ενδιαφέρεται, βέβαια, αν αυτή η τιμή που της περνιέται προέρχεται από μια σταθερά, μια μεταβλητή ή μια πιο γενική έκφραση. Η Χρήση του return Ας δούμε τώρα και την περίπτωση που μια συνάρτηση επιστρέφει μια τιμή στο πρόγραμμα που την κάλεσε. Η επόμενη συνάρτηση imin() επιστρέφει σαν τιμή το μικρότερο από τα δύο ορίσματά της. Ακολουθεί ένα πρόγραμμα : /* prog37.c βρίσκει τη μικρότερη από δύο τιμές */ #include <stdio.h> int num1, num2; int imin();

8 while (scanf("%d %d", &num1, &num2) == 2) printf("το μικρότερο μεταξύ του %d και %d είναι το %d. \n", num1, num2, imin(num1, num2)); int imin(n, m) int n, m; int min; if (n < m) else return min; min = n; min = m; Η λέξη-κλειδί return έχει ως αποτέλεσμα η τιμή οποιασδήποτε έκφρασης που την ακολουθεί, να είναι η τιμή επιστροφής της συνάρτησης. Στη συγκεκριμένη βέβαια περίπτωση, η τιμή επιστροφής της συνάρτησης είναι η τιμή της τοπικής μεταβλητής min. Η συνάρτηση imin() είναι τύπου int, όπως είναι και η μεταβλητή min. Η τιμή επιστροφής μιας συνάρτησης μπορεί να καταχωρηθεί σε μια μεταβλητή ή να χρησιμοποιηθεί σαν μέρος μιας έκφρασης. Ακολουθεί και μια άλλη έκδοση της συνάρτησης imin() : /* δεύτερη έκδοση της συνάρτησης ελάχιστης τιμής */ imin(n, m) int n, m; return (n<m)? n : m;

9 Η χρήση της return έχει και το αποτέλεσμα ότι τερματίζει τη συνάρτηση και ο έλεγχος επιστρέφει στην επόμενη πρόταση του προγράμματος από εκείνη που την κάλεσε. Αυτό συμβαίνει ακόμα και αν η πρόταση return δεν είναι η τελευταία της συνάρτησης. Ακολουθεί και μια τρίτη έκδοση της συνάρτησης imin() : /* τρίτη έκδοση της συνάρτησης ελάχιστης τιμής */ imin(n, m) int n, m; if (n<m) else return (n); return(m); Η απλή πρόταση return; προκαλεί τον τερματισμό της συνάρτησης και την επιστροφή του ελέγχου στην καλούσα συνάρτηση. Αυτή η μορφή χρησιμοποιείται σε συναρτήσεις του τύπου void γιατί δεν επιστρέφει καμία τιμή. Τύποι Συναρτήσεων Και για τις συναρτήσεις πρέπει να δηλώνεται ο τύπος τους, ο οποίος είναι ίδιος με τον τύπο της τιμής επιστροφής της συνάρτησης. Συναρτήσεις χωρίς τιμή επιστροφής δηλώνονται σαν τύπου void και αν δεν δηλωθεί ο τύπος μιας συνάρτησης, τότε η C θεωρεί ότι είναι τύπου int. Η δήλωση του τύπου είναι μέρος του ορισμού της συνάρτησης και αναφέρεται στην τιμή επιστροφής και όχι στα ορίσματα της συνάρτησης. Μια δήλωση της συνάρτησης λέει στο πρόγραμμα τι τύπου είναι η συνάρτηση, ενώ ο ορισμός της συνάρτησης παρέχει τον πραγματικό κώδικά της. Η δήλωση μιας συνάρτησης πρέπει να γίνεται πριν από το σημείο όπου χρησιμοποιείται η συνάρτηση. Στην ANSI C, μπορούμε στη δήλωση μιας συνάρτησης να δηλώνουμε και τον τύπο των μεταβλητών της. Το αποτέλεσμα είναι ένα πρωτότυπο συνάρτησης, δηλ. μια δήλωση συνάρτησης όπου καθορίζονται ο τύπος της τιμής

10 επιστροφής, ο αριθμός των ορισμάτων και ο τύπος των ορισμάτων της συνάρτησης. Ακολουθούν παραδείγματα : int imax(int, int); int imax(int a, int b); Ο Τελεστής & Μερικές συναρτήσεις, όπως η scanf(), καταχωρούν τιμές σε μεταβλητές του καλούντος προγράμματος και χρησιμοποιούν τον τελεστή διεύθυνσης & στα ορίσματα. Ο τελεστής & μάς δίνει τη διεύθυνση στην οποία αποθηκεύεται μια μεταβλητή. Για παράδειγμα, αν p είναι το όνομα μιας μεταβλητής, τότε &p είναι η διεύθυνση της μεταβλητής p στη μνήμη. Αν η μεταβλητή p έχει τιμή 100 και είναι αποθηκευμένη στη διεύθυνση 15879, τότε η παρακάτω πρόταση : printf("%d %u\n", p, &p); θα δώσει το εξής αποτέλεσμα : Ακολουθεί ένα πρόγραμμα, που χρησιμοποιεί τον τελεστή διεύθυνσης & για να βρει πού φυλάσσονται μεταβλητές με το ίδιο όνομα, οι οποίες ανήκουν σε διαφορετικές συναρτήσεις. /* prog38.c έλεγχος για το πού βρίσκονται αποθηκευμένες μεταβλητές */ #include <stdio.h> void myfunction(); /* δήλωση συνάρτησης */ int p=2, b=5; printf("στη, p = %d και &p = %p \n", p, &p); printf("στη, b = %d και &b = %p \n", b, &b); myfunction(p);

11 void myfunction(b); /* ορισμός συνάρτησης */ int b; int p = 10; printf("στη mikado(), p = %d και &p = %p \n", p, &p); printf("στη mikado(), b = %d και &b = %p \n", b, &b); Χρησιμοποιήσαμε εδώ τη μορφή %p για την εκτύπωση των διευθύνσεων αν, όμως, το σύστημά μας δεν διαθέτει αυτή τη μορφή, τότε μπορούμε να δοκιμάσουμε με τη μορφή %u. Το αποτέλεσμα του προηγούμενου προγράμματος θα είναι το εξής : Στη, p = 2 και &p = FFD8 Στη, b = 5 και &b = FFDA Στη myfunction(), p = 10 και &p = FFD0 Στη myfunction(), b = 2 και &b = FFD6 Οι διευθύνσεις εμφανίζονται εδώ σε 16δική μορφή. Από το αποτέλεσμα βλέπουμε ότι οι δύο μεταβλητές p έχουν διαφορετικές διευθύνσεις, όπως και οι δύο μεταβλητές b. Δηλαδή, ο υπολογιστής τις θεωρεί σαν τέσσερις ξεχωριστές μεταβλητές. Αλλαγή των Μεταβλητών στο Πρόγραμμα που Καλεί Μερικές φορές θέλουμε μια συνάρτηση να προκαλεί αλλαγές στις μεταβλητές μιας άλλης συνάρτησης. Ας πάρουμε το δημοφιλές παράδειγμα της ανταλλαγής των τιμών δύο μεταβλητών x και y. Ξέρουμε ότι αυτό γίνεται με τη χρήση μιας τρίτης βοηθητικής μεταβλητής temp, ως εξής :

12 temp = x; x = y; y = temp; Χρησιμοποιούμε τα ονόματα x και y για τις μεταβλητές της και u και v για τις μεταβλητές της συνάρτησης interchange(). /* prog39.c ανταλλαγή τιμών μεταβλητών */ #include <stdio.h> void interchange(); int x = 5, y = 10; printf("αρχικά x = %d και y = %d. \n", x, y); interchange(x, y); printf("τώρα x = %d και y = %d. \n", x, y); void interchange(u, v) int u, v; int temp; printf("αρχικά u = %d και v = %d. \n", u, v); temp = u; u = v; v = temp; printf("τώρα u = %d και v = %d. \n", u, v);

13 Το αποτέλεσμα του προγράμματος θα είναι το εξής : Αρχικά x = 5 και y = 10 Αρχικά u = 5 και v = 10 Τώρα u = 10 και v = 5 Τώρα x = 5 και y = 10 Βλέπουμε ότι η συνάρτηση interchange() λειτουργεί σωστά, αφού ανταλλάσσει τις τιμές των u και v. Εκείνο που μας ενδιαφέρει, όμως, εμάς είναι η μετάδοση των τιμών αυτών πίσω στη. Όπως ξέρουμε, με την πρόταση return μπορούμε να μεταδώσουμε πίσω στο καλούν πρόγραμμα μόνο μία τιμή. Τι μπορούμε, όμως, να κάνουμε; Για να μεταδώσουμε δύο τιμές μιας συνάρτησης στη συνάρτηση που την κάλεσε, πρέπει να χρησιμοποιήσουμε τους δείκτες, που είναι συμβολικές παραστάσεις διευθύνσεων. Εισαγωγή στους Δείκτες (Pointers) Χρησιμοποιήσαμε προηγουμένως τον τελεστή & για να βρούμε τη διεύθυνση της μεταβλητής p. Η &p δηλαδή είναι ένας δείκτης της p. Η πραγματική διεύθυνση είναι ένας 16δικός αριθμός και η συμβολική παράσταση &p είναι μια σταθερά δείκτη. Η μεταβλητή p δεν πρόκειται να αλλάξει διεύθυνση μέσα στο πρόγραμμα, αν και μπορεί να αλλάξει τιμή. Η C έχει και μεταβλητές δείκτη που έχουν μια διεύθυνση ως τιμή. Ακολουθούν παραδείγματα : ptr = &p; /* καταχωρεί τη διεύθυνση της p στην ptr */ ptr = &b; /* ο δείκτης ptr δείχνει τώρα στη b αντί για την p */ Η ptr δηλαδή είναι μια μεταβλητή και η &p είναι μια σταθερά. Για να δηλώσουμε τον τύπο μιας μεταβλητής δείκτη, πρέπει να χρησιμοποιήσουμε τον τελεστή έμμεσης αναφοράς (*). val = *ptr /* βρίσκει την τιμή που δείχνει ο δείκτης ptr */ Πώς δηλώνουμε, όμως, τους δείκτες;

14 Με τη δήλωση μιας μεταβλητής ότι είναι δείκτης, πρέπει ακόμα να πούμε και τι τύπος είναι η μεταβλητή που δείχνει ο δείκτης και αυτό γιατί διαφορετικοί τύποι μεταβλητών απαιτούν διαφορετικό χώρο αποθήκευσης. Οι δείκτες δηλώνονται ως εξής : */ int *pi; /* pi είναι ένας δείκτης σε μια ακέραια μεταβλητή char *pc; χαρακτήρα */ /* pc είναι ένας δείκτης σε μια μεταβλητή float *pf, *pg; /* pf, pg είναι δείκτες σε μεταβλητές float */ Από τα παραπάνω συμπεραίνουμε ότι pi είναι ο δείκτης και ότι η *pi είναι τύπου int. Παρόμοια, η τιμή *pc την οποία δείχνει ο pc είναι τύπου char. Οι Δείκτες και οι Συναρτήσεις Ακολουθεί ένα πρόγραμμα όπου γίνεται επιστροφή τιμών στη συνάρτηση που καλεί. /* prog40.c χρήση δεικτών για την ανταλλαγή τιμών */ #include <sdtio.h> void interchange(); int x = 5, y = 10; printf("αρχικά x = %d και y = %d. \n", x, y); interchange(&x, &y); /* στείλε τις διευθύνσεις στη συνάρτηση*/ printf("τώρα x = %d και y = %d. \n", x, y); void interchange(u, v) int *u, *v; /* οι u και v είναι τώρα δείκτες */

15 int temp; temp = *u; /* η temp παίρνει την τιμή που δείχνει η u */ *u = *v; *v = temp; Το αποτέλεσμα θα είναι : Αρχικά x = 5 και y = 10 Τώρα x = 10 και y = 5 Ας προσέξουμε τα εξής σημεία : 1. Η κλήση της συνάρτησης γίνεται ως εξής : interchange(&x, &y);, δηλαδή, αντί να στέλνονται οι τιμές των x και y, στέλνονται οι διευθύνσεις τους. Έτσι, τα τυπικά ορίσματα u και v της συνάρτησης interchange() έχουν διευθύνσεις ως τιμές και πρέπει να δηλωθούν ως δείκτες. 2. Εφόσον οι x και y είναι ακέραιοι, δηλώνουμε τις u και v ως δείκτες σε ακέραιους. 3. Θυμηθείτε ότι η u έχει την τιμή &x, έτσι η u δείχνει τη x, δηλαδή η *u μάς δίνει την τιμή του x. 4. Δεν πρέπει να γράψουμε temp = u;, γιατί έτσι θα αποθηκευτεί η διεύθυνση της x και όχι η τιμή της. Θέλουμε μια συνάρτηση να ανταλλάσσει τις τιμές δύο μεταβλητών. Δίνοντας στη συνάρτηση τις διευθύνσεις των μεταβλητών αυτών, αποκτάμε πρόσβαση σ' αυτές τις μεταβλητές. Χρησιμοποιώντας δείκτες και τον τελεστή *, η συνάρτηση μπορεί να εξετάσει τις τιμές που βρίσκονται σ' αυτές τις θέσεις και να τις αλλάξει. Με τους δείκτες δηλαδή μπορούμε να μπούμε στη και να αλλάξουμε ό,τι είναι αποθηκευμένο εκεί. Εισαγωγή στους Πίνακες Ένας πίνακας αποτελείται από μια σειρά στοιχείων ενός τύπου δεδομένων. Το πρόγραμμα πρέπει να γνωρίζει από πόσα στοιχεία αποτελείται ένας πίνακας

16 καθώς και τον τύπο των στοιχείων αυτών. Ο τύπος των στοιχείων ενός πίνακα μπορεί να είναι ένας από τους τύπους μεταβλητών. Ακολουθούν μερικές δηλώσεις πινάκων : float times[365]; /* πίνακας με 365 στοιχεία τύπου float */ char cities[12]; /* πίνακας με 12 στοιχεία τύπου char */ int numbers[50]; /* πίνακας με 50 στοιχεία τύπου int */ Οι αγκύλες [ και ] μάς λένε ότι πρόκειται για πίνακα και ο αριθμός που είναι μέσα στις αγκύλες μάς δείχνει τον αριθμό των στοιχείων του πίνακα. Για να αναφερθούμε σ ένα συγκεκριμένο στοιχείο του πίνακα, χρησιμοποιούμε έναν αριθμό που ονομάζεται δείκτης πίνακα και που η αρίθμησή του αρχίζει από το 0. Ο πίνακας δηλ. είναι μια μεταβλητή με δείκτη και για να αναφερθούμε πλήρως σ ένα στοιχείο του, χρειαζόμαστε το όνομα του πίνακα και την τιμή του δείκτη του πίνακα. Έτσι, π.χ. το times[0] είναι το πρώτο στοιχείο του πίνακα times και το times[364] είναι το 365ο και τελευταίο στοιχείο του. Αυτόματες, Εξωτερικές και Στατικές Μεταβλητές Μια αυτόματη μεταβλητή ή ένας αυτόματος πίνακας είναι μια μεταβλητή ή ένας πίνακας που ορίζεται μέσα σε μια συνάρτηση. Όπως ήδη ξέρουμε, μια μεταβλητή που ορίζεται μέσα σε μια συνάρτηση (τοπική μεταβλητή), ανήκει σ' αυτή τη συνάρτηση και το όνομά της μπορεί να ξαναχρησιμοποιηθεί και αλλού. Όταν τελειώσει η κλήση της συνάρτησης, τότε απελευθερώνεται ο χώρος της μνήμης που χρησιμοποιήθηκε για τις τοπικές της μεταβλητές. Μπορούμε να δώσουμε αρχικές τιμές σ αυτόματους πίνακες ως εξής : int powers[8] = 1, 2, 4, 6, 8, 16, 32, 64;

17 Επειδή ο πίνακας ορίζεται μέσα στη, είναι ένας αυτόματος πίνακας και η απόδοση αρχικών τιμών σ' αυτόν γίνεται με τη χρήση μιας λίστας τιμών που χωρίζονται με κόμμα και που είναι κλεισμένες σε αγκύλες. Μια εξωτερική μεταβλητή ή ένας εξωτερικός πίνακας είναι μια μεταβλητή ή ένας πίνακας που ορίζεται έξω από μια συνάρτηση. Ακολουθεί ένα παράδειγμα : int report; int numbers[5] = 12, 10, 8, 9, 6;... int feed(n) int n;... Οι εξωτερικές μεταβλητές διαφέρουν από τις αυτόματες στο ότι μπορούν να χρησιμοποιηθούν απ' όλες τις συναρτήσεις ενός προγράμματος, παραμένουν για όσο χρόνο εκτελείται ένα πρόγραμμα και δεν χάνονται όταν τελειώνει μια συγκεκριμένη συνάρτηση. Ακόμη, έχουν αρχική τιμή μηδέν όταν δεν ορίζεται κάτι άλλο. Έτσι, η μεταβλητή report στο παραπάνω πρόγραμμα έχει αρχική τιμή ίση με 0. Μια στατική μεταβλητή ή ένας στατικός πίνακας ορίζονται μέσα σε μια συνάρτηση με τη λέξη-κλειδί static : int account(n,m) int n, m;

18 static int beans[2] = 343, 332;... Μια μεταβλητή που δηλώνεται με τη λέξη-κλειδί static μπορεί να είναι τοπική σε μια συνάρτηση, αλλά διατηρεί τις τιμές της μεταξύ των κλήσεων μιας συνάρτησης και της αποδίδεται αρχική τιμή ίση με 0, όταν βέβαια δεν δηλώνεται κάτι άλλο. Απόδοση Αρχικών Τιμών σε Πίνακες Ακολουθεί ένα πρόγραμμα που καταχωρεί τον αριθμό των ημερών ανά μήνα σ έναν πίνακα με απόδοση αρχικών τιμών και μετά τους εκτυπώνει. /* prog41.c απόδοση αρχικών τιμών στις ημέρες κάθε μήνα */ #include <stdio.h> #define MONTHS 12 int days[months] = 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31; int index; for (index=0; index<months; index++) printf ("Ο μήνας %d έχει %d ημέρες.\n", index+1, days[index]); Το αποτέλεσμα θα είναι ως εξής : Ο μήνας 1 έχει 31 ημέρες. Ο μήνας 2 έχει 28 ημέρες. Ο μήνας 3 έχει 31 ημέρες. Ο μήνας 4 έχει 30 ημέρες. Ο μήνας 5 έχει 31 ημέρες.

19 Ο μήνας 6 έχει 30 ημέρες. Ο μήνας 7 έχει 31 ημέρες. Ο μήνας 8 έχει 31 ημέρες. Ο μήνας 9 έχει 30 ημέρες. Ο μήνας 10 έχει 31 ημέρες. Ο μήνας 11 έχει 30 ημέρες. Ο μήνας 12 έχει 31 ημέρες. Βλέπουμε στο παραπάνω παράδειγμα ότι ο αριθμός των στοιχείων της λίστας πρέπει να είναι ίδιος με το μέγεθος του πίνακα. Αν δώσουμε περισσότερα στοιχεία σ έναν πίνακα απ' ό,τι είναι το δηλωμένο μέγεθός του, τότε αυτό θεωρείται λάθος. Καταχώρηση Τιμών σε Πίνακες Ακολουθεί ένα πρόγραμμα που καταχωρεί άρτιους αριθμούς σ έναν αυτόματο πίνακα : #include <stdio.h> #define SIZE 20 int counter, evens[size]; for (counter=0; counter<size; counter++) evens[counter] = 2 * counter; Η C, όμως, δεν επιτρέπει την καταχώρηση τιμών από έναν πίνακα σ έναν άλλον, ούτε μπορούμε να χρησιμοποιήσουμε τη μορφή της λίστας στοιχείων μέσα σε αγκύλες, εκτός κι αν πρόκειται για απόδοση αρχικών τιμών. Ακολουθεί ένα πρόγραμμα που μας λέει τι δεν μπορούμε να κάνουμε με τους πίνακες στη C :

20 #include <stdio.h> #define SIZE 5 int pina[size] = 5, 3, 2, 8; /* όλα εντάξει */ int pinb[size]; pinb = pina; /* δεν επιτρέπεται */ pinb[size] = pina[size]; /* ανεπίτρεπτο */ pinb[size] = 5, 3, 2, 8; /* δεν δουλεύει εδώ */ Δείκτες σε Πίνακες Είδαμε στα προηγούμενα ότι οι δείκτες (pointers) αποτελούν έναν συμβολικό τρόπο για να χρησιμοποιούμε διευθύνσεις μεταβλητών. Στην πραγματικότητα, ο συμβολισμός των πινάκων είναι μια μεταμφιεσμένη χρήση των δεικτών. Το όνομα ενός πίνακα είναι και ένας δείκτης, που δείχνει στο πρώτο στοιχείο του. Δηλαδή, αν pina είναι ένας πίνακας, τότε με : pina == &pina[0] παριστάνεται και η διεύθυνση μνήμης του πρώτου στοιχείου του πίνακα. Ακολουθεί ένα παράδειγμα που κάνει πράξεις με τις τιμές ενός δείκτη : /* prog42.c πρόσθεση δείκτη */ #include <stdio.h> #define SIZE 4 int pina[size], *pti, index;

21 float pinb[size], *ptf; pti = pina; /* καταχωρεί τη διεύθυνση του πίνακα σε δείκτη */ ptf = pinb; for (index=0; index<size; index++) printf("δείκτες + %d : %10u %10u\n", index, pti+index, ptf+index); Το αποτέλεσμα θα είναι ως εξής : δείκτες + 0 : δείκτες + 1 : δείκτες + 2 : δείκτες + 3 : Στην πρώτη γραμμή τυπώνονται οι πρώτες διευθύνσεις των δύο πινάκων, όποιες είναι αυτές. Στην επόμενη γραμμή βλέπουμε το αποτέλεσμα της πρόσθεσης του 1 στη διεύθυνση. Για να δούμε τι γίνεται από κοντά : = ; = ; Ξέρουμε ότι ο τύπος int χρησιμοποιεί 2 bytes για αποθήκευση και ο τύπος float 4 bytes. Όταν λοιπόν προσθέτουμε 1 στον αντίστοιχο δείκτη, τότε η C προσθέτει μια μονάδα αποθήκευσης. Για τους πίνακες, όμως, αυτό σημαίνει ότι η διεύθυνση αυξάνεται στη διεύθυνση του επόμενου στοιχείου και όχι στο επόμενο byte. Προσθέτοντας έναν ακέραιο σ' έναν δείκτη ή αυξάνοντας έναν δείκτη, αλλάζει η τιμή του δείκτη κατά τον αριθμό των bytes του στοιχείου που δείχνει ο δείκτης. Ακολουθούν μερικές ενδιαφέρουσες εκφράσεις : dates + 2 == &dates[2] /* ίδια διεύθυνση */

22 *(dates + 2) == dates[2] /* ίδια τιμή */ Αυτές οι ισότητες δείχνουν τη στενή σχέση μεταξύ πινάκων και δεικτών. Αυτό σημαίνει ότι μπορούμε να χρησιμοποιήσουμε ένα δείκτη για να προσδιορίσουμε ένα συγκεκριμένο στοιχείο ενός πίνακα και να πάρουμε την τιμή του. Δεν πρέπει, όμως, να συγχέουμε την τιμή της *(dates+2) με την τιμή *dates+2, γιατί : *(dates + 2) /* είναι η τιμή του 3ου στοιχείου του πίνακα dates */ *dates + 2 /* το 2 προστίθεται στην τιμή του 1ου στοιχείου */ Μπορούμε συνεπώς να χρησιμοποιούμε και δείκτες για να δουλέψουμε με τους πίνακες. Ακολουθεί ένα πρόγραμμα που κάνει την ίδια δουλειά με το πρόγραμμα που είδαμε προηγουμένως, μόνο που τώρα χρησιμοποιούμε δείκτες αντί για πίνακες : /* prog43.c χρησιμοποιεί δείκτες αντί για πίνακες */ #include <stdio.h> #define MONTHS 12 int days[months] = 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31; int index; for (index=0; index<months; index++) printf ("Ο μήνας %d έχει %d ημέρες.\n", index+1, *(days+index)); Συναρτήσεις, Πίνακες και Δείκτες Η C δεν επιτρέπει ολόκληροι πίνακες να είναι ορίσματα μιας συνάρτησης, αλλά για να κάνουμε τη δουλειά μας μπορούμε να περάσουμε (μεταβιβάσουμε)

23 τη διεύθυνση ενός πίνακα σε μια συνάρτηση. Η συνάρτηση μπορεί μετά να χρησιμοποιήσει αυτήν την τιμή για τον χειρισμό του πρωτότυπου πίνακα. Είναι ένα κλασσικό παράδειγμα όπου πρέπει να χρησιμοποιήσουμε δείκτες για τον χειρισμό ενός πίνακα. Μπορούμε να χρησιμοποιήσουμε είτε συμβολισμό πίνακα είτε συμβολισμό δείκτη μέσα στη συνάρτηση. Ακολουθεί ένα παράδειγμα με μια συνάρτηση που επιστρέφει το άθροισμα των στοιχείων ενός πίνακα. /* prog44.c άθροισμα στοιχείων ενός πίνακα */ #include <stdio.h> #define SIZE 10 long sum(); static int pina[size] = 20, 10, 5, 39, 4, 16, 19, 26, 31, 20; long answer; answer = sum(pina, SIZE); printf("το άθροισμα των στοιχείων είναι %d.\n", answer); long sum(ar,n) /* χρήση δείκτη */ int *ar; /* ο ar είναι ένας δείκτης */ int n; int i; long total = 0; for (i=0; i<n; i++)

24 total += *ar; /* πρόσθεση τιμής στο total */ ar++; /* ο δείκτης στο επόμενο στοιχείο */ return total; Ο ar ξεκινάει δείχνοντας το πρώτο στοιχείο του πίνακα pina και με την πρόταση καταχώρησης total += *ar προστίθεται η τιμή του πρώτου στοιχείου, δηλ. η 20, στη μεταβλητή total. Μετά, η έκφραση ar++ αυξάνει τη μεταβλητή δείκτη ar έτσι ώστε αυτή να δείχνει στο επόμενο στοιχείο του πίνακα. Μπορούμε να γράψουμε τις προηγούμενες δύο εντολές και έτσι : total += *ar++; Δηλαδή, αυξάνεται ο δείκτης κατά ένα και όχι η τιμή που δείχνει και μάλιστα αυξάνεται μετά τη χρήση της τιμής του. Εάν χρησιμοποιήσουμε *++ar, τότε η σειρά θα ήταν : αύξηση του δείκτη και μετά χρήση της τιμής που δείχνει. Αλλά αν χρησιμοποιήσουμε την έκφραση (*ar)++, τότε το πρόγραμμα θα κάνει χρήση της τιμής που δείχνει η ar και μετά θα αυξήσει την τιμή αυτή κατά ένα και όχι τον δείκτη. Οι Λειτουργίες των Δεικτών Η C έχει πέντε βασικές λειτουργίες δεικτών. Για να δούμε από κοντά τα αποτελέσματα της κάθε λειτουργίας, τυπώνουμε την τιμή του δείκτη, δηλ. τη διεύθυνση που δείχνει, την τιμή που είναι αποθηκευμένη στη διεύθυνση που δείχνει ο δείκτης και ακόμη και τη διεύθυνση του ίδιου του δείκτη. Ακολουθεί ένα παράδειγμα : /* prog45.c λειτουργίες δεικτών */ #include <stdio.h> static int pina[3] = 100, 200, 300; int *ptr1, *ptr2; ptr1 = pina;/* καταχώρηση της διεύθυνσης του πίνακα σ' έναν δείκτη */

25 ptr2 = &pina[2]; /* καταχώρηση της διεύθυνσης του 3ου στοιχείου */ printf("ptr1 = %u, *ptr1 = %d, &ptr1 = %u\n", ptr1, *ptr1, &ptr1); ptr1++; /* αυξάνουμε τον δείκτη */ printf("ptr1 = %u, *ptr1 = %d, &ptr1 = %u\n", ptr1, *ptr1, &ptr1); printf("ptr2 = %u, *ptr2 = %d, &ptr2 = %u\n", ptr2, *ptr2, &ptr2); ++ptr2; /* περνάμε τα όρια του πίνακα */ printf("ptr2 = %u, *ptr2 = %d, &ptr2 = %u\n", ptr2, *ptr2, &ptr2); printf("ptr2 - ptr1 = %u\n", ptr2 - ptr1); /* τυπώνουμε τη διαφορά των δεικτών */ Το αποτέλεσμα θα είναι ως εξής : ptr1 = 234, *ptr1 = 100, &ptr1 = 3606 ptr1 = 236, *ptr1 = 200, &ptr1 = 3606 ptr2 = 238, *ptr2 = 300, &ptr2 = 3604 ptr2 = 240, *ptr2 = 1910, &ptr2 = 3604 ptr2 ptr1 = 2 Ας δούμε από κοντά τις πέντε βασικές λειτουργίες που μπορούμε να κάνουμε με τις μεταβλητές δείκτη : 1. Καταχώρηση. Μπορούμε να καταχωρήσουμε μια διεύθυνση σ' έναν δείκτη, είτε χρησιμοποιώντας ένα όνομα πίνακα ή χρησιμοποιώντας τον τελεστή διεύθυνσης & και την τιμή μιας μεταβλητής. 2. Εύρεση τιμής. Ο τελεστής * μάς δίνει την τιμή που βρίσκεται αποθηκευμένη στη θέση που δείχνεται από τον δείκτη. 3. Απόκτηση της διεύθυνσης ενός δείκτη. Και οι μεταβλητές δείκτη έχουν μια διεύθυνση και μια τιμή.

26 4. Αύξηση-μείωση ενός δείκτη. Με την αύξησή του ένας δείκτης μετακινείται στο επόμενο στοιχείο του πίνακα. Φυσικά, με ανάλογο τρόπο μπορούμε και να μειώσουμε έναν δείκτη. Η λειτουργία, όμως, ++ptr2 στο προηγούμενο παράδειγμα είχε σαν αποτέλεσμα ο ptr2 να μετακινηθεί κατά δύο bytes και να δείχνει ο,τιδήποτε μπορεί να αποθηκευθεί μετά τον πίνακα. Επίσης, πρέπει να θυμόμαστε ότι μπορούμε να χρησιμοποιούμε τους τελεστές αύξησης ή μείωσης με τις μεταβλητές δείκτη, αλλά όχι με σταθερές δείκτη. Δηλαδή, το ptr2 = urn++; δεν επιτρέπεται, όπως δεν επιτρέπεται και το Διαφορά. Μπορούμε να βρούμε τη διαφορά μεταξύ δύο δεικτών. Οι Πίνακες Πολλών Διαστάσεων Ένας μετεωρολόγος θέλει να αναλύσει τα δεδομένα της μηνιαίας βροχόπτωσης σε μια διάρκεια 5 ετών, δηλ. θα χρειαστεί συνολικά 5 Χ 12 = 60 μεταβλητές. Για να παραστήσει αυτά τα δεδομένα μπορεί να χρησιμοποιήσει 60 ανεξάρτητες μεταβλητές, μία για κάθε στοιχείο δεδομένων, κάτι φυσικά πολύ άβολο. Κάτι καλύτερο θα ήταν ένας πίνακας με 60 στοιχεία, αλλά ακόμα καλύτερο θα ήταν αν μπορούσε να κρατήσει ξεχωριστά τα 12 δεδομένα για τον κάθε χρόνο. Μπορεί δηλαδή να χρησιμοποιήσει 5 πίνακες, έναν για τα 12 στοιχεία του κάθε έτους, αλλά τι γίνεται αν τα έτη αυξηθούν και γίνουν 50; Μια καλή λύση είναι να χρησιμοποιήσουμε έναν πίνακα από πίνακες. Δηλ., ο κύριος πίνακας θα έχει 5 στοιχεία και το κάθε στοιχείο του θα είναι ένας πίνακας από 12 στοιχεία. Μιλάμε δηλαδή για πίνακα δύο διαστάσεων. Αυτό γίνεται ως εξής : static float rain[5][12]; Ο πίνακας rain είναι δισδιάστατος και αποτελείται από 5 γραμμές και από 12 στήλες. Αν αλλάξουμε τον δεύτερο δείκτη, κινούμαστε σε μια γραμμή και αν αλλάξουμε τον πρώτο δείκτη, κινούμαστε κατά μήκος μιας στήλης. Για το συγκεκριμένο παράδειγμα, ο δεύτερος δείκτης δείχνει τους μήνες και ο πρώτος τα χρόνια. Ας δούμε κι ένα πρόγραμμα μ αυτόν τον δισδιάστατο πίνακα. Ο στόχος του προγράμματος είναι να βρεθεί η συνολική βροχόπτωση για κάθε χρόνο, η μέση ετήσια βροχόπτωση και η μέση μηνιαία βροχόπτωση. Για να βρούμε τη συνολική βροχόπτωση του κάθε χρόνου, πρέπει να προσθέσουμε όλα τα δεδομένα του κάθε χρόνου, δηλ. της κάθε γραμμής. Για να βρούμε τη μέση βροχόπτωση για κάποιον μήνα, πρέπει να προσθέσουμε όλα τα δεδομένα σε μια δοσμένη στήλη.

27 Σταθερές Συμβολοσειράς Χαρακτήρα Όταν ο μεταγλωττιστής της C συναντά κάτι ανάμεσα σε διπλά εισαγωγικά " ", το θεωρεί σαν σταθερά συμβολοσειράς και οι χαρακτήρες μέσα στα εισαγωγικά αυτά μαζί με τον χαρακτήρα '\0' αποθηκεύονται σε γειτονικές θέσεις της μνήμης. Εάν, όμως, θέλουμε να χρησιμοποιήσουμε μέσα σε μια συμβολοσειρά διπλά εισαγωγικά, τότε πρέπει να βάλουμε πριν απ αυτά μια πλάγια κάθετο, ως εξής : printf("\"τρέξε, Μαρία!\" είπε η Βάσω.\n"); Το αποτέλεσμα θα είναι το εξής : "Τρέξε, Μαρία!" είπε η Βάσω. Όλη η φράση μέσα στα εισαγωγικά δρα σαν δείκτης, εκεί που αποθηκεύεται η συμβολοσειρά, κάτι δηλ. ανάλογο με το όνομα ενός πίνακα, που δρα σαν ένας δείκτης στη θέση του πίνακα. Πίνακες Συμβολοσειράς Χαρακτήρα Μπορούμε να δώσουμε αρχικές τιμές σε μια συμβολοσειρά χαρακτήρα ως εξής: char line[ ] = "Περιορίσου σε μια γραμμή"; Θα μπορούσαμε να κάνουμε το ίδιο και με τον γνωστό τρόπο απόδοσης αρχικών τιμών σ έναν πίνακα ως εξής : char line[ ] = 'Π', 'ε', 'ρ', 'ι', 'ο', 'ρ', 'ί', 'σ', 'ο', 'υ', ' ', 'σ', 'ε', ' ', 'μ', 'ι', 'α', ' ', 'γ', 'ρ', 'α', 'μ', 'μ', 'ή', '\0'; H χρήση του μηδενικού χαρακτήρα '\0' εξηγεί ότι πρόκειται για συμβολοσειρά και όχι για πίνακα χαρακτήρων. Και στις δύο μορφές, ο μεταγλωττιστής μετράει τους χαρακτήρες και δίνει στον πίνακα το αντίστοιχο μέγεθος. Όπως συμβαίνει και με τους άλλους πίνακες, το όνομα του πίνακα line είναι ένας δείκτης στο πρώτο στοιχείο του πίνακα : line == &line[0] *line == 'Π'

28 *(line+1) == line[1] == 'ε' Μπορούμε συνεπώς να χρησιμοποιήσουμε τον συμβολισμό δείκτη για να δημιουργήσουμε μια συμβολοσειρά : char *Florina = "\nflorina per sempre"; που ισοδυναμεί με το : static char Florina[ ] = "\nflorina per sempre"; Είσοδος Συμβολοσειράς Για το διάβασμα μιας συμβολοσειράς σ' ένα πρόγραμμα, πρέπει να κάνουμε δύο πράγματα : να δεσμεύσουμε τον χώρο αποθήκευσης γι αυτή τη συμβολοσειρά και να χρησιμοποιήσουμε μια συνάρτηση εισόδου για το διάβασμά της. Ο πιο απλός τρόπος για να δηλώσουμε με σαφήνεια το μέγεθος ενός πίνακα είναι η εξής δήλωση : char name[81]; Αφού έχει δημιουργηθεί χώρος στη μνήμη για τη συμβολοσειρά, μπορούμε πλέον να τη διαβάσουμε. Θα δούμε τις συναρτήσεις διαβάσματος συμβολοσειρών gets() και scanf(). Η Συνάρτηση gets() Η συνάρτηση αυτή διαβάζει χαρακτήρες μέχρι να συναντήσει τον χαρακτήρα enter '\n'. Η συνάρτηση αυτή δέχεται όλους τους χαρακτήρες πριν από τον χαρακτήρα '\n', προσθέτει τον μηδενικό χαρακτήρα '\0' και δίνει τη συμβολοσειρά στο καλούν πρόγραμμα. Ο χαρακτήρας νέας γραμμής διαβάζεται και αγνοείται. Ακολουθεί ένα απλό παράδειγμα χρήσης της συνάρτησης gets() : /* prog46.c διάβασμα ενός ονόματος */ #include <stdio.h> #define MAX 81

29 char name[max]; /* δέσμευση χώρου */ printf("γεια σου, ποιο είναι το όνομά σου ;\n"); gets(name); printf("γεια σου, %s.\n", name); Αν όλα δουλέψουν σωστά, η gets() επιστρέφει τη διεύθυνση της συμβολοσειράς που διάβασε, αν όμως κάτι πάει στραβά ή αν η gets() συναντήσει EOF, επιστρέφει μια μηδενική διεύθυνση ή τίποτα. Η κενή διεύθυνση καλείται δείκτης κενού, παριστάνεται στο αρχείο <stdio.h> με τη σταθερά NULL και δεν έχει φυσικά καμία σχέση με τον χαρακτήρα του κενού διαστήματος. Έτσι, με τη gets() μπορούμε να ελέγχουμε για πιθανά λάθη ως εξής : while (gets(name)!= NULL) Η Συνάρτηση scanf() Η βασική διαφορά των δύο συναρτήσεων είναι στον τρόπο που αποφασίζουν ότι έχουν φθάσει στο τέλος της συμβολοσειράς. Μπορούμε να πούμε ότι η scanf() είναι περισσότερο μια συνάρτηση "απόκτησης λέξης" παρά "απόκτησης συμβολοσειράς". Η συνάρτηση scanf() έχει δύο επιλογές. Ξεκινά πάντα με τον πρώτο μη-λευκό χαρακτήρα που συναντάει. Αν χρησιμοποιούμε τον προσδιοριστή %s, η συμβολοσειρά φθάνει μέχρι τον επόμενο λευκό χαρακτήρα χωρίς να τον περιλαμβάνει. Αν καθορίσουμε ένα εύρος πεδίου, π.χ. %10s, τότε η scanf() λαμβάνει υπόψη της μέχρι 10 χαρακτήρες ή μέχρι τον πρώτο λευκό χαρακτήρα. Όπως είδαμε και στα προηγούμενα, η τιμής επιστροφής της scanf() είναι μια ακέραια τιμή, που είναι ίση με το αριθμό των στοιχείων που διαβάστηκαν με επιτυχία ή με τον χαρακτήρα EOF αν συναντήσει το τέλος αρχείου. Ακολουθεί ένα παράδειγμα : /* prog47. c χρήση της scanf() */ #include <stdio.h>

30 static char name1[11], name2[11]; int count; printf("παρακαλώ δώστε 2 ονόματα. \n"); count = scanf("%5s %10s", name1, name2); printf("διάβασα τα %d ονόματα %s και %s. \n", count, name1, name2); Το αποτέλεσμα θα είναι : ή Παρακαλώ δώστε 2 ονόματα. Τάκης Αντώνης Διάβασα τα 2 ονόματα Τάκης και Αντώνης. Παρακαλώ δώστε 2 ονόματα. Λένα Παπαδημητρίου Διάβασα τα 2 ονόματα Λένα και Παπαδημητρ. Αν έχουμε να δώσουμε μόνο κείμενο από το πληκτρολόγιο, τότε είναι καλύτερα να χρησιμοποιήσουμε τη συνάρτηση gets(), ενώ η scanf() συνιστάται για την είσοδο μικτών τύπων σε μια τυποποιημένη μορφή, όπως π.χ. αν κάθε γραμμή εισόδου περιέχει το όνομα ενός εργαλείου, τον κωδικό του αριθμού και την τιμή του. Έξοδος Συμβολοσειράς Θα δούμε δύο συναρτήσεις εξόδου, τις puts() και printf(). Η Συνάρτηση puts()

31 Η συνάρτηση puts() είναι αρκετά εύκολη στη χρήση και απλά δίνουμε ένα όρισμα που είναι ένας δείκτης σε μια συμβολοσειρά. Ακολουθεί ένα παράδειγμα : /* prog48.c χρήση της puts */ #include <stdio.h> #define DEF "Είμαι μια συμβολοσειρά που έχει ορισθεί." static char str1[ ] = "Ένας πίνακας μού απέδωσε αρχικές τιμές."; char *str2 = "Ένας δείκτης μού απέδωσε αρχικές τιμές."; puts("είμαι ένα όρισμα στην puts()."); puts(def); puts(str1); puts(str2); puts(&str1[4]); puts(str2+4); Το αποτέλεσμα θα είναι : Είμαι ένα όρισμα στην puts(). Είμαι μια συμβολοσειρά που έχει ορισθεί. Ένας πίνακας μού απέδωσε αρχικές τιμές. Ένας δείκτης μού απέδωσε αρχικές τιμές. πίνακας μού απέδωσε αρχικές τιμές. δείκτης μού απέδωσε αρχικές τιμές. Προσέχουμε στα δύο τελευταία παραδείγματα από πού αρχίζει να τυπώνει η puts. Κάθε συμβολοσειρά με την puts() εμφανίζεται σε μια νέα γραμμή.

32 Η Συνάρτηση printf() Όπως ήδη γνωρίζουμε, η printf() δεν τοποθετεί αυτόματα κάθε συμβολοσειρά σε μια νέα γραμμή, αλλά εμείς πρέπει να δείξουμε πού θέλουμε να ξεκινούν οι νέες γραμμές. Γενικά, με την printf() πρέπει να γράψουμε περισσότερα, αλλά μ αυτήν μπορούμε να συνδυάσουμε σε μια γραμμή πολλές συμβολοσειρές. Η Συνάρτηση strlen() Η συνάρτηση αυτή βρίσκει το μήκος μιας συμβολοσειράς. Ακολουθεί ένα πρόγραμμα όπου μπορούμε να μικρύνουμε μια μεγάλη συμβολοσειρά σε μέγιστο μήκος χαρακτήρων ίσο με size : /* prog49.c προκρούστεια συνάρτηση */ void match(string, size) char *string; int size; if (strlen(string) > size) *(string + size) = '\0'; Η Συνάρτηση strcat() Με τη συνάρτηση strcat() μπορούμε να ενώσουμε συμβολοσειρές : /* prog50.c ένωση δύο συμβολοσειρών */ #include <stdio.h> #include <string.h> #define SIZE 80

33 static char color[size]; static char addon[ ] = ", πολύ ωραίο χρώμα"; puts("ποιο είναι το αγαπημένο σου χρώμα;"); gets(color); strcat(color, addon); puts(color); puts(addon); Το αποτέλεσμα θα είναι : Ποιο είναι το αγαπημένο σου χρώμα; Κόκκινο Κόκκινο, πολύ ωραίοα χρώμα, πολύ ωραίο χρώμα Όπως βλέπουμε, η συνάρτηση strcat() δέχεται δύο συμβολοσειρές ως ορίσματα. Ένα αντίγραφο της δεύτερης συμβολοσειράς τοποθετείται στο τέλος της πρώτης και οι δύο μαζί παίρνουν τη θέση της πρώτης, ενώ η δεύτερη συμβολοσειρά δεν αλλάζει. Πρέπει, όμως, να κάνουμε και έλεγχο του μεγέθους της πρώτης συμβολοσειράς για να μην έχουμε αποκοπές χαρακτήρων. Η Συνάρτηση strcmp() Η συνάρτηση strcmp() συγκρίνει τα περιεχόμενα δύο συμβολοσειρών και όχι τις διευθύνσεις τους. Ακολουθεί ένα πρόγραμμα : /* prog51.c σύγκριση δύο συμβολοσειρών */ #include <stdio.h> #include <string.h>

34 #define ANSWER "Βέροια" #define MAX 40 char try[max]; puts("ποια είναι η πρωτεύουσα της Ημαθίας;"); gets(try); while ((strcmp(try, ANSWER)!= 0)) puts("λάθος. Προσπάθησε ξανά."); gets(try); puts("μπράβο! Σωστή απάντηση!"); Η συνάρτηση strcmp() δέχεται δύο δείκτες συμβολοσειράς σαν ορίσματα και επιστρέφει μια τιμή 0 αν οι δύο συμβολοσειρές είναι ίδιες. Η strcmp() επιστρέφει ακόμη έναν αρνητικό αριθμό εάν η πρώτη συμβολοσειρά προηγείται αλφαβητικά της δεύτερης και έναν θετικό αριθμό στην αντίθετη περίπτωση. Η Συνάρτηση strcpy() Η συνάρτηση αυτή αντιγράφει συμβολοσειρές. Ακολουθεί ένα παράδειγμα : /* prog52.c επίδειξη της strcpy() */ #include <stdio.h> #include <string.h> #define MOTO "Florina per sempre"

35 #define SIZE 20 static char *second = MOTO; static char first[size] = "Florina"; puts(second); puts(first); strcpy(first, second); puts(second); puts(first); Το αποτέλεσμα θα είναι : Florina per sempre Florina Florina per sempre Florina per sempre Η συμβολοσειρά που δείχνεται από το δεύτερο όρισμα αντιγράφεται στον πίνακα που δείχνεται από το πρώτο όρισμα. Για τη συμβολοσειρά-στόχο, πρέπει να προσέχουμε τη δήλωση του μεγέθους της. Η Συνάρτηση sprintf() Αυτή δηλώνεται στο αρχείο stdio.h και όχι στο string.h και δουλεύει όπως η printf(), αλλά με τη διαφορά ότι γράφει σε μια συμβολοσειρά αντί να εμφανίζει στην οθόνη, δηλ. μας δίνει έναν τρόπο για τον συνδυασμό διαφόρων συμβολοσειρών σε μια συμβολοσειρά. Το πρώτο όρισμα της sprintf() είναι η διεύθυνση της τελικής συμβολοσειράς και τα υπόλοιπα ορίσματα είναι τα ίδια όπως και για την printf() : char first = "Florina"; char second = " per sempre";

36 char pina[20]; sprintf(pina, "%s %s", first, second); Με τις παραπάνω εντολές αντιγράφεται η συμβολοσειρά "Florina per sempre" στον πίνακα pina. Οι Συναρτήσεις του Αρχείου ctype.h Το αρχείο επικεφαλίδων ctype.h περιέχει μια οικογένεια από συναρτήσεις χαρακτήρα, που είναι οι εξής : Όνομα Αληθής (True) αν το Όρισμα είναι : isalnum() isalpha() iprgtrl() isdigit() isgraph() islower() isprint() ispunct() isspace() isupper() isxdigit() Αλφαριθμητικό Αλφαβητικό Ένας χαρακτήρας ελέγχου, π.χ. Control-B Ένα ψηφίο Οποιοσδήποτε εκτυπούμενος μη μηδενικός χαρακτήρας Ένα μικρό γράμμα Ένας εκτυπούμενος χαρακτήρας Ένας χαρακτήρας σημείου στίξης Ένας λευκός χαρακτήρας Ένα κεφαλαίο γράμμα Ένας χαρακτήρας σε 16δική μορφή Υπάρχουν δύο ακόμη συναρτήσεις, η toupper() που μετατρέπει πεζά γράμματα σε κεφαλαία και η tolower() που κάνει το αντίστροφο. Ακολουθεί ένα πρόγραμμα που δέχεται ως είσοδο μια γραμμή και αντιστρέφει τα γράμματα από κεφαλαία σε πεζά και από πεζά σε κεφαλαία. /* prog53.c τροποποίηση μιας συμβολοσειράς */ #include <stdio.h> #include <string.h> #include <ctype.h>

37 #define LIMIT 80 char line[limit]; void modify(); puts("παρακαλώ, εισάγετε μια γραμμή:"); gets(line); modify(line); puts(line); void modify(str) char *str; while (*str!= '\0') if (isupper(*str)) *str = tolower(*str); else if (islower(*str)) *str = toupper(*str); srt++; Μετατροπή Συμβολοσειράς σε Αριθμό Για να μετατρέψουμε μια συμβολοσειρά σε αριθμό, μπορούμε να χρησιμοποιήσουμε τη συνάρτηση atoi() που δέχεται μια συμβολοσειρά ως

38 όρισμα και επιστρέφει την αντίστοιχη ακέραια τιμή. Για να δουλέψει αυτή η συνάρτηση πρέπει να συμπεριλάβουμε το αρχείο stdlib.h. Αυτό το αρχείο περιλαμβάνει δηλώσεις και για τις συναρτήσεις atof() και atol(), όπου η μεν πρώτη μετατρέπει μια συμβολοσειρά σε μια τιμή τύπου double και η δεύτερη μετατρέπει μια συμβολοσειρά σε μια τιμή τύπου long.

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

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

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

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

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

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

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

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

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

Η Γλώσσα Προγραμματισμού C (Μέρος 2 - Οι Bασικές Εντολές της C) Οι Βασικοί Τελεστές της C

Η Γλώσσα Προγραμματισμού C (Μέρος 2 - Οι Bασικές Εντολές της C) Οι Βασικοί Τελεστές της C Η Γλώσσα Προγραμματισμού C (Μέρος 2 - Οι Bασικές Εντολές της C) Οι Βασικοί Τελεστές της C Η C, όπως όλες οι γλώσσες προγραμμστισμού, χρησιμοποιεί τελεστές για να εκτελέσει τις αριθμητικές λειτουργίες.

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

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

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

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

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Χειρισμός χαρακτήρων, συμβολοσειρές Συμβολοσειρές Συμβολοσειρά ονομάζουμε μια οποιαδήποτε ακολουθία αλφαριθμητικών χαρακτήρων: «Κώστας», «Κώστας Βασιλάκης», «Δαιδάλου 23» Στην

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

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

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

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

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Χειρισμός χαρακτήρων, συμβολοσειρές Συμβολοσειρές Συμβολοσειρά ονομάζουμε μια οποιαδήποτε ακολουθία αλφαριθμητικών χαρακτήρων: «Κώστας», «Κώστας Βασιλάκης», «Δαιδάλου 23» Στην

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

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

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

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

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

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

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

Στόχοι και αντικείμενο ενότητας. Τύπος πίνακα. Τύπος πίνακα (συν.) #6. Πίνακες και Δείκτες

Στόχοι και αντικείμενο ενότητας. Τύπος πίνακα. Τύπος πίνακα (συν.) #6. Πίνακες και Δείκτες Στόχοι και αντικείμενο ενότητας Ο τύπος του Πίνακα (βλ. ενότητα #2α) Ορισμός και αρχικοποίηση Αποθήκευση πινάκων στη μνήμη Πολυδιάστατοι πίνακες #6. Πίνακες και Δείκτες Ο τύπος του Δείκτη Η έννοια του

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 8: Πίνακες, Αλφαριθμητικά Πίνακες Ο πίνακας είναι μια ειδική δομή για την αποθήκευση μιας σειράς από δεδομένα του ίδιου τύπου. Η δήλωση ενός πίνακα γίνεται όπως για μια

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

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

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

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

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

ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C ΣΥΝΟΠΤΙΚΟΣ ΟΔΗΓΟΣ ΓΛΩΣΣΑΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C 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;

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

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C

Τεχνολογία και Προγραμματισμός Υπολογιστών. Η γλώσσα προγραμματισμού C Τεχνολογία και Προγραμματισμός Υπολογιστών Η γλώσσα προγραμματισμού C Με μια ματιά Τύπος Πίνακα Μεταβλητές με ενδείκτη Αλφαριθμητικά - Πίνακες Δισδιάστατος Πολυδιάστατος Πίνακας 2 2 Τύπος Πίνακα Σύνθετος

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ. for (παράσταση_1; παράσταση_2; παράσταση_3) εντολή επόμενη εντολή

ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ. for (παράσταση_1; παράσταση_2; παράσταση_3) εντολή επόμενη εντολή ΕΝΤΟΛΕΣ ΕΠΑΝΑΛΗΨΗΣ for (παράσταση_1; παράσταση_2; παράσταση_3) εντολή επόμενη εντολή παράσταση_1 = Παράσταση Αρχικοποίησης παράσταση_2 = Παράσταση Ελέγχου Επανάληψης παράσταση_3 = Παράσταση Ενημέρωσης

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

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

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

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

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

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

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

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Οι πίνακες στη C (μονοδιάστατοι -συμβολοσειρές) Γενικά για τους πίνακες Ο πίνακας είναι μια αρκετά διαδεδομένη δομή που προσφέρεται από σχεδόν κάθε γλώσσα προγραμματισμού. Πρόκειται

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

Προγραμματισμός Η/Υ. Ενότητα 6: Πίνακες και Δείκτες

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 8η: Αλφαριθμητικά (strings)

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

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

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

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

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

Προγραμματισμός Η/Υ. Ενότητα 2β: Εισαγωγή στη C (Μέρος Δεύτερο)

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

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

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

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

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

Γλώσσα Προγραμματισμού C

Γλώσσα Προγραμματισμού C Προγραμματισμός HY: Γλώσσα Προγραμματισμού C Δρ. Ηλίας Κ. Σάββας, Αναπληρωτής Καθηγητής, Τμήμα Μηχανικών Πληροφορικής Τ.Ε., T.E.I. Θεσσαλίας Email: savvas@teilar.gr URL: http://teilar.academia.edu/iliassavvas

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

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

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

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

Μεταφερσιμότητα Τα προγράμματα μεταφέρονται εύκολα σε διαφορετικά λειτουργικά συστήματα

Μεταφερσιμότητα Τα προγράμματα μεταφέρονται εύκολα σε διαφορετικά λειτουργικά συστήματα Η ΓΛΩΣΣΑ C Η C είναι μια γλώσσα προγραμματισμού υψηλού επιπέδου η οποία αναπτύχθηκε στις αρχές της δεκαετίας του 70 από τον Dennis Ritchie στα Bell Labs. Η σημερινή μορφή της γλώσσας ακολουθεί το πρότυπο

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

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

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

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

#define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579

#define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579 Ευρετήριο Η γλώσσα C σε βάθος # #define, 70, 575 #elif, 580 #else, 580 #endif, 580 #error, 584 #if, 580 #ifdef, 583 #ifndef, 580, 583 #include, 70, 227, 574 #undef, 579 A abs(), 625 AND, 64 ASCII πίνακας

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 2 Ο. Εισαγωγή στην C Εντολές εξόδου Εντολές εισόδου Μορφοποιητές ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 2 Ο. Εισαγωγή στην C Εντολές εξόδου Εντολές εισόδου Μορφοποιητές ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 2 Ο Εισαγωγή στην C Εντολές εξόδου Εντολές εισόδου Μορφοποιητές ΣΙΝΑΤΚΑΣ Ι. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ 2010-11 1 Εισαγωγή στη C Η γλώσσα προγραμματισμού C είναι υψηλού επιπέδου με δυνατότητες

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

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

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

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

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

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής Στο εργαστήριο αυτό θα δούμε πώς ορίζονται και πώς χρησιμοποιούνται οι συμβολοσειρές στην C. Επίσης, θα μελετήσουμε κάποιες από τις συναρτήσεις

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

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

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

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

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

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

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

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

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

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

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

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

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

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα. Ερωτήσεις προόδου C Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα. #include // δίνει οδηγία στον compiler να // συμπεριλάβει την βιβλιοθήκη stdio int

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

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

Εισαγωγή στην γλώσσα προγραμματισμού C Εισαγωγή στην γλώσσα προγραμματισμού C Χαρακτηριστικά της C Ιδιαίτερα δημοφιλής Έχει χρησιμοποιηθεί για τον προγραμματισμό ευρέος φάσματος συστημάτων και εφαρμογών Γλώσσα μετρίου επιπέδου Φιλοσοφία: Ο

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

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

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

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

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

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

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

Συµβολοσειρές - Strings

Συµβολοσειρές - Strings Συµβολοσειρές - Strings 1 Συµβολοσειρέςστην C/C++ 2 Χαρακτήρες 'a', 'z', '0', Χαρακτήρες σαν int 'z' επίσης αναπαριστά την ακεραία τιµή του χαρακτήρα z Strings-Συµβολοσειρές Σειρές από χαρακτήρες σαν µια

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

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

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

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

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

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

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

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

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

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

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εργαστήριο 4η σειρά ασκήσεων. Κοζάνη, 1 Νοεμβρίου 2007. Πρόγραμμα p4-1 (μεταγλώττιση και εκτέλεση) Πολύ απλό το πρώτο, για προθέρμανση! Πριν πατήσετε enter

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

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

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

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

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

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

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Ερωτήσεις Επανάληψης

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ. Ερωτήσεις Επανάληψης Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Ερωτήσεις Επανάληψης Α. Ερωτήσεις Στο τέλος δίνονται υποδείξεις για την απάντηση μερικών ερωτήσεων. 01 Ερώτηση: Στις παρακάτω εντολές τι πρόβλημα υπάρχει;

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

Συναρτήσεις διαχείρισης αλφαριθμητικών

Συναρτήσεις διαχείρισης αλφαριθμητικών Συναρτήσεις διαχείρισης αλφαριθμητικών Όνομα βιβλιοθήκης: string.h Ενδεικτικές συναρτήσεις: char *strcpy(char *s1, char *s2): Αντιγράφει την ακολουθία χαρακτήρων s2 στον πίνακα s1. Επιστρέφεται η τιμή

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Απλά Προγράμματα. Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων

Απλά Προγράμματα. Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων Απλά Προγράμματα Βήματα: 1. Καθορισμός παράστασης δεδομένων στη μνήμη 2. Αλγόριθμος βήματα που περιγράφουν την επεξεργασία των δεδομένων Δομές Δεδομένων + Αλγόριθμοι = Προγράμματα Οι Βασικοί κανόνες Κατανόηση

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

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

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

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

Συναρτήσεις πρότυπης βιβλιοθήκης 1. Μερικές συνήθεις συναρτήσεις βιβλιοθήκης int atoi(const char *p) int fclose(file *fp)

Συναρτήσεις πρότυπης βιβλιοθήκης 1. Μερικές συνήθεις συναρτήσεις βιβλιοθήκης int atoi(const char *p) int fclose(file *fp) Συναρτήσεις πρότυπης βιβλιοθήκης Στο πρώτο μέρος δίνονται, με αλφαβητική σειρά, μερικές από τις πιο συνηθισμένες συναρτήσεις βιβλιοθήκης που συνοδεύουν τους σύγχρονους μεταγλωττιστές της C. Κάτω από το

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής

ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής ΕΡΓΑΣΤΗΡΙΟ 9: Συμβολοσειρές και Ορίσματα Γραμμής Εντολής Στο εργαστήριο αυτό θα δούμε πώς ορίζονται και πώς χρησιμοποιούνται οι συμβολοσειρές στην C. Επίσης, θα μελετήσουμε κάποιες από τις συναρτήσεις

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

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

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

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

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

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

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

Επεξεργασία κειμένου και συμβολοσειρών σε C

Επεξεργασία κειμένου και συμβολοσειρών σε C Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ Διδάσκοντες: Στάθης Ζάχος (zachos@cs.ntua.gr) Νίκος Παπασπύρου (nickie@softlab.ntua.gr)

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

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

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

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

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

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

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

Χpήσιµες Βιβλιοθήκες της γλώσσας C

Χpήσιµες Βιβλιοθήκες της γλώσσας C Χpήσιµες Βιβλιοθήκες της γλώσσας C Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Συναρτήσεις Επεξεργασίας Συµβολοσειρών (strings) που Παρέχονται από τη Βιβλιοθήκη Συναρτήσεις Ελέγχου

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

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

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

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

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

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

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

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

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

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

Γλώσσες Προγραμματισμού

Γλώσσες Προγραμματισμού Γλώσσες Προγραμματισμού Διδάσκων: Ανδρέας Παπασαλούρος Ιστοσελίδα: http://www.samos.aegean.gr/math/andpapas/courses/pl/default.htm Πλατφόρμα ηλεκτρονικής μάθησης: http://myria.math.aegean.gr/moodle/ Πλατφόρμα

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

ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files)

ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files) ΑΡ Χ Ε Ι Α Κ Ε Ι Μ Ε Ν Ο Υ (text files) Αρχείο είναι μια συλλογή δεδομένων του ίδιου τύπου. Ενα αρχείο αποθηκεύεται στην περιφερειακή μνήμη (σκληρό δίσκο, δισκέττα). Τα αρχεία είναι μόνιμα. Τα δεδομένα

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