Συναρτήσεις ΙΙ. Σημερινό μάθημα

Σχετικά έγγραφα
Συναρτήσεις. Σημερινό μάθημα

Pointers. Σημερινό Μάθημα! Χρήση pointer Τελεστής * Τελεστής & Γενικοί δείκτες Ανάκληση Δέσμευση μνήμης new / delete Pointer σε αντικείμενο 2

Αναφορές (References)

Συναρτήσεις & Κλάσεις

Classes. Σημερινό Μάθημα. Constructor και destructor Συναρτήσεις μέλη const Inline συναρτήσεις Δηλώσεις κλάσεων Σύνθετες κλάσεις

Ειδικά Θέματα Ι. Σήμερα!

Κληρονομικότητα. Σήμερα! Κλάση Βάσης Παράγωγη κλάση Απλή κληρονομικότητα Protected δεδομένα Constructors & Destructors overloading

Πολυμορφισμός. Σήμερα! Virtual Κληρονομικότητα Mixin classes Αφηρημένοι τύποι δεδομένων Pure Virtual συναρτήσεις

Αναγνώριση Προτύπων. Σημερινό Μάθημα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Εαρινό Εξάμηνο

Αναγνώριση Προτύπων. Σήμερα! Λόγος Πιθανοφάνειας Πιθανότητα Λάθους Κόστος Ρίσκο Bayes Ελάχιστη πιθανότητα λάθους για πολλές κλάσεις

Πολυμορφισμός. Σήμερα!

Κληρονομικότητα. Σήμερα!

Αριθμητικοί αλγόριθμοι

Κεφάλαιο Η εκθετική κατανομή. Η πυκνότητα πιθανότητας της εκθετικής κατανομής δίδεται από την σχέση (1.1) f(x) = 0 αν x < 0.

ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ Γ ΤΑΞΗ

Αλγόριθμοι & Βελτιστοποίηση

Επίλυση ειδικών μορφών ΣΔΕ

Ψηφιακή Εικόνα. Σημερινό μάθημα!

Αντικειμενοστραφής. Προγραμματισμού

Οι γέφυρες του ποταμού... Pregel (Konigsberg)

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

Εξαναγκασμένες ταλαντώσεις, Ιδιοτιμές με πολλαπλότητα, Εκθετικά πινάκων. 9 Απριλίου 2013, Βόλος

Η εξίσωση Black-Scholes

Αποδεικτικές Διαδικασίες και Μαθηματική Επαγωγή.

Δήμος Σωτήριος Υ.Δ. Εργαστήριο Λογικής & Επιστήμης Υπολογιστών. Τομέας Τεχνολογίας Πληροφορικής & Υπολογιστών Σ.Η.Μ.Μ.Υ. Ε.Μ.Π.

Διάρκεια: 2 ώρες 17/9/2009 ΘΕΜΑΤΑ 1) (2 μονάδες) Δεδομένης της περιγραφής που ακολουθεί δώστε το σχεδιασμό κλάσεων του συστήματος:

21/11/2005 Διακριτά Μαθηματικά. Γραφήματα ΒΑΣΙΚΗ ΟΡΟΛΟΓΙΑ : ΜΟΝΟΠΑΤΙΑ ΚΑΙ ΚΥΚΛΟΙ Δ Ι. Γεώργιος Βούρος Πανεπιστήμιο Αιγαίου

CSE.UOI : Μεταπτυχιακό Μάθημα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Εαρινό Εξάμηνο

Ειδικά Θέματα. Σήμερα. Ισότητα Αντικειμένων Friend classes Operator overloading

Ταξινόμηση των μοντέλων διασποράς ατμοσφαιρικών ρύπων βασισμένη σε μαθηματικά κριτήρια.

ΘΕΜΑ 1ο Α. α) Δίνεται η συνάρτηση F(x)=f(x)+g(x). Αν οι συναρτήσεις f, g είναι παραγωγίσιμες, να αποδείξετε ότι: F (x)=f (x)+g (x).

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

Ας υποθέσουμε ότι ο παίκτης Ι διαλέγει πρώτος την τυχαιοποιημένη στρατηγική (x 1, x 2 ), x 1, x2 0,

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

Παραβολή ψ=αχ 2 +βχ+γ, α 0. Η παραβολή ψ = αχ 2. Γενικά : Κάθε συνάρτηση της μορφής ψ=αχ 2 + βχ +γ, α 0 λέγεται τετραγωνική συνάρτηση.

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

ΣΤΟ ΙΑΤΡΕΙΟ. Με την πιστοποίηση του αποκτά πρόσβαση στο περιβάλλον του ιατρού που παρέχει η εφαρμογή.

Εφαρμογές στην κίνηση Brown

Φόρμα Σχεδιασμού Διάλεξης (ημ/α: 17/03/08, έκδοση: 1.0)

