(i) PROGRAM example. IMPLICIT NONE REAL:: moires, aktinia moires = 180 aktinia = moires * / aktinia STOP END

Σχετικά έγγραφα
PROGRAM example Η αρχή και το όνοµα του προγράµµατος IMPLICIT NONE REAL:: moires, aktinia moires = 180. aktinia = moires * / 180.

Δομή του προγράμματος

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

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

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

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

Κεφάλαιο 4: Συνθήκες Έλεγχου (if-else, switch) και Λογικοί τελεστές / παραστάσεις. (Διάλεξη 8)

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

Δομημένος Προγραμματισμός (ΤΛ1006)

Διαφάνειες παρουσιάσεων Αρχικές Διαφάνειες σε Pascal: Σ.Ζάχος, Ν.Παπασπύρου Προσαρμογή σε Fortran: Α.Παγουρτζής, Δ.Σούλιου

Αλγοριθμική & Δομές Δεδομένων- Γλώσσα Προγραμματισμού Ι (PASCAL)

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

ΕΙ ΑΓΩΓΉ ΣΗΝ FORTRAN

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

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

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

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

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

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

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

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

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

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

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

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

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

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

Βασικές Αρχές Προγραμματισμού

Ανάπτυξη και Σχεδίαση Λογισμικού

Γραφικά υπολογιστών Εργαστήριο 1 Εισαγωγή στην Python

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

ΕισαγωγήστουςΗ/Υ. PHP Hypertext Preprocessor

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

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

Δομές ελέγχου. ομαδοποίηση εντολών εκτέλεση εντολών υπό συνθήκη επανάληψη εντολών

Προγραμματισμός Ι (ΗΥ120)

Βασικά στοιχεία της Java

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

ΦΥΛΛΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ 1

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

Pascal, απλοί τύποι, τελεστές και εκφράσεις

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

2.1. Εντολές Σχόλια Τύποι Δεδομένων

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

Προγραμματισμός Η/Υ (ΤΛ2007 )

8. Συνθήκες ελέγχου, λογικοί τελεστές

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Εισαγωγή στην γλώσσα προγραμματισμού C

οµές Επιλογής Εντολές if και switch

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

ΔΟΜΗΜΕΝΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Κεφάλαιο 8 : H γλώσσα προγραµµατισµού Pascal 1 ο Μέρος σηµειώσεων (Ενότητες 8.1 & 8.2 σχολικού βιβλίου)

Γλώσσα Προγραμματισμού C

Προγραμματισμός Η/Υ (ΤΛ2007 )

ικτυακά Πολυμέσα Ι (Β Έτος, 3ο εξ) ιάλεξη #8η: Javascript: Τεχνικές εντοπισμού/διόρθωσης λαθών, τελεστές, δομές ελέγχου, βρόχοι επανάληψης

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

Γ7.1 Επανάληψη ύλης Β Λυκείου. Γ Λυκείου Κατεύθυνσης

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

Εισαγωγή στον Προγραµµατισµό. Διάλεξη 2 η : Βασικές Έννοιες της γλώσσας προγραµµατισµού C Χειµερινό Εξάµηνο 2011

C Programming EPL032 Maria Stavrinou Ioannou Εισαγωγή στη Γλώσσα C

Προγραμματισμός Ι (ΗΥ120)

ΗΥ-150. Προγραμματισμός

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

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

ΗΥ-150. Προγραμματισμός

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

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

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

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

Λογικό "και" (AND) μας επιστρέφει 1 αν και οι δύο operands είναι όχι μηδέν, διαφορετικά 0)

Προγραμματισμός Ι (HY120)

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

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

Στην ενότητα αυτή θα µελετηθούν τα εξής επιµέρους θέµατα: ΕΠΛ 131 Αρχές Προγραµµατισµού I 3-2

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

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

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

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

Υπολογισμός - Εντολές Ελέγχου

Προγραμματισμός και Χρήση Ηλεκτρονικών Υπολογιστών - Βασικά Εργαλεία Λογισμικού

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

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

Δομές ελέγχου ροής προγράμματος

Pascal. 15 Νοεμβρίου 2011

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

ιορθώσεις επί της 2 ης έκδοσης εκτύπωσης 2002

Προγραμματισμός I (Θ)

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

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

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

