FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

Σχετικά έγγραφα
FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

Πίνακες. FORTRAN και Αντικειμενοστραφής Προγραμματισμός

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

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

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

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

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017

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

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

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

Πίνακες. (i) FORTRAN και Αντικειµενοστραφής Προγραµµατισµός

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

Μονοδιάστατοι πίνακες

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

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

Εισαγωγή στον Προγραμματισμό Η/Υ (Fortran 90/95/2003)

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

8 FORTRAN 77/90/95/2003

Μονοδιάστατοι Πίνακες

Εισαγωγή στον Προγραμματισμό Η/Υ για Χημικούς Μηχανικούς

Αποτελέσματα προόδου

Μονοδιάστατοι πίνακες

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 24/3/2007

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

Πρόβλημα 1: Αναζήτηση Ελάχιστης/Μέγιστης Τιμής

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

Άσκηση 1. Α. Υπολογίστε χωρίς να εκτελέσετε κώδικα FORTRAN τα παρακάτω: Ποιά είναι η τελική τιμή του Z στα παρακάτω κομμάτια κώδικα FORTRAN:

Μεταγλωττιστές Βελτιστοποίηση

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

FORTRAN και Αντικειμενοστραφής Προγραμματισμός

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

Πίνακες. (i) FORTRAN και Αντικειµενοστραφής Προγραµµατισµός

Κεφάλαιο 5ο: Εντολές Επανάληψης

Στόχοι και αντικείμενο ενότητας. Πέρασμα Πίνακα σε Συνάρτηση (συν.) Πέρασμα Πίνακα σε Συνάρτηση. #8.. Ειδικά Θέματα Αλγορίθμων

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Εισαγωγή στην FORTRAN. Δρ. Ιωάννης Λυχναρόπουλος

ΚΕΦΑΛΑΙΟ 1ο 3ο. ΚΕΦΑΛΑΙΟ 5ο 6ο. ΚΕΦΑΛΑΙΟ 7ο. Δομημένος Προγραμματισμός - Γενικές Ασκήσεις Επανάληψης

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

Μεταγλωττιστές Βελτιστοποίηση

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τι είναι μια υπορουτίνα; με υπορουτίνα ΥΠΟΡΟΥΤΙΝΕΣ. Παράδειγμα #1: η πράξη SQ. Ποια η διαφορά συναρτήσεων και υπορουτίνων;

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

ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΣΧΟΛΗ ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ - ΕΙΣ

Τμήμα Φυσικής Πανεπιστημίου Κύπρου Εαρινό Εξάμηνο 2015/2016. ΦΥΣ145 Υπολογιστικές Μέθοδοι στην Φυσική

Προγραμματισμός Η/Υ. Ενότητα 8: Ειδικά Θέματα Αλγορίθμων

Μονοδιάστατοι πίνακες (συνέχεια)

Το πλήθος των δεικτών και οι µεγαλύτερες τιµές που µπορούν να πάρουν ορίζεται µε µία δηλωτική εντολή που λέγεται Dimension.

IMPLICIT NONE INTEGER :: a, b, c

Υπολογιστές Ι. Άδειες Χρήσης. Υποπρογράμματα. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

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

Διάλεξη 2η: Αλγόριθμοι και Προγράμματα

Εισαγωγή στον Προγραμματισμό Η/Υ για Χημικούς Μηχανικούς

Συναρτήσεις και Πίνακες

ΜΑΗΣ ΕΞΕΤΑΣΤΙΚΟ ΔΟΚΙΜΙΟ

ΧΑΡΟΚΟΠΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

ΕΙΣΑΓΩΓΗ ΣΤΟΝ ΔΟΜΗΜΕΝΟ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟ

Υπο-προγράμματα στη Fortran

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

Κεφάλαιο 7: Υποπρογράμματα. Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

Εισαγωγή στον Προγραμματισμό Εργαστήριο 3: Βοηθητικά προγράμματα του Linux CLI. Οκτώβριος 2014 Χ. Αλεξανδράκη Γ. Δημητρακάκης

Κεφάλαιο 7: Υπορουτίνες

Προγραμματισμός Η/Υ Ι (Χρήση της C) 6 η Θεωρία ΜΟΝΟΔΙΑΣΤΑΤΟΙ ΠΙΝΑΚΕΣ

Σκοπός. Εργαστήριο 6 Εντολές Επανάληψης

