Τμήμα:C/Μάθημα 7ο
Προηγούμενη Ενότητα |
Περιεχόμενα | Επόμενη Ενότητα |
Ασχολούμενοι όλο και περισσότερο με τον προγραμματισμό θα διαπιστώσετε πως κάποιες εντολές γίνονται επαναλαμβανόμενες. Αν θέλαμε για παράδειγμα στο πρόγραμμα κρυπτογράφησης του προηγούμενου μαθήματος να δημιουργήσουμε ένα μενού όπου ο χρήστης θα επέλεγε ανάμεσα στις επιλογές κρυπτογράφησης και αποκρυπτογράφησης, με τις μέχρι τώρα γνώσεις μας, θα το κάναμε με μια δομή επανάληψης. Όμως αν στην συνέχεια θέλαμε να προσθέσουμε και άλλα μενού η δομή επανάληψης θα γινόταν περίπλοκη και χαοτική.
Λύση σε αυτό το πρόβλημα δίνουν οι συναρτήσεις(functions) οι οποίες έχουν δύο σημαντικά πλεονεκτήματα:
- Απλοποίηση και ευκολότερη ανάγνωση του κώδικα,
- Αποφυγή του code duplication, δηλαδή να ξαναγράφεται ο ίδιος κώδικας περισσότερες από μία φορές.
Σύνταξη
επεξεργασίαΈχουμε ήδη εξετάσει την συνάρτηση main(). Το ότι είναι συνάρτηση το υποδεικνύουν οι παρενθέσεις. Μέσα στις παρενθέσεις μπορούν να μπουν διάφοροι παράμετροι με τον τύπο τους, οι οποίοι μπορούν να διαφοροποιήσουν την λειτουργία της ίδιας συνάρτησης. Φανταστείτε για παράδειγμα μια συνάρτηση που να προσθέτει την παράμετρο Α με την παράμετρο Β. Ανάλογα με τις τιμές των παραμέτρων Α και Β το αποτέλεσμα θα άλλαζε.
datatype functionIdentifier(type1 param1;type2 param2;...;typeN paramN)
{
// κώδικας συνάρτησης
return value; // Η τιμή που θα επιστραφεί στην εντολή που κάλεσε την συνάρτηση (αν χρειαστεί)
}
#include <stdio.h>
int add(int a, int b){
return a+b;
}
// MAIN FUNCTION
void main()
{
int a,b;
printf("First number:"); scanf("%d",&a);
printf("Second number:"); scanf("%d",&b);
printf("%d+%d=%d\n",a,b,add(a,b)); // Καλούμε την συνάρτηση για την πρόσθεση
}
Δήλωση συνάρτησης
επεξεργασίαΔοκιμάστε να μεταγλωττίσετε τον προηγούμενο κώδικα μεταφέροντας τον κώδικα της συνάρτησης μετά την συνάρτηση main(). Στην ANSI C, ο κώδικας δεν πρόκειται να μεταγλωττιστεί, λόγο του ότι συναντάει μια κλήση σε συνάρτηση που δεν έχει ακόμα δηλωθεί. Πιο μοντέρνοι μεταγλωττιστές όπως ο gcc δεν έχουν πρόβλημα με κάτι τέτοιο, καλό όμως είναι να το έχουμε υπόψη μας, για να μην δημιουργηθεί πρόβλημα εάν ποτέ χρειαστεί να χρησιμοποιήσουμε άλλο μεταγλωττιστή.
Για να αποφευχθεί κάθε περίπτωση μη εύρεσης της συνάρτησης, δηλώνουμε την ύπαρξή της στην αρχή του προγράμματός μας.
datatype functionIdentifier(type1 param1;type2 param2;...;typeN paramN);
Παρόλο που με αυτό το κομμάτι κώδικα δεν θα υπάρχει πρόβλημα, συνηθίζεται οι συναρτήσεις να γράφονται πάνω από την συνάρτηση main(). Εσείς μπορείτε να επιλέξετε τον τρόπο γραφής που σας ταιριάζει.
#include <stdio.h>
// Declarations (δηλώσεις)
int add(int a, int b);
// Functions (συναρτήσεις)
int add(int a, int b){
return a+b;
}
// MAIN FUNCTION
int main()
{
int a, b;
printf("First number:"); scanf("%d",&a);
printf("Second number:"); scanf("%d",&b);
printf("%d+%d=%d\n",a,b,add(a,b)); // Καλούμε την συνάρτηση για την πρόσθεση
}
Προηγούμενη Ενότητα |
Περιεχόμενα | Επόμενη Ενότητα |