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

Save this PDF as:
 WORD  PNG  TXT  JPG

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

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

Transcript

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

2 Τι είναι ο δείκτης Ένας δείκτης είναι μια μεταβλητή που περιέχει μια διεύθυνση μνήμης. Θυμηθείτε πως η μνήμη μοιάζει με έναν μονοδιάστατο πίνακα Στο παράδειγμα που βλέπετε η θέση μνήμης 1024 περιέχει την τιμή Χαροκόπειο Πανεπιστήμιο 2/59

3 Δήλωση Δείκτη σε C Το "*" χρησιμοποιείται για να δηλώσει δείκτη: int *p ; Η παραπάνω δήλωση δημιουργεί μια μεταβλητή τύπου δείκτη σε ακέραιο (pointer to int). Χαροκόπειο Πανεπιστήμιο 3/59

4 Δήλωση Δείκτη σε C Το "*" χρησιμοποιείται για να δηλώσει δείκτη: int *p ; Η παραπάνω δήλωση δημιουργεί μια μεταβλητή τύπου δείκτη σε ακέραιο (pointer to int). Το όνομα αυτής της μεταβλητής είναι p. Χαροκόπειο Πανεπιστήμιο 3/59

5 Δήλωση Δείκτη σε C Το "*" χρησιμοποιείται για να δηλώσει δείκτη: int *p ; Η παραπάνω δήλωση δημιουργεί μια μεταβλητή τύπου δείκτη σε ακέραιο (pointer to int). Το όνομα αυτής της μεταβλητής είναι p. Η τιμή της μεταβλητής είναι μία διεύθυνση μνήμης. Χαροκόπειο Πανεπιστήμιο 3/59

6 Ανάθεση Τιμής σε Δείκτη Όπως όλες τις άλλες μεταβλητές στην C πρέπει να αρχικοποιήσουμε έναν δείκτη. Για να βρούμε την διεύθυνση μνήμης μιας μεταβλητής χρησιμοποιούμε τον τελεστή &. int main ( ) { int a ; int *ptr ; a = 99; ptr = &a ; } return 0 ; Χαροκόπειο Πανεπιστήμιο 4/59

7 Ανάθεση Τιμής σε Δείκτη Για να βρούμε την διεύθυνση μνήμης μιας μεταβλητής χρησιμοποιούμε τον τελεστή &. int main ( ) { int a ; int *ptr ; a = 99; ptr = &a ; a } return 0 ; 1024 ptr Με αυτόν τον τρόπο ο δείκτης ptr "δείχνει" στην μεταβλητή a. Η τιμή της μεταβλητής ptr είναι η διεύθυνση μνήμης της μεταβλητής a. Χαροκόπειο Πανεπιστήμιο 5/59

8 Η Τιμή 0 και η Τιμή NULL Για να μην δείχνει ένας δείκτης κάπου πρέπει να του αναθέσουμε την τιμή 0. Η βιβλιοθήκη της C ορίζει μια σταθερά με όνομα NULL για να συμβολίσει το γεγονός πως ένας δείκτης δεν δείχνει πουθενά. int main ( ) { int *ptr = 0 ; / /... } return 0 ; ή #include < s t d i o. h> int main ( ) { int * ptr = NULL ; / /... } return 0 ; Χαροκόπειο Πανεπιστήμιο 6/59

9 Τελεστής Έμμεσης Αναφοράς Indirection/dereferencing operator Μπορούμε να ακολουθήσουμε ένα δείκτη με την χρήση του τελεστή έμμεσης αναφοράς, "*"; int main ( ) { int a ; int *ptr ; a = 99; ptr = &a ; } printf ( "%d\n", *ptr ) ; return 0 ; a Η έκφραση *ptr μας δίνει την μεταβλητή στην θέση μνήμης που δείχνει ο δείκτης ptr ptr Στην προκειμένη περίπτωση είναι η μεταβλητή a. Χαροκόπειο Πανεπιστήμιο 7/59

10 Προτεραιότητα Τελεστών.1 παρενθέσεις: () [] expr++ expr Υπολογίζονται πρώτα, από τα αριστερά προς τα δεξιά. Εάν υπάρχουν ένθετες υπολογίζονται πρώτα οι εσωτερικές..2 μοναδιαίοι τελεστές: + ++expr expr! * & Υπολογίζονται από δεξιά προς τα αριστερά..3 πολλαπλασιασμός, διαίρεση και υπόλοιπο: * / % Υπολογίζονται δεύτερα από αριστερά προς τα δεξιά..4 πρόσθεση, αφαίρεση: + Εάν υπάρχουν πολλοί, υπολογίζονται από τα αριστερά προς τα δεξιά..5 Σχεσιακοί: < > <= >= Υπολογίζονται από τα αριστερά προς τα δεξιά..6 Ισότητας: ==!= Υπολογίζονται από τα αριστερά προς τα δεξιά..7 λογικό AND: && Από αριστερά προς τα δεξιά..8 λογικό OR: Από αριστερά προς τα δεξιά..9 εκχώρησης: = += = *= /= %= Από δεξιά προς τα αριστερά. Χαροκόπειο Πανεπιστήμιο 8/59

11 Τελεστής Έμμεσης Αναφοράς Indirection/dereferencing operator 1 int main ( ) { 2 int a, b ; 3 int * ptr_to_a, * ptr_to_b ; 4 5 a = 99; 6 ptr_to_a = &a ; 7 ptr_to_b = &b ; 8 9 * ptr_to_b = * ptr_t_a ; 10 printf ( "%d\n", *ptr_to_b ) ; return 0 ; 13 } a b ptr to a ptr to b Η γραμμή 10 είναι ουσιαστικά η γραμμή: 10 b = a ; ενώ η 11 είναι 12 printf ( "%d\n", b ) ; Χαροκόπειο Πανεπιστήμιο 9/59

12 Τελεστής Έμμεσης Αναφοράς Indirection/dereferencing operator 1 int main ( ) { 2 int a, b ; 3 int * ptr_to_a, * ptr_to_b ; 4 5 a = 99; 6 ptr_to_a = &a ; 7 ptr_to_b = &b ; 8 9 * ptr_to_b = * ptr_t_a ; 10 printf ( "%d\n", *ptr_to_b ) ; return 0 ; 13 } a b ptr to a ptr to b Η γραμμή 10 είναι ουσιαστικά η γραμμή: 10 b = a ; ενώ η 11 είναι 12 printf ( "%d\n", b ) ; Χαροκόπειο Πανεπιστήμιο 9/59