int Α[] = {4, 16, 22, 12, 9, 15, 10}; { 4, 9, 10, 12, 15, 16, 22 } Α[0]=4, Α[1]=9, Α[2]=10 { 4, 16,22, 12, 9, 15, 10} { 4, 12, 16, 22, 9, 15,16, 22 }

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

Λογισµικό (Software SW) Γλώσσες

ΦΥΣ 145 Μαθηµατικές Μέθοδοι στη Φυσική. Πρόοδος 28 Μαρτίου 2009 Οµάδα 1 η

Δομή προγράμματος στη Fortran

Εισαγωγή στον Προγραμματισμό Εργαστήριο 3: Βοηθητικά προγράμματα του Linux CLI. Οκτώβριος 2014 Χ. Αλεξανδράκη Γ. Δημητρακάκης

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

Δομή προγράμματος στη Fortran

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

Ει αγωγή η Fortran.

Προγραμματισμός Υπολογιστών Τάξη Γ Αθανασιάδης Χρήστος ΠΕ19 ΑΡΧΗ 1ΗΣ ΣΕΛΙΔΑΣ

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2016

ΚΥΠΡΙΑΚΟΣ ΣΥΝΔΕΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY 21 ος ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ Δεύτερος Γύρος - 30 Μαρτίου 2011

3 ο Εργαστήριο Μεταβλητές, Τελεστές

ΠΑΝΕΛΛΑΔΙΚΕΣ ΕΞΕΤΑΣΕΙΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ (ΟΜΑΔΑ Α ) ΚΑΙ ΜΑΘΗΜΑΤΩΝ ΕΙΔΙΚΟΤΗΤΑΣ ΗΜΕΡΗΣΙΩΝ ΕΠΑΛ (ΟΜΑΔΑ Α ΚΑΙ Β ) ΤΕΤΑΡΤΗ 20 ΙΟΥΝΙΟΥ 2018

Εισαγωγή στον Προγραμματισμό Η/Υ (Fortran 90/95/2003)

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

Αλγόριθμοι Ταξινόμησης Bubble Sort Quick Sort. Αντρέας Δημοσθένους Καθηγητής Πληροφορικής Ολυμπιάδα 2012

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

Μορφοποίηση της εξόδου

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

ΑΡΧΗ 1ΗΣ ΣΕΛΙ ΑΣ ΝΕΟ ΚΑΙ ΠΑΛΑΙΟ ΣΥΣΤΗΜΑ

Εργαστήριο 10 Πίνακες. Πίνακες. Η έννοια της δόμησης δεδομένων στη PASCAL. Σκοπός

ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΔΟΜΗΜΕΝΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Γ ΕΠΑΛ

ΜΥΥ105: Εισαγωγή στον Προγραμματισμό. Αναζήτηση και Ταξινόμηση Χειμερινό Εξάμηνο 2016

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 11/3/2006

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

Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών

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

ΚΕΦΑΛΑΙΟ 9 ΒΑΣΙΚΕΣ ΕΝΤΟΛΕΣ

Η ΔΟΜΗ ΕΠΑΝΑΛΗΨΗΣ Εντολές Επανάληψης REPEAT UNTIL, FOR, WHILE

Στην εντολή while η επανάληψη συνεχίζεται όσο η λογική έκφραση έχει τιμή false.

Συναρτήσεις και Υπορουτίνες

Τμήμα Πληροφορικής & Επικοινωνιών

Transcript:

FORTRAN & Αντικειμενοστραφής Προγραμματισμός ΣΝΜΜ 2017 M7 Δομές δεδομένων: Πίνακες - Ασκήσεις Γεώργιος Παπαλάμπρου Επικ. Καθηγητής ΕΜΠ Εργαστήριο Ναυτικής Μηχανολογίας george.papalambrou@lme.ntua.gr ΕΜΠ/ΣΝΜΜ Εργαστήριο Ναυτικής Μηχανολογίας

Πίνακες Σε συνηθισμένη χρήση προγράμματος, μια λίστα είναι μια ακολουθία τιμών, που συνήθως όλες αντιπροσωπεύουν δεδομένα του ίδιου είδους πχ Μια λίστα μαθητών που έχουν εγγραφεί για ένα συγκεκριμένο μάθημα και Μια λίστα με όλους τους φοιτητές που είναι εγγεγραμμένοι σε ένα κολέγιο. Θα αναφερθούμε έτσι σε μια μονοδιάστατη διάταξη ως πίνακα ή λίστα. Συχνά, η ίδια λειτουργία ή ακολουθία των λειτουργιών εκτελείται σε κάθε στοιχείο ενός πίνακα. 2

