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

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

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

Transcript

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

2 Συναρτήσεις Ως τώρα γράφαμε όλα τα προγράμματα μας μέσα στην main..1 Τι θα γινόταν όμως εαν ένα πρόγραμμα μας είναι γραμμές κώδικα;.2 Στην περίπτωση που θέλουμε να εκτελέσουμε τον ίδιο ή παρόμοιο κώδικα πολλές φορές; Χαροκόπειο Πανεπιστήμιο 2/47

3 Συναρτήσεις.1 Χωρίζουμε το πρόγραμμα σε μέρη.2 Φιλοσοφία του "διαίρει και βασίλευε" (divide and conquer).3 Τα μέρη αντιστοιχούν σε επιμέρους και μικρότερα υποπροβλήματα Αναλογία με τον πραγματικό κόσμο: Ο προϊστάμενος αναθέτει μια δουλειά σε κάποιον υφιστάμενο χωρίς να γνωρίζει τις λεπτομέρειες. Χαροκόπειο Πανεπιστήμιο 3/47

4 Συναρτήσεις.1 Τα υποπροβλήματα είναι πιο εύκολα διαχειρίσιμα.2 Δημιουργούμε μια συνάρτηση για κάθε υποπρόβλημα.3 Ο κώδικας είναι πιο ευανάγνωστος και διαχειρίσιμος.4 Χρησιμοποιούμε υπάρχουσες συναρτήσεις σε καινούρια προγράμματα για την λύση νέων προβλημάτων.5 Δεν επαναλαμβάνουμε ίδιο κώδικα πολλές φορές στα προγράμματα μας.6 Αφαίρεση (abstraction): Κρύβουμε λεπτομέρειες που δεν είναι απαραίτητες στον προγραμματιστή Χαροκόπειο Πανεπιστήμιο 4/47

5 Συναρτήσεις.1 Τα υποπροβλήματα είναι πιο εύκολα διαχειρίσιμα.2 Δημιουργούμε μια συνάρτηση για κάθε υποπρόβλημα.3 Ο κώδικας είναι πιο ευανάγνωστος και διαχειρίσιμος.4 Χρησιμοποιούμε υπάρχουσες συναρτήσεις σε καινούρια προγράμματα για την λύση νέων προβλημάτων.5 Δεν επαναλαμβάνουμε ίδιο κώδικα πολλές φορές στα προγράμματα μας.6 Αφαίρεση (abstraction): Κρύβουμε λεπτομέρειες που δεν είναι απαραίτητες στον προγραμματιστή Χαροκόπειο Πανεπιστήμιο 4/47

6 Συναρτήσεις.1 Τα υποπροβλήματα είναι πιο εύκολα διαχειρίσιμα.2 Δημιουργούμε μια συνάρτηση για κάθε υποπρόβλημα.3 Ο κώδικας είναι πιο ευανάγνωστος και διαχειρίσιμος.4 Χρησιμοποιούμε υπάρχουσες συναρτήσεις σε καινούρια προγράμματα για την λύση νέων προβλημάτων.5 Δεν επαναλαμβάνουμε ίδιο κώδικα πολλές φορές στα προγράμματα μας.6 Αφαίρεση (abstraction): Κρύβουμε λεπτομέρειες που δεν είναι απαραίτητες στον προγραμματιστή Χαροκόπειο Πανεπιστήμιο 4/47

7 Συναρτήσεις.1 Τα υποπροβλήματα είναι πιο εύκολα διαχειρίσιμα.2 Δημιουργούμε μια συνάρτηση για κάθε υποπρόβλημα.3 Ο κώδικας είναι πιο ευανάγνωστος και διαχειρίσιμος.4 Χρησιμοποιούμε υπάρχουσες συναρτήσεις σε καινούρια προγράμματα για την λύση νέων προβλημάτων.5 Δεν επαναλαμβάνουμε ίδιο κώδικα πολλές φορές στα προγράμματα μας.6 Αφαίρεση (abstraction): Κρύβουμε λεπτομέρειες που δεν είναι απαραίτητες στον προγραμματιστή Χαροκόπειο Πανεπιστήμιο 4/47

8 Συναρτήσεις.1 Τα υποπροβλήματα είναι πιο εύκολα διαχειρίσιμα.2 Δημιουργούμε μια συνάρτηση για κάθε υποπρόβλημα.3 Ο κώδικας είναι πιο ευανάγνωστος και διαχειρίσιμος.4 Χρησιμοποιούμε υπάρχουσες συναρτήσεις σε καινούρια προγράμματα για την λύση νέων προβλημάτων.5 Δεν επαναλαμβάνουμε ίδιο κώδικα πολλές φορές στα προγράμματα μας.6 Αφαίρεση (abstraction): Κρύβουμε λεπτομέρειες που δεν είναι απαραίτητες στον προγραμματιστή Χαροκόπειο Πανεπιστήμιο 4/47

9 Συναρτήσεις.1 Τα υποπροβλήματα είναι πιο εύκολα διαχειρίσιμα.2 Δημιουργούμε μια συνάρτηση για κάθε υποπρόβλημα.3 Ο κώδικας είναι πιο ευανάγνωστος και διαχειρίσιμος.4 Χρησιμοποιούμε υπάρχουσες συναρτήσεις σε καινούρια προγράμματα για την λύση νέων προβλημάτων.5 Δεν επαναλαμβάνουμε ίδιο κώδικα πολλές φορές στα προγράμματα μας.6 Αφαίρεση (abstraction): Κρύβουμε λεπτομέρειες που δεν είναι απαραίτητες στον προγραμματιστή Χαροκόπειο Πανεπιστήμιο 4/47