ΑΠΟΛΥΤΗΡΙΕΣ ΕΞΕΤΑΣΕΙΣ Γ ΤΑΞΗΣ ΕΝΙΑΙΟΥ ΛΥΚΕΙΟΥ ΤΡΙΤΗ 20 ΙΟΥΝΙΟΥ 2000 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ ΕΠΙΛΟΓΗΣ : ΑΡΧΕΣ ΟΙΚΟΝΟΜΙΚΗΣ ΘΕΩΡΙΑΣ ΣΥΝΟΛΟ ΣΕΛΙΔΩΝ: ΠΕΝΤΕ (5)

ΜΑΘΗΜΑ: ΟΙΚΟΝΟΜΙΚΗ ΘΕΩΡΙΑ

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

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

Εξέταση Ηλεκτρομαγνητισμού Ι 2 Φεβρουαρίου 2018

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;..

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

5. ΣΥΝΑΡΤΗΣΕΙΣ. (Πρόχειρο σχέδιο - Μαθήµατος 3) p Συναρτήσεις, που δεν επιστρέφουν κάποια τιµή

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

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

Αναγνώριση Προτύπων. Σημερινό Μάθημα

Ο Ισχυρός Νόμος των Μεγάλων Αριθμών

Προγραμματισμός Υπολογιστών με C++

Χαρακτηριστικές συναρτήσεις

Αναγνώριση Προτύπων. Σημερινό Μάθημα

Τίτλος Μαθήματος: Ηλεκτρονικοί Υπολογιστές IΙΙ. Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης

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

Εισαγωγικά. 1.1 Η σ-αλγεβρα ως πληροφορία

Εισαγωγή στην πληροφορική

Εισαγωγή στην πληροφορική

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

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

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

ΗΥ-150. Πίνακες (Arrays)

Η ανισότητα α β α±β α + β με α, β C και η χρήση της στην εύρεση ακροτάτων.

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

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

Επιχειρησιακή Ερευνα Ι

ΨΗΦΙΑΚΑ ΗΛΕΚΤΡΟΝΙΚΑ Σχεδίαση Λογικών Κυκλωμάτων

Κλάσεις και αντικείμενα #include <iostream.h<

Το κράτος είναι φτιαγμένο για τον άνθρωπο και όχι ο άνθρωπος για το κράτος. A. Einstein Πηγή:

Στοχαστικές διαφορικές εξισώσεις

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

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

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

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

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

Εντολές εισόδου - εξόδου. Εισαγωγή στη C++

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

ΠΑΝΕΠΙΣΤΗΜΙΑΚΑ ΦΡΟΝΤΙΣΤΗΡΙΑ ΚΟΛΛΙΝΤΖΑ ΜΑΘΗΜΑ: ΕΡΩΤΗΣΕΙΣ ΟΙΚΟΝΟΜΙΚΗΣ ΘΕΩΡΙΑΣ

Γραμμική Ανεξαρτησία. Τμήμα Μηχανικών Η/Υ Τηλεπικοινωνιών και ικτύων Πανεπιστήμιο Θεσσαλίας. 17 Μαρτίου 2013, Βόλος

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

Παντού σε αυτό το κεφάλαιο, αν δεν αναφέρεται κάτι διαφορετικό, δουλεύουμε σε ένα χώρο πιθανότητας (Ω, F, P) και η G F είναι μια σ-άλγεβρα.

Δ Ι Α Κ Ρ Ι Τ Α Μ Α Θ Η Μ Α Τ Ι Κ Α. 1η σειρά ασκήσεων

Ανεξαρτησία Ανεξαρτησία για οικογένειες συνόλων και τυχαίες μεταβλητές

Γλώσσες Περιγραφής Υλικού Ι

Κατασκευή της κίνησης Brown και απλές ιδιότητες

Ανεξαρτησία Ανεξαρτησία για οικογένειες συνόλων και τυχαίες μεταβλητές

5.1 Μετρήσιμες συναρτήσεις

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

Προγραμματισμός Αναδρομή

Aντικειμενοστραφής. Προγραμματισμός. Κληρονομικότητα

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

Ανελίξεις σε συνεχή χρόνο

Εργαστήριο 3 Εντολή for while, do while

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Γ ΤΑΞΗ

ΣΥΝΑΡΤΗΣΕΙΣ Παραδείγματα χρήσης συναρτήσεων

Σχέσεις και ιδιότητές τους

Transcript:

Συναρτήσεις ΙΙ 1 Σημερινό μάθημα Εμβέλεια Εμφωλίαση Τύπος αποθήκευσης Συναρτήσεις ως παράμετροι Πέρασμα με τιμή Πολλαπλά return Προκαθορισμένοι ρ Παράμετροι ρ Υπερφόρτωση συναρτήσεων Inline συναρτήσεις Αναδρομή 2 1