C: Από τη Θεωρία στην Εφαρµογή 2 ο Κεφάλαιο

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

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 8/11/07

Εντολές επιλογής Επαναλήψεις (if, switch, while)

Εισαγωγή στη γλώσσα προγραμματισμού C++

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

Π. Σταθοπούλου ή Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7

Transcript:

Fortran και Αντικειµενοστραφής προγραµµατισµός www.corelab.ntua.gr/courses/fortran_naval/naval ιδάσκοντες: ΆρηςΠαγουρτζής (pagour@cs.ntua.gr) (Επίκουρος Καθηγητής ΣΗΜΜΥ ) ώρασούλιου (dsouliou@mail.ntua.gr) (Ε ΙΠ ΣΗΜΜΥ) 2η ενότητα οµή προγράµµατος Βασικοί τύποι δεδοµένων Ανάθεση, είσοδος-έξοδος Τελεστές-προτεραιότητα-παραστάσεις οµές ελέγχου Αρχικές ιαφάνειεςσε Pascal: Ε. Ζάχος, Ν. Παπασπύρου Προσαρµογήσε Fortran -συµπληρώσεις:α. Παγουρτζής,. Σούλιου

οµήτουπρογράµµατος (i) PROGRAM example Ηαρχήκαιτοόνοµατουπρογράµµατος IMPLICIT NONE REAL:: moires, aktinia moires = 180 χαρακτηριστική δήλωση δηλώσεις µεταβλητών aktinia = moires * 3.14159 / 180.0 WRITE(*,*) Η γωνία σε ακτίνια & είναι:, aktinia εκτελέσιµες εντολές STOP END τέλος εκτέλεσης 2

οµήτουπρογράµµατος (σε C) (i) #include <stdio.h> int i, j; void main() { i=15; j=23; printf("sum of i and j is: "); i=i+j; printf("%d", i); } 3

οµήτουπρογράµµατος (ii) PROGRAM <όνοµα προγράµµατος> <Κυρίως σώµα> <Specification Part> (δηλωτικές εντολές) <Execution Part> (εκτελέσιµες εντολές) <Subprogram Part> (υπο-προγράµµατα) END ή END PROGRAM <όνοµα προγράµµατος> Εντολή STOP: τερµατίζει την εκτέλεση του προγράµµατος. Μπορεί να χρησιµοποιηθεί µία ή περισσότερες φορές. Συχνά εµφανίζεται µόνο πριν το END και γι αυτό παραλείπεται. 4

οµήτουπρογράµµατος (iii) ηλώσεις µεταβλητών µεταβλητή: ένα «κουτί» της µνήµης του υπολογιστή όπου µπορεί να αποθηκευτεί µια πληροφορία (ένα δεδοµένο) στο τµήµα δηλώσεων (που βρίσκεται πάντα στην αρχή του προγράµµατος) ορίζουµε όλες τις µεταβλητές που χρησιµοποιεί το πρόγραµµα γιακάθεµεταβλητήορίζουµετοόνοµάτης και τον τύπο της, δηλαδή το πεδίο των δυνατών τιµών πουµπορείηµεταβλητήναπάρειπ.χ. INTEGER:: i,j,k, 5

οµήτουπρογράµµατος (iv) Απλοί τύποι µεταβλητών INTEGER ακέραιοι αριθµοί 0, 1, 3 REAL πραγµατικοί αριθµοί 3.14 (τελεία, όχι κόµµα),, 2.35E-8 (=2.35 10-8 ) CHARACTER χαρακτήρες 'a', 'C' CHARACTER (LEN=*) string 'and', "Cool" LOGICAL λογικές τιµές.true. ή.false. COMPLEX µιγαδικοί αριθµοί (-10.0, 8.0) 6

οµήτουπρογράµµατος (v) ήλωση µεταβλητών INTEGER:: i, j=12, k, REAL:: a, b, x, CHARACTER (LEN=4):: mera, minas, etos, LOGICAL:: m =.true., n COMPLEX:: c, e ήλωση σταθερών INTEGER, PARAMETER:: I=10, day=3 REAL, PARAMETER:: PI=3.14159 7

οµήτουπρογράµµατος (vi) Σχόλια INTEGER:: x,y! Συντεταγµένες κέντρου REAL:: r! Aκτίνα Κεφαλαίοιήπεζοίχαρακτήρες; Η γλώσσα δεν είναι case sensitive 8

