Μάθημα : Προγραμματισμός στην Python

1701050396 - ΜΙΧΑΗΛ ΣΦΥΡΑΚΗΣ

Ενότητες μαθήματος

Ενότητα 5 - Συναρτήσεις και Παραμετρικές Συναρτήσεις

Σε αυτή την ενότητα θα φτάσουμε στο πιο προχωρημένο και δημιουργικό κομμάτι του μαθήματος, μαθαίνοντας πώς να κατασκευάζουμε τις δικές μας εντολές στην Python!
Συγκεκριμένα, η ενότητα περιλαμβάνει:
  • Την έννοια της Συνάρτησης (Function): Γιατί ομαδοποιούμε τον κώδικα σε μικρά, αυτόνομα κομμάτια και πώς μια συνάρτηση μοιάζει με μια επαναχρησιμοποιήσιμη συνταγή μαγειρικής ή με τις οδηγίες ενός ρομπότ υποδοχής.
  • Τη λέξη-κλειδί def: Το μυστικό για να δηλώνουμε σωστά μια συνάρτηση και πώς να την «καλούμε» να εκτελεστεί όποτε τη χρειαζόμαστε.
  • Τις Παραμετρικές Συναρτήσεις: Πώς φτιάχνουμε δυναμικές εντολές που δέχονται διαφορετικά δεδομένα (παραμέτρους) στην είσοδό τους για να προσαρμόζουν τη συμπεριφορά τους (όπως το να χαιρετάνε έναν χρήστη με το δικό του όνομα).
  • Την εντολή επιστροφής τιμής return: Πώς μια συνάρτηση μπορεί να εκτελεί έναν υπολογισμό και να μας «δίνει» πίσω το έτοιμο αποτέλεσμα για να το αποθηκεύσουμε σε μια μεταβλητή.
Μέσα από πρακτικά και χρήσιμα παραδείγματα, από τον έλεγχο αν ένας αριθμός είναι μονός ή ζυγός μέχρι την κατασκευή ενός ολοκληρωμένου προγράμματος υπολογισμού μέσου όρου, θα δούμε πώς οι συναρτήσεις μάς βοηθούν να σπάμε ένα μεγάλο πρόβλημα σε μικρά, εύκολα μέρη, κάνοντας τον κώδικά μας ευκολοδιάβαστο και επαγγελματικό!

Οργάνωση του κώδικα με τις συναρτήσεις

Οι συναρτήσεις αποτελούν βασικό εργαλείο στον προγραμματισμό, καθώς μας επιτρέπουν να οργανώνουμε τον κώδικα σε μικρά, αυτόνομα τμήματα που εκτελούν μια συγκεκριμένη εργασία. Μια συνάρτηση είναι ένα μπλοκ επαναχρησιμοποιήσιμου κώδικα: ορίζεται μία φορά και μπορεί να χρησιμοποιηθεί όσες φορές χρειάζεται, κάνοντας τα προγράμματα πιο καθαρά, πιο εύκολα στη διαχείριση και πιο αποτελεσματικά.

Οι παραμετρικές συναρτήσεις επεκτείνουν αυτή τη δυνατότητα επιτρέποντας στη συνάρτηση να δέχεται τιμές (παραμέτρους). Με αυτόν τον τρόπο η ίδια συνάρτηση μπορεί να εκτελεί την ίδια εργασία αλλά με διαφορετικά δεδομένα κάθε φορά. Έτσι, ο προγραμματισμός γίνεται πιο ευέλικτος και πιο δυναμικός, ενώ οι μαθητές κατανοούν καλύτερα πώς τα δεδομένα «ρέουν» μέσα σε ένα πρόγραμμα.
Η κατανόηση των συναρτήσεων και των παραμετρικών συναρτήσεων αποτελεί σημαντικό βήμα για την ανάπτυξη δεξιοτήτων επίλυσης προβλημάτων, σχεδιασμού αλγορίθμων και δημιουργίας ολοκληρωμένων εφαρμογών.
 

Συναρτήσεις στην Python

