ΕΙΣΑΓΩΓΗ ΣΤΗΝ FORTRAN 77

Σχετικά έγγραφα
ΕΙΑΓΩΓΗ ΣΗΝ FORTRAN 77

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΚΑΙ ΠΡΑΞΕΙΣ. Παράδειγμα #1. Πράξεις μεταξύ ακεραίων αριθμών

Προγραμματισμός με FORTRAN Συνοπτικός Οδηγός Α. Σπυρόπουλος Α. Μπουντουβής

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Εισαγωγή στην Αριθμητική Ανάλυση

Υπολογιστές Ι. Άδειες Χρήσης. Τύποι δεδομένων. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

ΦΥΣ-151. Ηλεκτρονικοί Υπολογιστές Ι (FORTRAN 77) (Άνοιξη 2004)

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Εισαγωγή στην Tcl. Τί είναι η Tcl;

Άσκηση 1. Α. Υπολογίστε χωρίς να εκτελέσετε κώδικα FORTRAN τα παρακάτω: Ποιά είναι η τελική τιμή του Z στα παρακάτω κομμάτια κώδικα FORTRAN:

Λογικός τύπος Τελεστές σύγκρισης Λογικοί τελεστές Εντολές επιλογής Εμβέλεια Μαθηματικές συναρτήσεις Μιγαδικός τύπος ΔΕΥΤΕΡΗ ΔΙΑΛΕΞΗ

Κεφάλαιο 5ο: Εντολές Επανάληψης

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ. Τύποι δεδομένων ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΠΡΑΞΕΙΣ ΜΕΤΑΒΛΗΤΕΣ. Ακέραιοι αριθμοί (int) Πράξεις μεταξύ ακεραίων αριθμών

8 FORTRAN 77/90/95/2003

Οι εντολές ελέγχου της ροής ενός προγράμματος.

Εισαγωγή στον Προγραμματισμό

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

ΥΠΟΛΟΓΙΣΤΕΣ ΙI. Άδειες Χρήσης. Τύποι δεδομένων, μεταβλητές, πράξεις. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ. Δρ. Π. Νικολαΐδου

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

Ρητή μετατροπή αριθμητικής τιμής σε άλλο τύπο. Τι θα τυπωθεί στον παρακάτω κώδικα;

Δυναμικές Ιστοσελίδες Εισαγωγή στην Javascript για προγραμματισμό στην πλευρά του client

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

Πρώτη επαφή με το μαθηματικό πακέτο Mathematica

Εντολή Δεδομένα Περιεχόμενα μετά την εκτέλεση 1 read(x) 122 x= 2 read(a,b,c) a= b= c= 3 read(d,e)

4. Επιλογή και Επανάληψη

Εισαγωγή στην PHP. ΕΣΔ 516 Τεχνολογίες Διαδικτύου. Περιεχόμενα. Περιεχόμενα. ΕΣ 516: Τεχνολογίες ιαδικτύου. ΕΣ 516: Τεχνολογίες ιαδικτύου

ΦΥΣ 145 Υπολογιστικές Μέθοδοι στη Φυσική. Πρόοδος 26 Μαρτίου 2007 Ομάδα 1 η

Εισαγωγή στο προγραμματισμό Η/Υ C++ (Orwell Dev-C++)

Fortran και Αντικειμενοστραφής προγραμματισμός.

Γενικός τρόπος σύνταξης: Όνομα_συνάρτησης(όρισμα1,όρισμα2,,όρισμαΝ) Η ονομασία τους είναι δεσμευμένη. Παραδείγματος χάριν: sin(x) cos(x) tan(x) exp(x)

Υπο-προγράμματα στη Fortran

Σκοπός. Αλγεβρικοί και Λογικοί Υπολογισμοί στη PASCAL

Η ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ Εντολές Επανάληψης REPEAT UNTIL, FOR, WHILE

Σύντομες εισαγωγικές σημειώσεις για την. Matlab

Στόχοι και αντικείμενο ενότητας. Εκφράσεις. Η έννοια του τελεστή. #2.. Εισαγωγή στη C (Μέρος Δεύτερο) Η έννοια του Τελεστή

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

Εισαγωγή στη Matlab Βασικές Συναρτήσεις

Η γλώσσα προγραμματισμού Strange

ΕΙ ΑΓΩΓΉ ΣΗΝ FORTRAN