οµήτουπρογράµµατος (vi) Στοίχιση Απαραίτητη για να τρέχει σωστά το πρόγραµµα και να είναι ευανάγνωστο Κάθεεντολήσεµίαγραµµή. Αν δεν αρκεί µία γραµµή τη συνεχίζω σε περισσότερες προσθέτοντας τον χαρακτήρα & στο τέλος κάθε γραµµής. Αν θέλω περισσότερες από µία εντολές σε µία γραµµή τις χωρίζω µε ελληνικό ερωτηµατικό ; 9

οµήτουπρογράµµατος (vii) Υποπρογράµµατα PROGRAM example IMPLICIT NONE INTEGER:: i, j, athroisma i=15 j=23 CALL Prosthesi(i,j,athroisma)!κλήση υποπργ/τος WRITE (*,*) To athroisma einai:, athroisma END SUBROUTINE Prosthesi(a,b,athr) IMPLICIT NONE INTEGER:: a, b, athr athr = a+b END κυρίως σώµα υποπρόγραµµα 10

οµήτουπρογράµµατος (σε C) (vii) Υποπρογράµµατα #include <stdio.h> int i, j; void add(); { i=i+j; } void main() { i=15; j=23; printf("sum of i and j is: "); add(); printf("%d", i); } 11

Τίσηµαίνειορθόπρόγραµµα (i) Συντακτική ορθότητα το πρόγραµµα πρέπει να υπακούει στους συντακτικούς κανόνες της γλώσσας προγραµµατισµού Συντακτικά σφάλµατα στην Fortran εµφανίζονται όταν δεν ικανοποιείται η καθορισµένη σύνταξη παράδειγµα: (PROGRAM) example 12

Τίσηµαίνειορθόπρόγραµµα (ii) Νοηµατική ορθότητα το πρόγραµµα πρέπει να υπακούει τους νοηµατικούς κανόνες της γλώσσας προγραµµατισµού Νοηµατικά σφάλµατα στην Fortran εσφαλµένη χρήση τελεστών n = 'a' + 1 χρήση µεταβλητών χωρίς δήλωση IMPLICIT NONE INTEGER:: n,i n = i + j αδήλωτη 13

Τίσηµαίνειορθόπρόγραµµα (iii) Σηµασιολογική ορθότητα όταν το πρόγραµµα εκτελείται, πρέπει να κάνει ακριβώς αυτό που θέλουµε να κάνει Σηµασιολογικά σφάλµατα στην Fortran προέρχονται από την κακή σχεδίαση ή την κακή υλοποίηση του προγράµµατος αυτά τα σφάλµατα ονοµάζονται συνήθως bugs και η διαδικασία εξάλειψής τους debugging x = (-b + sqr(b*b-4*a*c))/(2*a) 14

Τίσηµαίνειορθόπρόγραµµα (iv) Σηµασιολογική ορθότητα όταν το πρόγραµµα εκτελείται, πρέπει να κάνει ακριβώς αυτό που θέλουµε να κάνει Σηµασιολογικά σφάλµατα στην Fortran προέρχονται από την κακή σχεδίαση ή την κακή υλοποίηση του προγράµµατος αυτά τα σφάλµατα ονοµάζονται συνήθως bugs και η διαδικασία εξάλειψής τους debugging x = (-b + sqr(b*b-4*a*c))/(2*a) sqrt διαίρεση µε το µηδέν 15

Τίσηµαίνειορθόπρόγραµµα (v) Ο µεταγλωττιστής µπορεί να εντοπίσει σε ένα πρόγραµµα την ύπαρξη συντακτικών σφαλµάτων νοηµατικών σφαλµάτων Τυπώνει κατάλληλα µηνύµατα σφάλµατος Ο προγραµµατιστής είναι υπεύθυνος για τη διόρθωση των παραπάνω τον εντοπισµό και τη διόρθωση σηµασιολογικών σφαλµάτων 16

Ανάθεσητιµήςσεµεταβλητή Παραδείγµατα αναθέσεων n = 2 pi = 3.14159 done =.true. ch = 'b' counter = counter + 1 x1 = (-b + sqrt(b*b-4*a*c))/(2*a) 17

