Προγραμματισμός II. Δείκτες

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

Download "Προγραμματισμός II. Δείκτες"

Transcript

1 Δείκτες

2 Δείκτες (pointers) Πίνακες ως παράμετροι συναρτήσεων: Περνά τη διεύθυνση του πίνακα main () int nums[5]=1,2,3,4,5; clear(nums nums,, 5); void clear(int ar[ [ ], int size) int i; for (i=0; i < size; i++) ar[i]=0; Αλλάζειταστοιχείατουnums

3 Δείκτες Μπορούμε να αλλάξουμε τις τιμές που είναι αποθηκευμένες στον πίνακα nums μέσα από τη συνάρτηση clear(). Αυτό συμβαίνει γιατί το όνομα nums αναφέρεται στη διεύθυνση μνήμης, από την οποία ξεκινά ο πίνακας. main () int x=3; y=5; swap(x,y); printf("x=%d, y=%d", x, y); void swap (int a, int b) int temp = a; a = b; b = temp; Τυπώνει x=3, y=5. Δε γίνεται η ανταλλαγή (swapping)!

4 Δείκτες Το πρόβλημα συμβαίνει επειδή απλώς αντιγράφονται οι τιμές των x και y στα ορίσματα a και b. Άρα, τι θα γινόταν εάν μπορούσαμε με κάποιον τρόπο να ανταλλάξουμε τις διευθύνσεις των x και y; Τότε, θα μπορούσαμε να αλλάξουμε τα x και y μέσα στη συνάρτηση swap() (), όπως συνέβη με τον πίνακα.

5 Διεύθυν. Προγραμματισμός II Δήλωση δείκτη Δείκτης: μία μεταβλητή που κρατά μία διεύθυνση. 900 : 904 : 908 : Περιεχόμ. x, 32 px, 900 Κανονική μεταβλητή. Όνομα: x, Τιμή: 32, Tύπος: int Μεταβλητή δείκτη. Όνομα: px, Τιμή: 900, Tύπος: δείκτης σε int Λέμε ότι ο px δείχνει στην x Φανταστείτε ένα τόξο από τη μεταβλητή δείκτη στην κανονική μεταβλητή, το οποίο δείχνει πού «δείχνει» οδείκτης. 900 : x, 32 px, 900

6 Δήλωση δείκτη Ο δείκτης πρέπει να δηλωθεί: base_type * pointer_name ; ο τύπος της μεταβλητής αποθηκεύεται στη θέση που δείχνει ο δείκτης το όνομα τηςμεταβλητήςδείκτη. Καλή προγραμματιστική πρακτική: το πρώτο γράμμα του ονόματος να είναι πάντοτε p προσδιορίζει ότι δηλώνεται μία μεταβλητή δείκτη

7 Δήλωση δείκτη Γιατί πρέπει να δηλωθεί ο τύπος της κανονικής μεταβλητής; Γιατί όταν δηλώνεται μία (κανονική) μεταβλητή, δεσμεύεται συγκεκριμένη μνήμη, π.χ. 8 bytes για double, 4 bytes για int. Ο δείκτης αναφέρεται σε μία διεύθυνση, στην οποία αποθηκεύεται η τιμή μίας κανονικής μεταβλητής. Ο δείκτης χρησιμοποιείται για να γίνεται έμμεση αναφορά σ αυτήν την τιμή. Έτσι, πρέπει να γνωρίζουμε πόση ακριβώς μνήμη καταλαμβάνει αυτή η τιμή.

8 Δήλωση δείκτη Πόση μνήμη καταλαμβάνει η ίδια η μεταβλητή δείκτη; Η διεύθυνση είναι ένας ακέραιος, έτσι ο δείκτης καταλαμβάνει 4 bytes, ανεξάρτητα από τον τύπο της κανονικής μεταβλητής που δείχνει. 200: x, bytes Η x είναι μεταβλητή τύπου double 208: px, bytes Ο px είναι δείκτης στην x 212: Αναλογία με την πραγματικότητα : μία οκταμελής οικογένεια δε χρειάζεται μεγαλύτερη ταχυδρομική διεύθυνση από μία τετραμελή (ίσως μεγαλύτερο γραμματοκιβώτιο!)

9 Δήλωση δείκτη Γιατί είναι απαραίτητος ο αστερίσκος; Διότι προσδιορίζει ότι δηλώνεται μία μεταβλητή με δείκτη κι όχι μία κανονική μεταβλητή. ΠΡΟΣΟΧΗ : Αν και η μεταβλητή με δείκτη περιέχει μία διεύθυνση (ακέραιος αριθμός), ΔΕΝ ΕΙΝΑΙ ΙΔΙΑ με μία κανονική ακέραια μεταβλητή. Ο μεταγλωττιστής γνωρίζει ότι η τιμή της μεταβλητής με δείκτη είναι μία συγκεκριμένη διεύθυνση μνήμης, σε αντιδιαστολή με την «κανονική» ακέραια τιμή.

10 Δήλωση δείκτη Ο αστερίσκος συνδέεται με το όνομα κι όχι με τον τύπο: int *pcount; // δείκτης σε ακεραίους, με ονομασία pcount int *pcount, *pnum; pnum */ /* δείκτες σε ακεραίους, με ονομασίες pcount και int *pcount, number; /* ένας δείκτης σε ακέραιο, με ονομασία pcount και ένας ακέραιος με ονομασία number */

11 Δήλωση δείκτη Πώς επιλέγεται το όνομα ενός δείκτη; Οι ίδιες συμβάσεις που ισχύουν στις κανονικές μεταβλητές. Ωστόσο, συνήθως ο αρχικός χαρακτήρας του ονόματος δείκτη είναι το p, έτσι ώστε το πρόγραμμα να καθίσταται περισσότερο ευανάγνωστο, καθώς με τον πρώτο χαρακτήρα φαίνεται εάν μία μεταβλητή είναι δείκτης ή όχι. Εναλλακτικά, μπορούμε να προσθέτουμε την κατάληξη _ptr. Παράδειγμα: int *pcount, *count_ptr; char *pword, *word_ptr; // δείκτες σε ακεραίους // δείκτες σε χαρακτήρες

12 1) Χρησιμοποιώντας πίνακα Αρχικοποίηση δεικτών (Υπενθύμιση: το όνομα ενός πίνακα είναι μία διεύθυνση. int numarray[5] = 1,2,3,4,5; int *pint; pint = numarray; numarray pint

13 Αρχικοποίηση δεικτών 2) Χρησιμοποιώντας άλλους δείκτες ίδιου τύπου int numarray[5] = 1,2,3,4,5; int *pint, *pnum* pnum; pint = numarray; pnum = pint; numarray pint pnum

