12.01.2015 Views

διορθωμενη επανεκδοση της 9/1/2011

διορθωμενη επανεκδοση της 9/1/2011

διορθωμενη επανεκδοση της 9/1/2011

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Σχολή Μηχανολόγων Μηχανικών ΕΜΠ<br />

Εργαστήριο Θερμικών Στροβιλομηχανών<br />

Κ.Χ. Γιαννάκογλου, Καθηγητής ΕΜΠ<br />

ΔΙΟΡΘΩΜΕΝΗ ΕΠΑΝΕΚΔΟΣΗ ΤΗΣ 9/1/<strong>2011</strong><br />

ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ<br />

Διάλεξη στα πλαίσια του Μαθήματος<br />

«Λειτουργικά Συστήματα και Γλώσσες Προγραμματισμού»<br />

(1-2ο Εξάμηνο) 1<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ


• ΔΕΔΟΜΕΝΑ<br />

• ΠΡΟΓΡΑΜΜΑ<br />

• ΑΠΟΤΕΛΕΣΜΑΤΑ<br />

Εισαγωγή στον Προγραμματισμό<br />

ΒΑΣΙΚΕΣ ΛΕΙΤΟΥΡΓΙΕΣ Η.Υ.<br />

• ΛΕΙΤΟΥΡΓΙΕΣ Ι/Ο<br />

• ΕΚΤΕΛΕΣΗ ΑΡΙΘΜΗΤΙΚΩΝ ΠΡΑΞΕΩΝ<br />

• ΛΕΙΤΟΥΡΓΙΕΣ ΣΥΓΚΡΙΣΗΣ-ΔΙΑΚΛΑΔΩΣΕΙΣ<br />

ΔΙΑΔΙΚΑΣΙΕΣ ΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΟΣ<br />

• ΔΙΑΔΟΧΗ : ΣΕΙΡΙΑΚΗ ΕΚΤΕΛΕΣΗ ΕΝΤΟΛΩΝ<br />

• ΕΠΙΛΟΓΗ : ΤΗΣ ΕΠΟΜΕΝΗΣ ΠΡΟΣ ΕΚΤΕΛΕΣΗ ΔΙΕΡΓΑΣΙΑΣ<br />

• ΕΠΑΝΑΛΗΨΗ : ΤΟΥ ΙΔΙΟΥ GROUP ΕΝΤΟΛΩΝ ΓΙΑ<br />

ΔΙΑΦΟΡΕΤΙΚΑ ΔΕΔΟΜΕΝΑ<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

2


Εισαγωγή στην FORTRAN 77<br />

• ΠΗΓΑΙΟΣ ΚΩΔΙΚΑΣ (SOURCE CODE)<br />

• FORTRAN ΜΕΤΑΦΡΑΣΤΗΣ (COMPILER)<br />

• ΑΝΤΙΚΕΙΜΕΝΙΚΟΣ ή ΕΚΤΕΛΕΣΙΜΟΣ ΚΩΔΙΚΑΣ (OBJECT CODE)<br />

• ΔΙΑΦΟΡΕΣ COMPILER ΑΠΟ INTERPRETER (π.χ. FORTRAN –<br />

BASIC)<br />

• ΠΛΕΟΝΕΚΤΗΜΑΤΑ-ΜΕΙΟΝΕΚΤΗΜΑΤΑ ΤΗΣ ΟΛΟΚΛΗΡΗΣ<br />

ΜΕΤΑΦΡΑΣΗΣ ΚΑΙ ΤΗΣ ΕΝΤΟΛΗΣ –ΠΡΟΣ –ΕΝΤΟΛΗ<br />

ΜΕΤΑΦΡΑΣΗΣ<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

3


Μετάφραση Πηγαίου Κώδικα FORTRAN 77<br />

Έστω ο πηγαίος κώδικας myprog.for<br />

(1) Πρώτος Τρόπος Μετάφρασης:<br />

f77 myprog.for<br />

Το εκτελέσιμο λέγεται υποχρεωτικά a.out. Αν, στον ίδιο κατάλογο<br />

προϋπάρχει ρχ αρχείο a.out, αντικαθίσταται με το νέο εκτελέσιμο.<br />

(2) Δεύτερος Τρόπος Μετάφρασης:<br />

f77 –o bbb myprog.for<br />

Το εκτελέσιμο λέγεται bbb ή ότι άλλο όνομα δώσουμε μετά το –o (μικρό<br />

λατινικό «όμικρον», από λέξη object). Δυνατότητα να συνυπάρχουν<br />

πολλά εκτελέσιμα, που αντιστοιχούν σε διαφορετικούς πηγαίους<br />

κώδικες, το καθένα με διαφορετικό όνομα.<br />

ΠΡΟΣΟΧΗ, ΣΕ Λ.Σ. UNIX:<br />

(1) Η f77 myprog.for είναι εντολή μετάφρασης, ενώ η F77 myprog.for είναι<br />

λάθος!<br />

(2) Η f77 myprog.for και η f77 MYPROG.FOR θα μεταφράσουν δυό<br />

διαφορετικούς πηγαίους κώδικες. Προσοχή στη γραφή και μικρούς και<br />

κεφαλαίους χαρακτήρες!<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

4


ΛΟΓΙΚΟ ΔΙΑΓΡΑΜΜΑ (FLOW CHART)<br />

• ΠΑΡΙΣΤΑΝΕΙ ΠΕΡΙΓΡΑΦΙΚΑ ΤΗΝ ΠΟΡΕΙΑ ΠΡΑΞΕΩΝ ΚΑΙ<br />

ΛΟΓΙΚΩΝ ΔΙΕΡΓΑΣΙΩΝ ΠΟΥ ΘΑ ΚΑΝΕΙ Ο Η.Υ<br />

ΒΑΣΙΚΑ ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΕΝΟΣ ΑΛΓΟΡΙΘΜΟΥ:<br />

• ΑΠΑΛΛΑΓΜΕΝΟΣ ΣΗΜΕΙΩΝ ΑΜΦΙΒΟΛΙΑΣ<br />

• ΑΠΟΤΕΛΕΣΜΑΤΙΚΟΣ, ΕΝΤΟΣ ΑΠΟΔΕΚΤΟΥ ΧΡΟΝΟΥ<br />

• ΓΕΝΙΚΟΣ<br />

• ΜΕ ΤΗ ΒΕΛΤΙΣΤΗ ΑΠΟΔΟΣΗ<br />

• ΣΥΜΒΑΤΟΣ ΜΕ ΤΙΣ ΔΥΝΑΤΟΤΗΤΕΣ ΤΟΥ Η.Υ.<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

5


ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

6


ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

7


ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

8


ΔΟΜΗ ΕΝΤΟΛΩΝ ΣΤΗ FORTRAN<br />

• ΣΤΗΛΗ 1 : ΣΧΟΛΙΟ ΑΝ ΓΡΑΦΕΙ Ο ΧΑΡΑΚΤΗΡΑΣ C<br />

• ΣΤΗΛΕΣ 1-5 : ΑΡΙΘΜΟΙ ΕΝΤΟΛΩΝ<br />

• ΣΤΗΛΗ 6 : ΣΥΜΒΟΛΟ ΣΥΝΕΧΕΙΑΣ<br />

• ΣΤΗΛΕΣ 7-72 : ΕΝΤΟΛΕΣ FORTRAN<br />

• ΣΤΗΛΕΣ 73-80 : ΚΕΝΕΣ (ΠΕΔΙΟ ΑΝΑΓΝΩΡΙΣΗΣ)<br />

• ΓΙΑΤΙ 80 ΧΑΡΑΚΤΗΡΕΣ<br />

• ΠΗΓΑΙΟΣ ΚΩΔΙΚΑΣ ΓΡΑΜΜΕΝΟΣ ΜΕ ΚΕΦΑΛΑΙΟΥΣ ή<br />

ΜΙΚΡΟΥΣ ΧΑΡΑΚΤΗΡΕΣ ΕΥΤΥΧΩΣ ΕΙΝΑΙ ΑΔΙΑΦΟΡΟ!!!!<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

9


ΣΥΝΕΧΙΣΗ ΣΕ ΕΠΟΜΕΝΗ ΓΡΑΜΜΗ –<br />

Η ΕΚΤΗ ΣΤΗΛΗ<br />

C2345678901234567890<br />

XX=A1+A2+A3+A4<br />

XX=A1+A2+<br />

1A3+A4<br />

XX=A1 +A2<br />

5 +A3+ A4<br />

XX=A1+A2+A3+A<br />

44<br />

XX=A1+A2+<br />

7+A3+A4<br />

XX=<br />

1A1+<br />

1A2+<br />

3A3+A4<br />

ΠΟΙΕΣ ΑΠΟ ΤΙΣ ΠΑΡΑΠΑΝΩ ΓΡΑΦΕΣ ΕΙΝΑΙ:<br />

1. ΣΩΣΤΕΣ<br />

2. ΛΑΘΟΣ<br />

3. «ΕΠΙΚΙΝΔΥΝΕΣ» ή «ΟΧΙ ΣΥΝΙΣΤΩΜΕΝΕΣ»<br />

;;;;<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

10


ΣΧΟΛΙΑ-ΚΕΝΕΣ ΓΡΑΜΜΕΣ<br />

C2345678901234567890<br />

C XX=A1+A2+A3+A4<br />

C XX=A1+A2+A3+A4<br />

C HOMEWORK (OPERATING SYSTEMS) 13/12/2004<br />

XX=A1+A2+A3+A4 ! ATTENTION<br />

C<br />

(κενή γραμμή)<br />

! CORRECTED 15/12/2004<br />

ΣΥΝΗΘΙΣΤΕ ΝΑ ΒΑΖΕΤΕ ΣΧΟΛΙΑ.<br />

Η ΒΟΛΙΚΗ ΧΡΗΣΗ ΤΟΥ ΘΑΥΜΑΣΤΙΚΟΥ (!).<br />

ΟΙ ΚΕΝΕΣ ΓΡΑΜΜΕΣ ΕΙΝΑΙ ΑΚΙΝΔΥΝΕΣ.<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

11


ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ FORTRAN<br />

• H ΕΝΤΟΛΗ PROGRAM : ΔΙΝΕΙ ΕΝΑ «ΕΣΩΤΕΡΙΚΟ» ΟΝΟΜΑ ΣΤΟ<br />

ΜΕΤΑΦΡΑΖΟΜΕΝΟ ΠΡΟΓΡΑΜΜΑ.<br />

ΠΡΟΑΙΡΕΤΙΚΗ. ΚΑΛΟ (ΓΙΑ ΜΑΣ!) ΕΙΝΑΙ ΝΑ ΓΡΑΦΕΤΑΙ.<br />

ΓΡΑΦΕΤΑΙ ΜΙΑ ΦΟΡΑ ΣΕ ΚΑΘΕ ΠΡΟΓΡΑΜΜΑ.<br />

ΑΚΟΛΟΥΘΕΙΤΑΙ ΑΠΟ ΕΝΑ ΟΝΟΜΑ, ΧΩΡΙΣ ΚΕΝΑ<br />

• Η ΕΝΤΟΛΗ END : ΔΕΙΧΝΕΙ ΤΟ ΤΕΛΟΣ ΤΗΣ ΜΕΤΑΦΡΑΣΗΣ<br />

ΥΠΟΧΡΕΩΤΙΚΗ.<br />

ΥΠΑΡΧΕΙ ΜΙΑ ΦΟΡΑ ΣΤΟ ΤΕΛΟΣ ΚΑΘΕ ΠΡΟΓΡΑΜΜΑΤΟΣ.<br />

... ΕΚΤΟΣ ΑΝ ΥΠΑΡΧΟΥΝ ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ ...<br />

• Η ΕΝΤΟΛΗ STOP : ΔΕΙΧΝΕΙ ΤΟ ΤΕΛΟΣ ΤΗΣ ΕΚΤΕΛΕΣΗΣ<br />

ΠΡΟΑΙΡΕΤΙΚΗ.<br />

ΧΡΗΣΙΜΟΠΟΙΕΙΤΑΙ ΟΣΕΣ ΦΟΡΕΣ ΚΑΙ ΣΕ ΟΣΑ ΣΗΜΕΙΑ<br />

