(derived data types) ...

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

ηµιουργία νέου τύπου δεδοµένων από το χρήστη

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

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

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

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

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

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

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

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

ΚΕΦΑΛΑΙΟ 2. Περιγραφή της Κίνησης. 2.1 Κίνηση στο Επίπεδο

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

Αρχές Τεχνολογίας Λογισμικού Εργαστήριο

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

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

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

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

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ 1 - ΣΗΜΕΙΩΣΕΙΣ

Outline. 4 Object-Oriented Programming

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

ΑΡΦΕ ΑΝΣΙΚΕΙΜΕΝΟΣΡΕΥΟΤ ΠΡΟΓΡΑΜΜΑΣΙΜΟΤ. Ιωάννης Φατζηλυγερούδης Αναπληρωτής Καθηγητής Τμήμα Μηχ/κών Η/Υ και Πληροφορικής Πανεπιστήμιο Πατρών

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

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

ΦΥΣ 145 Υπολογιστικές Μέθοδοι στη Φυσική. Πρόοδος 26 Μαρτίου 2007 Ομάδα 1 η

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

ΥΠΟΥΡΓΕΙΟ ΠΑΙ ΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙ ΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2013

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

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

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

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

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language)

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

1 ΕΙΣΑΓΩΓΗ. Πρωταρχικοί Τύποι

Γλώσσες προγραµµατισµού. Ανάπτυξη Συστηµάτων Λογισµικού

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

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

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

Μεθοδολογία. Aνάλυσης Προβλήµατος. Τι είναι αλγόριθµος? Σχεδιάσµος Αλγορίθµου

8 FORTRAN 77/90/95/2003

ύο βασικές ιδέες Ενότητες Απόκρυψη Πληροφορίας, Αφηρηµένοι Τύποι εδοµένων 1) ιαχώρισε το πρόβληµα σεµικρότερα καλώς καθορισµένα υπο-προβλήµατα

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

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

Δείκτες σε συναρτήσεις. Προγραμματισμός II 1

Mock Exam 7. 1 Hong Kong Educational Publishing Company. Section A 1. Reference: HKDSE Math M Q2 (a) (1 + kx) n 1M + 1A = (1) =

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

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

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

Σύνθεση και Κληρονομικότητα

Οντοκεντρικός Προγραμματισμός

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

(Διαφάνειες Νίκου Βιδάκη)

Προγραμματιστικές τεχνικές

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

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

2.1 Αντικειµενοστρεφής προγραµµατισµός

διακριτοποίηση αριθµητική παραγώγιση

Προγραµµατιστικές τεχνικές

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

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Στατικές μέθοδοι και μεταβλητές Εσωτερικές κλάσεις

bits and bytes q Ο υπολογιστής χρησιμοποιεί τη κύρια μνήμη για αποθήκευση δεδομένων

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

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

Η Γλώσσα Προγραµµατισµού C++ (The C++ Programming Language) Ιστοσελίδα του µαθήµατος. Περιεχόµενα. ηµήτριος Κατσαρός, Ph.D. Κλάσεις.

ΕΠΛ 231 οµές εδοµένων και Αλγόριθµοι Άννα Φιλίππου,

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

IMPLICIT NONE INTEGER :: a, b, c

Wrapper Classes, Abstract Classes and Interfaces

Spherical Coordinates

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

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

Είσοδος -Έξοδος. Άνοιγµα αρχείου:

Χρήση Αντικειμενοστραφούς Προγραμματισμού στον Υπολογιστικό Ηλεκτρομαγνητισμό

Προγραµµατιστικές τεχνικές

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

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

ΕΙ ΑΓΩΓΉ ΣΗΝ FORTRAN

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

Προγραμματισμός Ι. Εισαγωγή στην C++ Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

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

Ενότητες στην C Τεχνική Υλοποίησης Αφαιρετικών Τύπων Δεδομένων στην C

