διοÏθÏμενη εÏανεκδοÏη ÏÎ·Ï 9/1/2011
διοÏθÏμενη εÏανεκδοÏη ÏÎ·Ï 9/1/2011
διοÏθÏμενη εÏανεκδοÏη ÏÎ·Ï 9/1/2011
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