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

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

Ενότητα 1 Διάλεξη 2β

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

Ενότητα 3 (μέρος 1 ο )

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

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

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

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

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

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

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

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα 3: Συναρτήσεις

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

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

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

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

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Πίνακες. (i) FORTRAN και Αντικειµενοστραφής Προγραµµατισµός

Εισαγωγή στον Προγραμματισμό Η/Υ (Fortran 90/95/2003)

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

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

Είσοδος -Έξοδος. Άνοιγµα αρχείου:

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

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

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

3 η ΕΝΟΤΗΤΑ ΜΗ ΓΡΑΜΜΙΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΒΕΛΤΙΣΤΟΠΟΙΗΣΗ ΕΝΟΣ ΚΡΙΤΗΡΙΟΥ

Διαδικαστικός Προγραμματισμός

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

Εισαγωγή στον Προγραμματισμό Η/Υ (Fortran 90/95/2003)

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

8 FORTRAN 77/90/95/2003

Ο τελεστής ανάθεσης και οι εντολές εισόδουεξόδου

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

Δομημένος Προγραμματισμός

Εισαγωγή στον Προγραμματισμό Η/Υ για Χημικούς Μηχανικούς

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

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

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

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

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

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύ

Κεφάλαιο 7ο: Συναρτήσεις και Υπορουτίνες

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

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

Εισαγωγή στην πληροφορική

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

Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

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

Εισαγωγή στην πληροφορική

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Προγραμματισμός και Εφαρμογές Υπολογιστών

Προγραµµατιστικές Τεχνικές

Προγραμματισμός και Εφαρμογές Υπολογιστών

Κεφάλαιο 10 ο Υποπρογράµµατα

Ασκήσεις Γενικά Μαθηµατικά Ι Οµάδα 5 (λύσεις)

Εισαγωγή στη χρήση Η/Υ. Αναγνωστοπούλου Χριστίνα Λέκτορας

Προγραμματισμός Η/Υ 1 (Εργαστήριο)

3 η ΕΝΟΤΗΤΑ Συναρτήσεις στο MATLAB

Υπολογιστικά & Διακριτά Μαθηματικά

ΜΑΘΗΜΑΤΙΚΑ ΓΙΑ ΟΙΚΟΝΟΜΟΛΟΓΟΥΣ

Προγραμματισμός Η/Υ. Χειρισμός Αρχείων. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Oι εντολές COMMON και PARAMETER

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

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 2 - Εργαστήριο

Θεωρία Πιθανοτήτων & Στατιστική

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

Δομημένος Προγραμματισμός

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ - ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ, 3 Ο ΕΞΑΜΗΝΟ, ΔΙΔΑΣΚΩΝ: Δρ Ιωάννης Αθ.

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Ηλεκτρονικοί Υπολογιστές

Μαθηματικά. Ενότητα 7: Μη Πεπερασμένα Όρια. Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Θεωρία Πιθανοτήτων & Στατιστική

ΤΕΧΝΟΛΟΓΙΑ ΛΟΓΙΣΜΙΚΟΥ Ι

Ηλεκτρονικοί Υπολογιστές

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

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

Κεφάλαιο Πέµπτο: Η Εξάσκηση

Προγραμματισμός Η/Υ. Συναρτήσεις & Υποπρογράμματα. ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Τεχνολογιών Φυσικού Περιβάλλοντος

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 2 - Εργαστήριο

Εργαστήριο 9 Συναρτήσεις στη PASCAL. Η έννοια του κατακερματισμού. Συναρτήσεις. Σκοπός

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

4 η ΕΝΟΤΗΤΑ Μητρώα και συνθήκες στο MATLAB

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ - ΠΟΛΥΤΕΧΝΙΚΗ ΣΧΟΛΗ ΤΜΗΜΑ ΜΗΧΑΝΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΑΡΙΘΜΗΤΙΚΗ ΑΝΑΛΥΣΗ, 3 Ο ΕΞΑΜΗΝΟ, ΔΙΔΑΣΚΩΝ: Δρ Ιωάννης Αθ.

Προγραμματισμός Η/Υ. 6 η ενότητα: Συναρτήσεις. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Υπολογιστικά & Διακριτά Μαθηματικά

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

Μαθηματικά Ενότητα 11: Θεώρημα Μέσης Τιμής Μονοτονία Συνάρτησης

ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ Εντολές επανάληψης Εντολές επανάληψης while for do-while ΥΠΟΛΟΓΙΣΤΕΣ ΙΙ Παράδειγμα #1 Εντολή while

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