ΜΑΗΣ ΕΞΕΤΑΣΤΙΚΟ ΔΟΚΙΜΙΟ

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τι χρειάζεται η εντολή DO ; ΕΠΑΝΑΛΗΨΕΙΣ ΕΝΤΟΛΗ DO. Όταν απαιτείται να εκτελεστεί πολλές φορές το ίδιο τμήμα ενός προγράμματος.

Στη C++ υπάρχουν τρεις τύποι βρόχων: (a) while, (b) do while, και (c) for. Ακολουθεί η σύνταξη για κάθε μια:

Εισαγωγή στην PHP. ΕΣΔ 232 Διαχείριση Δεδομένων στη Κοινωνία της Πληροφορίας. Περιεχόμενα. Περιεχόμενα

Χρησιμοποιείται για να αποφασίσει το πρόγραμμα αν θα κάνει κάτι σε ένα σημείο της εκτέλεσής του, εξετάζοντας αν ισχύει ή όχι μια συνθήκη.

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τι χρειάζεται η εντολή IF ΕΝΤΟΛΗ IF. Παράδειγμα #1. Παράδειγμα #1

Επαναληπτικές Διαδικασίες

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Δομή Επανάληψης. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

Εισαγωγή στην C. Μορφή Προγράµµατος σε γλώσσα C

Θέματα Προγραμματισμού Η/Υ

Γ7.1 Επανάληψη ύλης Β Λυκείου. Γ Λυκείου Κατεύθυνσης

Ενότητα 1 Διάλεξη 3. Προγραμματισμός με Εφαρμογές στην Επιστήμη του Μηχανικού. Σιέττος Κωνσταντίνος

Δομή Επανάληψης. Κεφάλαιο 7 Mike Trimos

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL) (PASCAL ) Εντολές Ελέγχου & Επανάληψης

Σχολικό Βιβλίο - Κεφάλαιο 7 ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ PASCAL ΠΑΡΟΥΣΙΑΣΗ 13

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

Εισαγωγή στη Fortran. Μάθημα 1 ο. Ελευθερία Λιούκα

Προγραμματισμός PASCAL

Εργαστήρια Αριθμητικής Ανάλυσης Ι. 1 ο Εργαστήριο. Εισαγωγή στο Matlab

ΜΑΘΗΜΑ / ΤΑΞΗ : ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ / Γ ΕΠΑΛ ΣΕΙΡΑ: ΗΜΕΡΟΜΗΝΙΑ: 27/01/2013

Να γράψετε τα αποτελέσματα αυτού του αλγόριθμου για Χ=13, Χ=9 και Χ=22. Και στις 3 περιπτώσεις το αποτέλεσμα του αλγορίθμου είναι 1


Διάλεξη 5η: Εντολές Επανάληψης

ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ PASCAL

Εισαγωγή στο Περιβάλλον Επιστημονικού Προγραμματισμού MATLAB-Simulink. Δημήτριος Τζεράνης Λεωνίδας Αλεξόπουλος

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2006

Τμήμα Φυσικής Πανεπιστημίου Κύπρου Εαρινό Εξάμηνο 2015/2016. ΦΥΣ145 Υπολογιστικές Μέθοδοι στην Φυσική

Εισαγωγή στον Προγραμματισμό

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΔΟΜΗΜΕΝΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γ ΕΠΑΛ

ΠΛΗΡΟΦΟΡΙΚΗ Ι (MATLAB) Ενότητα 2

Μέρος 2 Κατασκευή Συντακτικού Αναλυτή

Γνωρίστε το Excel 2007

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2007

Συναρτήσεις στη Visual Basic 6.0

Κεφάλαιο 4ο: Εντολές επιλογής

Εργαστήριο Μαθηματικής Ανάλυσης Ι. Εισαγωγή στη Matlab Βασικές Συναρτήσεις-Γραφικές παραστάσεις. Πανεπιστήμιο Θεσσαλίας. Σχολή Θετικών Επιστημών

Είδη εντολών. Απλές εντολές. Εντολές ελέγχου. Εκτελούν κάποια ενέργεια. Ορίζουν τον τρόπο με τον οποίο εκτελούνται άλλες εντολές

Εισαγωγή στη γλώσσα προγραμματισμού Fortran 95

ΕΡΓΑΣΤΗΡΙΟ 4: Μεταβλητές, Δομές Ελέγχου και Επανάληψης

