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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

7. Είσοδος / Έξοδος Δεδομένων, Μορφοποίηση Δεδομένων Εξόδου

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

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

Εισαγωγή στους Αλγόριθμους και τον Προγραμματισμό. 4η Διάλεξη Πίνακες Συναρτήσεις

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

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

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

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

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

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

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

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

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

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

10. Εντολές επανάληψηςκαι οι εντολές

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

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

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

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

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

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

ΕΠΛ 032.3: Προγραµµατισµός ΜεθόδωνΕπίλυσηςΠροβληµάτων

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

9. Εντολές επανάληψηςκαι η εντολή

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

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

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

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

5 &6. Τύποι δεδομένων, τελεστές και

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

Κεφάλαιο : Επαναλήψεις (oι βρόγχοιfor, do-while) (Διάλεξη 10) Εντολές Επανάληψης που θα καλυφθούν σήμερα

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Κεφάλαιο : Επαναλήψεις (for, do-while)

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

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

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

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

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

Η-Υ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ. Εργαστήριο 1 Εισαγωγή στη C. Σοφία Μπαλτζή s.mpaltzi@di.uoa.gr

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

Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων. 14. Πίνακες Ι. Ιωάννης Κατάκης. ΕΠΛ 032: Προγραμματισμός Μεθόδων Επίλυσης Προβλημάτων

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

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

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

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

Transcript:

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

Σήμερα o Δομημένος Προγραμματισμός o Ορισμός Συνάρτησης o Δήλωση Συνάρτησης o Κλήση συνάρτησης

Ο ρόλος των συναρτήσεων

Μη-Δομημένος Προγραμματισμός Το πρόγραμμαστα δεξιά δεν είναι Αρθρωτό(δεν έχει σωστή δομή). Όλη η λειτουργικότητα ορίζεται μέσα στην main. Το αποτέλεσμα είναι: Δύσκολη Κατανόηση Δύσκολη Διόρθωση Λαθών Δύσκολη Συντήρηση Δύσκολη Επέκταση Στην συνέχεια θα δούμε πως θα γράφαμε το ίδιο πρόγραμμα δομημένα // ENA PROGRAMMA MH-ARTHRWTO #include <stdio.h> // ORISMOS SYNARTHSHS MAIN intmain() inta = 20; intx; intb = 5; inttotal = 1; inti; intf = 1; //Paragontiko for (i=1; i<=b; i++) f *= i; //Power for(i = 0; i < b; i++) total = total * a; printf("q1(%d)=%d \n", b, f); printf("q2(%d,%d)=%d \n", a, b, total); 11-4

Δομημένος Προγραμματισμός o Πραγματικά συστήματα είναι πολύ μεγάλα. o Εκατομμύρια γραμμές κώδικα σε συστήματα Windows 3.1 (1992) (3,000,000) Windows XP (2002) (40,000,000) Windows Vista (2006) (50,000,000) o Αρχές δομημένου προγραμματισμού: Η ροήελέγχου στο πρόγραμμα πρέπει να είναι όσο το δυνατόν πιο απλή Η συγγραφή προγράμματος ακολουθεί το μοντέλο «Από πάνω-προς τα κάτω» (top-down) 11-5

Σχεδιασμός Top-down o Αναγωγή προβλήματος σε απλούστερα προβλήματα o Τελικά καταλήγουμε Σε πολλά μικρά προβλήματα Καθένα μπορεί να επιλυθεί με ευκολία π.χ. θέλουμε ένα πρόγραμμα που υπολογίζει εμβαδά και περιφέρεια ενός κύκλου. Διασπάμε το πρόβλημα σε υπόπροβλήματα: 1) Εύρεση Εμβαδού, 2) Εύρεση Περιφέρειας. o Στην γλώσσα C, όπως και στις περισσότερες γλώσσες προγραμματισμού, υπάρχει η έννοια της συνάρτησης. o Η συνάρτηση χρησιμοποιείται για να κωδικοποιεί τα απλά προβλήματα. 11-6

Συναρτήσεις Βιβλιοθήκης o Έχουμε ήδη δει κάποιες βασικές συναρτήσεις (printf, scanf) o Αυτές είναι αποθηκευμένες σε βιβλιοθήκες Oνομάζονται συναρτήσεις βιβλιοθήκης Δεν ορίζονται από τον χρήστη Ενσωμάτωση με το include 11-7

Συναρτήσεις (Functions) o Γιατί μας ενδιαφέρουν Αφαιρετικότητα (abstraction):διαχωρισμός ανάμεσα στο τι και το πώς Aρθρωτός σχεδιασμός(modular design) Επαναχρησιμοποίηση(reuse) 11-8

Συναρτήσεις Βιβλιοθήκης #include <stdio.h> int main ( ) printf είναι το όνομα συνάρτησης στην βιβλιοθήκη stdio printf( Hello World!\n ); return 0; Αυτό είναι ένα string που Αυτή η εντολή είναι κλήση συνάρτησης περνάμε ως όρισμα στην συνάρτηση printf 11-9

Συναρτήσεις Παρατήρηση: o Κάθε συνάρτηση παίρνει 0 ή περισσότερες τιμές εισόδου (arguments) o Οι συναρτήσεις επιστρέφουν ΕΝΑ αποτέλεσμα(return). // Είσοδος(τίποτα) Αποτέλεσμα(0) intmain ( ) // Είσοδος( Hello World!\n ) //Αποτέλεσμα(0) printf( Hello World!\n ); return 0; Αν κάποιος ορίσει την ακόλουθη πρόταση : printf( %d, printf( Hello World!\n )); θα εκτυπωθεί στην οθόνη: 0 Αυτό δείχνει ότι η printf επιστρέφει κάτι επιπλέον της εκτύπωσης που κάνει 11-10

