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

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

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

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

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

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Γιατί χρειαζόμαστε πίνακες; ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ. Παράδειγμα #1B (με πίνακες) Παράδειγμα #1Α (χωρίς πίνακες)

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

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Γιατί πολυδιάστατους πίνακες; ΠΟΛΥΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ. Δήλωση πολυδιάστατων πινάκων. Δήλωση πολυδιάστατων πινάκων

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

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

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

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

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

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

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

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

Συναρτήσεις και Υπορουτίνες

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

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

Παράλληλη Επεξεργασία Κεφάλαιο 2 Παραλληλισμός Δεδομένων

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

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

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

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

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

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

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

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

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

Δομές Δεδομένων & Αλγόριθμοι

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

Φύλλο εργασίας 9 - Αυτόνομο ρομποτικό όχημα αποφυγής εμποδίων

Φυσική για Μηχανικούς

Κίνηση σε μία διάσταση

Εργαστηριακή Άσκηση 1

Μονοδιάστατοι πίνακες

8 FORTRAN 77/90/95/2003

Κεφάλαιο 7: Υποπρογράμματα. Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

ΦΥΣΙΚΗ ΓΕΝΙΚΗΣ ΠΑΙΔΕΙΑΣ Α ΛΥΚΕΙΟΥ

Πληροφορική 2. Αλγόριθμοι

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

Προβλήματα, αλγόριθμοι, ψευδοκώδικας

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

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ

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

ΦΥΣ Διάλ Άλγεβρα. 1 a. Άσκηση για το σπίτι: Διαβάστε το παράρτημα Β του βιβλίου

ΧΡΟΝΙΚΗ ΟΛΟΚΛΗΡΩΣΗ. Για την επίλυση χρονομεταβαλλόμενων προβλημάτων η διακριτοποίηση στο χώρο γίνεται με πεπερασμένα στοιχεία και είναι της μορφής:

E = 1 2 k. V (x) = Kx e αx, dv dx = K (1 αx) e αx, dv dx = 0 (1 αx) = 0 x = 1 α,

Δείκτες & Πίνακες Δείκτες, Πίνακες

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

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

Συναρτήσεις και Πίνακες

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

Συνήθεις διαφορικές εξισώσεις O.D.E.

ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ. Πως γίνεται ο ορισμός μιας διαδικασίας; Να δοθούν σχετικά παραδείγματα. ΑΡΧΗ Εντολές ΤΕΛΟΣ_ΔΙΑΔΙΚΑΣΙΑΣ

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

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

ΠΑΡΑΤΗΡΗΣΕΙΣ ΓΙΑ ΤΙΣ ΑΣΚΗΣΕΙΣ

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

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

Εισαγωγή στο Προγραμματισμό για Μηχανολόγους Οδηγός Προετοιμασίας για τη Τελική Εξέταση

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

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

7. Ένα σώμα εκτελεί Α.Α.Τ. Η σταθερά επαναφοράς συστήματος είναι.

Μονοδιάστατοι πίνακες (συνέχεια)

Κεφάλαιο 12 : ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ

1. Σώμα που συγκρούεται ανελαστικά με άλλο σώμα δεμένο στο άκρο οριζοντίου ελατηρίου.

1. Κίνηση Υλικού Σημείου

ΕΡΓΑΣΤΗΡΙΑΚΕΣ ΑΣΚΗΣΕΙΣ C ΣΕΙΡΑ 1 η

auth Αλγόριθμοι - Τμήμα Πληροφορικής ΑΠΘ -4ο εξάμηνο 1

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

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

ΠΙΝΑΚΑΣ ΠΕΡΙΕΧΟΜΕΝΩΝ

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

ΜΑΘΗΜΑ / ΤΑΞΗ : ΦΥΣΙΚΗ ΘΕΤΙΚΩΝ ΣΠΟΥΔΩΝ Γ ΛΥΚΕΙΟΥ - ΑΠΑΝΤΗΣΕΙΣ ΗΜΕΡΟΜΗΝΙΑ: 25/09/16 ΕΠΙΜΕΛΕΙΑ ΔΙΑΓΩΝΙΣΜΑΤΟΣ: ΑΡΧΩΝ ΜΑΡΚΟΣ

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