10 Συναρτήσεις της Βιβλιοθήκης της C Η βιβλιοθήκη της C παρέχει πολλές συναρτήσεις. Μερικές τις έχουμε πετύχει ήδη:.1 printf() βοηθάει για να εκτυπώσουμε στην οθόνη.2 scanf() διαβάζει από το πληκτρολόγιο.3 getchar() διαβάζει ένα χαρακτήρα από το πληκτρολόγιο Όταν γράφουμε προγράμματα δεν πρέπει να ανακαλύπτουμε τον τροχό! Χρησιμοποιούμε τις έτοιμες βιβλιοθήκες συναρτήσεων. Χαροκόπειο Πανεπιστήμιο 5/47

11 Ορισμός Συνάρτησης σε C Παρακάτω βλέπουμε την γενική δομή ορισμού μιας συνάρτησης σε C: 1 return value type procedure name ( comma separated parameter list ) 2 { 3 declarations 4 5 statements 6 } Κάθε συνάρτηση έχει:.1 ένα μοναδικό όνομα.2 μια λίστα παραμέτρων.3 μια τιμή επιστροφής Χαροκόπειο Πανεπιστήμιο 6/47

12 Συνάρτηση Συνάρτηση παράµετροι κώδικας συνάρτησης έξοδος συνάρτησης Χαροκόπειο Πανεπιστήμιο 7/47

13 Παράδειγμα Ορισμού Συνάρτησης σε C Παρακάτω βλέπουμε τον ορισμό μιας συνάρτησης σε C η οποία υπολογίζει το τετράγωνο ενός αριθμού: 1 int square ( int x ) 2 { 3 return x * x ; 4 } η συνάρτηση επιστρέφει έναν ακέραιο η συνάρτηση παίρνει μια παράμετρο με όνομα x και τύπο ακέραιο Χαροκόπειο Πανεπιστήμιο 8/47

14 Συνάρτηση Υπολογισμού Τετραγώνου square παράµετρος ακέραιος x κώδικας έξοδος : ακέραιος µε τιµή x 2 συνάρτησης Χαροκόπειο Πανεπιστήμιο 9/47

15 Παράδειγμα Ορισμού Συνάρτησης σε C Ορισμός μιας συνάρτησης σε C η οποία υπολογίζει το μέγιστο δύο ακεραίων: 1 int max ( int x, int y ) 2 { 3 if ( x > y ) 4 return x ; 5 else 6 return y ; 7 } η συνάρτηση επιστρέφει έναν ακέραιο η συνάρτηση παίρνει δύο ακέραιες παραμέτρους x και y Χαροκόπειο Πανεπιστήμιο 10/47

16 Συνάρτηση Υπολογισμού Μεγίστου 2 Ακεραίων max παράµετρος ακέραιος x παράµετρος ακέραιος y κώδικας συνάρτησης έξοδος : ακέραιος µε την µέγιστη τιµή των x και y Χαροκόπειο Πανεπιστήμιο 11/47

17 Κώδικας Συνάρτησης Σε μια συνάρτηση γράφουμε κώδικα όπως ακριβώς γράφουμε στην συνάρτηση main(). 1 #include < s t d i o. h> 2 3 int max ( int a, int b, int c ) { 4 int max = a ; 5 if ( b > max ) 6 max = b ; 7 if ( c > max ) 8 max = c ; 9 return max ; 10 } int main ( ) { 13 printf ( "max of 1, 2 and 3 = %d", max ( 1, 2, 3 ) ) ; 14 } Χαροκόπειο Πανεπιστήμιο 12/47

18 Μεταβλητές Συνάρτησης 1 int max ( int a, int b, int c ) { 2 int max ; 3 4 max = a ; 5 if ( b > max ) 6 max = b ; 7 if ( c > max ) 8 max = c ; 9 10 return max ; 11 } Η παραπάνω συνάρτηση έχει 4 τοπικές μεταβλητές. τις παραμέτρους a, b και c την μεταβλητή max Η μεταβλητές αυτές είναι γνωστές μόνο μέσα στην συνάρτηση. Χαροκόπειο Πανεπιστήμιο 13/47

19 Κλήση Συνάρτησης Καλούμε μια συνάρτηση με το όνομα της και τιμές για τις παραμέτρους μέσα σε παρενθέσεις. 1 int main ( ) { 2 int i, j, k ; 3 int m ; 4 5 printf ( "Give 3 values\n" ) ; 6 7 scanf ( "%d%d%d", &i, &j, &k ) ; m = max ( i, j, k ) ; 11 printf ( "maximum = %d\n", m ) ; 12 } Την τιμή επιστροφής πρέπει είτε να την αναθέσουμε σε κάποια μεταβλητή ή να την χρησιμοποιήσουμε απευθείας π.χ να την τυπώσουμε με την printf(). Χαροκόπειο Πανεπιστήμιο 14/47

20 Τύπος Επιστροφής Όταν ορίζουμε μια συνάρτηση πρέπει να δηλώσουμε και τι τύπο δεδομένων θα επιστρέψει, π.χ 1 int max ( int x, int y ) { 2 return ( x>y)?x : y ; 3 } Τι κάνουμε όμως στην περίπτωση που δεν θέλουμε να επιστρέψουμε τίποτα; Χαροκόπειο Πανεπιστήμιο 15/47

21 Τύπος Επιστροφής Η C μας παρέχει την δεσμευμένη λέξη void που υποδηλώνει πως μια συνάρτηση δεν επιστρέφει τίποτα. 1 void printstars ( int n ) { 2 int i ; 3 4 for ( i = 0 ; i < n ; i++) 5 putchar ( '*' ) ; 6 7 return ; / * could be omitted * / 8 } Η παραπάνω συνάρτηση τυπώνει n αστερίσκους και δεν επιστρέφει τίποτα. Χαροκόπειο Πανεπιστήμιο 16/47

