Συναρτήσεις
Κέρος Α. Ιωάννης Καθηγητής Πληροφορικής ΠΕ19 1ο ΕΠΑΛ Κιλκίς
Συναρτήσεις - Εισαγωγή Τι είναι μία συνάρτηση; Επικεφαλίδα της συνάρτησης Μία συνάρτηση είναι: Σώμα της συνάρτησης •ένα σύνολο εντολών, •οι οποίες αναφέρονται με ένα κοινό όνομα. προσοχή στην στοίχιση Πως ορίζεται μία συνάρτηση; • def,(από την λέξη define=ορίζω) • όνομα συνάρτησης,(που την κάνει να ταυτοποιείται μοναδικά) • (), (μέσα στην οποία θα μπουν οι παράμετροι εισόδου, τα δεδομένα πάνω στα οποία θα ενεργήσει, αν τέτοια υπάρχουν και για τα οποία θα μιλήσουμε αργότερα σε αυτό το κεφάλαιο)
• : • Εντολές • return μεταβλητή / μεταβλητές, (η μεταβλητή/μεταβλητές μέσω των οποίων θα επιστραφεί το αποτέλεσμα, εφόσον θέλουμε η συνάρτηση να κάνει κάτι τέτοιο)
Πως καλείται μία συνάρτηση; •Απλά, αναφέροντας το όνομα της και χρησιμοποιώντας τον αντίστοιχο αριθμό παραμέτρων:
Συναρτήσεις - Σπουδαιότητα Γιατί είναι σημαντικές; • Γιατί μας επιτρέπουν να «βαπτίσουμε» ένα σύνολο εντολών με ένα όνομα και να το επαναχρησιμοποιούμε εύκολα και γρήγορα, απλά αναφέροντας το όνομα του. Η χρησιμοποίηση μιας συνάρτησης λέγεται κλήση της συνάρτησης. • Ο ορισμός μίας νέας συνάρτησης κάνει το πρόγραμμα μικρότερο, απομακρύνοντας τμήματα κώδικα που επαναλαμβάνονται. • Οι τυχόν αλλαγές – διορθώσεις γίνονται σε ένα μόνο μέρος του προγράμματος. • Γενικά διευκολύνουν στη συγγραφή, ανάγνωση, κατανόηση και διόρθωση του προγράμματος. • Ειδικά στην Python: • Οι συναρτήσεις μπορούν να αποθηκευτούν και σε ξεχωριστά αρχεία, εμπλουτίζοντας το ρεπερτόριο εντολών της γλώσσας. • Υπάρχει άριστη υποστήριξη και ευελιξία. • Υπάρχει μεγάλη γκάμα έτοιμων συναρτήσεων για ότι σχεδόν επιθυμείτε.
Συναρτήσεις - Σπουδαιότητα
Συναρτήσεις - Χρήσιμα Τι είναι οι παράμετροι μίας συνάρτησης; Οι συναρτήσεις τις περισσότερες φορές χρειάζονται δεδομένα πάνω στα οποία θα ενεργήσουν. Τα δεδομένα αυτά διοχετεύονται μέσα στην συνάρτηση μέσω μεταβλητών που τοποθετούνται μέσα στις παρενθέσεις της συνάρτησης και λέγονται παράμετροι. παράμετροι (είσοδος) ρίζα(χ) Που συνήθως γράφονται οι συναρτήσεις; Οι συναρτήσεις συνήθως γράφονται στην αρχή του προγράμματος και σε κάθε περίπτωση πριν από το σημείο που θα κληθούν (χρησιμοποιηθούν). Πόσες φορές μπορεί να κληθεί μία συνάρτηση; Δεν υπάρχει κανένας απολύτως περιορισμός. Κάθε φορά που καλώ μία συνάρτηση, πρέπει να χρησιμοποιώ τις ίδιες παραμέτρους; Όχι φυσικά. Το όνομα της συνάρτησης, πρέπει να υπακούει σε κάποιους κανόνες; Ακριβώς στους ίδιους με τα ονόματα των μεταβλητών και των σταθερών.
Συνάρτηση χωρίς παραμέτρους και επιστρεφόμενη τιμή Παράδειγμα Να γραφεί συνάρτηση με όνομα tragouda, η οποία να εμφανίζει το μήνυμα ‘ΗΡΑ ΟΛΕ’ στην οθόνη.
Παράδειγμα Να γραφεί συνάρτηση με όνομα epanalave_tragouda, η οποία να εμφανίζει το μήνυμα ‘ΗΡΑ ΟΛΕ’ 2 φορές στην οθόνη χρησιμοποιώντας την συνάρτηση tragouda.
Επιπλέον παραδείγματα 1. Τι κάνει η παρακάτω συνάρτηση printPython3(); def printPython3(): print('Python') print('Python') print('Python') 2. Τι κάνει η παρακάτω συνάρτηση printPython9(); def printPython9(): print('Python') print('Python') print('Python') print('Python') print('Python') print('Python') print('Python') print('Python') print('Python')
3. Πως μπορούμε να γράψουμε την συνάρτηση printPython9() με λιγότερες γραμμές; def printPython3(): print('Python') print('Python') print('Python') def printPython9(): printPython3() printPython3() printPython3()
Συνάρτηση - Εσοχές Παράδειγμα Σε τι διαφέρουν τα παρακάτω προγράμματα;
Είναι λοιπόν σημαντικές οι εσοχές;
Συνάρτηση – Γενική μορφή def <όνομα συνάρτησης> ([λίστα παραμέτρων]): εντολές [return <αποτέλεσμα>] Παρατηρήσεις • Ότι είναι τοποθετημένο μέσα σε αγκύλες [ ], δεν είναι υποχρεωτικό δηλαδή: μία συνάρτηση μπορεί να μην έχει παραμέτρους, δηλαδή δεν χρειάζεται να δεχθεί ως είσοδο δεδομένα και Μπορεί να μην επιστρέφει καμία τιμή πίσω στο σημείο από το οποίο κλήθηκε.
Συνάρτηση με παραμέτρους χωρίς επιστρεφόμενη τιμή Παράμετροι ή Τυπικές Παράμετροι Parameters ή Formal Parameters SOS call by value (πέρασμα μέσω τιμής) ή pass by reference (πέρασμα μέσω αναφοράς) Οι μεταβλητές a, b δεν υφίστανται παρά μόνο όταν κληθεί η συνάρτηση compare. Τότε: • Δημιουργούνται οι μεταβλητές a και b, • Oι τιμές των μεταβλητών x και y αντιγράφονται στις αντίστοιχες a και b, • Εκτελείται η συνάρτηση, • Οι μεταβλητές a και b καταστρέφονται, ΧΩΡΙΣ να επιστρέψουν πίσω στις αντίστοιχες x και y τίποτα.
Ορίσματα ή Πραγματικές Παράμετροι Arguments ή Actual Parameters
0
Παραδείγματα 1. Τι κάνει η παρακάτω συνάρτηση printPython(); def printPython(): for i in range(3): print('Python') 2. Τι κάνει η παρακάτω συνάρτηση printPython(); def printPython(): for i in range(5): print('Python') 3. Τι κάνει η παρακάτω συνάρτηση printPython(); def printPython(N): for i in range(N): print('Python') Τι συμπεράσματα βγάζετε όσο αφορά το ρόλο των παραμέτρων; Γιατί υπάρχουν;
Συνάρτηση με παραμέτρους και επιστρεφόμενη τιμή 1. Ορίστε τις ακόλουθες συναρτήσεις add και times3. def add(arg1,arg2): result=arg1+arg2 return result def times3(arg): ginomeno=3*arg return ginomeno Η λέξη return είναι αυτή που στέλνει το αποτέλεσμα της συνάρτησης (μέσω της μεταβλητής στα δεξιά της) πίσω στο κύριο πρόγραμμα, στο σημείο από το οποίο κλήθηκε.
2. Εκτελέστε:
3. Εκτελέστε:
x=add(10,18) print('x=',x)
k=times3(2.5) print('k=',k)
y=add('ab','ba') print('y=',y)
p=times3('python') print('p=',p)
z=times3(10) print('z=',z)
n=times3(times3(9)) print('n=',n)
q=times3(‘ira') print(‘q=',q)
j=times3(add('ab','ab')) print('j=',j)
Επιπλέον παραδείγματα
Η λέξη None υποδεικνύει ότι η συνάρτηση sum δεν επιστρέφει τιμή. Η λέξη αυτή δεν είναι ούτε συμβολοσειρά, ούτε αριθμός και δεν μπορούμε να κάνουμε κανέναν υπολογισμό με αυτήν. Συζήτηση στην τάξη 1. Ομοιότητες – διαφορές παραμέτρων – ορισμάτων 2. Ομοιότητες – διαφορές παραμέτρων – μεταβλητών
Εμβέλεια μεταβλητών Η εμβέλεια μιας μεταβλητής είναι το τμήμα του προγράμματος που είναι ορατή, μπορεί δηλαδή να προσπελαστεί. Οι μεταβλητές διακρίνονται σε 2 είδη: Τοπικές μεταβλητές (local variables) • Υπάρχουν μόνο μέσα στην συνάρτηση που έχουν οριστεί, • Δεν μπορούν να χρησιμοποιηθούν έξω από αυτήν, • «Ζουν», υπάρχουν όσο διαρκεί η εκτέλεση της συνάρτησης στην οποία έχουν οριστεί, • Καταστρέφονται με το τέλος της συνάρτησης, • Κάθε νέα κλήση της συνάρτησης δημιουργεί νέες μεταβλητές
Εμβέλεια μεταβλητών Καθολικές μεταβλητές (global variables) • Δηλώνονται έξω από τις συναρτήσεις, • Μπορούν να προσπελαστούν από οποιοδήποτε σημείο, • Και από το πρόγραμμα αλλά • Και μέσα σε κάθε συνάρτηση
Εμβέλεια μεταβλητών … συνέχεια Καθολικές μεταβλητές (global variables)
Αν υπάρχει τοπική και καθολική μεταβλητή με το ίδιο όνομα τότε μέσα στην συνάρτηση υπερισχύει η τοπική αλλά δεν επηρεάζει την τιμή της καθολικής εκτός αν….
Η δήλωση global μέσα στην συνάρτηση δηλώνει πως η μεταβλητή δεν είναι τοπική και γίνεται απευθείας αναφορά στην καθολική.
Συμβολοσειρές τεκμηρίωσης Μέσα σε τριπλά εισαγωγικά βάζουμε μια γενική περιγραφή της συνάρτησης
Με τον τρόπο αυτό εμφανίζεται η γενική περιγραφή που βάλαμε ενώ αν δεν βάλαμε εμφανίζεται η τιμή None
Προεπιλεγμένα ορίσματα
Ο προγραμματιστής μπορεί να δίνει τιμές: • Είτε και στα δύο ορίσματα omada και sinthima (όπως κανονικά έχουμε μάθει έως σήμερα), • Είτε μόνο στο όρισμα omada (το δεύτερο όρισμα sinthima έχει την προεπιλεγμένη τιμή του ‘ ΟΛΕ’.
Προεπιλεγμένα ορίσματα
Ορίσματα με λέξεις κλειδιά
Τα βασικά πλεονεκτήματα είναι: • Δημιουργία ευανάγνωστων συναρτήσεων, • Η ελευθερία στη διάταξη (σειρά) των ορισμάτων
Ορίσματα με λέξεις κλειδιά
Συναρτήσεις - Επιστροφή πολλών αποτελεσμάτων