You are on page 1of 11

Indeksirane promenljive

Indeksirane promenljive- da se grupi podataka istog tipa da zajedničko ime

Promenljive koje imaju jedan indeks nazivaju se nizovi (ili vektori):

X = { X 1 , X 2 ,..., X n }
Xi
Primer: X = {2,5, 7,8} , n = 4
Promenljive sa dva indeksa su matrice:
é a11 a12 ... a1n ù
êa a22 ... a2 n ú
A= ê 21 ú
ê M M M M ú
ê ú
ëê am1 am 2 ... amn ûú
aij
é1 2ù
Primer – matrica, tri vrste i dve kolone: B = êê 4 8 úú , m=3, n=2
êë 3 2 úû

Primer množenja matrica:

é1 2ù
é3 1 2 ù ê ú
A= ê
5 3 7 ú , B = ê4 8ú ;
ë û êë 3 2 úû
é1 2 ù
é3 1 2 ù ê ú é 3 ×1 + 1 × 4 + 2 × 3 3 × 2 + 1 × 8 + 2 × 2 ù é13 18 ù
C = A× B ê5 3 7 ú ê 4 8 ú ê5 ×1 + 3 × 4 += 7 × 3 5 × 2 + 3 × 8 + 7 × 2ú ê38 48ú =
ë ûê ë û ë û
ë 3 2 úû

Fortranskom prevodiocu je neophodno se saopšti maksimaln broj članova i struktura indeksirane


promenjljive, da bi rezervisao neophodan memorijski prostor za njihovo smeštanje.

Na primer ako hoćemo da rezervišemo prostor za niz realnih brojeva A koji ima najviše 50 članova to
možemo postići naredbom:
DIMENSION A(50)

Ako hoćemo da rezervišemo prostor za niz realnih brojeva LM koji ima najviše 150 članova, onda
moramo da deklarišemo i da su članovi niza realni (a ne celi brojevi). To možemo postići naredbom:
REAL LM(150)
ili grupom naredbi:
REAL LM
DIMENSION LM(150)
Ako hoćemo da rezervišemo prostor za niz celih brojeva L koji ima najviše 50 članova
to možemo postići naredbom:
DIMENSION L(50)

Ako hoćemo da rezervišemo prostor za niz celih brojeva A koji ima najviše 150 članova, onda moramo
da deklarišemo i da su članovi niza celi (a ne realni brojevi). To postižemo naredbom:
INTEGER A(150)
ili grupom naredbi:
INTEGER A
DIMENSION A(150)
U drugom slučaju prva naredba obaveštava fortranski prevodilac da je promenljiva A
celobrojna a druga da je to niz koji će imati najviše 150 članova.

Ako hoćemo da rezervišemo prostor za matricu realnih brojeva A koji ima najviše 50 vrsta i 20 kolona
to možemo postići naredbom:
DIMENSION A(50,20)

Ako hoćemo da rezervišemo prostor za matricu realnih brojeva KM koja ima najviše 150 vrsta i 100
kolona, onda moramo da deklarišemo i da su elementi matrice realni (a ne celi brojevi). To možemo
postići naredbom:
REAL KM(150,100)
ili grupom naredbi:
REAL KM
DIMENSION KM(150,150)

Ako hoćemo da rezervišemo prostor za matricu celih brojeva L koja ima najviše 50 vrsta i 20 kolona to
možemo postići naredbom:
DIMENSION L(50,20)

Ako hoćemo da rezervišemo prostor za matricu celih brojeva A koji ima najviše 150 vrsta i 100 kolona,
onda moramo da deklarišemo i da su članovi matrice celi (a ne realni brojevi). To možemo postići
naredbom:
INTEGER A(150,100)
ili grupom naredbi:
INTEGER A
DIMENSION A(150,100)

Učitavanje indeksiranih promenljivih