14 Αρχικοποίηση δεικτών 3) Χρησιμοποιώντας αριθμητική δεικτών int numarray[5] = 1,2,3,4,5; int *pint, *pnum* pnum; pint = numarray; pnum = pint+2; Πήγαινε δύο θέσεις ακεραίων πιο κάτω numarray pint pnum

15 Αρχικοποίηση δεικτών 4) Χρησιμοποιώντας τον τελεστή διεύθυνσης &(address-of operator) int *pnum; int count; pnum = &count; H γραμμή αυτή αναφέρει: ο pnum να λάβει ως τιμή τη διεύθυνση της μεταβλητής count, δηλαδή ο δείκτης pnum να «δείχνει» στη μεταβλητή count.

16 Ακολούθως φαίνεται πώς μπορούμε να προσπελάσουμε την τιμή μίας μεταβλητής με τη χρήση δείκτη. int *pcount,, num; num = 10; pcount = &num; *pcount = 20; 900 : 904 : 908 : pcount, junk num, junk...

17 ... int *pcount,, num; num = 10; pcount = &num; *pcount = 20; 900 : 904 : 908 : pcount, junk num, 10 int *pcount,, num; num = 10; pcount = &num; *pcount = 20; 900 : 904 : 908 :... pcount, 904 num, 10

18 int *pcount,, num; num = 10; pcount = &num; *pcount = 20; 900 : pcount, : num, : Ο αστερίσκος υποδηλώνει ότι πρέπει να ακολουθηθεί το βέλος για να προσπελασθούν τα δεδομένα της θέσης, στην οποία δείχνει....

19 *pcount = 20; Ο αστερίσκος ονομάζεται τελεστής περιεχομένου (dereferencing operator). Διαβάζεται «στη διεύθυνση». Χρησιμοποιείται για να προσπελαύνει τα περιεχόμενα της θέσης μνήμης στην οποία δείχνει ο δείκτης. Δε θα πρέπει να συγχέεται με τον αστερίσκο της δήλωσης δείκτη.

20 Εφαρμογή δεικτών Στο παράδειγμα της συνάρτησης swap() κατέστη φανερό ότι έπρεπε να γίνουν διορθώσεις: Μπορούμε να χρησιμοποιήσουμε δείκτες για να μεταβάλλουμε έμμεσα τις τιμές των μεταβλητών της main() μέσα από τη συνάρτηση swap() (). Γνωρίζουμε πλέον: Πώς ορίζονται οι δείκτες. Πώς τους αρχικοποιούμε με τη διεύθυνση μίας μεταβλητής. Πώς προσπελαύνουμε την τιμή της μεταβλητής.

21 main() int x=10, y=25; int *px,, *py* py; px = &x; py = &y; swap(px, py); Προγραμματισμός II Εφαρμογή δεικτών Τα ορίσματα της συνάρτησης είναι τώρα δείκτες σε ακέραιες μεταβλητές. void swap (int( *pa, int *pb)) int temp; temp = *pa; *pa = *pb* pb; *pb = temp; Θα χρησιμοποιήσουμε μαύρο χρώμα για τις τοπικές μεταβλητές της main() και μπλε για τις τοπικές μεταβλητές της swap() ().

22 main() int x=10, y=25; int *px,, *py* py; px = &x; py = &y; swap(px, py); void swap (int( *pa, int *pb)) int temp; temp = *pa; *pa = *pb* pb; *pb = temp; Απεικόνιση της μνήμης address var name, value 900: x, : y, : 912: 916: 920: 924:

23 main () int x=10, y=25; int *px,, *py* py; px = &x; py = &y; swap(px, py); void swap (int( *pa, int *pb)) int temp; temp = *pa; *pa = *pb* pb; *pb = temp; Απεικόνιση της μνήμης address var name, value 900: x, : y, : px, junk 912: py, junk 916: 920: 924:

24 main () int x=10, y=25; int *px,, *py* py; px = &x; py = &y; swap(px, py); void swap (int( *pa, int *pb)) int temp; temp = *pa; *pa = *pb* pb; *pb = temp; Απεικόνιση της μνήμης address var name, value 900: x, : y, : px, : py, junk 916: 920: 924:

