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

Σχετικά έγγραφα
ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΑΘΗΜΑ 6 Ο. Συναρτήσεις Τοπικές, καθολικές, στατικές μεταβλητές Μεταβλητές τύπου extern και register Αναδρομή

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

Ο πιο κάτω πίνακας περιγράφει σε ποιες περιπτώσεις χρησιμοποιούμε τους τρεις πιο πάνω τρόπους:

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 6: Συναρτήσεις και Αναδρομή

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

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

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

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

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

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

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

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

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

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

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

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

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

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

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

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

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

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

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

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

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

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

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

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

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

Τεχνικός Εφαρμογών Πληροφορικής

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

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

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

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

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

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

Εξοικ Εξ ε οικ ίωση ε με το το πρόγ ραμμα πρόγ DEV C++ Επικοι Επικ νωνία οι Χρήσ Χρήστη τη Υπολ Υπο ογισ λ τή

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

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

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

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

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

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

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

Επανάληψη. Εντολές while, for, do-while

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

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

Συναρτήσεις. Κατασκευαστικά Τεµάχια για τη ηµιουργία Αρθρωτών Προγραµµάτων

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

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

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

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7) Είσοδος/ Έξοδος

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

Κεφάλαιο 2.6: Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου. (Διάλεξη 7)

Άσκηση 1. Α. Υπολογίστε χωρίς να εκτελέσετε κώδικα FORTRAN τα παρακάτω: Ποιά είναι η τελική τιμή του Z στα παρακάτω κομμάτια κώδικα FORTRAN:

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

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

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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ 035: οµές εδοµένων και Αλγόριθµοι για Ηλεκτρολόγους Μηχανικούς και Μηχανικούς Υπολογιστών

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

8. Συνθήκες ελέγχου, λογικοί τελεστές

Μάριος Αγγελίδης Ενότητες βιβλίου: 2.1, 2.3, 6.1 (εκτός ύλης αλλά χρειάζεται για την συνέχεια) Ώρες διδασκαλίας: 1

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

Προγραµµατιστικές Τεχνικές

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

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

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

Διάλεξη 13: Δομές Δεδομένων ΙΙ (Ταξινομημένες Λίστες)

Transcript:

Συναρτήσεις Εισαγωγή Η χρήση συναρτήσεων στα προγράμματα της γλώσσας C είναι πολύ σημαντική καθώς μας επιτρέπει τη διάσπαση ενός προβλήματος σε μικρότερα υποπροβλήματα τα οποία μπορούμε να επιλύσουμε πιο εύκολα. Παράλληλα, η διάσπαση αυτή, μας επιτρέπει την επαναχρησιμοποίηση κάθε συνάρτησης, κάθε φορά που εμείς θέλουμε να εκτελεστεί μια συγκεκριμένη εργασία. Γενικά, κάθε συνάρτηση αναλαμβάνει να διεκπεραιώσει μια εργασία. Ακολούθως, ο συντονισμός και συνεργασία των συναρτήσεων μεταξύ τους αναλαμβάνει την επίλυση ενός προβλήματος. Θεωρήστε το ακόλουθο πρόβλημα: Ζητείται ο χρήστης να καταχωρεί πέντε ακέραιους αριθμούς και να υπολογίζεται και τυπώνεται το άθροισμα τους, ο μέσος όρος τους, ο μεγαλύτερος και ο μικρότερος. Στο πρόβλημα αυτό διακρίνουμε πέντε διαφορετικές συναρτήσεις οι οποίες κάνουν ανεξάρτητες εργασίες που θα χρειαστούν όμως για την λύση του προβλήματος. Η πρώτη συνάρτηση θα δέχεται ακέραιο αριθμό από το χρήστη, η δεύτερη θα υπολογίζει το άθροισμα, η τρίτη το μέσο όρο κλπ. Με αυτό το τρόπο επικεντρωνόμαστε στην επίλυση ενός πιο συγκεκριμένου προβλήματος, όπως το άθροισμα ακεραίων αριθμών. Είναι σημαντικό, κάθε συνάρτηση να είναι όσο το δυνατό ανεξάρτητη από τις υπόλοιπες, όσον αφορά την εργασία που εκτελούν. Αυτό μας εξασφαλίζει ότι πιο εύκολα θα μπορέσουμε να την επαναχρησιμοποιήσουμε. Στο πιο πάνω παράδειγμα, θα μπορούσαμε να δημιουργήσουμε μια συνάρτηση που να υπολογίζει και τυπώνει όλες τις εργασίες (άθροισμα, μέσος όρος, μεγαλύτερος, μικρότερος). Αν όμως για κάποιο λόγο χρειαστεί ο υπολογισμός μόνο του αθροίσματος, δε θα είναι δυνατή η επαναχρησιμοποίηση της συνάρτησης αυτής γιατί θα υπολογίσει και τυπώσει αχρείαστες πληροφορίες. Ο βαθμός διάσπασης ενός προβλήματος σε υποπροβλήματα εξαρτάται από τη φύση του προβλήματος, αλλά και από τον ίδιο τον προγραμματιστή. Μεγάλη διάσπαση μπορεί να κάνει το πρόβλημα πιο σύνθετο από ότι στην πραγματικότητα είναι, μικρή διάσπαση δημιουργεί προβλήματα επαναχρησιμοποίησης. Στο πιο πάνω παράδειγμα, αν το πρόβλημα κάνει συχνή χρήση ατομικών υπολογισμών (άθροισμα, μέσος όρος κλπ) τότε η δημιουργία ξεχωριστών συναρτήσεων προτιμάται. Αντίθετα, αν το πρόβλημα συχνά χρειάζεται να κάνει όλους τους υπολογισμούς κάθε φορά, τότε μια συνάρτηση με όλους τους υπολογισμούς είναι ικανοποιητική. Μαρία Σταυρινού 1

