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

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

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

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

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

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

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

ΕΙ ΑΓΩΓΉ ΣΗΝ FORTRAN

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

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

8 FORTRAN 77/90/95/2003

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ει αγωγή η Fortran.

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

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

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

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

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

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

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

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

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

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

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τι είναι μια συνάρτηση; ΣΥΝΑΡΤΗΣΕΙΣ. Δήλωση συνάρτησης sq. Παράδειγμα συνάρτησης: υπολογισμός τετραγώνου

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

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

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

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

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

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

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

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

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

Δεδομένα, τελεστές, είσοδος/έξοδος

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

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

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

Υπολογισμός - Εντολές Ελέγχου

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

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

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

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

Πίνακες. FORTRAN και Αντικειμενοστραφής Προγραμματισμός

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

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

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

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

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

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

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

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

Δομή προγράμματος στη Fortran

TO ΥΠΟΠΡΟΓΡΑΜΜΑ ΣΥΝΑΡΤΗΣΗ

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

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

Δομή προγράμματος στη Fortran

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

Τυπικές χρήσεις της Matlab

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

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

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

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

Λογικές εκφράσεις και μεταβλητές

Εναλλακτικές εντολές για ανάγνωση/εγγραφή

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

Αριθμητικές Μέθοδοι σε Προγραμματιστικό Περιβάλλον (Εργαστήριο 2)

ΦΥΣ 145 Μαθηματικές Μέθοδοι στη Φυσική. Γράψτε το ονοματεπώνυμο και αριθμό ταυτότητάς σας στο πάνω μέρος της αυτής της σελίδας.

Υπολογισμός - Εντολές Επανάληψης