Επικοινωνίαµετοχρήστη (i-a) Έξοδος στην οθόνη WRITE(*,*)'Hello world' WRITE(*,*) x WRITE(*,*) n+1 WRITE(*,*) x, y WRITE(*,*) 'Η τιµή του x είναι ', x 18

Επικοινωνίαµετοχρήστη (i-b) Έξοδος µε αλλαγή γραµµής WRITE(*,*) 'hello world'!αλλαγή γραµµής µετά το µήνυµα WRITE(*,'(A)',advance='no') 'hello world'!χωρίς αλλαγή γραµµής WRITE(*,'(A/A)') 'hello', 'world ' ή, ισοδύναµα WRITE(*,10) 'hello', 'world' 10 FORMAT(A/A)!αλλαγή γραµµής µεταξύ των δύο string 19

Επικοινωνίαµετοχρήστη (ii) Παράδειγµα PROGRAM example IMPLICIT NONE INTEGER n,m,athroisma WRITE(*,*) 'Προσθέτω δυο ακέραιους' WRITE(*,*) ' ώσε το n: ' READ(*,*) n WRITE (*,*) ' ώσε το m: ' READ(*,*) m athroisma = n + m WRITE(*,*)'Το άθροισµα ', n, ' + ', & m, ' είναι: ', athroisma STOP END 20

Επικοινωνίαµετοχρήστη (C) (ii) Παράδειγµα #include <stdio.h> void main() { int n, m, sum; printf("προσθέτω δύο ακεραίους\n"); printf(" ώσε το n: "); scanf("%d\n",&n); printf(" ώσε το m: "); scanf("%d\n",&m); sum = n + m; printf("το άθροισµα %d + %d είναι: ",n,m); printf("%d\n",sum); } 21

Αριθµητικέςπαραστάσεις (i) Απλές παραστάσεις σταθερές και µεταβλητές Απλές πράξεις πρόσθεση, αφαίρεση +, - πολλαπλασιασµός * διαίρεση / Ύψωση σε δύναµη ** πρόσηµα +, - 22

Αριθµητικέςπαραστάσεις (ii) Προτεραιότητα τελεστών: (α) ** (β) *,/ (γ) +,- π.χ. 5+3*x-y 5+(3*x)-y Προσεταιριστικότητα µεταξύ *,/ και +,- απόαριστεράπροςταδεξιά π.χ. x-y+1 (x-y)+1 Προσεταιριστικότητα τελεστή ** από δεξιά προς αριστερά π.χ. x**y**z x**(y**z) 23

Αριθµητικέςπαραστάσεις (iii) Σειρά εκτέλεσης των πράξεων καθορίζεται εν µέρει από την προτεραιότητα και την προσεταιριστικότητα των τελεστών γενικά όµως εξαρτάται και από την υλοποίηση χρησιµοποιείτε παρενθέσεις: (x+1)/(y*z) 24

Λογικέςπαραστάσεις (i) Συγκρίσεις ισότητα, ανισότητα ==, /= µεγαλύτερο, µικρότερο >, < µεγαλύτερο ή ίσο, µικρότερο ή ίσο >=, <= Λογικές πράξεις σύζευξη (και).and. διάζευξη (ή).or. άρνηση (όχι).not. 25

Λογικέςπαραστάσεις (ii) Πίνακες αλήθειας λογικών πράξεων p q.and. FALSE FALSE FALSE FALSE TRUE FALSE TRUE FALSE FALSE TRUE TRUE TRUE p q p.or. q FALSE FALSE FALSE FALSE TRUE TRUE TRUE FALSE TRUE TRUE TRUE TRUE p FALSE TRUE.NOT. p TRUE FALSE 26

Λογικέςπαραστάσεις (iii) Προτεραιότητα λογικών τελεστών.not. : µεγαλύτερη προτεραιότητα από όλους.and. : όπως ο πολλαπλασιασµός.or. : όπως η πρόσθεση π.χ..not. p.and. q.or. r ((.NOT. p).and. q).or. r Προσεταιριστικότητα.NOT. : από δεξιά προς αριστερά.and.,.or. : απόαριστεράπροςδεξιά 27

Προτεραιότητατελεστώνσυνολικά 1) Αριθµητικοί 2) Σύγκρισης 3) Λογικοί Παράδειγµα: x>3+4.and..not. y==5 x>(3+4).and..not. y==5 (x>(3+4)).and..not. y==5 (x>(3+4)).and. (.NOT. (y==5)) Χρησιµοποιείτε παρενθέσεις! 28