22 Επιστροφή από Συνάρτηση Με την δεσμευμένη λέξη return τερματίζει η εκτέλεση μιας συνάρτησης. 1 void printstars ( int n ) { 2 int i ; 3 4 for ( i = 0 ; i < n ; i++) 5 putchar ( '*' ) ; 6 7 return ; / * FUNCTION END HERE * / 8 9 for ( i = 0 ; i < n ; i++) 10 putchar ( '*' ) ; 11 } Ο κώδικας που ακολουθεί την return δεν θα εκτελεστεί ποτέ. Χαροκόπειο Πανεπιστήμιο 17/47

23 Ροή Προγράμματος Η ροή του προγράμματος αλλάζει όταν συναντήσει μια κλήση συνάρτησης f(a, b, c).1 πρώτα υπολογίζονται οι εκφράσεις που αντιστοιχούν στα ορίσματα a, b και c,.2 οι τιμές των εκφράσεων a, b και c αντιγράφονται στα ορίσματα της f με την ίδια σειρά,.3 ο έλεγχος μεταπηδά στην πρώτη εντολή της f,.4 οι εντολές της f εκτελούνται μέχρι να συναντηθεί return τέλος συνάρτησης, δηλαδή },.5 η κλήση f(a,b,c) αντικαθίσταται με την τιμή επιστροφής,.6 ο έλεγχος συνεχίζει με τον κώδικα που ακολουθεί την κλήση της συνάρτησης. Χαροκόπειο Πανεπιστήμιο 18/47

24 Κλήση Συνάρτησης 1 #include < s t d i o. h> 2 3 void printstars ( int n ) { 4 int i ; 5 for ( i = 0 ; i < n ; i++) 6 putchar ( '*' ) ; 7 } 8 9 int main ( ) { 10 int i ; 11 for ( i = 1 ; i <= 5 ; i++) { 12 printstars ( i ) ; 13 printf ( "\n" ) ; 14 } 15 } Μόλις καλέσουμε μια συνάρτηση το πρόγραμμα αρχίζει και εκτελεί τον κώδικα της συνάρτησης. Χαροκόπειο Πανεπιστήμιο 19/47

25 Κλήση Συνάρτησης 1 #include < s t d i o. h> 2 3 void printstars ( int n ) { 4 int i ; 5 for ( i = 0 ; i < n ; i++) 6 putchar ( '*' ) ; 7 } 8 9 int main ( ) { 10 int i ; 11 for ( i = 1 ; i <= 5 ; i++) { 12 printstars ( i ) ; 13 printf ( "\n" ) ; 14 } 15 } Πριν ξεκινήσει να εκτελεί τον κώδικα της συνάρτησης αναθέτει στην τοπική μεταβλητή n της συνάρτησης την τιμή που δώσαμε όταν καλέσαμε την συνάρτηση. Χαροκόπειο Πανεπιστήμιο 19/47

26 Κλήση Συνάρτησης 1 #include < s t d i o. h> 2 3 void printstars ( int n ) { 4 int i ; 5 for ( i = 0 ; i < n ; i++) 6 putchar ( '*' ) ; 7 } 8 9 int main ( ) { 10 int i ; 11 for ( i = 1 ; i <= 5 ; i++) { 12 printstars ( i ) ; 13 printf ( "\n" ) ; 14 } 15 } Η εκτέλεση μιας συνάρτησης τερματίζει είτε με την εντολή return είτε άμα φτάσει η εκτέλεση στο τέλος της συνάρτησης. Χαροκόπειο Πανεπιστήμιο 19/47

27 Κλήση Συνάρτησης 1 #include < s t d i o. h> 2 3 void printstars ( int n ) { 4 int i ; 5 for ( i = 0 ; i < n ; i++) 6 putchar ( '*' ) ; 7 } 8 9 int main ( ) { 10 int i ; 11 for ( i = 1 ; i <= 5 ; i++) { 12 printstars ( i ) ; 13 printf ( "\n" ) ; 14 } 15 } Μόλις τελειώσει η εκτέλεση της συνάρτησης, η εκτέλεση επιστρέφει στην γραμμή του προγράμματος που κάλεσε την συνάρτηση και συνεχίζει κανονικά. Χαροκόπειο Πανεπιστήμιο 19/47

28 Κλήση Συνάρτησης από Συνάρτηση 1 #include < s t d i o. h> 2 3 void printchar ( char c, int s ) { 4 int i ; 5 for ( i = 0 ; i < s ; i++) 6 putchar ( c ) ; 7 } 8 9 void printstarspaces ( int s, int n ) { 10 printchar ( ' ', s ) ; 11 printchar ( '*', n ) ; 12 printchar ( ' ', s ) ; 13 } int main ( ) { 16 int i, n = 9 ; 17 for ( i = 1 ; i <= n ; i+=2) { 18 printstarspaces ( ( n i ) / 2, i ) ; 19 printf ( "\n" ) ; 20 } 21 } Μέσα από μια συνάρτηση μπορούμε να καλέσουμε άλλες συναρτήσεις. Χαροκόπειο Πανεπιστήμιο 20/47

29 Κλήση Συνάρτησης από Συνάρτηση 1 #include < s t d i o. h> 2 3 void printchar ( char c, int s ) { 4 int i ; 5 for ( i = 0 ; i < s ; i++) 6 putchar ( c ) ; 7 } 8 9 void printstarspaces ( int s, int n ) { 10 printchar ( ' ', s ) ; 11 printchar ( '*', n ) ; 12 printchar ( ' ', s ) ; 13 } int main ( ) { 16 int i, n = 9 ; 17 for ( i = 1 ; i <= n ; i+=2) { 18 printstarspaces ( ( n i ) / 2, i ) ; 19 printf ( "\n" ) ; 20 } 21 } Τι τυπώνει αυτός ο κώδικας; Χαροκόπειο Πανεπιστήμιο 20/47