Αλγόριθµοι και Πολυπλοκότητα

Μέθοδοι πολυδιάστατης ελαχιστοποίησης

Α. unsigned int Β. double. Γ. int. unsigned char x = 1; x = x + x ; x = x * x ; x = x ^ x ; printf("%u\n", x); Β. unsigned char

ΕΚΦΩΝΗΣΕΙΣ ΑΣΚΗΣΕΩΝ 6 24

Προβλήματα που αφορούν εντολές ελέγχου της ροής ενός προγράμματος.

Ποιο είναι το πλάτος της ταλάντωσης ;

F Στεφάνου Μ. 1 Φυσικός

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

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

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

Μεταγλωττιστές Βελτιστοποίηση

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

ιαφάνειες παρουσίασης #6

πινάκων Σύγχρονα Προγραματιστικά Περιβάλλοντα ΠΕΡΙΕΧΟΜΕΝΑ

ΜΑΘΗΜΑ / ΤΑΞΗ : ΦΥΣΙΚΗ Ο.Π / Γ ΛΥΚΕΙΟΥ (ΘΕΡΙΝΑ) ΑΠΑΝΤΗΣΕΙΣ ΗΜΕΡΟΜΗΝΙΑ: 24/09/2017 ΕΠΙΜΕΛΕΙΑ ΔΙΑΓΩΝΙΣΜΑΤΟΣ: ΑΡΧΩΝ ΜΑΡΚΟΣ

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

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

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

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

Φυσική για Μηχανικούς

Μορφοποίηση της εξόδου

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

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

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

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

Transcript:

ΥΠΟΛΟΓΙΣΤΕΣ Ι Τι είναι μια υπορουτίνα; ΥΠΟΡΟΥΤΙΝΕΣ Μια ομάδα εντολών, σχεδιασμένη να εκτελεί έναν ή περισσότερους υπολογισμούς Ιδανικές για περιπτώσεις που ο υπολογισμός επαναλαμβάνεται πολλές φορές μέσα στο πρόγραμμα Συντελούν σημαντικά στην καθαρότητα ενός προγράμματος Συντελούν σημαντικά στην μεταβατικότητα ενός προγράμματος 1 Ποια η διαφορά συναρτήσεων και υπορουτίνων; Είναι και οι δύο υποπρογράμματα Γράφονται και οι δύο μετά το τέλος του προγράμματος Μπορούμε να χρησιμοποιήσουμε όποια από τις δύο θέλουμε για οποιαδήποτε πράξη Συναρτήσεις είσοδος: λίστα μεταβλητών έξοδος: μεταβλητή εξόδου κλήση: ανάθεση σε μεταβλητή Υπορουτίνες είσοδος: λίστα μεταβλητών έξοδος: λίστα μεταβλητών κλήση: χωρίς ανάθεση (με CALL) δεν χρειάζεται να δηλώσουμε το όνομά της 3 Παράδειγμα #1: η πράξη SQ με συνάρτηση PROGRAM TEST_SQ, SQ WRITE(*,*) ΝΟΥΜΕΡΟ; READ(*,*) X WRITE(*,*) SQ(X) REAL*8 FUNCTION SQ(X) SQ = X** με υπορουτίνα PROGRAM TEST_SQ WRITE(*,*) ΝΟΥΜΕΡΟ; READ(*,*) X CALL SQ(X) WRITE(*,*) X SUBROUTINE SQ(X) X = X** 4