25 main () int x=10, y=25; int *px,, *py* py; px = &x; py = &y; swap(px, py); void swap (int( *pa, int *pb)) int temp; temp = *pa; *pa = *pb* pb; *pb = temp; Απεικόνιση της μνήμης address var name, value 900: x, : y, : px, : py, : 920: 924:

26 main () int x=10, y=25; int *px,, *py* py; px = &x; py = &y; swap(px, py); Αντίγραφο της τιμής της py void swap (int( *pa, int *pb)) int temp; temp = *pa; *pa = *pb* pb; *pb = temp; Απεικόνιση της μνήμης address 900: 904: 908: 912: 916: 920: 924: var name, value x, 10 y, 25 px, 900 py, 904 pa, 900 pb, 904

27 main () int x=10, y=25; int *px,, *py* py; px = &x; py = &y; swap(px, py); void swap (int( *pa, int *pb)) int temp; temp = *pa; *pa = *pb* pb; *pb = temp; Απεικόνιση της μνήμης address var name, value 900: x, : y, : px, : py, : pa, : pb, : temp, junk

28 main () int x=10, y=25; int *px,, *py* py; px = &x; py = &y; swap(px, py); void swap (int( *pa, int *pb)) int temp; temp = *pa; *pa = *pb* pb; *pb = temp; Απεικόνιση της μνήμης address var name, value 900: x, : y, : px, : py, : pa, : pb, : temp, 10

29 main () int x=10, y=25; int *px,, *py* py; px = &x; py = &y; swap(px, py); void swap (int( *pa, int *pb)) int temp; temp = *pa; *pa = *pb* pb; *pb = temp; Απεικόνιση της μνήμης address var name, value 900: x, : y, : px, : py, : pa, : pb, : temp, 10

30 main () int x=10, y=25; int *px,, *py* py; px = &x; py = &y; swap(px, py); void swap (int( *pa, int *pb)) int temp; temp = *pa; *pa = *pb* pb; *pb = temp; Απεικόνιση της μνήμης address var name, value 900: x, : y, : px, : py, : pa, : pb, : temp, 10

31 main () int x=10, y=25; int *px,, *py* py; px = &x; py = &y; swap(px, py); void swap (int( *pa, int *pb)) int temp; temp = *pa; *pa = *pb* pb; *pb = temp; Απεικόνιση της μνήμης address var name, value 900: x, : y, : px, : py, : 920: 924:

32 Επεξηγήσεις: Αν και η συνάρτηση swap() δεν επιστρέφει τίποτε άμεσα στη main() (), έχει μία παρενέργεια (side effect). Όταν καλείται η swap() (), τα ορίσματά της είναι οι δείκτες px και py, οι οποίες σχετίζονται με τις διευθύνσεις των x και y, αντίστοιχα. Παρατήρηση: δε χρειάζεται να δηλώσουμε τους δείκτες px και py. Το μόνο που απαιτείται είναι να περασθούν οι διευθύνσεις των x και y στη swap() (), όπως φαίνεται ακολούθως:

33 main () int x=10, y=25; swap(&x, &y); void swap (int( *pa, int *pb) int temp; temp = *pa; *pa = *pb* pb; *pb = temp; Λειτουργεί με τον ίδιο τρόπο που λειτουργούσε το πρόγραμμα με τους px και py.

34 pointer_ex.cpp

35 Δείκτες και συναρτήσεις Έως τώρα περνούσαμε τους δείκτες ως ορίσματα σε συναρτήσεις. Μπορούμε όμως να επιστρέφουμε δείκτες; Όταν επιστρέφεται ένας δείκτης, θα πρέπει να δείχνει σε δεδομένα της καλούσας συνάρτησης. Δεν πρέπει ποτέ να επιστρέφεται δείκτης που δείχνει σε τοπική μεταβλητή της καλούμενης συνάρτησης, γιατί όταν τερματισθεί η συνάρτηση οι τοπικές μεταβλητές εξαφανίζονται. Μπορούμε να χρησιμοποιήσουμε δείκτη για να αλλάξουμε το περιεχόμενο της θέσης στην οποία δείχνει, αλλά δεν πρέπει να αλλάξουμε τον ίδιο το δείκτη μέσα στην καλούμενη συνάρτηση.

36 main () int *pscore* pscore,, num; num = 32; pscore = &num; print(pscore); void print(int *ptr* ptr) ) Aντιγράφει την τιμή του pscore (δηλαδή τη διεύθυνση στην οποία δείχνει) στον ptr printf( %d %d,, *ptr* ptr); ptr=ptr+1; ΚΑΚΟ! Όταν τυπώνει η συνάρτηση τελειώνει και ο ptr εξαφανίζεται. Ο pscore είναιό,τιήτανκαιπριντην κλήση της συνάρτησης print.

37 main () int *pscore* pscore,, num; num = 32; pscore = incr(num); int *incr(int* x) x = x+10; return &x; ΛΑΘΟΣ! Όταν τελειώνει η incr, η x εξαφανίζεται και η τιμή της χάνεται. Ωστόσο, πίσω στη συνάρτηση ο pscore θα δείχνει στη διεύθυνση που επέστρεψε από τη συνάρτηση αλλά θα υπάρχει «σκουπίδι» (junk) σ αυτή τη διεύθυνση, εφόσον το x έχει εξαφανισθεί. Σωστή χρήση της επιστρεφόμενης τιμής διεύθυνσης

