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

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

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

Transcript

1 ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ Δομές Δεδομένων (Εργ.) Ακ. Έτος Διδάσκων: Ευάγγελος Σπύρου Εργαστήριο 3 Επανάληψη Γ μέρος 1. Στόχος του εργαστηρίου Στόχος του τρίτου εργαστηρίου είναι η επανάληψη βασικών γνώσεων στη γλώσσα C. Όλες οι δομές δεδομένων που θα διδαχθούν στο εργαστήριο, θα αναπτυχθούν σε C. Για το λόγο αυτό, απαιτείται εξοικείωση με τις βασικές έννοιες προγραμματισμού που έχουν ήδη διδαχθεί. 2. Δείκτες Οι δείκτες είναι μια από τις σημαντικότερες, αλλά ίσως και η πιο δυσνόητη ενότητα της γλώσσας C. Όπως ίσως γνωρίζουμε, η μνήμη RAM ενός υπολογιστή αποτελείται από εκατομμύρια θέσεις αποθήκευσης δεδομένων. Κάθε θέση μνήμης μπορεί να αποθηκεύσει 8 bits δεδομένων. Προσδιορίζεται από μοναδικό αριθμό που ονομάζεται διεύθυνση μνήμης. Όταν δηλώνεται μια μεταβλητή, ο μεταγλωττιστής δεσμεύει τις απαραίτητες συνεχόμενες θέσεις στη μνήμη για να αποθηκεύσει την τιμή της. Όταν μια μεταβλητή καταλαμβάνει πολλές θέσεις μνήμης, τότε διεύθυνση μιας μεταβλητής θεωρείται ότι είναι η διεύθυνση της πρώτης θέσης μνήμης. Για παράδειγμα, όταν κάνουμε τη δήλωση int a = 10; ο μεταγλωττιστής βρίσκει τέσσερις ελεύθερες θέσεις μνήμης και τις δεσμεύει. Αν για παράδειγμα η διεύθυνση της μεταβλητής a αρχίζει στη θέση 5000, τότε η τιμή της θα αποθηκευτεί στις θέσεις από 5000 εώς και Ο μεταγλωττιστής συσχετίζει το όνομα μιας μεταβλητής με τη διεύθυνσή της. Όταν η μεταβλητή χρησιμοποιείται στο πρόγραμμα, ο μεταγλωττιστής προσπελαύνει τη διεύθυνσή της. Για παράδειγμα, με την εντολή a = 80; ο μεταγλωττιστής γνωρίζει ότι η διεύθυνση της a είναι η 5000 και θέτει το περιεχόμενό της ίσο με Δήλωση Δεικτών Ένας δείκτης είναι μια μεταβλητή στην οποία μπορεί να αποθηκευτεί μια διεύθυνση μνήμης και δηλώνεται ως εξής: τύπος_δεδομένων *όνομα_δείκτη; Για παράδειγμα με τη δήλωση int *ptr; η μεταβλητή ptr είναι ένας δείκτης σε τύπο int. Ο τύπος της έκφρασης *ptr είναι int. Στον ptr μπορεί να εκχωρηθεί η διεύθυνση κάποιας ακέραιας μεταβλητής. Πριν από το όνομα, πρέπει να προηγείται ο χαρακτήρας *. Παρομοίως με τη δήλωση double *ptr; μπορεί να εκχωρηθεί στο δείκτη ptr η διεύθυνση κάποιας πραγματικής μεταβλητής τύπου double. Οι δείκτες μπορούν να δηλώνονται και μαζί με άλλες μεταβλητές. Π.χ.:

2 int *ptr, i, j, k; Σημειώστε ότι το * μπορεί να τοποθετηθεί δίπλα στον τύπο (π.χ. int* ptr;), ωστόσο σε περίπτωση που επιθυμούμε να δηλώσουμε περισσότερους δείκτες, μπορεί να οδηγήσει σε σύγχυση. Για παράδειγμα με τη δήλωση: int* p1, p2; Ο p1 δηλώνεται σαν δείκτης, ο p2 όχι. Όπως και με τις απλές μεταβλητές, όταν δηλώνεται ένας δείκτης, ο μεταγλωττιστής δεσμεύει τις απαραίτητες θέσεις μνήμης για να αποθηκεύσει την τιμή του. Θυμηθείτε, ότι με τον τελεστή sizeof μπορούμε να δούμε πόσες οκτάδες μνήμης δεσμεύονται από έναν δείκτη: #include<stdio.h> int *ptr; printf("bytes: %lu\n", sizeof(ptr)); 4. Απόδοση τιμής σε δείκτη Αφού δηλώσουμε έναν δείκτη, μπορούμε να του εκχωρήσουμε τη διεύθυνση μνήμης κάποιας μεταβλητής. Για να βρούμε τη διεύθυνση μιας μεταβλητής, χρησιμοποιούμε τον τελεστή & (address operator), πριν από το όνομά της. Για παράδειγμα: int *ptr, a; ptr = &a; printf("address= %p\n", ptr); Εδώ, με την εντολή ptr = &a; η τιμή του δείκτη ptr γίνεται ίση με τη διεύθυνση της μεταβλητής a και συνηθίζεται να λέμε ότι ο ptr "δείχνει" στο a. Συνήθως, για την εμφάνιση μιας διεύθυνσης μνήμης χρησιμοποιείται το %p το οποίο και την εμφανίζει σε δεξαεξαδική μορφή. Η απευθείας ανάθεση μιας ακέραιας τιμής σε έναν δείκτη είναι πολύ πιθανό να προκαλέσει σφάλμα μεταγλώττισης:

3 int *ptr; ptr = 10000; Δοκιμάστε το για να δείτε πώς συμπεριφέρεται ο μεταγλωττιστής που χρησιμοποιείτε. Η ανάθεση τιμής σε έναν δείκτη μπορεί να γίνει ταυτόχρονα με τη δήλωσή του, αρκεί να έχει προηγηθεί η δήλωση της μεταβλητής στην οποία θα δείχνει ο δείκτης: int a, b, *ptr = &a; Ο τελεστής & δεν μπορεί να εφαρμοστεί σε σταθερές και παραστάσεις, αλλά μόνο σε στοιχεία που είναι στη μνήμη, όπως μεταβλητές, στοιχεία πίνακα και συναρτήσεις. 5. Μηδενικοί δείκτες Υπενθυμίζεται ότι η αρχική τιμή μιας μεταβλητής είναι το περιεχόμενο της διεύθυνσης μνήμης της. Επομένως, μια μεταβλητή-δείκτης αρχικοποιείται με μια τυχαία τιμή που αντιστοιχεί σε κάποια διεύθυνση μνήμης. Όταν θέλουμε να δηλώσουμε ρητά ότι ένας δείκτης δεν δείχνει πουθενά, του αναθέτουμε μια ειδική τιμή και πλέον ο δείκτης λέγεται "μηδενικός δείκτης" (null pointer). Αυτή η τιμή είναι το 0 και αντιπροσωπεύεται από τη σταθερά NULL (δηλώνεται στο stdio.h). Δείτε τι θα τυπώσει το παρακάτω παράδειγμα: int *ptr; printf("addr= %p\n", ptr); ptr = NULL; printf("addr= %p\n", ptr); H τιμή ενός δείκτη μπορεί να συγκριθεί με την τιμή NULL ως εξής: if (ptr!= NULL) //ισοδύναμο με if(ptr) if (ptr == NULL) //ισοδύναμο με if(!ptr) 6. Χρήση Δείκτη Για να προσπελάσουμε το περιεχόμενο κάποιας διεύθυνσης μνήμης με χρήση δείκτη χρησιμοποιούμε τον τελεστή * (dereference/indirection operator) πριν από το όνομα του δείκτη. Προσοχή, δεν έχει σχέση με πολλαπλασιασμό, αν και είναι το ίδιο σύμβολο. Δείτε το παρακάτω παράδειγμα:

4 int *ptr, a; a = 10; ptr = &a; printf("val= %d\n", *ptr); Η έκφραση *ptr ισοδυναμεί με το περιεχόμενο της διεύθυνσης στην οποία δείχνει ο ptr. Αφού ο ptr δείνχει στη διεύθυνση της μεταβλητής a, το *ptr θα είναι ίσο με την τιμή του a. Άρα το πρόγραμμα θα εμφανίσει 10. Δείτε το παρακάτω πρόγραμμα που θα εμφανίσει μήνυμα λάθους, καθώς ο ptr δεν δείχνει στη διεύθυνση κάποιας μεταβλητής, προτού χρησιμοποιηθεί στην εντολή a = *ptr; int *ptr, a; a = *ptr; printf("val = %d\n", a); To επόμενο πρόγραμμα ωστόσο εκτελείται κανονικά, καθώς ο ptr δείχνει στη διεύθυνση κάποιας μεταβλητής προτού χρησιμοποιηθεί στην εντολή i = *ptr; int *ptr, i, j; j = 20; ptr = &j; i = *ptr; printf("val = %d\n", i);

5 Προσοχή: οι τελεστές * και & αλληλοαναιρούνται, όταν χρησιμοποιούνται μαζί. Δείτε τι θα εμφανίσει το παρακάτω πρόγραμμα: int *ptr, i; ptr = &i; printf("%p %p %p\n", &i, *&ptr, &*ptr); Άσκηση 3.1 Ποια είναι η έξοδος του παρακάτω προγράμματος; int *ptr, i = 10; ptr = &i; i += 20; printf("%d\n", *ptr); Άσκηση 3.2 Να γραφεί ένα πρόγραμμα το οποίο να διαβάζει δύο ακεραίους, να δηλώνει δύο δείκτες προς αυτούς και να εμφανίζει τις διευθύνσεις μνήμης των ακεραίων μεταβλητών, τα περιεχόμενα των δεικτών και τις διευθύνσεις μνήμης των δεικτών. int *ptr1, *ptr2, i, j; printf("enter numbers: "); scanf("%d%d", &i, &j); ptr1 = &i; ptr2 = &j; printf("num1 address= %p\n", ptr1);