13 Δείκτες Άλλων Τύπων Στην γλώσσα C μπορούμε να έχουν δείκτες σε οποιαδήποτε μεταβλητή ανεξάρτητα από τον τύπο της. Πρέπει όμως να δηλώσουμε τον δείκτη ανάλογα. 1 #include < s t d i o. h> 2 3 int main ( ) { 4 double pi ; 5 double * ptr = &pi ; 6 7 * ptr = ; 8 printf ( "%lf\n", pi ) ; 9 10 return 0 ; 11 } Αντίστοιχα και με τους υπόλοιπους τύπους. Χαροκόπειο Πανεπιστήμιο 10/59

14 Πολλοί Δείκτες, σε μια Μεταβλητή 1 int main ( ) { 2 int a ; 3 int *ptr1, *ptr2 ; 4 5 a = 99; 6 ptr1 = &a ; 7 ptr2 = &a ; 8 9 ( * ptr1 ) + + ; 10 ( * ptr2 ) + + ; printf ( "%d\n", a ) ; 13 return 0 ; 14 } a ptr1 ptr2 Η γραμμές 10 και 11 είναι ουσιαστικά η γραμμή: a++; Χαροκόπειο Πανεπιστήμιο 11/59

15 Πολλοί Δείκτες, σε μια Μεταβλητή 1 int main ( ) { 2 int a ; 3 int *ptr1, *ptr2 ; 4 5 a = 99; 6 ptr1 = &a ; 7 ptr2 = &a ; 8 9 ( * ptr1 ) + + ; 10 ( * ptr2 ) + + ; printf ( "%d\n", a ) ; 13 return 0 ; 14 } a ptr1 ptr2 Η γραμμές 10 και 11 είναι ουσιαστικά η γραμμή: a++; Το πρόγραμμα θα εκτυπώσει 101. Χαροκόπειο Πανεπιστήμιο 11/59

16 Εκτύπωση της Τιμή Ενός Δείκτη Η τιμή ενός δείκτη είναι μια διεύθυνση μνήμης. Για να τυπώσουμε την τιμή ενός δείκτη η printf() μας παρέχει την επιλογή %p. 1 #include < s t d i o. h> 2 3 int main ( ) { 4 int a = 5 ; 5 int * ptr = &a ; 6 7 printf ( "address of a is %p\n", ptr ) ; 8 9 return 0 ; 10 } Στο σύστημα του ομιλητή το πρόγραμμα τυπώνει: address of a is 0x7fff5bc2d5cc Χαροκόπειο Πανεπιστήμιο 12/59

17 Συχνά Λάθη Δήλωση Πολλαπλών Δεικτών Προσοχή όταν ορίζετε πολλούς δείκτες στην ίδια γραμμή. int* ptr1, ptr2, ptr3 ; Το αστεράκι ανήκει ουσιαστικά στο όνομα και όχι στον τύπο. Η παραπάνω γραμμή ορίζει 1 δείκτη σε ακέραιο με όνομα ptr1 και δύο ακεραίους με ονόματα ptr2 και ptr3. Για να ορίσουμε 3 δείκτες σε ακέραιο πρέπει να γράψουμε: int *ptr1, *ptr2, *ptr3 ; Χαροκόπειο Πανεπιστήμιο 13/59

18 Συχνά Λάθη Δείκτης και το Αντικείμενο 1 #include < s t d i o. h> 2 3 int main ( ) { 4 int a = 10, b = 20; 5 int *p1, *p2 ; 6 7 p1 = &a ; 8 p2 = &b ; 9 10 *p1 = *p2 ; 11 p1 = p2 ; 12 *p1 = *p2 ; return 0 ; 15 } η γραμμή 11 είναι ισοδύναμη με a = b. η γραμμή 12 αναθέτει την διεύθυνση του b στον δείκτη p1. Οι δύο δείκτες δείχνουν στο b. η γραμμή 13 είναι ισοδύναμη με b = b. Χαροκόπειο Πανεπιστήμιο 14/59

19 Συχνά Λάθη Προτεραιότητα Τελεστών 1 #include < s t d i o. h> 2 3 int main ( ) { 4 int x, *p ; 5 6 p = &x ; / * i n i t i a l i s e p o i n t e r * / 7 *p = 0 ; / * set x t o zero * / 8 printf ( "x is %d\n", x ) ; 9 printf ( "*p is %d\n", *p ) ; *p += 1 ; / * increment what p p o i n t s t o * / 12 printf ( "x is %d\n", x ) ; ( * p ) + + ; / * increment what p p o i n t s t o * / 15 printf ( "x is %d\n", x ) ; return 0 ; 18 } Προσοχή η γραμμή 14 θέλει παρενθέσεις, αφού ο τελεστής postfix ++ έχει μεγαλύτερη προτεραιότητα από τον τελεστή *. Χαροκόπειο Πανεπιστήμιο 15/59

20 Κλήση Συνάρτησης Μέσω Αναφοράς Με την χρήση δεικτών μπορούμε να κάνουμε κλήση μέσω αναφοράς στην C. Θυμηθείτε πως στην C οι παράμετροι μιας συνάρτησης αντιγράφονται σε προσωρινές τοπικές μεταβλητές πριν κληθεί η συνάρτηση. Θα κάνουμε μια μικρή παρένθεση και θα εξηγήσουμε τον τρόπο λειτουργίας των κλήσεων συναρτήσεων. Χαροκόπειο Πανεπιστήμιο 16/59

21 Κλήση Συναρτήσεων Stack Frame Για να μπορούμε να υποστηρίζουμε κλήση συναρτήσεων ο μεταγλωττιστής παράγει κώδικα που χρησιμοποιεί την λεγόμενη στοίβα κλήσεων. Η στοίβα κλήσεων είναι υπεύθυνη για να αποθηκεύει διάφορες πληροφορίες όπως: την διεύθυνση επιστροφής μετά την συνάρτηση, τις παραμέτρους της συνάρτησης, τις τοπικές μεταβλητές της συνάρτησης, κ.τ.λ Χαροκόπειο Πανεπιστήμιο 17/59

