Συναρτήσεις (functions)

Συναρτήσεις (functions)


Οι συναρτήσεις αποτελούν υποπρογράμματα η βασική τους χρησιμότητα είναι:

  • Να είναι το πρόγραμμα πιο ευανάγνωστο καθώς σπάει σε μικρότερα και πιο κατανοητά κομμάτια
  • Να γίνεται επαναχρησιμοποίηση κώδικα καθώς μία συνάρτηση μπορεί να κληθεί σε πολλά σημεία απλά με το όνομά της

Μία συνάρτηση αποτελείται από την «κεφαλίδα» της (λέγεται και interface της συνάρτησης), όπου δηλώνεται το όνομα της συνάρτησης, οι παράμετροι που παίρνει και ο τύπος δεδομένων που επιστρέφει.
Π.χ. παρακάτω ορίζεται μία συνάρτηση με το όνομα max, που παίρνει ως παραμέτρους δύο ακέραιους (a και b) και επιστρέφει μία ακέραια τιμή (int).

int max (int a, int b)

Το δεύτερο παράδειγμα ορίζει μία συνάρτηση με το όνομα exp, που παίρνει ως παραμέτρους έναν double και έναν int (m και n) και επιστρέφει μία τιμή τύπου double.

double exp (double m, int n)

Αν μία συνάρτηση δεν επιστρέφει τιμή, γράφουμε τη λέξη void (κενό).
Π.χ. παρακάτω ορίζεται μία συνάρτηση με το όνομα swap, που παίρνει ως παραμέτρους δύο ακέραιους (a και b) και δεν επιστρέφει τίποτα (void).

void swap (int a, int b)

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

Στο παρακάτω πρόγραμμα ορίζεται μία συνάρτηση με το όνομα square, που παίρνει ως παράμετρο έναν ακέραιο και υπολογίζει και επιστρέφει το τετράγωνό του. Στη συνέχεια στο κυρίως πρόγραμμα (main) χρησιμοποιείται η square για να υπολογιστούν διάφορα τετράγωνα αριθμών.
#include <stdio.h>

int square(int y)
{
  int sq;     // Τοπική μεταβλητή
  sq = y * y;
  return sq;
}

main () {
  int x;
  int k;
  printf(“Dwse ari8mo”);
  scanf(%d”, &x);
  k = square (x);     // Το αποτέλεσμα της συνάρτησης εκχωρείται στη μεταβλητή k
  printf(“To tetragwno tou ari8mou einai %d”, k);

  k = square (12);
  printf(“To tetragwno tou 12 einai %d”, k);

  printf(“To tetragwno tou 15 einai %d”, square(15));
}

Όπως φαίνεται στο παραπάνω παράδειγμα, η square μπορεί να κληθεί περνώντας ως παράμετρο είτε μία μεταβλητή είτε έναν αριθμό. Σε κάθε περίπτωση η τιμή αυτή θα αντιγραφεί στην παράμετρο y της συνάρτησης square.
Επίσης επειδή η συνάρτηση επιστρέφει έναν ακέραιο, μπορούμε να την καλέσουμε στα σημεία του κυρίως προγράμματος όπου θα βάζαμε έναν ακέραιο, π.χ. να εκχωρηθεί σε μία μεταβλητή ή μέσα στην printf.

Σε ένα πρόγραμμα μπορούν να ορίζονται πολλές συναρτήσεις, και να καλεί η μία την άλλη. Πρέπει όμως πάντα μία συνάρτηση να έχει δηλωθεί προτού χρησιμοποιηθεί (κληθεί).


Στο παρακάτω πρόγραμμα ορίζονται δύο συναρτήσεις, η square και η max, που υπολογίζει και επιστρέφει το μέγιστο δύο αριθμών που δέχεται ως παραμέτρους. Το κυρίως πρόγραμμα δέχεται 2 αριθμούς από το χρήστη και τυπώνει το τετράγωνο του μεγαλύτερου από τους δύο.