38 // pointer_func.cpp #include <stdio.h> int *incr(int *pkitsos); main() int *pscore, *pm, num; num=32; pscore=&num; printf( "addr(num)=%d addr(pscore)=%d addr(pm)=%d pscore=%d\n\n*pscore=%d n*pscore=%d\n\n",&num,&pscore,&pm,pscore,*pscore n",&num,&pscore,&pm,pscore,*pscore ); pm=incr(pscore); printf( "pm=%d num=%d printf( "pm=%d num=%d\n\n\n",pm,num ); n",pm,num );

39 int *incr(int *pk) int x; x=*pk; printf( "Prior: addr(pk)=%d pk=%d addr(x)=%d x=%d\n\n",&pk,pk,&x,x); n",&pk,pk,&x,x); x=x+10; *pk=x; printf( "*pk=%d\n\n",*pk); n",*pk); return(pk);

40 pointer_return_value.cpp

41 (Υπενθύμιση) Συνάρτηση και Πίνακες Εάν η πραγματική παράμετρος είναι όνομα πίνακα (πχ. key), στέλνει τη διεύθυνση του πρώτου byte του πίνακα. Η παράμετρος στη δήλωση της συνάρτησης είναι ένα όνομα τοπικού πίνακα (π.χ. x). Κρατά ένα αντίγραφο της ίδιας διεύθυνσης αλλά χρησιμοποιεί διαφορετικό όνομα. Πραγματική παράμετρος main () float key[10]; setkeya(key,4); /*key has 10 varied #s */ Παράμετρος συνάρτησης setkeya(float x[], int s) /* 10 seeded random #s */ int i; srand(s); /* seed it */ for(i=0; i<10; i++) x[i] = rand();

42 Κλήση κατ αξία Το όρισμα 4 αντιγράφει μία ΤΙΜΗ στη συνάρτηση. Η διαδικασία αυτή ονομάζεται κλήση κατ αξία (call by value). Πραγματική παράμετρος main () float key[10]; setkeya(key,4); /*key has 10 varied #s */ Παράμετρος συνάρτησης setkeya(float x[], int s) /* 10 seeded random #s */ int i; srand(s); /* seed it */ for(i=0; i<10; i++) x[i] = rand();

43 Κλήση κατ αξία Το όρισμα key αντιγράφει τη ΔΙΕΥΘΥΝΣΗ σε μία συνάρτηση. Η συνάρτηση χρησιμοποιεί αυτή τη διεύθυνση για να βρει το προς χρήση δεδομένο. Πραγματική παράμετρος main () float key[10]; setkeya(key,4); /*key has 10 varied #s */ Παράμετρος συνάρτησης setkeya(float x[], int s) /* 10 seeded random #s */ int i; srand(s); /* seed it */ for(i=0; i<10; i++) x[i] = rand();

44 Κλήση κατ αναφορά Όταν τα ορίσματα είναι πίνακες, περνιούνται στις συναρτήσεις κατ αναφορά (call by reference) και μπορεί να είναι ΤΟΣΟ είσοδοι ΟΣΟ και έξοδοι. (τόσο η main() όσο και η setkeya() μπορούν να θέσουν τιμές σε στοιχεία πινάκων). Πραγματική παράμετρος main () float key[10]; setkeya(key,4); /*key has 10 varied #s */ Παράμετρος συνάρτησης setkeya(float x[], int s) /* 10 seeded random #s */ int i; srand(s); /* seed it */ for(i=0; i<10; i++) x[i] = rand();

45 Οι δείκτες επιτρέπουν να περνάμε ΟΠΟΙΟΔΗΠΟΤΕ δεδομένο κατ αναφορά αναφορά Παράδειγμα: αλλάζουμε την setkeya έτσι ώστε να δέχεται ως ορίσματα μόνο δείκτες και διευρύνονται οι δυνατότητες.(αλλάζουμεαλλάζουμε το όνομα σε setkeyp) Πραγματική παράμετρος main () /*double-width key */ int seed0 = 4; seed1 = 89; float key2[20]; setkeyp(&key2[0], &seed0); setkeyp(&key2[10],&seed1); Κλήση κατ αναφορά Παράμετρος συνάρτησης setkeyp(float *pk,, int *ps* ps) /* 10 seeded random #s */ int i; srand(* (*ps); /* seed...*/ for(i=0; i<10; i++) pk[i] ] = rand(); *ps=0; /* clear it*/

46 Κλήση κατ αναφορά main () /*double-width key */ int seed0 = 4; seed1 = 89; float key2[20]; setkeyp(&key2[0], &seed0); setkeyp(&key2[10],&seed1); /* now seed0,seed1 are 0 */ setkeyp(float *pk,, int *ps* ps) /* 10 seeded random #s */ int i; srand(* (*ps); /* seed...*/ for(i=0; i<10; i++) pk[i] ] = rand(); *ps=0; /* clear it*/ //rand_scenarios

47 Συναρτήσεις και Δείκτες Οι πραγματικές παράμετροι που είναι δείκτες αντιγράφουν μία διεύθυνση στις παραμέτρους της συνάρτησης, αλλά εάν αλλαχθεί η παράμετρος στη συνάρτηση (δηλ. η διεύθυνση) ΔΕ θα αλλαχθεί η πραγματική παράμετρος!! Πραγματικό όρισμα main () double cbn[2]=1.2,5.0; double *pc* pc; pc = &cbn[1]; dfixit(pc); /* now cbn[1]=42.0, */ /* but pc unchanged */ OΧΙ!! Παράμετρος συνάρτησης dfixit(double *x) x[0] = 42.0; x--; /*move x?*/