Učitavanje indeksiranih promenljivih se može izvršiti na isti način kao i učitavanje običnih
promenljivih, pri čemu se za element indeksirane promenjljive, koji želimo da učitamo, navodi ime i
celobrojni izrazi kojima su definisani njegovi indeksi. Naredbe:
READ*,A(2,3)
READ*,A(I,J)
READ*,A(I+1,3)
su sintaksno ispravno zapisane.
Unos svih članova indeksirane promenjljive jednom naredbom. Na primer, ako želimo da učitamo
članove niza A koji ima N elemenata to možemo uraditi naredbom:

READ*,(A(I),I=1,N)
koja ima isto dejstvo kao grupa naredbi
DO 5 I=1,N
READ A(I)
5 CONTINUE

Ako želimo da unesemo matricu A koja ima M vrsta i N kolona to možemo postići naredbom
READ*,((A(I,J),J=1,N),I=1,M)
kojom se organizuje unos po vrstama, ili naredbom
READ*,((A(I,J),I=1,M),J=1,N)
kojom se organizuje unos po kolonama.

Prikazivanje vrednosti indeksiranih promenljivih

Prikazivanje vrednosti indeksiranih promenljivih se može izvršiti na isti način kao i prikazivanje
vrednosti običnih promenljivih, pri čemu se za element indeksirane promenjljive, koji želimo da
prikazemo, navodi ime i celobrojni izrazi kojima su definisani njegovi indeksi.
Naredbe:
PRINT*,A(2,3)
PRINT*,A(I,J)
PRINT*,A(I+1,3)
su sintaksno ispravno zapisane.

Prikazivanje vrednosti svih članova indeksirane promenljive jednom naredbom- Na primer, ako želimo
da prikažemo članove niza A koji ima N elemenata to možemo uraditi naredbom
PRINT*,(A(I),I=1,N)
koja ima isto dejstvo kao grupa naredbi
DO 45 I=1,N
PRINT A(I)
45 CONTINUE

Ako želimo da prikažemo matricu A koja ima M vrsta i N kolona to možemo postići
naredbom

PRINT*,((A(I,J),J=1,N),I=1,M)
PRIMERI
Zbir članova niza realnih brojeva

Dat je prirodan broj N (N ≤ 100) i niz brojeva X(I), I=1,N. Sastaviti program koji određuje zbir članova
niza.
Resenje:

PROGRAM ZCNRB
DIMENSION X(100)
PRINT*, 'Unesite broj clanova niza '
READ*,N
PRINT*, 'Unesite elemente niza '
DO 10 I=1,N
READ*,X(I)
10 CONTINUE
SUMA=0
DO 20 I=1,N
SUMA=SUMA+X(I)
20 CONTINUE
PRINT*, 'SUMA= ',SUMA
END
Proizvod članova niza brojeva

Dat je prirodan broj N (N ≤100) i niz brojeva X(I), I = 1, N. Sastaviti program koji određuje proizvod
članova niza.
Resenje:

PROGRAM PCNB
DIMENSION X(100)
PRINT*, 'Unesite broj clanova niza '
READ*,N
PRINT*, 'Unesite elemente niza '
DO 10 I=1,N
READ*,X(I)
10 CONTINUE
P=1
DO 20 I=1,N
P= P*X(I)
20 CONTINUE
PRINT*, 'Proizvod je:= ',P
END
Najveći element u nizu

Dat je prirodan broj N (N ≤ 100) i niz realnih brojeva X(I), I = 1, N. Sastaviti program
koji određuje najveći element u nizu i njegov indeks.

Resenje:

PROGRAM MAXNIZ
DIMENSION X(100)
PRINT*, 'Unesite broj clanova niza '
READ*,N
PRINT*, 'Unesite elemente niza '
DO 10 I=1,N
READ*,X(I)
10 CONTINUE
L=1
DO 20 I=2,N
IF(X(I).GT.X(L))L=I
20 CONTINUE
PRINT*,L,X(L)
END
Najmanji element u nizu