22 Κλήση Συναρτήσεων Stack Frame Κάθε φορά που καλείται μια συνάρτηση προστίθεται στην κορυφή της στοίβας μια εγγραφή που περιέχει τις τοπικές μεταβλητές της συνάρτησης την διεύθυνση επιστροφής τις παραμέτρους της συνάρτησης Μόλις τελειώσει η εκτέλεση της συνάρτησης αφαιρείται η τελευταία εγγραφή, και άρα καταστρέφονται όλες οι τοπικές μεταβλητές και παράμετροι. Ο κώδικας δημιουργίας και καταστροφής των εγγραφών αυτών παράγεται από τον μεταγλωττιστή και προστίθεται σε κάθε σημείο του προγράμματος που γίνεται κλήση συνάρτησης. τοπικές μεταβλητές συνάρτησης διεύθυνση επιστροφής παράμετροι συνάρτησης τοπικές μεταβλητές συνάρτησης διεύθυνση επιστροφής παράμετροι συνάρτησης Χαροκόπειο Πανεπιστήμιο 18/59

23 Κλήση Συνάρτησης Μέσω Αναφοράς Για να υλοποιήσουμε κλήση μέσω αναφοράς στην C χρησιμοποιούμε δείκτες. Δίνουμε ως παράμετρο σε μια συνάρτηση ένα δείκτη στην μεταβλητή που θέλουμε να περάσουμε στην συνάρτηση. Μέσω του δείκτη αλλάζουμε την τιμή της μεταβλητής που θέλουμε Μόλις επιστρέψει η συνάρτηση η παράμετρος (δείκτης) θα καταστραφεί αλλά η μεταβλητή μας θα έχει αλλάξει κανονικά τιμή. Χαροκόπειο Πανεπιστήμιο 19/59

24 Κλήση Συνάρτησης Μέσω Αναφοράς 1 #include < s t d i o. h> 2 3 void increase ( int * x ) { 4 ( * x ) + + ; 5 } 6 7 int main ( ) { 8 int a = 1 ; 9 10 increase(&a ) ; 11 printf ( "%d\n", a ) ; return 0 ; 14 } Η μεταβλητή x δείχνει στην μεταβλητή που θέλουμε να περάσουμε ως παράμετρο. Μέσα στην συνάρτηση αλλάζουμε την μεταβλητή μας χρησιμοποιώντας *x. Με το τέλος της συνάρτησης η τοπική μεταβλητή x θα καταστραφεί, αλλά η μεταβλητή a θα έχει αλλάξει τιμή. Το παραπάνω πρόγραμμα τυπώνει 2. Χαροκόπειο Πανεπιστήμιο 20/59

25 Κλήση Συνάρτησης Μέσω Αναφοράς 1 #include < s t d i o. h> 2 3 void swap ( int *a, int *b ) { 4 int tmp = * a ; 5 *a = *b ; 6 *b = tmp ; 7 } 8 9 int main ( ) { 10 int x = 1, 11 y = 2 ; swap(&x, &y ) ; printf ( "x = %d\n", x ) ; 16 printf ( "y = %d\n", y ) ; return 0 ; 19 } Το πρόγραμμα τυπώνει x = 2 y = 1 Χαροκόπειο Πανεπιστήμιο 21/59

26 Δείκτες και const Θυμηθείτε πως με την δεσμευμένη λέξη const λέμε στον μεταγλωττιστή πως κάτι δεν πρέπει να αλλάξει. Επειδή όταν ασχολούμαστε με δείκτες έχουμε ουσιαστικά 2 αντικείμενα:.1 ένα δείκτη και.2 εκεί που δείχνει ο δείκτης η χρήση του const είναι λίγο πιο πολύπλοκη. Χαροκόπειο Πανεπιστήμιο 22/59

27 Δείκτες και const Υπάρχουν 3 χρήσεις:.1 const int * ptr ; Δείκτης σε σταθερό ακέραιο. Ο δείκτης μπορεί να αλλάξει τιμή, ο ακέραιος όχι..2 int * const ptr ; Σταθερός δείκτης σε ακέραιο. Ο δείκτης δεν μπορεί να αλλάξει τιμή, ο ακέραιος μπορεί..3 const int * const ptr ; Σταθερός δείκτης σε σταθερό ακέραιο. Ούτε ο δείκτης αλλά ούτε και ο ακέραιος μπορεί να αλλάξει τιμή. Είναι εύκολο να διακρίνεται τις περιπτώσεις κοιτώντας δεξιά και αριστερά του αστερίσκου για την δεσμευμένη λέξη const. Χαροκόπειο Πανεπιστήμιο 23/59

28 Δείκτες και const Παράδειγμα 1 #include < s t d i o. h> 2 3 int main ( ) { 4 const int y = 5 ; 5 const int x = 3 ; 6 7 const int * ptr = &y ; ( * ptr ) + + ; / / NO! 11 ptr = &x ; / / ok 12 } Ο μεταγλωττιστής δεν μας επιτρέπει να γράψουμε την γραμμή 9. Χαροκόπειο Πανεπιστήμιο 24/59

29 Δείκτες και const Παράδειγμα 1 #include < s t d i o. h> 2 3 int main ( ) { 4 int y = 5 ; 5 int x = 3 ; 6 7 int * const ptr = &y ; ( * ptr ) + + ; / / ok 11 ptr = &x ; / / NO! 12 } Ο μεταγλωττιστής δεν μας επιτρέπει να γράψουμε την γραμμή 11. Χαροκόπειο Πανεπιστήμιο 25/59

30 Δείκτες και const Παράδειγμα 1 #include < s t d i o. h> 2 3 int main ( ) { 4 const int y = 5 ; 5 const int x = 3 ; 6 7 const int * const ptr = &y ; ( * ptr ) + + ; / / NO! 11 ptr = &x ; / / NO! 12 } Ο μεταγλωττιστής δεν μας επιτρέπει να γράψουμε τις γραμμές 9 και 11. Χαροκόπειο Πανεπιστήμιο 26/59