Παράδειγμα #1B: : η πράξη SQ με υπορουτίνα: : με ή χωρίς τροποποίηση Πότε να χρησιμοποιούμε συνάρτηση και πότε υπορουτίνα; με τροποποίηση PROGRAM TEST_SQ WRITE(*,*) ΝΟΥΜΕΡΟ; READ(*,*) X CALL SQ(X) WRITE(*,*) X SUBROUTINE SQ(X) X = X** χωρίς τροποποίηση PROGRAM TEST_SQ, Y WRITE(*,*) ΝΟΥΜΕΡΟ; READ(*,*) X CALL SQ(X,Y) WRITE(*,*) Y SUBROUTINE SQ(X, Y), Y Y = X** 5 Συνάρτηση όταν η πράξη είναι απλή με μία και μόνο έξοδο όταν δεν τροποποιούμε τις μεταβλητές εισόδου Υπορουτίνα όταν οι πράξεις είναι πολλές και οι έξοδοι επίσης πολλές όταν πρέπει να τροποποιήσουμε τις μεταβλητές εισόδου Καλές προγραμματιστικές συνήθειες: Συνάρτηση: μία πράξη, ένα αποτέλεσμα (ένα νούμερο) Υπορουτίνα: γενικευμένο σύνολο πράξεων, πολλά αποτελέσματα (π.χ. τροποποίηση ολόκληρου πίνακα) 6 Παράδειγμα #: τροποποίηση πίνακα Παράδειγμα #B: : τροποποίηση πίνακα Γράψτε υπορουτίνα που να δέχεται μονοδιάστατο πίνακα και να τροποποιεί το κάθε στοιχείο του στο τετράγωνό του SUBROUTINE SQΝ(X, N) (N) X(I) = X(I)** DO 7 Γράψτε πρόγραμμα που να διαβάζει μονοδιάστατο πίνακα και με την SQN να τροποποιεί το κάθε στοιχείο του στο τετράγωνό του PROGRAM TEST_SQN INTEGER NMAX, N, Ι PARAMETER(NMAX = 1000) (NMAX) WRITE(*,*) ΠΟΣΑ ΣΗΜΕΙΑ ΘΑ ΕΙΣΑΓΕΤΕ; READ(*,*) Ν IF (N.GT. NMAX.OR. N.LE. 0) STOP READ(*,*) (X(I), I = 1, N) CALL SQN(X, N) WRITE(*,*) ΤΑ ΝΕΑ ΣΤΟΙΧΕΙΑ ΤΟΥ ΠΙΝΑΚΑ WRITE(*,*) (Χ(Ι), Ι = 1, Ν) 8

Παράδειγμα #3: υπορουτίνα για ταξινόμηση με μέθοδο φυσαλίδας Παράδειγμα #3: υπορουτίνα SWAP SUBROUTINE BUBBLE_SORT(X, N), J (N) C...ΓΙΑ ΚΑΘΕ ΘΕΣΗ J DO J = N,, -1 C...ΒΡΙΣΚΟΥΜΕ ΤΟ ΑΝΤΙΣΤΟΙΧΟ ΜΕΓΙΣΤΟ DO I = 1, J-1 IF(X(I).GT. X(I+1))THEN CALL SWAP( X(I), X(I+1) ) IF DO DO SUBROUTINE SWAP (X, Y), Y, TEMP TEMP = X X = Y Y = TEMP 9 10 Παράδειγμα #4: πολλαπλασιασμός πινάκων Γράψτε υπορουτίνα που δέχεται 3 δισδιάστατους τετραγωνικούς πίνακες και τροποποιεί τον τρίτο ώστε να είναι το γινόμενο των δύο πρώτων SUBROUTINE MATRIX_PRODUCT(A, B, C, N), J, K DOUBLE PRECISION A(N,N), B(N,N), C(N,N) DO J = 1, N C(I,J) = 0 DO K = 1, N C(I,J) = C(I,J) + A(I,K) * B(K,J) DO DO DO Παράδειγμα #5: απόσταση διανυόμενη από σώμα με μεταβλητή ταχύτητα (ή με άλλα λόγια: αριθμητική ολοκλήρωση γραμμικής διαφορικής εξίσωσης) Έστω ένα σώμα ξεκινάει από την θέση x=0, και η ταχύτητά του δίνεται από την παρακάτω σχέση, όπου ο χρόνος t μετριέται σε δευτερόλεπτα v ( t ) = 0.03t 0.001t 3 1+ 0.0001t Ποια απόσταση έχει διανύσει μετά από Μ δευτερόλεπτα; 11 1