Κεφάλαιο 2.6: Είσοδος / Έξοδος εδοµένων, Μορφοποίηση εδοµένων Εξόδου. ( ιάλεξη 7) ιδάσκων: ηµήτρης Ζεϊναλιπούρ

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

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

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

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

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

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

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

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

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

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

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

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

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

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Προγραμματισμός Η/Υ

Transcript:

typeόνοµα_τύπου δήλωση... δήλωση κ end type όνοµα_τύπου ηµιουργία νέου τύπου εδοµένων (derived data types) Όπου δήλωση i (i=,,k) είναι κάποιος γνωστός τύπος δεδοµένων (π.χ. integer :: a). Tο όνοµα του νέου τύπου δεδοµένων ακολουθεί τους γνωστούς κανόνες oνοµατολογίας. Για παράδειγµα: type computer_usage_info Character (5) :: lastname, firstname Integer :: id_number, resource_limit Character (6) :: passwd Real :: resources_used end type computer_usage_info

type Point real :: x,y end type Point Παραδείγµατα Πως ορίζουµε ότι µία µεταβλητή είναι δοµή τύπου Point; type (Point) :: P,Q Γράφοντας type (computer_usage_info) :: user,user2 Ορίζουµε πως οι µεταβλητές user και user2 είναι δοµές τύπου computer_usage_info Ενώ γράφοντας type (computer_usage_info), dimension(50) :: user_listή type (computer_usage_info) :: user_list(50) Ορίζουµεένανπίνακα 50 θέσεωνσεκάθεµίααπότιςοποίεςείναιµία δοµή του παραπάνω τύπου

Ανάθεση τιµών Οι τιµές που µπορεί να πάρει ένας σύνθετος τύπος δεδοµένων είναι οι τιµές των επιµέρους "πεδίων" του. Για παράδειγµα οι µεταβλητές P και Q που έχουν οριστεί ως τύπου Point µπορούν να πάρουν τιµές ως εξής: P=Point(2.5, 4.7) ή P=Point(a, 2*b) όπου a,bπραγµατικέςµεταβλητές Αν πρόκειται για σταθερά π.χ. center γράφουµε Type(Point), Parameter :: Center=Point(3.4, 8.6) Αν πρόκειται για πίνακα µε στοιχεία δοµές τύπου computer_usage_info User_list()= computer_usage_info("papadopoulos", "Costas", 2345, 700, "passwd", 240)

structure_name%component_name Πρόσβαση στα επιµέρους "πεδία" ενός σύνθετου τύπου δεδοµένων (µιας δοµής) Για παράδειγµα P%x αναφέρεται στη x-συντεταγµένη του σηµείου. Κάθε τέτοια µεταβλητή χρησιµοποείται όπως κάθε άλλη µεταβλητή ίδιου τύπου. Έτσι µπορώ να δώσω τιµές στα επιµέρους πεδία µιας σύνθετης µεταβλητής γράφοντας P%x=4.35. Με τον ίδιο τρόπο µπορώ να διαβάσω απότοπληκτρολόγιοήνατυπώσωστηνοθόνητιςτιµέςτωνπεδίων µιας σύνθετης µεταβλητής ως εξής: Read *, user%lastname Print *, user2%firstname

Εµφωλευµένες οµές Type Point real :: x, y End Type Point Type Circle Type (Point) :: Center Real :: radius End Type Circle Type(Circle) : C C=Circle (Point (4.5, 3.4), 0.0) To C είναι κύκλος µε κέντρο το σηµείο (4.5, 3.4) και ακτίνα 0 C%Center%x=4.5 C%Center%y=3.4 C%radius=0.0

ηµιουργία νέου τύπου δεδοµένων από το χρήστη program create_a_type implicit none type chemical_element character (len=2) integer real end type type (chemical_element) type (chemical_element) real :: argon,carbon,neon :: Periodic_Table(09) :: mass carbon%atomic_mass =2.00 carbon%atomic_number=6 carbon%symbol="ca" argon=chemical_element("ar",8,26.98) write(*,*)"dwse onoma stoixeiou me 2 & grammata, atomiko arithmo, maza" read(*,*) neon :: symbol :: atomic_number Periodic_Table(5)=argon :: atomic_mass Periodic_Table(7)=carbon Periodic_Table(55)=neon mass=periodic_table(5)%atomic_mass write(*,*) mass write(*,*) neon write(*,*) Periodic_Table(7) end program create_a_type Αν ο χρήστης δώσει: Ne 23 56.87 Το πρόγραµµα θα τυπώσει: 26.98!Η ατοµική µάζα του argon Ne 23 56.87!Τα στοιχεία του neon Ca FORTRAN 6 2.0 και Αντικειµενοστραφής!Τα στοιχείαπρογραµµατισµός του carbon