6 printf("num2 address= %p\n", ptr2); printf("ptr1 content= %d\n", *ptr1); printf("ptr2 content= %d\n", *ptr2); printf("ptr1 address= %p\n", &ptr1); printf("ptr2 address= %p\n", &ptr2); Άσκηση 3.3 Ο σκοπός του παρακάτω προγράμματος είναι να διαβάσει έναν πραγματικό αριθμό με χρήση δείκτη και να τον εμφανίσει. Υπάρχει λάθος στον κώδικα; double *ptr, i; scanf("%lf", ptr); printf("val= %f\n", *ptr); Άσκηση 3.4 Να γραφεί ένα πρόγραμμα το οποίο με χρήση δείκτη να διαβάζει μια πραγματική τιμή και να εμφανίζει την απόλυτη τιμή της. double *p, val; p = &val; printf("enter number: "); scanf("%lf", p); if (*p >= 0) printf("%f\n", *p); else printf("%f\n", *p);

7 Άσκηση 3.5 Να γραφεί ένα πρόγραμμα το οποίο με χρήση δεικτών να διαβάζει δύο πραγματικές τιμές και να τις αντιμεταθέτει. Στη συνέχεια να εμφανίζει τη μεγαλύτερη τιμή. Άσκηση 3.6 Ποια είναι η έξοδος του παρακάτω προγράμματος; int *ptr1, i = 10; double *ptr2, j = 1.234; ptr1 = &i; ptr2 = &j; *ptr1 = *ptr2; printf("%d %lu %lu %lu\n", i, sizeof(ptr1), sizeof(ptr2), sizeof(*ptr2)); Άσκηση 3.7 Ποια είναι η έξοδος του παρακάτω προγράμματος; int *ptr1, *ptr2, i = 10, j = 20; ptr1 = &i; ptr2 = &j; ptr2 = ptr1; *ptr1 = *ptr1 + *ptr2; *ptr2 *= 2; printf("%d\n", *ptr1+*ptr2);

8 7. Αριθμητική Δεικτών Η αριθμητική δεικτών αφορά την εκτέλεση αριθμητικών πράξεων με δείκτες. Σύμφωνα με το πρότυπο, η αριθμητική δεικτών παράγει αξιόπιστα αποτελέσματα όταν εφαρμόζεται σε στοιχεία του ίδιου πίνακα, αλλιώς το αποτέλεσμα είναι απροσδιόριστο. Οι επιτρεπτές πράξεις είναι η πρόσθεση ακέραιου σε δείκτη, η αφαίρεση ακεραίου από δείκτη και η αφαίρεση δύο δεικτών. Η πρόσθεση ενός θετικού ακεραίου n σε έναν δείκτη σε μια εντολή όπως: ptr = ptr + n; αυξάνει την τιμή του δείκτη κατά n*μέγεθος του τύπου στον οποίο δείχνει και τον κάνει να δείχνει στη διεύθυνση του n-οστού στοιχείου μετά από αυτό που έδειχνε. Αν το αποτέλεσμα της πράξης είναι εκτός των ορίων του πίνακα, το αποτέλεσμα είναι απροσδιόριστο. Δείτε το παρακάτω πρόγραμμα: int *ptr, arr[] = 10, 20, 30; ptr = &arr[0]; printf("addr: %p\n", ptr); ptr = ptr+2; printf("addr: %p Val: %d\n", ptr, *ptr); Παρόμοια με την πρόσθεση, η αφαίρεση ενός θετικού ακεραίου από έναν δείκτη σε μια εντολή εκχώρησης όπως: ptr = ptr n; μειώνει την τιμή του κατά n * μέγεθος του τύπου του και θα δείχνει στη διεύθυνση του n-οστού στοιχείου πριν από αυτό που έδειχνε. Δοκιμάστε να τροποποιήσετε κατάλληλα το προηγούμενο πρόγραμμα. Σημειώστε ότι αν ο δείκτης δεν δείχνει σε στοιχείο πίνακα, η εφαρμογή των τελεστών ++/ είναι έγκυρη και προκαλεί την αύξηση/μείωση του δείκτη κατά το μέγεθος του τύπου στον οποίο δείχνει. Δείτε το παρακάτω παράδειγμα: double *ptr, i;

