Το Βοήθηµα της Εξάσκησης

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

Κεφάλαιο Τέταρτο: Η Θεωρία πριν από την Εξάσκηση

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

8 FORTRAN 77/90/95/2003

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

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

for for for for( . */

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

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

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

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

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

- Αναπαράσταση ακέραιας τιµής : - Εύρος ακεραίων : - Ακέραιοι τύποι: - Πράξεις µε ακεραίους (DIV - MOD)

ΕΙ ΑΓΩΓΉ ΣΗΝ FORTRAN

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

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

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

Πρόβλημα 29 / σελίδα 28

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

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

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΤΩΝ Κεφάλαιο 10 : Εντολές επιλογής και αποφάσεων

if(συνθήκη) {... // οµάδα εντολών } C: Από τη Θεωρία στην Εφαρµογή 5 ο Κεφάλαιο

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

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

Εισαγωγή στους Αλγόριθμους και τον Προγραμματισμό. 3η Διάλεξη Είσοδος Δεδομένων Συνθήκες Βρόχοι Παραδείγματα

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

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

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

Εντολές ελέγχου ροής if, for, while, do-while

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΥΠΟΛΟΓΙΣΜΟΣ Εντολές επιλογής και αποφάσεων 1 ο Φύλλο Εργασιών Εισαγωγικές ασκήσεις για την εντολή if ΑΠΑΝΤΗΣΕΙΣ

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

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

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

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

IMPLICIT NONE INTEGER :: a, b, c

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

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

επιµέλεια Θοδωρής Πιερράτος

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

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

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

a = 10; a = k; int a,b,c; a = b = c = 10;

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

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

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

ΔΟΜΗ ΕΠΙΛΟΓΗΣ. Οι διάφορες εκδοχές της

Εισαγωγή - Βασικές έννοιες. Ι.Ε.Κ ΓΛΥΦΑΔΑΣ Τεχνικός Τεχνολογίας Internet Αλγοριθμική Ι (Ε) Σχολ. Ετος A Εξάμηνο

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

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 3 η : Επίλυση Προβληµάτων Χειµερινό Εξάµηνο 2011

ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΑΛΓΟΡΙΘΜΟΥΣ ΚΑΙ ΣΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Διδάσκουσα Δρ Β.

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

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

Σειρά Προβλημάτων 3 Λύσεις

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

3 ο Εργαστήριο Μεταβλητές, Τελεστές

Θεωρητικές Ασκήσεις. ΑΝΑΠΤΥΞΗ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ. 1 ο Μέρος

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

ΚΕΦΑΛΑΙΟ 4ο. Α. Το περιβάλλον της Microsoft Fortran Powerstation

Ερωτήσεις πολλαπλής επιλογής - Κεφάλαιο 2. Α1. Ο αλγόριθμος είναι απαραίτητος μόνο για την επίλυση προβλημάτων πληροφορικής

Προγραμματισμός ΗΥ και Υπολογιστική Φυσική. Χρήστος Γκουμόπουλος

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

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

ΗΥ-150. Προγραµµατισµός. Εντολές Ελέγχου Ροής

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

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

Εργαστήριο 5. Εντολή if και παραλλαγές: if-else, πολλαπλές if, πολλαπλές if-else. Απλές και σύνθετες εντολές. Εντολή switch.

Επιλογή και επανάληψη. Λογική έκφραση ή συνθήκη

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Γ ΤΑΞΗ

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

i 1 Όσο i <> 100 επανάλαβε i i + 2 Γράψε A[i] Τέλος_επανάληψης

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

ΙΑΓΩΝΙΣΜΑ ΑΝΑΠΤΥΞΗΣ ΕΦΑΡΜΟΓΩΝ ΣΕ ΠΡΟΓΡΑΜΜΑΤΙΣΤΙΚΟ ΠΕΡΙΒΑΛΛΟΝ (ΑΠΟΦΟΙΤΟΙ) Κυριακή

Η ANTINOOS αντιµετώπισε το πρόβληµα της καθιέρωσης του ΕΥΡΩ µε τον ακόλουθο τρόπο:

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ Γ ΤΑΞΗ

Διάλεξη 2. Μεταβλητές - Δομές Δεδομένων - Eίσοδος δεδομένων - Έξοδος: Μορφοποίηση - Συναρτήσεις. Διοργάνωση : ΚΕΛ ΣΑΤΜ

char name[5]; /* define a string of characters */

ΑΣΚΗΣΗ 3: ΠΡΟΤΑΣΕΙΣ, ΕΚΦΡΑΣΕΙΣ ΚΑΙ ΤΕΛΕΣΤΕΣ

Ορισµοί κεφαλαίου. Σηµαντικά σηµεία κεφαλαίου

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

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

Σύντοµος Οδηγός της Qbasic. Πέρδος Αθανάσιος Καθηγητής Πληροφορικής

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

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

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

ÁÎÉÁ ÅÊÐÁÉÄÅÕÔÉÊÏÓ ÏÌÉËÏÓ

Σημειωματάριο Δευτέρας 9 Οκτ. 2017

true (1) αν και οι δύο είσοδοι είναι true (1) true (1) αν τουλάχιστον μια είσοδος είναι true (1)

Κεφάλαιο 5 Αξιωματική Σημασιολογία και Απόδειξη Ορθότητας Προγραμμάτων

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

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

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

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

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

ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ ΑΛΓΟΡΙΘΜΩΝ ΚΕΦΑΛΑΙΟ 2 ο ΚΕΦΑΛΑΙΟ 7 ο ΕΡΩΤΗΣΕΙΣ ΓΕΝΙΚΑ ΠΕΡΙ ΑΛΓΟΡΙΘΜΩΝ

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

I. ΑΛΓΟΡΙΘΜΟΣ II. ΠΡΑΞΕΙΣ - ΣΥΝΑΡΤΗΣΕΙΣ III. ΕΠΑΝΑΛΗΨΕΙΣ. 1. Τα πιο συνηθισμένα σενάρια παραβίασης αλγοριθμικών κριτηρίων είναι:

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

2 η Διάλεξη C++ Δρ. Χρήστος Δρόσος ΑΕΙ ΠΕΙΡΑΙΑ ΤΤ ΤΜΗΜΑ ΑΥΤΟΜΑΤΙΣΜΟΥ

Transcript:

Το Βοήθηµα της Εξάσκησης Το παρόν παράρτηµα δίνεται µε το σκεπτικό πως οι σπουδαστές αρέσκονται περισσότερο να διαβάζουν στο τέλος του εξαµήνου παρά κατά τη διάρκειά του. Οι επιλύσεις των ασκήσεων οι οποίες δίνονται δεν θα µειώσουν την αξία της παράδοσης της Θεωρίας, ούτε και τη δηµιουργική σκέψη η οποία πρέπει να επιδεικνύεται από τους σπουδαστές. Ακόµα, δεν θα πρέπει το ξεφύλλισµα των σηµειώσεων στο παρόν παράρτηµα να αποτελέσει την πρώτη ενέργεια των σπουδαστών µετά την έλευση στο Εργαστήριο. Οι επιλύσεις, εξ άλλου, δεν µπορεί να είναι τέλειες. ρ. Γιώργος - Πέτρος Κ. Οικονόµου Παράρτηµα 3-1

ρ. Γιώργος - Πέτρος Κ. Οικονόµου Παράρτηµα 3-2

Άσκηση a11.for c a b c d e f g h i j k l m n o p q r s t u v w x y z 1 c 1 2 3 4 5 6 7 8 9 0 2 c + - * / ( ) 3 stop 4 end 5 - Στήλη 1: ένας χαρακτήρας (συνήθως το c -comment, σχόλιο), σηµαίνει πως όλη η γραµµή είναι ένα σχόλιο και χρησιµοποιείται κυρίως σε περιγραφή τµηµάτων κώδικα. - Στήλη 2 έως και 5: εδώ γράφονται τα ονόµατα των γραµµών (label). - Στήλη 6: ένας χαρακτήρας (συνήθως το + ), σηµαίνει πως η παρούσα γραµµή αποτελεί συνέχεια της προηγούµενης (η οποία, προφανώς, ήταν πολύ πλατειά ). Μην ξεχνάτε να µην ξεπερνάτε τη στήλη εβδοµήντα (70)! ρ. Γιώργος - Πέτρος Κ. Οικονόµου Παράρτηµα 3-3

Άσκηση a12.for print *, Geia soy 1 stop 2 end 3 - Ένα πρόγραµµα στη γλώσσα προγραµµατισµού Fortran δεν έχει σηµασία αν θα γραφεί σε κεφαλαία ή πεζά γράµµατα. Το υπολογιστικό σύστηµα τα αναγνωρίζει ακόµα και σε συνδυασµούς τους. Μην ξεχνάτε το µονό εισαγωγικό! ρ. Γιώργος - Πέτρος Κ. Οικονόµου Παράρτηµα 3-4

Άσκηση a13.for print *, Prwto=, 1,, Deytero=, 2,, Trito=, 3 1 stop 2 end 3 - Το µόνο διαχωριστικό µεταξύ πεδίων εκτύπωσης είναι το κόµµα,. Ένα πρόγραµµα στη γλώσσα προγραµµατισµού Fortran τελειώνει µε τις εντολές stop και end. ρ. Γιώργος - Πέτρος Κ. Οικονόµου Παράρτηµα 3-5

Σηµειώσεις: ρ. Γιώργος - Πέτρος Κ. Οικονόµου Παράρτηµα 3-6

Άσκηση a21.for real k1, k2, ks, kp 1 k1=2 2 k2=3 3 ks=1/k1+1/k2 4 ks=1/ks 5 kp=k1+k2 6 print *, k1=, k1,, k2=, k2,, ks=, ks,, kp=, kp 7 stop 8 end 9 - Αν δεν δηλωθούν αλλοιώς, τα ονόµατα των µεταβλητών τα οποία αρχίζουν µε τα αγγλικά γράµµατα i, j, k, l, m και n, καθιστούν το περιεχόµενο της µνήµης (αριθµό) ΑΚΕΡΑΙΟ, οπότε οι οποιεσδήποτε δεκαδικές θέσεις αριθµών διαγράφονται όταν ανατεθούν σε αυτές τις µεταβλητές. - Η εντολή η οποία συµβολίζεται µε το = (ανάθεση), ΕΝ ΕΙΝΑΙ ισότητα. Ως εκ τούτου, στην πέµπτη (5) γραµµή του πηγαίου κώδικα το = ΕΝ ΣΗΜΑΙΝΕΙ πως ks=±1 (αναγκαστικά), ΟΥΤΕ πως µπορεί να απλοποιηθεί στην εντολή. Με άλλα λόγια, το = (ανάθεση), ΕΝ υποδηλώνει πράξη. - Επιτρέπεται µόνο µία (1) εντολή σε κάθε γραµµή. Αν κάποιο από τα k1 ή/και k2 είναι µηδέν (0), η τέταρτη (4) γραµµή θα δηµιουργήσει πρόβληµα εκτέλεσης του κώδικα. Η αντιµετώπιση αυτού του προβλήµατος θα γίνει στα επόµενα. ρ. Γιώργος - Πέτρος Κ. Οικονόµου Παράρτηµα 3-7

Άσκηση a22.for real i1, j1, k1 1 i1=1 2 j1=1 3 k1=1 4 ic=(i1**2+j1**2)**(1/2.) 5 jc=atan(j1/i1) 6 kc=k is=(i1**2+j1**2+k1**2)**(1/2.) 7 js=atan(j1/i1) 8 ks=acos(k1/is) 9 print *, x=, i1,, y=, j1,, z=, k1, rk=, ik,, tk=, jk,, zk=, k1, 10 + rs=, is,, fs=, js,, ts=, ks 12 stop 13 end 14 - Η πράξη ύψωση σε δύναµη αντιπροσωπεύεται από το **. - Ο χαρακτήρας. στον αριθµό 2 στην έβδοµη (7) γραµµή, (υπο)δηλώνει τον αριθµό ως πραγµατικό. - Η γλώσσα προγραµµατισµού Fortran διακρίνει τον τύπο των αριθµών (λογικές, ακέραιες ή πραγµατικές). Προκειµένου να δοθούν άλλες συντεταγµένες ενός σηµείου από τις (1, 1, 1), πρέπει να αλλάξουν οι δεύτερη (2), τρίτη (3) και τέταρτη (4) γραµµές του πηγαίου κώδικα. ρ. Γιώργος - Πέτρος Κ. Οικονόµου Παράρτηµα 3-8

Άσκηση a23.for logical a, b 1 a=.true. 2 b=.false. 3 print *, a.and.b 4 print *, a.or.b 5 print *,.not.a 6 print *, ((a.and.(.not.b).or.(.not.a).and.b)) 7 print *, (((.not.a).or.(.not.b)).and.(a.or.b)) 8 stop 9 end 10 - Οι λογικές µεταβλητές πρέπει να δηλώνονται ΥΠΟΧΡΕΩΤΙΚΑ (µε την εντολή LOGICAL) πριν από την χρησιµοποίησή τους. Οι πιο πιθανές του ονοµασίες συνήθως αρχίζουν µε τον χαρακτήρα l. - Οι λογικές µεταβλητές κατά την εκτύπωσή τους αναπαρίστανται ως T (αληθές) ή F (ψευδές). - Κατά την εισαγωγή λογικών µεταβλητών από το πληκτρολόγιο (η οποία δεν καλύπτεται από τις παρούσες ασκήσεις) µπορούν να δοθούν ως.true. ή.t. ή t (ή µε κεφαλαία -αληθές) και.false. ή.f. ή f (ή µε κεφαλαία -ψευδές), χωρίς να υπάρξει κάποιο πρόβληµα. Σε κάθε τι το οποίο έχει σχέση µε τις λογικές µεταβλητές, τους τελεστές και τις πράξεις, οι τελείες (. ) πριν και µετά αυτών είναι ΥΠΟΧΡΕΩΤΙΚΕΣ. ρ. Γιώργος - Πέτρος Κ. Οικονόµου Παράρτηµα 3-9

Σηµειώσεις: ρ. Γιώργος - Πέτρος Κ. Οικονόµου Παράρτηµα 3-10

Άσκηση a31.for print *, Dwse r(cm), b(cm) 1 read (*,*) r, b 2 p=3.1415927 3 print *, ^ 4 e=p**2*(r**2-b**2) 5 v=(1/4.)*p**2*(r+b)*(r-b)**2 6 write (*,10) r, b, e, v 7 1 0 format (1x, r=, f10.3, 1x, b=, f10.3, 1x, 8 + e=, f10.3, 1x, v=, f10.3) 9 stop 10 end 11 - Η εντολή READ *, διαβάζει από το πληκτρολόγιο µία (1) τιµή και µόνο, ενώ η εντολή READ (*,*) διαβάζει πολλές τιµές. Οπωσδήποτε, αυτό καθορίζεται και από τις µεταβλητές οι οποίες ακολουθούν. - Ο αριθµός π δεν ορίζεται από το περιβάλλον της Fortran αυτόµατα. - Η εντολή FORMAT συνήθως ξεπερνά τη στήλη εβδοµήντα (70) σε πλάτος, οπότε και θα πρέπει να συνεχίζεται κατάλληλα στην επόµενη γραµµή (δες ένατη (9) γραµµή). - Στη γραµµή εννέα (9) το e= γράφεται στην ίδια στήλη µε το r= της προηγούµενης γραµµής (οκτώ (8)) για λόγους καθαρότητας της γραφής του κώδικα (το υπολογιστικό σύστηµα δεν έχει πρόβληµα). - Η εντολή print *, ^ τυπώνει µία (1) κενή γραµµή. Ο αριθµός εντολής 10 (όγδοη (8) γραµµή) µπορεί να γραφεί σε οποιεσδήποτε δύο (2) ΣΥΝΕΧΟΜΕΝΕΣ στήλες µεταξύ της δεύτερης (2) και της πέµπτης (5) και είναι µοναδικός. ρ. Γιώργος - Πέτρος Κ. Οικονόµου Παράρτηµα 3-11

Άσκηση a32.for print *, Dwse bathmo 1oy mathhmatos 1 read *, r1 2 print *, Dwse bathmo 1oy ergasthrioy 3 read *, e1 4 print *, Dwse syntelesth 1oy mathhmatos 5 read *, s1 6 print *, ^ 7 print *, Dwse bathmo 2oy mathhmatos 8 read *, r2 9 print *, Dwse bathmo 2o ergasthrioy 10 read *, e2 11 print *, Dwse syntelesth 2oy mathhmatos 12 read *, s2 13 print *, ^ 14 print *, Dwse bathmo 3oy mathhmatos 15 read *, r3 16 print *, Dwse bathmo 3oy ergasthrioy 17 read *, e3 18 print *, Dwse syntelesth 3oy mathhmatos 19 read *, s3 20 print *, ^ 21 a1=(r1+e1)/2 22 a2=(r2+e2)/2 23 a3=(r3+e3)/2 24 b1=(a1+a2+a3)/3 25 b2=(a1*s1+a2*s2+a3*s3)/(s1+s2+s3) 26 write (*,10) a1, a2, a3, b1, b2 27 1 0 format(1x, a1=, f6.2, 3x, a2=, f6.2, 1x, a3=, f6.2, /, 1x, 28 + mo1=, f6.2, 3x, mo2=, f6.2) 29 stop 30 end 31 - Τα ορίσµατα της εντολής FORMAT περικλείονται από παρενθέσεις. Τα ορίσµατα της εντολής FORMAT καλό είναι να ξεκινούν µε την εκτύπωση κενών χαρακτήρων. ρ. Γιώργος - Πέτρος Κ. Οικονόµου Παράρτηµα 3-12

Άσκηση a33.for character *15 name, surname, semester 1 print *, Dwse onoma 2 read *, name 3 print *, Dwse epwnymo 4 read *, surname 5 print *, Dwse eksamhno 6 read *, semester 7 print *, ^ 8 print *, Dwse i 9 read *, i 10 print *, Dwse j 11 read *, j 12 print *, Dwse a 13 read *, a 14 print *, Dwse b 15 read *, b 16 print *, Dwse x 17 read *, x 18 print *, Dwse y 19 read *, y 20 print *, ^ 21 z1=exp(-(a+b)**(1/3.)) 22 z2=a*asin(abs(2*x**i-y**j)/1000) 23 z3=1/(1+cos(i+j)) 24 z4=int(2*x+3*y) 25 z5=alog(abs(10*x*y)) 26 z=z1+(z2*z3)/(z4*z5) 27 write (*,10) name, surname, semester, i, j, a, b, x, y 28 1 0 format (1x, ONOMA :, a15, 5x, EPWNYMO :, a15, 29 + EKSAMHNO :, a15, /, 1x, 30 + i=, i6, 5x, j=, 5x, i6, 31 + a=, f15.5, 5x, b=, f15.5, /, 1x, 32 + x=, e15.5, 5x, y=, e15.5, 5x, z=, e15.5) 33 stop 34 end 15 - Οι µεταβλητές τύπου χαρακτήρα πρέπει να δηλώνονται ΥΠΟΧΡΕΩΤΙΚΑ (µε την εντολή CHARACTER) πριν από την χρησιµοποίησή τους (και στο µέγεθός τους). Όταν η υπολογιζόµενη παράσταση είναι µεγάλη (σε µήκος), καλό είναι να διασπάται σε περισσότερες επί µέρους µεταβλητές και να υπολογίζεται µέσω αυτών. ρ. Γιώργος - Πέτρος Κ. Οικονόµου Παράρτηµα 3-13

Σηµειώσεις: ρ. Γιώργος - Πέτρος Κ. Οικονόµου Παράρτηµα 3-14

Άσκηση a41.for logical l1, l2, l3 1 1 0 print *, Dwse etos 2 read *, year 3 if ((year.ne.int(year)).or.(year.lt.0)) then 4 print *, Lathos etos 5 goto 10 6 endif 7 feb=28 8 l1=year/4.eq.int(year/4) 9 l2=year/100.eq.int(year/100) 10 l3=year/400.eq.int(year/400) 11 if (l1) then 12 if (l2) then 13 if (l3) then 14 feb=29 15 endif 16 else 17 feb=29 18 endif 19 endif 20 print *, Etos=, year,, feb=, feb 21 print *, Synexeia (nai:1); 22 read *, a 23 if (a.eq.1) then 24 print *, ^ 25 goto 10 26 endif 27 stop 28 end 29 - Όταν η τιµή µιας µεταβλητής διαβάζεται από το πληκτρολόγιο πρέπει να ελέγχεται ως προς το ποιον της. Στην προκειµένη περίπτωση ελέγχεται το έτος ως προς την ακεραιότητά του. - Θα πρέπει να χρησιµοποιείται πραγµατική µεταβλητή ακόµα και στην περίπτωση όπου αναµένεται από το πληκτρολόγιο ακέραιος αριθµός (τρίτη (3) γραµµή). Αν συµβεί το αντίθετο (δοθεί σε ακέραια µεταβλητή ένας πραγµατικός αριθµός από το πληκτρολόγιο), το πρόγραµµα τερµατίζει λανθασµένα. - Μεταξύ των γραµµών είκοσι τέσσερα (24) έως και είκοσι επτά (27) περιγράφεται η πιο απλή µορφή της εντολής επανάληψης. Ο έλεγχος του προγράµµατος µεταφέρεται στη δεύτερη γραµµή (2) του µόνο αν από το πληκτρολόγιο δοθεί ο αριθµός 1, σε αντίθετη περίπτωση το πρόγραµµα τερµατίζεται. - Κατά την επιλογή πολλών εντολών IF... ENDIF ή πολλαπλών εντολών IF... ELSEIF... ELSE... ENDIF ή, τέλος, εντολών IF... ENDIF µέσα σε (άλλες) εντολές IF... ENDIF, σηµασία έχει η διάκριση των υποθέσεων. Αν καλύπτουν πολλές τιµές της ίδιας µεταβλητής, τότε θα πρέπει να χρησιµοποιηθούν είτε πολλές εντολές IF ή πολλαπλή εντολή IF. Αν οι υποθέσεις καλύπτουν διαφορετικές πράξεις επάνω στην ίδια µεταβλητή, τότε πρέπει να τεθούν εντολές IF µέσα σε (άλλες) εντολές IF (γραµµές δώδεκα (12) έως και είκοσι (20)). Η διάκριση πολλών εντολών IF ή πολλαπλής εντολής IF, έγκειται στον αν απαιτείται σε µια µεταβλητή να δεχθεί και τις ενδιάµεσες τιµές οι οποίες καθορίζονται από τις υποθέσεις. - Στις γραµµές (πέντε (5) και έξι (6) και δέκα τρία (13) έως και δέκα εννέα (19), ο κορµός των εντολών IF γράφεται πιο µέσα σε σχέση µε την εντολή για λόγους καθαρότητας της γραφής του κώδικα. Η γλώσσα προγραµµατισµού FORTRAN δεν υποστηρίζει τα σύµβολα >, <,,, = και στις λογικές συγκρίσεις, αλλά τα εξής.gt.,.lt.,.ge.,.le.,.eq. και.ne., αντίστοιχα. ρ. Γιώργος - Πέτρος Κ. Οικονόµου Παράρτηµα 3-15

Άσκηση a42.for print *, Dwse a 1 read *, a 2 print *, Dwse b 3 read *, b 4 print *, Dwse c 5 read *, c 6 d=b**2-4*a*c 7 if (d.eq.0) then 8 x=-b/(2*a) 9 print *, Diplh pragmatikh riza 10 print *, x=, x 11 elseif (d.gt.0) then 12 d=d**(1/2.) 13 x1=(-b+d)/(2*a) 14 x2=(-b-d)/(2*a) 15 print *, Pragmatikes rizes 16 print *, x1=, x1,, x2=, x2 17 else 18 d=(-d)**(1/2.) 19 x=-b/(2*a) 20 y=d/(2*a) 21 print *, Syzygeis migadikes rizes 22 print *, x1=, x, +, y, *i,, x2=, x, -, y, *i 23 endif 24 stop 25 end 26 - Η εντολή ELSE χρησιµοποιείται µόνο στην περίπτωση όπου όλες οι πιθανές εκβάσεις των προηγούµενων υποθέσεων έχει πιστοποιηθεί πως δεν ενδιαφέρουν σε αυτό το βήµα. Η εντολή IF πρέπει να ολοκληρώνεται µε την εντολή ENDIF. Επίσης, πρέπει οι συγκρινόµενες ποσότητες να περικλείονται από τις παρενθέσεις (). ρ. Γιώργος - Πέτρος Κ. Οικονόµου Παράρτηµα 3-16

Άσκηση a43.for print *, ^^^^^^^^^^i^^^^^^^^r1^^^^^^^^^^r2^^^^^^^^^^^^^^r3 1 1 0 i=i+1 2 r1=r1+i 3 r2=r2+(-1)**(i+1)*(1./i) 4 r3=r3+1./((i+k)*(i+k+2)) 5 k=k+1 6 print *, i, r1, r2, r3 7 if (i.lt.1000) then 8 goto 10 9 endif 10 print *, ^^^^^^^^^^i^^^^^^^^r1^^^^^^^^^^r2^^^^^^^^^^^^^^r3 11 print *, ln(2)=, alog(2) 12 stop 13 end 14 Ο χαρακτήρας ^ απεικονίζει επιθυµητά κενά. - Μια µεταβλητή η οποία χρησιµοποιείται και δεν έχει ορισθεί (προηγουµένως) έχει µηδενική (0) αρχική τιµή (όπως πριν την τρίτη (3), τέταρτη (4) και πέµπτη (5) γραµµές). Αν είναι λογική µεταβλητή, τότε η αρχική της τιµή είναι το.false. (ψευδές) και αν είναι τύπου χαρακτήρα το τίποτα ( ). Οι αθροιστικές ή οι πολλαπλασιαστικές σειρές των ακολουθιών επιλύονται µέσω τριών (3) βηµάτων: πρώτα ευρίσκεται ο γενικός τύπος της σειράς (µέσω διαδοχικών παρατηρήσεων των όρων του ανεπτυγµένου -από την εκφώνηση- τύπου- και της θέσης τους στη σειρά, κατόπιν καταστρώνεται η κατάλληλη εντολή επανάληψης (τύπος, µεταβλητή-δείκτης, όρια) και, τέλος, χρησιµοποιείται η εντολή του αθροιστή ή του πολλαπλασιαστή (εντός της εντολής επανάληψης). ρ. Γιώργος - Πέτρος Κ. Οικονόµου Παράρτηµα 3-17

Σηµειώσεις: ρ. Γιώργος - Πέτρος Κ. Οικονόµου Παράρτηµα 3-18

Άσκηση a51.for α) print *, Dwse a 1 read *, a 2 do i=1, 10 3 print *, a, *, i, =, a*i 4 enddo 5 stop 6 end 7 - Οποιοιδήποτε αριθµοί (πλην των λογικών) έχουν προπαίδεια. β) do i=1, 10 1 do j=1, 10 2 print *, i, *, j, =, i*j 3 enddo 4 print *, ^ 5 enddo 6 stop 7 end 8 - Ο δείκτης της εντολής επανάληψης µπορεί να χρησιµοποιηθεί τόσο για (κατα)µέτρηση όσο και σαν τελεστής για πράξεις. εν είναι σωστό να τίθεται, όµως, στα αριστερά της εντολής ανάθεσης ή να χρησιµοποιείται σαν η µεταβλητή µιας εντολής READ (αλλάζει η τιµή του) εντός της εντολής. Η τιµή του δείκτη της εντολής επανάληψης εκτός αυτής είναι πάντα µεγαλύτερη κατά όσο προστάζει η εντολή και όχι ίση µε το άνω όριο! Το αντίθετο ισχύει αν η εντολή (κατα)µετρούσε ανάποδα. ρ. Γιώργος - Πέτρος Κ. Οικονόµου Παράρτηµα 3-19

Άσκηση a52.for cf0=0.05 1 cf1=0.02 2 a0=0.75 3 b0=1.8 4 c0=2.5 5 a1=1.2 6 b1=2.3 7 c1=3.2 8 a1=a1*(1-cf1) 9 b1=b1*(1-cf1) 10 c1=c1*(1-cf1) 11 i=0 12 1 0 i=i+1 13 a0=a0*(1+cf0) 14 b0=b0*(1+cf0) 15 c0=c0*(1+cf0) 16 if ((a0.ge.a1).or.(b0.ge.b1).or.(c0.ge.c1)) then 17 print *, xronia=, i 18 print *, sf1=, a0 19 print *, sf2=, b0 20 print *, sf3=, c0 21 stop 22 else 23 goto 10 24 endif 25 stop 26 end 27 - Προκειµένου να χρησιµοποιηθεί η εντολή επανάληψης DO... ENDDO, θα πρέπει τα όρια της επανάληψης να είναι γνωστά. Στην προκειµένη περίπτωση δεν είναι γι αυτό και δεν χρησιµοποιείται. Θα µπορούσε, όµως, αν εκτιµάτο το άνω όριο (π.χ. η ανώτατη ακρίβεια των ακεραίων, ο αριθµός 32 767), µε κατάλληλη µετατροπή του κώδικα (η δέκατη τέταρτη (14) γραµµή να γίνει do i=1, 32767, οι γραµµές είκοσι τρία (23) έως και είκοσι τέσσερα (24) να διαγραφούν και να προστεθεί η εντολή enddo µετά την (τωρινή) γραµµή είκοσι πέντε (25), για τον τερµατισµό της εντολής επανάληψης. Η εντολή stop στη γραµµή είκοσι τέσσερα (24) απαιτείται ώστε το πρόγραµµα να τερµατισθεί αµέσως µε την εύρεση του πρώτου έτους κατά το οποίο το σφάλµα θα γίνει κρίσιµο. Σε αντίθετη περίπτωση το πρόγραµµα θα συνεχίζεται µέχρι την ολοκλήρωση της εντολής επανάληψης. ρ. Γιώργος - Πέτρος Κ. Οικονόµου Παράρτηµα 3-20

Άσκηση a53.for 1 0 print *, Dwse x, n 1 read (*,*) x, a 2 if ((x.eq.0).and.(a.le.0)) then 3 print *, Aoristia 4 goto 10 5 endif 6 xn=1 7 do i=1, abs(a) 8 xn=xn*abs(x) 9 enddo 10 if ((a.lt.0).and.(x.ne.0)) then 11 xn=1/xn 12 endif 13 if ((x.lt.0).and. ((n/2).ne.(n/2.))) then 14 xn=-xn 15 endif 16 print *, x=, x,, n=, n,, xn=, xn,, x**n=, x**n 17 stop 18 end 19 - Στη γραµµή τρία (3) η εντολή του ελέγχου εξασφαλίζει πως το πρόγραµµα δεν θα προσπαθήσει να επιλύσει την αοριστία της ύψωσης του µηδενός (0) σε µηδενική (0) ή σε αρνητική δύναµη. - Η εντολή επανάληψης δεν εκτελείται όταν το άνω όριο του δείκτη της είναι µικρότερο του κάτω ορίου (και το βήµα είναι θετικό). Το αντίθετο ισχύει αν η εντολή (κατα)µετρούσε ανάποδα. - Στη γραµµή ένδεκα (11) η εντολή του ελέγχου εξασφαλίζει πως το πρόγραµµα δεν θα προσπαθήσει να επιλύσει την αοριστία της εύρεσης του αντιστρόφου του µηδενός (0). Οι πράξεις σε ένα υπολογιστικό σύστηµα µέσω µιας γλώσσας προγραµµατισµού (και όχι µόνο της Fortran), χρήζουν ιδιαίτερης προσοχής καθώς µπορεί εύκολα να ξεπεράσουν (καθ)ορισµένα όρια. Τα όρια αυτά τίθενται τόσο από ο περιβάλλον της γλώσσας όσο και από άκριτες επιλογές. ρ. Γιώργος - Πέτρος Κ. Οικονόµου Παράρτηµα 3-21

Σηµειώσεις: ρ. Γιώργος - Πέτρος Κ. Οικονόµου Παράρτηµα 3-22