Fortran

Στην σελίδα αυτή αναπτύσσεται η θεωρία της γλώσσας προγραμματισμού fortran με αντίστοιχα παραδείγματα.  Επίσης μπορείτε να βρείτε περισσότερες πληροφορίες για την fortran αλλά και για άλλες γλώσσες προγραμματισμού στο tutorialspoint. Τα περιεχόμενα της σελίδας φαίνονται παρακάτω.

code, coding, computer-1839406.jpg

1. Εισαγωγή

Ο προγραμματισμός είναι η διαδικασία δημιουργίας εντολών που ένας υπολογιστής μπορεί να κατανοήσει και να εκτελέσει. Περιλαμβάνει τη σύνταξη κώδικα σε μια γλώσσα προγραμματισμού, όπως η Fortran, που μπορεί να χρησιμοποιηθεί για την επίλυση ενός συγκεκριμένου προβλήματος ή την ολοκλήρωση μιας συγκεκριμένης εργασίας. Τα προγράμματα μπορεί να κυμαίνονται από απλά σενάρια που αυτοματοποιούν επαναλαμβανόμενες εργασίες έως μεγάλα, πολύπλοκα συστήματα που ελέγχουν ολόκληρες βιομηχανίες.

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

Η Fortran (συντομογραφία του Formula Translator) είναι μια μεταγλωττισμένη γλώσσα προγραμματισμού γενικής χρήσης που χρησιμοποιείται ευρέως για επιστημονικές και μηχανολογικές εφαρμογές. Αναπτύχθηκε για πρώτη φορά τη δεκαετία του 1950 και έκτοτε έχει υποστεί αρκετές αναθεωρήσεις, με την τελευταία έκδοση να είναι το Fortran 2018.

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

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

Η Fortran προσφέρει επίσης μια σειρά από δυνατότητες που έχουν σχεδιαστεί για να διευκολύνουν τη σύνταξη παράλληλου και ταυτόχρονου κώδικα, όπως το OpenMP και το Coarray Fortran. Αυτά τα χαρακτηριστικά επιτρέπουν την αποτελεσματική χρήση πολυπύρηνων επεξεργαστών και συστημάτων κατανεμημένης μνήμης, καθιστώντας τη Fortran κατάλληλη για υπολογιστικές εφαρμογές υψηλής απόδοσης.

H Fortran χρησιμοποιείται ευρέως σε πολλούς επιστημονικούς και μηχανικούς τομείς όπως η αεροδιαστημική, η πυρηνική φυσική και η πρόγνωση καιρού. Πολλοί επιστημονικοί και μηχανικοί κώδικες είναι γραμμένοι στη Fortran και εξακολουθεί να χρησιμοποιείται ευρέως στη βιομηχανία λόγω της απόδοσης και της αξιοπιστίας της.

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

Υπάρχουν διαφορετικοί τρόποι λήψης και εγκατάστασης της Fortran και ενός μεταγλωττιστή Fortran στον υπολογιστή σας, ανάλογα με το λειτουργικό σας σύστημα και τον συγκεκριμένο μεταγλωττιστή που θέλετε να χρησιμοποιήσετε.

Windows:

