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

Σχετικά έγγραφα
5. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Β' μέρος: while - do..while)

4. ΒΡΟΧΟΙ ΕΠΑΝΑΛΗΨΗΣ (Α' μέρος: for)

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

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

3. ΕΝΤΟΛΕΣ ΕΛΕΓΧΟΥ (Β' μέρος: switch και :? )

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

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

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

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

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

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

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

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

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

Τύποι Δεδομένων Είσοδος/Έξοδος

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ενότητα 4: «Εισαγωγή στον Προγραμματισμό. Τα πρώτα προγράμματα σε γλώσσα C»

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

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

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

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ ΕΞΕΤΑΣΗ IOYNIOY 2018 ΘΕΜΑΤΑ Α ΟΝΟΜΑΤΕΠΩΝΥΜΟ:... ΑΕΜ: ΕΞΑΜΗΝΟ:

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

1. ΕΙΣΑΓΩΓΗ ΣΤΗ ΓΛΩΣΣΑ C

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

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

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

Υπολογισμός - Εντολές Ελέγχου

ΘΕΜΑΤΑ ΕΞΕΤΑΣΗΣ ΚΑΙ ΑΠΑΝΤΗΣΕΙΣ

Νικόλαος Μιχαλοδημητράκης Σημειώσεις C (Εργαστήριο) 5 ο Μέρος 5 ο Μέρος Εντολές Επανάληψης: FOR - WHILE. Περιγραφή

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τι είναι ; Συναρτήσεις. Παράδειγμα #1. double convert ( double cm ) { double inch;

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

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

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

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

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

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

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

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

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

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

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

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

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

ΑΣΚΗΣΗ 7: ΑΛΦΑΡΙΘΜΗΤΙΚΑ

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

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

Νικόλαος Μιχαλοδημητράκης Σημειώσεις C (Εργαστήριο) 12 ο Μάθημα 1

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 8 η : Συναρτήσεις Χειµερινό Εξάµηνο 2011

ΑΣΚΗΣΗ 8: ΣΥΝΑΡΤΗΣΕΙΣ

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

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 9 Συναρτήσεις. Γεώργιος Λαμπρινίδης

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

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

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

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

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

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

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

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

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

Προσέξτε πως η παράσταση μπορεί να περιλαμβάνει όχι μόνο μία τιμή ή μια άλλη μεταβλητή αλλά μια ολόκληρη μαθηματική παράσταση, όπως η εξής:

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

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

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

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

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

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

Ασκηή σεις 12ο Μαά θημα - Λυύ σεις

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

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

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

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

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

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

Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Transcript:

7. ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΣΥΝΑΡΤΗΣΕΙΣ 7.1 Ορισμός και δήλωση συνάρτησης Μία συνάρτηση είναι μία ενότητα οδηγιών οι οποίες μαζί εκτελούν μία συγκεκριμένη εργασία. Παρέχει έναν κατάλληλο τρόπο να μπορέσουμε να κάνουμε κάποιους υπολογισμός, σε ένα διαφορετικό κομμάτι του προγράμματος που θα είναι υπεύθυνο να κάνει μόνο αντίστοιχους υπολογισμούς. Υπάρχουν δύο κατηγορίες συναρτήσεων που υποστηρίζονται από τη C: Α) Αυτές που είναι γραμμένες στη C και ενσωματωμένες στο μεταγλωττιστή ή αυτές που βρίσκονται στα header αρχεία (κατάληξη.h) Β) Εκείνες που θα γράψετε οι ίδιοι. Η κύρια συνάρτηση κάθε C προγράμματος προσδιορίζεται από τη λέξη κλειδί main(). Μόνο αυτή αρχίζει να διαβάζει ο υπολογιστής καθώς τρέχει το πρόγραμμα. Αυτή με τη σειρά της, στον κώδικα της καλεί άλλες συναρτήσεις, όπως οι printf(), scanf(), putchar() κλπ, που τις παίρνουμε επίσης έτοιμες. Για να χρησιμοποιηθεί μια συνάρτηση που είναι ενσωματωμένη στο μεταγλωττιστή, πρέπει να δηλωθεί η βιβλιοθήκη που την περιέχει, με τη χρήση της δήλωσης #include <...> και μετά να καλέσει τη συνάρτηση. Ακολουθεί ένα παράδειγμα που καλεί τις getchar() και printf() συναρτήσεις. Παράδειγμα 1: #include <conio.h> printf("this is C\n\n"); getchar(); Τις δικές σας συναρτήσεις τις γράφετε οι ίδιοι και χρησιμοποιούνται αντίστοιχα με τις συναρτήσεις μιας βιβλιοθήκης της C. Εκείνες που θα δημιουργήσετε εσείς έχουν μια βασική δομή. Η γενική μορφή τους είναι: τύπος_συνάρτ όνομα_συνάρτ(τύπος μεταβλ_1,τύπος μεταβλ_2, ) δηλώσεις; Τα τρία σημαντικά στοιχεία του ορισμού της συνάρτησης (εκεί που γράφεται ο κώδικας της, δηλαδή τι ακριβώς κάνει η συνάρτηση) είναι το όνομα της, οι παράμετροι που δέχεται και ο τύπος της συνάρτησης.(που δείχνει τι επιστρέφει αυτή η συνάρτηση). Ένας τύπος_συνάρτησης για παράδειγμα μπορεί να είναι τύπος int, και κατά συνέπεια να υπονοήσουμε ότι θα επιστρέφει έναν ακέραιο αριθμό, ενώ ένας άλλος είναι ο τύπος void (που σημαίνει ότι δεν επιστρέφει τίποτα). Μια τέτοια συνάρτηση είναι η main (από αυτά που ξέρουμε ως τώρα), ενώ ακολουθεί και ένα παράδειγμα μιας συνάρτησης που φτιάξαμε μόνοι μας. 1