Παράδειγμα #5: απόσταση διανυόμενη από σώμα με μεταβλητή ταχύτητα Μέθοδος του Euler Διαφορική εξίσωση: Διακριτοποίηση: Ολοκλήρωση στον χρόνο: Η σε μορφή αλγόριθμου (για Δt=1sec) dx ( t ) = v ( t ) dt x ( t + Δt ) x ( t ) = v ( t ) Δt x ( t + Δt ) = x ( t ) + Δt v ( t ) x = x + v i +1 i i 13 Παράδειγμα #5: απόσταση διανυόμενη από σώμα με μεταβλητή ταχύτητα (1/) Γράψτε πρόγραμμα που υπολογίζει την 0.03t 0.001t απόσταση σαν συνάρτηση του χρόνου, όταν v ( t ) = 3 η ταχύτητα δίνεται από (t σε δευτερόλεπτα): 1+ 0.0001t PROGRAM DISTANCE1 INTEGER Μ, T, V, VELOCITY WRITE(*,*) ΠΟΣΑ ΒΗΜΑΤΑ ΘΕΛΕΤΕ; READ(*,*) M Χ = 0 DO T = 1, M V = VELOCITY(T) CALL DISTANCE(X, V) DO WRITE(*,*) Η ΑΠΟΣΤΑΣΗ ΕΙΝΑΙ, Χ 14 Παράδειγμα #5: απόσταση διανυόμενη από σώμα με μεταβλητή ταχύτητα (/) Παράδειγμα #6: απόσταση διανυόμενη από Ν σώματα με σταθερή ταχύτητα DOUBLE PRECISION FUNCTION VELOCITY ( T ) INTEGER T VELOCITY = (0.03*T - 0.001* T**)/(1 + 0.0001* T**3) C--------------------------------------------------------- SUBROUTINE DISTANCE (X, V), V X = X + V 15 Έστω N σώματα ξεκινάνε από την θέση x=0 με αρχική ταχύτητα (σε m/sec) που δίνεται από την σχέση (i=1, N) ( i ) v ( i ) = 100 cos 100 Εάν η κίνηση είναι με σταθερή ταχύτητα, μετά από M δευτερόλεπτα, ποιο είναι μακρύτερα και ποιο κοντύτερα στην αρχή, και ποιες θα είναι αυτές οι αποστάσεις; Τι θα χρειαστούμε; Δύο πίνακες για απόσταση και ταχύτητα Μια συνάρτηση για να δημιουργήσουμε αρχικές ταχύτητες Μια υπορουτίνα για να εκτελεί ένα βήμα Μια συνάρτηση που γυρνάει την θέση του μεγίστου ενός πίνακα Μια συνάρτηση που γυρνάει την θέση του ελαχίστου ενός πίνακα 16

Παράδειγμα #6: απόσταση διανυόμενη από Ν σώματα με σταθερή ταχύτητα (1/5) Παράδειγμα #6: απόσταση διανυόμενη από Ν σώματα με σταθερή ταχύτητα (/5) Συνάρτηση για την δημιουργία αρχικών ταχυτήτων DOUBLE PRECISION FUNCTION VELOCITY ( I ) INTEGER I VELOCITY = 100 * ABS ( COS (100 * I) ) ) Υπορουτίνα για εκτέλεση ενός βήματος SUBROUTINE RUN_DISTANCE (X, V, N) (N), V(N) X(I) = X(I) + V(I) DO 17 18 Παράδειγμα #6: απόσταση διανυόμενη από Ν σώματα με σταθερή ταχύτητα (3/5) Παράδειγμα #6: απόσταση διανυόμενη από Ν σώματα με σταθερή ταχύτητα (4/5) Συνάρτηση για εύρεση θέσης μέγιστου πίνακα INTEGER FUNCTION IMAX (X, N) (N), XMAX XMAX = X(1) IMAX = 1 DO I =, N IF (X(I).GT.XMAX) THEN XMAX = X(I) IMAX = I IF DO 19 Συνολικό πρόγραμμα PROGRAM RACE INTEGER NMAX, M, N, I, IMIN, IMAX PARAMETER(NMAX=1000) DOUBLE PRECISION DIST(NMAX), VEL(NMAX), VELOCITY WRITE(*,*) ΠΟΣΑ ΣΩΜΑΤΑ ΤΡΕΧΟΥΝ ΚΑΙ ΓΙΑ ΠΟΣΑ ΒΗΜΑΤΑ; READ(*,*) Ν, Μ IF (N.GT. NMAX.OR. N.LE. 0) STOP DIST(I) = 0 VEL(I) = VELOCITY(I) DO ΣΥΝΕΧΙΖΕΤΑΙ... 0