48 Ταχύ, αποδοτικό Προγραμματισμός II Ο δείκτης ως όρισμα (αντιγράφει μόνο τη διεύθυνση, όχι όλα τα δεδομένα) Ισχυρό: μπορεί να είναι είσοδος, έξοδος ή και τα δύο!!!!κινδυνοσ!! Τι γίνεται όταν έχουμε άκυρα ορίσματα; Απάντηση: Να αναμένετε το χείριστο χάος το λανθασμένο στοιχείο να αποθηκεύεται τη λάθος στιγμή σε λάθος θέση!!

49 Συναρτήσεις με τύπο επιστροφής δείκτη Οι συναρτήσεις των οποίων ο τύπος επιστροφής είναι δείκτης; ΠΩΣ: η δήλωση της συνάρτησης μοιάζει: char *findnextvowel(char *str);!!!!κινδυνοσ!! Όλες οι μεταβλητές της συνάρτησης είναι τοπικές και προσωρινές. Μπορεί να εξαφανισθούν όταν φύγουμε από τη συνάρτηση. Μην επιστρέφετε δείκτες σε μη ορισμένες μεταβλητές! Να μην επιστρέφετε ποτέ δείκτες χρησιμοποιείτε τη λέξη κλειδί static. ΕΚΤΟΣ εάν

50 main() float* pkey; Προγραμματισμός II Παράδειγμα static ΣΦΑΛΜΑ pkey = setkey(0); printf( keys 0,7 are %d,%d.\n,pkey[0],pkey[7]);,pkey[0],pkey[7]);... (κώδικας( που δεν αλλάζει τον pkey) )... printf( keys 0,7 are %d,%d.\n,pkey[0],pkey[7]);,pkey[0],pkey[7]); float* setkey(int s) /* make a cryptographic key */ float keep[10]; int i; srand(s); /* set rand s seed */ for(i=0; i<10; i++) keep[i] = rand(); return(keep);

51 Παράδειγμα static main() float* pkey; ΣΦΑΛΜΑ pkey = setkey(0); printf( keys 0,7 are %d,%d.\n,pkey[0],pkey[7]);,pkey[0],pkey[7]);... (code that doesn t t change pkey) )... printf( keys 0,7 are %d,%d.\n,pkey[0],pkey[7]);,pkey[0],pkey[7]); ΔΙΟΤΙ: Στην έξοδο η προσωρινή μεταβλητή i και ο keep είναι float* setkey(int s) /* make a cryptographic key */ float keep[10]; int i; πίνακας keep srand(s); /* set rand s seed */ for(i=0; i<10; i++) keep[i] = rand(); ακαθόριστοι return(keep);

52 main() float* pkey; Προγραμματισμός II Παράδειγμα static ΣΩΣΤΟ pkey = setkey(0); printf( keys 0,7 are %d,%d.\n,pkey[0],pkey[7]);,pkey[0],pkey[7]);... (code that doesn t t change pkey) )... printf( keys 0,7 are %d,%d.\n,pkey[0],pkey[7]);,pkey[0],pkey[7]); Η λέξη κλειδί κλειδί static float* setkey(int s) /* make a cryptographic key */ διατηρεί τον πίνακα keep, static float keep[10]; ακόμη και μετά την έξοδο int i; srand(s); /* set rand s seed από */ τη συνάρτηση. for(i=0; i<10; i++) keep[i] = rand(); return(keep); επιστροφή(δείκτης δείκτης) Πάντοτε έλεγξε για static!

53 Παράδειγμα: Tο ακόλουθοπρόγραμμααφοράσεδείκτεςπουδείχνουν σε δομές και παρουσιάζει συγκριτικά τον τρόπο λειτουργίας της κλήσης κατ αξία και της κλήσης κατ αναφορά. #include<conio.h conio.h> #include<stdio.h stdio.h> //vectors struct vector //define the structure vector float x,y; ; // // function declaration vector readvect(); // Reads a vector, call by value (cbv( cbv) void prvect(char d, vector v); // Prints a vector, (cbv( cbv) void scanvect( ( vector *p); // Reads a vector,call by reference (cbr( cbr) float inprod(vector v, vector u); // Inner product, (cbv( cbv) float inprodr(vector *p, vector *q); // Inner product, (cbr( cbr) vector addvect(vector v, vector u); // Add vectors, (cbv( cbv) vector addvectr(vector *p, vector *q); // Add vectors, (cbr( cbr)

54 main() vector a,b,c; a=readvect readvect(); prvect('a',a); scanvect(&b); prvect('b',b); printf("v a*b=%.2f\n",inprod(a,b)); printf("r a*b=%.2f\n",inprodr(&a,&b)); c = addvect(a,b); printf("cbv addition: "); prvect('c',c); addvectr(&a,&b,&c); printf("cbr addition: "); printf("vector %c is (%.2f,%.2f)\n",'c',c.x,c.y); printf("\t\t\tpress tpress ANY KEY TO FINISH\n" ); getch(); //end of main //vectors