9 ptr = &i; ptr++; printf("addr:%d\n", ptr); ptr ; printf("addr:%d\n", ptr); Το πρόγραμμα εμφανίζει δύο διευθύνσεις με την πρώτη να είναι μεγαλύτερη κατά 8 θέσεις από τη δεύτερη. Η συνδυαστική χρήση των τελεστών ++/ με τον τελεστή * είναι πολύ συνηθισμένη στη διαχείριση πινάκων με χρήση δείκτη. Το αποτέλεσμα της έκφρασης εξαρτάται από τη θέση των τελεστών με βάση τον πίνακα προτεραιοτήτων. Υπάρχουν οι εξής περιπτώσεις: i = (*ptr)++; πρώτα εκχωρείται η τιμή του *ptr στο i και έπειτα αυξάνεται η τιμή του *ptr κατά ένα i = *ptr++; πρώτα εκχωρείται η τιμή του *ptr στο i και έπειτα αυξάνεται η τιμή του ptr ανάλογα με τον τύπο του i = ++*ptr; πρώτα αυξάνεται κατά ένα η τιμή του *ptr και μετά αυτή εκχωρείται στο i i = *++ptr; πρώτα αυξάνεται η τιμή του ptr και μετά αυτή εκχωρείται στο i η τιμή του *ptr Το αποτέλεσμα της αφαίρεσης δεικτών είναι ο αριθμός των στοιχείων που μεσολαβούν μεταξύ τους. Οι δείκτες πρέπει να δείχνουν σε στοιχεία του ίδιου πίνακα ή στην αμέσως επόμενη θέση από το τέλος του πίνακα. Αν η τιμή του δείκτη που αφαιρείται είναι μεγαλύτερη, τότε το αποτέλεσμα θα είναι το ίδιο, απλά με αρνητικό πρόσημο. Για παράδειγμα, αν ο p1 δείχνει στο δεύτερο στοιχείο και ο p2 στο πέμπτο στοιχείο του ίδιου πίνακα, το αποτέλεσμα της p2 p1 είναι 3, ενώ της p1 p2 είναι 3. Το αποτέλεσμα της σύγκρισης δύο δεικτών με τους τελεστές == και!= είναι αξιόπιστο. Με τους τελεστές <, <=, > και >= το αποτέλεσμα θεωρείται αξιόπιστο αν οι δείκτες δείχνουν στο ίδιο αντικείμενο, π.χ. πίνακας ή δομή, αλλιώς είναι απροσδιόριστο. Για παράδειγμα, η τιμή του p2 > p1 είναι 1. Άσκηση 3.8 Ποια είναι η έξοδος του παρακάτω προγράμματος; int *ptr, i = 0; for(ptr = &i; *ptr < 5; i++)

10 (*ptr)++; ++*ptr; printf("%d ", i); Άσκηση 3.9 Να γραφεί ένα πρόγραμμα το οποίο με χρήση δεικτών να διαβάζει τους βαθμού ενός φοιτητή σε τρεις εργασίες. Αν και οι τρεις βαθμοί είναι μεγαλύτεροι ή ίσοι του 5, το πρόγραμμα να τους εμφανίζει με αύξουσα σειρά, διαφορετικά να εμφανίζει το μέσο όρο τους. 9. Δείκτες και Πίνακες Όπως έχουμε αναφέρει, τα στοιχεία ενός πίνακα αποθηκεύονται σε διαδοχικές θέσεις μνήμης, με το πρώτο στοιχείο στη χαμηλότερη διεύθυνση. Τα επόμενα στοιχεία αποθηκεύονται στις υψηλότερες διευθύνσεις σύμφωνα με τον τύπο δεδομένων του πίνακα. Για παράδειγμα σε έναν πίνακα χαρακτήρων, οι διευθύνσεις των στοιχείων απέχουν μεταξύ τους μία οκτάδα ενώ σε έναν πίνακα ακεραίων τέσσερις(;) οκτάδες. Σημειώνουμε ότι η στενή σχέση πίνακα και δείκτη βασίζεται στο ότι το όνομα ενός πίνακα μπορεί να χρησιμοποιηθεί ως δείκτης στο πρώτο στοιχείο του πίνακα. Έστω η δήλωση int arr[3]; Αν θεωρήσουμε ότι η διεύθυνση του πρώτου στοιχείου είναι η θέση 100, η τιμή του πρώτου στοιχείου αποθηκεύεται στις θέσεις , η τιμή του δεύτερου στοιχείου στις θέσεις και του τρίτου στις θέσεις Παρόμοια, η έκφραση arr+1 είναι ένας δείκτης που δείχνει στο δεύτερο στοιχείο του πίνακα κ.ο.κ. Στη γενική περίπτωση, οι ακόλουθες εκφράσεις είναι ισοδύναμες: arr = &arr[0] arr + 1 == &arr[1] arr + 2 == &arr[2]... arr + n == &arr[n] Δηλαδή, το παρακάτω πρόγραμμα εμφανίζει την ίδια τιμή. int *ptr, arr[5]; ptr = arr; printf("%p %p %p %p\n", ptr, &arr[0], arr, &arr);