void print_message() printf(" Afti einia I synartisi print_message.\n "); Το όνομα της συνάρτησης είναι print_message. Η συνάρτηση αυτή δεν δέχεται κανένα όρισμα (παράμετρο) και αυτό φαίνεται από το ότι υπάρχει κενό(void) ανάμεσα στις παρενθέσεις, ενώ παράλληλα δεν επιστρέφει και τίποτα, αφού και ο τύπος της είναι void. 7.2 Κλήση Συνάρτησης Για να εκτελέσει μία εργασία τη συνάρτηση την καλείτε με το όνομα της, περνώντας σ' αυτή, αν χρειάζεται, ορίσματα. Για παράδειγμα για να καλέσετε μια συνάρτηση με όνομα message() από τη κυρίως συνάρτηση main(), απλά χρησιμοποιήστε το όνομα της όπως παρακάτω: message(); /* Κλήση τη συνάρτησης message()*/ Το πιο σημαντικό: Υπάρχουν 2 τρόποι για να φτιάξουμε τη συνάρτηση μας, για παράδειγμα με το όνομα message(). Και στους δύο τρόπους, η συνάρτηση που θα φτιαχτεί θα την καλέσουμε μέσα από τη main(), μια ή και περισσότερες φορές. (Για παράδειγμα, έτσι κάνουμε με την printf). Αυτό, λέγεται κλήση της συνάρτησης. Την ώρα που εκτελείται η main(), όταν βρίσκει το όνομα της συνάρτησης μας, για να γνωρίζει ο compiler ότι δεν είναι λάθος στην πληκτρολόγηση (οπότε θα μας βγάλει σφάλμα), αλλά υπάρχει η συγκεκριμένη συνάρτηση, πριν τη main(), τοποθετούμε τον ορισμό της συνάρτησης, όπως φαίνεται στο παράδειγμα. Εκεί γράφουμε τον κώδικα που εκτελεί η συνάρτηση μας. (Παράδειγμα 1) Αν θέλουμε εναλλακτικά, πριν τη main, αναφέρουμε μόνο τη διακήρυξη ή πρωτότυπο της συνάρτησης μας (που χρειάζεται ελληνικό ερωτηματικό στο τέλος) και αφού τελειώσουμε το κυρίως πρόγραμμα, δηλαδή μετά τη main() γράφουμε τον ορισμό της (δηλαδή τον κώδικα που εκτελεί). (Παράδειγμα 2) Παράδειγμα 1 void message() /* Ορισμός της συνάρτησης*/ 2