οµέςελέγχου Τροποποιούν τη σειρά εκτέλεσης των εντολών του προγράµµατος Οι εντολές φυσιολογικά εκτελούνται κατά σειρά απότηναρχήµέχριτοτέλος Με τις δοµές ελέγχου επιτυγχάνεται: εκτέλεση εντολών υπό συνθήκη οµαδοποίηση εντολών επανάληψη εντολών 29

Εντολή IF (i) Εκτέλεση εντολών υπό συνθήκη Συντακτικό διάγραµµα boolean IF THEN statement expression ELSE statement if_statement 30

Εντολή IF IF (x>10) THEN x=x+1 END IF IF (age<10) THEN WRITE(*,*) 'παιδί' END IF (ii-a) IF (λογική έκφραση) THEN σύνολο εντολών END IF Η λογική έκφραση αποτιµάται σε.true. ή.false. και µπαίνει σε παρενθέσεις IF ((year>1900).and.(year<=2000))then WRITE (*,*) '20ός αιώνας' END IF 31

Εντολή IF (ii-b) Υπολογισµός δίσεκτου έτους IF ((MOD(year,4)==0).AND. & (MOD(year,100)/=0).OR. & (MOD(year,400)==0).AND. & (MOD(year,4000)/=0)) THEN WRITE(*,*) 'disekto etos' END IF 32

Εντολή if (C) (ii) Παραδείγµατα if (x>10) x = x+1; if (age<10) printf("παιδί"); if ((year>1900) && (year<=2000) printf("20ός αιώνας"); if ((year%4==0) && (year%100!=0) (year%400==0) && (year%4000!=0)) printf("δίσεκτο έτος"); 33

Εντολή IF Παραδείγµατα (συνέχεια) IF (changed) THEN WRITE(*,*) 'Το αρχείο & άλλαξε' changed =.FALSE. END IF (iii) IF (mine) THEN me = 1; you = 0 ELSE me=0; you=1 END IF IF (MOD(x,2)==0) THEN WRITE(*,*)'άρτιος' ELSE WRITE(*,*)'περιττός' END IF IF (x > y) THEN WRITE(*,*)'µεγαλύτερο' ELSEIF (x < y) THEN WRITE(*,*)'µικρότερο' ELSE WRITE(*,*) 'ίσο' END IF 34

Εντολή if (C) (iii) Παραδείγµατα (συνέχεια) if (changed) { printf("το αρχείο άλλαξε\n"); changed = 0; } if (x%2==0) printf("άρτιος"); else printf("περιττός"); if (mine) { me=1; you=0; } else { me=0; you=1; } if (x>y) printf("µεγαλύτερο"); else if (x<y) printf("µικρότερο"); else printf("ίσο"); 35

Εντολή IF (iv) Ένα ELSE αντιστοιχεί στο πλησιέστερο προηγούµενο IF που δεν έχει ήδη αντιστοιχιστεί σε άλλο ELSE Παράδειγµα IF (x>0) THEN IF (y>0) THEN WRITE(*,*) ' 1o τεταρτηµόριο ' ELSEIF (y<0) THEN WRITE(*,*) '4o τεταρτηµόριο ' ELSE! y=0 WRITE(*,*) 'άξονας των x END IF ELSE WRITE(*,*) ' αριστερό ηµιεπίπεδο ' END IF 36

Εντολή if (C) (iv) Ένα else αντιστοιχεί στο πλησιέστερο προηγούµενο if που δεν έχει ήδη αντιστοιχιστεί σε άλλο else Παράδειγµα if (x>0) if (y>0) printf("πρώτο τεταρτηµόριο"); else if (y<0) printf("τέταρτο τεταρτηµόριο"); else else printf("άξονας των x"); printf(" αριστερό ηµιεπίπεδο"); 37

Λογικάδιαγράµµαταροής (i) Αρχή και τέλος Ολόκληρες λειτουργίες ή διαδικασίες Απλές εντολές Έλεγχος συνθήκης 38

Λογικάδιαγράµµαταροής (ii) Λειτουργία εισόδου/εξόδου Επανάληψη (βρόχος) 39

Εντολή SELECT CASE (i) Εκτέλεση υπό συνθήκη για πολλές διαφορετικές περιπτώσεις Προσφέρεται π.χ. αντί του: IF (month==1) THEN WRITE(*,*) 'Ιανουάριος' ELSEIF (month==2) THEN WRITE(*,*) 'Φεβρουάριος ELSEIF...... ELSEIF (month==12) THEN WRITE(*,*) ' εκέµβριος ' ELSE WRITE(*,*) 'Λάθος εδοµένα' END IF 40

Εντολή SELECT CASE (ii) Το προηγούµενο µε SELECT CASE SELECT CASE (month) CASE (1) WRITE(*,*) 'Ιανουάριος ' CASE (2) WRITE(*,*) 'Φεβρουάριος' CASE (3) WRITE(*,*) 'Μάρτιος'... CASE (12) WRITE(*,*) ' εκέµβριος ' CASE DEFAULT WRITE(*,*) 'Λάθος εδοµένα' END SELECT 41

Εντολή case (C) (ii-a) Παραδείγµατα switch (month) { case 1: printf("ιανουάριος"); break; case 2: printf("φεβρουάριος"); break; case 3: printf("μάρτιος"); break;... case 12: printf(" εκέµβριος"); break; } 42

Εντολή case (C) (ii-b) Παραδείγµατα switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: printf("31 µέρες"); break; case 4: case 6: case 9: case 11: printf("30 µέρες"); break; case 2: printf("28 ή 29"); break; } 43