Πίνακες Η Fortran έχει επίσης ισχυρές πράξεις και intrinsic functions που χειρίζονται ολόκληρες συστοιχίες ή τμήματα του πίνακα. Τα προγράμματα που έχουν γραφτεί χρησιμοποιώντας αυτές τις intrinsic functions είναι πιό αποδοτικά για τον μεταγλωττιστή (compiler) της γλώσσας (=βελτιστοποιημένο). από τους Fortran. Ειδικά σε υπολογιστές με αρχιτεκτονική παράλληλης επεξεργασίας ή επεξεργασίας πινάκων (parallel or array processing), τα προγράμματα αυτά είναι πιο πιθανό να επωφεληθούν από τα ειδικό υλικό (hardware) για την αύξηση της ταχύτητας εκτέλεσης. 3

Πίνακες και intrinsic functions που διαθέτει η γλώσσα FTN Constructor An array constructor is used to build an array from a list of values between "(/" and "/)". For example, given a REAL array x with shape (4): x = (/ 1.4, 0.5, 1.0, 1.5 /) All the components must have the same type and type attributes. 4

Πίνακες πολλών διαστάσεων Ασκήσεις με πίνακες πολλών διαστάσεων θα γίνουν στα τελευταία μαθήματα 5

6. Πράξεις με πίνακες: Αντιστροφή σειράς στοιχείων πίνακα (6.1) 6.1 Γράψτε ένα πρόγραμμα που αντιστρέφει τη σειρά των στοιχείων ενός δεδομένου πίνακα (reversing an array). (πρόγραμμα Reverse.f95 στην ιστοσελίδα μαθήματος) Για παράδειγμα, αν η δεδομένη διάταξη περιλαμβάνει πέντε στοιχεία: 3 5 7 2 4 Μετά την αντιστροφή της σειράς των στοιχείων, το αποτέλεσμα θα είναι: 4 2 7 5 3 Οι πίνακες με 1 διάσταση είναι επίσης γνωστοί ως λίστες (Lists) 6

6.1 Αντιστροφή σειράς στοιχείων πίνακα Το παραπάνω πρόγραμμα χρησιμοποιεί την μεταβλητή a() για να κρατήσει τον πίνακα εισαγωγής και την μεταβλητή n για τον πραγματικό αριθμό των στοιχείων. Η τιμή για το n και οι τιμές εισόδου διαβάζονται με τις δύο πρώτες READ (*,*). Σημειώστε ότι η είσοδος έχει μια μορφή ως εξής: 8 10 50 30 70 35 97 65 59 Η πρώτη γραμμή περιέχει την τιμή για το η και η δεύτερη γραμμή έχει τον αριθμό των στοιχείων του πίνακα. 7

6.1 Αντιστροφή σειράς στοιχείων πίνακα Στο site Sheen: /One-Dimensional Arrays/ Reversing an Array 8

6.1 Αντιστροφή σειράς στοιχείων πίνακα Τμήμα δηλώσεων μεταβλητών: array a Εισαγωγή δεδομένων Χρήση Implicit do για input/output σε οθόνη 9

6.1 Αντιστροφή σειράς στοιχείων πίνακα Αντιστροφή σειράς στοιχείων πίνακα Απεικόνηση πίνακα a σε οθόνη Έστω ότι δώσαμε 4 2 3 6 0 -> Head =1, Tail =4 Loop #1 Loop #2 2 3 6 0 H T H T Loop #1 Head >= Tail Temp = a(1) a(head) = a(tail) a(tail) = Temp Head = Head + 1 Tail = Tail - 1! 1>=4 false! Temp=2! a(1)=a(4)! a(4)=2! Head=1+1=2! Tail=4-1=3 Loop #2 Loop #3 Head >= Tail Temp = a(2) a(head) = a(tail) a(tail) = Temp Head = Head + 1 Tail = Tail - 1! 2>=3 false! Temp=3! a(2)=a(3)! a(3)=3! Head=2+1=3! Tail=3-1=2 Head >= Tail! 3>=2 true - > EXIT a= 0 6 3 2 10