31 Λάθη και casts Προσοχή με τα casts. 1 #include < s t d i o. h> 2 3 int main ( ) { 4 int i ; 5 const int ci = 123; 6 7 const int *cpi ; / / p o i n t e r t o const 8 int *ncpi ; 9 10 cpi = &ci ; 11 ncpi = &i ; cpi = ncpi ; / / allowed / / t h i s needs a cast u s u a l l y BIG MISTAKE 16 ncpi = ( int * ) cpi ; * ncpi = 0 ; / / UNDEFINED BEHAVIOR!! 19 } Χαροκόπειο Πανεπιστήμιο 27/59

32 Δείκτες και Πίνακες Οι πίνακες και οι δείκτες είναι πολύ στενά συνδεδεμένοι στην C. Για να δηλώσουμε ένα πίνακα ακεραίων μεγέθους 10 με όνομα a γράφουμε: int a [ 1 0 ] ; a : a[0] a[1] a[9] Χαροκόπειο Πανεπιστήμιο 28/59

33 Δείκτες και Πίνακες Εάν ο pa είναι ένας δείκτης σε ακέραιο int *pa ; τότε η ανάθεση pa = &a [ 0 ] ; βάζει τον pa να δείχνει στο μηδενικό στοιχείο του πίνακα a. pa : a : a[0] a[1] a[9] Χαροκόπειο Πανεπιστήμιο 29/59

34 Δείκτες και Πίνακες Από τον ορισμό, η τιμή μιας μεταβλητής ή έκφρασης τύπου πίνακα είναι η διεύθυνση του μηδενικού στοιχείου του πίνακα. Έτσι μετά την ανάθεση pa = &a [ 0 ] ; ο pa και ο a έχουν ακριβώς την ίδια τιμή. Επειδή το όνομα ενός πίνακα είναι συνώνυμο με την τοποθεσία του μηδενικού του στοιχείου, η τελευταία ανάθεση μπορεί να γραφεί και ως pa = a ; Χαροκόπειο Πανεπιστήμιο 30/59

35 Δείκτες και Πίνακες Επειδή το όνομα ενός πίνακα είναι συνώνυμο με την τοποθεσία του μηδενικού του στοιχείου, μπορούμε να κάνουμε και dereference. 1 #include < s t d i o. h> 2 3 int main ( ) { 4 int a [ ] = { 9, 8, 7, 6, 5, 4, 3, 2, 1 } ; 5 6 printf ( "%d\n", *a ) ; 7 *a = 11; 8 printf ( "%d\n", a [ 0 ] ) ; 9 10 return 0 ; 11 } Το παραπάνω πρόγραμμα τυπώνει 9 11 Χαροκόπειο Πανεπιστήμιο 31/59

36 Δείκτες και Πίνακες Ένας δείκτης μπορεί να δείχνει σε μια μεταβλητή ενός πίνακα. #include < s t d i o. h> a ptr int main ( ) { int a [ ] = { 9, 8, 7, 6, 5 } ; int *ptr = &a [ 2 ] ; printf ( "%d\n", *ptr ) ; } return 0 ; Το παραπάνω πρόγραμμα τυπώνει 7 Χαροκόπειο Πανεπιστήμιο 32/59

37 Αριθμητική Δεικτών Έχοντας ένα δείκτη σε ένα στοιχείο ενός πίνακα, μπορούμε να κάνουμε αριθμητική δεικτών. #include < s t d i o. h> int main ( ) { int a [ ] = { 9, 8, 7, 6, 5 } ; int *ptr = &a [ 1 ] ; int *ptr1 = ptr + 2 ; printf ( "%d\n", *ptr ) ; printf ( "%d\n", *ptr1 ) ; a ptr ptr1 } return 0 ; Το παραπάνω πρόγραμμα τυπώνει 8 6 Χαροκόπειο Πανεπιστήμιο 33/59

38 Αριθμητική Δεικτών Στην αριθμητική δεικτών μπορούμε να προσθέσουμε ή να αφαιρέσουμε. Όταν γράφουμε p+1 όπου p είναι ένας δείκτης, το αποτέλεσμα είναι ένας δείκτης που δείχνει μια θέση μετά την θέση που δείχνει ο p. Πόσο μακρύτερα δείχνει ο p+1 από τον p εξαρτάται από τον τύπο δεδομένων που δείχνει ο p. Εαν ο p είναι ένας δείκτης σε ακεραίους τότε η θέση μνήμης p+1 θα είναι 4 bytes μετά την θέση p. Εαν όμως ο p δείχνει σε char τότε θα είναι μόλις 1 byte μετά. Χαροκόπειο Πανεπιστήμιο 34/59

39 Δείκτες και Πίνακες Όταν γράφουμε a[i] στην C, γίνεται η μετατροπή σε *(a+i). Οι δύο αυτές μορφές είναι ισοδύναμες. Χρησιμοποιώντας τον τελεστή & και στις δύο μορφές προκύπτει πως τα &a[i] a+i είναι επίσης ισοδύναμα. a+i είναι η διεύθυνση του i στοιχείου μετά το a. Παρόμοια έχοντας ένα δείκτη pa = &a[0] η έκφραση pa[2] είναι ισοδύναμη με *(pa + 2). Άρα μπορούμε να χρησιμοποιήσουμε ένα δείκτη με τον τελεστή []. Χαροκόπειο Πανεπιστήμιο 35/59

40 Δείκτες και Πίνακες Επειδή γράφοντας a[i] στην C, γίνεται η μετατροπή σε *(a+i), το ίδιο γίνεται και γράφοντας i[a]. a[i] *((a) + (i)) *((i) + (a)) i[a] (ορισμός) (αντιμεταθετικότητα πρόσθεσης) (ορισμός) Αυτό το γεγονός επιτρέπει να γράφουμε "περίεργο" κώδικα σε διαγωνισμούς "περίεργου" κώδικα C. Για παράδειγμα η έκφραση 5["abcdef" ] είναι απόλυτα σωστή και είναι ουσιαστικά ο χαρακτήρας 'f'. Χαροκόπειο Πανεπιστήμιο 36/59

41 Αριθμητική Δεικτών Αντιγραφή Συμβολοσειρών 1 void mystrcpy ( char * dest, const char * src ) { 2 char *dp = &dest [ 0 ], 3 *sp = &src [ 0 ] ; 4 5 while ( * sp!= '\0' ) 6 *dp++ = *sp++; 7 8 *dp = '\0' ; 9 } Η έκφραση *dp++ κάνει dereference τον δείκτη dp και μετά κάνει dp=dp+1. Για να αυξήσει την μεταβλητή που δείχνει ο dp πρέπει να γραφεί ως (*dp)++. Χαροκόπειο Πανεπιστήμιο 37/59