ηµιουργία σύνθετου τύπου δεδοµένων program create_composite_type implicit none type chemical_element character (len=2) :: symbol integer :: atomic_number write(*,*)"dwse onoma me 2 grammata, & atomiko arithmo, maza" read(*,*) neon real :: atomic_mass Periodic_Table(5)=argon end type type history character (len=3) Periodic_Table(7)=carbon Periodic_Table(55)=neon :: scientist_namemass=periodic_table(5)%atomic_mass integer :: year_found type (chemical_element) :: chemelement write(*,*) mass end type history type (chemical_element) :: argon,carbon,neon write(*,*) neon write(*,*) Periodic_Table(7) type (chemical_element) :: Periodic_Table(09) real :: mass oxygen=chemical_element("o", 76, 90.2) type (chemical_element) :: oxygen oxygen_hist=history ("Joseph Pristley", & type (history) :: oxygen_history 774, oxygen) carbon%atomic_mass =2.00 write(*,*) oxygen_hist carbon%atomic_number=6 carbon%symbol="ca" end program create_composite_type argon=chemical_element("ar",8,26.98)

ηµιουργία σύνθετου τύπου δεδοµένων Αν ο χρήστης δώσει: Ne 23 56.87 Το πρόγραµµα θα τυπώσει: 26.98 Ne 23 56.87 Ca 6 2.0 Joseph Pristley 774 O 76 90.2

PROGRAM POINTS_LINES Implicit none Type Point real :: x, y End Type Point type(point) :: P,P2 character() :: response Do End do write (*,'(X,A)', Advance="no") & "Enter Coordinates of points P,P2: " read *, P%x, P%y, P2%x, P2%y οµές σαν παράµετροι συναρτήσεων print '(X, 2(A, "(", F5.2, ",", F5.2, ")"), " is ", F5.2)', & "Distance between ", P%X, P%Y, " and ", P2%X, P2%Y, & Distance(P,P2) Call FindLine(P,P2) Write (*,*) "More points (y or n)? " read *, response If (response/="y") Exit

Contains FUNCTION DISTANCE(P,P2) Type(Point), INTENT(IN) :: P,P2 Real :: Distance οµές σαν παράµετροι συναρτήσεων Distance=SQRT((P2%X-P%X)**2+(P2%Y-P%Y)**2) END FUNCTION DISTANCE SUBROUTINE FINDLINE(P,P2) Type(Point), INTENT(IN) :: P,P2 Real :: m,b IF (P%x==P2%x)THEN PRINT *, "Line is vertical line x= ", P%x else m=(p2%y-p%y)/(p2%x-p%x) b=p%y-m*p%x PRINT *, "Equation of line is y= ", m, "x+ ", b END IF END SUBROUTINE FINDLINE END PROGRAM POINTS_LINES

module klasi_rectangle implicit none type Rectangle real end type Rectangle contains :: base, height Program geometry use klasi_circle use klasi_rectangle function rectangle_area(r) result(area) implicit none type (Rectangle), intent(in)::r real :: area area=r%base * r%height end function rectangle_area end module klasi_rectangle module klasi_circle implicit none real :: pi=3.459265358993 type Circle real :: radius end type Circle contains function circle_area(c) result(area) type (Circle), intent (in) ::c real area=pi*((c%radius)*(c%radius)) end function circle_area end module klasi_circle interface compute_area module procedure rectangle_area, circle_area end interface type (Rectangle) type (Circle) real Fortran 90/95 :: tetragwno :: kyklos :: emvado tetragwno=rectangle(2.,4.3) emvado = compute_area(tetragwno) write(6,00) tetragwno, emvado 00 format("area of ", f3.," by ", f3.," rectangle is ", f5.2) kyklos=circle(5.4) emvado=compute_area(kyklos) write(6,200) kyklos, emvado ::area 200 format("area of circle with ",f3.," radius is ",f9.5) end program geometry Το πρόγραµµα τυπώνει Area of 2. by 4.3 rectangle is 9.03 Area of circle with 5.4 radius is 9.60885