Εντολή SELECT CASE (iii) SELECT CASE (selector)!selector: integer, character, logical expression CASE (value_list1)!value_list: εύρος τιµών, τιµή ή τιµές σύνολο εντολών 1 CASE (value_list2) σύνολο εντολών 2 CASE (value_list3) σύνολο εντολών 3... To case default µπορεί CASE DEFAULT να µπεί οπουδήποτε σύνολο εντολών n αλλά συνήθως µπαίνει στο τέλος END SELECT Παραδείγµατα value list case (5), case (3,8), case (5:7), case ( :7), case (5: ) 44

Εντολή SELECT CASE SELECT CASE (class_code) CASE (1) WRITE (*,*) "jounior" CASE (2) WRITE (*,*) "senior" CASE (3) WRITE (*,*) "graduate"... CASE DEFAULT WRITE (*,*) "Λάθος " END SELECT (iv)!selector: integer!value_list: τιµή 45

Εντολή SELECT CASE SELECT CASE (class_name) characters CASE ("jounior") τιµή WRITE (*,*) 1 CASE ("senior" ) WRITE (*,*) 2 CASE ("graduate" ) WRITE (*,*) 3... CASE DEFAULT WRITE (*,*) "Λάθος " END SELECT!selector:!value_list: (v) 46

Εντολή SELECT CASE (vi) SELECT CASE (ΙΝΤ(average)) integer CASE (90:) εύρος τιµών WRITE (*,*) "grade A" CASE (80:89 ) WRITE (*,*) "grade B" CASE (:59) WRITE (*,*) "grade C"...!selector:!value_list: END SELECT 47

Εντολή SELECT CASE SELECT CASE (index) integer CASE (high : ) εύρος τιµών WRITE (*,*) "poor" CASE (low : high-1 ) WRITE (*,*) " fair" CASE (: low-1 ) WRITE (*,*) " good" END SELECT!selector:!value_list: (vii) 48

Εντολή SELECT CASE SELECT CASE (index) integer CASE (1,2,3,4) τιµές WRITE (*,*) "poor" CASE (5,6,7) WRITE (*,*) " fair" CASE (8,9,10) WRITE (*,*) " good" END SELECT!selector: (viii)!value_list: 49

Τιµάθαµε Βασικά στοιχεία προγραµµατισµού µε FORTRAN οµή προγράµµατος: δηλώσεις, κυρίως σώµα υποπρογράµµατα Βασικοίτύποιδεδοµένων: INTEGER, REAL, CHARACTER, LOGICAL, COMPLEX Ανάθεση: = Είσοδος-έξοδος: READ, WRITE Τελεστές: αριθµητικοί, σύγκρισης, λογικοί Προτεραιότητα-παραστάσεις οµέςελέγχου: IF-THEN-ELSE, CASE Είµαστε έτοιµοι για τα πρώτα µας προγράµµατα! 50