11 Σημειώστε ότι η τελευταία έκφραση &arr αν και εμφανίζει την ίδια τιμή με τις υπόλοιπες, είναι διαφορετική. Ισοδυναμεί με έναν δείκτη σε όλον τον πίνακα, ενώ οι υπόλοιπες με έναν δείκτη στο πρώτο στοιχείο του. Αφού το όνομα ενός πίνακα μπορεί να χρησιμοποιηθεί σαν δείκτης στο πρώτο στοιχείο του, το περιεχόμενό του θα είναι ίσο με την τιμή του πρώτου στοιχείου. Δηλαδή, η τιμή του *arr είναι ίση με arr[0]. Παρόμοια, αφού το arr+1 είναι ένας δείκτης στο δεύτερο στοιχείο του πίνακα, το *(arr+1) είναι ίσο με arr[1] κ.ο.κ. Στη γενική περίπτωση, οι ακόλουθες εκφράσεις είναι ισοδύναμες: *arr = arr[0] *(arr+1) == arr[1] *(arr+2) == arr[2]... *(arr+n) == arr[n] Οι παρενθέσεις είναι απαραίτητες γιατί ο τελεστής * έχει μεγαλύτερη προτεραιότητα από τον +. Δηλαδή οι εκφράσεις *(arr+n) και *arr+n εκτελούνται με διαφορετικό τρόπο. Δείτε για παράδειγμα το παρακάτω πρόγραμμα: int *ptr, arr[] = 10, 20, 30, 40, 50; ptr = arr; printf("val1= %d Val2 = %d\n", *ptr+2, *(ptr+2)); Με την εντολή ptr = arr; η τιμή του ptr γίνεται ίση με τη διεύθυνση του arr[0], άρα η τιμή του *ptr είναι ίση με arr[0] δηλαδή 10. Αφού ο τελεστής * έχει μεγαλύτερη προτεραιότητα από τον τελεστή +, το αποτέλεσμα της *ptr+2 είναι 10+2=12. Αντίθετα, η έκφραση *(ptr+2) ισοδυναμεί με το περιεχόμενο της διεύθυνσης που δείχνει ο ptr, αυξημένης κατά δύο θέσεις ακεραίων. Δηλαδή το *(ptr+2) είναι ισοδύναμο με το arr[2]. Άρα το πρόγραμμα θα εμφανίσει Val1 = 12 Val2 = 30. Προσοχή: δεν γράφουμε ptr = &arr; γιατί το ptr είναι δείκτης σε ακέραιο, ενώ το &arr αντιστοιχεί σε δείκτη σε πίνακα. Δείτε στο επόμενο πρόγραμμα πώς μπορούμε να εμφανίσουμε τις διευθύνσεις μνήμης και τις τιμές των στοιχείων του πίνακα arr με δύο διαφορετικούς τρόπους: int i, arr[] = 10, 20, 30, 40, 50;

12 printf("using array notation:\n"); for(i = 0; i < 5; i++) printf("addr = %p Val = %d\n", &arr[i], arr[i]); printf("using pointer notation:\n"); for(i = 0; i < 5; i++) printf("addr = %p Val = %d\n", arr+i, *(arr+i)); Με τον πρώτο τρόπο χρησιμοποιούμε τη θέση του στοιχείου στον πίνακα, με τον δεύτερο το όνομα του πίνακα σαν δείκτη. Ο πρώτος τρόπος οδηγεί σε πιο ευανάγνωστο κώδικα. Άσκηση 3.10 Ποια είναι η έξοδος του παρακάτω προγράμματος: #include<stdio.h> int i = 10, *p = &i; p[0] = 50; printf("%d\n", i); Άσκηση 3.11 Ποια είναι η έξοδος του παρακάτω προγράμματος: #include<stdio.h> int i, *ptr1, *ptr2, arr[] = 10, 20, 30, 40, 50, 60, 70; ptr1 = &arr[2]; ptr2 = &arr[4]; for(i = ptr2 ptr1; i < 5; i+=2) printf("%d ", ptr1[i]);

13 Άσκηση 3.12 Να γραφεί ένα πρόγραμμα το οποίο να διαβάζει τους βαθμούς 10 φοιτητών, να τους αποθηκεύει σε έναν πίνακα και να εμφανίζει τη μικρότερη και τη μεγαλύτερη τιμή, καθώς και τις θέσεις της πρώτης εμφάνισης τους στον πίνακα. Το πρόγραμμα να ελέγχει εάν ο εισαγόμενος βαθμός ανήκει στο [0, 10]. Η διαχείριση του πίνακα να γίνει με σημειογραφία δείκτη. 10. Πίνακας δεικτών Ένας πίνακας δεικτών είναι ένα πίνακας που τα στοιχεία του είναι δείκτες στον ίδιο τύπο δεδομένων. Για να δηλώσουμε έναν πίνακα δεικτών, χρησιμοποιούμε το * πριν από το όνομα του πίνακα. Για παράδειγμα με τη δήλωση: int *p[3]; o πίνακας p περιέχει τρία στοιχεία, όπου το καθένα από αυτά είναι δείκτης σε μια ακέραια μεταβλητή. Τα στοιχεία ενός πίνακα δεικτών τα χειριζόμαστε με τον ίδιο τρόπο όπως και τους απλούς δείκτες. Π.χ.: #include<stdio.h> int *p[3], i = 100, j = 200, k = 300; p[0] = &i; p[1] = &j; p[2] = &k; printf("%d %d %d\n", *p[0], *p[1], *p[2]); Άσκηση 3.13 Ποια είναι η έξοδος του παρακάτω προγράμματος; int *p[3], i, num; for(i = 0; i < 3; i++) printf("enter number: "); scanf("%d", &num);

