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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ΕΠΛ 034: Εισαγωγήστον ΠρογραµµατισµόγιαΗΜΥ

ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

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

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

ΕΠΛ 034: Εισαγωγή στον Προγραμματισμό για ΗΜΥ

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

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

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

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

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

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

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

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

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

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

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

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

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

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

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

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

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

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

Εργαστήριο 1: Επανάληψη Βασικών Εννοιών στη Γλώσσα C

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

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

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

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

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

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

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

Προγραμματισμός Συστημάτων

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

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

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

ΠαράδειγµαΠρογραµµατισµού

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

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

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

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

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

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

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

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

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

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

είκτες και Πίνακες (2)

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

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

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

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

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

Transcript:

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

Κεφάλαιο 5 Συναρτήσεις

Θέματα ιάλεξης Χρησιμότητα Συναρτήσεων Σύνταξη και Σημασία Συναρτήσεων Συναρτήσεις Βιβλιοθήκης Ββλ

Παράδειγμα Γραψετε προγραμμα που τυπωνει το πιο Γραψετε προγραμμα που τυπωνει το πιο κατω σχημα:

Παράδειγμα Λύση 1 int main(){ printf( ****\n ); printf( * *\n ); printf( * *\n ); printf( ****\n ); Ροή Ελέγχου printf( ****\n ); printf( * *\n ); printf( * *\n ); printf( ****\n ); Εκτέλεση ίδιων εντολών σημαίνει ξαναγράψιμο ίδιων εντολών! printf( ****\n ); printf( * *\n ); printf( * *\n ); printf( ****\n ); return 0; }