printf( "This is C function.\n"); message(); /* Κλήση τη συνάρτησης message()*/ Παράδειγμα 2 void message() ; /*Στο πρώτυπο(διακήρηξη) στο τέλος βάζουμε (;)*/ message(); /* Κλήση τη συνάρτησης message()*/ void message() /* Ο ορισμός της συνάρτησης*/ printf( "This is C function.\n"); Για να κληθεί μια συνάρτηση, το μόνο απαραίτητο είναι να γραφτεί το όνομα της. Ο χειρισμός του προγράμματος ουσιαστικά μεταβαίνει στον ορισμό της συνάρτησης και εκτελεί εκείνο τον κώδικα. Όταν πλέον ολοκληρωθεί η συνάρτηση, συνεχίζεται το κυρίως πρόγραμμα από εκεί που είχε μείνει. Ακόμα ένα παράδειγμα πρωτοτύπου: Παράδειγμα 3 void message13(); /*Στο πρώτυπο(διακήρηξη) στο τέλος βάζουμε ; */ printf("kalws irthate sto programma mas.\n"); message13(); // Κλήση τη συνάρτησης message13() void message13() printf("sas efxomaste kales spoudes!\n"); Στην οθόνη θα εμφανιστεί: Kalws irthate sto programma mas. Sas efxomaste kales spoudes! 3

7.3 Συναρτήσεις που δεν επιστρέφουν αποτέλεσμα Στο παρακάτω παράδειγμα, η συνάρτηση δέχεται σαν παράμετρο μία μεταβλητή τύπου int, αλλά δεν επιστρέφει καμία πληροφορία. Λέμε ότι η συνάρτηση είναι τύπου void. Παράδειγμα 1 /* Υπολογίζει το παραγοντικό ενός συγκεκριμένου αριθμού */ void calc_factorial( int ); /* Πρωτότυπο συνάρτησης */ int number = 0; printf("enter a number\n"); scanf("%d", &number ); calc_factorial( number ); printf("telos programmatos!!\n"); void calc_factorial( int n ) int i, paragontiko=1; for( i = 1; i <= n; ++i ) paragontiko *=i; // Ίδιο με το paragontiko =paragontiko * i; printf("to paragontiko tou %d einai %d\n",n,paragontiko); Στην οθόνη θα εμφανιστεί: Enter a number Έστω πως ο χρήστης δίνει... 5 The factorial of 5 is 120 Telos programmatos!! Ας εξετάσουμε τι συμβαίνει μέσα στο παραπάνω πρόγραμμα. Όπως είπαμε ο compiler μπαίνει και εκτελεί τις εντολές μέσα στη main(). Μόλις φτάσει στην κλήση της συνάρτησης calc_factorial(number), φεύγει από τη main και πάει στον ορισμό της calc_factorial( int n ), αντιστοιχίζοντας τη μεταβλητή number, που έχει την τιμή 5 (όπως το έδωσε ο χρήστης στο παράδειγμα μας) με τη μεταβλητή n (που αποκτάει και αυτή την τιμή 5). Έτσι, το νούμερο της μιας μεταβλητής, μεταφέρεται στην άλλη και αρχίζει να εκτελείται ο κώδικας της συνάρτησης. Αφού διαβαστούν και οι τοπικές μεταβλητές i και paragontiko, πλέον γίνονται οι αντίστοιχες πράξεις και εμφανίζεται το περιεχόμενο του printf(). Μόλις τελειώσει ο κώδικας της συνάρτησης, λόγω του ότι ο τύπος της συνάρτησης είναι void, η συνάρτηση δεν επιστρέφει καμία τιμή στο κυρίως πρόγραμμα και εκείνο συνεχίζει με τις εντολές που είχαν απομείνει, δηλαδή εμφανίζει τη φράση: Telos programmatos!! 4

ΠΡΟΣΟΧΗ!!!!! Όσον αφορά τις παραμέτρους, πρέπει όταν καλούμε τη συνάρτηση μας, μέσα από τη main(), να προσέχουμε οι παράμετροι να είναι ακριβώς ίδιοι σε αριθμό και ίδιου τύπου. Αν για παράδειγμα, στο προηγούμενο πρόγραμμα ορίζαμε τη μεταβλητή number, ως float, θα υπήρχε πρόβλημα όταν θα έτρεχε το πρόγραμμα. Πρέπει να είναι int, γιατί έτσι αναφέρεται στον ορισμό της συνάρτησης. Επίσης, οι παράμετροι μπορεί να είναι καμία(όπως είδαμε), μια, δύο ή περισσότερες. Έτσι, αν ορίσουμε μια συνάρτηση: void synartisi(float n, int x, float met1)... θα πρέπει όταν την καλέσουμε από τη main, οι μεταβλητές ή οι τιμές που θα δώσουμε να είναι η πρώτη τύπου float, η δεύτερη τύπου int και η τρίτη τύπου float. Και πρέπει να προσέξουμε να είναι ακριβώς 3 στον αριθμό. Παράδειγμα 2 void twotimes(int x) printf ("\nfunction:parametros prin tin allagi %d",x); x *= 2; printf ("\nfunction:parametros meta tin allagi %d",x); int main(void) int number=10; printf ("\nmain:noumero prin tin klisi tis sinartisis %d",number); twotimes(number); printf("\nmain: Noumero meta tin klisi tis sinartisis %d",number); Στην οθόνη θα εμφανιστεί: Main: Noumero prin tin klisi tis sinartisis 10 Function: Parametros prin tin allagi 10 Function: Parametros meta tin allagi 20 Main: Noumero meta tin klisi tis sinartisis 10 5