42 Αριθμητική Δεικτών Αντιγραφή Συμβολοσειρών Όταν κάνουμε αριθμητική δεικτών πρέπει να προσέχουμε να μην ξεφύγουμε εκτός πίνακα. 1 #include < s t d i o. h> 2 3 int main ( ) { 4 int a [ ] = { 1, 2, 3, 4, 5 } ; 5 int *p = &a [ 2 ] ; 6 7 printf ( "%d\n", * ( p + 4 ) ) ; 8 9 return 0 ; 10 } Επειδή δεν γνωρίζουμε τι περιέχει και σε ποιον ανήκει η μνήμη εκτός του πίνακα, μπορεί να συμβεί οτιδήποτε. Χαροκόπειο Πανεπιστήμιο 38/59

43 Αριθμητική Δεικτών Μια μικρή εξαίρεση Όταν κάνουμε αριθμητική δεικτών μπορούμε να χρησιμοποιήσουμε για σύγκριση (όχι όμως και να κάνουμε dereference) την θέση που ακολουθεί αμέσως μετά το τέλος ενός πίνακα. 1 #include < s t d i o. h> 2 3 int main ( ) { 4 int a [ ] = { 1, 2, 3, 4, 5 } ; 5 6 int *it = &a [ 0 ], 7 *end = it + 5 ; 8 9 while ( it < end ) { 10 printf ( "%d\n", *it + + ) ; 11 } return 0 ; 14 } a it end Χαροκόπειο Πανεπιστήμιο 39/59

44 Αριθμητική Δεικτών Μια μικρή εξαίρεση 1 #include < s t d i o. h> 2 3 int main ( ) { 4 int a [ ] = { 1, 2, 3, 4, 5 } ; 5 6 int *it = &a [ 0 ], 7 *end = it + 5 ; 8 9 while ( it < end ) { 10 printf ( "%d\n", *it + + ) ; 11 } return 0 ; 14 } a it end Στον παραπάνω κώδικα που τυπώνει όλα τα στοιχεία ενός πίνακα, ο δείκτης end δείχνει αμέσως μετά το τέλος του πίνακα. Είναι επιτρεπτό να κάνουμε την σύγκριση it < end. Ο κώδικας είναι σωστός αρκεί να μην κάνουμε ποτέ *end. Χαροκόπειο Πανεπιστήμιο 39/59

45 Αριθμητική Δεικτών Μπορούμε να κάνουμε και αφαίρεση δεικτών. a 1 #include < s t d i o. h> 2 3 int main ( ) { 4 int a [ ] = { 1, 2, 3, 4, 5 } ; 5 int *ptr1 = &a [ 0 ], 6 *ptr2 = &a [ 4 ] ; 7 8 printf ( "%d", ptr2 ptr1 ) ; 9 10 return 0 ; 11 } ptr1 ptr2 Τι εκτυπώνει ο παραπάνω κώδικας; Χαροκόπειο Πανεπιστήμιο 40/59

46 Δείκτες και Πίνακες Υπάρχει μια διαφορά μεταξύ του ονόματος ενός πίνακα και ενός δείκτη που πρέπει πάντα να θυμόμαστε. Ένας δείκτης είναι μια μεταβλητή και άρα εκφράσεις όπως pa = a ; ή pa++; είναι σωστές. Το όνομα ενός πίνακα όμως δεν είναι μεταβλητή και άρα οι αντίστοιχες a = pa ; ή a++; δεν επιτρέπονται. Χαροκόπειο Πανεπιστήμιο 41/59

47 Δείκτες, Πίνακες και Συναρτήσεις Όταν ένας πίνακας δίνεται σε μια συνάρτηση, ουσιαστικά δίνεται η θέση του πρώτου στοιχείου του πίνακα. Μέσα στην συνάρτηση, η παράμετρος είναι τοπική μεταβλητή, και άρα είναι ένας δείκτης. Οι παρακάτω δύο δηλώσεις είναι λοιπόν ισοδύναμες int strlen ( char s [ ] ) ; και int strlen ( char *s ) ; και καλό είναι να χρησιμοποιούμε τον δεύτερο τρόπο μιας και εξηγεί το γεγονός πως η παράμετρος s είναι δείκτης και όχι πίνακας. Χαροκόπειο Πανεπιστήμιο 42/59

48 Δείκτες, Πίνακες και Συναρτήσεις Είναι δυνατό να περάσουμε μέρος ενός πίνακα σε μια συνάρτηση, περνώντας ένα δείκτη στην αρχή του υποπίνακα. Για παράδειγμα εάν a είναι ένας πίνακας, τότε f(&a [ 2 ] ) και f ( a+2) περνάνε στην συνάρτηση την διεύθυνση του υποπίνακα που ξεκινά στο a[2]. Χαροκόπειο Πανεπιστήμιο 43/59

49 Δείκτες, Πίνακες και Συναρτήσεις Η συνάρτηση μπορεί να γραφεί ως f ( int arr [ ] ) {... } ή f ( int *arr ) {... } Η συνάρτηση f δεν διαφοροποιείται επειδή η παράμετρος αναφέρεται σε κομμάτι μεγαλύτερου πίνακα. Εάν κάποιος είναι σίγουρος πως τα στοιχεία υπάρχουν, μπορεί να χρησιμοποιήσει και αρνητικές διευθύνσεις όπως p[ 1] ή p[ 2]. Είναι φυσικά λάθος να βγεί κάποιος εκτός πίνακα. Χαροκόπειο Πανεπιστήμιο 44/59

50 Πίνακες Δεικτών Όπως μπορούμε να έχουμε πίνακες διαφόρων τύπων, με τον ίδιο τρόπο μπορούμε να έχουμε και πίνακες δεικτών. Η σύνταξη είναι λίγο πιο πολύπλοκη. Η παρακάτω εντολή δηλώνει ένα πίνακα με 10 δείκτες σε ακεραίους. int *a [ 1 0 ] ; Χαροκόπειο Πανεπιστήμιο 45/59