6. Πράξεις με πίνακες: Ταξινόμηση (6.2) 6.2 Ταξινόμηση πίνακα (sorting) Η ταξινόμηση είναι μια σημαντική εφαρμογή στον υπολογιστή. Υπάρχουν πολλές μέθοδοι διαλογής. Γράψτε ένα πρόγραμμα για να αναδιατάξετε τα στοιχεία μιας δεδομένης σειράς σε αύξουσα σειρά (πρόγραμμα Sorting.f95 στην ιστοσελίδα μαθήματος) Ας υποθέσουμε ότι ο πίνακας έχει n στοιχεία. Βρίσκουμε το μικρότερο στοιχείο και τη θέση του στον πίνακα και ανταλλάσουμε αυτό το στοιχείο με το πρώτο. Μετά από αυτό, το πρώτο στοιχείο είναι το μικρότερο. Στη συνέχεια βρίσκουμε το μικρότερο στοιχείο και τη θέση του όλων των στοιχείων στην περιοχή των 2 και n και αλλάζουμε αυτό με το δεύτερο. Μετά από αυτό, τα δύο πρώτα στοιχεία είναι ταξινομημένα. Επαναλαμβάνοντας την διαδικασία, το σύνολο της διάταξης ταξινομείται. Στο site Sheen: /One-Dimensional Arrays/ Sorting an Array 11

6.2 Ταξινόμηση πίνακα H function FindMinimum( ) λαμβάνει πίνακα x( ), μια αρχική θέση Start, και μια τελική θέση End, και επιστρέφει τη θέση του μικρότερου στοιχείου σε αυτό το εύρος. H υπορουτίνα Swap( ) ανταλλάσσει τις τιμές των ορισμάτων της. Η υπορουτίνα Sort( ) παίρνει έναν πίνακα x( ) μεγέθους Size και τον ταξινομεί. 12

6.2 Ταξινόμηση πίνακα H function FindMinimum( ) λαμβάνει πίνακα x( ), μια αρχική θέση Start, και μια τελική θέση End, και επιστρέφει τη θέση του μικρότερου στοιχείου σε αυτό το εύρος. H υπορουτίνα Swap( ) ανταλλάσσει τις τιμές των ορισμάτων της. Η υπορουτίνα Sort( ) παίρνει έναν πίνακα x( ) μεγέθους Size και τον ταξινομεί. Για κάθε στοιχείο μεταξύ του πρώτου και αυτού δίπλα στο τελευταίο (δηλ, Size -1), η θέση του μικρότερου στοιχείου στην περιοχή από i και Size βρίσκεται χρησιμοποιώντας την FindMinimum( ). Στη συνέχεια η υπορουτίνα Swap( ) καλείται για να ανταλλάξει τις τιμές του x(i) και x(location). Μετά από αυτό, τα στοιχεία στην περιοχή από 1 μέχρι i είναι ταξινομημένα. 13

6.2 Ταξινόμηση πίνακα, μέρος 1/3 14

6.2 Ταξινόμηση πίνακα, μέρος 2/3 15

6.2 Ταξινόμηση πίνακα, μέρος 3/3 16

Εκχώρηση μνήμης (DMA) PROGRAM allocatable_array IMPLICIT NONE INTEGER:: i,j INTEGER, ALLOCATABLE, DIMENSION(:):: pin1 ALLOCATE (pin1(5)) pin1=7 WRITE(*,*) pin1; WRITE(*,*)! prints number 7, 5 times DEALLOCATE(pin1)! ALLOCATE (pin1(3)) pin1=66 WRITE(*,*) pin1; WRITE(*,*)! prints number 66, 3 times DEALLOCATE(pin1) END (πρόγραμμα allocatable_array.f95 στην ιστοσελίδα μαθήματος, νέο για 2017) 17

Εκχώρηση μνήμης (DMA) PROGRAM allocatable_array IMPLICIT NONE INTEGER:: i,j INTEGER, ALLOCATABLE, DIMENSION(:):: pin1 ALLOCATE (pin1(5)) pin1=7 WRITE(*,*) pin1; WRITE(*,*)! prints number 7, 5 times DEALLOCATE(pin1)! Must be used if dimension changes.!otherwise RUN-TIME error!! ALLOCATE (pin1(3)) pin1=66 WRITE(*,*) pin1; WRITE(*,*)! prints number 66, 3 times DEALLOCATE(pin1) END 18