ΠΑΡΑΡΤΗΜΑ Γ ΣΥΝΑΡΤΗΣΕΙΣ FORTRAN 90/95 Γενικές συναρτήσεις Όνοµα και κλήση της συνάρτησης NINT (x) FLOOR(X) FRACTION(X) MODULO(X,Y) Μετατροπή στον πλησιέστερο ακέραιο Ο µεγαλύτερος ακέραιος µικρότερος ή ίσος µε Χ Το κλασµατικό µέρος του Χ Το ακέραιο υπόλοιπο της διαίρεσης Χ/Υ Παρα- µετρος Τύπος Παράδειγµα I ή R I NINT(-7.9) = -8 NINT(+5.9) = 6 NINT(20.7) = 21 R I FLOOR(-7.9) = -8 FLOOR(+5.9) = 5 FLOOR(20.7) = 0 R R FRACTION(2,9)=0.9 FRACTION(-2,9)=0.9 I I MODULO(15,2)=1
300 FORTRAN 77/90/95 Συναρτήσεις επεξεργασίας χαρακτήρων Όνοµα και κλήση της συνάρτησης ICHAR(X) LGE(X, Y) LGT(X, Y) LLE(X, Y) LLΤ(X, Y) LEN(X) Επιστρέφει τον ακέραιο που αντιστοιχεί στον κώδικα ASCII της Επιστρέφει την τιµή true αν η µεταβλητή Χ είναι ίση ή µεγαλύτερη (δηλ. εµφανίζεται µετά τη Υ ) διαφορετικά, false Επιστρέφει την τιµή true αν η µεταβλητή Χ είναι µεγαλύτερη (δηλ. εµφανίζεται µετά τη Υ ) διαφορετικά, false Επιστρέφει την τιµή true αν η µεταβλητή Χ είναι ίση ή µικρότερη (δηλ. εµφανίζεται πριν από τη Υ ) διαφορετικά, false Επιστρέφει την τιµή true αν η µεταβλητή Χ είναι µικρότερη (δηλ. εµφανίζεται πριν από τη Υ ) διαφορετικά, false Υπολογίζει το µήκος των χαρακτήρων της Παρα- µετρος Τύπος Παράδειγµα CH I IACHAR( A ) = 65 CH L LGE( AB, CD ) = false LGE( ONE, ON ) = true CH L LGT( AB, AB ) = false LGT( ONE, FOUR ) = true CH L LGE( AB, ΑΒ ) = true LGE( AB, ΑΑΒ ) = false CH L LGE( AB, ΑΒ ) = false LGE( AΑB, ΑΒ ) = true CH I LEN( Number ) = 6 LEN( Number 1 ) = 8
ΠΑΡΑΡΤΗΜΑ Γ: 301 Όνοµα και κλήση της συνάρτησης LEN_TRIM(X) REPEAT(X,N) TRIM(X) Υπολογίζει το µήκος των χαρακτήρων µέχρι τον τελευταίο µη κενό χαρακτήρα της ηµιουργεί Ν αντίγραφα της Αφαιρεί τα τελευταία κενά διαστήµατα της Παρα- µετρος Τύπος Παράδειγµα CH I LEN_TRIM( Number_ 2 )=8 LEN_TRIM ( Number_2 )=8 CH CH REPEAT( Z,5)= ZZZZZ CH CH TRIM( Number ) = Number TRIM( Number 3 ) = Number 3 Συναρτήσεις επεξεργασίας πινάκων Όνοµα και κλήση της συνάρτησης Παράδειγµα ALL (Χ, λογική έκφραση) Προσδιορίζει αν όλα τα στοιχεία του πίνακα Χ ικανοποιούν τη συγκεκριµένη ιδιότητα που περιγράφεται από τη λογική έκφραση result = ALL(A>0) θα έχει ως αποτέλεσµα τιµή TRUE, αν όλα τα στοιχεία του πίνακα Α είναι θετικά διαφορετικά, θα έχει τιµή FALSE ALLOCATED (Χ) Επιστρέφει την τιµή true αν ο πίνακας έχει δηλωθεί µε την εντολή ALLOCATED, διαφορετικά την τιµή false ALLOCATED (Α)
302 FORTRAN 77/90/95 Όνοµα και κλήση της συνάρτησης Παράδειγµα ANY (Χ, λογική έκφραση) Προσδιορίζει αν κάποιο από όλα τα στοιχεία του πίνακα ικανοποιεί τη συγκεκριµένη ιδιότητα που περιγράφεται από τη λογική έκφραση result = ANY(A>0) θα έχει ως αποτέλεσµα τιµή TRUE, αν κάποιο από τα στοιχεία του πίνακα Α είναι θετικά διαφορετικά θα έχει τιµή FALSE COUNT (Χ, λογική έκφραση) Υπολογίζει το πλήθος των στοιχείων του πίνακα που ικανοποιούν κάποια ιδιότητα που περιγράφεται από τη λογική έκφραση result = COUNT(A>0) θα υπολογίσει το πλήθος των θετικών στοιχείων του πίνακα Α DOT_PRODUCT (Χ, Υ) MATMUL (Χ, Υ) Επιστρέφει το εσωτερικό γινόµενο δύο µονοδιάστατων πινάκων. Επιστρέφει το γινόµενο δύο πινάκων. result = DOT_PRODUCT (A, B) result = MATMUL (A, B) MAXLOC (Χ) Υπολογίζει τη θέση του µέγιστου στοιχείου ενός πίνακα result = MAXLOC(A) υπολογίζει τη θέση του µέγιστου στοιχείου του πίνακα Α MAXVAL (Χ) Υπολογίζει το µέγιστο στοιχείο ενός πίνακα result = MAXVAL(A) υπολογίζει το µέγιστο στοιχείο του πίνακα Α
ΠΑΡΑΡΤΗΜΑ Γ: 303 Όνοµα και κλήση της συνάρτησης Παράδειγµα MINLOC (Χ) Υπολογίζει τη θέση του ελάχιστου στοιχείου ενός πίνακα result = MINLOC(A) υπολογίζει τη θέση του ελάχιστου στοιχείου στον πίνακα Α MINVAL (Χ) Υπολογίζει το ελάχιστο στοιχείο ενός πίνακα result = MINVAL(A) υπολογίζει το ελάχιστο στοιχείο του πίνακα Α LBOUND (Χ [,DIM]) Επιστρέφει το µονοδιάστατο πίνακα µε τις ελάχιστες τιµές των δεικτών του πίνακα ή αυτού που προσδιορίζεται από την παράµετρο DIM result = LBOUND(A,1) προσδιορίζει τον ελάχιστο πρώτο δείκτη του πίνακα Α SHAPE (Χ) Επιστρέφει τη µορφή του πίνακα (πλήθος και µέγεθος των διαστάσεων) result = ARRAY Αν έχουµε Α(100,20) Η συνάρτηση SHAPE (A) δίνει 100 20 SIZE (Χ [,DIM]) SUM (Χ) Επιστρέφει τον αριθµό των στοιχείων του πίνακα ή αυτού που προσδιορίζεται από την παράµετρο DIM Επιστρέφει το άθροισµα των στοιχείων του πίνακα result = SIZE(A, 3) προσδιορίζει το πλήθος των τιµών που µπορεί να πάρει ο τρίτος δείκτης του πίνακα Α. result = SUM (A)
304 FORTRAN 77/90/95 Όνοµα και κλήση της συνάρτησης Παράδειγµα TRANSPOSE (Χ) Υπολογίζει τον ανάστροφο του δισδιάστατου πίνακα Χ result = TRANSPOSE(A) υπολογίζει τον ανάστροφο του Α UBOUND (Χ [,DIM]) Επιστρέφει ένα µονοδιάστατο πίνακα µε τις µέγιστες τιµές των δεικτών του πίνακα ή αυτού που προσδιορίζεται από την παράµετρο DIM result = LBOUND(Β,1) προσδιορίζει το µέγιστο πρώτο δείκτη του πίνακα Β Υποπρογράµµατα διαχείρισης ώρας και ηµεροµηνίας DATE_AND_TIME (date, time, zone, values) Επιστρέφει υπό µορφή τεσσάρων µεταβλητών χαρακτήρων τα εξής: Date = Ηµεροµηνία της µορφής aaaammjj Time = Ώρα της µορφής hhmmss.sss Zone = ιαφορά της τοπικής ώρας από την ώρα GMT της µορφής shhmm Values = Οι τιµές των 8 προηγούµενων µεταβλητών αριθµητικά. ηλαδή, κατά σειρά οι τιµές : έτος, µήνας, µέρα, διαφορά σε λεπτά µε την ώρα GMT, ώρα, λεπτά, δευτερόλεπτα και χιλιοστά του δευτερολέπτου Αν έχουµε το πρόγραµµα : INTEGER DATE_TIME (8) CHARACTER (LEN = 12) REAL_CLOCK (3) CALL DATE_AND_TIME (REAL_CLOCK (1), REAL_CLOCK (2), REAL_CLOCK (3), DATE_TIME) Τότε θα µπορεί να έχουµε τις ακόλουθες τιµές: REAL_CLOCK (1) = "20040328" REAL_CLOCK (2) = "110414.500" REAL_CLOCK (3) = "-0500" DATE_TIME = 2004, 3, 28, -300, 11, 4, 14, 500.
ΠΑΡΑΡΤΗΜΑ Γ: 305 SYSTEM_CLOCK (count, count_rate, coun_max) Επιστρέφει υπό µορφή τριών ακέραιων µεταβλητών τα εξής: Count = η τιµή του εσωτερικού ρολογιού count_rate = η συχνότητα του εσωτερικού ρολογιού coun_max = η µέγιστη τιµή του εσωτερικού ρολογιού Αν έχουµε το πρόγραµµα : integer ic4, crate4, cmax4 call system_clock(count=ic4, count_rate=crate4, count_max=cmax4) print *, ic4, crate4, cmax4 end Τότε θα µπορεί να έχουµε τις ακόλουθες τιµές : 1129498807 10000 2147483647 Υποπρογράµµατα δηµιουργίας τυχαίων αριθµών RANDOM_NUMBER (harvest) Επιστρέφει στη µεταβλητή harvest ένα ψευδοτυχαίο αριθµό ο οποίος θα βρίσκεται στο διάστηµα [0, 1] και θα είναι τύπου REAL. Αν έχουµε το πρόγραµµα : REAL Y, Z (2, 2) CALL RAN- DOM_NUMBER (HAR- VEST = Y) CALL RAN- DOM_NUMBER (Z) Τότε θα µπορεί να έχουµε τις ακόλουθες τιµές : Y = 0.38 Και Ζ(1,1) = 0.34 Ζ(1,2) = 0.81 Ζ(2,1) = 0.67 Ζ(2,2) = 0.26
306 FORTRAN 77/90/95 RANDOM_SEED (size, put, get) Επιτρέπει να εξασφαλίσουµε µια νέα αρχική τιµή για τη δηµιουργία των ψευδοτυχαίων αριθµών από το υποπρόγραµµα RANDOM_NUMBER. Πιθανές κλήσεις του υποπρογράµµατος είναι : CALL RANDOM_SEED Μια µόνο παράµετρος πρέπει να εµφανιστεί στην κλήση και όταν δεν υπάρχει παράµετρος τότε οι τυχαίοι αριθµοί υπολογίζονται αυτόµατα. Όπου : Size (output) = ακέραιος που προσδιορίζει το µέγεθος του πίνακα που θα χρησιµοποιηθεί Put (input) = µονοδιάστατος πίνακας ακεραίων που θα χρησιµοποιηθεί Get (output) = µονοδιάστατος πίνακας ακεραίων που θα χρησιµοποιηθεί CALL RANDOM_SEED (SIZE = M) CALL RANDOM_SEED (PUT = SEED (1 : M)) CALL RANDOM_SEED (GET = OLD (1 : M))