55 void prvect(char d, vector v) printf( ( "Vector %c is ",d ); printf( ( "(%.2f,%.2f)\n",v.x,v.y ); //end of prvect vector readvect() vector v; printf( ( "Give the x co-ordinate:" ordinate:" ); scanf("%f",&v.x); printf( ( "Give the y co-ordinate:" ordinate:" ); scanf("%f",&v.y); return(v); //end of readvect void scanvect( ( vector *p) printf( ( "Give the x co-ordinate:" ordinate:" ); scanf("%f",&p->x); printf( ( "Give the y co-ordinate:" ordinate:" ); scanf("%f",&p->y); //end of scanvect

56 float inprod(vector v, vector u) return(v.x*u.x+v.y*u.y); //end of inprod float inprodr(vector *p, vector *q) // parentheses are not necessary, due to precedence return((*p).x*(*q).x+(p->y)*(q >y)*(q->y)); >y)); //end of inprodr vector addvect(vector v, vector u) vector sum; sum.x=v.x+u.x; sum.y=v.y+u.y; return(sum); //end of addvect void addvectr(vector *p, vector *q, vector *t) t->x=(p->x)+(q->x); >x); t->y=(pt >y=(p->y)+(q->y); >y); //end of addvectr

57 Αποτέλεσμα: Προγραμματισμός II

58 pointer_nested_struct.cpp

59 Παράδειγμα: Να αναπτυχθεί πρόγραμμα που να λαμβάνει από το πληκτρολόγιο τα στοιχεία ενός εργαζόμενου και να δημιουργεί πίνακα εργαζόμενων, με τύπο δεδομένου κατάλληλη δομή. Η διαδικασία θα επαναλαμβάνεται για 10 διαφορετικούς εργαζόμενους, όσο είναι και το μέγεθος του πίνακα. Οι πληροφορίες που διαβάζονται για κάθε εργαζόμενο είναι: Ονοματεπώνυμο: Όνομα και επώνυμο ξεχωριστά (σε μεταβλητή τύπου δομής) Διεύθυνση: Όνομα οδού, αριθμός οδού, πόλη, ταχ. Κώδικας (σε μεταβλητή τύπου δομής) Τηλέφωνα: Τηλέφωνο εργασίας, κινητό (σε μεταβλητή τύπου δομής) Θέση: Τίτλος, κωδικός αριθμός εργαζόμενου, τομέας της επιχείρησης στον οποίο εργάζεται, αριθμός γραφείου, ονοματεπώνυμο προϊσταμένου, ημερομηνία πρόσληψης (ημέρα, μήνας, έτος), μισθός (σε μεταβλητή τύπου δομής θα απαιτηθεί ένθετη δομή για την ημερομηνία πρόσληψης) Στη συνέχεια να δίνεται κάποιος κωδικός αριθμός εργαζόμενου από το πληκτρολόγιο και να αναζητείται στον πίνακα. Αν υπάρχει, τότε να εμφανίζονται στην οθόνη οι πληροφορίες του αντίστοιχου εργαζόμενου, αλλιώς να εμφανίζεται ένα ανάλογο μήνυμα.

60 // Combined use of calling functions by value and by reference (including structures) #include<conio.h conio.h> #include<stdio.h stdio.h> #define N 2//102 //Number of employees struct nmt char name[40],surname[40]; ; struct addresst char street_name[40], city[40]; int street_number,zip_code; ; struct telet char office_number[14],home_number[14]; ; struct hiredatet int year,month,date; ; struct job_descriptiont char title[40], sector[100], boss_name[40]; int code_number,office_number,salary; hiredatet hire; Περισσότερες λεπτομέρειες ; στο cbr_cbv.cpp

61 struct personnelt nmt nm; addresst addr; telet tele; job_descriptiont job; ; Προγραμματισμός II void get_employee(personnelt *pers_ptr); void search_employee(int i, personnelt person[n]); main() Call by reference personnelt pers[n]; int i; for (i=0;i<n;i N;i++) get_employee(&pers[i]); printf("\ngive ngive an employee's code_number: : "); scanf("%d",&i); search_employee(i,pers); Call by value

62 void get_employee(personnelt *pers_ptr) printf("\t\tadd tadd new employee:\n"); printf("\nemployee's nemployee's name: "); scanf("%s",pers_ptr->nm.name nm.name); printf("\nsurname nsurname: : "); scanf("%s",pers_ptr->nm.surname nm.surname); printf("\t\nemployee's nemployee's job details:"); printf("\ncode ncode number: "); scanf("%d",&pers_ptr->job.code_number job.code_number); printf("\nsalary nsalary: : "); scanf("%d",&pers_ptr->job.salary job.salary); printf("\nyear nyear of recruitment: "); scanf("%d",&pers_ptr->job.hire.year job.hire.year);

63 void search_employee(int code, personnelt person[n]) int j=0; int index=-1; while ((j<n) && (index==-1)) if (code==person[j].job.code_number person[j].job.code_number) ) index=j; j++; if (index==-1) printf("\nthe nthe given code_number does not match to an existing one\n"); n"); else printf("\n\t\tsearch tsearch results:\n"); printf("\nemployee's nemployee's name: %s",person[index].nm.name% s",person[index].nm.name); printf("\nsurname nsurname: : %s",person[index].nm.surname% s",person[index].nm.surname); printf("\t\njob njob details:"); printf("\ncode ncode number: %d",person[index].job.code_number% d",person[index].job.code_number); printf("\nsalary nsalary: : %d",person[index].job.salary% d",person[index].job.salary); printf("\nyear nyear of recruitment: %d",person[index].job.hire.year% d",person[index].job.hire.year);