Ορισμός Μια συνάρτηση έχει την εξής μορφή: data_type function_name(arguments) Ορισμός μεταβλητών Εντολή 1 η Εντολή 2 η... όπου data_type Function_name Arguments void int float double Κλπ Οποιαδήποτε συμβολοσειρά που να αρχίζει με γράμμα ή underscore ( _ ) Μεταβλητές εισόδου ή εξόδου. Το data_type συμβολίζει το τύπο δεδομένου που η συνάρτηση επιστρέφει. Αν δηλαδή μια συνάρτηση έχει σαν τύπο δεδομένου το int, σημαίνει ότι η συνάρτηση, μετά την εκτέλεση των εντολών της πρέπει να επιστρέψει ένα ακέραιο αριθμό. Αν ο τύπος δεδομένων είναι void τότε η συνάρτηση δεν επιστρέφει τίποτα. Arguments είναι μεταβλητές που παριστάνουν δεδομένα εισόδου στη συνάρτηση ή και δεδομένα εξόδου. Η χρήση τους θα φανεί πιο κάτω. Μαρία Σταυρινού 2

Πρωτότυπα συναρτήσεων Όπως στις μεταβλητές, έτσι και στις συναρτήσεις, για να είναι δυνατή η χρήση τους, πρέπει πρώτα να ορισθούν. Αυτό επιτυγχάνεται με τα πρωτότυπα συναρτήσεων τα οποία τοποθετούνται πάνω από την συνάρτηση main. Ένα πρωτότυπο δε διαφέρει καθόλου από τον ορισμό μιας συνάρτησης. Η διαφορά είναι ότι τελειώνει με ; και δεν ακολουθείται με, αφού θέλουμε μόνο να την ορίσουμε και όχι να την υλοποιήσουμε. data_type function_name(arguments); Είναι ευνόητο ότι ο τύπος επιστροφής της συνάρτησης, το όνομα της και οι παράμετροι της να είναι τα ίδια και στην υλοποίηση της. Άσκηση Να υλοποιηθεί το πρόβλημα που περιγράφηκε πιο πάνω. Υλοποιήστε πέντε διαφορετικές συναρτήσεις που να υπολογίζουν το άθροισμα, μέσο όρο, το μικρότερο και μεγαλύτερο από πέντε ακέραιους μη αρνητικούς αριθμούς που θα δίνει ο χρήστης. Κάθε συνάρτηση θα έχει σαν παραμέτρους εισόδου, τους πέντε αριθμούς που έδωσε ο χρήστης και θα επιστρέφει η καθεμιά το αποτέλεσμα που υπολογίζει. Λύση (Για τις συναρτήσεις αθροίσματος και μέσου όρου) #include <stdio.h> /*Prototypes*/ int User_Number(void); float Number_Sum(int a, int b, int c, int d, int e); float Number_Average(int num1, int num2, int num3, int num4, int num5); void main(void) Μαρία Σταυρινού 3

int num1, num2, num3, num4, num5; float sum; float average; /*Call function to get numbers from the user*/ num1 = User_Number(); num2 = User_Number(); num3 = User_Number(); num4 = User_Number(); num5 = User_Number(); /*Call function to compute the sum*/ sum = Number_Sum(num1, num2, num3, num4, num5); printf("\nthe sum is %.2f.", sum); /*Call function to compute the average*/ average = Number_Average(num1, num2, num3, num4, num5); printf("\nthe average is %.2f.", average); Μαρία Σταυρινού 4

int User_Number() int number; printf("please, enter a number:"); scanf("%d", &number); while (number < 0) printf("you have entered a negative number. Please, enter a positive number:"); scanf("%d", &number); return number; float Number_Sum(int a, int b, int c, int d, int e) float result; result = a + b + c + d + e; return result; float Number_Average(int num1, int num2, int num3, int num4, int num5) float avg; Μαρία Σταυρινού 5

/*Call function to compute the sum*/ avg = Number_Sum(num1, num2, num3, num4, num5) / 5; return avg; Να υλοποιηθούν και οι συναρτήσεις για εύρεση του μικρότερου και μεγαλύτερου αριθμού. Γενικές σημειώσεις Η επιστροφή τιμών από μια συνάρτηση, επιτυγχάνεται με τη χρήση της εντολής return. Η κλήση μιας συνάρτησης, επιτυγχάνεται γράφοντας το όνομα της καθώς και τις παραμέτρους της. Αν δεν έχει παραμέτρους, γράφονται δύο κενές παρενθέσεις (). Αν μια συνάρτηση επιστρέφει κάποια τιμή, πρέπει η τιμή αυτή να ανατεθεί για παράδειγμα σε μια άλλη μεταβλητή. Μαρία Σταυρινού 6