-OOP Fortran 90/95: παράδειγµα module class_circle implicit none private public :: Circle, circle_area, circle_print real :: pi = 3.4592653589793d0! Class-wide private constant type Circle real :: radius end type Circle contains function circle_area(this) result(area) type(circle), intent(in) :: this real :: area area = pi * this%radius**2 end function circle_area

subroutine circle_print(this) type(circle), intent(in) :: this real :: area area = circle_area(this)! Call the circle_area function print *, 'Circle: r = ', this%radius, ' area = ', area end subroutine circle_print end module class_circle program circle_test use class_circle implicit none type(circle) :: c! Declare a variable of type Circle. c = Circle(.5)! Use the implicit constructor, radius =.5. call circle_print(c)! Call a class subroutine end program circle_test

module class_circle implicit none private real :: pi = 3.4592653589793d0! Class-wide private constant OOP στην Fortran 2003 (i) contains function circle_area(this) result(area) class(circle), intent(in) :: this real :: area area = pi * this%radius**2 end function circle_area type, public :: Circle real :: radius contains procedure :: area => circle_area procedure :: print => circle_print end type Circle subroutine circle_print(this) class(circle), intent(in) :: this real :: area area = this%area()! Call the typebound function print *, 'Circle: r = ', this%radius, ' area = ', area end subroutine circle_print end module class_circle

OOP στην Fortran 2003 (ii) program circle_test use class_circle implicit none type(circle) :: c! Declare a variable of type Circle. c = Circle(.5)! Use the implicit constructor, radius =.5. call c%print! Call the type-bound subroutine end program circle_test

Αντικειµενοστραφής προγραµµατισµός(i) Αντικειµενοστραφές (object-oriented) µοντέλο ανάπτυξης λογισµικού Το πρόγραµµα είναι οργανωµένο ως ένα σύνολο από αλληλεπιδρώντα αντικείµενα Κάθε αντικείµενο περιέχει: δεδοµένα (data), που χαρακτηρίζουν την κατάστασή του µεθόδους (methods), δηλαδή κώδικα που υλοποιεί τη συµπεριφορά του ενθυλάκωση (encapsulation)

Βασικές αρχές Αντικειµενοστραφής προγραµµατισµός(ii) Κατά την ανάλυση και τη σχεδίαση, δείτε τα αντικείµεναβάσειτηςδιεπαφήςτους (interface) και όχι βάσει της υλοποίησής τους Προσπαθήστε να κρύψετε όσο το δυνατόν µεγαλύτερο µέρος της υλοποίησης Προσπαθήστε να επαναχρησιµοποιήσετε αντικείµενα Προσπαθήστε να ελαχιστοποιήσετε τις διασυνδέσεις µεταξύ αντικειµένων

Αντικειµενοστραφής προγραµµατισµός(iii) Κύρια χαρακτηριστικά Κληρονοµικότητα (inheritance) Πολυµορφισµός (polymorphism) Απόκρυψη πληροφορίας (information hiding)

Αντικειµενοστραφής προγραµµατισµός(iv) Πλεονεκτήµατα Φυσική περιγραφή, τουλάχιστον για ορισµένες περιοχές εφαρµογών Αφαίρεση, δόµηση, επαναχρησιµοποίηση Ιδιαίτερα διαδεδοµένος σήµερα, πληθώρα γλωσσών και εργαλείων τον υποστηρίζουν Μειονεκτήµατα Υπερτιµηµένος... ιόγκωση κώδικα