51 Πίνακες Δεικτών Παράδειγμα 1 #include < s t d i o. h> 2 3 int main ( ) { 4 int i ; 5 int a [ 5 ] = { 0, 1, 2, 3, 4 } ; 6 int *ptr [ 5 ] ; 7 8 for ( i = 0 ; i < 5 ; i++) 9 ptr [ i ] = &a[4 i ] ; for ( i = 0 ; i < 5 ; i++) 12 printf ( "%2d", *ptr [ i ] ) ; return 0 ; 15 } a ptr Ο κώδικας τυπώνει Χαροκόπειο Πανεπιστήμιο 46/59

52 Δείκτες σε Συναρτήσεις Η C εκτός από δείκτες σε τύπους μας επιτρέπει να έχουμε και δείκτες σε συναρτήσεις. Αυτό είναι επιτρεπτό αφού και οι συναρτήσεις είναι κάπου φορτωμένες στην μνήμη. Για να δηλώσουμε ένα δείκτη σε συνάρτηση, ο τύπος του δείκτη πρέπει να περιγράφει τις παραμέτρους και τον τύπο επιστροφής της συνάρτησης. int ( * ptr ) ( int, double ) ; Η παραπάνω εντολή δηλώνει ένα δείκτη σε συνάρτηση που πέρνει ως παραμέτρους έναν int και έναν double και επιστρέφει int. Το όνομα του δείκτη είναι ptr. Χαροκόπειο Πανεπιστήμιο 47/59

53 Δείκτες σε Συναρτήσεις Παρακάτω δηλώνουμε ένα δείκτη με όνομα ptr που μπορεί να δείχνει σε συνάρτηση που πέρνει μια παράμετρο τύπου int και επιστρέφει void. 1 #include < s t d i o. h> 2 3 void print ( int x ) { 4 printf ( "%d\n", x ) ; 5 } 6 7 int main ( ) { 8 void ( * ptr ) ( int ) ; 9 10 ptr = &print ; return 0 ; 13 } Για να δείξει κάπου ο δείκτης χρησιμοποιούμε τον τελεστή διεύθυνσης &. Για παράδειγμα ptr = &print. Η C για ευκολία μας επιτρέπει να γράψουμε και ptr = print με το ίδιο αποτέλεσμα. Χαροκόπειο Πανεπιστήμιο 48/59

54 Δείκτες σε Συναρτήσεις 1 #include < s t d i o. h> 2 3 void print ( int x ) { 4 printf ( "%d\n", x ) ; 5 } 6 7 int main ( ) { 8 void ( * ptr ) ( int ) ; 9 10 ptr = &print ; 11 ( * ptr ) ( 5 ) ; return 0 ; 14 } Για να χρησιμοποιήσουμε ένα δείκτη σε συνάρτηση τον κάνουμε dereference και δίνουμε παραμέτρους, π.χ (*ptr)(5). Η C για ευκολία μας επιτρέπει να γράψουμε και ptr(5) με το ίδιο αποτέλεσμα. Χαροκόπειο Πανεπιστήμιο 49/59

55 Δείκτες σε Συναρτήσεις 1 #include < s t d i o. h> 2 3 void foo ( int x ) { 4 printf ( "foo %d\n", x ) ; 5 } 6 7 void bar ( int y ) { 8 printf ( "bar %d\n", y ) ; 9 } int main ( ) { 12 void ( * ptr ) ( int ) ; ptr = &foo ; 15 ( * ptr ) ( 5 ) ; ptr = &bar ; 18 ( * ptr ) ( 5 ) ; return 0 ; 21 } Ο κώδικας καλεί μέσω ενός δείκτη τις 2 συναρτήσεις foo() και bar(). Χαροκόπειο Πανεπιστήμιο 50/59

56 Δείκτες σε Συναρτήσεις Παράμετροι Συναρτήσεων 1 #include < s t d i o. h> 2 3 void print ( int x, void ( * ptr ) ( int ) ) { 4 ( * ptr ) ( x ) ; 5 } 6 7 void foo ( int x ) { 8 printf ( "foo %d\n", x ) ; 9 } void bar ( int y ) { 12 printf ( "bar %d\n", y ) ; 13 } int main ( ) { 16 print ( 5, &foo ) ; 17 print ( 5, &bar ) ; return 0 ; 20 } Μπορούμε να περάσουμε ένα δείκτη συνάρτησης ως παράμετρο σε άλλη συνάρτηση. Ο κώδικας καλεί πρώτα την foo() και μετά την bar(). Χαροκόπειο Πανεπιστήμιο 51/59

57 Επιστροφή Δείκτη Συνάρτησης Είναι λίγο πολύπλοκη η σύνταξη αλλά μπορούμε να γράψουμε το εξής: float ( * getfunction ( const char code ) ) ( float, float ) { / / code here } Που ορίζει μια συνάρτηση με όνομα getfunction η οποία πέρνει ως παράμετρο ένα χαρακτήρα τύπου const char, επιστρέφει ένα δείκτη σε συνάρτηση που έχει 2 float παραμέτρους και με την σειρά της επιστρέφει τύπο float. Χαροκόπειο Πανεπιστήμιο 52/59

58 Επιστροφή Δείκτη Συνάρτησης Παράδειγμα 1 #include < s t d i o. h> 2 3 float minus ( float f1, float f2 ) { return f1 f2 ; } 4 5 float plus ( float f1, float f2 ) { return f1+f2 ; } 6 7 float ( * getfunction ( const char code ) ) ( float, float ) 8 { 9 if ( code == '+' ) 10 return &plus ; 11 else if ( code == '-' ) 12 return &minus ; 13 return NULL ; 14 } int main ( ) { 17 float f ; 18 f = ( * getfunction ( '+' ) ) ( 2. 0, 1. 0 ) ; 19 f = ( * getfunction ( '-' ) ) ( f, 1. 0 ) ; 20 printf ( "%f\n", f ) ; return 0 ; 23 } Χαροκόπειο Πανεπιστήμιο 53/59