Ένας από τους πιο δημοφιλείς μεταγλωττιστές Fortran για Windows είναι το gfortran, το οποίο αποτελεί μέρος της συλλογής GNU Compiler. Μπορείτε να κάνετε λήψη του gfortran για Windows από τον επίσημο ιστότοπο (https://gcc.gnu.org/wiki/GFortranBinaries#Windows).

Μόλις ολοκληρωθεί η λήψη, κάντε διπλό κλικ στο αρχείο εγκατάστασης και ακολουθήστε τις οδηγίες για να εγκαταστήσετε το gfortran στον υπολογιστή σας.

Μπορείτε να ελέγξετε ότι η εγκατάσταση ήταν επιτυχής ανοίγοντας μια γραμμή εντολών και πληκτρολογώντας “gfortran -v”, η οποία θα εμφανίσει την έκδοση του gfortran που είναι εγκατεστημένη.

Mac:

Ο καλύτερος τρόπος για να εγκαταστήσετε το Fortran σε Mac είναι να χρησιμοποιήσετε έναν διαχειριστή πακέτων όπως το Homebrew. Για να εγκαταστήσετε το Homebrew, ανοίξτε ένα τερματικό και πληκτρολογήστε την ακόλουθη εντολή:

  • /bin/bash -c $(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)

Μόλις εγκατασταθεί το Homebrew, μπορείτε να εγκαταστήσετε το gfortran εκτελώντας την ακόλουθη εντολή:

  • brew install gcc

Επαληθεύστε ότι το gfortran είναι εγκατεστημένο εκτελώντας την εντολή:

  • gfortran –version

Ένα από τα πρώτα πράγματα που θα μάθετε όταν μαθαίνετε μια νέα γλώσσα προγραμματισμού είναι πώς να εκτυπώσετε το “Hello, World!” στην οθόνη. Στο Fortran, αυτό μπορεί να γίνει χρησιμοποιώντας την πρόταση PRINT.

~/~ PRINT *, “Hello, World!”

~/~END 

Εξήγηση κώδικα: Σε αυτόν τον κώδικα, η πρόταση PRINT χρησιμοποιείται για την έξοδο του κειμένου “Hello, World!” στην οθόνη. Ο αστερίσκος (*) μετά τη λέξη-κλειδί PRINT λέει στον μεταγλωττιστή να χρησιμοποιήσει την προεπιλεγμένη μορφοποίηση για την έξοδο. Η δήλωση END χρησιμοποιείται για να επισημάνει το τέλος του προγράμματος.

2. Σταθερές και μεταβλητές

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

  • Ιnteger

~/~ integer :: x

~/~ x = 5

Σε αυτό το παράδειγμα, το x ορίζεται ως ακέραια μεταβλητή και του εκχωρείται η τιμή 5.

  • Real

~/~ real :: y

~/~ y = 3.14

Σε αυτό το παράδειγμα, η y ορίζεται ως πραγματική μεταβλητή και της αποδίδεται η τιμή 3,14

  • Character

~/~character(len=20) :: my_name

~/~my_name = “John Doe”

Σε αυτό το παράδειγμα, το my_name ορίζεται ως μια μεταβλητή χαρακτήρων με μήκος 20 και της εκχωρείται η τιμή “John Doe”.

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

~/~ parameter :: pi = 3.14159

Σε αυτό το παράδειγμα, το pi ορίζεται ως μια σταθερά με τιμή 3,14159.

Στην Fortran, αριθμητικές εκφράσεις χρησιμοποιούνται για την εκτέλεση μαθηματικών πράξεων σε αριθμούς.

Ακολουθούν μερικά παραδείγματα κοινών αριθμητικών εκφράσεων στη Fortran:

Πρόσθεση: Για να προσθέσετε δύο αριθμούς, χρησιμοποιήστε τον τελεστή “+“. Για παράδειγμα, το “3 + 5” θα αξιολογηθεί σε 8.

~/~ result = 3 + 5

~/~ print *, “3 + 5 = “, result

Output:  “3 + 5 = 8”

Αφαίρεση: Για να αφαιρέσετε έναν αριθμό από έναν άλλο, χρησιμοποιήστε τον τελεστή ““. Για παράδειγμα, το “10 – 5” θα αξιολογηθεί σε 5.

~/~ result = 10 – 5

~/~ print *, “10 – 5 = “, result

Output: “10 – 5 = 5”

Πολλαπλασιασμός: Για να πολλαπλασιάσετε δύο αριθμούς μαζί, χρησιμοποιήστε τον τελεστή “*“. Για παράδειγμα, το “4 * 5” θα αξιολογηθεί σε 20.

~/~ result = 4 * 5

~/~ print *, “4 * 5 = “, result

Output: “4 * 5 = 20”

Διαίρεση: Για να διαιρέσετε έναν αριθμό με έναν άλλο, χρησιμοποιήστε τον τελεστή “/“. Για παράδειγμα, το “10 / 2” θα αξιολογηθεί σε 5.

~/~ result = 10 / 2

~/~ print *, “10 / 2 = “, result

Output: “10 / 2 = 5”

Ύψωση σε δύναμη: Για να αυξήσετε έναν αριθμό σε δύναμη, χρησιμοποιήστε τον τελεστή “**“. Για παράδειγμα, το “2 ** 3” θα αξιολογηθεί σε 8.

~/~ result = 2 ** 3

~/~ print *, “2 ** 3 = “, result

Output: “2 ** 3 = 8”

Modulus: Για να βρείτε το υπόλοιπο μιας πράξης διαίρεσης, χρησιμοποιήστε τον τελεστή “mod“. Για παράδειγμα, το “10 mod 3” θα αξιολογηθεί σε 1.

~/~ result = 10 mod 3

~/~ print *, “10 mod 3 = “, result

Output: “10 mod 3 = 1”

Σε αυτά τα παραδείγματα, οι εκφράσεις αξιολογούνται και το αποτέλεσμα αποθηκεύεται στη μεταβλητή “result”, η οποία στη συνέχεια εκτυπώνεται στην οθόνη χρησιμοποιώντας τη δήλωση “print”. Σημειώστε ότι το * στη δήλωση εκτύπωσης σημαίνει ότι η μορφή της τιμής καθορίζεται από τον τύπο της μεταβλητής.

Μπορείτε επίσης να χρησιμοποιήσετε αυτές τις εκφράσεις σε πιο σύνθετες εντολές, όπως:

~/~ a = 3

~/~ b = 5

~/~ c = 2

~/~ result = (a + b) * c – (b/a)

~/~ print *, result

Output: “14”

Εδώ έχουμε μια πιο σύνθετη έκφραση που πρώτα αξιολογεί (a + b) * c και στη συνέχεια αφαιρεί (b/a) από αυτό το αποτέλεσμα.

Αυτά είναι μερικά βασικά παραδείγματα αριθμητικών εκφράσεων στο Fortran. Υπάρχουν πολλές άλλες μαθηματικές πράξεις που μπορούν να εκτελεστούν, όπως τριγωνομετρικές συναρτήσεις, λογάριθμοι και άλλα. Είναι σημαντικό να σημειωθεί ότι το Fortran ακολουθεί τη σειρά των πράξεων (PEMDAS) κατά την αξιολόγηση παραστάσεων, όπως και στα μαθηματικά.

3. Εντολές εισόδου και εξόδου

print

H Fortran παρέχει τη δήλωση PRINT για την εγγραφή δεδομένων στο τερματικό (δηλαδή τη γραμμή εντολών ή την κονσόλα). Η πρόταση PRINT είναι παρόμοια με την πρόταση WRITE, αλλά έχει ορισμένες πρόσθετες δυνατότητες και προεπιλογές. (ΠΑΡΑΔΕΙΓΜΑ 1)

Εξήγηση κώδικα παραδείγματος 1:

Το πρόγραμμα γράφει τις τιμές των x και i στο τερματικό χρησιμοποιώντας την πρόταση PRINT. Το * στην πρόταση PRINT χρησιμοποιείται ως σύμβολο κράτησης θέσης για την προεπιλεγμένη μορφή. Η προεπιλεγμένη μορφή για την πρόταση PRINT είναι (A,I5,A,F10.2) που σημαίνει ότι η προεπιλεγμένη μορφή είναι ένας χαρακτήρας ακολουθούμενος από έναν ακέραιο αριθμό 5 ψηφίων ακολουθούμενο από έναν χαρακτήρα ακολουθούμενο από έναν πραγματικό αριθμό με 10 χαρακτήρες και 2 δεκαδικά ψηφία.

Η δήλωση PRINT σάς επιτρέπει επίσης να καθορίσετε έναν προσδιοριστή μορφής.( ΠΑΡΑΔΕΙΓΜΑ 2).

Εξήγηση κώδικα παραδείγματος 2:

Σε αυτό το παράδειγμα, το πρόγραμμα γράφει τις τιμές των x και i στο τερματικό χρησιμοποιώντας την πρόταση PRINT με έναν προσδιοριστή μορφής. Ο προσδιοριστής μορφής (F10.4, I5) σημαίνει ότι η πρώτη τιμή (x) πρέπει να γραφτεί ως πραγματικός αριθμός με 10 χαρακτήρες και 4 δεκαδικά ψηφία και η δεύτερη τιμή (i) πρέπει να γραφτεί ως ακέραιος αριθμός με 5 ψηφία

Κωδικασ

ΠΑΡΑΔΕΙΓΜΑ 1

program print_example
    implicit none
        
    real :: x = 3.14
    integer :: i = 42
        
    print *, "x =", x
    print *, "i =", i
        
end program    

ΠΑΡΑΔΕΙΓΜΑ 2

program print_example2
implicit none

real :: x = 3.14
integer :: i = 42

print '(F10.4,I5)', x, i

end program   

READ

Στη Fortran, η πρόταση READ χρησιμοποιείται για την ανάγνωση δεδομένων από μια πηγή εισόδου, όπως το τερματικό ή ένα αρχείο. Η δήλωση READ σάς επιτρέπει να διαβάζετε μία τιμή ή πολλές τιμές ταυτόχρονα.

(ΠΑΡΑΔΕΙΓΜΑ 1)

Εξήγηση κώδικα παραδείγματος 1:

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

Μπορείτε επίσης να διαβάσετε πολλές τιμές ταυτόχρονα διαχωρίζοντάς τις με κόμματα( ΠΑΡΑΔΕΙΓΜΑ 2).

Μπορείτε επίσης να διαβάσετε δεδομένα από ένα αρχείο ανακατευθύνοντας την είσοδο στο αρχείο ή καθορίζοντας τον αριθμό μονάδας αρχείου στη δήλωση READ:(ΠΑΡΑΔΕΙΓΜΑ 3)

Εξήγηση κώδικα παραδείγματος 3:

Σε αυτό το παράδειγμα, το πρόγραμμα ανοίγει το αρχείο ‘numbers.txt’ για ανάγνωση, διαβάζει έναν αριθμό από το αρχείο και τον εκτυπώνει στο τερματικό.

Συνοπτικά, η δήλωση READ χρησιμοποιείται για την ανάγνωση δεδομένων από μια πηγή εισόδου στο Fortran, μπορεί να είναι το τερματικό ή ένα αρχείο. Μπορείτε να διαβάσετε μια μεμονωμένη τιμή ή πολλές τιμές ταυτόχρονα χρησιμοποιώντας τη δήλωση READ με τη δυνατότητα να καθορίσετε τη μορφή των δεδομένων.

ΠΑΡΑΔΕΙΓΜΑ 1

program read_example
    implicit none
    integer :: number
    print *, "Enter a number:"
    read *, number
    print *, "You entered:", number
end program  

ΠΑΡΑΔΕΙΓΜΑ 2

program read_example2
    implicit none
    integer :: number1, number2
    print *, "Enter two numbers:"
    read *, number1, number2
    print *, "You entered:", number1, number2
end program   

ΠΑΡΑΔΕΙΓΜΑ 3

program read_file_example
    implicit none
    integer :: number
    open(unit=10, file='numbers.txt', status='old')
    read(10, *) number
    print *, "The number from the file is:", number
    close(10)
end program

WRITE

Η δήλωση WRITE στο Fortran χρησιμοποιείται για την εγγραφή δεδομένων σε μια πηγή εξόδου, όπως το τερματικό ή ένα αρχείο. Η πρόταση WRITE σάς επιτρέπει να γράψετε μια μεμονωμένη τιμή ή πολλές τιμές ταυτόχρονα. (ΠΑΡΑΔΕΙΓΜΑ 1)

Εξήγηση κώδικα παραδείγματος 1:

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

Μπορείτε επίσης να γράψετε πολλές τιμές ταυτόχρονα διαχωρίζοντάς τις με κόμματα: ( ΠΑΡΑΔΕΙΓΜΑ 2).

Μπορείτε επίσης να γράψετε δεδομένα σε ένα αρχείο ανακατευθύνοντας την έξοδο στο αρχείο ή καθορίζοντας τον αριθμό μονάδας αρχείου στη δήλωση WRITE: (ΠΑΡΑΔΕΙΓΜΑ 3)

Εξήγηση κώδικα παραδείγματος 3:

Σε αυτό το παράδειγμα, το πρόγραμμα ανοίγει το αρχείο ‘numbers.txt’ για εγγραφή, γράφει την τιμή του αριθμού της μεταβλητής στο αρχείο και στη συνέχεια κλείνει το αρχείο.

Συνοπτικά, η πρόταση WRITE χρησιμοποιείται για την εγγραφή δεδομένων σε μια πηγή εξόδου στο Fortran, μπορεί να είναι το τερματικό ή ένα αρχείο. Μπορείτε να γράψετε μια μεμονωμένη τιμή ή πολλές τιμές ταυτόχρονα χρησιμοποιώντας την πρόταση WRITE με τη δυνατότητα να καθορίσετε τη μορφή των δεδομένων.

ΠΑΡΑΔΕΙΓΜΑ 1

program write_example
    implicit none
    integer :: number
    number = 5
    write (*,*) "The number is:", number
end program 

ΠΑΡΑΔΕΙΓΜΑ 2

program write_example2
    implicit none
    integer :: number1, number2
    number1 = 5
    number2 = 10
    write (*,*) "The numbers are:", number1, number2
end program  

ΠΑΡΑΔΕΙΓΜΑ 3

program write_file_example
    implicit none
    integer :: number
    number = 5
    open(unit=10, file='numbers.txt', status='new')
    write(10, *) number
    close(10)
end program

ΠΑΡΑΔΕΙΓΜΑ με print, read, write

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

Στη συνέχεια, το πρόγραμμα χρησιμοποιεί την πρόταση PRINT για να ζητήσει από το χρήστη να εισαγάγει δύο αριθμούς, οι οποίοι διαβάζονται χρησιμοποιώντας την πρόταση READ και αποθηκεύονται στις μεταβλητές number1 και number2.

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

Τέλος, το πρόγραμμα ανοίγει το αρχείο ‘numbers.txt’ για εγγραφή, γράφει την τιμή των μεταβλητών number1 και number2 στο αρχείο και στη συνέχεια κλείνει το αρχείο.

Αυτό το πρόγραμμα δείχνει πώς να χρησιμοποιείτε τις προτάσεις READ, PRINT και WRITE για την εισαγωγή και την έξοδο δεδομένων σε ένα πρόγραμμα Fortran.

ΚΩΔΙΚΑΣ

program read_print_write_example
    implicit none
    integer :: number1, number2
    character(len=20) :: name

    print *, "Enter your name:"
    read *, name

    print *, "Enter two numbers:"
    read *, number1, number2

    write (*,*) "Your name is:", name
    write (*,*) "The numbers you entered are:", number1, "and", number2

    open(unit=10, file='numbers.txt', status='new')
    write(10, *) number1, number2
    close(10)
end program

4. Εντολές ελέγχου

if

Η δήλωση IF στη Fortran χρησιμοποιείται για τη λήψη αποφάσεων σε ένα πρόγραμμα με βάση ορισμένες προϋποθέσεις. Η βασική σύνταξη της δήλωσης IF είναι η εξής: (ΠΑΡΑΔΕΙΓΜΑ 1)

Εξήγηση κώδικα παραδείγματος 1:

Η συνθήκη είναι μια έκφραση που αξιολογείται ως TRUE ή FALSE. Εάν η συνθήκη είναι TRUE, οι δηλώσεις εντός του μπλοκ IF θα εκτελεστούν. Εάν η συνθήκη είναι FALSE, οι δηλώσεις εντός του μπλοκ IF θα παραβλεφθούν.

ΠΑΡΑΔΕΙΓΜΑ 1

IF (condition) THEN
    statements
END I 

BLOCK IF

Η δήλωση “block IF” στη Fortran είναι μια παραλλαγή της κανονικής πρότασης IF που επιτρέπει τον έλεγχο πολλαπλών συνθηκών και την εκτέλεση πολλαπλών εντολών με βάση αυτές τις συνθήκες. Η βασική σύνταξη της δήλωσης μπλοκ IF είναι η εξής: (ΠΑΡΑΔΕΙΓΜΑ 1)

Εξήγηση κώδικα παραδείγματος 1:

Σε αυτό το παράδειγμα, πολλαπλές συνθήκες (συνθήκη 1, συνθήκη 2, συνθήκη 3, …) μπορούν να ελεγχθούν και οι αντίστοιχες εντολές θα εκτελεστούν εάν η συνθήκη είναι αληθής. Εάν καμία από τις συνθήκες δεν είναι αληθής, οι δηλώσεις στο τελικό μπλοκ ELSE θα εκτελεστούν.

Ακολουθεί ένα παράδειγμα προγράμματος που δείχνει τη χρήση της πρότασης block IF: ( ΠΑΡΑΔΕΙΓΜΑ 2).

 

ΠΑΡΑΔΕΙΓΜΑ 1

IF (condition1) THEN
    statements1
ELSE IF (condition2) THEN
    statements2
ELSE IF (condition3) THEN
    statements3
...
ELSE
    statementsN
END IF 

ΠΑΡΑΔΕΙΓΜΑ 2

program if_example
    implicit none
    integer :: x, y

    print *, "Enter two integers:"
    read *, x, y

    if (x > 0) then
        if (y > 0) then 

SELECT Case

Η δήλωση “SELECT CASE” στη Fortran είναι μια δομή ελέγχου που σας επιτρέπει να επιλέξετε και να εκτελέσετε ένα από τα πολλά μπλοκ κώδικα με βάση την τιμή μιας έκφρασης. Η βασική σύνταξη της πρότασης SELECT CASE είναι η εξής:  (ΠΑΡΑΔΕΙΓΜΑ 1)

Εξήγηση κώδικα παραδείγματος 1:

Σε αυτό το παράδειγμα, η παράσταση αξιολογείται και η τιμή της συγκρίνεται με τις τιμές (value1, value2, value3, …) στις δηλώσεις CASE. Εάν η τιμή της παράστασης ταιριάζει με μία από τις τιμές CASE, θα εκτελεστούν οι αντίστοιχες δηλώσεις. Εάν καμία από τις τιμές δεν ταιριάζει, οι δηλώσεις στο μπλοκ CASE DEFAULT θα εκτελεστούν.

Ακολουθεί ένα παράδειγμα προγράμματος που δείχνει τη χρήση της δήλωσης SELECT CASE: ( ΠΑΡΑΔΕΙΓΜΑ 2).

Εξήγηση κώδικα παραδείγματος 2:

Αυτό το πρόγραμμα ζητά από τον χρήστη να εισαγάγει έναν αριθμό μεταξύ 1 και 3, εκχωρεί την τιμή του x στο y ανάλογα με την τιμή του x και στη συνέχεια εκτυπώνει την τιμή του y. Εάν η τιμή του x δεν είναι μεταξύ 1 και 3, το y θα εκχωρηθεί -1.

ΠΑΡΑΔΕΙΓΜΑ 1

SELECT CASE (expression)
CASE (value1)
    statements1
CASE (value2)
    statements2
CASE (value3)
    statements3
...
CASE DEFAULT
    statementsN
END SELECT
 

ΠΑΡΑΔΕΙΓΜΑ 2

program select_case_example
    implicit none
    integer :: x, y

    print *, "Enter a number between 1 and 3:"
    read *, x

    select case (x)
    case (1)
        y = x*x
    case (2)
        y = x*x*x
    case (3)
        y = x*x*x*x
    case default
        y = -1
    end select

    print *, "Result: ", y
end program

DO LOOP

Στη Fortran, ο βρόχος DO χρησιμοποιείται για την εκτέλεση ενός συνόλου εντολών για  καθορισμένο αριθμό φορών. Η βασική σύνταξη του βρόχου DO είναι η εξής: (ΠΑΡΑΔΕΙΓΜΑ 1)

Εξήγηση κώδικα παραδείγματος 1:

Όπου “variable” είναι η μεταβλητή βρόχου, “start” είναι η αρχική τιμή της μεταβλητής βρόχου, “end” είναι η τελική τιμή της μεταβλητής βρόχου και “increment” είναι το ποσό κατά το οποίο αυξάνεται η μεταβλητή βρόχου κάθε φορά.

Για παράδειγμα, ο παρακάτω κώδικας θα εκτυπώσει τους αριθμούς από το 1 έως το 10:  ( ΠΑΡΑΔΕΙΓΜΑ 2).

Εξήγηση κώδικα παραδείγματος 2:

Αυτό θα εκτυπώσει τους αριθμούς από το 1 έως το 4 και θα βγει από τον βρόχο.

Επιπλέον, η δήλωση “CYCLE” μπορεί να χρησιμοποιηθεί για μετάβαση στην επόμενη επανάληψη του βρόχου χωρίς να εκτελεστούν οι υπόλοιπες εντολές στην τρέχουσα επανάληψη.

Ακολουθεί ένα παράδειγμα που χρησιμοποιεί τη δήλωση “CYCLE” για την εκτύπωση μόνο ζυγών αριθμών μεταξύ 1 και 10: (ΠΑΡΑΔΕΙΓΜΑ 3)

 

DO WHILE

Στη FORTRAN, ο βρόχος DO WHILE χρησιμοποιείται για την επανειλημμένη εκτέλεση ενός μπλοκ εντολών, εφόσον πληρούται μια συγκεκριμένη συνθήκη. Η βασική σύνταξη ενός βρόχου DO WHILE είναι η εξής: (ΠΑΡΑΔΕΙΓΜΑ 4) 

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

Ακολουθεί ένα παράδειγμα ενός απλού βρόχου DO WHILE στο FORTRAN: (ΠΑΡΑΔΕΙΓΜΑ 5)

Εξήγηση κώδικα παραδείγματος 5:

Αυτό το παράδειγμα θα εκτυπώσει τους αριθμούς 1 έως 10, επειδή η συνθήκη (i <= 10) ισχύει για κάθε επανάληψη του βρόχου. Μόλις γίνει 11, η συνθήκη είναι false και ο βρόχος βγαίνει.

Ένα άλλο παράδειγμα: (ΠΑΡΑΔΕΙΓΜΑ 6)

Εξήγηση κώδικα παραδείγματος 6:

Αυτό το παράδειγμα θα διαιρέσει το x με το 2 μέχρι να γίνει μικρότερο από 0,1. Ο βρόχος DO WHILE συνεχίζεται όσο το x είναι μεγαλύτερο από 0,1. Το πλήθος της μεταβλητής αυξάνεται κάθε φορά μέσω του βρόχου, επομένως θα περιέχει τον αριθμό των επαναλήψεων.

 

ΠΑΡΑΔΕΙΓΜΑ 1

DO variable = start, end, increment
statements
END DO
 

ΠΑΡΑΔΕΙΓΜΑ 2

DO i = 1, 10
PRINT *, i
IF (i == 5) EXIT
END DO

ΠΑΡΑΔΕΙΓΜΑ 3

DO i = 1, 10
IF (MOD(i, 2) == 1) CYCLE
PRINT *, i
END DO

ΠΑΡΑΔΕΙΓΜΑ 4

DO WHILE (condition)
! statements to be executed
END DO

ΠΑΡΑΔΕΙΓΜΑ 5

integer :: i = 1

DO WHILE (i <= 10)
    print *, i
    i = i + 1
END DO

ΠΑΡΑΔΕΙΓΜΑ 6

integer :: count = 0
real :: x = 10.0

DO WHILE (x > 0.1)
    x = x/2
    count = count + 1
END DO

παραδειγμα ME DO ΚΑΙ IF

Ακολουθεί ένα παράδειγμα προγράμματος που χρησιμοποιεί έναν βρόχο DO και μια δήλωση IF για να εκτυπώσει τους αριθμούς από το 1 έως το 10, αλλά μόνο τους ζυγούς αριθμούς:

Εξήγηση κώδικα:

Σε αυτό το παράδειγμα, ο βρόχος DO επαναλαμβάνεται από το 1 έως το 10. Σε κάθε επανάληψη, η τιμή του i ελέγχεται για να διαπιστωθεί εάν αν είναι ζυγός με τη συνάρτηση mod, η οποία επιστρέφει το υπόλοιπο όταν το πρώτο όρισμα διαιρεθεί με το δεύτερο όρισμα. Τέλος, το αποτέλεσμα εκτυπώνεται στην οθόνη.

κωδικασ

program test
    implicit none
    integer :: i
    do i = 1, 10
        if (mod(i, 2) == 0) then
            write(*,*) i
        end if
    end do
end program test

5. Πίνακες

Στη Fortran, ένας πίνακας είναι μια συλλογή μεταβλητών που αποθηκεύονται σε συνεχόμενες θέσεις μνήμης και είναι του ίδιου τύπου δεδομένων. Τα στοιχεία ενός πίνακα μπορούν να προσπελαστούν από τους δείκτες τους, οι οποίοι είναι ακέραιες τιμές που αντιπροσωπεύουν τη θέση του στοιχείου στον πίνακα.

Ακολουθεί ένα παράδειγμα δήλωσης και προετοιμασίας ενός ακέραιου πίνακα στο Fortran: (ΠΑΡΑΔΕΙΓΜΑ 1)

Εξήγηση κώδικα παράδειγμα 1: 

Σε αυτό το παράδειγμα, ο my_array είναι ένας ακέραιος πίνακας με διάσταση 10 και αρχικοποιείται με τις τιμές 1 έως 10.

Μπορείτε επίσης να χρησιμοποιήσετε ένα βρόχου για να αρχικοποιήσετε τον πίνακα με τιμές: (ΠΑΡΑΔΕΙΓΜΑ 2)

Μπορείτε επίσης να χρησιμοποιήσετε τον βρόχο DO σε συνδυασμό με την πρόταση IF (ΠΑΡΑΔΕΙΓΜΑ 3)

ΠΡΟΣΘΕΣΗ ΠΙΝΑΚΩΝ

real, dimension(5) :: a, b, c
a = [1,2,3,4,5]
b = [5,4,3,2,1]
c = a + b

Αυτό δημιουργεί τους πίνακες “a” και “b” και τους εκχωρεί τις τιμές [1,2,3,4,5] και [5,4,3,2,1] αντίστοιχα και c είναι το άθροισμα των a και b, c =[6,6,6,6,6]

ΠΑΡΑΔΕΙΓΜΑ 1

INTEGER, DIMENSION(10) :: my_array
my_array = (/ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 /)

ΠΑΡΑΔΕΙΓΜΑ 2

INTEGER, DIMENSION(10) :: my_array
DO i = 1, 10
    my_array(i) = i
END DO

ΠΑΡΑΔΕΙΓΜΑ 3

REAL, DIMENSION(10) :: my_array
my_array = (/ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 /)
DO i=1,10
   IF(my_array(i)>5) THEN
       PRINT *, my_array(i)
   END IF
END DO

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

Στη Fortran, μια συνάρτηση είναι ένα υποπρόγραμμα που επιστρέφει μια τιμή. Η σύνταξη για τον ορισμό μιας συνάρτησης είναι η εξής: (ΠΑΡΑΔΕΙΓΜΑ 1)

Για παράδειγμα, μια συνάρτηση που υπολογίζει το παραγοντικό ενός αριθμού θα μπορούσε να οριστεί ως:  (ΠΑΡΑΔΕΙΓΜΑ 2)

Εξήγηση κώδικα παράδειγμα 2: 

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

result = factorial(5)

Αυτό θα όριζε το αποτέλεσμα της μεταβλητής στην τιμή 5! (5 παραγοντικό) ή 120.

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

ΠΑΡΑΔΕΙΓΜΑ 1

function name(argument_list)
implicit none
type(argument_type) :: argument_name
type(return_type) :: name

!function body

end function name

ΠΑΡΑΔΕΙΓΜΑ 2

function factorial(n)
implicit none
integer :: n
integer :: factorial

factorial = 1
do i = 1, n
    factorial = factorial * i
end do

end function factorial

7. Format

Στη Fortran, η δήλωση FORMAT χρησιμοποιείται για να καθορίσει τον τρόπο μορφοποίησης των δεδομένων εισόδου και εξόδου. Συνήθως χρησιμοποιείται σε συνδυασμό με τις προτάσεις READ και WRITE.

Ένα απλό παράδειγμα χρήσης της δήλωσης FORMAT για τον καθορισμό της μορφής εξόδου για μια μεταβλητή είναι: (ΠΑΡΑΔΕΙΓΜΑ 1)

Εξήγηση κώδικα παράδειγμα 1: 

Αυτό θα εκτυπώσει την τιμή του x σε ένα πεδίο πλάτους 5. Το I5  καθορίζει ότι η έξοδος πρέπει να είναι ένας ακέραιος αριθμός με πλάτος πεδίου 5.

Ένα άλλο παράδειγμα είναι: (ΠΑΡΑΔΕΙΓΜΑ 2)

Εξήγηση κώδικα παράδειγμα 2: 

Αυτό θα εκτυπώσει την τιμή του x με πλάτος πεδίου 5 και 2 δεκαδικά ψηφία. Το F5.2  προσδιορίζει ότι η έξοδος πρέπει να είναι ένας αριθμός κινητής υποδιαστολής με πλάτος πεδίου 5 και 2 δεκαδικά ψηφία.

Μπορείτε επίσης να χρησιμοποιήσετε τη δήλωση FORMAT με την πρόταση READ. Για παράδειγμα: (ΠΑΡΑΔΕΙΓΜΑ 3)

Εξήγηση κώδικα παράδειγμα 3: 

Αυτό θα διαβάσει μια ακέραια τιμή από την είσοδο και θα την αποθηκεύσει στη μεταβλητή x και στη συνέχεια θα εκτυπώσει την τιμή του x.

ΠΑΡΑΔΕΙΓΜΑ 1

PROGRAM example
    IMPLICIT NONE
    INTEGER :: x = 1234
    WRITE(*, "(I5)") x
END PROGRAM example

ΠΑΡΑΔΕΙΓΜΑ 2

PROGRAM example
   IMPLICIT NONE
   REAL :: x = 3.14159
   WRITE(*, "(F5.2)") x
END PROGRAM example

ΠΑΡΑΔΕΙΓΜΑ 3

PROGRAM example
    IMPLICIT NONE
    INTEGER :: x
    READ(*, "(I5)") x
    WRITE(*, "(I5)") x
END PROGRAM example

8. ΠΑΡΑΔΕΙΓΜΑΤΑ

παραδειγμα 1

Ακολουθεί ένα απλό παράδειγμα προγράμματος Fortran που υπολογίζει το εμβαδόν ενός κύκλου:

Εξήγηση κώδικα:

Σε αυτό το παράδειγμα, η δήλωση program ξεκινά το πρόγραμμα και η δήλωση end program το τερματίζει. Η  δήλωση implicit none διασφαλίζει ότι όλες οι μεταβλητές που χρησιμοποιούνται στο πρόγραμμα δηλώνονται ρητά. Ο τύπος real  χρησιμοποιείται για να δηλώσει τις μεταβλητές ακτίνα και περιοχή. Η πρόταση print χρησιμοποιείται για την έξοδο ενός μηνύματος στον χρήστη και η πρόταση read χρησιμοποιείται για την εισαγωγή μιας τιμής από τον χρήστη. Το σύμβολο * στις δηλώσεις print και read υποδεικνύει ότι η είσοδος ή η έξοδος πρέπει να προέρχεται ή να πηγαίνει στην τυπική είσοδο/έξοδο.

 

κωδικασ

program circle
implicit none
real :: radius, area

print *, "Enter the radius of the circle:"
read *, radius

area = 3.14159 * radius ** 2

print *, "The area of the circle is", area

end program circle

παραδειγμα 2

Ένα άλλο παράδειγμα είναι το ακόλουθο πρόγραμμα που εκτυπώνει τους πρώτους n αριθμούς Fibonacci:

Εξήγηση κώδικα:

Σε αυτό το παράδειγμα, ο βρόχος do χρησιμοποιείται για τη δημιουργία των αριθμών Fibonacci. Οι εντολές allocate και deallocate χρησιμοποιούνται για την εκχώρηση και την κατανομή μνήμης για το fib του πίνακα. Η δήλωση print χρησιμοποιείται για την έξοδο των τιμών του πίνακα στον χρήστη.

κωδικασ

program fibonacci
implicit none

integer :: n, i
integer, dimension(:), allocatable :: fib

print *, "Enter the number of Fibonacci numbers to generate:"
read *, n

allocate(fib(n))

fib(1) = 0
fib(2) = 1

do i = 3, n
    fib(i) = fib(i-1) + fib(i-2)
end do

print *, fib

deallocate(fib)

end program fibonacci

παραδειγμα 3

Να γραφεί πρόγραμμα σε Fortran το οποίο θα ζητάει τα απαραίτητα δεδομένα (x και y) και θα επιλύει και θα εμφανίζει το αποτέλεσμα από τo παρακάτω:

Εξήγηση κώδικα:

Το πρόγραμμα αρχικά δηλώνει μεταβλητές για x, y και το αποτέλεσμα της συνάρτησης. Στη συνέχεια, ζητά από το χρήστη να εισαγάγει τιμές για x και y χρησιμοποιώντας τη δήλωση “read”.

Στη συνέχεια, το πρόγραμμα χρησιμοποιεί ένα μπλοκ “if-else” για να αξιολογήσει τη συνάρτηση με βάση τις τιμές των x και y και αποθηκεύει το αποτέλεσμα στη μεταβλητή “αποτέλεσμα”.

Τέλος, το πρόγραμμα χρησιμοποιεί τη δήλωση “print” για να εμφανίσει την τιμή της μεταβλητής “result”, η οποία είναι η τελική έξοδος της συνάρτησης.

Σημειώστε ότι σε αυτήν την περίπτωση, η συνάρτηση χρησιμοποιεί έναν μαθηματικό τελεστή ** για την εκτίμηση και έναν λογικό τελεστή .and. για το λογικο και.

κωδικασ


program function_example
    implicit none

    ! Declare variables
    real :: x, y, result

    ! Get input from user
    print *, "Enter a value for x: "
    read *, x
    print *, "Enter a value for y: "
    read *, y

    ! Evaluate function and store result
    if (x >= 0 .and. y >= 0) then
        result = x + y
    else if (x >= 0 .and. y < 0) then
        result = (x + y)**2
    else if (x < 0 .and. y >= 0) then
        result = x**2 + y
    else
        result = x**2 + y**2
    end if

    ! Display result
    print *, "Result: ", result

end program function_example

παραδειγμα 4

Να γραφεί πρόγραμμα σε Fortran το οποίο θα ζητάει τα απαραίτητα δεδομένα (x, y, k,n) και θα επιλύει και θα εμφανίζει το αποτέλεσμα από τo παρακάτω:

Εξήγηση κώδικα:

Αυτό το πρόγραμμα ζητά πρώτα από το χρήστη να εισαγάγει τιμές για τα x, y, k και n. Στη συνέχεια, χρησιμοποιεί μια πρόταση IF-ELSE για να ελέγξει την τιμή του y και να επιλέξει ποια έκδοση της εξίσωσης θα χρησιμοποιήσει. Στη συνέχεια υπολογίζει την τιμή του f και την εκτυπώνει.

κωδικασ

program EXAMPLE2
    implicit none
    
    real x,y,k,n
    integer sum
    
    print *,'This program will ask for four numbers'
    print*,'Give me the first integer:'
    read*,x
    
    print*,'Give me the second integer;'
    read*,y
    
    print*,'Give me the third integer:'
    read*,k
    
    print*,'Give me the fourth integer:'
    read*,n
    
    if(y>=-12) then 
        print*,'f(x,y)=(tan(kx)/1+x^4)+(e^(ny)/cosh(kn))'
        sum= tan (k*x)/(1+x**4)+ exp (n*y)/ cosh(k*n)
        print*,'The result is =',sum
            
    else if(y<-12) then
        print*,'f(x,y)=(log(kx)+e^ny/cosh(kn))^1/4'
        sum= (alog10(k*x)+ exp (n*y)/ cosh (k*n))**(1/4)
        print*,'The result is =',sum
        
    end if
       
    pause
    end program EXAMPLE2 

παραδειγμα 5

Να γραφεί πρόγραμμα σε Fortran το οποίο θα ζητάει τα απαραίτητα
δεδομένα (a, b, c) και θα επιλύει και θα εμφανίζει το αποτέλεσμα από
την γενική εξίσωση 2ου βαθμού ax^2 +bx +c =0
Να λαμβάνονται υπόψη όλες οι περιπτώσεις επίλυσης.

Εξήγηση κώδικα:

Σημείωση: Σε αυτό το πρόγραμμα χρησιμοποιήθηκαν τα ενσωματωμένα συναρτήσεις sqrt και ** για να υπολογίσουμε τις λύσεις της εξίσωσης.

κωδικασ

program επίλυση_Γενικής_Εξίσωσης
    implicit none
    
    real :: a, b, c, x1, x2, discriminant
    
    write(,) "Enter the coefficients of the quadratic equation (a, b, c):"
    read(,) a, b, c
    
    discriminant = b**2 - 4ac
    
    if (discriminant > 0) then
        x1 = (-b + sqrt(discriminant)) / (2a)
        x2 = (-b - sqrt(discriminant)) / (2a)
        write(,) "The solutions are: x1 = ", x1, " and x2 = ", x2
    else if (discriminant == 0) then
        x1 = -b / (2a)
        write(,) "The solution is: x = ", x1
    else
        write(,*) "No real solutions exist."
    end if

end program επίλυση_Γενικής_Εξίσωσης 
ΦΟΡΜΑ ΕΠΙΚΟΙΝΩΝΙΑΣ
Μπορείτε να προτείνετε ιδέες για βελτίωση της σελίδας, επίσης μπορείτε να βοηθήσετε στην βελτίωση του Cimi συμπληρώνοντας την φόρμα!
Scroll to Top