ΜΕΣΑ ΣΤΟ ΠΡΟΓΡΑΜΜΑ ΕΠΙΘΥΜΟΥΜΕ ΤΕΡΜΑΤΙΣΜΟ ΤΗΣ<br />

ΕΚΤΕΛΕΣΗΣ.<br />

ΤΟ ΤΕΛΕΥΤΑΙΟ STOP ΜΠΟΡΕΙ ΝΑ ΠΑΡΑΛΕΙΠΕΤΑΙ.<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

12


ΕΝΑ ΠΡΩΤΟ ΠΡΟΓΡΑΜΜΑ FORTRAN<br />

12345678901234567890<br />

PROGRAM DIVIDE ! ATHENS 12/2004<br />

C READS TWO REAL NUMBERS & PRINTS THEIR QUOTIENT<br />

C<br />

60 READ (*,*) VAL1,VAL2<br />

IF (VAL2.NE.0.) THEN<br />

RATIO=VAL1/VAL2<br />

ELSE<br />

RATIO=0.<br />

ENDIF<br />

WRITE (*,*) ‘R = :’,RATIO<br />

GOTO 60<br />

STOP ‘Good-night’<br />

END<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

13


H ΕΝΝΟΙΑ ΤΩΝ ΜΕΤΑΒΛΗΤΩΝ<br />

(ΣΕ ΓΛΩΣΣΕΣ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ)<br />

• ΣΤΑΘΕΡΕΣ & ΜΕΤΑΒΛΗΤΕΣ<br />

• ΔΙΕΥΘΥΝΣΗ ΜΝΗΜΗΣ ΚΑΘΕ ΜΕΤΑΒΛΗΤΗΣ ΕΙΝΑΙ<br />

ΑΔΙΑΦΟΡΗ ΓΙΑ ΤΟΝ ΠΡΟΓΡΑΜΜΑΤΙΣΤΗ<br />

• ΜΟΝΟΣΗΜΑΝΤΟΣ ΟΡΙΣΜΟΣ ΜΕΤΑΒΛΗΤΗΣ (ΜΕ ΤΟ<br />

ΟΝΟΜΑ ΠΟΥ ΘΑ ΤΗΣ ΔΟΘΕΙ)<br />

• (ΑΝ ΔΕΝ ΤΟ ΔΗΛΩΣΕΤΕ ΔΙΑΦΟΡΕΤΙΚΑ) ΟΙ<br />

ΠΡΑΓΜΑΤΙΚΕΣ ΚΑΙ ΟΙ ΑΚΕΡΑΙΕΣ ΜΕΤΑΒΛΗΤΕΣ<br />

ΑΠΑΙΤΟΥΝ ΔΙΑΦΟΡΕΤΙΚΑ ΟΝΟΜΑΤΑ:<br />

ΠΡΑΓΜΑΤΙΚΕΣ ΜΕΤΑΒΛΗΤΕΣ: ΤΟ ΟΝΟΜΑ<br />

ΤΟΥΣ ΞΕΚΙΝΑ ΑΠΟ (A-H,O-Z)<br />

ΑΚΕΡΑΙΕΣ ΜΕΤΑΒΛΗΤΕΣ: ΤΟ ΟΝΟΜΑ ΤΟΥΣ<br />

ΞΕΚΙΝΑ ΑΠΟ (I,J,K,L,M,N)<br />

• ΔΙΑΚΡΙΣΗ ΤΟΥ 5. ΑΠΟ ΤΟ 5<br />

• ΤΟ «ΚΟΜΜΑ» ΚΑΙ ΤΟ «ΚΕΝΟ» ΣΤΗ FORTRAN<br />

• ΠΛΗΘΟΣ ΧΑΡΑΚΤΗΡΩΝ ΑΝΑ ΜΕΤΑΒΛΗΤΗ<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

14


ΟΝΟΜΑΤΟΛΟΓΙΑ ΜΕΤΑΒΛΗΤΩΝ<br />

• ΜΗΝ ΞΕΚΙΝΑΤΕ ΤΟ ΟΝΟΜΑ ΜΙΑΣ (ΑΚΕΡΑΙΑΣ ή<br />

ΠΡΑΓΜΑΤΙΚΗΣ) ΜΕΤΑΒΛΗΤΗΣ ΜΕ ΑΡΙΘΜΟ.<br />

• Ο ΠΡΩΤΟΣ ΧΑΡΑΚΤΗΡΑΣ ΠΡΕΠΕΙ ΝΑ ΕΙΝΑΙ ΠΑΝΤΑ<br />

ΓΡΑΜΜΑ.<br />

• ΤΟ ΟΝΟΜΑ ΜΙΑΣ ΜΕΤΑΒΛΗΤΗΣ ΔΕΝ ΜΠΟΡΕΙ ΝΑ<br />

ΠΕΡΙΕΧΕΙ ΚΕΝΟ<br />

• ΤΟ ΟΝΟΜΑ ΜΙΑΣ ΜΕΤΑΒΛΗΤΗΣ ΔΕΝ ΜΠΟΡΕΙ ΝΑ<br />

