Μονοδιάστατοι πίνακες
Τι είναι ο πίνακας στον προγραμματισμό; Ο πίνακας είναι μια σύνθετη μεταβλητή που καταλαμβάνει παραπάνω από μια θέση στην μνήμη του Η/Υ, έχει ένα συγκεκριμένο όνομα και δέχεται ένα συγκεκριμένο τύπο δεδομένων.
Δήλωση: Τύπος μεταβλητή Όνομα πίνακα(πλήθος στοιχείων) Παραδείγματα: INTEGER I(3),J(0:2),K(-1:1) REAL A(3),B(0:2) DOUBLE PRECISION A(3) ή INTEGER,DIMENSION(3)::I INTEGER,DIMENSION(0:2)::J INTEGER,DIMENSION(-1:1)::K ή REAL,DIMENSION(3)::A REAL,DIMENSION(0:2)::B CHARACTER (LEN=12)::CODE(4)
Εισαγωγή δεδομένων σε πίνακα 1 ος Τρόπος με χρήση της εντολής DO-END DO DO I=1,4 END DO READ*,A(I)
2 ος Τρόπος READ*,(A(I),I=1,4)! READ *,(A(I),I=1,7,2)! Input data in A(1),A(3),A(5),A(7)! READ *,(A(I),I=6,0,-2)! Input data in A(6),A(4),A(2),A(0) 3 ος Τρόπος τοποθέτηση τιμών μέσα από το πρόγραμμα DATA όνομα μεταβλητή /λίστα σταθερών/ DATA A /1,2,3,4/
Εκτύπωση των στοιχείων μονοδιάστατου πίνακα 1 ος τρόπος με χρήση της εντολής DO-END DO DO I=1,5 PRINT*,A(I) ( ή WRITE(6,*) A(I) ) END DO 2 ος τρόπος PRINT*,(A(I),Ι=1,5) ( ή WRITE(6,*) (A(I),Ι=1,5) )
Εισαγωγή δεδομένων σε πίνακα και Εκτύπωση των στοιχείων μονοδιάστατου πίνακα program readprint implicit none integer::i real a(4) do i=1,4 print*,"assign value to the ",i, " element of the array" read*,a(i) end do print*,(a(i),i=1,4) end program readprint
Άσκηση Να γράψετε πρόγραμμα που θα διαβάζει δύο μονοδιάστατους πίνακες με 5 ακέριους αριθμούς και στη συνέχεια το πρόγραμμα θα βρίσκει το άθροισμά και εσωτερικό γινόμενο τους. Το πρόγραμμα θα τυπώσει αυτές δυο πίνακες και το πίνακα που προκύπτει από το άθροισμα, επίσης να τυπώσει και το εσωτερικό γινόμενο.
program sum1dim implicit none integer::i integer::scalar integer,dimension(5)::a,b,c print*,"assign 5 numbers for the first matrix" read*,(a(i),i=1,5) print*,"assign 5 numbers for the second matrix" read*,(b(i),i=1,5)! scalar=0
do i=1,5 c(i)=a(i)+b(i) scalar=scalar+a(i)*b(i) end do print*,"print a,b and c matrixs" print*, (a(i),i=1,5) print*,b print*,c print*, " Inner product a(i).b(i) is=",scalar end program sum1dim
Άσκηση Να γράψετε πρόγραμμα που θα διαβάζει ένα μονοδιάστατο πίνακα Α με 10 ακέριους αριθμούς και στη συνέχεια το πρόγραμμα θα τυπώσει τους δυο πίνακες από τούς οποίους ο πρώτος έχει άρτιους αριθμούς και ο δεύτερος έχει περιττούς αριθμούς του πίνακα Α.
program evenodd integer::i,j,k integer,dimension(10)::a,b,c print*,"assign 10 integer & & numbers for the A matrix" read*,(a(i),i=1,10) j=0 k=0
do i=1,10 if(mod(a(i),2)==0) then j=j+1 b(j)=a(i) else k=k+1 c(k)=a(i) end if end do
if(j==0) then print*,"not even number else print*,"matrix with even numbers " print*,(b(i),i=1,j) end if
if(k==0) then print*,"not odd number in matrix " else print*,"matrix with odd numbers: " print*,(c(i),i=1,k) end if end program evenodd
Επεξεργασία μονοδιάστατων πινάκων X(I) Εμφάνιση στοιχείων του πίνακα που ικανοποιούν κάποια ιδιότητα Το X(I) βρίσκεται στο διάστημα [Α,Β] To X(I) βρίσκεται εκτός του διαστήματος [Α,Β] Το X(I) είναι πολλαπλάσιο του A Το X(I) είναι θετικό (αρνητικό) Το X(I) είναι ίσο με τον αριθμό A (X(I).GE.A.AND.X(I).LE.B) ((X(I)>=A).AND.(X(I)<=B)) (X(I).LT.A.OR.X(I).GT.B) ((X(I)<A).OR.(X(I)>B)) (MOD(X(I),A).EQ.0) (MOD(X(I),A)==0) (X(I).GT.0) ( (X(I).LT.0) ) (X(I)>0) ( (X(I)<0) ) (X(I).EQ.A) ή (X(I)==A) Το X(I) είναι διάφορο του A (X(I).NE.A) ή (X(I)/=A)
Επεξεργασία μονοδιάστατων πινάκων X(I) Υπολογισμός αθροίσματος, γινόμενου, πλήθους, μέσου όρου των στοιχείων ενός πίνακα ΧΩΡΙΣ ΣΥΝΘΗΚΗ Πριν το loop Εντός loop Εκτός loop Άθροισμα S=0 S=S+X(Ι) PRINT*,S Γινόμενο P=1 P=P*X(Ι) PRINT*,P Μέσος Όρος S=0 PL=0 S=S+X(Ι) PL=PL+1 PRINT*,S/PL
Επεξεργασία μονοδιάστατων πινάκων X(I) Υπολογισμός αθροίσματος, γινόμενου, πλήθους, μέσου όρου των στοιχείων ενός πίνακα που ικανοποιούν κάποια ιδιότητα ΜΕ ΣΥΝΘΗΚΗ Πριν το loop Εντός loop Εκτός loop Άθροισμα S=0 IF(συνθήκη) THEN S=S+X(Ι) END IF Γινόμενο P=1 IF(συνθήκη) THEN P=P*X(Ι) END IF Πλήθος PL=0 IF(συνθήκη) THEN PL=PL+1 END IF Μέσος Όρος S=0 PL=0 IF(συνθήκη) THEN S=S+X(Ι) PL=PL+1 END IF PRINT*,S PRINT*,P PRINT*,PL IF (PL==0) THEN PRINT*, ΔΕΝ ΟΡΙΖΕΤΑΙ ELSE PRINT*,S/PL END IF
Εμφάνιση στοιχείων του πίνακα που ικανοποιούν κάποια ιδιότητα
Άσκηση Να γραφεί πρόγραμμα το οποίο, αφού θα διαβάζει 5 ακέριους αριθμούς, θα τους τοποθετεί σε ένα πίνακα και στη συνέχεια θα εμφανίζει τα εξής: α) τους αριθμούς που είναι έξω από το διάστημα [-5,5]. β) τη θέση των στοιχείων του πίνακα που έχουν τιμή 3.
PROGRAM MATRIXCASE IMPLICIT NONE INTEGER, DIMENSION(5):: A,B INTEGER:: I,J PRINT*,"Assign 5 numbers for matrix A " READ*,(A(I),I=1,5) J=0!-------------------------------------------- DO I=1,5 IF (A(I)<-5.OR.A(I)>5) THEN J=J+1 B(J)=A(I) END IF END DO
IF(J==0) THEN PRINT*,"Not numbers which are out from & & interval [-5,5]" ELSE PRINT*,"The numbers which are out from& & interval [-5,5]are " DO I=1,J PRINT*,B(I) END DO END IF!
DO I=1,5 IF (A(I).EQ.3) THEN PRINT*,"Position of number 3 in & & matrix A(I) is ",I END IF END DO END PROGRAM MATRIXCASE