14 p[i] = &num; for(i = 0; i < 3; i++) printf("num: %d\n", *p[i]); Άσκηση 3.14 Ποια είναι η έξοδος του παρακάτω προγράμματος; int *p[3], i, arr[4] = 10, 20, 30, 40; for(i = 0; i < 3; i++) p[i] = &arr[i] + 1; printf("%d ", *p[i]); 11. Δείκτης σε δείκτη Όταν δηλώνεται ένας δείκτης, ο μεταγλωττιστής δεσμεύει τις απαραίτητες θέσεις μνήμης, όπως κάνει για οποιαδήποτε μεταβλητή, για να αποθηκεύσει την τιμή του. Επομένως, αφού δεσμευτεί μια διεύθυνση μνήμης για έναν δείκτη, μπορούμε να δηλώσουμε έναν άλλο δείκτη που δείχνει προς την ίδια διεύθυνση. Για να δηλώσουμε μια μεταβλητή που είναι δείκτης σε δείκτη, χρησιμοποιούμε δύο φορές το *. Π.χ. με τη δήλωση: int **p; η μεταβλητή pp δηλώνεται σαν δείκτης προς κάποιον άλλον δείκτη, ο οποίος με τη σειρά του δείχνει προς μια ακέραια μεταβλητή. Αν έχουμε δηλώσει ένα δείκτη σε δείκτη, τότε με ένα * αποκτούμε πρόσβαση στη διεύθυνση του δεύτερου δείκτη, ενώ με διπλό ** στην τιμή της μεταβλητής που δείχνει ο δεύτερος δείκτης. Δείτε π.χ. το ακόλουθο πρόγραμμα: int *p, **pp, i = 20; p = &i;

15 pp = &p; printf("%d\n", **pp); Η συνηθέστερη χρήση ενός δείκτη σε δείκτη είναι όταν επιθυμούμε μια συνάρτηση να μπορεί να μεταβάλει την τιμή κάποιου δείκτη. Γενικά επιτρέπονται πολλαπλές δηλώσεις δεικτών προς δείκτες, αλλά συνήθως δεν γίνεται υπέρβαση των δύο επιπέδων. Άσκηση 3.15 Ποια είναι η έξοδος του παρακάτω προγράμματος; int *p, **pp, i = 10, j = 20; p = &i; pp = &p; **pp += 100; p = &j; **pp += 100; printf("%d\n", i+j); Άσκηση 3.16 Ποιες τιμές αποκτούν τα στοιχεία του πίνακα a στο παρακάτω πρόγραμμα; int k = 0, b = 1, c = 2, d = 3, m, a[3]; int *p[] = &k, &b, &c, &d; for(m = 0; m < 3; m++) a[*p[m]] = **(p+m+1);

16 13. Συναρτήσεις Στην υποενότητα αυτή θα θυμηθούμε τα βασικά για τη δήλωση, την υλοποίηση και τη χρήση συναρτήσεων. Θυμίζουμε ότι μια συνάρτηση είναι ένα ανεξάρτητο τμήμα κώδικα που εκτελεί μια ορισμένη εργασία και προαιρετικά επιστρέφει μια τιμή Η συγγραφή προγραμμάτων με χρήση συναρτήσεων που εκτελούν ανεξάρτητες εργασίες είναι η βάση του δομημένου προγραμματισμού. Η δήλωση (ή πρωτότυπο) μιας συνάρτησης καθορίζει το όνομα της συνάρτησης, τον τύπο επιστροφής και μια λίστα παραμέτρων. Η γενική μορφή δήλωσης μιας συνάρτησης είναι: τύπος_επιστροφής όνομα_συνάρτησης(λίστα_παραμέτρων) Καλό είναι να χρησιμοποιείτε περιγραφικά ονόματα για τις συναρτήσεις σας, βοηθώντας έτσι τον αναγνώστη του κώδικά σας να κατανοεί ευκολότερα τον σκοπό τους. Συνήθως, οι δηλώσεις των συναρτήσεων περιέχονται σε ξεχωριστό αρχείο. Για παράδειγμα, οι συναρτήσεις βιβλιοθήκης δηλώνονται σε διάφορα αρχεία επικεφαλίδας. Για κάθε συνάρτηση βιβλιοθήκης που χρησιμοποιούμε στα προγράμματά μας, συμπεριλαμβάνουμε με την οδηγία #include το αρχείο που περιέχει τη δήλωσή της. Μια συνάρτηση μπορεί να επιστρέψει το πολύ μια τιμή. Ο τύπος_επιστροφής καθορίζει τον τύπο της τιμής επιστροφής. Μπορεί να είναι οποιοσδήποτε τύπος δεδομένων (char, int, float κτλ.) ή δείκτης σε κάποιον τύπο. Προσοχή: μια συνάρτηση δεν μπορεί να επιστρέψει κάποιον πίνακα, αλλά μπορεί να επιστρέψει δείκτη σε πίνακα. Συνήθως, αν ο τύπος επιστροφής της συνάρτησης παραλειφθεί, θεωρείται ότι η συνάρτηση επιστρέφει int. Για να δηλώσουμε ότι μια συνάρτηση δεν επιστρέφει κάποια τιμή, χρησιμοποιούμε τη δεσμευμένη λέξη void. Μια συνάρτηση μπορεί να δέχεται μια λίστα παραμέτρων, οι οποίες χωρίζονται μεταξύ τους με κόμμα. Κάθε παράμετρος χαρακτηρίζεται από τον τύπο της. Η παράμετρος είναι ουσιαστικά μια μεταβλητή της συνάρτησης, η οποία θα αρχικοποιηθεί με μία τιμή, όταν γίνει η κλήση της. Όταν μια συνάρτηση δεν δέχεται παραμέτρους, η λίστα παραμέτρων μπορεί να δηλωθεί ως void, προκειμένου να υπάρχει πλήρης συμφωνία με το πρότυπο. Δείτε τα παρακάτω παραδείγματα: void show(char ch); double show(int a, float b); int* show(int *p, double a); Τα ονόματα των μεταβλητών δεν είναι υποχρεωτικά, αρκεί ο τύπος τους. Μπορούμε έτσι να γράψουμε ισοδύναμα: void show(char);