Παράδειγμα #6: απόσταση διανυόμενη από Ν σώματα με σταθερή ταχύτητα (5/5) Συνολικό πρόγραμμα DO I = 1, Μ CALL RUN_DISTANCE(X, V, N) DO WRITE(*,*) ΠΡΩΤΟ ΤΟ, ΙΜΑΧ(DIST,N) WRITE(*,*) ΜΕ ΑΠΟΣΤΑΣΗ, DIST(IMAX(DIST,N)) WRITE(*,*) KAI TAXYTHTA, VEL(IMAX(DIST,N)) Παράδειγμα #7:# : απόσταση διανυόμενη από Ν σώματα, με κανόνες ταχύτητας Κίνηση Ν σωμάτων με κανόνες ταχύτητας: σε κάθε βήμα όποιο σώμα έχει ταχύτητα πάνω από τον μέσο όρο ταχυτήτων, πρέπει να την μειώσει κατά 10%, ενώ όποιο έχει ταχύτητα κάτω από τον μέσο όρο ταχυτήτων πρέπει να την αυξήσει κατά 10%. Τι θα χρειαστούμε; Μια συνάρτηση να υπολογίζει τον μέσο όρο Μια υπορουτίνα που να εφαρμόζει τον κανόνα 1 Παράδειγμα #7:# : απόσταση διανυόμενη από Ν σώματα, με κανόνες ταχύτητας (1/) Συνάρτηση για μέσο όρο DOUBLE PRECISION FUNCTION AVERAGE (X, N) (N) AVERAGE = 0 AVERAGE = AVERAGE + X(I) DO AVERAGE = AVERAGE / N 3 Παράδειγμα #7:# : απόσταση διανυόμενη από Ν σώματα, με κανόνες ταχύτητας (/) Υπορουτίνα για εφαρμογή κανόνα SUBROUTINE SCALE_VELOCITY (V, N) DOUBLE PRECISION V(N), AVERAGE, VM VM = AVERAGE(V, N) IF (V(I).GT. VM) THEN V(I) = V(I) * 0.9 ELSE IF (V(I).LT. VM) THEN V(I) = V(I) * 1.1 IF DO 4

H M k Γράψτε πρόγραμμα που να λύνει την χρονική εξέλιξη του γραμμικού συστήματος Ν ελατηρίων Συνθήκες: Αρχικές θέσεις τυχαίες Αρχικές ταχύτητες μηδέν Πρώτη και τελευταία είναι ακίνητες 1 3 I N Κάθε σφαίρα I(εκτός πρώτης και τελευταίας), περιγράφεται από: Την θέση της Την ταχύτητά της Την δύναμη πού νοιώθει εξαιτίας των δύο ελατηρίων της 5 6 1 3 I N Αρχικές θέσεις: X(1) = 0 X(N) = H * (N - 1) Οι υπόλοιπες δίνονται από τον χρήστη Αρχικές ταχύτητες Όλες μηδέν 1 3 I N Δύναμη στη σφαίρα Ι Εάν το δεξί της ελατήριο είναι τεντωμένο, η δύναμη είναι πρός τα δεξιά (θετική): F = K * (X(I+1) X(I) H) Εάν το δεξί της ελατήριο είναι συμπιεσμένο, η δύναμη είναι προς τα αριστερά (αρνητική): F = K * (X(I+1) X(I) H) Εάν το αριστερό της ελατήριο είναι τεντωμένο, η δύναμη είναι προς τα αριστερά (αρνητική): F = K * (X(I-1) X(I) + H) Εάν το αριστερό της ελατήριο είναι συμπιεσμένο, η δύναμη είναι προς τα δεξιά (θετική): F = K * (X(I-1) X(I) + H) 7 8