Τοπικές μεταβλητές παράδειγμα/1 #include <iostream.h> float Convert(float); int main() { float TempFer; float TempCel; cout << ʺPlease enter the temperature in Fahrenheit: ʺ; cin >> TempFer; e TempCel = Convert(TempFer); cout << ʺ\nHereʹs the temperature in Celsius: ʺ; cout << TempCel << endl; return 0; 3 Τοπικές μεταβλητές παράδειγμα/2 float Convert(float TempFer) { float TempCel; TempCel = ((TempFer 32) * 5) / 9; return TempCel; Please enter the temperature in Fahrenheit: 212 Hereʹs the temperature in Celsius: 100 4 2

Σφαιρικές μεταβλητές #include <iostream.h> void myfunction(); int x = 5, y = 7; int main() { cout << ʺx from main: ʺ << x << ʺ\nʺ; cout << ʺy from main: ʺ << y << ʺ\n\nʺ; myfunction(); cout << ʺBack from myfunction!\n\nʺ; cout << ʺx from main: ʺ << x << ʺ\nʺ; cout << ʺy y from main: ʺ << y << ʺ\nʺ; ; return 0; x from main: 5 y from main: 7 x from myfunction: 5 y from myfunction: 10 Back from myfunction! x from main: 5 y from main: 7 void myfunction() { int y = 10; cout << ʺx from myfunction: ʺ << x << ʺ\nʺ; cout << ʺy from myfunction: ʺ << y << ʺ\n\nʺ; 5 Εμβέλεια Εμβέλεια μιας μεταβλητής είναι το τμήμα του προγράμματος που η μεταβλητή μπορεί να χρησιμοποιηθεί (που υπάρχει) Μια σφαιρική μεταβλητή έχει απεριόριστη εμβέλεια Η εμβέλεια μιας τοπικής μεταβλητής περιορίζεται μέσα στη συνάρτηση που δηλώνεται Η εμβέλεια μιας block μεταβλητής περιορίζεται μέσα στο block που δηλώνεται 6 3