Transcript:

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

Άδεια Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειτα σε άδειες χρήσης Crea%ve Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άδεια χρήσης άλλου τύπου, αυτή πρέπει να αναγράφεται ρητώς.

Εισαγωγή στη γλώσσα προγραµµατισµού Fortran 77 (µέρος ) Κωνσταντίνος Σιέττος

, j< Εντολές Εισόδου-Εξόδου/ Εξόδου/ Προσπέλαση αρχείων Γενικά τα αρχεία διακρίνονται σε δύο κατηγορίες: 1. Τα σειριακά αρχεία Η επεξεργασία των γραµµών των αρχείων γίνεται µε την σειρά (εγγραφή + ανάγνωση). Τα αρχεία άµεσης προσπέλασης Ορίζεται ο αριθµός των γραµµών (records) που θα διαβαστούν ή θα εγγραφούν Χρειάζεται η δήλωση του αρχείου ως άµεσης προσπέλασης (εντολή ACCESS)

, j< Εντολές Εισόδου-Εξόδου/ Εξόδου/ Προσπέλαση αρχείων Άνοιγµα αρχείων σειριακής προσπέλασης Προετοιµασία για άνοιγµα αρχείου για διάβασµα: open(unit = INTEGER, FILE = onomaarxeiou onomaarxeiou, status = 'OLD') Προετοιµασία για άνοιγµα αρχείου για γράψιµο: open(unit = INTEGER, FILE = onomaarxeiou, status = new') ή και για τα δύο open(unit = INTEGER, FILE = FILENAME, status = unknown )

, j< Εντολές Εισόδου-Εξόδου/ Εξόδου/ Προσπέλαση αρχείων Κλείσιµο αρχείων open(unit = INTEGER, FILE = FILENAME, status = unknown ) close (unit) Καλό είναι µετά την προσπέλαση του αρχείου να κλείνετε το αρχείο µε την εντολή close Rewind αρχείων: µεταφορά της ανάγνωσης στην «αρχή» του αρχείου. Rewind (unit)

, j< Οι εντολές read και write/ format READ(UNIT, f) metavlites WRITE(UNIT, f) metavlites f είναι ο ακέραιος αριθµός της εντολής FORMAT η οποία περιγράφει τις προδιαγραφές, δηλαδή πως έχει γραφεί (και συνεπώς πως θα πρέπει να διαβαστεί) το record (metavlites): FORMAT (προδιαγραφές)

, j< Οι εντολές read και write/ format Παράδειγµα: Να διαβαστούν τα στοιχεία από ένα αρχείο που έχει ανοιχθεί προηγουµένως ως unit=1 που περιέχει τα στοιχεία ενός πίνακα Α 5x5. open(unit = 1, file= pinakas, status = unknown ) do i=1,5 read(1,*) (A(i,j), j=1,5) 5 continue..

, j< Κωδικοί Προδιαγραφών για την εντολή Ο κωδικός προδιαγραφής Ιw FORMAT -Χρησιµοποιείται για την ανάγνωση και εγγραφή ακεραίων µε µήκος πεδίου w - Επιτρεπτές µορφές δεδοµένων εισόδου (sm sm), s είναι ενδεχόµενο πρόσηµο, m είναι ακολουθία ψηφίων -Κενά που βρίσκονται αριστερά του πρώτου ψηφίου διαβάζονται ως κενά ενώ όλα τα άλλα διαβάζονται ως µηδενικά Παράδειγµα Έστω η γραµµή δεδοµένων 13456-789 Read(1,1) K,L,M 1 Format(I,I4,I4) Οι µεταβλητές K,L,M παίρνουν τις τιµές Κ=1, L=3456, M=-789

, j< Κωδικοί Προδιαγραφών για την εντολή Ο κωδικός προδιαγραφής Fw.d FORMAT -Χρησιµοποιείται για την ανάγνωση και εγγραφή πραγµατικών αριθµών µε µήκος πεδίου w (w>=d+). To w συµπεριλαµβάνει και την υποδιαστολή -d είναι ένας ακέραιος που δηλώνει το µήκος πεδίου του δεκαδικού µέρους - Επιτρεπτές µορφές δεδοµένων εισόδου (sm, sm.n), S είναι ενδεχόµενο πρόσηµο, m,n είναι ακολουθία ψηφίων -Κενά που βρίσκονται αριστερά του πρώτου ψηφίου διαβάζονται ως κενά ενώ όλα τα άλλα διαβάζονται ως µηδενικά -Αν στον αριθµό που διαβάζεται δεν υπάρχει κλασµατικό σηµείο τότε χωρίζονται τόσα ψηφία όσα δηλώνονται µε το d -Αν το ακέραιο µέρος είναι µεγαλύτερο από w-d-1 τότε κατά την εγγραφή εµφανίζονται αστεράκια αντί του αριθµού Παράδειγµα Έστω η γραµµή δεδοµένων -345.5678975 Read(1,1) Α,Β 1 Format(F7.,F5.) Οι µεταβλητές A,B,C παίρνουν τις τιµές A=-345.56, B=789.75,

, j< Κωδικοί Προδιαγραφών για την εντολή Ο κωδικός προδιαγραφής Ew.d FORMAT -Χρησιµοποιείται για την ανάγνωση και εγγραφή πραγµατικών αριθµών γραµµένους µε εκθετικό τρόπο µε την µορφή S.mE+/ +/-xx µε µήκος πεδίου w. -Στην ανάγνωση ακολουθούνται οι κανόνες όπως µε το Fw.d -Στην εγγραφή Το S είναι το πρόσηµο του αριθµού m είναι ακολουθία ψηφίων το οποίο γίνεται ίσο µε d είτε µε στρογγύλεµα είτε µε προσθήκη µηδενικών xx είναι ακέραια σταθερά Παράδειγµα Έστω η γραµµή δεδοµένων 4567Ε Read(1,1) Α 1 Format(Ε6.3 Ε6.3) Η µεταβλητή A διαβάζεται A=456.7

, j< Κωδικοί Προδιαγραφών για την εντολή Ο κωδικός προδιαγραφής nx FORMAT -Χρησιµοποιείται για την παράλειψη n χαρακτήρων κατά την ανάγνωση ή την εγγραφή n κενών κατά την εγγραφή -Στην εγγραφή Παράδειγµα Έστω η γραµµή δεδοµένων Bac134567891.56 read(1,1) K,L,A write(*,1) K,L,A 1 Format(3x,I4,I3,f7.) Η µεταβλητή K διαβάζεται K=134 Η µεταβλητή L διαβάζεται L=567 Η µεταβλητή A διαβάζεται L=891.56 Αν όµως τα k,l ήταν Real µεταβλητές τότε Η µεταβλητή K θα διαβαζόταν K= Η µεταβλητή Lως L= και η µεταβλητή A διαβάζεται L=891.56

, j< To ξέρατε ότι.. Scientists from theswiss Federal Institute of Technology have taken a database listing 37 million companies and investors worldwide and analyzed The WHO OWNS WHAT Only 737 top holders accumulate 8% of the control

, j< Υποπρογράµµατα ή Επίλυση των επιµέρους προβληµάτων χωριστά Ένα τυπικό πρόγραµµα FORTRAN αποτελείται από το κύριο πρόγραµµα και από περισσότερα υποπρογράµµατα ύο κύριες κατηγορίες (α) Functions (b) subroutines

, j< Functions Το πιο απλό είδος υποπρογράµµατος Χρησιµοποιείται όταν χρειάζεται να εκτελεσθεί πολλές φορές κάποιο block εντολών µέσα στο κύριο πρόγραµµα ηλώνεται στην αρχή του προγράµµατος µετά τις δηλώσεις των µεταβλητών (Integer, Real, Double Precision κ.τ.λ.) Καλείται σε οποιοδήποτε σηµείο του κύριου προγράµµατος

, j< Functions Γενική µορφή δήλωσης µιας function όπου type function name(arguments) type: Integer, real, double precision, logical name: το όνοµα της συνάρτησης arguments: µεταβλητές εισόδου που χωρίζονται µε κόµµα. ηλώνονται µέσα στην function και θα πρέπει να είναι του ίδιου τύπου και διαστάσεων µε τις µεταβλητές που ορίζονται στο κύριο πρόγραµµα. Μπορεί να είναι και arrays, functions ή subroutines

, j< οµή Functions real function paradeigma(a,b,c) integer a,b,c real... Εντολές.. paradeigma = EXPRESSION. RETURN END Program main integer p,t,w real b double precision real paradeigma... Εντολές b= paradeigma(p,t,w).. END

, j< Κανόνες για την χρήση των Functions Ο τύπος και το πλήθος των µεταβλητών (arguments) που χρησιµοποιούνται στο κύριο πρόγραµµα και στην function θα πρέπει να είναι ο ίδιος. Τα ονόµατα των µεταβλητών δεν χρειάζεται να είναι τα ίδια. Ο τύπος της συνάρτησης θα πρέπει να είναι ο ίδιος τόσο στην δήλωση της στο κύριο πρόγραµµα όσο και στην περιγραφή της συνάρτησης. Το αποτέλεσµα της συνάρτησης θα πρέπει να ανατίθεται στο όνοµα της συνάρτησης. Κάθε συνάρτηση θα πρέπει να έχει τουλάχιστον ένα return. Η συνάρτηση (function) µπορεί να τοποθετηθεί είτε πριν είτε µετά από το κύριο πρόγραµµα. Μια συνάρτηση δεν μπορεί να καλέσει τον εαυτό της.

, j< Παράδειγµα για την χρήση των Functions Να γραφεί ένα πρόγραµµα µε την χρήση µιας function για τον υπολογισµό της σειράς για τους πρώτους Ν όρους: : 1- x^/! + x^4/ ^4/4! - real function cosfun(x,n) program main real x,term,, F real x,b integer N,i,k integer N integer fact real cosfun F=1. write(*,*) give x,n i= read(*,*) x,n k= integer function fact(m) b= cosfun(x,n) do while (i.lt.*n) integer m write(*,*) b term=*i/ fact(i) fact=1 end k=k+1 do 1 i=1,m F=F+(-1)**k*term fact=fact*i i=i+ 1 continue enddo return cosfun=f end end

, j< Subroutines-Υπορουτίνες Η υπορουτίνα είναι το πιο σύνηθες είδος υποπρογράµµατος και το πιο γενικό γιατί επιτρέπει τον υπολογισµό πολλών τιµών ταυτόχρονα (αριθµητικές, λογικές, χαρακτήρων) σε αντίθεση µε το υποπρόγραµµα-functi functiοn που δίνει στο κύριο πρόγραµµα µια µόνο µεταβλητή: αυτή του ονόµατος της. Έχει την ακόλουθη επικεφαλίδα : SUBROUTINE name (argmunets) όπου Name είναι το όνοµα της υπορουτίνας Τα ορίσµατα (arguments) είναι µεταβλητές εισόδου-εξόδουεξόδου

, j< Κάλεσµα υπορουτίνων και κανόνες Μια υπορουτίνα καλείται σε ένα σηµείο του κύριου προγράµµατος µε την εντολή CALL CALL name (arguments) Τα arguments θα πρέπει να είναι του ίδιου τύπου και διαστάσεων µε τις µεταβλητές που ορίζονται στο κύριο πρόγραµµα. Στο τέλος της υπορουτίνας θα πρέπει να έχει ένα return για να εξασφαλίζεται η µεταφορά του ελέγχου του προγράµµατος στο πρόγραµµα που την καλεί (κύριο πρόγραµµα ή άλλη υπορουτίνα) Στα ορίσµατα (arguments) πρέπει να εµπεριέχονται και οι µεταβλητές που θα µεταφερθούν στο πρόγραµµα που την καλεί. Αυτά µπορεί να είναι ίδια µε τα ορίσµατα εισόδου δηλαδή τις µεταβλητές που µεταβιβάζονται στην υπορουτίνα στην αρχή των υπολογισµών.

, j< Subroutines-Παράδειγµα Να γραφεί ένα κύριο πρόγραµµα που θα καλεί ένα υποπρόγραµµα το οποίο θα βρίσκει το αλγεβρικά µεγαλύτερο στοιχείο ενός µονοδιάστατου ανύσµατος µε πραγµατικά στοιχεία. program main parameter(n=1) real a(n) open(unit=1,file= vector.txt,status= unknown ) do 1 i=1,n read(1,*) a(i) 1 Continue amax=. call findmax(a,amax,n a,amax,n) write(*,*) amax end subroutine findmax(a,amax,n a,amax,n) real a(n) amax=a(1) do 1 i=1,n if(a(i).gt.amax) amax=a(i) 1 continue return end

, j< Subroutines-Παράδειγµα - Μέθοδος Newton-Raphson Να γραφεί ένα κύριο πρόγραµµα που θα καλεί ένα υποπρόγραµµα το οποίο θα βρίσκει τη λύση ενός συστήµατος µη-γραµµικών αλγεβρικών εξισώσεων µε τη µέθοδο Newton-Raphson Η αριθµητική µέθοδος Newton-Raphson Η µέθοδος Newton-Raphson είναι η πλέον διαδεδοµένη µέθοδος για την επίλυση συστηµάτων αλγεβρικών εξισώσεων της µορφής ( x) = F, F : n n R R

F n R : F = F x C ( x) F x ( ) Subroutines-Παράδειγµα- Μέθοδος Newton-Raphson ( ) F ( xc ) + F ( xc )( x xc Υποθέτοντας ότι η ) F είναι επαρκώς παραγωγίσιμη σε ένα διάστημα στο εμπεριέχει την λύση : F( ) = τότε η F( x) γύρω από ένα σημείο x C «κοντά» στο ως n R το οποίο μπορεί να αναπτυχθεί σε σειρά Taylor F ( x) F( x ) + F( x )( x x ) C c C Αν στην προηγούµενη σχέση αντικαταστήσουµε την ( ) = ( x ) F( x )[ F( x )] 1 C C c F τότε προκύπτει η σχέση

F n R : F = F x C ( x) F x ( ) Subroutines-Παράδειγµα - Μέθοδος Newton-Raphson ( ) F ( xc ) + F ( xc )( x xc Βάση της παραπάνω ) σχέσης η επαναληπτική διαδικασία Newton-Raphson δίνεται από την εξής αναδροµική σχέση x = x F ( n ) ( n ) ( x )[ F( x )] 1 ( n +1 ) ( n ) Βασική προϋπόθεση για την εφαρµογή της παραπάνω σχέσης είναι η συνθήκη ότι ο ( n ) Ιακωβιανός πίνακας δεν πρέπει να είναι ιδιάζων, δηλαδή det( F( x ). Η αναδροµική σχέση (1) επαναλαµβάνεται έως ότου x x ( n+ 1 ) ( n ) < tol. Αποδεικνύεται ότι αν η αρχική εκτίµηση ( ) x είναι επαρκώς κοντά στην λύση τότε η μέθοδος συγκλίνει τετραγωνικά στο.

F n R : F = F x C ( x) F x ( ) ( ) F ( xc ) + F ( xc )( x x k = C ) Subroutines-Παράδειγµα- Μέθοδος Newton-Raphson Set ( x k ) as initial guess Set tol as tolerance of convergence Do while error < tol ( k ) ( k ) ( k ) Solve the system F( x ) δ x = F( x ) Update the solution as x ( k+1 ) = x ( k ) +δ x ( k ) error = ( δ x k ) k=k+1 End do

F n R : F = F x C ( x) F x ( ) ( ) F ( x ) + F ( x )( x x ) Subroutines-Παράδειγµα - Μέθοδος Newton-Raphson Να γραφεί C ένα c κύριο C πρόγραµµα που θα καλεί ένα υποπρόγραµµα το οποίο θα βρίσκει τη λύση της εξίσωσης x^1.7658-3.589x +1.15 = program main c initial guess x=1. c tolerance tol=1.e-6 call newtonr(x,tol) write(*,*) x end subroutine newtonr(x,tol) error1=1. Do while(error1.gt.tol) call funeval (x,dx) error1=sqrt(d*) subroutine funeval(x,dx) x=x+dx fx=x**1.7658-3.589*x+1.15 enddo rjac=1.7658*x**.7658-3.589 return dx=-fx/ fx/rjac end return end

F n R : F = F x C ( ) Subroutines-Παράδειγµα - ( Μέθοδος ) Newton-Raphson σε ιαστάσεις x Να γραφεί ένα κύριο πρόγραµµα που θα καλεί ένα υποπρόγραµµα το οποίο θα F x ( ) F ( x ) + F ( x )( x x ) C c C βρίσκει τη λύση των εξισώσεων program main implicit real*8(a-h,o-z) parameter(n=) dimension x(n),dx(n) c initial guess x(1)=1. x()=.75 c tolerance tol=1.e-6 call newtonr(x,tol,n) write(*,*) x(1),x() end x1^1.7658-3.589x1*x +1.15 = x^1.3456-4.56*x1*x+.544.56*x1*x+.54 subroutine newtonr(x,tol,n) implicit real*8(a-h,o h,o-z) dimension x(n),dx(n) error1=1. Do while(error1.gt.tol) call funeval (x,dx,n) error1=sqrt(dx(1)**+dx()**) write(*,*) error1,x(1),x() pause x(1)=x(1)+dx(1) x()=x()+dx() enddo return end

F n R : F = F x C ( ) Subroutines-Παράδειγµα - ( Μέθοδος ) Newton-Raphson σε ιαστάσεις x Να γραφεί ένα κύριο πρόγραµµα που θα καλεί ένα υποπρόγραµµα το οποίο θα βρίσκει τη ( ) λύση F ( xc ) + των F ( xεξισώσεων c )( x xc ) x1^1.7658-3.589x1*x +1.15 = F x subroutine funeval(x,dx,n) implicit real*8(a-h,o-z) dimension dx(n),x(n),fx(n) dimension rjac(n,n n,n) c fx(1)=x(1)**1.7658-3.589* $x(1)*x()+1.15 fx()=x()**1.3456-4.56*x(1) 4.56*x(1) $*x()+.54 c rjac(1,1)=1.7658*x(1)**.7658 $-3.589*x() rjac(1,)= (1,)=-3.589*x(1) rjac(,1)= (,1)=-4.56*x() rjac(,)=1.3456*x()**.3456 $-4.56*x(1) call gelim(n,rjac, (n,rjac,-fx,dx) return end x^1.3456-4.56*x1*x+.544.56*x1*x+.54 subroutine gelim(n,sk,r1,u) implicit real*8(a-h,o-z) dimension sk(n,n),u(n),r1(n) do 1 i=1,n do j=1,n continue 1 continue do 3 r=1,n-1 do 4 i=r,n-1 p=sk(i+1,r)/sk(r,r) do 5 j=r+1,n sk(i+1,j)=sk(i+1,j)-p*sk(r,j) 5 continue r1(i+1)=r1(i+1)-p*r1(r) 4 continue 3 continue do 6 m=n,1,-1 if(m.eq.n) goto 1 do 7 l=n,m+1,-1 r1(m)=r1(m)-sk(m,l)*u(l) 7 continue 1 u(m)=r1(m)/sk(m,m) 6 continue return end

F n R : F = F x C ( x) F x ( ) οµή προγραµµάτων-ανακεφαλαίωση ( ) F ( x ) + F ( x )( x x ) C c C Μεγάλα προβλήµατα θα πρέπει να χωρίζονται σε µικρότερα υποπροβλήµατα Κάθε υπο-πρόβληµα πρόβληµα θα πρέπει να λύνεται χωριστά και µε τη σειρά που απαιτείται για την λύση του αρχικού σύνθετου Για κάθε υπο-πρόβληµα πρόβληµα γράφεται η αντίστοιχη υπο-ρουτίνα (subroutine) για την υπολογιστική επίλυση του Ένα τυπικό πρόγραµµα FORTRAN αποτελείται από Ένα κύριο (main) πρόγραµµα Από κανένα, ένα ή περισσότερα υπο-προγράµµατα α (subroutines)

F n R : F = F x C ( x) F x ( ) οµή προγραµµάτων-ανακεφαλαίωση ( ) F ( x ) + F ( x )( x x ) C c C Οι υπο-ρουτίνες µπορούν να εµφανίζονται πριν ή συνήθως µετά το main πρόγραµµα Η εκτέλεση του προγράµµατος αρχίζει από το main πρόγραµµα Μια υπορουτίνα ή συνάρτηση µπορεί να καλείται τόσο από το main πρόγραµµα όσο και από οποιαδήποτε άλλη υπορουτίνα.. Αυτό- καλέσµατα δεν είναι δυνατά. Tο main πρόγραµµα ή η υπορουτίνα περνάει πληροφορία στην καλούµενη υπορουτίνα ή συνάρτηση βάσει των ορισµάτων (arguments) Μετά το κάλεσµα της υπορουτίνας και την εκτέλεση των εντολών που περιέχονται σε αυτή, επιστρέφει τα αποτελέσµατα των υπολογισµών στο πρόγραµµα που την καλεί(main ή subroutine)

Ο µεταγλωτιστής της Fortran 77 Απλές κλήσεις του Μεταγλωτιστή Κλήση % f77 file.f Παραγόµενο αρχείο a.out Είδος Αρχείου εκτελέσιµο % f77 file1.f file.f -c µεταγλωτισµός file1.o file.o συνδέσιµο % f77 ο ο όνοµα-exe file1.o file.o όνοµα-exe εκτελέσιµο % f77 file.f o όνοµα-exe % f77 file.f -g % dbx όνοµα-exe για χρήση του dbx εκτελέσιµο Για ανεύρεση λαθών

F n R : F = F ( x) ( ) Enjoy the ride! x C

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικόυ έργου του διδάσκοντα Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα Ε.Μ.Π.» έχει χρηματοδοτήσει μόνο την αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικού πόρους.