30 Αρχέτυπα και Ορισμοί 1 #include <stdio. h> 2 3 int max (int x, int y ) ; 4 5 int main ( ) { 6 int a, b ; 7 8 printf ( "Enter two integers: " ) ; 9 scanf ( "%d%d", &a, &b ) ; 10 printf ( "Maximum is: %d\n", max (a, b ) ) ; 11 } int max ( int x, int y ) { 14 if ( x > y ) 15 return x ; 16 else 17 return y ; 18 } με την χρήση αρχέτυπου μπορούμε να καλέσουμε μια συνάρτηση χωρίς να την έχουμε πλήρως ορίσει Χαροκόπειο Πανεπιστήμιο 21/47

31 Αρχέτυπα και Ορισμοί 1 #include <stdio. h> 2 3 int max (int x, int y ) ; 4 5 int main ( ) { 6 int a, b ; 7 8 printf ( "Enter two integers: " ) ; 9 scanf ( "%d%d", &a, &b ) ; 10 printf ( "Maximum is: %d\n", max (a, b ) ) ; 11 } int max ( int x, int y ) { 14 if ( x > y ) 15 return x ; 16 else 17 return y ; 18 } με την χρήση αρχέτυπου μπορεί μια συνάρτηση να είναι ορισμένη σε άλλο αρχείο κώδικα Χαροκόπειο Πανεπιστήμιο 21/47

32 Αρχέτυπα και Ορισμοί 1 #include <stdio. h> 2 3 int max (int x, int y ) ; 4 5 int main ( ) { 6 int a, b ; 7 8 printf ( "Enter two integers: " ) ; 9 scanf ( "%d%d", &a, &b ) ; 10 printf ( "Maximum is: %d\n", max (a, b ) ) ; 11 } int max ( int x, int y ) { 14 if ( x > y ) 15 return x ; 16 else 17 return y ; 18 } με την χρήση αρχέτυπου μπορεί μια συνάρτηση να είναι ήδη μεταγλωττισμένη Χαροκόπειο Πανεπιστήμιο 21/47

33 Αρχέτυπα και Ορισμοί 1 #include <stdio. h> 2 3 int max (int x, int y ) ; 4 5 int main ( ) { 6 int a, b ; 7 8 printf ( "Enter two integers: " ) ; 9 scanf ( "%d%d", &a, &b ) ; 10 printf ( "Maximum is: %d\n", max (a, b ) ) ; 11 } int max ( int x, int y ) { 14 if ( x > y ) 15 return x ; 16 else 17 return y ; 18 } με την χρήση αρχέτυπου ο μεταγλωττιστής έχει αρκετές πληροφορίες για να επικυρώσει πως η κλήση της συγκεκριμένης συνάρτησης είναι σωστή Χαροκόπειο Πανεπιστήμιο 21/47

34 Αρχεία Επικεφαλίδων Από την αρχή του μαθήματος λέμε στον προ-επεξεργαστή να διαβάσει το αρχείο "stdio.h". 1 #include < s t d i o. h> 2 3 int main ( ) { 4 / * code goes here * / 5 } Αυτό το αρχείο βρίσκεται σε κάποιο καλά ορισμένο μέρος στο σύστημα (διαφορετικό ανάλογα με το λειτουργικό σύστημα) και περιέχει αρχέτυπα συναρτήσεων για Είσοδο/Έξοδο (I/O). Χαροκόπειο Πανεπιστήμιο 22/47

35 Αρχεία Επικεφαλίδων Τι είναι μια βιβλιοθήκη; συλλογή συναρτήσεων και τύπων δεδομένων συνήθως παρέχει κάποια εξειδικευμένη λειτουργία ήδη μεταγλωττισμένος κώδικας παρέχει αρχεία επικεφαλίδων για να ξέρουμε τι δυνατότητες υπάρχουν (ονόματα συναρτήσεων, τύποι δεδομένων, κ.τ.λ) καλή τεκμηρίωση των δυνατοτήτων του κώδικα Η βιβλιοθήκη της C (standard library) παρέχει πάρα πολλές δυνατότητες. Χαροκόπειο Πανεπιστήμιο 23/47

36 Βασικά Αρχεία Επικεφαλίδων Βιβλιοθήκης C <stdio.h> αρχέτυπα συναρτήσεων για είσοδο/έξοδο <stdlib.h> αρχέτυπα συναρτήσεων για μετατροπή αριθμών σε κείμενο και αντίστροφα, κατανομή μνήμης, τυχαίους αριθμούς και άλλες βοηθητικές συναρτήσεις <math.h> αρχέτυπα συναρτήσεων για μαθηματικές συναρτήσεις <assert.h> προσθήκη διαγνωστικών για διόρθωση προγράμματος <ctype.h> έλεγχος ιδιοτήτων χαρακτήρων και μετατροπές από πεζά γράμματα σε κεφαλαία και αντιστρόφως Χαροκόπειο Πανεπιστήμιο 24/47

37 Μαθηματικές Συναρτήσεις και ο Τύπος double Ο τύπος double όπως και ο τύπος float είναι μια προσεγγιστική αναπαράσταση των πραγματικών αριθμών. Έχει μεγαλύτερο μέγεθος και μπορεί να αναπαραστήσει περισσότερους αριθμούς. Χαροκόπειο Πανεπιστήμιο 25/47

38 Μαθηματικές Συναρτήσεις και ο Τύπος double Η βιβλιοθήκη της C ορίζει μέσω του <math.h> διάφορες μαθηματικές συναρτήσεις, όπως 1 double sqrt ( double x ) ; 2 3 double exp ( double x ) ; 4 5 double log ( double x ) ; 6 7 double pow ( double x, double y ) ; 8 9 double sin ( double x ) ; και άλλες παρόμοιες. Πολλές από αυτές υπάρχουν και για τον τύπο float. Χαροκόπειο Πανεπιστήμιο 26/47