Παράδειγμα int main(void) { int y=10; { int a = y; cout << a << endl; cout << a << endl; 7 Εμφωλίαση Στη C++ δεν υπάρχει εμφωλίαση συναρτήσεων αλλά υπάρχει εμφωλίαση blocks. 8 4

Εμφωλιασμένα Blocks void foo(void) { for (int j=0;j<10;j++) j<10 j++) { int k = j*10; cout << j <<, << k << endl; { int m = j+k; cout << m <<, << j << endl; cout << m << << j << endl; m k j 9 Τύπος αποθήκευσης Κάθε μεταβλητή έχει τύπο αποθήκευσης Ορίζει την περίοδο κατά την οποία μια μεταβλητή «υπάρχει» στη μνήμη Κάποιες μεταβλητές δημιουργούνται μια φορά και διατηρούνται στη μνήμη π.χ. Global Άλλες δημιουργούνται πολλές φορές π.χ local σε συνάρτηση 10 5

Τύπος αποθήκευσης auto δημιουργούνται κάθε φορά που μπαίνουμε στο block που υπάρχουν register το ίδιο με τις auto, αλλά υπαγορεύουν στον compiler να είναι πιο γρήγορος (πως;). static δημιουργείται μόνο μια φορά extern global μεταβλητή δηλωμένη αλλού 11 auto int j; Τύποι αποθήκευσης register int i_need_to_be_fast; static char remember_me; extern double a_global; 12 6

Πρακτική χρήση Οι Local μεταβλητές είναι auto εξ ορισμού Οι Global μεταβλητές είναι static εξ ορισμού Δηλώνοντας μια local μεταβλητή ως static σημαίνει ότι θα θυμάται την τελευταία τιμή της 13 static example int countcalls(void) { static int count = 0; count++; return(count); cout << countcalls() << endl; cout << countcalls() << endl; cout << countcalls() << endl; 14 7

Συναρτήσεις ως παράμετροι Answer = (double(triple(square(cube(myvalue))))); 15 Πέρασμα με τιμή παράδειγμα #include <iostream.h> void swap(int x, int y); int main() { int x = 5, y = 10; cout << ʺMain. Before swap, x: ʺ << x << ʺ y: ʺ << y << ʺ\nʺ; swap(x,y); cout << ʺMain. After swap, x: ʺ << x << ʺ y: ʺ << y << ʺ\nʺ; return 0; void swap (int x, int y) { int temp; cout << ʺSwap. Before swap, x: ʺ << x << ʺ y: ʺ << y << ʺ\nʺ; temp = x; x = y; y = temp; cout << ʺSwap. After swap, x: ʺ << x << ʺ y: ʺ << y << ʺ\nʺ; 16 8

Πέρασμα με τιμή έξοδος Main. Before swap, x: 5 y: 10 Swap. Before swap, x: 5 y: 10 Swap. After swap, x: 10 y: 5 Main. After swap, x: 5 y: 10 17 Πολλαπλά return/1 #include <iostream.h> int Doubler(int AmountToDouble); int main() { int result = 0; int input; cout << ʺEnter a number between 0 and 10,000 to double: ʺ; cin >> input; cout << ʺ\nBefore doubler is called... ʺ; cout << ʺ\ninput: ʺ << input << ʺ doubled: ʺ << result << ʺ\nʺ; ; result = Doubler(input); cout << ʺ\nBack from Doubler...\nʺ; cout << ʺ\ninput: ʺ << input << ʺ doubled: ʺ << result << ʺ\nʺ; return 0; 18 9

Πολλαπλά return/2 int Doubler(int original) { if (original <= 10000) return original * 2; else return 1; cout << ʺYou canʹt get here!\nʺ; 19 Προκαθορισμένοι Παράμετροι #include <iostream.h> int AreaCube(int length, int width = 25, int height = 1); int main() { int length = 100; int width = 50; int height = 2; int area; area = AreaCube(length, width, height); cout << ʺFirst area equals: ʺ << area << ʺ\nʺ; area = AreaCube(length, width); cout << ʺSecond time area equals: ʺ << area << ʺ\nʺ; area = AreaCube(length); cout << ʺThird time area equals: ʺ << area << ʺ\nʺ; return 0; AreaCube(int length, int width, int height) { return (length * width * height); 20 10

Προκαθορισμένοι Παράμετροι έξοδος First area equals: 10000 Second time area equals: 5000 Third time area equals: 2500 21 Υπερφόρτωση συναρτήσεων Η C++ επιτρέπει τη πολλαπλή δημιουργία συναρτήσεων ρή με το ίδιο όνομα Οι συναρτήσεις αυτές πρέπει να διαφέρουν στο πλήθος ή τον τύπο των παραμέτρων: int myfunction (int, int); int myfunction (long, long); int myfunction (long); Κάθε φορά καλείται αυτόματα η κατάλληλη ανάλογα με τις παραμέτρους που περνάμε. 22 11

Inline συναρτήσεις #include <iostream.h> inline int Double(int); int main() { int target; cout << ʺEnter a number to work with: ʺ; cin >> target; cout << ʺ\nʺ; target = Double(target); cout << ʺTarget: ʺ << target << endl; target = Double(target); cout << ʺTarget: ʺ << target << endl; target = Double(target); cout << ʺTarget: ʺ << target << endl; return 0; int Double(int target) { return 2*target; 23 Αναδρομή Έχουμε αναδρομή όταν μία συνάρτηση καλεί λίτον εαυτό της Η αναδρομή είναι πολύ χρήσιμη σε περίπτωση πολύπλοκων υπολογισμών 24 12

Αναδρομή char *chicken_or_egg( int gen ) { if (gen == 0) return("chicken!"); else if (gen == 1) return( Egg! ); else return(chicken_or_egg(gen-1)); 25 Υπολογισμός παραγοντικού int factorial( int x ) { if (x == 1) return(1); else return(x * factorial(x-1)); 26 13

Σχεδιασμός αναδρομικών συναρτήσεων Ορίζουμε συνθήκη τερματισμού: Πρόκειται για την περίπτωση όπου η συνάρτηση παύει να καλεί τον εαυτό της Ορίζουμε επανάκληση της συνάρτησης από τον εαυτό της 27 συνθήκη τερματισμού Η συνθήκη τερματισμού αντιστοιχεί σε μια περίπτωση που γνωρίζουμε ήδη την απάντηση ή υπολογίζεται εύκολα Αν δεν έχουμε συνθήκη τερματισμού δεν πρέπει να χρησιμοποιήσουμε αναδρομή ή δεν έχουμε καταλάβει το πρόβλημα 28 14

Επανάκληση Η επανάκληση χρησιμοποιείται για να λύσουμε κάποιο υπο πρόβλημαπρόβλημα Σε κάθε επανάκληση οι παράμετροι θα πρέπει να διαφέρουν ώστε να πλησιάζουμε στη λύση 29 Λάθη? #include <iostream.h> int myfunc(unsigned short int x); int main() { unsigned short int x, y; y = myfunc(x); cout << ʺx: ʺ << x << ʺ y: ʺ << y << ʺ\nʺ; int myfunc(unsigned short int x); { return (4*x); 30 15

Λάθη? #include <iostream.h> void myfunc(unsigned short int x); int main() { unsigned short int x, y; y = myfunc(int); cout << ʺx: ʺ << x << ʺ y: ʺ << y << ʺ\nʺ; void myfunc(unsigned short int x) { return (4*x); 31 16