59 Πίνακες Δεικτών Συναρτήσεων Μπορούμε να έχουμε και πίνακες με δείκτες συναρτήσεων. Η σύνταξη είναι πάλι κάπως παράξενη. Παρακάτω φαίνεται πως μπορούμε να δηλώσουμε ένα πίνακα 10 θέσεων που κάθε θέση είναι ένας δείκτης σε μια συνάρτηση που επιστρέφει int και πέρνει 3 παραμέτρους float, char και char. int ( * funcarr [ 1 0 ] ) ( float, char, char ) ; Το όνομα του πίνακα είναι funcarr. Χαροκόπειο Πανεπιστήμιο 54/59

60 Πίνακες Δεικτών Συναρτήσεων 1 #include < s t d i o. h> 2 3 void foo1 ( int x ) { printf ( "foo1 %d\n", x ) ; } 4 void foo2 ( int x ) { printf ( "foo2 %d\n", x ) ; } 5 void foo3 ( int x ) { printf ( "foo3 %d\n", x ) ; } 6 void foo4 ( int x ) { printf ( "foo4 %d\n", x ) ; } 7 8 int main ( ) { 9 int i, j ; 10 void ( * farray [ 4 ] ) ( int ) = { NULL } ; farray [ 0 ] = &foo1 ; 13 farray [ 1 ] = &foo2 ; 14 farray [ 2 ] = &foo3 ; 15 farray [ 3 ] = &foo4 ; for ( i = 0 ; i < 100; i++) 18 for ( j = 0 ; j < 4 ; j++) 19 ( * farray [ j ] ) ( i ) ; return 0 ; 22 } Χαροκόπειο Πανεπιστήμιο 55/59

61 Δείκτες σε void Στο παρακάτω πρόγραμμα 1 #include < s t d i o. h> 2 3 int main ( ) { 4 int c ; 5 double * ptr ; 6 7 ptr = &c ; 8 9 return 0 ; 10 } ο μεταγλωττιστής μας προειδοποιεί πως test.c: In function main : test.c:8: warning: assignment from incompatible pointer type Χαροκόπειο Πανεπιστήμιο 56/59

62 Δείκτες σε void Η C μας παρέχει ένα δείκτη τύπου void που μπορεί να δείξει οπουδήποτε. 1 #include < s t d i o. h> 2 3 int main ( ) { 4 int c ; 5 double k ; 6 void *ptr ; 7 8 ptr = &c ; 9 ptr = &k ; return 0 ; 12 } Θα δούμε που χρησιμεύει σε επόμενες διαλέξεις. Χαροκόπειο Πανεπιστήμιο 57/59

63 Δείκτες σε Δείκτες Για να δηλώσουμε ένα δείκτη που να δείχνει σε μια μεταβλητή που είναι και αυτή δείκτης πρέπει να χρησιμοποιήσουμε την παρακάτω σύνταξη. int * * x ; Θα ήταν πιο ευδιάκριτο εαν γράφαμε int* *x για να καταλάβουμε πως ο x είναι ένας δείκτης που δείχνει σε ένα δείκτη ακεραίων. Χαροκόπειο Πανεπιστήμιο 58/59

64 Δείκτες σε Δείκτες 1 #include < s t d i o. h> 2 3 int main ( ) { 4 int a [ 5 ] = { 1, 2, 3, 4, 5 } ; 5 int *ptr1 = &a [ 2 ] ; 6 int * * ptr2 = &ptr1 ; 7 8 printf ( "%d\n", * * ptr2 ) ; 9 10 return 0 ; 11 } a ptr1 ptr2 Ο κώδικας τυπώνει 3 Χαροκόπειο Πανεπιστήμιο 59/59

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Στοιχειώδης προγραμματισμός σε C++

Στοιχειώδης προγραμματισμός σε C++ Στοιχειώδης προγραμματισμός σε C++ Σύντομο Ιστορικό. Το πρόγραμμα Hello World. Ο τελεστής εξόδου. Μεταβλητές και δηλώσεις τους. Αντικείμενα, μεταβλητές, σταθερές. Ο τελεστής εισόδου. Θεμελιώδεις τύποι.

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

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

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

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

ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 4-1

ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι 4-1 Εφαρμογές στοιβών Στην ενότητα αυτή θα μελετηθεί η χρήση στοιβών στις εξής εφαρμογές: Αναδρομικές συναρτήσεις Ισοζυγισμός Παρενθέσεων Αντίστροφος Πολωνικός Συμβολισμός ΕΠΛ 231 Δομές Δεδομένων και Αλγόριθμοι

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

Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός. (Διάλεξη 14) Παράδειγμα: Αλλαγή τιμής μεταβλητής μόνο τοπικά

Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός. (Διάλεξη 14) Παράδειγμα: Αλλαγή τιμής μεταβλητής μόνο τοπικά Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός (Διάλεξη 14) 14-1 Παράδειγμα: Αλλαγή τιμής μεταβλητής μόνο τοπικά ΛΑΘΟΣ τρόπος να αυξήσουμε το κατά 1 #include void AddOne (int); void AddOne

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

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

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

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

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

Προγραμματισμός Ι. Προεπεξεργαστής. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Προεπεξεργαστής Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Διαδικασία Μεταγλώττισης πρόγραµµα επεξεργασίας κειµένου if a

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

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

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

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

3. Εκφράσεις και έλεγχος ροής

3. Εκφράσεις και έλεγχος ροής 3. Εκφράσεις και έλεγχος ροής Τελειώνοντας αυτό το κεφάλαιο θα μπορείτε: Να διακρίνετε ανάμεσα σε μεταβλητές μέλη και αυτόματες μεταβλητές Να περιγράφετε την αρχικοποίηση των μεταβλητών μελών Να αναγνωρίζετε

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

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

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

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

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

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

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

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