7.4 Συναρτήσεις που Επιστρέφουν Αποτέλεσμα Αυτό επιτυγχάνεται με τη χρήση του return, ακολουθούμενο από μια μεταβλητή ή μια σταθερή τιμή. Η τιμή της μεταβλητής εκείνη τη στιγμή ή της σταθεράς, είναι και αυτό που επιστρέφει η συνάρτηση. Ο τύπος των δεδομένων που ακολουθούν τη συνάρτηση πρέπει να συμφωνεί με τον τύπο της συνάρτησης. Θα αναφέρουμε το προηγούμενο παράδειγμα(παράδειγμα 1 της παραγράφου 7.3), αλλά αυτή τη φορά ο τύπος της συνάρτησης θα είναι int και την εμφάνιση του αποτελέσματος στην οθόνη(το printf()), θα το κάνουμε μέσω της main(), που θα έχει ενημερωθεί για το σωστό αποτέλεσμα. Παράδειγμα void calc_factorial( int ); /* Πρωτότυπο συνάρτησης */ int number = 0,apotelesma; printf("enter a number\n"); scanf("%d", &number ); apotelesma=calc_factorial(number); printf("to paragontiko tou %d einai %d\n",number,apotelesma); printf("telos programmatos!!\n"); int calc_factorial(int n) int i, paragontiko=1; for( i = 1; i <= n; ++i ) paragontiko = paragontiko * i; // Ίδιο με το paragontiko *=i; return paragontiko; Άρα, εδώ η main() στέλνει το νούμερο μέσω της συνάρτησης από τη μεταβλητή number στη μεταβλητή n της συνάρτησης, εκείνη υπολογίζει το παραγοντικό και το επιστρέφει (εδώ παίζει ρόλο ο τύπος της συνάρτησης), στη main και συγκεκριμένα στη μεταβλητή apotelesma, ώστε να εμφανιστεί στην οθόνη. Εδώ, θα δούμε πως επηρεάζει ο τύπος της συνάρτησης τον αριθμό που επιστρέφεται: ΣΩΣΤΟ float add_numbers( float n1, float n2 ) return n1 + n2; //Επιστρέφει στη main το άθροισμα των αριθμών(είναι float) 6

ΛΑΘΟΣ float add_numbers( float n1, float n2 ) // γιατί το 6 είναι τύπου int, ενώ ο τύπος της συνάρτησης είναι float return 6; ΣΩΣΤΟ float add_numbers( float n1, float n2 ) return 6.0; // Επιστρέφει στη main το 6.0, άσχετα πόσο είναι οι αριθμοί Μια συνάρτηση μπορεί να περιέχει περισσότερες από μία return δηλώσεις. Όμως πάντα μόνο μια εκτελείται, αφού μετά από αυτήν το πρόγραμμα συνεχίζει από τη main, και βγαίνει εκτός της συνάρτησης. Άρα δεν εκτελούνται οι υπόλοιπες return. Έστω πως η συνάρτηση μας είναι η: int validate_input( char command ) switch( command ) case '+' : case '-' : return 1; case '*' : case '/' : return 2; default : return 0; Δε χρειάζεται break, αφού με τη return, σταματάει αυτόματα να εκτελείται η συνάρτηση (γίνεται επιστροφή στη συνέχεια του κώδικα της main) Παράδειγμα int calc_result( int, int ); /* Πρωτότυπο */ int digit1 = 10, digit2 = 30, answer = 0; answer = calc_result( digit1, digit2 ); printf("%d multiplied by %d is %d\n", digit1, digit2, answer ); int calc_result( int numb1, int numb2 ) result = numb1 * numb2; return result; Αποτελέσματα προγράμματος 7