Dat je prirodan broj N (N ≤ 100) i niz realnih brojeva X(I), I = 1, N. Sastaviti program
koji određuje najmanji element u nizu i njegov indeks.
Resenje:

PROGRAM MAXNIZ
DIMENSION X(100)
PRINT*, 'Unesite broj clanova niza '
READ*,N
PRINT*, 'Unesite elemente niza '
DO 10 I=1,N
READ*,X(I)
10 CONTINUE
L=1
DO 20 I=2,N
IF(X(I).LT.X(L))L=I
20 CONTINUE
PRINT*,L,X(L)
END
Uređivanje niza u rastući niz

Dat je prirodan broj N (N ≤ 100) i niz realnih brojeva X(I), I = 1, N. Sastaviti program
koji uređuje dati niz u rastući niz.
Resenje:

PROGRAM RASNIZ
DIMENSION X(100)
PRINT*, 'Unesite broj clanova niza '
READ*,N
PRINT*, 'Unesite elemente niza '
DO 10 I=1,N
READ*,X(I)
10 CONTINUE
DO 20 I=1,N-1
DO 30 J=I+1,N
IF(X(I).GT.X(J))THEN
XP=X(I)
X(I)=X(J)
X(J)=XP
ENDIF
30 CONTINUE
20 CONTINUE
WRITE(*,*) (X(I),I=1,N)
END
Uređivanje niza u opadajući niz

Dat je prirodan broj N (N ≤ 100) i niz realnih brojeva X(I), I = 1, N. Sastaviti program
koji uređuje dati niz u opadajući niz.

Resenje:

PROGRAM OPADNIZ
DIMENSION X(100)
PRINT*, 'Unesite broj clanova niza '
READ*,N
PRINT*, 'Unesite elemente niza '
DO 10 I=1,N
READ*,X(I)
10 CONTINUE
DO 20 I=1,N-1
DO 30 J=I+1,N
IF(X(I).LT.X(J))THEN
XP=X(I)
X(I)=X(J)
X(J)=XP
ENDIF
30 CONTINUE
20 CONTINUE
WRITE(*,*) (X(I),I=1,N)
END
Zbir dve matrice
Dati su prirodni brojevi m, n ≤ 100 i matrice realnih brojeva A, formata m x n i B, formata m x
n. Sastaviti program koji određuje matricu C=A+B.

PROGRAM ZBIRMAT
DIMENSION A(100,100),B(100,100),C(100,100)
PRINT*, 'Unesite broj vrsta i kolona matrica A i B '
READ*,M, N
PRINT*, 'Unesite matricu A po vrstama '
READ*, ((A(I,J),J=1,N),I=1,M)
PRINT*, 'Unesite matricu B po vrstama '
READ*, ((B(I,J),J=1,N),I=1,M)
DO 20 I=1,M
DO 10 J=1,K
C(I,J)=A(I,L)+B(L,J)
10 CONTINUE
20 CONTINUE
PRINT*,’Matrica C je: ’, ((C(I,J),J=1,N),I=1,M)
END
Proizvod dve matrice
Dati su prirodni brojevi m, n, k ≤ 100 i matrice realnih brojeva A, formata m x n i B,
formata n x k. Sastaviti program koji određuje matricu C = AB.

PROGRAM PROMAT
DIMENSION A(100,100),B(100,100),C(100,100)
PRINT*, 'Unesite broj vrsta i kolona matrica A ,B i C'
READ*,M, N,K
PRINT*, 'Unesite matricu A po vrstama '
READ*, ((A(I,J),J=1,N),I=1,M)
PRINT*, 'Unesite matricu B po vrstama '
READ*, ((B(I,J),J=1,K),I=1,N)
DO 30 I=1,M
DO 20 J=1,K
C(I,J)=0
DO 10 L=1,N
C(I,J)=C(I,J)+A(I,L)*B(L,J)
10 CONTINUE
20 CONTINUE
30 CONTINUE
PRINT*,’Matrica C je: ’, ((C(I,J),J=1,K),I=1,M)
END

You might also like