39 Κλήση Συναρτήσεων και Παράμετροι Οι γλώσσες προγραμματισμού παρέχουν 2 τρόπους κλήσης μιας συνάρτησης:.1 κλήση μέσω τιμής (call by value).2 κλήση μέσω αναφοράς (call by reference) Χαροκόπειο Πανεπιστήμιο 27/47

40 Κλήση Μέσω Τιμής Call by Value Στην κλήση μέσω τιμής, πριν κληθεί μια συνάρτηση γίνεται ένα αντίγραφο όλων των μεταβλητών που έχουν δοθεί ως παράμετροι. Η συνάρτηση καλείτε με παραμέτρους αυτά τα αντίγραφα. Με το τέλος της συνάρτησης τα αντίγραφα αυτά σβήνονται από την μνήμη. Χαροκόπειο Πανεπιστήμιο 28/47

41 Κλήση Μέσω Αναφοράς Call by Reference Στην κλήση μέσω αναφοράς η συνάρτηση καλείτε με τις πραγματικές μεταβλητές ως παραμέτρους. Η γλώσσα C δεν υποστηρίζει κλήση μέσω αναφοράς, αλλά μπορεί να την προσομοιώσει. Δεν έχουμε ακόμη τις απαραίτητες γνώσεις για να δούμε τις λεπτομέρειες. Χαροκόπειο Πανεπιστήμιο 29/47

42 Κλήση Μέσω Τιμής Call by Value 1 #include < s t d i o. h> 2 3 void increment ( int x ) { 4 x++; 5 } 6 7 int main ( ) { 8 int y = 5 ; 9 10 printf ( "y = %d\n", y ) ; 11 increment ( y ) ; 12 printf ( "y = %d\n", y ) ; 13 } Χαροκόπειο Πανεπιστήμιο 30/47

43 Κλήση Μέσω Τιμής Call by Value 1 #include < s t d i o. h> 2 3 void increment ( int x ) { 4 x++; 5 } 6 7 int main ( ) { 8 int y = 5 ; 9 10 printf ( "y = %d\n", y ) ; 11 increment ( y ) ; 12 printf ( "y = %d\n", y ) ; 13 } Και τα δύο printf() τυπώνουν την τιμή 5 μιας και πριν κληθεί η συνάρτηση increment() δημιουργείτε ένα αντίγραφο της μεταβλητής y. Χαροκόπειο Πανεπιστήμιο 30/47

44 Κλήση Μέσω Αναφοράς Call by Reference Η γλώσσα C δεν υποστηρίζει κλήση μέσω αναφοράς, αλλά μπορεί να την προσομοιώσει Δεν έχουμε ακόμη τις απαραίτητες γνώσεις για να δούμε τις λεπτομέρειες. Το έχουμε δει όμως στην πράξη όταν καλούμε την συνάρτηση scanf(): 1 #include < s t d i o. h> 2 3 int main ( ) { 4 int x ; 5 6 printf ( "Give a number\n" ) ; 7 scanf ( "%d", &x ) ; 8 9 / *... * / 10 } Χαροκόπειο Πανεπιστήμιο 31/47

45 Κανόνες Εμβέλειας Μεταβλητών Μία μεταβλητή είναι γνωστή στο μπλόκ που δηλώνεται: 1 #include < s t d i o. h> 2 3 void fun ( ) { 4 int x = 4 ; 5 / * a i s NOT present here * / 6 } 7 8 void more fun ( ) { 9 int a = 5 ; 10 / * x i s not present here * / 11 } int main ( ) { 14 / * a or x are NOT present here * / / *... * / 17 } Μία μεταβλητή έχει εμβέλεια μέχρι να κλείσει το μπλοκ ({ }). Χαροκόπειο Πανεπιστήμιο 32/47

46 Κανόνες Εμβέλειας Μεταβλητών Οι παράμετροι των συναρτήσεων θεωρούνται τοπικές μεταβλητές των συναρτήσεων και άρα είναι γνωστές μόνο στο μπλοκ της εκάστοτε συνάρτησης: 1 #include < s t d i o. h> 2 3 int min ( int x, int y ) { 4 / * a or b are NOT present here * / 5 return ( x<y)?x : y ; 6 } 7 8 int max ( int a, int b ) { 9 / * x or y are NOT present here * / 10 return ( a>b)?a : b ; 11 } int main ( ) { 14 / * a, b, x or y are not present here * / / *... * / 17 } Μία μεταβλητή έχει εμβέλεια μέχρι να κλείσει το μπλοκ ({ }). Χαροκόπειο Πανεπιστήμιο 33/47

47 Κανόνες Εμβέλειας Μεταβλητών Τοπικές μεταβλητές με ίδιο όνομα είναι διαφορετικές μεταβλητές. 1 #include < s t d i o. h> 2 3 int fun ( int x ) { 4 int a = 1 ; 5 6 / * a i s d i f f e r e n t from a o f morefun * / 7 } 8 9 int morefun ( int y ) { 10 int a = 2 ; / * a i s d i f f e r e n t from a o f fun * / 13 } int main ( ) { 16 / * no v a r i a b l e a i s present here * / 17 } Χαροκόπειο Πανεπιστήμιο 34/47

48 Κανόνες Εμβέλειας Μεταβλητών Μπορούμε να δηλώσουμε μεταβλητές έξω από οποιαδήποτε συνάρτηση (εμβέλεια αρχείου). 1 #include < s t d i o. h> 2 3 void fun ( ) { 4 / * a i s NOT present here * / 5 } 6 7 int a = 5 ; 8 9 void more fun ( ) { 10 / * a IS present here * / 11 } int main ( ) { 14 / * a IS present here * / 15 / * some code * / 16 } Μια μεταβλητή με εμβέλεια αρχείου είναι γνωστή από το σημείο που δηλώνεται και κάτω. Χαροκόπειο Πανεπιστήμιο 35/47

