Re: Προγραμματισμός & χρήση Η/Υ (2012-13)

32
Ναι. Το print γράφει μόνο στην οθόνη, ενώ το write γράφει και σε αρχεία (ή τουλάχιστον αυτή είναι η μόνη διαφορά που ξέρω). Αν σε μπερδεύει να σκέφτεσαι ποιο κάνει τι, απλώς ξέχνα το print και βάζε παντού write. Δεν γνωρίζω όμως ιστορικά γιατί υπάρχουν και οι δυο εντολές. Το είχα ψευτοψάξει κάποτε και είχα βρει ότι είναι πολύ παλιές και οι δυο εντολές.

διόρθωση-συμπλήρωση: η Print έχει μόνο επιλογή για το ΠΩΣ θα γράψει κάτι (format).
Η Write έχει επιλογές για το ΠΟΥ (οθόνη-αρχείο κα) και το ΠΩΣ (format), ενώ επιστρέφει την κατάσταση της εκτέλεσής της (IOSTAT=Input/Output Status) και αριθμό σφάλματος. Τα δυο τελευταία είναι προαιρετικά.

Re: Προγραμματισμός & χρήση Η/Υ (2012-13)

33
Για την τοποθέτηση στοιχείων σε πίνακα ,ποιος τρόπος ειναι ευκολότερος/καλύτερος ;
Ο τρόπος με το "DO-ENDO" ή με το "implied do" ;

Για να το εφαρμόζω και σε δισδιαστατες arrays και σε μονοδιάστατες.

Re: Προγραμματισμός & χρήση Η/Υ (2012-13)

34
Κοίτα το πιο εύκολο σίγουρα είναι το

Κώδικας: Επιλογή όλων

real x(3,3)

read*,x

που δεν είναι κανένα από τα 2. Το implied do είναι εύχρηστο μεν και πιάνει λίγο χώρο, ωστόσο και τα αυτά εύκολα μειωνεκτούν με το διπλό do ή το απλό μονό (1 διασταση array) στο εξής, δεν μπορείς να έχεις συνθηκες στο read σου, δεν μπορείς πχ να πεις αν το i>3 το βάλε τη τιμη ι*3 else βάλε i. Άρα, οι 2 παραπάνω εύκολοι και μικροί τρόποι χρησιμεύουν όταν έχουμε και ένα απλό read
People who wish to analyze nature without using mathematics must settle for a reduced understanding

Re: Προγραμματισμός & χρήση Η/Υ (2012-13)

35
Προσοχή όμως, οι διδιάστατες arrays αποθηκεύονται στη μνήμη κατά στήλες (ακριβέστερα: κατά τον δεύτερο "δείκτη-index").
Spoiler: show

Κώδικας: Επιλογή όλων

Program test

implicit none
real x(3,3)
integer i,j

read *,x

Do i=1,3
        print *, ( x(i,j), j=1,3 )
enddo


End     
Γενικότερα, δεν συμβαίνει αυτό που περιμένουμε. Παρατηρήστε ποια σειρά έχουν οι μετρητές στα DO στο παρακάτω παράδειγμα ώστε να βγουν οι τιμές που βάλαμε με τη σειρά που τις βάλαμε. Θέλει προσοχή λοιπόν.
Σημείωση: αγνοήστε τα περίεργα στην print, θα μάθουμε αργότερα τι σημαίνουν.
Spoiler: show

Κώδικας: Επιλογή όλων

Program test

implicit none
real x(2,2,2)
integer i,j,k

read *,x

Do k=1,2
        Do j=1,2
                Do i=1,2
                        print "(A,I1,2(',',I1),A,F4.1)", "x(",i,j,k,")=",x(i,j,k)
                enddo
        enddo
enddo

End    

Re: Προγραμματισμός & χρήση Η/Υ (2012-13)

37
Ούτε 2D αναπαράσταση έχει, τεχνητό είναι αυτό που κάνεις.
Στην πραγματικότητα οι "διαστάσεις" είναι indexes (οι αριθμοί μέσα στις παρενθέσεις). Έχοντας μια array με 5 θέσεις μέσα στην παρένθεση, πρέπει να καθορίσω αντίστοιχα 5 τιμές για να προκύψει ένα στοιχείο. Για να μας βολεύει, στο χαρτί (και στην οθόνη), τα γράφουμε σε γραμμές και στήλες.