17 double show(int, float); int* show(int*, double); Ένα συνηθισμένο λάθος είναι ο τύπος να δηλώνεται μια φορά, όταν οι παράμετροι έχουν τον ίδιο τύπο. Π.χ. το παρακάτω είναι λάθος: void test(int a, b, c); Το σωστό είναι: void test(int a, int b, int c); (ή και χωρίς τα ονόματα: void test(int, int, int); 14. Ορισμός συνάρτησης H γενική μορφή του ορισμού μιας συνάρτησης είναι: τύπος_επιστροφής όνομα_συνάρτησης(λίστα_παραμέτρων) /* σώμα συνάρτησης */ Η πρώτη γραμμή πρέπει να ταιριάζει με τη δήλωση της συνάρτησης με τη διαφορά ότι δεν προστίθεται το ερωτηματικό στο τέλος της. Ο κώδικας (σώμα) της συνάρτησης περιέχει δηλώσεις μεταβλητών και εντολές και βρίσκεται ανάμεσα σε άγκιστρα. Εκτελείται μόνο στην περίπτωση που η συνάρτηση κληθεί από κάποιο σημείο του προγράμματος. Η εκτέλεση τερματίζει αν κληθεί μια εντολή τερματισμού (π.χ. return) ή όταν εκτελεστεί η τελευταία εντολή της. Ας δούμε ένα παράδειγμα: void test(void); // δήλωση συνάρτησης test(); // κλήση συνάρτησης void test(void) // ορισμός συνάρτησης // σώμα συνάρτησης printf("in\n");

18 Το πρόγραμμα θα εμφανίσει In. H C δεν απαιτεί οι ορισμοί των συναρτήσεων να γίνονται μετά τη main(), πολλές φορές αυτό προτιμάται, καθώς διευκολύνεται η ανάγνωση του προγράμματος. Το πρωτότυπο μιας συνάρτησης είναι υποχρεωτικό εφόσον ο ορισμός της βρίσκεται μετά την κλήση της. Μια συνάρτηση δεν μπορεί να ορίζεται μέσα σε κάποια άλλη. Επειδή μια συνάρτηση ενδέχεται να καλεί κάποια άλλη, χρειάζεται προσοχή στη σειρά ορισμού τους. 15. Κλήση συνάρτησης Η κλήση μιας συνάρτησης που δεν δέχεται παραμέτρους γίνεται γράφοντας το όνομά της ακολουθούμενο από κενές παρενθέσεις. Στη συνάρτηση δεν μεταβιβάζεται κάποια πληροφορία. Δείτε ξανά το προηγούμενο παράδειγμα. Στην περίπτωση που η συνάρτηση δέχεται παραμέτρους, αυτό σημαίνει ότι της μεταβιβάζεται πληροφορία μέσω των ορισμάτων της (arguments). Η διαφορά μεταξύ παραμέτρου και ορίσματος είναι ότι ο όρος παράμετρος αναφέρεται στις μεταβλητές που εμφανίζονται στον ορισμό της συνάρτησης, ενώ ο όρος όρισμα αναφέρεται στις εκφράσεις που περιέχονται στην κλήση της συνάρτησης. Για παράδειγμα, δείτε το παρακάτω πρόγραμμα: int test(int x, int y); int sum, a = 10, b = 20; sum = test(a, b); printf("%d\n", sum); int test(int x, int y) return x+y; Αν επιθυμούμε μια συνάρτηση να μπορεί να αλλάξει την τιμή κάποιου ορίσματος, πρέπει να μεταβιβάσουμε στη συνάρτηση τη διεύθυνση μνήμης του ορίσματος και όχι την τιμή του. Επομένως, αφού η συνάρτηση έχει πρόσβαση στη διεύθυνση μνήμης του ορίσματος, μπορεί να μεταβάλλει την τιμή του. Δείτε π.χ. το ακόλουθο πρόγραμμα: void test(int *p);

19 int i = 10; test(&i); printf("%d\n", i); void test(int *p) *p = 20; Όταν γίνεται η κλήση της test() έχουμε p = &i. Αφού η τιμή του p είναι ίση με τη διεύθυνση μνήμης του i, τότε η test() μπορεί να αλλάξει την τιμή του. Έτσι η εντολή *p = 20 αλλάζει το περιεχόμενο της διεύθυνσης, άρα και την τιμή του i από 10 σε 20, το οποίο και εμφανίζεται από το πρόγραμμα. 16. Κλήση συνάρτησης με παράμετρο πίνακα Όταν η παράμετρος μιας συνάρτησης είναι ένας μονοδιάστατος πίνακας, γράφουμε το όνομα του πίνακα ακολουθούμενο από αγκύλες. Η συνήθης τακτική είναι να παραλείπουμε το μήκος του πίνακα και οι αγκύλες να είναι κενές. Π.χ.: void test(int arr[]); Όταν μεταβιβάζεται ένας πίνακας σε μια συνάρτηση γράφουμε μόνο το όνομα του πίνακα χωρίς τις αγκύλες. Π.χ.: test (arr); Όταν το όνομα ενός πίνακα μεταβιβάζεται σε μια συνάρτηση, ουσιαστικά χρησιμοποιείται σν δείκτης. Ουσιαστικά μεταβιβάζεται ένας δείκτης στο πρώτο του στοιχείο και όχι ένα αντίγραφο του πίνακα. Αυτό γίνεται για καλύτερη απόδοση. Δείτε πώς γίνεται, στο παρακάτω παράδειγμα: void test(int arr[]); int i, a[5] = 10, 20, 30, 40, 50; test(a); for(i = 0; i < 5; i++) printf("%d ", a[i]);

20 void test(int arr[]) arr[0] = arr[1] = 0; Όταν καλείται η test(), έχουμε arr = a = &a[0], άρα οι arr[0] και arr[1] αλλάζουν τις τιμές των δύο πρώτων στοιχείων του πίνακα.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

a = 10; a = k; int a,b,c; a = b = c = 10;

a = 10; a = k; int a,b,c; a = b = c = 10; C: Από τη Θεωρία στην Εφαρµογή Κεφάλαιο 4 ο Τελεστές Γ. Σ. Τσελίκης Ν. Δ. Τσελίκας Ο τελεστής εκχώρησης = Ο τελεστής = χρησιµοποιείται για την απόδοση τιµής (ή αλλιώς ανάθεση τιµής) σε µία µεταβλητή Π.χ.

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

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

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

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Συναρτήσεις της C Τα Λοιπά Στοίβα και μηχανισμός κλήσης Αναδρομικές συναρτήσεις Στατικές μεταβλητές Άλλα θέματα Μηχανισμός

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Μάθημα 5ο Τμήμα Διοίκησης Επιχειρήσεων α εξάμηνο Β. Φερεντίνος Πίνακες 77 Στατική δομή αποθήκευσης δεδομένων (το μέγεθος ορίζεται εξαρχής και δεν αλλάζει) Αποθήκευση πολλών μεταβλητών

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

for for for for( . */

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2ο σετ σημειώσεων. 1 Εντολές εκτέλεσης υπό συνθήκη. 19 Μαρτίου 2012

2ο σετ σημειώσεων. 1 Εντολές εκτέλεσης υπό συνθήκη. 19 Μαρτίου 2012 ο σετ σημειώσεων 19 Μαρτίου 01 1 Εντολές εκτέλεσης υπό συνθήκη Μπορούμε να εκτελέσουμε εντολές της γλώσσας σε περίπτωση που κάποια συνθήκη ισχύει χρησιμοποιώντας την εντολή if. Συντάσσεται ως εξής: 1 if

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ο βρόχος for Η εντολή for χρησιμοποιείται για τη δημιουργία επαναληπτικών βρόχων στη C

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

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

ΚΕΦΑΛΑΙΟ 10 ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

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

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

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

Προγραμματισμός Ι (HY120) Προγραμματισμός Ι (HY120) #6 εκτέλεση σε επανάληψη 1 Σπύρος Λάλης Εκτέλεση σε επανάληψη: while while () lexpr body true false Όσο η λογική συνθήκη επανάληψης lexpr αποτιμάται σε μια τιμή

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

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

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

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

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

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

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

Εντολές ελέγχου ροής if, for, while, do-while

Εντολές ελέγχου ροής if, for, while, do-while Εντολές ελέγχου ροής if, for, while, do-while 1 Μαρτίου 014 1 Εντολές εκτέλεσης υπό συνθήκη Μπορούμε να εκτελέσουμε εντολές της γλώσσας σε περίπτωση που κάποια συνθήκη ισχύει χρησιμοποιώντας την εντολή

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

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

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

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

10 η Διάλεξη C++ - Πίνακες. Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

10 η Διάλεξη C++ - Πίνακες. Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ 10 η Διάλεξη C++ - Πίνακες Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ Ανακεφαλαίωση Κατά την κλήση μιας συνάρτησης κατ αξία οι τιμές των ορισμάτων αντιγράφονται στις αντίστοιχες τυπικές παραμέτρους

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ 032 2 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ Ενδιάμεση Εξέταση Ημερομηνία:08/03/10 Διάρκεια: 13:30 15:00 Διδάσκων: Παύλος Αντωνίου Ονοματεπώνυμο: Αριθμός Ταυτότητας: Η εξέταση

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

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

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

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

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

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

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

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

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

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

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ

Επανάληψη για τις Τελικές εξετάσεις. (Διάλεξη 24) ΕΠΛ 032: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕΘΟΔΩΝ ΕΠΙΛΥΣΗΣ ΠΡΟΒΛΗΜΑΤΩΝ Επανάληψη για τις Τελικές εξετάσεις (Διάλεξη 24) Εισαγωγή Το μάθημα EPL032 έχει ως βασικό στόχο την επίλυση προβλημάτων πληροφορικής με την χρήση της γλώσσας προγραμματισμού C. Επομένως πρέπει: Nα κατανοήσετε

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

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

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

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

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

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

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

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

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

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

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

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

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