49 Κανόνες Εμβέλειας Μεταβλητών Σε περίπτωση που δηλωθεί μια τοπική μεταβλητή με ίδιο όνομα με μια μεταβλητή που έχει εμβέλεια αρχείου (global variable) τότε η τοπική επικαλύπτει την καθολική μεταβλητή. 1 #include <stdio. h> 2 3 int a = 5 ; 4 5 void fun ( ) { 6 int a = 200; 7 / * a here i s 200 and d i f f e r e n t from g l o b a l a * / 8 a++; 9 } void morefun ( ) { 12 / * a here has value 5 * / 13 a++; 14 } int main ( ) { 17 fun ( ) ; 18 morefun ( ) ; / * a here has value 6 * / 21 } Χαροκόπειο Πανεπιστήμιο 36/47

50 Στατικές Μεταβλητές Λέξη κλειδί static Μπορούμε να δηλώσουμε πως μια μεταβλητή είναι στατική: 1 static int x ; 2 static float f ; Το αποτέλεσμα εξαρτάται από την εμβέλεια της δήλωσης μας. Χαροκόπειο Πανεπιστήμιο 37/47

51 Καθολικές Στατικές Μεταβλητές Μπορούμε να δηλώσουμε πως μια καθολική μεταβλητή (εμβέλεια αρχείου) είναι στατική: 1 #include < s t d i o. h> 2 3 static int x ; 4 5 int main ( ) { 6 / *... * / 7 } Το οποίο σημαίνει πως η μεταβλητή έχει εμβέλεια μόνο το αρχείο στο οποίο δηλώνεται. Δεν έχουμε μιλήσει ακόμη για πολλαπλά αρχεία. Είναι γενικά δυνατό να ορίζουμε μια μεταβλητή σε ένα αρχείο C και να την χρησιμοποιούμε σε άλλο αρχείο. Χαροκόπειο Πανεπιστήμιο 38/47

52 Τοπικές Στατικές Μεταβλητές Έχουν την τοπική τους εμβέλεια αλλά έχουν στατική διάρκεια αποθήκευσης. Μόλις αρχικοποιηθούν παραμένουν στη μνήμη για όλη την διάρκεια του προγράμματος. 1 #include < s t d i o. h> 2 3 void foo ( ) { 4 static int x = 0 ; 5 6 printf ( "function foo has been called %d time(s)\n", ++x ) ; 7 } 8 9 int main ( ) { 10 int i ; 11 for ( i = 0 ; i < 100; i++) { 12 foo ( ) ; 13 } 14 } Κάθε φορά που καλούμε την συνάρτηση foo χρησιμοποιείται η ίδια μεταβλητή x η οποία διατηρεί την τιμή της. Χαροκόπειο Πανεπιστήμιο 39/47

53 Αναδρομή Αναδρομή είναι η διαδικασία που μια συνάρτηση καλεί τον εαυτό της. Πολλές φορές μπορούμε να υλοποιήσουμε κάτι πολύ πιο εύκολα χρησιμοποιώντας αυτήν την τεχνική. Χαροκόπειο Πανεπιστήμιο 40/47

