Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
ΔημοσίευσεΣπυριδων Αλεβίζος Τροποποιήθηκε πριν 8 χρόνια
1
Ε ΙΣΑΓΩΓΉ Σ ΤΟΥΣ Μ ΟΝΟΔΙΑΣΤΑΤΟΥΣ Π ΊΝΑΚΕΣ Αστρινάκη Μαρία
2
ΓΙΑΤΙ ΧΡΕΙΑΖΟΜΑΣΤΕ ΠΙΝΑΚΕΣ Χρησιμοποιούμε πίνακες όταν χρειάζεται να καταχωρήσουμε διαδοχικά, δεδομένα ίδιου τύπου στην μνήμη του υπολογιστή Αντί να δηλώσουμε Ν διαφορετικές μεταβλητές ίδιου τύπου, δηλώνουμε μία μεταβλητή με Ν δείκτες, πίνακας Απλή μεταβλητή περιέχει:ένα όνομα μία θέση στην μνήμη Πίνακας περιέχει:ένα όνομα, πολλές διαδοχικές θέσεις στην μνήμη
3
ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ ΕΝΟΣ ΠΙΝΑΚΑ Κάθε πίνακας έχει τρία χαρακτηριστικά Τάξη: ο αριθμός των διαστάσεων (μέχρι 7 διαστάσεις) Μέγεθος: το πλήθος των στοιχείων Μορφή: ο τρόπος διάταξης των στοιχείων π.χ Α(20) τάξης 1, μεγέθους 20, μορφής 1x20 Β(2,3) 2, 6, 2x3 C(10,3,2) 3, 60, 10x3x2
4
Ε ΠΕΞΗΓΗΣΗ A ή Β είναι το όνομα των πινάκων 1ος όρος: (έκταση του πίνακα στην πρώτη διάσταση (αριθμός των γραμμών), 2ος όρος: έκταση του πίνακα στην δεύτερη διάσταση (αριθμός στηλών), 3ος όρος: έκταση του πίνακα στην τρίτη διάσταση κτλ...μέγιστο 7 διαστάσεις Ίδιος πινάκας (ίδια μορφή)=τάξη και μέγεθος είναιτο ίδιο. Δεν ισχύει πάντα το αντίστροφο Χ(2,3)=τάξη 2, μέγεθος 6, μορφής 2Χ3 Υ(3,2)=τάξη 2, μέγεθος 6 και μορφής 3Χ2
5
ΕΙΔΟΙ ΠΙΝΑΚΩΝ Στατικοί Οι ιδιότητες τους δηλώνονται ρητά Δεν μπορούν να αλλάξουν στην έκταση του προγράμματος Δυναμικοί Είναι δυνατό να αλλάξει το μέγεθος και η μορφή σε οποιοσδήποτε σημείο του προγράμματος η τάξη τους δεν μπορεί να αλλάξει
6
Δ ΉΛΩΣΗ Δ ΥΝΑΜΙΚΟΎ Π ΊΝΑΚΑ δήλωση τύπου, ALLOCATABLE:: όνομα (: ή [:…:]) π.χ. REAL, ALLOCATABLE:: array(:) INTEGER, ALLOCATABLE:: A(:), B(:,:) CHARACTER, ALLOCATABLE:: NAME(:) [ ή με DIMENSIOΝ: REAL, ALLOCATABLE, DIMENSION (:) A1, A2]
7
Π ΑΡΑΔΕΙΓΜΑ ΔΥΝΑΜΙΚΟΥ ΠΙΝΑΚΑ #1
8
Π ΑΡΑΔΕΙΓΜΑ ΔΥΝΑΜΙΚΟΥ ΠΙΝΑΚΑ #2
10
Δ ΗΛΩΣΗ ΣΤΑΤΙΚΟΥ ΠΙΝΑΚΑ INTEGER:: pinakas(100) ή INTEGER, DIMENSION(100)::pinakas Ορίζει έναν πίνακα ακεραίων 100 θέσεων τα στοιχεία του οποίου είναι pinakas(1),pinakas(2),pinakas(3) και έχουν τύπο ακέραιο
11
Π ΑΡΑΔΕΙΓΜΑ #1 ΧΩΡΙΣ ΤΗΝ ΧΡΗΣΗ ΠΙΝΑΚΩΝ Κατασκευάστε πρόγραμμα που θα δέχεται 5 αριθμούς και θα τους υψώνει στην 3 η δύναμη και θα τυπώνει το αποτέλεσμα PROGRAM SQUARE_1A IMPLICIT NONE DOUBLE PRECISION A1, A2, A3, A4, A5 WRITE(*,*) ‘ΔΩΣΤΕ 5 ΑΡΙΘΜΟΥΣ’ READ(*,*) A1, A2, A3, A4, A5 WRITE(*,*) ‘ΤΟ ΤΕΤΡΑΓΩΝΟ ΤΟΥ’, Α1, ’ΕΙΝΑΙ’, Α1**3 WRITE(*,*) ‘ΤΟ ΤΕΤΡΑΓΩΝΟ ΤΟΥ’, Α2, ’ΕΙΝΑΙ’, Α2**3 WRITE(*,*) ‘ΤΟ ΤΕΤΡΑΓΩΝΟ ΤΟΥ’, Α3, ’ΕΙΝΑΙ’, Α3**3 WRITE(*,*) ‘ΤΟ ΤΕΤΡΑΓΩΝΟ ΤΟΥ’, Α4, ’ΕΙΝΑΙ’, Α4**3 WRITE(*,*) ‘ΤΟ ΤΕΤΡΑΓΩΝΟ ΤΟΥ’, Α5, ’ΕΙΝΑΙ’, Α5**3 END
12
Π ΑΡΑΔΕΙΓΜΑ #1 ΜΕ ΤΗΝ ΧΡΗΣΗ ΠΙΝΑΚΑ PROGRAM SQUARE_1B IMPLICIT NONE DOUBLE PRECISION A(5) INTEGER I WRITE(*,*) ‘ΔΩΣΤΕ 5 ΑΡΙΘΜΟΥΣ’ READ(*,*) A(1), A(2), A(3), A(4), A(5) DO I = 1, 5 WRITE(*,*) ‘Η ΤΡΙΤΗ ΔΥΝΑΜΗ ΤΟΥ’,Α(I),’ΕΙΝΑΙ’, Α(I)**3 END DO END
13
Τ IPS ΓΙΑ ΔΗΛΩΣΗ ΠΙΝΑΚΩΝ Η δήλωση των πινάκων είναι υποχρεωτική και χωρίς τη παρουσία της εντολής IMPLICT NONE Η σύνταξη των δηλώσεων είναι παρόμοια με των απλών μεταβλητών και επωνύμων σταθερών αλλά με μέγεθος Το μέγεθος αυτομάτως επισημαίνει ότι είναι πίνακας Αν δεν είμαστε σίγουροι για το μέγεθος του πίνακα: Κάνουμε μια πρόβλεψη του μεγέθους της διάστασης που πιθανόν να χρειαστούμε Δηλώνουμε το πίνακα με πιο μεγάλο μέγεθος από την πρόβλεψη μας (ή χρησιμοποιούμε δυναμικό πίνακα) Όλα τα στοιχεία ενός πίνακα είναι υποχρεωτικά του ίδιου τύπου
14
Π ΑΡΆΔΕΙΓΜΑ : ΔΗΛΏΣΤΕ ΣΕ ΠΡΌΓΡΑΜΜΑ ΈΝΑΝ ΑΚΈΡΑΙΟ ΠΊΝΑΚΑ 50 ΣΤΟΙΧΕΊΩΝ ΚΑΙ ΈΝΑΝ REAL 100 ΣΤΟΙΧΕΊΩΝ PROGRAM MATRIX IMPLICIT NONE INTEGER K(50) REAL A(100) εντολές… END
15
Δ ΗΛΩΣΗ ΠΙΝΑΚΩΝ INTEGER ::count=1 REAL ::PIN(5) DO count = 1, 5 PIN(count) = count +1 END DO
16
Α ΝΑΘΕΣΗ ΤΙΜΩΝ ΣΕ ΠΙΝΑΚΑ Υπάρχουν 3 τρόποι για γρήγορη ανάθεση τιμών Με απεύθειας ανάθεση Με εντολή Data Me την εντολή εισόδου read Προσοχή !!! Μην ξεπερνάτε τα όρια του πίνακα
17
Α ΠΕΥΘΕΊΑΣ ΑΝΑΘΕΣΗ Δηλώστε πίνακα ακεραίων με 5 στοιχεία, και αναθέσετε τους τις τιμές 10, 20,..., 50 αντίστοιχα PROGRAM MATRIX3Α IMPLICIT NONE INTEGER Α(5) Α(1) = 10 Α(2) = 20 Α(3) = 30 Α(4) = 40 Α(5) = 50 END PROGRAM MATRIX3Α IMPLICIT NONE INTEGER Α(5), I DO I = 1, 5 Α(I) = 10 * I END DO END
18
Ε ΝΤΟΛΉ DATA Δηλώστε πίνακα ακεραίων με 5 στοιχεία, και αναθέσετε τους τις τιμές 10, 20,..., 50 αντίστοιχα PROGRAM MATRIX3B IMPLICIT NONE INTEGER Α(5) DATA A / 10, 20, 30, 40, 50/ END Όταν χρησιμοποιούμε αυτόν τον τρόπο ανάθεσης τιμών υποχρεωτικά αναθέτουμε όλες τις τιμές του πίνακα
19
Ε ΝΤΟΛΉ READ (1/2) Δηλώστε πίνακα ακεραίων με 5 στοιχεία, και αναθέσετε τους τις τιμές 10, 20,..., 50 αντίστοιχα PROGRAM MATRIX3C IMPLICIT NONE INTEGER Α(5) WRITE(*,*) ‘ΕΙΣΑΓΕΤΕ 5 ΤΙΜΕΣ’ READ(*,*) A(1), A(2), A(3), A(4), A(5) END PROGRAM MATRIX3C IMPLICIT NONE INTEGER Α(5) WRITE(*,*) ‘ΕΙΣΑΓΕΤΕ 5 ΤΙΜΕΣ’ READ(*,*) A END
20
Ε ΝΤΟΛΉ READ (2/2) Δηλώστε πίνακα ακεραίων με 5 στοιχεία, και αναθέσετε τους τις τιμές 10, 20,..., 50 αντίστοιχα PROGRAM MATRIX3C IMPLICIT NONE INTEGER Α(5), I WRITE(*,*) ‘ΕΙΣΑΓΕΤΕ 5 ΤΙΜΕΣ’ READ(*,*) (A(I), I = 1, 5) END Έμμεσο do
21
Β ΡΌΓΧΟΙ DO ΚΑΙ ΕΝΤΟΛΉ READ
22
Ε ΞΑΣΚΗΣΗ Δηλώστε πίνακα ακεραίων με 5 στοιχεία, και εισάγετε 5 τιμές. Κατόπιν εξάγετε το τετράγωνα της κάθε τιμής PROGRAM MATRIX3C IMPLICIT NONE INTEGER Α(5), I WRITE(*,*) ‘ΕΙΣΑΓΕΤΕ 5 ΤΙΜΕΣ’ READ(*,*) (A(I), I = 1, 5) WRITE(*,*) ‘TΑ ΤΕΤΡΑΓΩΝΑ ΤΩΝ ΑΡΙΘΜΩΝ ΕΙΝΑΙ:’ WRITE(*,*) A(1)**2, A(2)**2, A(3)**2, A(4)**2, A(5)**2 END
23
Π ΑΡΑΔΕΙΓΜΑ ΜΕ ΕΜΜΕΣΟ ΒΡΟΓΧΟ Δηλώστε πίνακα ακεραίων με 5 στοιχεία, και εισάγετε 5 τιμές. Κατόπιν εξάγετε το τετράγωνα της κάθε τιμής. PROGRAM MATRIX3C IMPLICIT NONE INTEGER Α(5), I WRITE(*,*) ‘ΕΙΣΑΓΕΤΕ 5 ΤΙΜΕΣ’ READ(*,*) (A(I), I = 1, 5) WRITE(*,*) ‘TΑ ΤΕΤΡΑΓΩΝΑ ΤΩΝ ΑΡΙΘΜΩΝ ΕΙΝΑΙ:’ WRITE(*,*) (A(I)**2, I = 1, 5) END
24
Β ΡΌΓΧΟΙ DO ΚΑΙ ΕΝΤΟΛΉ WRITE Ποια η διαφορά στα δύο παρακάτω παραδείγματα; WRITE(*,*) (A(I)**2, I = 1, 5) DO I = 1, 5 WRITE(*,*) A(I)**2 END DO Έμμεσο Do Άμμεσο Do
25
Ε ΞΑΣΚΗΣΗ Βρείτε αν υπάρχει αρνητική τιμή μέσα στον πίνακα Α(10). Ο πίνακας είναι ήδη συμπληρωμένος Program test Integer::A(10),I, Do i=1,10 If (A(i).lt.0) then Write(*,*) ‘to stoixeio sthn thesi A(i) einai arnitikos’ End do End
26
Ε ΞΑΣΚΗΣΗ Δημιουργήστε έναν πίνακα ακεραίων 10 θέσεων περνώντας τιμές από το πληκτρολόγιο έπειτα ελέγξτε αν το στοιχείο Α(ι+1) είναι μεγαλύτερο από το στοιχείο Α(ι) αν ισχύει η συνθήκη προσθέστε το στοιχείο Α(ι+1) Integer::A(10),i,sum=0 WRITE(*,*) ‘ΕΙΣΑΓΕΤΕ 5 ΤΙΜΕΣ’ READ(*,*) A Do i=1,10 IF (a(i).lt. a(i+1)) THEN Sum-sum+a(i+1) End if End do End
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.