Συνάρτηση main int main(void) printf( Hello!\n ); return 0; int main() printf( Hello!\n ); return 0; main() printf( Hello!\n ); main(void) printf( Hello!\n ); Όλες οι περιπτώσεις είναι σωστές Όμως η πάνω αριστερά είναι η πιο ξεκάθαρη (διότι δηλώνουμε ρητά το input και το output) 11-11

Συναρτήσεις Χρήστη (User Functions) O προγραμματιστής μπορεί να γράψει και τις δικές του συναρτήσεις (user defined functions) int sum(int, int); intsum(inta, intb) return a + b; intmain() inta = 5, b=6; printf("%d + %d = %d", a, b, sum(a,b)); return 0; Τιμές Εισόδου Αποτέλεσμα επιστροφής Αυτό θα είναι το βασικό αντικείμενο μελέτης αυτής της ενότητας. Θα μελετήσουμε στην συνέχεια καλύτερα τις συναρτήσεις χρήστη. 11-12

Δομή Προγράμματος με χρήση συναρτήσεων Χρήστη #include <stdio.h> A void PrintMessage(void); Πρότυπο(Δήλωση) Συνάρτησης (Δηλώνουν τι επιπλέον συναρτήσεις θα χρησιμοποιήσουμε χωρίς να ορίζουμε πως) Β main () PrintMessage( ); (Ζητάμε να εκτελεστεί η συνάρτηση) Κλήση Συνάρτησης C void PrintMessage(void) Ορισμός Συνάρτησης (Ορίζουμε ποιες εντολές θέλουμε να εκτελεστούν με την κλήση) printf( A message for you:\n\n ); printf( Have a Nice Day!\n ); 11-13

A) Τοπρότυπο συνάρτησης o Πληροφορεί τον compiler ότι υπάρχει μία συνάρτηση που θα οριστεί αργότερα. o Σημασία: επιτρέπει χρήση μιας συνάρτησης πριν ακόμα ορισθεί τι επιστρέφει όνομα τι ορίσματα παίρνει void PrintMessage(void); o Καλός προγραμματισμός: λίστα με πρότυπα όλων των συναρτήσεων σε ένα πρόγραμμα 11-14

B) Κλήση συνάρτησης o Περνάει ο έλεγχος προγράμματος στη συνάρτηση o Πρέπει να έχει το ίδιο όνομα, αριθμό και τύπο παραμέτρων void PrintMessage(void) printf( Hello ); main () ίδιο όνομα δεν υπάρχουν ορίσματα PrintMessage( ); Εκτυπώνει Hello στην οθόνη 11-15

C) Ορισμός συνάρτησης o Στον ορισμό μιας συνάρτησης ορίζουμε ποιες ακριβώς εντολές θέλουμε να εκτελούνται void PrintMessage(void) printf( A message for you:\n\n ); printf( Have a Nice Day\n ); o Μόλις τελειώσει η συνάρτηση PrintMessage, o έλεγχος επιστρέφει σε αυτόν που την κάλεσε, εδώ στη main ( ) 11-16

C) Ορισμός συνάρτησης: Σύνταξη Σύνταξη <Τύπος τιμής εξόδου> <Όνομα Συνάρτησης> (<Λίστα Παραμέτρων>) o <Τύπος τιμής εξόδου>: int, char, float, double, void, σύνθετος o <Όνομα Συνάρτησης>: συντακτικά ορθό όνομα o <Λίστα Παραμέτρων>: άδεια (void) ή τύπος μεταβλητής, τύπος μεταβλητής,. 11-17

Παράδειγμα 1 #include <stdio.h> void PrintMessage(int); main( ) int num; printf("enter an integer: "); scanf("%d", &num); PrintMessage(num); Το πρόγραμμα εκτυπώνει : Have a nice day counter φορές void PrintMessage(int counter) inti; for(i = 0; i < counter; i++) printf("have a nice day\n\n"); 11-18

Παράδειγμα 1 Τα σχόλια κάνουν τον κώδικα επεξηγηματικό /* * PrintMessage * Input: Some integer @counter * Functionality: Prints out Have a nice day @counter times * Output: void */ void PrintMessage(int counter) inti; for (i = 0; i < counter; i++) printf( Have a nice day\n ); 11-19

Παράδειγμα 2 Ας δούμε ξανά το παράδειγμα του μη-δομημένου προγράμματος της διαφάνειας 11.2. Αυτή την φορά θα το δομήσουμε με συναρτήσεις #include <stdio.h> // PROTYPA SYNARTHSEWN int mypower(int,int); int myfactorial(int); intmain() inta = 2; intb = 5; // KLHSH SYNARTHSEWN printf("pow(%d,%d)=%d \n", a, b, mypower(a,b)); printf("fact(%d)=%d \n", b, myfactorial(b)); συνεχίζεται Εκτυπώνει pow(2,5)=32 fact(5)=120 11-20

Παράδειγμα 2 // Mypowerυψωνειτο valστη δυναμηpow int mypower(int val, int pow) inttotal = 1; inti; for(i = 0; i < pow; i++) total = total * val; return total; // Myfactorial επιστρεφει το παραγοντικο του val int myfactorial(int val) intfactorial = 1;inti; if (val== 0) factorial = 1; else for (i=1; i<=val; i++) factorial *= i; return factorial; 11-21

Τέλος διάλεξης