54 Υπολογισμός του Παραγοντικού Ο μαθηματικός τύπος του παραγοντικού είναι αναδρομικός: { 1 if n = 0, n! = n (n 1)! if n > 0. Μπορούμε να γράψουμε απευθείας αυτό τον τύπο σε C: 1 int factorial ( int n ) { 2 if ( n <= 0) 3 return 1 ; 4 return n * factorial ( n 1); 5 } Χαροκόπειο Πανεπιστήμιο 41/47

55 Σειρά Fibonacci Η σειρά Fibonacci 0, 1, 1, 2, 3, 5, 8, 13, 21, 34,... αρχίζει με το 0 και το 1 και έχει την ιδιότητα πως κάθε επόμενος αριθμός είναι το άθροισμα των δύο προηγούμενων αριθμών Fibonacci. 1 #include <stdio. h> 2 3 long fibonacci (long ) ; 4 5 int main ( ) { 6 long result, number ; 7 8 printf ( "Enter an integer: " ) ; 9 scanf ( "%ld", &number ) ; 10 result = fibonacci (number ) ; 11 printf ( "Fibonacci( %ld ) = %ld\n", number, result ) ; 12 } long fibonacci ( long n ) { 15 if ( n == 0 n == 1) 16 return n ; 17 return fibonacci ( n 1) + fibonacci ( n 2); 18 } Χαροκόπειο Πανεπιστήμιο 42/47

56 Σειρά Fibonacci f(3) return f(2) + f(1) return f(1) + f(0) return 1 return 1 return 0 Χαροκόπειο Πανεπιστήμιο 43/47

57 Επανάληψη με Αναδρομή Το γεγονός πως η κλήση των συναρτήσεων γίνεται με με call-by-value, επιτρέπει την χρήση της αναδρομής για να κάνουμε επανάληψη. 1 #include < s t d i o. h> 2 3 void backwards ( int x ) { 4 if ( x < 0) 5 return ; 6 printf ( "%d ", x ) ; 7 backwards ( x 1); 8 } 9 10 int main ( ) { 11 backwards ( ) ; 12 } Χαροκόπειο Πανεπιστήμιο 44/47

58 Επανάληψη με Αναδρομή Το γεγονός πως η κλήση των συναρτήσεων γίνεται με με call-by-value, επιτρέπει την χρήση της αναδρομής για να κάνουμε επανάληψη. 1 #include < s t d i o. h> 2 3 void backwards ( int x ) { 4 if ( x < 0) 5 return ; 6 printf ( "%d ", x ) ; 7 backwards ( x 1); 8 } 9 10 int main ( ) { 11 backwards ( ) ; 12 } Το παραπάνω πρόγραμμα τυπώνει Χαροκόπειο Πανεπιστήμιο 44/47

59 Επανάληψη με Αναδρομή Το γεγονός πως η κλήση των συναρτήσεων γίνεται με με call-by-value, επιτρέπει την χρήση της αναδρομής για να κάνουμε επανάληψη. 1 #include < s t d i o. h> 2 3 void backwards ( int x ) { 4 if ( x < 0) 5 return ; 6 printf ( "%d ", x ) ; 7 backwards ( x 1); 8 printf ( "%d ", x ) ; 9 } int main ( ) { 12 backwards ( ) ; 13 } Το παραπάνω πρόγραμμα τυπώνει Χαροκόπειο Πανεπιστήμιο 45/47

60 Επανάληψη με Αναδρομή Έστω ο παρακάτω κώδικας που υπολογίζει το άθροισμα από 0 έως n. 1 #include < s t d i o. h> 2 3 int main ( ) { 4 int i, n, sum ; 5 6 scanf ( "%d", &n ) ; 7 8 for ( i = 0, sum = 0 ; i <= n ; i++) { 9 sum += i ; 10 } printf ( "sum = %d\n", sum ) ; 13 } Μπορούμε να το υλοποιήσουμε με την χρήση μίας αναδρομικής συνάρτησης, χωρίς επανάληψη; Χαροκόπειο Πανεπιστήμιο 46/47

61 Επανάληψη με Αναδρομή Ο παρακάτω κώδικας υπολογίζει το άθροισμα από 0 έως n με την χρήση μιας αναδρομικής συνάρτησης. 1 #include < s t d i o. h> 2 3 int sum ( int i ) { 4 if ( i == 0) 5 return i ; 6 return sum ( i 1) + i ; 7 } 8 9 int main ( ) { 10 int n ; scanf ( "%d", &n ) ; printf ( "sum = %d\n", sum ( n ) ) ; 15 } Χαροκόπειο Πανεπιστήμιο 47/47

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Η/Y. Διάλεξη 6 η : Συναρτήσεις

Προγραμματισμός Η/Y. Διάλεξη 6 η : Συναρτήσεις Προγραμματισμός Η/Y Διάλεξη 6 η : Συναρτήσεις Η C είναι συναρτησιακή γλώσσα προγραμματισμού Ως τώρα όλα τα προγράμματα που είδαμε ήταν γραμμένα μέσα στην main Τι θα κάνουμε όμως αν Το πρόγραμμα είναι τεράστιο

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

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

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

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

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

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

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

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

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

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

7. ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΣΥΝΑΡΤΗΣΕΙΣ

7. ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΣΥΝΑΡΤΗΣΕΙΣ 7. ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΣΥΝΑΡΤΗΣΕΙΣ 7.1 Ορισμός και δήλωση συνάρτησης Μία συνάρτηση είναι μία ενότητα οδηγιών οι οποίες μαζί εκτελούν μία συγκεκριμένη εργασία. Παρέχει έναν κατάλληλο τρόπο να μπορέσουμε να κάνουμε

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

12. Συναρτήσεις (Μέρος ΙI)

12. Συναρτήσεις (Μέρος ΙI) Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων 12. Συναρτήσεις (Μέρος ΙI) Ιωάννης Κατάκης Σήμερα o Συναρτήσεις χωρίς παραμέτρους o Συναρτήσεις με παραμέτρους Χωρίς επιστροφή τιμής Με επιστροφή τιμής o Εμβέλεια

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

Pascal. 15 Νοεμβρίου 2011

Pascal. 15 Νοεμβρίου 2011 Pascal 15 Νοεμβρίου 011 1 Procedures σε Pascal Στην Pascal μπορούμε να ορίσουμε διαδικασίες (procedures). Αυτές είναι ομάδες εντολών οι οποίες έχουν ένα όνομα. Γράφοντας το όνομα μιας διαδικασίας μπορούμε

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

Σε γενικές γραμμές, είναι καλή πρακτική να γράϕουμε προγράμματα C που αποτελούνται από πολλές και μικρές συναρτήσεις, παρά από λίγες και μεγάλες.

Σε γενικές γραμμές, είναι καλή πρακτική να γράϕουμε προγράμματα C που αποτελούνται από πολλές και μικρές συναρτήσεις, παρά από λίγες και μεγάλες. 58 Δομή ενός προγράμματος C Συναρτήσεις Μία συνάρτηση C είναι ένα αυτόνομο, πακεταρισμένο τμήμα προγράμματος που ϕέρει σε πέρας μία διαδικασία η οποία έχει σαϕείς προδιαγραϕές εισόδου και εξόδου και συγκεκριμένο

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραµµατισµός. Αναδροµή (1/2)

Προγραµµατισµός. Αναδροµή (1/2) Προγραµµατισµός Αναδροµή (1/2) Προγραµµατισµός Κλήσεις Συναρτήσεων Όταν καλείται µια συνάρτηση, πρέπει Να θυµάται σε ποιο σηµείο του προγράµµατος θα επιστρέψει Να δεσµεύσει χώρο για την τιµή που θα επιστρέψει

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

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

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

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

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

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

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

Pascal. 26 Οκτωβρίου 2011

Pascal. 26 Οκτωβρίου 2011 Pascal 6 Οκτωβρίου 011 1 Procedures σε Pascal Στην Pascal μπορούμε να ορίσουμε διαδικασίες (procedures). Αυτές είναι ομάδες εντολών οι οποίες έχουν ένα όνομα. Γράφοντας το όνομα μιας διαδικασίας μπορούμε

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΗΥ-150. Προγραμματισμός ΗΥ-150 Προγραμματισμός Συναρτήσεις Προγραμματισμός Αλγόριθμοι / Προγράμματα Λύνουμε ένα πρόβλημα εκτελώντας μια ακολουθία από εντολές σε συγκεκριμένη σειρά Αλγόριθμος: καθορίζει τις εντολές και τη σειρά

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

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

Η γλώσσα προγραμματισμού C Η γλώσσα προγραμματισμού C Εισαγωγή στη C Λίγα λόγια για την C Γλώσσα προγραμματισμού υψηλού επιπέδου. Σχεδιάστηκε και υλοποιήθηκε από τον Dennis Richie στις αρχές της δεκαετίας του 1970 (Bell Labs). Η

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής

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

ΣΧΕΔΙΑΣΗ ΚΑΙ ΥΛΟΠΟΙΗΣΗ ΛΟΓΙΣΜΙΚΟΥ

ΣΧΕΔΙΑΣΗ ΚΑΙ ΥΛΟΠΟΙΗΣΗ ΛΟΓΙΣΜΙΚΟΥ Πανεπιστήμιο Δυτικής Μακεδονίας Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών ΣΧΕΔΙΑΣΗ ΚΑΙ ΥΛΟΠΟΙΗΣΗ ΛΟΓΙΣΜΙΚΟΥ Εμβέλεια Μεταβλητών Εμβέλεια Μεταβλητής Οι μεταβλητές που έχουμε δει μέχρι τώρα είναι

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

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

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

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

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

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

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

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

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

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

Η τιµή εξόδου κάποιας συνάρτησης µπορεί να είναι δείκτης, π.χ.

Η τιµή εξόδου κάποιας συνάρτησης µπορεί να είναι δείκτης, π.χ. είκτες ως Τιµές Εξόδου Η τιµή εξόδου κάποιας συνάρτησης µπορεί να είναι δείκτης, π.χ. int *select (int f (int, int), int *add1, int *add2) { if (f (*add1, *add2)) return add1; else return add2; Η συνάρτηση

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

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

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

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

Προγραμματισμός Η/Υ. Ενότητα 7: Συναρτήσεις

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο 7: Υποπρογράμματα. Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Κεφάλαιο 7: Υποπρογράμματα. Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Κεφάλαιο 7: Υποπρογράμματα Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Ορισμός Αφαίρεση με χρήση υποπρογραμμάτων (subprogram abstraction) είναι η αντιστοίχιση ενός συνόλου εισόδων σε ένα σύνολο εξόδων

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Περιεχόμενα. Πρόλογος... 21

Περιεχόμενα. Πρόλογος... 21 Περιεχόμενα Πρόλογος... 21 Κεφάλαιο 1: Εισαγωγή στον προγραμματισμό... 25 Εισαγωγή...27 Πώς να διαβάσετε αυτό το βιβλίο...27 Η δομή των κεφαλαίων...28 Γιατί να μάθω προγραμματισμό;...31 Γιατί να μάθω C;...31

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

Κεφάλαιο 7: Υπορουτίνες

Κεφάλαιο 7: Υπορουτίνες Κεφάλαιο 7: Υπορουτίνες Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών Ορισμός Αφαίρεση με χρήση υπορουτινών (subroutine abstraction) είναι η αντιστοίχιση ενός συνόλου εισόδων σε ένα σύνολο εξόδων που μπορεί

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

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

Δομημένος Προγραμματισμός Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Δομημένος Προγραμματισμός Ενότητα 10: Συναρτήσεις Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται διαφορετικά

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

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

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

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

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

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

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

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

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

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

Συναρτήσεις και διαδικασίες

Συναρτήσεις και διαδικασίες Συναρτήσεις και διαδικασίες Χρήση συναρτήσεων βιβλιοθήκης Εντολή κλήσης της συνάρτησης printf: printf( Hello, world\n ); Μια συνάρτηση είναι ένα σύνολο εντολών που έχουν ομαδοποιηθεί και τους έχει αποδοθεί

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

Υπολογισμός - Εντολές Επανάληψης

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

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

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

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

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

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

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

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

Διάλεξη 15η: Αναδρομή, μέρος 1ο

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

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

Η γλώσσα προγραμματισμού C Οι συναρτήσεις στη C (2)

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Η/Υ. Ενότητα 3: Top Down Σχεδιασμός

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

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

Οντοκεντρικός Προγραμματισμός

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 5: H ΓΛΩΣΣΑ C++ Συναρτήσεις - Μεταβλητές ΔΙΔΑΣΚΟΝΤΕΣ: Iωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Συναρτήσεις / Μεταβλητές

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

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python

Εισαγωγή στην Επιστήμη Υπολογιστών. Εισαγωγή στην Python Εισαγωγή στην Επιστήμη Υπολογιστών Εισαγωγή στην Python Β Μέρος Δομή Ελέγχου if-elif-else Επαναληπτική Δομή Ελέγχου while Επαναληπτική Δομή Ελέγχου for Αλληλεπίδραση χρήστη-προγράμματος Συναρτήσεις Η δομή

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

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

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

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

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C Master Mind εφαρμογή στη γλώσσα προγραμματισμού C Φεβρουάριος/Μάρτιος 2013 v. 0.1 Master-mind: κανόνες παιχνιδιού Στο master mind χρειάζεται να παράγονται κάθε φορά 4 τυχαία σύμβολα από ένα πλήθος 6 διαφορετικών

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

11. Συναρτήσεις (Μέρος Ι)

11. Συναρτήσεις (Μέρος Ι) Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων 11. Συναρτήσεις (Μέρος Ι) Ιωάννης Κατάκης Σήμερα o Δομημένος Προγραμματισμός o Ορισμός Συνάρτησης o Δήλωση Συνάρτησης o Κλήση συνάρτησης Ο ρόλος των συναρτήσεων

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

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

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

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

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

Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Α' Εξάμηνο ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ Εργαστήριο 2η σειρά ασκήσεων. Κοζάνη, 19 Οκτωβρίου 2007. Δεν ξεχνάμε τα εξής: Case Sensitive!!! Άλλα τα κεφαλαία και άλλα τα μικρά! Με ο,τι τρόπο γράψουμε

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