10 multiplied by 30 is 300 8

7.5 Τοπικές(Local) & Γενικές (Global) Μεταβλητές Τοπικές (Local) Αυτές οι μεταβλητές υπάρχουν μόνο μέσα στη συγκεκριμένη συνάρτηση που τις δημιουργεί. Είναι άγνωστες σε άλλες συναρτήσεις και στο κυρίως πρόγραμμα. Οι τοπικές μεταβλητές παύουν να υπάρχουν μόλις ολοκληρωθεί η συνάρτηση που τις δημιούργησε. Ξαναδημιουργούνται κάθε φορά που εκτελείται ή καλείται η συγκεκριμένη συνάρτηση. Γενικές (Global) Αυτές οι μεταβλητές μπορούν να χρησιμοποιηθούν από οποιαδήποτε συνάρτηση περιλαμβάνεται στο πρόγραμμα. Δεν αναδημιουργούνται εάν η συνάρτηση επανεκτελείται ή επανακαλείται, αλλά συνεχίζουν να υπάρχουν και διατηρούν τις τιμές που έχουν εκείνη τη στιγμή. Έτσι, οποιαδήποτε συνάρτηση που θα τις έχει ξέρει ήδη την τιμή που έχουν. Παράδειγμα δήλωσης σφαιρικών(global) μεταβλητών Παράδειγμα: /* Οι παρακάτω είναι γενικές(global) μεταβλητές. Και οι main και οι υπόλοιπες συναρτήσεις γνωρίζουν την ύπαρξη τους και τι τιμή έχουν, ανά πάσα στιγμή */ int value1, value2, value3; int add_numbers( void ); /* Πρωτότυπο*/ int result; value1 = 10; // Έχουν ήδη οριστεί στην αρχή του προγράμματος value2 = 20; value3 = 30; result = add_numbers(); printf("the sum of %d + %d + %d is %d\n", value1,value2, value3, result); int add_numbers( void ) int result; result = value1 + value2 + value3; return result ; Αποτελέσματα προγράμματος The sum of 10 + 20 + 30 is 60 9

7.6 Ασκήσεις ΑΣΚΗΣΗ 1: Να πληκτρολογήσετε το παρακάτω πρόγραμμα και να εξηγήσετε τι κάνει. int calc_result( int, int, int ); int numb1, numb2, numb3, answer = 0; printf("give three integers:"); scanf("%d%d%d",&numb1, &numb2, &numb3); answer = calc_result( numb1, numb2, numb3 ); printf("%d + %d + %d = %d\n", numb1, numb2, numb3, answer); system("pause"); int calc_result( int var1, int var2, int var3 ) int sum; sum = var1 + var2 + var3; return( sum ); ΑΣΚΗΣΗ 2: Να δημιουργήσετε πρόγραμμα που να δέχεται από το πληκτρολόγιο θερμοκρασίες Fahrenheit και να τις μετατρέπει σε βαθμούς Κελσίου καλώντας μια void συνάρτηση. Ο τύπος είναι: celsius = (5/9)*(temp-32). Κάντε τις απαραίτητες αλλαγές στον τύπο, ώστε η μεταβλητή celcius να έχει το σωστό δεκαδικό αριθμό. ΑΣΚΗΣΗ 3: Να δημιουργήσετε πρόγραμμα που να δέχεται από το πληκτρολόγιο θερμοκρασίες Fahrenheit και να τις μετατρέπει σε βαθμούς Κελσίου καλώντας μια συνάρτηση που να επιστρέφει μια τιμή. ΑΣΚΗΣΗ 4: Να γραφεί πρόγραμμα που να δέχεται δύο πραγματικούς αριθμούς και να εκτελεί τις τέσσερις βασικές πράξεις καλώντας τέσσερις διαφορετικές συναρτήσεις που θα έχουν τα αντίστοιχα ονόματα. ΑΣΚΗΣΗ 5: Να γραφεί πρόγραμμα που να δέχεται δύο πραγματικούς αριθμούς και να τους στέλνει σε μια συνάρτηση τον καθένα(την ίδια), όπου θα υπολογίζεται το παραγοντικό τους, θα επιστρέφεται στην κύρια συνάρτηση και μέσα στην 10

κύρια συνάρτηση θα αθροίζονται τα δύο παραγοντικά και θα εμφανίζεται το άθροισμα τους. 11