for for for for( . */

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος

Αιγόξηζκνη Γνκή επηινγήο. Πνιιαπιή Δπηινγή Δκθωιεπκέλεο Δπηινγέο. Δηζαγωγή ζηηο Αξρέο ηεο Δπηζηήκεο ηωλ Η/Υ. introcsprinciples.wordpress.

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

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

ΦΥΣ 145 Μαθηµατικές Μέθοδοι στη Φυσική. Πρόοδος 20 Μαρτίου 2011 Οµάδα

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

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

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

ΑΣΚΗΣΗ 2: ΔΟΜΗ ΠΡΟΓΡΑΜΜΑΤΟΣ C, ΧΕΙΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΩΝ ΚΑΙ ΣΥΝΑΡΤΗΣΕΙΣ ΕΙΣΟΔΟΥ ΚΑΙ ΕΞΟΔΟΥ

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

Master Mind εφαρμογή στη γλώσσα προγραμματισμού C

Ενότητα 1: «Εισαγωγή στην Αλγοριθμική και τον Προγραμματισμό. Απλές ασκήσεις με γλώσσα Pascal»

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

Ασκήσεις σε Επαναληπτικούς Βρόχους και Συναρτήσεις. Επανάληψη για την ενδιάμεση εξέταση. (Διάλεξη 13)

Transcript:

ΗΜΕIΩΕΙ ΕΙΑΓΩΓΗ ΣΗΝ FORTRAN 77 Ν. ΣΕΡΓΙΟΤΛΑ ΤΜΗΜΑ ΦΥΣΙΚΗΣ Α.Π.Θ. ΦΔΒΡΟΥΑΡΙΟΣ 2009

2 ΕΓΚΑΣΑΣΑΗ Εγκαθιστούμε τον μεταγλωττιστή από το αρχείο http://www.astro.auth.gr/~simos/na/force208.zip Δημιουργούμε ένα φάκελο π.χ. 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 η στήλη. Μπορούμε να εισάγουμε σχόλια, βάζοντας έναn αστερίσκο «*» στην πρώτη στήλη. ΜΕΣΑΓΛΩΣΣΙΗ ΚΑΙ ΕΚΣΕΛΕΗ ΕΝΟ ΠΡΟΓΡΑΜΜΑΣΟ Αφού γράψουμε το πρόγραμμα, κάνουμε τη μεταγλώττιση με Ctrl-F9 και στη συνέχεια μπορούμε να το τρέξουμε με Shift-F9. Το πρόγραμμα τρέχει σε ένα νέο παράθυρο (console).

ΠΑΡΑΔΕΙΓΜΑ ΠΡΟΓΡΑΜΜΑΣΟ ΣΗ FORTRAN 77 3 Τν αθόινπζν πξόγξακκα (tut1.f) ππνινγίδεη ηνλ κέζν όξν δύν αξηζκώλ θαη εθηππώλεη ην απνηέιεζκα: x=4.7 y=4.9 avg=(x+y)/2.0 print *, x, y, avg Οι x, y και avg είναι μεταβλητές, στις οποίες δίνουμε τιμές με χρήση του =. Η εντολή print *, χρησιμοποιείται για να εκτυπώσουμε την τιμή των μεταβλητών στην οθόνη. Η εντολή κρατά το παράθυρο εκτέλεσης ανοικτό. Η εντολή δηλώνει το τέλος του προγράμματος. ΜΕΣΑΓΛΩΣΙΗ ΚΑΙ ΕΚΣΕΛΕΗ ΣΟΤ ΠΡΟΓΡΑΜΜΑΣΟ Σώζουμε το πρόγραμμα που δημιουργήσαμε και προχωράμε στη μεταγλώτιση με 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 Μόλις εκτελέσουμε το πρόγραμμα, εισάγουμε την τιμή του χ και πατάμε Enter κ.ο.κ. ΕΠΑΝΑΛΗΠΣΙΚΗ ΔΙΑΔΙΚΑΙΑ (LOOP) Εάν θέλουμε να επαναλάβουμε μια διαδικασία πολλές φορές, τότε χρησιμοποιούμε την εντολή do, όπως στο εξής παράδειγμα (tut4.f) : 4 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. 5 ΑΡΙΘΜΗΣΙΚΕ ΠΡΑΞΕΙ Οι πράξεις μεταξύ αριθμών ή μεταβλητών γίνονται με τα συνήθη σύμβολα +, -, *, /. Ένας αριθμός υψώνεται σε κάποια δύναμη με τη χρήση του **, π.χ. ην 4 2 γξάθεηαη ωο 4**2 θαη ην 4-2 γξάθεηαη ωο 4**(-2). Ιζρύνπλ νη ζπλήζεηο πξνηεξαηόηεηεο ζηελ εθηέιεζε ηωλ δηάθνξωλ πξάμεωλ θαη πξέπεη λα ρξεζηκνπνηνύληαη παρενθέσεις όπνπ ρξεηάδεηαη. ΓΝΩΣΕ ΤΝΑΡΣΗΕΙ Μερικές χρήσιμες συναρτήσεις, που είναι γνωστές στη Fortran είναι οι εξής: sin(x) cos(x) tan(x) asin(x) εκίηνλν γωλίαο x (ζε rad) ζπλεκίηνλν εθαπηνκέλε ηόμν εκηηόλνπ. Τν απνηέιεζκα είλαη κεηαμύ /2 θαη + /2. acos(x) ηόμν ζπλεκηηόλνπ. Τν απνηέιεζκα είλαη κεηαμύ 0 θαη +. atan(x) sinh(x) cosh(x) tanh(x) ηόμν εθαπηνκέλε. Τν απνηέιεζκα είλαη κεηαμύ /2 θαη + /2. ππεξβνιηθό εκίηνλν ππεξβνιηθό ζπλεκίηνλν ππεξβνιηθή εθαπηνκέλε sqrt(x) ηεηξαγωληθή ξίδα log(x) Νεπέξηνο ινγάξηζκνο (κε βάζε ην e = 2.718281828...) exp(x) e x log10(x) ινγάξηζκνο κε βάζε ην 10 abs(x) απόιπηε ηηκή ηνπ x sign(1.0,x) πξόζεκν πξαγκαηηθνύ αξηζκνύ sign(1,x) πξόζεκν αθέξαηνπ αξηζκνύ Το παρακάτω πρόγραμμα (tut5.f) διαβάζει έναν αριθμό και εκτυπώνει το λογάριθμό του: real*8 x, res read*, x res=log10(x) print *, x, res

6 ΔΙΑΔΙΚΑΙΑ ΕΠΙΛΟΓΗ 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) 7 Μπορούμε να έχουμε συνεχόμενες διαδικασίες επιλογής, π.χ. 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 η στήλη! 8 ΧΡΗΗ ΔΙΑΝΤΜΑΣΩΝ ΚΑΙ ΠΙΝΑΚΩΝ Ένα διάνυσμα αποτελούμενο π.χ. από 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 9

10 ΤΠΟΡΟΤΣΙΝΕ Όταν κάποιο τμήμα ενός προγράμματος επαναλαμβάνεται συχνά, μπορούμε να το ορίσουμε ως ξεχωριστή υπορουτίνα (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 και να τελειώνει με. 11