Στον προγραμματισμό Python, μια συνάρτηση είναι σαν μια συνταγή μαγειρικής. Έχετε συγκεκριμένα συστατικά στην είσοδο, ακολουθείτε ένα σύνολο οδηγιών (τον κώδικα) και στο τέλος δημιουργείτε ένα αποτέλεσμα (έξοδο). Αφού γράψετε τη συνταγή μία φορά, μπορείτε να τη χρησιμοποιήσετε όσες φορές θέλετε, χωρίς να χρειάζεται να ξαναγράφετε τις οδηγίες από την αρχή.
 
Ας υποθέσουμε ότι έχετε ένα ρομπότ στην είσοδο ενός πολυκαταστήματος που καλωσορίζει τον κόσμο που έρχεται. Κάθε φορά που καταλαβαίνει την παρουσία ενός πελάτη, ενεργοποιεί μια συνάρτηση που ονομάζεται greet. Αυτή η συνάρτηση καλωσορίζει τον κόσμο λέγοντας: «Καλώς ορίσατε! Καλά ψώνια, να έχετε μια καλή ημέρα!».
 
Ακολουθεί η συνάρτηση greet γραμμένη στην Python:                                                

 # Ορισμός της συνάρτησης

def greet(): 

   print("Καλώς ορίσατε!")

 print ("Καλά ψώνια, να έχετε μια καλή ημέρα!")

# Κλήση της συνάρτησης 

greet()

Κανόνας Σύνταξης: Για να δημιουργήσουμε μια συνάρτηση, ξεκινάμε με τη λέξη-κλειδί def (από το define) και βάζουμε παρενθέσεις και άνω-κάτω τελεία (:). Όλες οι οδηγίες που βρίσκονται μέσα στη συνάρτηση πρέπει να έχουν εσοχή προς τα δεξιά.

 

Παραμετρικές συναρτήσεις στην Python

Οι παραμετρικές συναρτήσεις μάς επιτρέπουν να δημιουργήσουμε δυναμικές συναρτήσεις που μπορούν να λάβουν διαφορετικές εισόδους. Σκεφτείτε το σαν ένα ρομπότ που μπορεί να προγραμματιστεί να κάνει διαφορετικές εργασίες με βάση τις λεπτομέρειες που του δίνουμε.
 
Για παράδειγμα, ας αλλάξουμε το ρομπότ μας φτιάχνοντας μια συνάρτηση που ονομάζεται greet_person. Αυτή η λειτουργία θα δέχεται το όνομα ενός ατόμου ως είσοδο (παράμετρο) και στη συνέχεια θα το χαιρετάει προσωπικά. Έτσι, εάν καλέσετε το greet_person('Μαρία'), η συνάρτηση θα εμφανίσει "Γεια σου, Μαρία!". Εάν καλέσετε το greet_person('Γιάννη'), θα εμφανίσει "Γεια σου, Γιάννη!".

Ακολουθεί η συνάρτηση greet_person  γραμμένη στην Python:                                   

 def greet_person(name):

    print("Γειά σου, " + name + "!")

# Καλούμε τη συνάρτηση δίνοντας κάθε φορά άλλη παράμετρο

greet_person("Μαρία")

greet_person("Γιάννη")

 

Ας δούμε ένα άλλο παράδειγμα: μια συνάρτηση που ονομάζεται multiply_numbers. Αυτή η συνάρτηση παίρνει δύο αριθμούς ως είσοδο, τους πολλαπλασιάζει μεταξύ τους και, χρησιμοποιώντας την εντολή return, μας επιστρέφει το αποτέλεσμα για να το αποθηκεύσουμε. Έτσι, εάν θέλετε να πολλαπλασιάσετε το 3 και το 4, μπορείτε απλώς να καλέσετε τη συνάρτηση  multiply_numbers(3,4).  και θα επιστρέψει 12.

def multiply_numbers(num1, num2):

    return num1 * num2

# Καλούμε τη συνάρτηση και αποθηκεύουμε το αποτέλεσμα στο product

product = multiply_numbers(3,4)

print(product)

 

