Magaz, The Greek Linux Magazine
Magaz Logo

Επόμενο  Προηγούμενο  Περιεχόμενα

6. Συναρτήσεις

ΠΡΟΣΟΧΗ!!!
Οι συναρτήσεις (που ορίζονται από τον χρήστη) δεν υπάρχουν στην "αυθεντική" awk, αλλά προστέθηκαν αργότερα στην nawk και υποστηρίζονται από την gawk.

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

6.1 Δήλωση της συνάρτησης

Παρακάτω, θα δούμε τον κώδικα που απαιτείται για να δηλώσετε μιά συνάρτηση. Επιπλέον, να σημειώσω πως δεν παίζει κανέναν ρόλο η θέση που θα δηλώσετε την συνάρτηση. Μπορείτε κάλλιστα να την δηλώσετε στο τέλος του προγράμματος.

function όνομα_συνάρτησης(παράμετροι) {
    κώδικας της συνάρτησης
}

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

BEGIN { function1() }

function function1() {
   printf("Magaz τεύχος 24\n");
   printf("Άρθρο για gawk\n");
}

Όταν τρέξουμε το πρόγραμμα, το αποτέλεσμα θα είναι να μας τυπώσει στην οθόνη το περιεχόμενο των δύο printf, όπως ορίζονται μέσα στην συνάρτηση. Δώστε ιδιαίτερη έμφαση στις παρενθέσεις της συνάρτησης, πάντα πρέπει να τις γράφετε (σε αντίθεση με τις ενσωματωμένες συναρτήσεις της awk, όπου είναι προαιρετική η αναγραφή των παρενθέσεων).

6.2 Συνάρτηση με παραμέτρους

Όταν χρησιμοποιούμε παραμέτρους στη συνάρτηση, τότε η αριθμητική αξία της μεταβλητής που αποτελεί την παράμετρο, αντιγράφεται και μετά "περνάει" στην συνάρτηση. Αυτό έχει σαν αποτέλεσμα η αρχική τιμή της μεταβλητής-παραμέτρου να παραμένει αναλλοίωτη. Αυτό είναι ένα πλεονέκτημα, μπορεί να μας φανεί σε πολλές περιπτώσεις χρήσιμο. Βέβαια, υπάρχει πάντα και η δυνατότητα να αλλοιωθεί, θα το δούμε παρακάτω. Ας δούμε τώρα ένα παράδειγμα:

BEGIN { variable = 0; function1(variable); 
        printf("Η τιμή της μεταβλητής variable είναι: %d\n", variable); }

function function1(variable2) {
    variable2++;
    printf("Η τιμή της μεταβλητής variable2 είναι: %d\n", variable2); }

Όταν εκτελέσουμε το πρόγραμμα θα δούμε πως θα μας τυπωθούν στην οθόνη δύο γραμμές. Η πρώτη γραμμή (που θα προέρχεται από την συνάρτηση) θα λέει πως η variable2 είναι ίση με 1, ενώ η δεύτερη θα λέει πως η variable είναι ίση με 0. Βλέπετε, λοιπόν, πως η τιμή της variable αντιγράφεται στην variable2 και δεν αλλάζει.

6.3 Η δήλωση return

H return έχει δύο λειτουργίες: είτε να επιστρέψετε την τιμή της παραμέτρου, είτε να βγείτε από την συνάρτηση νωρίτερα. Η σύνταξή της είναι: return όνομα_μεταβλητής. Μπορείτε σε κάθε συνάρτηση να επιστρέψετε την τιμή μόνο μίας μεταβλητής, όχι παραπάνω. Ας δούμε το παράδειγμα:

BEGIN { variable = 0; function1(variable); 
        printf("Η τιμή της μεταβλητής variable είναι: %d\n", variable); }

function function1(variable2) {
    variable2++;
    printf("Η τιμή της μεταβλητής variable2 είναι: %d\n", variable2); 
    return variable2; }

Σε αυτήν την περίπτωση, θα τυπωθούν δύο γραμμές πάλι. Και στις δύο γραμμές η τιμή των μεταβλητών θα είναι ίση με 1, καθώς η τιμή της variable2 επέστρεψε στην τιμή της variable.

6.4 Η συνάρτηση system

Η συνάρτηση system είναι ενσωματωμένη στην awk. Είναι διαφορετική από τις άλλες, δεν ανήκει ούτε στην κατηγορία των αριθμητικών ούτε στην κατηγορία των αλφαριθμητικών συναρτήσεων. Αυτό που πραγματικά κάνει είναι να εκτελεί το αλφαριθμητικό που της δόθηκε ως παράμετρος, επιτρέποντας στον προγραμματιστή να εκτελεί απ'ευθείας εντολές μέσα από το πρόγραμμα. Η σύνταξη της system έχει ως εξής:

system ("εντολή")

Επόμενο  Προηγούμενο  Περιεχόμενα


Valid HTML 4.01!   Valid CSS!