1 3 I N Συνολική δύναμη στη σφαίρα Ι F = K * (X(I+1) X(I) H) + K * (X(I-1) X(I) + H) F = Κ * (Χ(Ι+1) + Χ(Ι-1) *Χ(Ι)) και η επιτάχυνση Α = Κ / Μ * (Χ(Ι+1) + Χ(Ι-1) *Χ(Ι)) H δύναμη στην πρώτη και τελευταία είναι μηδέν 9 Ολοκλήρωση Ανάπτυγμα Taylor για την απόσταση 1 x ( t + Δt ) = x ( t ) + v ( t ) Δt + a( t )( Δt ) Ανάπτυγμα για την ταχύτητα v ( t + Δt ) = v ( t ) + a( t ) Δt ΣΗΜΕΙΩΣΗ: εφαρμόζοντας αυτούς τους τύπους επιτυγχάνουμε λύση με ακρίβεια πρώτης τάξης, όχι ικανοποιητική. Με μικρή τροποποίηση μπορούμε να επιτύχουμε ακρίβεια δεύτερης τάξης, αλλά δεν είναι επί του παρόντος. 30 Υπορουτίνα για υπολογισμό επιτάχυνσης SUBROUTINE ACCELERATION (X, A, N, KM) (N), A(N), KM DO I =, N-1 A(I) = KM * (X(I+1) + X(I-1) * X(I)) DO Υπορουτίνα για υπολογισμό νέας ταχύτητας SUBROUTINE VELOCITY (V, A, N, DT) DOUBLE PRECISION V(N), A(N), DT DO I =, N-1 V(I) = V(I) + A(I) * DT DO 31 3

Υπορουτίνα για υπολογισμό νέας θέσης SUBROUTINE POSITION (X, V, A, N, DT) DOUBLE PRECISION Χ(Ν), V(N), A(N), DT DO I =, N-1 Χ(I) = Χ(Ι) + V(I) * DT + 0.5 * A(I) * DT** DO Πρόγραμμα PROGRAM SPRINGS INTEGER NMAX, N, I, J PARAMETER(NMAX=1000) (NMAX), V(NMAX), A(NMAX), KM, DT WRITE(*,*) ΠΟΣΑ ΣΩΜΑΤΑ ΤΡΕΧΟΥΝ ΚΑΙ ΓΙΑ ΠΟΣΑ ΒΗΜΑΤΑ; READ(*,*) Ν, Μ IF (N.GT. NMAX.OR. N.LE. 0) STOP WRITE(*,*) ΕΛΑΤΗΡΙΟ/ΜΑΖΑ, ΒΗΜΑ READ(*,*) KM, DT ΣΥΝΕΧΙΖΕΤΑΙ... 33 34 Πρόγραμμα WRITE(*,*) ΔΩΣΕ ΑΡΧΙΚΕΣ ΘΕΣΕΙΣ READ(*,*) (Χ(Ι), Ι = 1, Ν) V(I) = 0 DO DO J = 1, M CALL ACCELARATION(X, A, N, KM) CALL POSITION(X, V, A, N, DT) CALL VELOCITY(V, A, N, DT) DO WRITE(*,*) ΟΙ ΘΕΣΕΙΣ ΜΕΤΑ ΑΠΟ, Μ, ΒΗΜΑΤΑ ΕΙΝΑΙ WRITE(*,*) (X(I), I = 1, N) 35