ΠΕΡΙΕΧΕΙ ΧΑΡΚΤΗΡΕΣ ΑΡΙΘΜΗΤΙΚΩΝ ΠΡΑΞΕΩΝ (+-/*) ή<br />

ΧΑΡΑΚΤΗΡΕΣ ΠΟΥ ΧΡΗΣΙΜΟΠΟΙΟΥΝΤΑΙ ΑΛΛΟΥ (()!.)<br />

• ΕΠΙΤΡΕΠΕΤΑΙ Η ΧΡΗΣΗ ΤΟΥ UNDERSCORE (_)<br />

• ΜΙΚΡΟΙ ΚΑΙ ΚΕΦΑΛΑΙΟΙ ΧΑΡΑΚΤΗΡΕΣ ΕΙΝΑΙ<br />

ΑΔΙΑΦΟΡΟΙ. ΓΡΑΦΟΝΤΑΣ AFG, Afg, afg, Afg<br />

ΑΝΑΦΕΡΟΜΑΣΤΕ ΣΕ ΜΙΑ ΚΑΙ ΜΟΝΑΔΙΚΗ ΜΕΤΑΒΛΗΤΗ.<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

15


ΟΝΟΜΑΤΟΛΟΓΙΑ ΜΕΤΑΒΛΗΤΩΝ - TESTS<br />

K124_as 1kgg*2 fgkk<br />

mkhh MKHH A_B_C<br />

A_1 _ghhe LKI1<br />

k145 as99 Khn<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

16


ΑΚΕΡΑΙΕΣ ΜΕΤΑΒΛΗΤΕΣ<br />

• ΑΝ ΤΟ ΟΝΟΜΑ ΤΗΣ ΜΕΤΑΒΛΗΤΗΣ ΑΡΧΙΖΕΙ ΑΠΟ I-J-K-L-<br />

M-N, ΑΣΧΕΤΑ ΜΕ ΤΟ ΤΙ ΑΚΟΛΟΥΘΕΙ, ΑΥΤΗ ΕΙΝΑΙ<br />

ΑΚΕΡΑΙΑ ΜΕΤΑΒΛΗΤΗ.<br />

• ΜΙΑ ΜΟΝΟ ΠΕΡΙΠΤΩΣΗ ΥΠΑΡΧΕΙ ΝΑ ΔΙΑΤΑΡΑΧΘΕΙ Ο<br />

ΚΑΝΟΝΑΣ ΑΥΤΟΣ (ΑΝ ΔΗΛΩΘΕΙ/ βλ. επόμενα μαθήματα)<br />

• ΠΑΡΑΔΕΙΓΜΑΤΑ:<br />

ko<br />

KO<br />

k123<br />

K_123<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

17


ΕΚΤΕΛΕΣΗ ΑΡΙΘΜΗΤΙΚΩΝ ΠΡΑΞΕΩΝ- TESTS<br />

Ο ΤΕΛΕΣΤΗΣ ΙΣΟΤΗΤΑΣ (=)<br />

• Χ=Α+Β<br />

• Α+Β=Χ<br />

• Α=Α+Β<br />

• K=K+1 (ΜΕΤΡΗΤΗΣ)<br />

ΕΝΤΟΛΗ ΑΠΟΔΟΣΗΣ<br />

• Χ=Υ<br />

• Χ=72.<br />

• K=8.5<br />

• Χ=K<br />

• K=Χ<br />

ΑΡΙΘΜΗΤΙΚΟΙ ΤΕΛΕΣΤΕΣ<br />

• Χ=Α+Β<br />

• Χ=Α-Β<br />

• Χ=Α/Β<br />

• Χ=Α**Β.<br />

ΠΡΟΣΟΧΗ !!!<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

18


ΕΚΤΕΛΕΣΗ ΑΡΙΘΜΗΤΙΚΩΝ ΠΡΑΞΕΩΝ<br />

12345678901234567890<br />

Χ=7.2<br />

K=X<br />

WRITE(*,*)X,K<br />

X=K<br />

WRITE(*,*)X,K<br />

X=1.2<br />

Y=.4<br />

A=X/Y<br />

WRITE(*,*)A<br />

K=X<br />

L=Y<br />

KLO=K/L<br />

WRITE(*,*)KLO<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

ΤΙ ΤΥΠΩΝΕΙ ΚΑΘΕ ΦΟΡΑ;;;<br />

ΠΡΟΣΕΞΤΕ ΟΤΑΝ<br />

ΑΝΑΜΕΙΓΝΥΟΝΤΑΙ ΠΡΑΓΜΑΤΙΚΕΣ<br />

ΚΑΙ ΑΚΕΡΑΙΕΣ ΜΕΤΑΒΛΗΤΕΣ!!!<br />

ΠΡΟΣΕΞΤΕ ΤΗ ΔΙΑΙΡΕΣΗ<br />

ΑΚΕΡΑΙΩΝ<br />

19


ΠΑΡΑΔΕΙΓΜΑΤΑ - ΕΞΟΙΚΕΙΩΣΗ<br />

12345678901234567890<br />

Χ=0.20<br />

Χ=.2000<br />

Χ=.2<br />

Χ=-.2<br />

X=.17Ε2<br />

Χ=.17Ε-2<br />

X=.17Ε02<br />

Χ=.17Ε-02<br />

X=.1+.2 2*ALFA<br />

X=0.1+0.2*ALFA<br />

17.0<br />

0.0017<br />

17.0<br />

0.0017<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

20


ΠΡΑΞΕΙΣ ΜΕ ΜΕΤΑΒΛΗΤΕΣ<br />

ΠΡΟΤΕΡΑΙΟΤΗΤΑ<br />

• ΠΑΡΕΝΘΕΣΕΙΣ<br />

• ΥΨΩΣΗ ΣΕ ΔΥΝΑΜΗ<br />

• ΠΟΛΛ/ΣΜΟΣ – ΔΙΑΙΡΕΣΗ<br />

• ΠΡΟΣΘΕΣΗ – ΑΦΑΙΡΕΣΗ<br />

Χ= 7.+ (Υ**2-13.) **3+Υ<br />

Υ<br />

ΣΥΝΘΕΤΕΣ ΠΡΑΞΕΙΣ – ΕΝΔΙΑΜΕΣΕΣ ΜΕΤΑΒΛΗΤΕΣ<br />

F=Υ**2-13<br />

2-13.<br />

Τ= F*F*F<br />

Χ=7.+T+Υ<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

21


ΜΑΘΗΜΑΤΙΚΕΣ ΣΥΝΑΡΤΗΣΕΙΣ ΒΙΒΛΙΟΘΗΚΗΣ<br />

MATHEMATICAL LIBRARY FUNCTIONS<br />

ΟΝΟΜΑ ΟΡΙΣΜΑ ΧΠΟΥ ΤΙΜΗ ΣΥΝΑΡΤΗΣΗΣ<br />

ΔΕΧΕΤΑΙ<br />

ΠΟΥ ΕΠΙΣΤΡΕΦΕΙ<br />

SQRT(X) +VE +VE<br />

ABS(X)<br />

SIN(X)<br />

COS(X)<br />

ASIN(X)<br />

ACOS(X)<br />

ATAN(X)<br />

EXP(X)<br />

ALOG(X)<br />

ALOG10(X)<br />

RAD<br />

RAD<br />

+VE<br />

+VE<br />

+VE<br />

RAD<br />

RAD<br />

RAD<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

22


ΤΟΞΑ ΤΡΙΓΩΝΟΜΕΤΡΙΚΩΝ ΑΡΙΘΜΩΝ<br />

ΠΡΟΣΟΧΗ ΣΤΟ ΣΕ ΠΟΙΑ ΤΕΡΤΑΜΗΜΟΡΙΑ ΕΠΙΣΤΡΕΦΟΥΝ<br />

ΤΙΣ ΓΩΝΙΕΣ ΠΟΥ ΥΠΟΛΟΓΙΖΟΥΝ ΟΙ ΣΥΝΑΡΤΗΣΕΙΣ<br />

ΒΙΒΛΙΟΘΗΚΗΣ ASIN, ACOS,ATAN<br />

II<br />

I<br />

III<br />

IV<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

23


ΠΑΡΑΔΕΙΓΜΑ - ΕΞΟΙΚΕΙΩΣΗ<br />

12345678901234567890<br />

PROGRAM COMPUTERAKI<br />

C THIS PROGRAM COMPUTES EXPONENTIAL(X)<br />

WRITE(*,*)’ ENTER A REAL NUMBER ‘<br />

READ(*,*)XX<br />

H=EXP(XX)<br />

WRITE(*,*)’ EXP OF’,XX,’ IS ‘,H<br />

WRITE(*,*)’ H ‘,H<br />

STOP<br />

END<br />

PROGRAM COMPUTERAKI<br />

WRITE(*,*)’ ENTER A REAL NUMBER ‘<br />

READ(*,*)XX<br />

WRITE(*,*)’ EXP OF’,XX,’ IS ‘,EXP(XX)<br />

END<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

24


ΠΑΡΑΔΕΙΓΜΑ – ΤΡΙΓΩΝΟΜΕΤΡΙΑ<br />

12345678901234567890<br />

PROGRAM TRIG<br />

C YOU MUST DEFINE PI<br />

PI=4.*ATAN(1.)<br />

WRITE(*,*)’ ENTER AN ANGLE IN DEG. ‘<br />

READ(*,*)ALFA*)ALFA<br />

ALFA=ALFA/180.*PI<br />

CA=COS(ALFA)<br />

SA=SIN(ALFA)<br />

WRITE(*,*)CA**2+SA**2<br />

END<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

25


ΛΟΓΙΚΕΣ ΠΑΡΑΣΤΑΣΕΙΣ<br />

• ΠΟΙΑ ΕΙΝΑΙ Η ΕΠΟΜΕΝΗ ΕΝΤΟΛΗ ΠΟΥ ΘΑ<br />

ΕΚΤΕΛΕΣΤΕΙ;;;;;<br />

• ΧΡΗΣΗ ΤΟΥ ΛΟΓΙΚΟΥ IF:<br />

ΑΡΙΘΜΗΤΙΚΗ ΠΑΡΑΣΤΑΣΗ = ΑΠ<br />

ΤΕΛΕΣΤΗΣ ΣΥΣΧΕΤΙΣΗΣ = ΤΣ<br />

ΠΑΡΕΝΘΕΣΗ ΚΑΙ ΤΕΛΕΙΕΣ:<br />

IF (ΑΠ1.ΤΣ.ΑΠ2) ΜΙΑ ΜΟΝΟ ΕΝΤΟΛΗ ΓΙΑ ΕΚΤΕΛΕΣΗ<br />

ΟΠΟΥ: ΤΣ = .EQ. , .NE. , .GT. , .LT. , .GE. , .LE.<br />

ΠΑΡΑΔΕΙΓΜΑΤΑ:<br />

IF(KLO.EQ.7) WRITE(*,*)’ *)’ HELLO ‘<br />

IF(KLO.EQ.MMM) NIK=KLO<br />

IF(XX.GT.YY) ALFA=XX-YY<br />

IF(XX+YY.LE.AA+BB/2.) MMM=1<br />

IF(SQRT(XX+YY).LT..5) STOP<br />

IF(23..LT..5*X) X=SQRT(U+ALOG(Y))<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

26


ΠΑΡΑΔΕΙΓΜΑ – ΕNA BHMA ΕΜΠΡΟΣ<br />

12345678901234567890<br />

PROGRAM COMPUTERAKI<br />

C THIS PROGRAM COMPUTES LOG10(X)<br />

WRITE(*,*)’ ENTER A REAL NUMBER ‘<br />

READ(*,*)XX<br />

IF(XX.GT.0.) H=ALOG10(XX)<br />

WRITE(*,*)’ LOG10 OF’,XX,’ IS ‘,H<br />

STOP<br />

END<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

27


ΛΟΓΙΚΕΣ ΠΑΡΑΣΤΑΣΕΙΣ<br />

• Η ΣΥΝΤΑΞΗ (IF-THEN-ENDIF)<br />

IF (ΑΠ1.ΤΣ.ΑΠ2) THEN<br />

ΜΙΑ ή ΠΕΡΙΣΣΟΤΕΡΕΣ ΕΝΤΟΛΕΣ ΓΙΑ ΕΚΤΕΛΕΣΗ<br />

ENDIF<br />

• Η ΣΥΝΤΑΞΗ (IF-THEN-ELSE-ENDIF)<br />

IF (ΑΠ1.ΤΣ.ΑΠ2) THEN<br />

ΜΙΑ ή ΠΕΡΙΣΣΟΤΕΡΕΣ ΕΝΤΟΛΕΣ (ΣΕΝΑΡΙΟ 1)<br />

ELSE<br />

ΜΙΑ ή ΠΕΡΙΣΣΟΤΕΡΕΣ ΕΝΤΟΛΕΣ (ΣΕΝΑΡΙΟ 2)<br />

ENDIF<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

28


ΠΑΡΑΔΕΙΓΜΑ – ΕNA BHMA ΕΜΠΡΟΣ<br />

12345678901234567890<br />

PROGRAM COMPUTERAKI<br />

C THIS PROGRAM COMPUTES LOG10(X)<br />

WRITE(*,*)’ ENTER A REAL NUMBER ‘<br />

READ(*,*)XX<br />

IF(XX.GT.0.) ΤΗΕΝ<br />

H=ALOG10(XX)<br />

WRITE(*,*)’ EXP OF’,XX,’ ’ IS ‘,H<br />

ENDIF<br />

STOP<br />

END<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

29


ΠΑΡΑΔΕΙΓΜΑ – ΕNA BHMA ΕΜΠΡΟΣ<br />

12345678901234567890<br />

PROGRAM COMPUTERAKI<br />

C THIS PROGRAM COMPUTES LOG10(X)<br />

90 WRITE(*,*)’ ENTER A REAL NUMBER ‘<br />

READ(*,*)XX<br />

IF(XX.GT.0.) ΤΗΕΝ<br />

H=ALOG10(XX)<br />

WRITE(*,*)’ LOG10 OF’,XX,’ ’ IS ‘,H<br />

ELSE<br />

WRITE(* ,*)’ IMPOSSIBLE LOG(-VE) ‘<br />

ENDIF<br />

GOTO 90<br />

STOP<br />

END<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

30


ΠΑΡΑΔΕΙΓΜΑ – ΜΙΑ ΔΙΕΥΚΡΙΝΙΣΗ<br />

12345678901234567890<br />

PROGRAM COMPUTERAKI<br />

C THIS PROGRAM COMPUTES LOG10(X)<br />

90 WRITE(*,*)’ ENTER A REAL NUMBER ‘<br />

READ(*,*)XX<br />

IF(XX.LT.0.) ΤΗΕΝ<br />

WRITE(*,*)’ IMPOSSIBLE LOG(-VE) ‘<br />

XX=-XX ! XX CHANGES SIGN<br />

ELSE<br />

H=ALOG10(XX)<br />

WRITE(*,*)’ EXP OF’,XX,’ IS ‘,H<br />

ENDIF<br />

ΤΙ ΘΑ ΤΥΠΩΣΕΙ;;;<br />

GOTO 90<br />

ΑΝ ΕΚΤΕΛΕΣΕΙ ΤΟ ΕΝΑ ΣΕΝΑΡΙΟ<br />

STOP<br />

ΕΝΤΟΛΩΝ ΑΠΟΚΛΕΙΕΤΑΙ ΝΑ<br />

END<br />

ΕΚΤΕΛΕΣΕΙ ΚΑΙ ΤΟ ΑΛΛΟ<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

31


ΛΟΓΙΚΟΙ ΤΕΛΕΣΤΕΣ AND ΚΑΙ OR<br />

(Α) ΛΟΓΙΚΗ ΛΟΓΙΚΟΙ (Β) ΛΟΓΙΚΗ ΑΠΟΤΕΛΕΣΜΑ<br />

ΠΑΡΑΣΤΑΣΗ ΤΕΛΕΣΤΕΣ ΠΑΡΑΣΤΑΣΗ<br />

TRUE .AND. TRUE TRUE<br />

TRUE .AND. FALSE FALSE<br />

FALSE .AND. TRUE FALSE<br />

FALSE .AND. FALSE FALSE<br />

TRUE .OR. TRUE TRUE<br />

TRUE .OR. FALSE TRUE<br />

FALSE .OR. TRUE TRUE<br />

FALSE .OR. FALSE FALSE<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

32


ΠΑΡΑΔΕΙΓΜΑ – AND<br />

12345678901234567890<br />

PROGRAM LEARN_AND<br />

WRITE(*,*)’ ENTER TWO REAL NUMBERS ‘<br />

READ(*,*)XX,YY<br />

IF(XX.GT.0..AND.YY.GT.0.) 0 ΤΗΕΝ<br />

SUM=ALOG(XX)+ALOG(YY)<br />

WRITE(*,*) SUM<br />

ELSE<br />

WRITE(*,*)’ IMPOSSIBLE LOG(-VE) ‘<br />

ENDIF<br />

STOP<br />

END<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

33


ΠΑΡΑΔΕΙΓΜΑ – OR<br />

12345678901234567890<br />

PROGRAM LEARN_AND<br />

WRITE(*,*)’ ENTER TWO REAL NUMBERS ‘<br />

READ(*,*)XX,YY<br />

IF((XX.GT.0..AND.YY.GT.0.).OR.<br />

0 1 (XX.LT.0..AND.YY.LT.0.) ) ΤΗΕΝ<br />

SUM=ALOG(XX*YY)<br />

WRITE(*,*) SUM<br />

ELSE<br />

WRITE(*,*)’ IMPOSSIBLE LOG(-VE) ‘<br />

ENDIF<br />

STOP<br />

END<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

34


ΔΙΑΧΕΙΡΙΣΗ ΑΡΧΕΙΩΝ<br />

OPEN :ΑΝΟΙΓΩ ΓΙΑ ΧΡΗΣΗ ΕΝΑ<br />

ΑΡΧΕΙΟ ΚΑΙ ΤΟ ΤΑΥΤΙΖΩ ΜΕ<br />

ΜΙΑ UNIT<br />

READ από ή WRITE στο αρχείο<br />

READ από ή WRITE στο αρχείο<br />

READ από ή WRITE στο αρχείο<br />

CLOSE :ΚΛΕΙΝΩ ΤΟ ΑΡΧΕΙΟ<br />

ΚΑΙ «ΕΛΕΥΘΕΡΩΝΩ» ΤΟ UNIT<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

35


ΔΙΑΧΕΙΡΙΣΗ ΑΡΧΕΙΩΝ – H ENTOΛH OPEN<br />

ΠΑΡΑΔΕΙΓΜΑΤΑ ΕΝΤΟΛΗΣ OPEN:<br />

OPEN(UNIT=1,FILE=’MYDATA’,STATUS=’NEW’,ACCESS=’SEQUE<br />

, , NTIAL’)<br />

ΟΡΙΣΜΑΤΑ ΕΝΤΟΛΗΣ OPEN:<br />

UNIT=1 ως 99 (αριθμός μονάδας)<br />

FILE=’ένα όνομα αρχείου’<br />

STATUS=’OLD OLD, NEW, SCRATCH, UNKNOWN’<br />

ACCESS=’SEQUENTIAL, DIRECT’<br />

FORM=’FORMATTED, UNFORMATTED’<br />

ERR=1 ως 99999 (αριθμός θ ό εντολής)<br />

)<br />

ΠΡΑΚΤΙΚΑ ΓΙΑ ΤΗΝ OPEN:<br />

OPEN(UNIT=1,FILE=’RESFILE’)<br />

’)<br />

OPEN(1,FILE=’RESFILE’)<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

36


ΔΙΑΧΕΙΡΙΣΗ ΑΡΧΕΙΩΝ – H ENTOΛH CLOSE<br />

ΠΑΡΑΔΕΙΓΜΑΤΑ ΕΝΤΟΛΗΣ CLOSE:<br />

CLOSE(UNIT=1,STATUS=’KEEP’)<br />

ΟΡΙΣΜΑΤΑ ΕΝΤΟΛΗΣ CLOSE:<br />

UNIT=όπως και στην OPEN<br />

STATUS=’KEEP(όχι για scratch), DELETE’<br />

ERR= όπως και στην OPEN<br />

ΠΡΑΚΤΙΚΑ ΓΙΑ ΤΗΝ OPEN:<br />

CLOSE(1)<br />

Η ΕΝΤΟΛΗ REWIND<br />

REWIND(1)<br />

… αρκεί να είναι ήδη ανοικτή η μονάδα 1<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

37


ΓΡΑΨΙΜΟ ΣΕ ΑΡΧΕΙΟ<br />

12345678901234567890<br />

PROGRAM LEARN_HOW_TO_WRITE<br />

WRITE(*,*)’ ENTER TWO REAL NUMBERS ‘<br />

READ(*,*)XX,YY<br />

OPEN(1,FILE=‘RES.DAT’)<br />

WRITE(1,*)’ NUMBER (1) =‘,XX<br />

WRITE(1,*)’ NUMBER (2) =‘,YY<br />

SUM=XX+YY<br />

WRITE(1,*)’ SUM = ‘,SUM<br />

WRITE(1,*)XX-YY<br />

CLOSE(1)<br />

END<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

NUMBER (1) = 6.000000<br />

NUMBER (2) = 4.000000<br />

SUM = 10.000000<br />

2.000000<br />

38


ΔΙΑΒΑΣΜΑ ΑΠΟ ΑΡΧΕΙΟ<br />

12345678901234567890<br />

PROGRAM LEARN_HOW_TO_READ<br />

OPEN(1,FILE=‘MY.DAT’)<br />

READ(1,*)X1,X2<br />

READ(1,*)Y1,Y2,Y3,Y4<br />

SUMX=X1+X2<br />

SUMY=Y1+Y2+Y3+Y4<br />

WRITE(*,*)SUMX<br />

WRITE(*,*)SUMY<br />

CLOSE(1)<br />

END<br />

100 1.00 200 2.00<br />

3.00 -7. 10.<br />

0.5<br />

-.5<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

39


ΔΙΑΒΑΣΜΑ ΑΠΟ ΑΡΧΕΙΟ (2)<br />

12345678901234567890<br />

PROGRAM LEARN_HOW_TO_READ<br />

OPEN(1,FILE=‘MY.DAT’)<br />

READ(1,*)X1,X2<br />

REWIND(1)<br />

READ(1,*)Y1,Y2,Y3,Y4<br />

SUMX=X1+X2<br />

SUMY=Y1+Y2+Y3+Y4<br />

WRITE(*,*)SUMX<br />

WRITE(*,*)SUMY<br />

CLOSE(1)<br />

END<br />

100 1.00 200 2.00<br />

3.00 -7. 10.<br />

0.5<br />

-.5<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

40


ΔΙΑΒΑΣΜΑ – ΓΡΑΨΙΜΟ ΣΕ ΑΡΧΕΙΟ<br />

12345678901234567890<br />

PROGRAM READ_AND_WRITE<br />

OPEN(1,FILE=‘MY.DAT’)<br />

100 1.00 200 2.00<br />

READ(1,*)X1,X2<br />

3.00 -7. 10.<br />

READ(1,*)Y1,Y2<br />

0.5<br />

-.5<br />

CLOSE(1)<br />

OPEN(1,FILE=‘MY.RES’)<br />

WRITE(1,*)X1+X2<br />

WRITE(1,*)’HELLO’<br />

3.000000<br />

WRITE(*,*)’HELLO’<br />

HELLO<br />

CLOSE(1)<br />

END<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

41


ΑΣΚΗΣΗ – ΛΥΣΗ ΔΕΥΤΕΡΟΒΑΘΜΙΑΣ<br />

12345678901234567890<br />

PROGRAM SECOND_ORDER<br />

WRITE(*,*)’ ENTER A,B & C COEFFICIENTS’<br />

READ(*,*)A,B,C<br />

DIAKR=B**2-4.*A*C<br />

IF(DIAKR.LT.0.) STOP ’ NEGATIVE DIAKR ‘<br />

DIAKR=SQRT(DIAKR)<br />

IF(ABS(A).LT.1.e-6) STOP ‘ZERO PARON’<br />

SOL1=(-B+DIAKR)*.5/A<br />

SOL2=(-B-DIAKR)*.5/A<br />

WRITE(* ,*)’ FIRST ROOT<br />

= ’,SOL1<br />

WRITE(*,*)’ SECOND ROOT = ’,SOL2<br />

END<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

42


I/O ΧΩΡΙΣ ΔΙΑΜΟΡΦΩΣΗ (FORMAT)<br />

12345678901234567890<br />

READ(*,*)A,B,C<br />

PRINT *,A,B,C<br />

WRITE(*,*)A,B,C<br />

READ *,A,B,C<br />

, ,C<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

43


I/O ΜΕ ΔΙΑΜΟΡΦΩΣΗ (FORMAT)<br />

12345678901234567890<br />

READ(*,10)A,B,C<br />

PRINT 10,A,B,C<br />

WRITE(*,10)A,B,C<br />

READ 10,A,B,C<br />

, ,C<br />

10 FORMAT(τρόπο διαβάσματος ή γραφής)<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

44


ΔΙΑΜΟΡΦΩΣΗ ΓΙΑ ΑΚΕΡΑΙΟΥΣ<br />

12345678901234567890<br />

WRITE(*,4)KT1,KT2,KT3<br />

4 FORMAT(3I5)<br />

5 FORMAT(I5,2X,I4,1X,I2)<br />

6 FORMAT(‘ VALUES ARE’,2X,3I2)<br />

7 FORMAT(I5,/,I5,/,I5)<br />

5 / 5)<br />

V A<br />

1<br />

1<br />

L<br />

1<br />

2<br />

3<br />

0<br />

0<br />

U<br />

0<br />

0<br />

0<br />

E S<br />

2 0 3 0<br />

2<br />

0<br />

3 0<br />

A R E 1 0 2 0 3 0<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

45


ΔΙΑΜΟΡΦΩΣΗ ΓΙΑ ΠΡΑΓΜΑΤΙΚΟΥΣ<br />

12345678901234567890<br />

WRITE(*,5)ΑΑ1,ΑΑ2,ΑΑ3<br />

PRINT 5,ΑΑ1,ΑΑ2,ΑΑ3<br />

, ,<br />

5 FORMAT(3F10.5)<br />

6 FORMAT(F10.5,3X,F10.4,4X,F12.5)<br />

7 FORMAT(‘ VALUES:’,3(2X,F12.5))<br />

8 FORMAT(6HVALUES,3(2X,F12.5))<br />

9 FORMAT(‘ VALUES:’,3(2X,E12.5))<br />

(3Χ,F10.6)<br />

x x x - 3 . 0 6 0 0 0 0<br />

3 κενά<br />

6-δεκαδικό<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

10 θέσεις<br />

46


ΑΝ ΔΕΝ ΕΠΑΡΚΕΙ ΣΕ ΠΛΗΘΟΣ ΤΟ FORMAT<br />

12345678901234567890<br />

AA1=10.<br />

AA2=200.<br />

AA3=AA1+AA2<br />

AA4=0.5<br />

WRITE(*,5)ΑΑ1,ΑΑ2,ΑΑ3,AA4<br />

5 FORMAT(3(1x,F7.3))<br />

1<br />

■<br />

2<br />

●<br />

3<br />

1<br />

4<br />

0<br />

5<br />

.<br />

6<br />

0<br />

7<br />

0<br />

8<br />

0<br />

■ ● ● ● . 5 0 0<br />

9<br />

■<br />

0<br />

2<br />

1<br />

0<br />

2<br />

0<br />

3<br />

.<br />

4<br />

0<br />

5<br />

0<br />

6<br />

0<br />

7<br />

■<br />

8<br />

2<br />

9<br />

1<br />

0<br />

0<br />

1<br />

.<br />

2<br />

0<br />

3<br />

0<br />

4<br />

0<br />

όπου ■=κενό λόγω του 1Χ και ●=κενό που αφήνει το F7.3<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

47


ΑΝ ΔΕΝ ΕΠΑΡΚΕΙ ΣΕ ΜΗΚΟΣ ΧΑΡΑΚΤΗΡΩΝ<br />

12345678901234567890<br />

AA1=10.<br />

AA2=20000.<br />

AA3=AA1+AA2<br />

AA4=0.0000005<br />

WRITE(*,5)ΑΑ1,ΑΑ2,ΑΑ3,AA4<br />

5 FORMAT(3(1x,F7.3))<br />

1<br />

■<br />

2<br />

●<br />

3<br />

1<br />

4<br />

0<br />

5<br />

.<br />

6<br />

0<br />

7<br />

0<br />

8<br />

0<br />

■ ● ● ● . 0 0 0<br />

9<br />

■<br />

0<br />

*<br />

1<br />

*<br />

2<br />

*<br />

3<br />

*<br />

4<br />

*<br />

5<br />

*<br />

6<br />

*<br />

7<br />

■<br />

8<br />

*<br />

9<br />

*<br />

0<br />

*<br />

1<br />

*<br />

2<br />

*<br />

3<br />

*<br />

4<br />

*<br />

όπου ■=κενό λόγω του 1Χ και ●=κενό που αφήνει το F7.3<br />

ενώ τα *=φαίνονται στην οθόνη ή το αρχείο<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

48


ΕΚΘΕΤΙΚΟ FORMAT<br />

12345678901234567890<br />

AA1=1.E5<br />

AA2=.5*AA1<br />

WRITE(*,5)ΑΑ1,ΑΑ2<br />

5 FORMAT(1x,E10.3)<br />

AA1=1010 5<br />

1<br />

■<br />

2<br />

●<br />

3<br />

0<br />

4<br />

.<br />

5<br />

1<br />

6<br />

0<br />

7<br />

0<br />

8<br />

E<br />

9<br />

+<br />

0<br />

0<br />

1<br />

6<br />

■ ● 0 . 5 0 0 E + 0 5<br />

όπου ■=κενό λόγω του 1Χ και ●=κενό που αφήνει το E10.3<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

49


ΕΚΘΕΤΙΚΟ FORMAT<br />

12345678901234567890<br />

AA1=1.E-5<br />

AA2=.5*AA1<br />

WRITE(*,5)ΑΑ1,ΑΑ2<br />

5 FORMAT(1x,E10.3)<br />

AA1=1010 -5<br />

1<br />

■<br />

2<br />

●<br />

3<br />

0<br />

4<br />

.<br />

5<br />

1<br />

6<br />

0<br />

7<br />

0<br />

8<br />

E<br />

9<br />

-<br />

0<br />

0<br />

1<br />

6<br />

■ ● 0 . 5 0 0 E - 0 5<br />

όπου ■=κενό λόγω του 1Χ και ●=κενό που αφήνει το E10.3<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

50


ΑΛΛΟΣ ΤΡΟΠΟΣ ΔΙΑΜΟΡΦΩΣΗΣ<br />

12345678901234567890<br />

AA1=1.E-5<br />

AA2=.5*AA1<br />

WRITE(*,’(1x,E10.3)’)ΑΑ1,ΑΑ2<br />

1<br />

■<br />

2<br />

●<br />

3<br />

0<br />

4<br />

.<br />

5<br />

1<br />

6<br />

0<br />

7<br />

0<br />

8<br />

E<br />

9<br />

-<br />

0<br />

0<br />

1<br />

4<br />

■ ● 0 . 5 0 0 E - 0 5<br />

όπου ■=κενό λόγω του 1Χ και ●=κενό που αφήνει το E10.3<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

51


ΜΕΤΑΒΛΗΤΕΣ ΧΑΡΑΚΤΗΡΩΝ (CHARACTER)<br />

ΚΑΤΗΓΟΡΙΕΣ ΜΕΤΑΒΛΗΤΩΝ:<br />

•ΑΡΙΘΜΗΤΙΚΕΣ ΜΕΤΑΒΛΗΤΕΣ<br />

•ΜΕΤΑΒΛΗΤΕΣ ΧΑΡΑΚΤΗΡΩΝ<br />

•ΜΕΤΑΒΛΗΤΕΣ ΜΕ ΔΕΙΚΤΗ<br />

•ΛΟΓΙΚΕΣ ΜΕΤΑΒΛΗΤΕΣ<br />

ΜΕΤΑΒΛΗΤΕΣ ΧΑΡΑΚΤΗΡΩΝ – Η ΔΗΛΩΤΙΚΗ ΕΝΤΟΛΗ:<br />

CHARACTER A*6, B*8<br />

CHARACTER*10 A1,A2,A3<br />

A = ‘SALARY’<br />

B = ‘INTEREST’<br />

READ(*,’(A)’)A,B<br />

(ΕΝΑΛΛΑΚΤΙΚΟΣ) ΣΥΜΒΟΛΙΣΜΟΣ HOLLERITH:<br />

CHARACTER A*6, B*8<br />

A = 6HSALARY<br />

B = 8HINTEREST<br />

ΆN:<br />

CHARACTER A*8<br />

A = ‘SALARY’<br />

TOTE:<br />

A = ‘SALARY□□’<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

52


ΠΡΑΞΕΙΣ ΜΕ ΜΕΤΑΒΛΗΤΕΣ ΧΑΡΑΚΤΗΡΩΝ<br />

A = B<br />

ΤΙ ΓΙΝΕΤΑΙ ΑΝ:<br />

# ΧΑΡ (Β) = # ΧΑΡ (Α)<br />

# ΧΑΡ (Β) > # ΧΑΡ (Α)<br />

# ΧΑΡ (Β) < # ΧΑΡ (Α)<br />

( TA ΕΠΙΠΛΕΟΝ ΚΕΝΑ !!! )<br />

ΠΑΡΑΔΕΙΓΜΑ:<br />

CHARACTER*3 A,B<br />

CHARACTER*5 C,D<br />

A=’DAY’<br />

C=’MONTH’<br />

B=A<br />

A=C<br />

D=B<br />

ΑΡΑ:<br />

Α=’ΜΟΝ’<br />

Β=’DAY’<br />

C=’MONTH’<br />

D=’DAY DAY □□’<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

53


ΜΙΑ ΒΑΣΙΚΗ ΧΡΗΣΗ ΜΕΤ/ΩΝ ΧΑΡΑΚΤΗΡΩΝ<br />

12345678901234567890<br />

PROGRAM TEST_KKOWN<br />

OPEN(1,FILE=‘MY.DAT’)<br />

READ(1,*)X1,X2<br />

CLOSE(1)<br />

PROGRAM TEST_ON_CHARACTERS<br />

CHARACTER C FNAME*10<br />

WRITE(*,*)’ENTER FILE NAME (MAX. 10 CHARS)’<br />

READ(*,’(A)’)FNAME<br />

OPEN(1,FILE=FNAME)<br />

READ(1,*)X1,X2<br />

CLOSE(1)<br />

ΠΡΟΣΕΞΤΕ ΠΟΤΕ &<br />

ΓΙΑΤΙ ΒΑΖΟΥΜΕ<br />

ΕΙΣΑΓΩΓΙΚΑ<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

54


ΠΡΟΧΩΡΗΜΕΝΗ ΧΡΗΣΗ ΜΕΤ/ΩΝ ΧΑΡΑΚΤΗΡΩΝ<br />

12345678901234567890<br />

PROGRAM GIO<br />

CHARACTER A*8,FNAME*16<br />

NEO: ΛΑΜΒΑΝΩ<br />

A='USERNAME'<br />

ΤΜΗΜΑ Μ/ΤΗΣ Χ.<br />

FNAME=A(1:4)<br />

WRITE(*,*)' ENTER AN INTEGER ' ΝΕΟ: Η ΣΥΝΑΡΤΗΣΗ<br />

READ(*,*)KI<br />

MOD<br />

KI=MOD(KI,10)<br />

WRITE(FNAME(5:5),'(I1)')KI<br />

WRITE(*,*)FNAME<br />

OPEN(1,FILE=FNAME)<br />

END<br />

NEO: ΔΙΝΩ<br />

ΧΑΡΑΚΤΗΡΕΣ ΣΕ<br />

ΤΜΗΜΑ Μ/ΤΗΣ Χ.<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

55


ΑΚΡΙΒΕΙΑ ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΩΝ<br />

ΑΠΛΗ ΑΚΡΙΒΕΙΑ:<br />

ΑΚΕΡΑΙΟΙ : ΩΣ 10 ΣΨ (ΣΗΜΑΝΤΙΚΑ ΨΗΦΙΑ)<br />

ΠΡΑΓΜΑΤΙΚΟΙ : ΩΣ 7 ΣΨ<br />

( 532456212.45►532456200.00 )<br />

ΔΙΠΛΗ ΑΚΡΙΒΕΙΑ:<br />

ΩΣ 16 ΣΨ<br />

-1.7976…x10308►-2.2250…x10-308<br />

2.2250…x10-308►1.7976…x10308<br />

ΑΝΑΓΚΗ ΥΠΟΛΟΓΙΣΜΩΝ ΔΙΠΛΗΣ ΑΚΡΙΒΕΙΑΣ<br />

INTEGER ► INTEGER*4<br />

DOUBLE PRECISION A,B<br />

REAL*4 A,B<br />

REAL*8 A,B<br />

IMPLICIT REAL (K-M)<br />

IMPLICIT INTEGER (A), (D-F)<br />

IMPLICIT REAL*8 (W-Z)<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

ΑΡΚΕΙ ΝΑ<br />

ΔΗΛΩΝΟΝΤΑΙ !!<br />

ΔΗΛΩΣΗ ΜΕ<br />

IMPLICIT<br />

56


ΞΕΦΕΥΓΟΝΤΑΣ ΑΠΟ ΤΟΝ ΚΑΝΟΝΑ ΤΩΝ<br />

ΟΝΟΜΑΤΩΝ ΜΕΣΩ ΔΗΛΩΣΕΩΝ<br />

12345678901234567890<br />

PROGRAM WHATEVER_NAME<br />

REAL K*4,L*4,M*8<br />

INTEGER Y*4<br />

K=1.54<br />

L=2.38<br />

M=K/L<br />

Y=L<br />

WRITE(*,*)K,L,M,Y<br />

END<br />

1.540000 2.380000 6.470587763878265E-001 001 2<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

57


ΑΣΚΗΣΗ – ΛΥΣΗ ΔΕΥΤΕΡΟΒΑΘΜΙΑΣ (DP)<br />

12345678901234567890<br />

PROGRAM SECOND_ORDER<br />

IMPLICIT DOUBLE PRECISION (A-H,O-Z)<br />

WRITE(*,*)’ ENTER A,B & C COEFFICIENTS’<br />

READ(*,*)A,B,C<br />

DIAKR=B**2-4.D0*A*C<br />

IF(DIAKR.LT.0.D0) STOP ’ NEGATIVE DIAKR ‘<br />

DIAKR=DSQRT(DIAKR)<br />

SOL1=(-B+DIAKR)*.5D0/A<br />

SOL2=(-B-DIAKR)*.5D0/A<br />

WRITE(* ,’(2(2X,D12.6) 6)’)SOL1,SOL2SOL2<br />

END<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

58


ΠΑΡΑΔΕΙΓΜΑ (π)<br />

12345678901234567890<br />

PROGRAM PRINT_PI<br />

PI=4.*ATAN(1.)<br />

WRITE(*,*)PI<br />

END 3.141593<br />

PROGRAM PRINT_PI<br />

IMPLICIT DOUBLE PRECISION (A-H,O-Z)<br />

PI=4.D0*DATAN(1.D0)<br />

D0)<br />

WRITE(*,*)PI<br />

END<br />

3.141592653589793<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

59


ΜΕΤΑΤΡΟΠΗ ΑΚΕΡΑΙΩΝ-ΠΡΑΓΜΑΤΙΚΩΝ<br />

ΑΚΕΡΑΙΟΣ → ΠΡΑΓΜΑΤΙΚΟΣ:<br />

X=KOUNT<br />

ALFA=DFLOAT(KOUNT)<br />

ALFA=DFLOAT(KOUNT+LO)<br />

ΠΡΑΓΜΑΤΙΚΟΣ → ΑΚΕΡΑΙΟΣ:<br />

BETA=-23.8<br />

K1=BETA<br />

L1=INT(BETA)<br />

M1=IFIX(BETA)<br />

WRITE(*,*)K1,L1,M1<br />

BETA=23.8<br />

K1=BETA<br />

L1=INT(BETA)<br />

M1=IFIX(BETA)<br />

-23 -23 -23<br />

WRITE(*,*)K1,L1,M1 23 23 23<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

60


Η ΕΝΤΟΛΗ GOTO<br />

12345678901234567890<br />

PROGRAM LEARN_GΟTO<br />

IMPLICIT DOUBLE PRECISION (A-H,O-Z)<br />

10 WRITE(*,*)’ ENTER A,B,K ‘<br />

READ(*,*)A,B,K<br />

NEO <br />

IF (K.EQ.1) THEN<br />

RES=A+B<br />

ELSEIF (K.EQ.2) THEN<br />

RES=A*B<br />

ELSE<br />

WRITE(* ,*)’ ERROR !!! ’<br />

ENDIF<br />

WRITE(*,*)RES<br />

GOTO 10<br />

END<br />

►ΑΡΙΘΜΟΣ ΕΝΤΟΛΗΣ ΣΤΙΣ 5 ΠΡΩΤΕΣ ΣΤΗΛΕΣ (1-99999)<br />

► ΜΟΝΑΔΙΚΟΣ ΑΡΙΘΜΟΣ !!!!!<br />

►ΑΤΑΚΤΗ ΑΡΙΘΜΗΣΗ !!!!!<br />

► GOTO: ΠΑΜΕ ΜΟΝΟ ΣΕ ΕΚΤΕΛΕΣΙΜΕΣ ΕΝΤΟΛΕΣ<br />

►ΑΝ ΕΙΝΑΙ ΔΥΝΑΤΟ, ΝΑ ΑΠΟΦΕΥΓΕΤΑΙ !!!!!!<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

61


ΕΠΑΝΑΛΗΨΕΙΣ ΕΝΤΟΛΩΝ (LOOPS)<br />

12345678901234567890<br />

DO 20 K=1,10<br />

READ(*,*)A,B*)A WRITE(*,*)’SUM= ‘,A+B<br />

20 CONTINUE<br />

K=0<br />

20 K=K+1<br />

READ(*,*)A,B<br />

,<br />

WRITE(*,*)’SUM= ‘,A+B<br />

IF(K.LT.10) GOTO 20<br />

K=1<br />

20 READ(*,*)A,B<br />

WRITE(*,*)’SUM= ‘,A+B<br />

K=K+1K+1<br />

IF(K.LE.10) GOTO 20<br />

αντί του:<br />

ή αντί του:<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

62


Κ = ΜΕΤΡΗΤΗΣ<br />

ΒΡΟΧΟΥ<br />

ΕΠΑΝΑΛΗΨΕΙΣ ΕΝΤΟΛΩΝ (LOOPS)<br />

Μ1 = ΑΡΧΙΚΗ ΤΙΜΗ<br />

Μ2 = ΤΕΛΙΚΗ ΤΙΜΗ<br />

Ν<br />

DO Ν K=Μ1,Μ2,Μ3<br />

……………..<br />

CONTINUE<br />

Μ3 = ΠΡΟΑΙΡΕΤΙΚΟ,<br />

ΘΕΤΙΚΟ ή ΑΡΝΗΤΙΚΟ<br />

ΒΗΜΑ<br />

Η ΜΗ-ΕΚΤΕΛΕΣΙΜΗ<br />

ΕΝΤΟΛΗ CONTINUE<br />

1ος ΚΥΚΛΟΣ:<br />

K=M1<br />

2ος ΚΥΚΛΟΣ: k=M1+M3<br />

3ος ΚΥΚΛΟΣ: k=M1+2*M3<br />

Μ1,Μ2,Μ3=ΣΤΑΘΕΡΕΣ, ΜΕΤΑΒΛΗΤΕΣ ή ΑΛΓ. ΠΑΡΑΣΤΑΣΕΙΣ<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

63


ΕΠΑΝΑΛΗΨΕΙΣ ΕΝΤΟΛΩΝ (ΠΑΡΑΔΕΙΓΜΑΤΑ)<br />

DO 10 K=1,1010 DO 10 K=10,1, 1 -1<br />

WRITE(*,*)K<br />

WRITE(*,*)K<br />

10 CONTINUE<br />

10 CONTINUE<br />

DO 10 K=1,10,1<br />

10,9,8,7,6,5,4,3,2,1<br />

WRITE(*,*)K<br />

DO 10 K=0,-5,-1<br />

10 CONTINUE<br />

WRITE(*,*)K<br />

*)<br />

1,2,3,4,5,6,7,8,9,10<br />

10 CONTINUE<br />

DO 10 K=1,10,2<br />

10 WRITE(*,*)K<br />

10 CONTINUE<br />

1,3,5,7,9<br />

0.-1,-2,-3,-4,-5<br />

DO 10 K=10,-10,-5<br />

WRITE(* ,*)K<br />

10 CONTINUE<br />

DO 10 K=-5 5,5,35 WRITE(*,*)K<br />

10 CONTINUE<br />

-5,-2,1,4<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

10,5,0, 0 -5,-10<br />

64


ΕΝΑΛΛΑΚΤΙΚΕΣ ΓΡΑΦΕΣ<br />

L=0<br />

DO 20 K=1,5<br />

L=L+K<br />

20 CONTINUE<br />

WRITE(*,*)L<br />

DO-CONTINUE<br />

L=0<br />

DO 20 K=1,5<br />

20 L=L+K<br />

WRITE(*,*)L<br />

20 L L K Μόνο DO<br />

L=0<br />

DO K=1,5<br />

L=L+K<br />

ENDDO<br />

WRITE(*,*)L<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

DO-ENDDO<br />

65


ΤΙ ΔΙΑΦΕΡΟΥΝ ΤΑ ΔΥΟ ΠΡΟΓΡΑΜΜΑΤΑ<br />

PROGRAM LEARN_CONTINUE1<br />

L=0<br />

DO 50 K=1,5<br />

L=L+K<br />

50 CONTINUE<br />

WRITE(*,*)L<br />

GOTO 50<br />

END<br />

PROGRAM LEARN_CONTINUE2<br />

L=0<br />

60 DO 50 K=1,5<br />

L=L+K<br />

50 CONTINUE<br />

WRITE(*,*)L*)L<br />

GOTO 60<br />

END<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

66


ΑΠΑΓΟΡΕΥΕΤΑΙ Η ΜΕΤΑΒΟΛΗ ΤΟΥ ΜΕΤΡΗΤΗ<br />

ΜΕΣΑ ΣΤΟ ΒΡΟΧΟ<br />

PROGRAM TEST1<br />

L=0<br />

DO K=1,5<br />

L=L+K<br />

K=2*K<br />

ENDDO<br />

WRITE(*,*)L<br />

END<br />

ΛΑΘΟΣ<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

67


ΑΠΑΓΟΡΕΥΕΤΑΙ Η AΠΟΤΟΜΗ ΕΙΣΟΔΟΣ ΣΤΟ<br />

ΒΡΟΧΟ<br />

PROGRAM TEST1<br />

L=0<br />

DO K=1,5<br />

60 L=L+K<br />

ENDDO<br />

WRITE(*,*)L<br />

GOTO 60<br />

END<br />

ΛΑΘΟΣ<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

68


ΠΟΛΛΑΠΛΟΙ ΒΡΟΧΟΙ (NESTED LOOPS)<br />

PROGRAM NESTED_LOOPS<br />

DO I=1,3<br />

DO J=1,2<br />

WRITE(*,*)I+J<br />

ENDDO<br />

ENDDO<br />

END<br />

2 1(=I)+1(=J)<br />

3 1(=I)+2(=J)<br />

3 2(=I)+1(=J)<br />

4 2(=I)+2(=J)<br />

4 3(=I)+1(=J)<br />

5 3(=I)+2(=J)<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

69


ΠΟΛΛΑΠΛΟΙ ΒΡΟΧΟΙ (NESTED LOOPS)<br />

PROGRAM NESTED_LOOPS<br />

DO 10 I=1,3<br />

DO 20 J=1,2<br />

DO 30 K=1,2<br />

WRITE(*,*)I+J+K<br />

30 CONTINUE<br />

20 CONTINUE<br />

10 CONTINUE<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

70


ΠΟΛΛΑΠΛΟΙ ΒΡΟΧΟΙ (NESTED LOOPS)<br />

PROGRAM NESTED_LOOPS<br />

DO 10 I=1,3<br />

DO 20 J=1,2<br />

DO 30 K=1,2<br />

WRITE(*,*)I+J+K<br />

30 CONTINUE<br />

10 CONTINUE<br />

20 CONTINUE<br />

ΛΑΘΟΣ<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

71


ΠΟΛΛΑΠΛΟΙ ΒΡΟΧΟΙ (NESTED LOOPS)<br />

PROGRAM NESTED_LOOPS<br />

DO 10 I=1,3<br />

DO 10 J=1,2<br />

DO 10 K=1,2<br />

WRITE(*,*)I+J+K<br />

10 CONTINUE<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

72


ΠΟΛΛΑΠΛΟΙ ΒΡΟΧΟΙ (ΑΣΚΗΣΗ)<br />

PROGRAM NESTED_LOOPS<br />

DO I=1,2<br />

DO J=2*I,3*I<br />

WRITE(*,*)I+J<br />

ENDDO<br />

ENDDO<br />

END<br />

3<br />

4<br />

6<br />

7<br />

8<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

73


EΛΑΧΙΣΤΑ ΚΑΙ ΜΕΓΙΣΤΑ ΑΡΙΘΜΩΝ<br />

12345678901234567890<br />

PROGRAM MINMAX<br />

X=1.<br />

Y=2.<br />

A=AMAX1(X,Y)<br />

B=AMIN1(X,Y)<br />

WRITE(*,*)A,B<br />

END<br />

PROGRAM MINMAX_DB<br />

X=1.D0<br />

Y=2.D0<br />

A=DMAX1(X,Y)<br />

B=DMIN1(X,Y)<br />

WRITE(*,*)A,B<br />

END<br />

ή σε διπλή ακρίβεια:<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

74


ΜΕΤΑΒΛΗΤΕΣ ΜΕ ΔΕΙΚΤΗ<br />

•Η ΑΝΑΓΚΗ ΟΜΑΔΟΠΟΙΗΣΗΣ ΘΕΣΕΩΝ ΜΝΗΜΗΣ<br />

•ΜΗΤΡΙΚΗ ΓΡΑΦΗ ► ΠΙΝΑΚΑΣ, ΜΗΤΡΑ, ARRAY<br />

•ΕΥΚΟΛΙΑ ΕΚΤΕΛΕΣΗΣ ΠΡΑΞΕΩΝ ΜΕ ΠΙΝΑΚΕΣ<br />

•ΔΕΙΚΤΗΣ-SUBSCRIPT-INDEX (ΑΚΕΡΑΙΟΣ = > < 0 ή<br />

ΑΡΙΘΜΗΤΙΚΗ ΠΑΡΑΣΤΑΣΗ)<br />

•ΟΝΟΜΑΤΟΛΟΓΙΑ ΟΠΩΣ ΟΙ ΜΕΤΑΒΛΗΤΕΣ<br />

•ΔΕΣΜΕΥΜΕΝΟ ΟΝΟΜΑ<br />

•Η ΕΝΤΟΛΗ DIMENSION – ΠΑΡΑΔΕΙΓΜΑΤΑ:<br />

DIMENSION K(6), KA(2*3), KB(1:6), KC(0:5), KD(-2:3)<br />

•DIMENSION=MH-ΕΚΤΕΛΕΣΙΜΗ ΕΝΤΟΛΗ ΣΤΟ ΜΕΤΑΦΡΑΣΤΗ ,<br />

ΘΕΣΗ, ΣΥΝΤΑΞΗ<br />

•ΥΠΕΡΒΑΣΗ ΟΡΙΟΥ DIMENSION<br />

•ΠΟΛΥΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ Κ(10,10), Α(30,20,10), GF(50,10)<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

75


ΜΕΤΑΒΛΗΤΕΣ ΜΕ ΔΕΙΚΤΗ - ΔΙΕΥΚΡΙΝΗΣΕΙΣ<br />

•ΠΑΡΑΔΕΙΓΜΑΤΑ:<br />

DIMENSION K(6), KA(2*3), KB(1:6), KC(0:5), KD(-2:3)<br />

ΠΕΝΤΕ ΜΕΤΑΒΛΗΤΕΣ ΜΕ ΔΕΙΚΤΗ ΙΔΙΑΣ ΔΙΑΣΤΑΣΗΣ ΜΕ<br />

ΔΙΑΦΟΡΕΤΙΚΟ ΠΡΩΤΟ ΣΤΟΙΧΕΙΟ. ΠΡΩΤΑ ΣΤΟΙΧΕΙΑ:<br />

K(1), KA(1), KB(1), KC(0), KD(-2)<br />

•ΒΑΣΙΚΟΤΑΤΟ:<br />

Η ΔΙΑΣΤΑΣΗ ΤΟΥ ΠΙΝΑΚΑ ΔΕΝ ΣΗΜΑΙΝΕΙ ΟΤΙ ΘΑ<br />

ΧΡΗΣΙΜΟΠΟΙΗΘΟΥΝ ΑΝΑΓΚΑΣΤΙΚΑ ΚΑΙ ΤΑ 6 ΣΤΟΙΧΕΙΑ ΤΟΥ.<br />

ΕΙΝΑΙ ΟΜΩΣ ΠΑΝΤΑ ΜΕΓΑΛΥΤΕΡΗ ή ΙΣΗ ΑΠΟ ΤΗ ΜΕΓΑΛΥΤΕΡΗ<br />

ΔΙΑΣΤΑΣΗ ΠΟΥ ΠΡΟΚΕΙΤΑΙ ΝΑ ΧΡΗΣΙΜΟΠΟΙΗΘΕΙ ΣΤΟ<br />

ΠΡΟΓΡΑΜΜΑ.<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

76


ΕΙΣΑΓΩΓΗ ΠΙΝΑΚΑ ΣΤΗ RAM<br />

PROGRAM ONE<br />

DIMENSION A(4), B(3,4)<br />

READ (*,*)*) A,B<br />

WRITE(*,*)A(2),B(2,1),B(3,3)<br />

END<br />

1▼ 4▼ 7▼ .20=B(1,1) 1) 24=B(1 2.4=B(1,2) 2) .3=B(1,3) 3) -.1=B(1,4)<br />

2▼ 5▼ 8▼<br />

.93=B(2,1) -.7=B(2,2) -.6=B(2,3) 3. =B(2,4)<br />

3▼ 6▼ 9▼ 1.8=B(3,1) .04=B(3,2) .34=B(3,3) 1. =B(3,4)<br />

3.5=A(1) -.89=A(2) 2.2=A(3) -.45=A(4)<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

77


C<br />

C<br />

C<br />

ΤΟ ΠΙΟ ΣΥΝΗΘΙΣΜΕΝΟ ΛΑΘΟΣ ...<br />

PROGRAM LEARN_MATRICES<br />

IMPLICIT DOUBLE PRECISION (A-H,O-Z)<br />

A(100), αν είμαστε σίγουροι ότι ...<br />

DIMENSION A(N)<br />

OPEN(1,FILE=‘DATA’)<br />

READ(1,*)N<br />

DO I=1,N<br />

READ (1,*) A(I)<br />

ENDDO<br />

CLOSE(1)<br />

DUMMY INDEX (ΣΩΣΤΟ!!!)<br />

SUM=0.D0<br />

DO J=1,N<br />

SUM=SUM+A(J)<br />

SUM+A(J)<br />

ENDDO<br />

WRITE(*,*)’ ATHROISMA =‘,SUM<br />

END<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

78


I/O ΜΕ ΜΕΤΑΒΛΗΤΕΣ ΜΕ ΔΕΙΚΤΗ-IMPLIED DO<br />

DIMENSION A(10,20),B(10,20)<br />

I/O ΜΙΑΣ ΓΡΑΜΜΗΣ:<br />

I=3<br />

WRITE(*,3) (A(I,J), J=1,20,1)<br />

WRITE(*,3) (B(3,J), (3 J=1,20)<br />

I/O ΚΑΤΑ ΓΡΑΜΜΕΣ:<br />

WRITE(*,4) ((A(I,J), J=1,20),Ι=1,10)<br />

I/O ΚΑΤΑ ΣΤΗΛΕΣ:<br />

WRITE(*,5) ((A(I,J), I=1,10),J=1,20)<br />

ΠΑΡΑΔΕΙΓΜΑ:<br />

DIMENSION A(10,10)<br />

DO K=1,10<br />

WRITE(*, ’(1X,6F8.2) 2)’) ) (A(K,L),L=1,10)<br />

L=1 10)<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

79


ΔΗΛΩΣΕΙΣ<br />

ΔΗΛΩΣΗ ΠΙΝΑΚΩΝ ΜΕ …<br />

INTEGER K(50), ALFA(100)<br />

REAL A1(30,40), K2(200)<br />

REAL*4 AB(100), BJL(100)<br />

Δηλώνονται δύο<br />

χαρακτηριστικά<br />

μιας μεταβλητής<br />

με ΜΙΑ εντολή<br />

ΠΙΝΑΚΕΣ ΧΑΡΑΚΤΗΡΩΝ-ΣΥΜΒΟΛΟΣΕΙΡΩΝ<br />

CHARACTER*20 A(100), B(10,10) 10)<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

80


ΠΑΡΑΔΕΙΓΜΑΤΑ<br />

ΑΘΡΟΙΣΜΑ ΣΤΟΙΧΕΙΩΝ ΓΡΑΜΜΗΣ ΠΙΝΑΚΑ Α(3x4)<br />

DIMENSION A(3,4)<br />

A1=A(1,1)+A(1,2)+A(1,3)+A(1,4)<br />

A2=A(2,1)+A(2,2)+A(2,3)+A(2,4)<br />

A3=A(3,1)+A(3,2)+A(3,3)+A(3,4)<br />

ή<br />

DIMENSION A(3,4),SUM(3)<br />

DO I=1,3<br />

SUM(I)=0.0<br />

DO J=1,4<br />

SUM(I)=SUM(I)+A(I,J)<br />

ENDDO<br />

ENDDO<br />

1,1 1,2 1,3 1,4<br />

21 2,1 22 2,2 23 2,3 24 2,4<br />

3,1 3,2 3,3 3,4<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

81


ΠΡΑΞΕΙΣ ΠΙΝΑΚΩΝ<br />

DIMENSION A(10,20), B(10,20), C(10,20)<br />

ΠΡΟΣΘΕΣΗ-ΑΦΑΙΡΕΣΗ:<br />

DO 1 I=1,M<br />

DO 1 J=1,N<br />

C(I,J)=A(I,J)+B(I,J)<br />

1 CONTINUE<br />

ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΣ ΠΙΝΑΚΑ ΜΕ ΣΤΑΘΕΡΑ:<br />

DO 1 I=1,M<br />

DO 1 J=1,N<br />

C(I,J)=A(I,J) J)*CONST<br />

1 CONTINUE<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

82


ΠΡΑΞΕΙΣ ΠΙΝΑΚΩΝ<br />

ΠΟΛΛΑΠΛΑΣΙΑΣΜΟΣ ΠΙΝΑΚΩΝ<br />

DIMENSION A(10,20), B(20,10), S(10,10)<br />

DO 4 I=1,MAXIA<br />

DO 4 J=1,MAXJB<br />

S(I,J)=0.0<br />

DO 2 K=1,MAXJA<br />

S(I,J)=S(I,J)+A(I,K)*B(K,J)<br />

2 CONTINUE<br />

4 CONTINUE<br />

J<br />

I<br />

K<br />

A<br />

K<br />

B<br />

(I,J) (,)<br />

S<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

83


ΑΣΚΗΣΗ: ΔΙΑΧΕΙΡΙΣΗ ΑΠΟΘΗΚΗΣ (1)<br />

ΤΡΕΧΟΥΣΑ ΚΑΤΑΣΤΑΣΗ ΑΠΟΘΗΚΗΣ<br />

(ΑΡΧΕΙΟ ΜΕ ΟΝΟΜΑ 12_3_2005 2005 :)<br />

465<br />

112<br />

44<br />

0<br />

81<br />

13<br />

23<br />

35<br />

ΥΠΑΡΧΟΥΝ 44 ΚΟΜΜΑΤΙΑ ΑΠΟ ΤΟ<br />

ΕΙΔΟΣ ΥΠ’ΑΡΙΘΜΟ 3<br />

ΔΕΝ ΥΠΑΡΧΟΥΝ ΚΟΜΜΑΤΙΑ ΑΠΟ ΤΟ<br />

ΕΙΔΟΣ ΥΠ’ΑΡΙΘΜΟ 4<br />

ΤΟ ΠΟΣΑ ΕΙΔΗ ΕΧΕΙ Η ΑΠΟΘΗΚΗ<br />

ΠΡΕΠΕΙ ΝΑ ΤΟ ΚΑΤΑΛΑΒΑΙΝΕΙ ΤΟ<br />

ΠΡΟΓΡΑΜΜΑ (ΔΕΝ ΔΙΝΕΤΑΙ ΣΤΟ<br />

ΑΡΧΕΙΟ ΔΕΔΟΜΕΝΩΝ)<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

84


ΑΣΚΗΣΗ: ΔΙΑΧΕΙΡΙΣΗ ΑΠΟΘΗΚΗΣ (2)<br />

PROGRAM APOTHIKI<br />

IMPLICIT DOUBLE PRECISION (A-H,O-Z)<br />

DIMENSION KPARTS(100)<br />

CHARACTER*20 FNAME1,FNAME2<br />

C<br />

C-READS DATA FROM EXISTING FILE<br />

WRITE(*,*)’ DWSE ONOMA TREXONTOS ARXEIOY’<br />

READ(*,’(A)’)FNAME1<br />

OPEN(1,FILE=FNAME1)<br />

DO I=1,100<br />

100<br />

READ(1,*,END=33)KPARTS(I)<br />

ENDDO<br />

CLOSE(1)<br />

STOP ‘ MEGALWSE TH DIASTASH TOY PINAKA’<br />

33 KEIDH=I-1<br />

CLOSE(1)<br />

(συνεχίζει ...)<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

85


ΑΣΚΗΣΗ: ΔΙΑΧΕΙΡΙΣΗ ΑΠΟΘΗΚΗΣ (3)<br />

56 WRITE(*,*)’ *)’ DWSE EIDOS & KOMMATIA POY THELEIS’<br />

READ(*,*)LEIDOS,LPARTS<br />

IF(LEIDOS.LE.0) GOTO 99<br />

C-ELEGXOS EPARKEIAS<br />

IF(KPARTS(LEIDOS).GE.LPARTS)THEN<br />

WRITE(*,*)’ NAI – YPARXOYN TA KOMMATIA !”<br />

KPARTS(LEIDOS)=KPARTS(LEIDOS)-LPARTS<br />

S<br />

ELSEIF(KPARTS(LEIDOS).NE.0)THEN<br />

WRITE(*,*)’ EXOYME MONO ‘,KPARTS(LEIDOS),’ K’<br />

ELSE<br />

WRITE(*,*)’ OXI – DEN YPARXEI KANENA KOMMATI”<br />

ENDIF<br />

GOTO 56<br />

C-WRITES NEW DATA FILE<br />

99 WRITE(*,*)’ DWSE ONOMA NEOY ARXEIOY’<br />

READ(*,’(A)’)FNAME2<br />

OPEN(1,FILE=FNAME2)<br />

DO I=1,KEIDH<br />

WRITE(1,’(I10)’)KPARTS(I)<br />

ENDDO<br />

CLOSE(1)<br />

ENDS<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

86


C<br />

ΑΣΚΗΣΗ 1 : IMPLIED LOOP<br />

PROGRAM TEST44<br />

IMPLICIT DOUBLE PRECISION (A-H,O-Z)<br />

DIMENSION AA(300),BB(200)<br />

OPEN(1,FILE= ‘DATA’)<br />

READ(1,*)(AA(I),I=1,4)<br />

READ(1,*)(BB(I),I=1,4)<br />

CLOSE(1)<br />

WRITE(*,*)AA(2)+BB(3)<br />

END<br />

ΤΙ ΘΑ ΤΥΠΩΣΕΙ ΤΟ<br />

ΠΡΟΓΡΑΜΜΑ;<br />

4. 5. -3.<br />

4.<br />

1.<br />

-3. -1.<br />

4.<br />

8. -3. 4. 5.<br />

ΑΡΧΕΙΟ DATA<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

87


ΑΣΚΗΣΗ 2 : WRITE με IMPLIED LOOP<br />

PROGRAM TESTWR<br />

IMPLICIT DOUBLE PRECISION (A-H,O-Z)<br />

DIMENSION A(10)<br />

DO I=1,10<br />

A(I)=2.D0*DFLOAT(I) ΤΙ ΘΑ ΤΥΠΩΣΕΙ ΤΟ<br />

ΠΡΟΓΡΑΜΜΑ;<br />

ENDDO<br />

WRITE(*,*)(A(I),I=1,10)<br />

END<br />

ΟΘΟΝΗ<br />

2.000000000000000 4.000000000000000 6.000000000000000<br />

8.000000000000000 10.000000000000000 12.000000000000000<br />

14.000000000000000 16.000000000000000 18.000000000000000<br />

20.000000000000000000000000000000<br />

ΓΙΑ ΔΙΠΛΗ ΑΚΡΙΒΕΙΑ<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

88


ΑΣΚΗΣΗ 2β : WRITE με IMPLIED LOOP<br />

C<br />

PROGRAM TESTWR<br />

IMPLICIT DOUBLE PRECISION (A-H,O-Z)<br />

DIMENSION A(10)<br />

DO I=1,10<br />

A(I)=2.0*FLOAT(I)<br />

ΤΙ ΘΑ ΤΥΠΩΣΕΙ ΤΟ<br />

ΠΡΟΓΡΑΜΜΑ;<br />

ENDDO<br />

WRITE(*,*)(A(I),I=1,10)<br />

END<br />

ΟΘΟΝΗ<br />

2.000000 4.000000 6.000000 8.000000<br />

10.000000 12.000000 14.000000 16.000000<br />

18.000000 20.000000<br />

ΓΙΑ ΑΠΛΗ ΑΚΡΙΒΕΙΑ<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

89


ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ (ΥΠΟΡΟΥΤΙΝΕΣ)<br />

•Η ΑΝΑΓΚΗ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΚΑΤΑ ΤΜΗΜΑΤΑ<br />

•ΗΗ ΕΥΚΟΛΙΑ ΧΡΗΣΗΣ «ΕΤΟΙΜΩΝ ΤΜΗΜΑΤΩΝ<br />

ΠΡΟΓΡΑΜΜΑΤΟΣ»<br />

•ΟΙ ΕΝΤΟΛΕΣ SUBROUTINE, CALL, RETURN<br />

•ΣΥΝΤΑΞΗ ΜΕ ΔΙΚΟ ΤΗΣ END<br />

•ΣΕΙΡΑ ΠΑΡΑΘΕΣΗΣ-ΕΚΤΕΛΕΣΗΣ<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

90


ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ (ΥΠΟΡΟΥΤΙΝΕΣ)<br />

PROGRAM TEST<br />

………<br />

CALL SUB1<br />

………<br />

CALL SUB2<br />

………<br />

STOP<br />

END<br />

SUBROUTINE SUB1<br />

………<br />

RETURN<br />

END<br />

Η ΑΝΑΓΚΗ ΧΩΡΙΣΤΟΥ<br />

END<br />

ΣΤΟ ΚΥΡΙΩΣ<br />

ΠΡΟΓΡΑΜΜΑ<br />

ΚΑΙ ΣΕ ΚΑΘΕΝΑ<br />

ΥΠΟΠΡΟΓΡΑΜΜΑ<br />

SUBROUTINE SUB2<br />

………<br />

RETURN<br />

END<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

ΚΑΘΕ<br />

ΥΠΟΠΡΟΡΑΜΜΑ<br />

ΜΕΤΑΦΡΑΖΕΤΑΙ<br />

ΧΩΡΙΣΤΑ<br />

91


ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΟΡΙΣΜΑΤΑ (ARGUMENTS)<br />

PROGRAM TEST10<br />

READ(*,*)X<br />

CALL TESTSUB<br />

END<br />

SUBROUTINE TESTSUB<br />

WRITE(*,*)SQRT(X)<br />

*)SQRT(X)<br />

RETURN<br />

END<br />

ΤΙ ΘΑ ΤΥΠΩΣΕΙ;<br />

PROGRAM TEST10<br />

READ(*,*)X<br />

CALL TESTSUB(Χ)<br />

END<br />

SUBROUTINE TESTSUB(VAL)<br />

WRITE(*,*)SQRT(VAL)<br />

RETURN<br />

END<br />

ΕΙΚΟΝΙΚΟ ΟΡΙΣΜΑ<br />

ΤΙ ΘΑ ΤΥΠΩΣΕΙ;<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

92


C<br />

ΠΡΑΓΜΑΤΙΚΟ & ΕΙΚΟΝΙΚΟ ΟΡΙΣΜΑ<br />

ΧΩΡΙΣΤΕΣ ΔΗΛΩΣΕΙΣ ΣΤΑ<br />

ΥΠΟΠΡΟΓΡΑΜΜΑΤΑ<br />

PROGRAM TEST10<br />

IMPLICIT DOUBLE PRECISION (A-H,O-Z)<br />

READ(*,*)X<br />

CALL TESTSUB(Χ)<br />

WRITE(*,*)X<br />

WRITE(*,*)’COMPARE’,X,VAL<br />

END<br />

ΤΙ ΘΑ ΤΥΠΩΣΕΙ;<br />

SUBROUTINE TESTSUB(VAL)<br />

IMPLICIT DOUBLE PRECISION (A-H,O-Z)<br />

VAL=SQRT(VAL)<br />

WRITE(*,*)’COMPARE’,X,VAL ΤΙ ΘΑ ΤΥΠΩΣΕΙ;<br />

RETURN<br />

END<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

93


ΠΛΗΘΟΣ-ΤΥΠΟΣ ΟΡΙΣΜΑΤΩΝ<br />

C<br />

PROGRAM TEST10<br />

IMPLICIT DOUBLE PRECISION (A-H,O-Z)<br />

DIMENSION A(10),B(10,20)<br />

REAL*8 KK<br />

CALL CALC(Χ1,KK,A,B)<br />

A STOP<br />

END<br />

SUBROUTINE CALC(V1,JL,X,YY)<br />

IMPLICIT DOUBLE PRECISION (A-H,O-Z)<br />

DIMENSION X(10),YY(10,20)<br />

REAL*8 JL<br />

…<br />

RETURN<br />

END<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

94


ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ COMMON<br />

C<br />

PROGRAM MYTEST<br />

IMPLICIT DOUBLE PRECISION (A-H,O-Z)<br />

DIMENSION A(10),B(10,20)<br />

COMMON X1,KK,A,B<br />

, ,<br />

CALL CALC<br />

END<br />

SUBROUTINE CALC<br />

IMPLICIT DOUBLE PRECISION (A-H,O-Z)<br />

DIMENSION X(10),YY(10,20)<br />

COMMON V1,JL,X,YY<br />

…<br />

RETURN<br />

END<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

95


ΕΠΙΚΟΙΝΩΝΙΑ ΜΕ ΟΝΟΜΑΤΙΣΜΕΝΟ COMMON<br />

C<br />

PROGRAM MYTEST<br />

IMPLICIT DOUBLE PRECISION (A-H,O-Z)<br />

COMMON /ΤΤ/ X1<br />

COMMON /P40/ KK<br />

COMMON /MA/ / A(10),B(10,20)<br />

( , )<br />

CALL CALC<br />

END<br />

SUBROUTINE CALC<br />

IMPLICIT DOUBLE PRECISION (A-H,O-Z)<br />

COMMON /ΤΤ/ V1<br />

COMMON /P40/ JL<br />

COMMON /MA/ X(10),YY(10,20)<br />

…<br />

RETURN<br />

END<br />

ΟΙΚΟΝΟΜΙΑ: COMMON &<br />

DIMENSION ΣΕ ΜΙΑ ΕΝΤΟΛΗ<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

96


ΣΥΝΑΡΤΗΣΕΙΣ ΕΝΤΟΛΗΣ<br />

PROGRAM MYTEST<br />

IMPLICIT DOUBLE PRECISION (A-H,O-Z)<br />

FFF(X,Y,Z)=SQRT(X*X+Y*Y+Z*Z)<br />

1 READ(*,*)X1,Y1,Z1<br />

WRITE(*,*)FFF(X1,Y1,Z1)<br />

X2=10.D0*X1<br />

T=FFF(X2,Y1,Z1)<br />

WRITE(*,*)T<br />

GOTO 1<br />

END<br />

ΕΥΡΟΣ ΜΙΑΣ ΕΝΤΟΛΗΣ<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

97


ΑΛΛΗΛΟΕΞΑΡΤΩΜΕΝΕΣ ΣΥΝΑΡΤΗΣΕΙΣ<br />

ΕΝΤΟΛΗΣ<br />

PROGRAM MYTEST<br />

IMPLICIT DOUBLE PRECISION (A-H,O-Z)<br />

SUMSQ(X,Y,Z)=X*X+Y*Y+Z*Z<br />

FFF(X,Y,Z)=SQRT(SUMSQ(X,Y,Z))<br />

1 READ(*,*)X1,Y1,Z1<br />

WRITE(*,*)FFF(X1,Y1,Z1)<br />

GOTO 1<br />

END<br />

ΤΟ ΠΑΡΑΔΕΙΓΜΑ ΕΙΝΑΙ «ΥΠΕΡΒΟΛΙΚΟ» !<br />

ΠΡΟΦΑΝΩΣ ΓΙΝΕΤΑΙ ΑΠΛΟΥΣΤΕΡΑ, ΑΛΛΑ<br />

ΣΚΟΠΟΣ ΕΙΝΑΙ ΝΑ ΔΕΙΧΘΕΙ ΟΤΙ ΜΙΑ<br />

ΣΥΝΑΡΤΗΣΗ ΕΝΤΟΛΗΣ ΜΠΟΡΕΙ ΝΑ ΚΑΛΕΙ<br />

ΜΙΑ ΑΛΛΗ...<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

98


C<br />

ΤΟ ΥΠΟΠΡΟΓΡΑΜΜΑ FUNCTION<br />

PROGRAM MPR<br />

1 READ(*,*)X1,Y1,Z1<br />

WRITE(*,*)FFF(X1,Y1,Z1)<br />

, ,<br />

GOTO 1<br />

END<br />

FUNCTION FFF(X,Y,Z)<br />

XX=X*X<br />

YY=Y*Y<br />

ΠΟΛΛΕΣ ΕΝΤΟΛΕΣ<br />

ZZ=Z*Z<br />

FFF=SQRT(XX+YY+ZZ)<br />

RETURN<br />

END<br />

•ΧΡΗΣΗ ΟΠΩΣ ΤΟ ΥΠΟΠΡΟΓΡΑΜΜΑ<br />

•ΕΝΤΟΛΕΣ ΠΟΛΛΩΝ ΓΡΑΜΜΩΝ<br />

•ΠΡΑΓΜΑΤΙΚΑ & ΕΙΚΟΝΙΚΑ ΟΡΙΣΜΑΤΑ<br />

•ΕΝΑ ΤΟΥΛΑΧΙΣΤΟΝ ΟΡΙΣΜΑ, ΕΣΤΩ ()<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

99


Η ΕΝΤΟΛΗ PARAMETER<br />

•ΜΗ-ΕΚΤΕΛΕΣΙΜΗ ΕΝΤΟΛΗ<br />

•ΔΙΝΟΝΤΑΙ ΤΙΜΕΣ ΣΕ ΜΕΤΑΒΛΗΤΕΣ ΚΑΤΑ<br />

ΤΗ ΜΕΤΑΦΡΑΣΗ<br />

•ΔΕΝ ΕΠΙΤΡΕΠΕΤΑΙ ΝΑ ΑΛΛΑΖΟΥΜΕ ΤΗΝ<br />

ΤΙΜΗ ΜΙΑΣ ΜΕΤΑΒΛΗΤΗΣ PARAMETER<br />

ΜΕΣΑ ΣΤΟ ΠΡΟΓΡΑΜΜΑ<br />

•ΣΥΝΗΘΗΣ ΧΡΗΣΗ ΣΤΙΣ DIMENSION<br />

PROGRAM MPR<br />

PARAMETER (LIM1=100, LIM2=10)<br />

DIMENSION X(LIM1),YY(LIM2,LIM2)<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

100


Η ΕΝΤΟΛΗ DATA<br />

•ΜΗ-ΕΚΤΕΛΕΣΙΜΗ ΕΝΤΟΛΗ<br />

•ΘΕΣΗ: ΠΡΙΝ ΤΙΣ ΕΚΤΕΛΕΣΙΜΕΣ, , ΜΕΤΑ<br />

ΑΠΟ DIMENSION κλπ<br />

PARAMETER (LIM1=100)<br />

100)<br />

DIMENSION VAL(LIM1),VEL(10,10)<br />

DATA X,Y,Z/3.2,4.5,2.2/<br />

DATA X1,Y1,Z1/3*3./<br />

/<br />

DATA VAL/LIM1*0./<br />

DATA (VAL(I),I=5,10)/6*3./<br />

DATA VEL/100*1./ /<br />

•ΣΗΜΑΙΝΕΙ ΕΞΙ ΦΟΡΕΣ ΤΟΝ ΑΡΙΘΜΟ 3.<br />

ΚΑΙ ΟΧΙ ΤΟΝ ΑΡΙΘΜΟ (6 ΕΠΙ 3=18)<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

101


PARAMETER: ΧΡΗΣΙΜΟ ΠΑΡΑΔΕΙΓΜΑ<br />

PROGRAM MPR<br />

IMPLICIT DOUBLE PRECISION (A-H,O-Z)<br />

PARAMETER (LIM1=100)<br />

DIMENSION X(LIM1)<br />

OPEN(1,FILE=’DAT.DAT’)<br />

READ(1,*)NN<br />

IF(NN.GT.LIM1) STOP ‘INCREASE DIM1’<br />

READ(1,*)(X(I),I=1,NN)<br />

( ) )<br />

CLOSE(1)<br />

CALL ADDON(LIM1,NN,X,SUM)<br />

WRITE(*,*)’ *)’ average = ‘,SUM/FLOAT(NN)<br />

END<br />

SUBROUTINE ADDON(LIM1,N,A,SUM)<br />

IMPLICIT DOUBLE PRECISION (A-H,O-Z)<br />

DIMENSION A(LIM1)<br />

SUM=0.DO<br />

ΣΥΝΗΘΙΣΜΕΝΟ ΛΑΘΟΣ:<br />

DO I=1,N<br />

SUM=SUM+A(I) ΜΗΝ ΞΑΝΑΟΡΙΣΕΤΕ ΤΟ PARAMETER<br />

ENDDO<br />

ΣΤΗΝ ΥΠΟΡΟΥΤΙΝΑ ΟΤΑΝ ΕΧΕΙ ΓΙΝΕΙ<br />

ΕΠΙΚΟΙΝΩΝΙΑ ΜΕΣΩ ΟΡΙΣΜΑΤΟΣ<br />

RETURN<br />

END<br />

ΠΑΡΑΔΟΣΕΙΣ: Κ. ΓΙΑΝΝΑΚΟΓΛΟΥ<br />

ΣΧΟΛΗ ΜΗΧ-ΜΗΧ ΕΜΠ<br />

102

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!