64 Αποτελέσματα: Προγραμματισμός II

65

66 Ορίσματα γραμμής διαταγής Όπως κάθε συνάρτηση, έτσι κι η main μπορεί να δεχθεί παραμέτρους, οι οποίες επιτρέπουν να δίνουμε στο καλούμενο πρόγραμμα ένα σύνολο από εισόδους, που καλούνται ορίσματα γραμμής διαταγής. Ο μηχανισμός περάσματος ορισμάτων βασίζεται στην ακόλουθη δήλωση της main: main(int argc,, char *argv* argv[])... argc (argument count): ο αριθμός των ορισμάτων της γραμμής διαταγής, συμπεριλαμβανομένου και του ονόματος του προγράμματος. argv (argument vector): δείκτης σε πίνακα από δείκτες, που δείχνουν στα ορίσματα της γραμμής διαταγής, τα οποία αποθηκεύονται με τη μορφή αλφαριθμητικών. Ο πίνακας στον οποίο δείχνει ο argv έχει ένα επιπλέον στοιχείο, το argv[argc], το οποίο έχει τιμή NULL (είναι δείκτης που δε δείχνει πουθενά).

67 Ορίσματα γραμμής διαταγής Παράδειγμα: Να καταστρωθεί πρόγραμμα που θα τυπώνει τα ορίσματα της γραμμής διαταγής Λύση: Έστω echo το όνομα του προγράμματος. Όταν το καλούμε με την εντολή echo one two three θα πρέπει να εκτελείται και να τυπώνει στην οθόνη one two three. To σώμα της main έχει πρόσβαση στις μεταβλητές argc και argv όπως παριστάνονται από το ακόλουθο σχήμα: //command_line_args

68 Ορίσματα γραμμής διαταγής με βάση το προηγούμενο σχήμα, η διαμόρφωση του σώματος της main είναι απλή: main(int argc,, char *argv* argv[]) int i; for (i=1;i<argc;i argc;i++) printf( %s%s,argv[i], ); printf( \n ); Η printf( %s%s,argv[i], ); τυπώνει μετά από κάθε όρισμα ένα κενό. Εάν θέλουμε να μην τυπώνεται το κενό μετά το τελευταίο όρισμα, η πρόταση πρέπει να διαμορφωθεί όπως παρακάτω: for (i=1;i<argc;i argc;i++) printf( %s%s %s%s,argv[i],(i<argc-1)? 1)? : );