Παράδειγμα Λύση 2 void display_square(){ square(){ printf( ****\n ); printf( * *\n ); printf( * *\n ); printf( ****\n ); } int main(){ display_square(); Ίδιο πρόγραμμα με συνάρτηση Επαναχρησιμοποίηση ίδιου κώδικα Ροή Ελέγχου display_square display_square(); square(); display_squaresquare display_square(); display_square return 0; }

Συναρτήσεις (Functions) Τι είναι? Ένα μαύρο κουτί στο οποίο δίνουμε πληροφορίες και μας επιστρέφει απαντήσεις Στην ουσία είναι τμήμα κώδικα που εκτελεί συγκεκριμένη διεργασία Γιατί μας ενδιαφέρουν? Αφαιρετικότητα (abstraction): διαχωρισμός ανάμεσα στο τι και το πώς. Αρθρωτός ρ σχεδιασμός (modular design) ιευκολύνει ανάπτυξη, κατανόηση και τροποποίηση κυρίως μεγάλων προγραμμάτων. Επαναχρησιμοποίηση (reuse).

Είδη Συναρτήσεων Συναρτήσεις Βιβλιοθήκης Εγγενείς συναρτήσεις δεν ορίζονται από τον χρήστη, π.χ. printf, scanf, rand ενσωμάτωση με την εντολή #include της κατάλληλης βιβλιοθήκης όπου η συνάρτηση είναι ορισμένη (π.χ. χ stdio.h, stdlib.h) Συναρτήσεις που ορίζονται από τον προγραμματιστή (user defined functions)

Παραδείγματα Εγγενών Συναρτήσεων

Σύνταξη Συναρτήσεων Κάθε πρόγραμμα στη C αποτελεíται απó μια ή περισσότερες συναρτήσεις Κάθε πρόγραμμα έχει μια συνάρτηση main Κάθε συνάρτηση ρη ηπρέπει να ορίζεται. ρζ Μια συνάρτηση πριν αναφερθεί πρέπει να έχει ήδη ορισθεί (defined) ή δηλωθεί (declared). εν μπορούμε να ορίσουμε μια συνάρτηση μέσα σε άλλη συνάρτηση.

Σύνταξη Ορισμού Συνάρτησης ιεπαφή <τύποςεπιστροφής> <όνομασυνάρτησης> (<λίσταπαραμέτρων>) { [ δηλώσεις μεταβλητών] [ εντολές] Σώμα συνάρτησης [return <έκφραση>;] } τέλος της συνάρτησης

Σύνταξη Ορισμού Συνάρτησης Παράδειγμα ιεπαφή int addition (int a, int b) { int result; Κλήση συνάρτησης int main() { int a = 10; int b = 25; result = a + b; Σώμα συνάρτησης int c = addition(a, b); return result; } τέλος της main } τέλος της συνάρτησης

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

Συνάρτηση main χωρίς παραμέτρους int main(){ printf( Hello out there!\n ); return 0; }

Συνάρτηση χωρίς παραμέτρους void display_six_stars(){ six stars(){ printf( ******\n ); return; }

Συνάρτηση χωρίς παραμέτρους (συνέχεια) void display_six_stars(){ six stars(){ } printf( ******\n ); int main(){ display_six_stars(); } display_six_stars(); return 0; επιστροφή Κλήση συνάρτησης 2 φορές

Συνάρτηση με 1 Παράμετρο χωρίς τιμή εξόδου Χωρίς Επιστροφή (1) void display_area(float area){ printf( The area is %f square meters\n,area); }

Συνάρτηση με 1 Παράμετρο χωρίς τιμή εξόδου Χωρίς Επιστροφή (2) void compute_and_display_mod3(int number){ printf( %dmod3 is %d\n,number, number%3); } void compute_and_display_mod3(int di d3(i t number){ int mod3; /* τοπική μεταβλητή */ mod3 = number%3; /* υπολογισμός */ } printf( %dmod3 is %d\n, number, mod3);

Συνάρτηση με Πολλές Παραμέτρους χωρίς τιμή εξόδου Χωρίς Επιστροφή void display_area(float length, float width, float area){ printf( The area of a rectangle with length %f m and width %f m is %f sq. m\n, length, width, area); }

Συναρτήσεις με παραμέτρους και τιμή εξόδου Συνάρτηση παίρνει δυο παραμέτρους Επιστρέφει την τιμή της area που είναι τύπου float float compute_area(float a, float b){ float area; /* τοπική μεταβλητή */ area = a *b b; /* υπολογισμός */ return area; }

Συναρτήσεις με παραμέτρους και τιμή εξόδου - Εναλλακτικά Συνάρτηση παίρνει δυο παραμέτρους Επιστρέφει την τιμή της έκφρασης a*b που είναι τύπου float float compute_area(float a, float b){ return a * b; /* υπολογισμός και επιστροφή τιμής εξόδου */ }

Παραμέτροι Επιτρέπουν την επικοινωνιά (διασύνδεση) μεταξύ συναρτήσεων (είσοδο και έξοδο δεδομένων) Λίστα παραμέτρων ορίζει τον αριθμό, σειρά και τύπο τιμών που δέχεται μια συνάρτηση Για είσοδο: πέρασμα δια τιμής (τιμή) Για είσοδο/έξοδο: πέρασμα δια αναφοράς (διεύθυνση)- αργότερα

Σημασία Κλήσης έσμευση μνήμης για παραμέτρους ρ και τοπικές μεταβλητές της συνάρτησης (εάν υπάρχουν) Αντιγραφή των τιμών των ορισμάτων (πραγματικοί παραμέτροι) στις τυπικές παραμέτρους (εάνά υπάρχουν παραμέτροι) ) αριθμός, σειρά και τύποι ορισμάτων να ταιριάζουν με τον αριθμό, σείρα και τύπους τυπικών παραμέτρων. Ξεκινά εκτέλεση από την πρώτη εντολή της η η ρ η ή ης συνάρτησης

Σημασία Επιστροφής Αποτίμηση της έκφρασης που ακολουθεί το return και αντιγραφή της τιμής εξόδου στο σημείο κλήσης (εάν επιστρέφεται τιμή). Συνέχιση εκτέλεσης με την εντολή που ακολουθεί την κλήση. Αποδέσμευση μνήμης που δεσμεύθηκε όταν έγινε η κλήση. Οι αντίστοιχες μεταβλητές δεν υφίστανται πλέον.

ήλωση Συνάρτησης (Πρωτότυπο) Σύνταξη Πρωτότυπου Συνάρτησης: <τύπος επιστροφής> <όνομα συνάρτησης>(<λίστα παραμέτρων>); Σημασία: επιτρέπει χρήση μιας συνάρτησης πριν ακόμα ορισθεί. Καλός προγραμματισμός: λίστα με πρωτότυπα όλων των συναρτήσεων σε ένα πρόγραμμα.

Πρωτότυπα Συναρτήσεων /* σχολια */ /* #include */ ήλωση συναρτήσεων (Πρωτότυπων) /* πρωτότυπα συναρτήσεων */ float compute_area(float length, float width); void error_message_for_negative_input(); i t() int get_grade(int student_id); /* σταθερες*/ Υλοποίηση συναρτήσεων /* ορισμός συναρτήσεων - μια είναι η main*/

Παράδειγμα

Παράδειγμα (συν.)

Παράδειγμα (συν.)

Παράδειγμα (συν.)

Εμβέλεια Μεταβλητής (scope) Το τμήμα του προγράμματος που μπορεί μια μεταβλητή να χρησιμοποιηθεί local (τοπικές): ηλώνονται στην αρχή ενός programming block {..} Χρήση οπουδήποτε μετά τον ορισμό μέσα στο block (συνάρτηση) global(σφαιρικές/καθολικές): ΕΝ ΤΙΣ ΧΡΗΣΙΜΟΠΟΙΟΥΜΕ/ΟΡΙΖΟΥΜΕ!!! ηλώνονται έξω από blocks (συναρτήσεις) Χρήση οπουδήποτε μετά τον ορισμό

Παράδειγμα Γράψετε μια συνάρτηση με την ακόλουθη διεπαφή: Η διαδικασία παίρνει μια παράμετρο, την ώρα (time), σε 24ωρη μορφή και τυπώνει την ώρα και τα λεπτά χωρισμένα: π.χ. εάν η τιμή της παραμέτρου εισόδου είναι1256, η έξοδος θα είναι The time is 12:56

Παράδειγμα Λύση void display_time(int time){ /* compute hours */ /* compute minutes */ /* display hours:minutes*/ } void display_time(int time) { int hours,minutes; /* compute hours */ hours = time / 100; /* compute minutes */ minutes = time % 100; /* display hours:minutes*/ printf( The time is %02d: %02d\n, hours, minutes); }

Περίληψη Χρησιμότητα η Συναρτήσεων ρή Αφαιρετικότητα Άρθρωση Επαναχρησιμοποίηση Συναρτήσεις Βιβλιοθήκης (User defined) Συναρτήσεις Σύνταξη και Σημασία Ορισμός, ήλωση, Κλήση Συνάρτησης Παράμετροι Επιστροφή τιμής Εμβέλεια Μεταβλητών

Τέλος Κεφαλαίου 5