Ει αγωγή η Fortran.

ΕΠΛ031 - Εισαγωγή στον Προγραμματισμό

Εξοικείωση με το πρόγραμμα DEV C++ Επικοινωνία Χρήστη - Υπολογιστή

for for for for( . */

Εισαγωγή στη γλώσσα προγραμματισμού Fortran 95

Εισαγωγή στη γλώσσα προγραμματισμού C++

Ομάδα Γ. Ο υπολογιστής ως επιστημονικό εργαλείο

Δομημένος Προγραμματισμός. Τμήμα Επιχειρηματικού Σχεδιασμού και Πληροφοριακών Συστημάτων

Εισαγωγή στη γλώσσα προγραμματισμού Fortran 95

ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ ΤΡΙΤΗ 11 ΙΟΥΝΙΟΥ 2019 ΕΞΕΤΑΖΟΜΕΝΟ ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ & ΥΠΟΛΟΓΙΣΤΙΚΗ ΦΥΣΙΚΗ

ΦΥΣ 145 Υπολογιστικές Μέθοδοι στη Φυσική. Πρόοδος 26 Μαρτίου 2007 Ομάδα 1 η

Αποτελέσματα προόδου

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τι είναι μια υπορουτίνα; με υπορουτίνα ΥΠΟΡΟΥΤΙΝΕΣ. Παράδειγμα #1: η πράξη SQ. Ποια η διαφορά συναρτήσεων και υπορουτίνων;

ΕΙΣΑΓΩΓΗ ΣΤΟ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Τμήμα Μηχανολόγων Μηχανικών Πανεπιστήμιο Θεσσαλίας ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Δομή Επιλογής. Ιωάννης Λυχναρόπουλος Μαθηματικός, MSc, PhD

ΣΤΗΛΗ Β ΑΠΟΤΕΛΕΣΜΑ 1. float(10) α pow(2,3) β abs(-10) γ int(5.6) δ. 10 ε. 5.6 Μονάδες 8 ΣΤΗΛΗ Α ΣΥΝΑΡΤΗΣΗ

Αναφορά (1/2) Μπορούμε να ορίσουμε μια άλλη, ισοδύναμη αλλά ίσως πιο σύντομη, ονομασία για ποσότητα (μεταβλητή, σταθερή, συνάρτηση, κλπ.

Βασικές έννοιες προγραμματισμού

Transcript:

ΣΗΜΕIΩΣΕΙΣ ΕΙΣΑΓΩΓΗ ΣΤΗΝ FORTRAN 77 Ν. ΣΤΕΡΓΙΟΥΛΑΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ Α.Π.Θ. Μάρτιος 2012

ΕΓΚΑΤΑΣΤΑΣΗ Εγκαθιστούμε τον μεταγλωττιστή από το αρχείο http://www.lepsch.com/downloads/force209g77setup.exe Δημιουργούμε ένα φάκελο π.χ. c:\fortran\projects στον οποίο θα αποθηκεύουμε τα προγράμματα. Τα ονόματα των προγραμμάτων καθώς και των φακέλων στα οποία βρίσκονται αυτά καλό είναι να μη ξεπερνούν τους 8 χαρακτήρες και να μη περιέχουν άλλους χαρακτήρες εκτός από γράμματα και αριθμούς (ώστε να υπάρχει συμβατότητα με το DOS). Στο Options-> Environment Options -> Run -> Run with επιλέγουμε Console. ΔΗΜΙΟΥΡΓΙΑ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ Δημιουργούμε ένα νέο πρόγραμμα μέσω της εντολής File -> New (ή ανοίγουμε ένα υπάρχον μέσω της File -> Open. Τα προγράμματα πρέπει να έχουν extension.f. Κάθε γραμμή εντολών πρέπει να αρχίζει από την 8 η στήλη και μετά (στην αρχή κάθε γραμμής με το Tab μας πάει στην 9 η ). Κάθε γραμμή μπορεί να έχει μέχρι 6+66=72 χαρακτήρες. Μπορούμε να συνεχίσουμε μια εντολή στην επόμενη γραμμή, βάζοντας το σύμβολο «.» στην 6 η στήλη. Μπορούμε να εισάγουμε σχόλια, βάζοντας έναv αστερίσκο «*» στην πρώτη στήλη. ΜΕΤΑΓΛΩΤΤΙΣΗ ΚΑΙ ΕΚΤΕΛΕΣΗ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ Αφού γράψουμε το πρόγραμμα, κάνουμε τη μεταγλώττιση με Ctrl-F9 και στη συνέχεια μπορούμε να το τρέξουμε με Shift-F9. Το πρόγραμμα τρέχει σε ένα νέο παράθυρο (console).

ΠΑΡΑΔΕΙΓΜΑ ΠΡΟΓΡΑΜΜΑΤΟΣ ΣΤΗ FORTRAN 77 Το ακόλουθο πρόγραμμα (tut1.f) υπολογίζει τον μέσο όρο δύο αριθμών και εκτυπώνει το αποτέλεσμα: x = 4.7 y = 4.9 avg = (x+y)/2.0 print *, x, y, avg Οι x, y και avg είναι μεταβλητές, στις οποίες δίνουμε τιμές με χρήση του =. Η εντολή print *, χρησιμοποιείται για να εκτυπώσουμε την τιμή των μεταβλητών στην οθόνη. Η εντολή κρατά το παράθυρο εκτέλεσης ανοικτό. Η εντολή δηλώνει το τέλος του προγράμματος. ΜΕΤΑΓΛΩΤTΙΣΗ ΚΑΙ ΕΚΤΕΛΕΣΗ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ Σώζουμε το πρόγραμμα που δημιουργήσαμε και προχωράμε στη μεταγλώττιση με Ctrl-F9. Εάν εμφανισθούν λάθη, τα διορθώνουμε, έως ότου η μεταγλώττιση αναφέρει: Done. Compiled. Errors: 0. Εκτελούμε το πρόγραμμα με Shift-F9. Στην οθόνη βλέπουμε την εκτύπωση: 4.69999981 4.9000001 4.80000019 Παρατηρούμε ότι η ακρίβεια με την οποία αποθηκεύονται οι τιμές των μεταβλητών και με την οποία γίνονται όλες οι πράξεις είναι 6 δεκαδικά ψηφία (απλή ακρίβεια). Όταν γίνονται πολλές πράξεις, το σφάλμα στο 7 ο ψηφίο συσσωρεύεται με αποτέλεσμα η ακρίβεια να περιορίζεται σε λιγότερα ψηφία, όσο αυξάνει ο αριθμός των πράξεων. ΠΡΟΓΡΑΜΜΑ ΔΙΠΛΗΣ ΑΚΡΙΒΕΙΑΣ Για να αυξήσουμε την ακρίβεια των αποτελεσμάτων, χρησιμοποιούμε μεταβλητές διπλής ακρίβειας (double precision), όπως στο πρόγραμμα tut2.for: real*8 x, y, avg x = 4.12345678901234567890d0 y = 4.9d0 avg = (x+y)/2.0d0 write(*, (3F20.17) ) x, y, avg

Δηλώνουμε τις μεταβλητές στην αρχή του προγράμματος ως real*8. Επιπλέον, κάθε πραγματικός αριθμός πρέπει να δηλώνεται π.χ. ως 2.0d0 (και όχι απλά ως 2.0). Τα ονόματα των μεταβλητών μπορεί να έχουν μέχρι και 8 χαρακτήρες. Εδώ, αντί της απλής εντολής print, χρησιμοποιήσαμε την εντολή write, με την οποία μπορούμε να επιλέξουμε πόσες μεταβλητές θα εκτυπωθούν (3), πόσα συνολικά ψηφία (μαζί με τα κενά) (20) και πόσα ψηφία μετά την υποδιαστολή (17). Επιπλέον δυνατότητες διαμόρφωσης της εκτύπωσης μεταβλητών θα βρείτε εδώ: http://www.cs.mtu.edu/~shene/courses/cs201/notes/chap05/format.html Σημειώστε ότι, στο παραπάνω παράδειγμα ζητήσαμε να εκτυπωθούν 17 ψηφία μετά την υποδιαστολή. Όταν όμως τρέξουμε το πρόγραμμα, παρατηρούμε ότι στην εκτύπωση μόνο τα 15 ψηφία είναι σωστά, ενώ τα δύο τελευταία είναι τυχαία. Αυτό συμβαίνει διότι η «διπλή ακρίβεια» περιορίζεται στα 15 ψηφία μόνο. ΕΙΣΑΓΩΓΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗΝ ΟΘΟΝΗ Οι τιμές των μεταβλητών μπορούν να εισαχθούν κατά την εκτέλεση όπως στο παρακάτω παράδειγμα (tut3.f) : real*8 x, y, avg read*, x, y avg = (x+y)/2.0d0 print *, x, y, avg Μόλις εκτελέσουμε το πρόγραμμα, εισάγουμε την τιμή του x και πατάμε Enter κ.ο.κ. ΕΠΑΝΑΛΗΠΤΙΚΗ ΔΙΑΔΙΚΑΣΙΑ (LOOP) Εάν θέλουμε να επαναλάβουμε μια διαδικασία πολλές φορές, τότε χρησιμοποιούμε την εντολή do, όπως στο εξής παράδειγμα (tut4.f) : real*8 x, y, avg integer i do i=1,3 read*, x, y avg=(x+y)/2.0d0 print *, x, y, avg do

Η μεταβλητή i δηλώθηκε ως ακέραια μεταβλητή (integer) και χρησιμοποιείται για τη μέτρηση του αριθμού των επαναλήψεων. Η εντολή do πρέπει να τερματίζεται με την εντολή do. ΑΡΙΘΜΗΤΙΚΕΣ ΠΡΑΞΕΙΣ Οι πράξεις μεταξύ αριθμών ή μεταβλητών γίνονται με τα συνήθη σύμβολα +, -, *, /. Ένας αριθμός υψώνεται σε κάποια δύναμη με τη χρήση του **, π.χ. το 4 2 γράφεται ως 4**2 και το 4-2 γράφεται ως 4**(-2). Ισχύουν οι συνήθεις προτεραιότητες στην εκτέλεση των διάφορων πράξεων και πρέπει να χρησιμοποιούνται παρενθέσεις όπου χρειάζεται. ΓΝΩΣΤΕΣ ΣΥΝΑΡΤΗΣΕΙΣ Μερικές χρήσιμες συναρτήσεις, που είναι γνωστές στη Fortran είναι οι εξής: απλή ακρ. διπλή ακρ. περιγραφή sin(x) dsin(x) ημίτονο γωνίας x (σε rad) cos(x) dcos(x) συνημίτονο tan(x) dtan(x) εφαπτομένη asin(x) dasin(x) τόξο ημιτόνου. Αποτέλεσμα μεταξύ π/2 και +π/2. acos(x) dacos(x) τόξο συνημιτόνου. Αποτέλεσμα μεταξύ 0 και + π. atan(x) datan(x) τόξο εφαπτομένη. Αποτέλεσμα μεταξύ π/2 και +π/2. sinh(x) dsinh(x) υπερβολικό ημίτονο cosh(x) dcosh(x) υπερβολικό συνημίτονο tanh(x) dtanh(x) υπερβολική εφαπτομένη sqrt(x) dsqrt(x) τετραγωνική ρίζα log(x) dlog(x) Νεπέριος λογάριθμος (με βάση το e = 2.718281828...) exp(x) dexp(x) e x log10(x) dlog10(x) λογάριθμος με βάση το 10 abs(x) dabs(x) απόλυτη τιμή του x sign(1.0,x) dsign(1.0,x) πρόσημο πραγματικού αριθμού sign(1,x) dsign(1,x) πρόσημο ακέραιου αριθμού Σημειώστε στην πρώτη στήλη δίνονται οι ορισμοί απλής ακρίβειας, ενώ στην δεύτερη στήλη οι ορισμοί διπλής ακρίβειας.

Το παρακάτω πρόγραμμα (tut5.f) διαβάζει έναν αριθμό και εκτυπώνει το λογάριθμό του: real*8 x, res read*, x res = log10(x) print *, x, res ΔΙΑΔΙΚΑΣΙΑ ΕΠΙΛΟΓΗΣ IF-THEN-ELSE Σε κάποιο σημείο του προγράμματος, ίσως να θέλουμε να επιλέξουμε ποια εντολή θα εκτελέσουμε, ανάλογα με την τιμή μιας μεταβλητής. Δύο μεταβλητές (ή μία μεταβλητή και κάποιος αριθμός) μπορεί να συγκριθούν με τις εξής σχέσεις:.eq. ίση equal.ge. μεγαλύτερη ή ίση greater or equal.gt. μεγαλύτερη Greater than.le. μικρότερη ή ίση less or equal.lt. μικρότερη less than.ne. διάφορη not equal Στο παρακάτω παράδειγμα (tut6.f) υπολογίζουμε την τετραγωνική ρίζα ενός αριθμού μόνο αφού πρώτα ελέγξουμε ότι είναι θετικός αριθμός. real*8 x, sr read*, x if (x.ge. 0.0) then sr = sqrt(x) print *, x, sr else print *, 'No real root exists for this number.' stop if

Η εντολή if (x. ge. 0.0) ελέγχει εάν η πραγματική μεταβλητή x έχει θετική ή μηδενική τιμή. Εάν αυτό αληθεύει, τότε (then) υπολογίζει και εκτυπώνει την τετραγωνική ρίζα. Αλλιώς, (else) εκτυπώνει μία φράση, η οποία πρέπει να περικλείεται ανάμεσα σε. H εντολή stop χρησιμεύει για να τερματίσει το πρόγραμμα, μετά από τον έλεγχο κάποιας συνθήκης. Η εντολή if πρέπει να τελειώνει με την εντολή if. Eάν δεν έχουμε εναλλακτική εντολή, το else μπορεί να παραληφθεί, π.χ. if (x.ge. 0.0) then sr = sqrt(x) print *, x, sr if Επίσης, εάν παραλείψουμε το else και θέλουμε να εκτελέσουμε μόνο μια εντολή μετά το if, τότε μπορούμε να παραλείψουμε και το then, π.χ. if (x.ge. 0.0) print *, sqrt(x) Μπορούμε να έχουμε συνεχόμενες διαδικασίες επιλογής, π.χ. if then else if then else if then else if οι οποίες τερματίζονται από ένα μόνο if στο τέλος. Η σύγκριση δύο μεταβλητών, π.χ. (x. gt. y) μπορεί να είναι αληθής (true) ή ψευδής (false). Xρησιμοποιώντας τους λογικούς τελεστές.or.,.and. και.not. μπορούμε να σχηματίσουμε πιο περίπλοκες συνθήκες, οι οποίες θέλουμε να ικανοποιούνται πριν εκτελέσουμε μια εντολή, π.χ. if ( ((x.gt. y).and. (y.lt. z)).or. (.not. (z.ge. m))) then

ΕΞΟΔΟΣ ΑΠΟ IF-THEN-ELSE Εάν μετά τον έλεγχο κάποιας συνθήκης πρέπει να συνεχίσει το πρόγραμμα, μπορούμε να βγούμε από ένα βρόχο if-then-else, με την εντολή go to, όπως στο εξής παράδειγμα: if then else if then go to 10 else if then else if 10 continue Στο παραπάνω παράδειγμα, το «10» είναι απλά μια ετικέτα (label) η οποία δείχνει σε ποιο σημείο συνεχίζει (continue) το πρόγραμμα. Οι ετικέτες είναι απαραίτητες, διότι σ ένα πρόγραμμα μπορεί να υπάρχουν πολλά go to continue. Η ετικέτα μπροστά από την εντολή continue πρέπει να αρχίζει από τη 2 η στήλη! ΧΡΗΣΗ ΔΙΑΝΥΣΜΑΤΩΝ ΚΑΙ ΠΙΝΑΚΩΝ Ένα διάνυσμα αποτελούμενο π.χ. από 10 στοιχεία ορίζεται όπως στο εξής παράδειγμα (tut7.f), στο οποίο δίνουμε τιμές σε δυο διανύσματα και υπολογίζουμε το άθροισμά τους. real*8 A(10), B(10), C(10) integer i do i=1,10 A(i) = 10.0d0*i B(i) = 20.0d0*i do do i=1,10 C(i) = A(i) + B(i) print *, A(i), B(i), C(i) do Ένας διδιάστατος πίνακας με 20 γραμμές και 30 στήλες ορίζεται π.χ. ως Μ(10,20). Στο παρακάτω παράδειγμα (tut8.f) ορίζουμε έναν πίνακα, δίνουμε τιμές στα στοιχεία του με βάση κάποια εξίσωση και τον εκτυπώνουμε στην οθόνη.

real*8 M(6,3) integer i, j do I = 1, 6 do j = 1, 3 M(i,j) = 2.0d0*i + 3.0d0*j do do do I = 1, 6 print *, M(i,1), M(i,2), M(i,3) do ΣΤΑΘΕΡΕΣ Κάποιοι αριθμοί που χρησιμοποιούνται συχνά, μπορεί να ορισθούν ως σταθερές, με την εντολή parameter, στην αρχή του προγράμματος. Π.χ. η αρχή του προγράμματος tut7.f μπορεί να γίνει parameter (n=10) real*8 A(n), B(n), C(n) ΣΥΝΑΡΤΗΣΕΙΣ Κάποιοι υπολογισμοί είναι χρήσιμο να γίνονται εκτός του κυρίως προγράμματος. Μπορούμε να ορίσουμε δικές μας συναρτήσεις, πρίν το κυρίως πρόγραμμα, με την εντολή function (η οποία τελειώνει με ). Η function παίρνει κάποια (μία ή περισσότερες) μεταβλητή, εκτελεί ορισμένες πράξεις και επιστρέφει το αποτέλεσμα. Το όνομα της function χρησιμοποιείται εσωτερικά ως μεταβλητή για να αποθηκευθεί το αποτέλεσμα. Στο παρακάτω παράδειγμα (tut9.f) ορίζουμε μια συνάρτηση, η οποία υπολογίζει το παραγοντικό ενός ακεραίου αριθμού. Στο κυρίως πρόγραμμα, το οποίο αρχίζει με την εντολή program (και κάποιο όνομα) για να ξεχωρίζει από τη συνάρτηση, διαβάζουμε από την οθόνη έναν ακέραιο αριθμό, υπογίζουμε το παραγοντικό του και το εκτυπώνουμε. function factor(n) integer n, i factor = 1 do I = 2, n factor = factor*i do return

program factorial integer i, nf read *, i nf=factor(i) print *, nf ΥΠΟΡΟΥΤΙΝΕΣ Όταν κάποιο τμήμα ενός προγράμματος επαναλαμβάνεται συχνά, μπορούμε να το ορίσουμε ως ξεχωριστή υπορουτίνα (subroutine) την οποία καλούμε όποτε χρειάζεται. Η υπορουτίνα μπορεί να δέχεται κάποιες μεταβλητές, τις οποίες μπορεί να αλλάξει. Στο παρακάτω πρόγραμμα (tut10.f), ορίζουμε μια υπορουτίνα, η οποία αλλάζει τις τιμές δύο μεταβλητών μεταξύ τους. Αυτή η υπορουτίνα χρησιμοποιείται στη συνέχεια στο κυρίως πρόγραμμα, το οποίο βρίσκει ποια είναι η αύξουσα σειρά τριών μεταβλητών. subroutine swap(x,y) real*8 x, y, temp temp = x x = y y = temp return program ascing real*8 a, b, c read *, a, b, c if(a.gt. b) call swap(a,b) if(b.gt. c) then call swap(b,c) if(a.gt. b) call swap(a,b) if print *, a, b, c Η υπορουτίνα πρέπει να έχει (τουλάχιστον) ένα return και να τελειώνει με.

ΕΠΕΚΤΑΣΕΙΣ ΤΗΣ f77 Οι περισσότεροι μεταγλωττιστές (μεταξύ αυτών και ο g77 στον οποίο βασίζεται ο Force 2.09) ενσωματώνουν και μια σειρά επεκτάσεων, που δεν υπήρχαν στο αρχικό πρότυπο ANSI f77. Αυτές οι επεκτάσεις συνήθως προέρχονται από άλλες γλώσσες (C, pascal, C++ κλπ.) ή από νεότερες εκδόσεις της Fortran (90, 95, 2008 κλπ.). DO WHILE Μια πολύ χρήσιμη επέκταση είναι η do while, η οποία επιτρέπη την εκτέλεση ενός μέρους του προγράμματος μόνο εφόσον ικανοποιείται κάποια συνθήκη. Όταν πάψει να ικανοποιείται η συνθήκη που επιλέξαμε, τότε το συγκεκρικένο μέρος του προγράμματος παύει να εκτελείται και το πρόγραμμα προχωρά στις επόμενες εντολές. Για παράδειγμα, ο εξής βρόχος do while ( x.lt. 100 ) x = x+1 y = x print*, x, y do θα εκτελείται μόνο για όσο η τιμή του x παραμένει μικρότερη ή ίση του 100. Όταν ξεπεράσει αυτή την τιμή, ο συγκεκριμένος βρόχος παύει να εκτελείται και το πρόγραμμα προχωρά παρακάτω.