69 Ορίσματα γραμμής διαταγής Εάν χρησιμοποιήσουμε τη σημειολογία των δεικτών αντί αυτής του πίνακα, η πρόταση μπορεί να γραφεί ως εξής: while (--( --argc) printf( %s%s,*++argv,(i<argc-1)? 1)? : ); Εναλλακτικά, θα μπορούσαμε να γράψουμε: main(int argc,, char *argv* argv[]) while (--( --argc) printf( ( (argc( argc>1)? >1)? %s : %s,*++,*++argv ); Δυσνόητο; δοκιμάστε το!!

stdio.h> #include <string.h< string.h> void main() { char *px*

stdio.h> #include <string.h< string.h> void main() { char *px* Θέµα 1ο (25%) Για το πρόγραµµα που ακολουθεί να περιγραφεί αναλυτικά η λειτουργία του και να απεικονισθεί το περιεχόµενο των θέσεων µνήµης που καταλαµβάνουν οι µεταβλητές σε κάθε γραµµή κώδικα. Χάριν απλότητας

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΚΑΔΗΜΑΪΚΟ ΕΤΟΣ 2017-2018 ΧΕΙΜΕΡΙΝΟ ΕΞΑΜΗΝΟ ΜΑΘΗΜΑ: ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Εισαγωγή ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ Ένα πρόγραμμα σε C περιλαμβάνει μια ή περισσότερες συναρτήσεις

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

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

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

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

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

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

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

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( )

Κλήση Συναρτήσεων ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ. Γεώργιος Παπαϊωάννου ( ) ΚΛΗΣΗ ΣΥΝΑΡΤΗΣΕΩΝ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Μορφές μεταβίβασης ορισμάτων σε συναρτήσεις (και μεθόδους) και οι επιπτώσεις τους Επιστροφή τιμών από κλήση συναρτήσεων Υπερφόρτωση

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Δείκτες (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 Δήλωση Δήλωση Τύπος

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Υπολογιστών με C++

Προγραμματισμός Υπολογιστών με C++ Προγραμματισμός Υπολογιστών με C++ ( 2012-13 ) 5η διάλεξη Ίων Ανδρουτσόπουλος http://www.aueb.gr/users/ion/ 1 Τι θα ακούσετε σήμερα Πίνακες ως ορίσματα συναρτήσεων. Τα ορίσματα argc και argv της main.

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

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

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

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

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

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

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

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ

Εισαγωγή στον Προγραµµατισµό. Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Εισαγωγή στον Προγραµµατισµό Πανεπιστήµιο Θεσσαλίας Τµήµα Ηλεκτρολόγων Μηχανικών και Μηχανικών Η/Υ Συναρτήσεις 19.11.16 Β. Ντουφεξή 2 Προβλήματα: Οσο μεγαλώνουν τα προγράμματα, γίνονται πιο πολύπλοκα.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ ΣΥΝΑΡΤΗΣΕΙΣ ΣΤΗ C (1/3) +- Στη C χρησιμοποιούμε συχνα τις συναρτήσεις (functions),

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Η βασική συνάρτηση προγράμματος main()

Η βασική συνάρτηση προγράμματος main() Η βασική συνάρτηση προγράμματος main() HEADER FILES main(){ ΔΗΛΩΣΕΙΣ ΜΕΤΑΒΛΗΤΩΝ ΕΝΤΟΛΕΣ (σειριακές, επιλογής ή επανάληψης) ΕΠΙΣΤΡΕΦΟΜΕΝΟΣ ΤΥΠΟΣ (return 0;) Συναρτήσεις Η συνάρτηση είναι ένα υποπρόγραμμα

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

Εισαγωγή στον Προγραμματισμό (με. τη C)

Εισαγωγή στον Προγραμματισμό (με. τη C) Υποχρεωτικό Μάθημα 3 ου Εξαμήνου Χειμερινό Εξάμηνο Ακ. Έτους 20 Τμήμα Επιστήμης Υπολογιστών Πανεπιστήμιο Κρήτης Εισαγωγή στον Προγραμματισμό (με τη C) Διδάσκουσα: Φατούρου Παναγιώτα faturu [at] csd.uoc.gr

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

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δείκτες και Συναρτήσεις (Κεφάλαιο 11, KNK-2ED)

ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δείκτες και Συναρτήσεις (Κεφάλαιο 11, KNK-2ED) ΕΠΛ232 Προγραμματιστικές Τεχνικές και Εργαλεία Δείκτες και Συναρτήσεις (Κεφάλαιο 11, KNK-2ED) Τμήμα Πληροφορικής, Πανεπιστήμιο Κύπρου http://www.cs.ucy.ac.cy/courses/epl232 Το μάθημα αυτό δομήθηκε βάση

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

ΑΡΧΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

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

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 11: Δείκτες & Πίνακες Δείκτες και πίνακες Μια μεταβλητή «μονοδιάστατος πίνακας από αντικείμενα τύπου Τ» μπορεί να θεωρηθεί ως (είναι συντακτικά συμβατή με) μια μεταβλητή

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

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

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

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

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact:

ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II. Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact: ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ II Υφαντόπουλος Νικόλαος Υποψήφιος Διδάκτορας Contact: nifantop@unipi.gr Συναρτήσεις (1/2) Στη C χρησιμοποιούμε συχνά τις συναρτήσεις (functions), οι οποίες είναι ρουτίνες που επαναλαμβάνονται

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ηβασικήσυνάρτηση προγράμματος main()

Ηβασικήσυνάρτηση προγράμματος main() Ηβασικήσυνάρτηση προγράμματος main() HEADER FILES main(){ ΔΗΛΩΣΕΙΣ ΜΕΤΑΒΛΗΤΩΝ ΕΝΤΟΛΕΣ (σειριακές, επιλογής ή επανάληψης) ΕΠΙΣΤΡΕΦΟΜΕΝΟΣ ΤΥΠΟΣ (return 0;) Συναρτήσεις Ησυνάρτησηείναι ένα υποπρόγραμμα που

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

ΕΙΣΑΓΩΓΗ ΣΤΟN ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΕΙΣΑΓΩΓΗ ΣΤΟN ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΙΣΑΓΩΓΗ ΣΤΟN ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ Εμβέλεια Μεταβλητών Εμβέλεια = το τμήμα του προγράμματος στο οποίο έχει ισχύ ή είναι ορατή η μεταβλητή.

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

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

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

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

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

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

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

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

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

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

Α. 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) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

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

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

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

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

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

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

Α Β Γ static; printf("%c\n", putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf("*");

Α Β Γ static; printf(%c\n, putchar( A +1)+2); B DB BD. int i = 0; while (++i); printf(*); ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2016 (1/2/2016) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 9η: Πίνακες (arrays)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΗΥ-150. Προγραμματισμός ΗΥ-150 Προγραμματισμός Δείκτες (Pointers) Προγραμματισμός Δείκτες Τι είναι: τύπος μεταβλητών (όπως integer) Τι αποθηκεύουν: την διεύθυνση στη μνήμη άλλων μεταβλητών Τι χρειάζονται: Κυρίως, για δυναμική

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 2 η

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 2 η Δ.Π.Θ. - Πολυτεχνική Σχολή Τμήμα Μηχανικών Παραγωγής & Διοίκησης Ακαδ. έτος 2017-2018 Τομέας Συστημάτων Παραγωγής Εξάμηνο Β Αναπληρωτής Καθηγητής Στέφανος Δ. Κατσαβούνης ΜΑΘΗΜΑ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

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

Προγραμματισμός Ι (ΗΥ120) Προγραμματισμός Ι (ΗΥ120) Διάλεξη 3: Είσοδος / Έξοδος, Βασικοί Τύποι, Δήλωση Μεταβλητών Ένα Ακόμα Παράδειγμα #include int main(int argc, char* argv[]) { } putchar('h'); putchar('e'); putchar('l');

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128]

#include <stdlib.h> Α. [-128,127] Β. [-127,128] Γ. [-128,128] ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εξετάσεις Α Περιόδου 2017 (27/1/2017) ΟΝΟΜΑΤΕΠΩΝΥΜΟ:................................................................................ Α.Μ.:...............................................

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

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

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

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις (Functions) Οι βασικές λειτουργικές ενότητες ενός προγράμματος C Καλούνται με ορίσματα που αντιστοιχούνται σε

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

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

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

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

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

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

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

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

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

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