Παραδείγματα συναρτήσεων στην Python

Ας δούμε μερικά παραδείγματα για το πώς οι συναρτήσεις μάς λύνουν τα χέρια:

1.     Πρόσθεση δύο αριθμών

def add_numbers(num1, num2):

    return num1 + num2

# Παράδειγμα κλήσης

print(add_numbers(10,5))

Αυτή η συνάρτηση προσθέτει δύο αριθμούς μαζί. Στο παράδειγμά μας, δινοντας τους αριθμούς 10 και 5  το αποτέλεσμα θα είναι 15.

 

2.     Υπολογισμός Εμβαδού Κύκλου

def calculate_circle_area(radius):

    return 3.14 * radius * radius

# Παράδειγμα κλήσης

print(calculate_circle_area(2))

Αυτή η συνάρτηση υπολογίζει το εμβαδόν ενός κύκλου με βάση την ακτίνα του. Στο παράδειγμά μας η ακτίνα είναι 2 και το αποτέλεσμα θα είναι 12,56

 

3.     Έλεγχος Άρτιων - Περιττών (Μονός - Ζυγός)

def check_even_odd(num):

    if num % 2 == 0:

    return "Άρτιος"

    else:

       return "Περιττός"

# Παράδειγμα κλήσης

print(check_even_odd(7))

Αυτή η συνάρτηση καθορίζει εάν ένας αριθμός είναι άρτιος ή περιττός. Στο παράδειγμα μας ελέγχει τον αριθμό 7 και εμφανίζει "Περιττός".

 

4.     Παραγοντικό:

def factorial(n):

    if n == 0:

        return 1

    else:

        return n * factorial(n - 1)

# Παράδειγμα κλήσης για το 4 παραγοντικό

print(factorial(4))

Αυτή η συνάρτηση υπολογίζει το παραγοντικό ενός αριθμού. Στο συγκεκριμένο παράδειγμα για το παραγοντικό του 4 (γράφετε 4!) το αποτέλεσμα θα είναι 1*2*3*4 = 24).

 

5.     Μέγιστος Κοινός Διαιρέτης:

def find_mkd(x, y):

    while y:

         t = y

   y = x % y

   x = t

    return x

# Παράδειγμα κλήσης για δοκιμή

print(find_mkd(48,18))

Αυτή η συνάρτηση βρίσκει τον μεγαλύτερο κοινό διαιρέτη δύο αριθμών. Στο συγκεκριμένο παράδειγμα των αριθμών 48 και 18 το αποτέλεσμα θα είναι 6.

  

Υλοποίηση προγράμματος Python με χρήση συναρτήσεων

Ας δούμε πώς μπορούμε να συνδυάσουμε τις συναρτήσεις με όσα μάθαμε στα προηγούμενα μαθήματα (όπως την input() και το float()), φτιάχνοντας ένα πρόγραμμα που υπολογίζει τον μέσο όρο τριών αριθμών:

# 1. Ορίζουμε τη συνάρτηση υπολογισμού

def calculate_average(num1, num2, num3):

    return (num1 + num2 + num3) / 3

 

# 2. Λήψη πληροφοριών από το χρήστη

number1 = float(input("Δώσε τον πρώτο αριθμό: "))

number2 = float(input("Δώσε το δεύτερο αριθμό: "))

number3 = float(input("Δώσε τον τρίτο αριθμό: "))

 

# 3. Κλήση της συνάρτησης και αποθήκευση του αποτελέσματος 

average = calculate_average(number1, number2, number3)

 

# 4. Εμφάνιση του τελικού αποτελέσματος

print("Ο μέσος όρος των τριών αριθμών είνα:", average)

Στο παραπάνω πρόγραμμα, η συνάρτηση calculate_average() αναλαμβάνει αποκλειστικά το μαθηματικό κομμάτι. Εμείς ζητάμε τους αριθμούς από τον χρήστη, τους «δίνουμε» στη συνάρτηση και εκείνη μας επιστρέφει έτοιμο τον μέσο όρο για να τον τυπώσουμε!