Ανάπτυξη και Σχεδίαση Λογισμικού Ανάπτυξη και Σχεδίαση Λογισμικού Η γλώσσα προγραμματισμού C Γεώργιος Δημητρίου Εκφράσεις και Λίγες Εντολές Οι εκφράσεις της C Τελεστές Απλές και σύνθετες εντολές Εντολές ελέγχου (επιλογής) Εισαγωγή σε

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

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

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

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

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 3: Προγραμματισμός σε JAVA I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Στοιχειώδης Προγραμματισμός - Προγραμματισμός με Συνθήκες - Προγραμματισμός με Βρόγχους

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

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών

Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών ΕΠΛ231 Δομές Δεδομένων και Αλγόριθμοι 1 Διάλεξη 06: Συνδεδεμένες Λίστες & Εφαρμογές Στοιβών και Ουρών Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Υλοποίηση ΑΤΔ με Συνδεδεμένες Λίστες -

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

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

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

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

Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός. Δείκτες (Διάλεξη 14)

Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός. Δείκτες (Διάλεξη 14) Κεφάλαιο 6: Συναρτήσεις IΙΙ Αρθρωτός Προγραμματισμός Δείκτες (Διάλεξη 14) 14-1 Παράδειγμα: Αλλαγή τιμής μεταβλητής μόνο τοπικά ΛΑΘΟΣ τρόπος να αυξήσουμε το num κατά 1 #include void AddOne (int);

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

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

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

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

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

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

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

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

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

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

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13) Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις Επανάληψη για την ενδιάμεση εξέταση (Διάλεξη 13) 13-1 Πρόβλημα 1 Γράψετε τον ορισμό μίας συνάρτησης η οποία υπολογίζει το μέγιστο 2 ακεραίων αριθμών και

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Κλάσεις και Αντικείμενα Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Κλάσεις Η γενική μορφή μιας κλάσης είναι η εξής: class class-name { private data and

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

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

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

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

Η γλώσσα C. Δείκτες (pointers)

Η γλώσσα C. Δείκτες (pointers) Η γλώσσα C Δείκτες (pointers) Δείκτες - Pointers Δείκτης: τι είναι; Μια μεταβλητή που περιέχει τη διεύθυνση μιας άλλης μεταβλητής 1000 1028 Μεταβλητή p int c = 10; int *p; p = &c; 1028 10 Μεταβλητή c *p

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου, Εφαρµογές στοιβών Στην ενότητα αυτή θα µελετηθεί η χρήση στοιβών στις εξής εφαρµογές: Αναδροµικές συναρτήσεις Ισοζυγισµός Παρενθέσεων Αντίστροφος Πολωνικός Συµβολισµός ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι

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

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

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

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

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

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

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΚΑΙ ΠΙΝΑΚΕΣ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Βασικοί Τύποι Πίνακες (μέρος 1) Συμβολοσειρές Ο Προεπεξεργαστής Τελευταία ενημέρωση: Σεπτέμβριος 2016 Εισαγωγή - 2 short:

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

ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ

ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ ΚΑΤΑΣΚΕΥΑΣΤΕΣ ΑΝΤΙΓΡΑΦΗΣ Γεώργιος Παπαϊωάννου (2013-16) gepap@aueb.gr Περιγραφή: Deep/Shallow copies H αναγκαιότητα των κατασκευαστών αντιγραφής Ορισμός και χρήση κατασκευαστών αντιγραφής Τελευταία ενημέρωση:

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

Τελεστές ΤΕΛΕΣΤΕΣ. Γεώργιος Παπαϊωάννου ( )

Τελεστές ΤΕΛΕΣΤΕΣ. Γεώργιος Παπαϊωάννου ( ) ΤΕΛΕΣΤΕΣ Γεώργιος Παπαϊωάννου (2013-14) gepap@aueb.gr Περιγραφή: Τι είναι οι τελεστές Χρήση τελεστών Υπερφόρτωση τελεστών Chain-linking Τελεστών Τελευταία ενημέρωση: Ιούνιος 2013 Εισαγωγή - 2 Τελεστής

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

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8) Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις (Διάλεξη 8) 8-1 Τι θα δούμε σήμερα Η εντολή if else Η εντολή if else ιf - -else H εντολή switch Λογικές παραστάσεις Σχεσιακοί

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

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

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

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

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

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

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

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

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

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

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2)

Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Ανάπτυξη Μεγάλων Εφαρµογών στη Γλώσσα C (2) Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Οργάνωση Προγράµµατος Header Files Μετάφραση και σύνδεση αρχείων προγράµµατος ΕΠΛ 132 Αρχές Προγραµµατισµού

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ Η/Υ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ Τελεστές - Κατηγορίες Εκφράσεις - Κατηγορίες Υπολογισμός εκφράσεων Προτάσεις - Κατηγορίες

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

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

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

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

Προγραμματισμό για ΗΜΥ

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

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

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C

Κεφάλαιο Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C Κεφάλαιο 9.1-9.2 Αλφαριθμητικές Σειρές Χαρακτήρων (Strings) (Διάλεξη 20) 1) Strings στη C Ένα string είναι μία ακολουθία αλφαριθμητικών χαρακτήρων, σημείων στίξης κτλ. Π.χ. Hello How are you? 121212 *Apple#123*%

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

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

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

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

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 3-2

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 3-2 Εισαγωγή στην C Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: Σύνταξη και Σηµασιολογία της C Σχολιασµός Μεταβλητές / Σταθερές Τύποι εδοµένων και Τελεστές Βιβλίο µαθήµατος: Chapter 2,, Sec.

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

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

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

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

Κεφάλαιο 2.5: Τύποι εδοµένων, Τελεστές και Αριθµητικές Εκφράσεις. ( ιαλέξεις 5-6) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

Κεφάλαιο 2.5: Τύποι εδοµένων, Τελεστές και Αριθµητικές Εκφράσεις. ( ιαλέξεις 5-6) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Κεφάλαιο 2.5: Τύποι εδοµένων, Τελεστές και Αριθµητικές Εκφράσεις ( ιαλέξεις 5-6) ιδάσκων: ηµήτρης Ζεϊναλιπούρ 1 Περιεχόµενα Τύποι εδοµένων int, char, float, double Τελεστές =,+,-,*,/,% Αριθµητικές εκφράσεις

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

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

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

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

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

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

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

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

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

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

Επανάληψη για τις Τελικές εξετάσεις

Επανάληψη για τις Τελικές εξετάσεις Επανάληψη για τις Τελικές εξετάσεις ( ιάλεξη 21) ιδάσκων: ηµήτρης Ζεϊναλιπούρ Εισαγωγή Το µάθηµα EPL032 έχει ως βασικό στόχο την επίλυση προβληµάτων πληροφορικής µε την χρήση της γλώσσας προγραµµατισµού

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

Διάλεξη 2: Επανάληψη Προγραμματισμού Συμβολοσειρές (strings) Διδάσκων: Παναγιώτης Ανδρέου

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

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