Fortran: εντολές και άλλα χρήσιμα
Δημοσιεύτηκε: Δευ 28 Μάιος 2012, 9:20 pm
Γράψτε εδώ "επιπλέον" εντολές και άλλα χρήσιμα "κολπάκια" που κατά καιρούς χρησιμοποιείτε σε κώδικες Fortran. Γράψτε επίσης εδώ ενδιαφέρουσες σχετικές ιστοσελίδες, όπως το Fortran Wiki.
Κάνω την αρχή με κάποια πράγματα που έχω πρόσφατα στο μυαλό μου:
1. Για να βρείτε το χρόνο εκτέλεσης ενός κομματιού κώδικα, μπορείτε να χρησιμοποιήσετε την υπορουτίνα cpu_time ως εξής:
2. Για να αποθηκεύσετε δεδομένα κατευθείαν σε αρχεία που μπορεί να διαβάσει ως πίνακες το Excel ή άλλα προγράμματα, μπορείτε να αποθηκεύσετε σε μορφή ".csv" (="comma separated values"). Δεν είναι και ότι καλύτερο, αφού δεν είναι προτυποποιημένο ως προς υποδιαστολή/διαχωριστικό στηλών (column delimiter), αλλά μερικές φορές βολεύει. Θα πρέπει όταν γράψετε τις τιμές μιας γραμμής ενός πίνακα σε ένα αρχείο, να βάλετε ανάμεσα το σύμβολο που έχετε ρυθμίσει ως column delimiter. Συνηθίζεται αυτό να είναι η άνω τελεία (";"). Δηλαδή μπορείτε να γράψετε:
Ο column delimiter και η υποδιαστολή που καταλαβαίνει το Excel αντλούνται από τις "τοπικές ρυθμίσεις" των Windows. Το LibreOffice Calc καταλαβαίνει ότι του πείτε σε κάθε αρχείο ή ακόμα και μεμονωμένο κελί.
(credits στον Orpheus για την ιδέα) edit: μάλλον θέλει μονά εισαγωγικά μέσα...
3. Για να καλέσετε εντολές του συστήματος μέσα από έναν κώδικα μπορείτε να χρησιμοποιήσετε την υπορουτίνα system.
Για παράδειγμα, εάν σε κάποιο σημείο γράψω:
τότε θα ανοίξει το αρχείο results.txt στον κειμενογράφο nano (μέσα στο terminal), θα μπορώ να δω-επεξεργαστώ τα αποτελέσματα και, αφού κλείσω τον κειμενογράφο, το πρόγραμμα θα συνεχίσει τη λειτουργία του.
Ομοίως μπορώ να καλέσω και γραφικές εφαρμογές φυσικά:
(credits στον κ. Καραντώνη)
4. Πριν λίγες μέρες, στα ««σεμινάρια»» χρήσης Η/Υ που γίνονται κάθε Τετάρτη προσπάθησα να κάνω μια παρουσίαση για σύνθετους τύπους δεδομένων (derived data types) στη Fortran. Επισυνάπτω τις διαφάνειες για όποιον ενδιαφέρεται, με κάθε επιφύλαξη για λάθη ή ανακρίβειες. Δείτε επίσης τις αντικειμενοστραφείς δυνατότητες της Fortran. Εκεί θα βρείτε και κάποια βασικά πράγματα για τα modules.
Κάνω την αρχή με κάποια πράγματα που έχω πρόσφατα στο μυαλό μου:
1. Για να βρείτε το χρόνο εκτέλεσης ενός κομματιού κώδικα, μπορείτε να χρησιμοποιήσετε την υπορουτίνα cpu_time ως εξής:
Κώδικας: Επιλογή όλων
real :: time1, time2
...
call cpu_time(time1)
(κομμάτι κώδικα που ενδιαφέρει)
call cpu_time(time2)
Write (*,*) "Processing time = ", time2-time1, " seconds"
Κώδικας: Επιλογή όλων
Write (1,"(100(F5.2,';'))") (A(i,j), j=1,N)
(credits στον Orpheus για την ιδέα) edit: μάλλον θέλει μονά εισαγωγικά μέσα...
3. Για να καλέσετε εντολές του συστήματος μέσα από έναν κώδικα μπορείτε να χρησιμοποιήσετε την υπορουτίνα system.
Για παράδειγμα, εάν σε κάποιο σημείο γράψω:
Κώδικας: Επιλογή όλων
call system("nano results.txt")
Ομοίως μπορώ να καλέσω και γραφικές εφαρμογές φυσικά:
Κώδικας: Επιλογή όλων
call system("libreoffice --calc results.csv")
4. Πριν λίγες μέρες, στα ««σεμινάρια»» χρήσης Η/Υ που γίνονται κάθε Τετάρτη προσπάθησα να κάνω μια παρουσίαση για σύνθετους τύπους δεδομένων (derived data types) στη Fortran. Επισυνάπτω τις διαφάνειες για όποιον ενδιαφέρεται, με κάθε επιφύλαξη για λάθη ή ανακρίβειες. Δείτε επίσης τις αντικειμενοστραφείς δυνατότητες της Fortran. Εκεί θα βρείτε και κάποια βασικά πράγματα για τα modules.