Ο τελεστής ανάθεσης και οι εντολές εισόδουεξόδου Ο τελεστής ανάθεσης = και η βασική του διαφορά από το σύµβολο ισότητας. Η εντολή ανάγνωσης µεταβλητών READ. Η εντολή εκτύπωσης µεταβλητών WRITE.
οµή προβληµάτων που θα ασχοληθούµε ΕΙΣΟ ΟΣ ΕΠΕΞΕΡΓΑΣΙΑ ΕΞΟ ΟΣ Χρειαζόµαστε εντολές για είσοδο δεδοµένων (READ). Χρειαζόµαστε εντολές για επεξεργασία δεδοµένων (=). Χρειαζόµαστε εντολές για έξοδο δεδοµένων (WRITE PRINT).
Ο τελεστής ανάθεσης Μεταβλητή = έκφραση Παράδειγµα. Α=1 Α=Α+1 Β=Α Α Α 1 2
Παρατηρήσεις 1. Προσοχή κατά την τοποθέτηση των παρενθέσεων. 2. Χρήση του ίδιου ονόµατος µεταβλητής σε όλα τα σηµεία του προγράµµατος. 3. Οι µεταβλητές δεξιά του = έχουν πάρει τιµή. 4. Τα ορίσµατα έχουν σωστές τιµές. 5. Ονόµατα µεταβλητών σχετικά µε το τι παριστούν. 6. Χρήση της PARAMETER για σταθερές. 7. Σπάσιµο πολύπλοκων εκφράσεων σε απλούστερες. 8. Χρήση των ενσωµατωµένων συναρτήσεων.
Ηεντολή εισόδου READ READ READ χωρίς FORMAT Τα δεδοµένα δίνονται µε κόµµα ή κενό ανάµεσα τους READ µε FORMAT Τα δεδοµένα δίνονται µε προκαθορισµένο τρόπο που ορίζεται από την FORMAT
Ηεντολή εισόδου READ χωρίς FORMAT Σύνταξη READ*, λίστα µεταβλητών ή READ(n,*) λίστα µεταβλητών Όπου n=*,0 ή 5 που δηλώνει ως µονάδα εισόδου το πληκτρολόγιο. Παράδειγµα READ*, Α, Β READ(5,*) Α,Β READ(*,*) Α,Β
Παράδειγµα PROGRAM TEST IMPLICIT NONE! Όλες οι µεταβλητές θα δηλώνονται. INTEGER A,B,Υ! ήλωση των ακέραιων µεταβλητών READ*,A,B! Απαιτεί την εισαγωγή 2 ακεραίων τιµών για Α,Β Y=MOD(A,B)! Υπολογίζει το υπόλοιπο της ακέραιας διαίρεσης του Α! µε το Β και το τοποθετεί στην µεταβλητή Υ END PROGRAM TEST
Παρατηρήσεις 1. Αντιστοίχιση αριθµού µεταβλητών, τύπου δεδοµένων, σειράς δεδοµένων. 2. Κατά την εισαγωγή δεδοµένων διαχωρίζουµε τα δεδοµένα µε κόµµα και τα strings τα τοποθετούµε σε εισαγωγικά. 3. Τι γίνεται αν τα δεδοµένα που τοποθετούµε είναι (περισσότερα, ίσα, λιγότερα) από αυτά που χρειάζεται η READ ; 4. Κάθε READ διαβάζει από καινούρια γραµµή.
Ηεντολή εξόδου PRINT-WRITE WRITE WRITE χωρίς FORMAT Ο Η/Υ επιλέγει τον τρόπο µε τον οποίο θα εκτυπωθούν τα δεδοµένα. WRITE µε FORMAT Με την FORMAT επιλέγουµε τον τρόπο µε τον οποίο θέλουµε να εκτυπωθούν τα δεδοµένα.
Ηεντολή εξόδου WRITE χωρίς FORMAT Σύνταξη PRINT*, λίστα {σταθερών, µεταβλητών ή εκφράσεων} ή WRITE(n,*) λίστα λίστα {σταθερών, µεταβλητών ή εκφράσεων} όπου n=*,0 ή 6 που δηλώνει ως µονάδα εξόδου την οθόνη. Παράδειγµα PRINT*, Α, Β WRITE(6,*) A=,Α, B=,Β WRITE(*,*) Α,Β
Παράδειγµα PROGRAM TEST IMPLICIT NONE! Όλες οι µεταβλητές θα δηλώνονται. INTEGER A,B,Υ! ήλωση των ακέραιων µεταβλητών READ*,A,B! Απαιτεί την εισαγωγή 2 ακεραίων τιµών για Α,Β Y=MOD(A,B)! Υπολογίζει το υπόλοιπο της ακέραιας διαίρεσης του Α! µε το Β και το τοποθετεί στην µεταβλητή Υ PRINT*, RESIDUE=,Y PRINT*, QUOTIENT=,(A-Y)/B END PROGRAM TEST
Πως θα εµφανίζονται τα αποτελέσµατα ; 1. α. οι ακέραιοι αριθµοί θα καταλαµβάνουν 11 θέσεις, β. οι πραγµατικοί αριθµοί θα καταλαµβάνουν 16 θέσεις, από τις οποίες οι 6 θέσεις θα είναι για τα δεκαδικά ψηφία, γ. οι πραγµατικοί αριθµοί διπλής ακρίβειας θα καταλαµβάνουν 24 θέσεις, από τις οποίες οι 15 θέσεις θα είναι για τα δεκαδικά ψηφία 2. Μεταξύ των αριθµών που θα εκτυπώνονται θα υπάρχει ένα κενό, ενώ µεταξύ αριθµών και χαρακτήρων δεν υπάρχει κενό. 3. Οι αριθµοί θα στοιχίζονται προς τα δεξιά, σε αντίθεση µε τις αλυσίδες χαρακτήρων που θα έχουν αριστερή στοίχιση. 4. Η κάθε WRITE-PRINT εκτυπώνει σε διαφορετική γραµµή.
Προσπαθήστε να µεταφράσετε και να εκτελέσετε το παρακάτω παράδειγµα PROGRAM TEST IMPLICIT NONE INTEGER (4) :: A REAL (4) :: B REAL (8) :: C CHARACTER (10) :: NAME A=3 B=45.2 C=23.56 NAME= NIKOS PRINT*,A,B,C,NAME END PROGRAM TEST * υαδική µορφή του 23.56 : 10111.100011110101110000101
ραστηριότητα Τι πιστεύετε ότι θα εκτυπωθεί από το παρακάτω πρόγραµµα ; PROGRAM TEST IMPLICIT NONE INTEGER LENGTH REAL HEIGHT CHARACTER NAME LENGTH=3 ; HEIGHT=5.2 NAME= ANASTASIA PRINT*,LENGTH, HEIGHT WRITE(6,*) NAME END PROGRAM TEST
Απλά προβλήµατα εισόδου-εξόδου Καταθέτουµε σε µια τράπεζα στην αρχή του κάθε έτους ένα σταθερό ποσό Α. Αν η κατάθεση γίνεται µε επιτόκιο Ε%, τότε το κεφάλαιο Κ µετά την ν-οστή κατάθεση θα είναι : K ( ) ( ) N A 1+ E 1+ E 1 = E Να γραφεί πρόγραµµα υπολογισµού του Κ αν είναι γνωστά τα Α, Ε και Ν. Α) Περιγραφή εισόδου-εξόδου Είσοδος Το σταθερό ποσό Α, το επιτόκιο E% καιταχρόνιαν. Έξοδος Το συνολικό κεφάλαιο Κ µετά από Ν χρόνια.
Απλά προβλήµατα εισόδου-εξόδου Β) Παράδειγµα µε το χέρι. Έστω Ν=1χρόνος, Ε=0.02 και Α=1000. K ( ) ( ) 1 1000 1+ 0.02 1+ 0.02 1 = = 1020 0.02 Γ) Αλγόριθµος προβλήµατος Βήµα 1. ιαβάζουµε τις τιµές α) του αρχικού κεφαλαίου Α, β) του επιτοκίου Ε, και γ) των χρόνων Ν. Βήµα 2. Υπολογίζουµε το συνολικό κεφάλαιο από τον τύπο που µας δώθηκε. Βήµα 3. Εκτυπώνουµε τα αποτελέσµατα.
Απλά προβλήµατα εισόδου-εξόδου ) Πρόγραµµα PROGRAM EXAMPLE31! Το πρόγραµµα αυτό υπολογίζει το τελικό κεφάλαιο Κ, µετά από ετήσια! κατάθεση ποσού Α, για Ν συνεχόµενα χρόνια και µε επιτόκιο Ε! Α=ποσό ετήσιας κατάθεσης, Ε=επιτόκιο, Ν=χρόνια, Κ=τελικό ποσό! ήλωση σταθερών, µεταβλητών IMPLICIT NONE INTEGER :: N REAL :: E,A,Κ! ΒΗΜΑ 1. ΕΙΣΑΓΩΓΗ ΑΡΧΙΚΩΝ ΤΙΜΩΝ PRINT*, POSO =' READ*,A PRINT*,'RATE =' READ*,E PRINT*,'YEARS =' READ*,N
Απλά προβλήµατα εισόδου-εξόδου! ΒΗΜΑ 2. ΥΠΟΛΟΓΙΣΜΟΣ ΤΕΛΙΚΟΥ ΠΟΣΟΥ T=A*(1+E)*((1+Ε)**N-1)/Ε! ΒΗΜΑ 3. ΕΚΤΥΠΩΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ PRINT*, TELIKO POSO=,K, EURO END PROGRAM EXAMPLE42
Άσκηση 3.2 Να διαβαστούν οι κάθετες πλευρές Α, Β ενός ορθογωνίου τριγώνου και στη συνέχεια να υπολογιστεί α) η υποτείνουσα του τριγώνου C, και β) το εµβαδόν Ε του τριγώνου, από τους τύπους : 2 2 C = A + B 1 E = A B 2
Ηεντολή εισόδου READ µε FORMAT Σύνταξη : READ f, λίστα µεταβλητών ή READ(n,f) λίστα µεταβλητών όπου n=*,0 ή 5 που δηλώνει ως µονάδα εισόδου το πληκτρολόγιο, f=ετικέτα (label) (θετικός ακέραιος αριθµός) που δηλώνει τη θέση της FORMAT που αντιστοιχεί στην συγκεκριµένη READ f FORMAT(λίστα από περιγραφές)
Ηεντολή εισόδου READ µε FORMAT Χαρακτηριστικό Περιγραφή nx Iw Fw.d Ew.d Dw.d N κενοί χαρακτήρες W θέσεις για ακέραιο αριθµό W θέσεις για πραγµατικό από τις οποίες d θέσεις για δεκαδικά. d ± xx. xxxx W θέσεις για πραγµατικό κινητής υποδιαστολής από τις οποίες d θέσεις για δεκαδικά. d ± xx. xxe± xx W θέσεις για πραγµατικό διπλής ακρίβειας από τις οποίες d θέσεις για δεκαδικά. d ± xx. xxd± xx w w w
Ηεντολή εισόδου READ µε FORMAT Χαρακτηριστικό A[w] Lw Περιγραφή W θέσεις για αλυσίδα χαρακτήρων W θέσεις για λογικούς χαρακτήρες
Παράδειγµα 1 PROGRAM TEST IMPLICIT NONE 2 4 5 REAL X READ 10, X 10 FORMAT(F9.1) PRINT*,X 2 4. 2 5 2 4 4 5 5 END * Η υποδιαστολή κατά την είσοδο των δεδοµένων έχει µεγαλύτερη ισχύ από τη FORMAT.
Παράδειγµα 2 PROGRAM BIRTHDAY IMPLICIT NONE INTEGER D,M,Y READ(5,10) D,M,Y 10 FORMAT(I2,1X,I2,1X,I4) PRINT*,D, -,M, -,Y END
Παράδειγµα 3 PROGRAM TEST IMPLICIT NONE CHARACTER (10) :: NAME LOGICAL CONDITION READ(5,10) NAME,CONDITION 10 FORMAT(A10,1X,L1) PRINT*,NAME,CONDITION END
Άσκηση Να γραφεί πρόγραµµα που θα διαβάζει τα στοιχεία µιας πιστωτικής κάρτας : xxxx-xxxx-xxxx-xxxx και θα εµφανίζει τους 4 αριθµούς της πιστωτικής κάρτας.
Ηεντολή εξόδου WRITE µε FORMAT Σύνταξη : PRINT f, λίστα {σταθερών, µεταβλητών ή εκφράσεων} ή WRITE(n,f) λίστα λίστα {σταθερών, µεταβλητών ή εκφράσεων} όπου n=*,0 ή 6 που δηλώνει ως µονάδα εξόδου την οθόνη και f=το label (ετικέτα) της FORMAT που συνδέεται µε την αντίστοιχη WRITE-PRINT. f FORMAT(λίστα από περιγραφές)
Ηεντολή εξόδου WRITE µε FORMAT Πρώτος Περιγραφή χαρακτήρας FORMAT 1 Η εκτύπωση της γραµµής θα γίνει σε νέα σελίδα. Κενό (ή 1Χ) Η εκτύπωση της γραµµής θα γίνει στην αµέσως επόµενη γραµµή. 0 Η εκτύπωση της γραµµής θα γίνει στη µεθεπόµενη γραµµή. + Η εκτύπωση της γραµµής θα γίνει στην ίδια γραµµή. * Οι υπόλοιποι χαρακτήρες ακολουθούν την ίδια δοµή µε αυτή της READ.
Παραδείγµατα PRINT 10 10 FORMAT( 1, RESULTS ) WRITE(6,10) 10 FORMAT( 0, 123 ) COMPLEX A READ*,A WRITE(6,10) 10 FORMAT(1X,F5.1,1X,F5.1)
Επιπλέον Χαρακτήρες String Περιγραφή Εµφανίζει το αντίστοιχο string στην οθόνη. nh Μεταφέρει τους επόµενους n χαρακτήρες που ακολουθούν το Η στην έξοδο (πρόκειται να καταργηθεί σε επόµενες εκδόσεις). Tc, TLc, TRc Προσδιορίζει τη στήλη στην οποία θα εκτυπωθεί αυτό που θέλουµε : θα εκτυπωθεί στη c στήλη, θα εκτυπωθεί στη c στήλη προς τα αριστεράσε σχέση µε αυτήν που βρισκόµαστε τώρα, θα εκτυπωθεί στην c στήλη προς τα δεξιάσε σχέση µε αυτήν που βρισκόµαστε τώρα. / Αλλάζει γραµµή. Πρέπει να ακολουθεί ο πρώτος χαρακτήρας που προσδιορίζει την κάθετη θέση της επόµενης γραµµής. \ Συνεχίζει στην ίδια γραµµή.
Παραδείγµατα WRITE(6,10) 10 FORMAT(1X,TR20, MAIN RESULTS /1X,TR10, X,TR5,4HY(Χ)
Παρατηρήσεις 1. Πολλές READ/WRITE χρησιµοποιούν την ίδια FORMAT READ(5,10) A READ(5,10) B 10 FORMAT(1X,F5.2) 2. Μεταξύ READ/WRITE και FORMAT ισχυρότερη είναι η πρώτη WRITE(6,10) A,B,C 10 FORMAT(1Χ,F8.2,F4.1) 3. Αποτέλεσµα εκτύπωσης *** (χρησιµοποίησε Εw.d). 4. ήλωση του πρώτου χαρακτήρα της FORMAT WRITE(6,10) 10 FORMAT( NIKOS ) 5. Προσθήκη τίτλων στα αποτελέσµατα WRITE(6,10) A 10 FORMAT(1X, A=,F5.1, cm )
Παραδείγµατα από προηγούµενο παράδειγµα! ΒΗΜΑ 2. ΥΠΟΛΟΓΙΣΜΟΣ ΤΕΛΙΚΟΥ ΠΟΣΟΥ T=A*(1+E)*((1+Ε)**N-1)/Ε! ΒΗΜΑ 3. ΕΚΤΥΠΩΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ WRITE(6,10) A,E,N,K 10 FORMAT(1X, ETHSIO POSO=,F10.2, EURO & & /1Χ, EPITOKIO=,F5.2, & & /1Χ, ETH=,I3, XRONIA, & & /1Χ, TELIKO POSO=,F10.2, EURO ) END PROGRAM EXAMPLE42
Άσκηση Να γραφεί πρόγραµµα που θα διαβάζει τα στοιχεία µιας πιστωτικής κάρτας : xxxx-xxxx-xxxx-xxxx και θα εµφανίζει τον αριθµό : xxxxxxxxxxxxxxxx
Άσκηση Να διαβαστεί η ακτίνα ενός κύκλου R και να υπολογιστεί α) η περίµετρος P, και β) το εµβαδόν Ε του κύκλου από τους τύπους : όπου π=3.14 P = 2 πr ; E = πr 2
Άσκηση (για σπίτι) Οµάδα 1-4, Άσκ. 4 (κεφ.4) Οµάδα 5-7, Άσκ. 5 (κεφ.4) Οµάδα 8-10, Άσκ. 6 (κεφ.4)