You are on page 1of 15

Univerzitet u Tuzli

Mašinski fakultet

RAČUNARI I PROGRAMIRANJE
Fortran 90, osnove

Dr. Salko Ćosić

april 2013
1

primjeri Algoritmi sortiranja      Buble sort (broj elementarnih operacija O~ n2) Sortiranje umetanjem (insertation sort) Shell sort Mergesort O~ n log2n Quicksort (broj elementarnih operacija O~ n log2n) 2 . Algoritmi sortiranja nizova  Matrice. manipulacije. deklaracija.

primjenjuje se za manje nizove.. potiskujuci ostale članove naprijed (desno). --.Sortiranje umetanjem (insertation sort) Polazi se od drugog člana.VIDEO Brzi i napredniji od buble sort. isti se upoređuje sa prethodnim pocevsi od prvog i stavlja na mjesto prvog većeg člana. poslednji). četvrti. Sortiranje: Mergesort podjela-spajanje O~ n log2n 3 . Procedura se ponavlja za naredni član (treci.. Zadatak: nacrtati algoritam i napisati program za sortiranje prema ovom algoritmu.

QS broj poređenja=9. Izbor vodećeg člana (slučajni izbor.Quick sort – najbrži algoritam 1. Razvrstavanje preostalih članova na veće i manje (izabrani član time dobija svoju konačnu poziciju u nizu.. pivot) 2. sum. 4 BS 15 poređenja . minval. 3. Ponavlja se 1 i 2 za podnizove sa manjim i većim članovima (Hoare 1962) Teža implementacija.. unaprijed nepoznate veličine (broj članova) podnizova VIDEO: Funkcije za rad sa nizovima: maxval. obično član iz sredine niza.

MATRICE: Deklaracija matrice: tip (veličina varijable) ime (format) Real(8) temperatura (8.4) prekoračenje formata = greška Primjer 1: transponovanje zadate matrice 5 .

AT(3.3)  A(2.3) End do ! racunanje transponovane matrice  A(1.1).1).2). 2) Print*.Program transponovanje ! ovaj program transponuje datu matricu Implicit none integer:: i.1) Do i=1.3)  A(3.3 write(*.3). Print*.A(i.AT(i.A(i.j.1).2). 6 A(1.'unesi clanove matrice A po redovima' Do i=1.3).3 Do j=1.2).' osnovna i transponovana matrica su' Do i=1. Real:: A(3.A(i.AT(i.3)  .1)   A(3.3). 2) A(3. 2) A(2.1)  A(2.3 AT(i.3 Read*.A(i.A(i.i) End do End do A(1.j)=A(j.3).10)A(i.AT(i.

*)B(i.3).2).A(i.j.3) end do 7 . C(3.2) ! formatirani ispis.3).1).'unesi clanove B(i.3 read(*.End do 10 format(6f10.1).3 read(*.B(i.3).'unesi clanove A(i.d (r=broj ponavljanja.j) po redovima' do i=1.w-broj mjesta. B(3.3) end do print*.j) po redovima' do i=1.B(i. d=broj mjesta ! poslije decimalne tacke End program transponovanje Program mat_mul ! mnozenje matrica Implicit none Integer:: i.2). ! rFw.*)A(i.k REAL:: A(3. print*.A(i. f=real.

J)+A(I.J)=C(I.C(2.1).2).C(1.2).C(1.C(2.1).2).1).C(3.C(3.C(2.3) END program mat_mul procesiranje po redovima i po kolonama 8 .do i=1.3) PRINT *.C(3.J) End do End do End do PRINT *.3) PRINT *.3 C(I.C(1.3 do j=1.K)*B(K.3 do k=1.

mask=mod(A. a_max =maxval(A) minval. a_min =minval(A) amax_parni =maxval(A.2)==0) 9 .Primjer: napisati program koji će generisati slijedeću matricu: Funkcije za rad sa matricama: matmul. maxval.

transpose..suma.. ******************************************************************** 10 .

n ! ispis podataka u externi file Write(11. tekstualni (ASCI) Definicija: OPEN (unit=11.n ! čitanje podataka iz file-a Read(11. status='unknown.x(t) End do Do i=1.*) t.RAD SA DATOTEKAMA (file-ovima):  Ispis numeričkih podataka ili teksta u file-ove  Čitanje podataka iz eksternih file-ova  Spremanje i vizualizacija podataka.*) x(i) End do Close (11) 11 .new. file='ime file-a'.old') Do i=1. formati: binarni.

unesi ponovo' go to 10 end if print*.'slobodni clanovi (otsjecni na Y osi) iznose'.a(1).a(2).3 read(*.3' do i=1.2).X(3.b tecplot 12 .P 10 continue print*.unesi ponovo' go to 10 else if (a(2). program trougao ! ovaj program racuna povrsinu i ispisuje koordinate vrhova u file za proizvoljni trougao zadat preko tri pravca implicit none integer:: i..3 read(*.L(3)..a if (a(1).'UNESI VRIJEDNOSTI slobodnih clanova bi. i=1.' zadati koeficijenti pravca iznose'.O. i=1.eq.a(3))then print*.eq.b(3).Primjer: TROUGAO .or.'unijeti pravci su paralelni.'UNESI VRIJEDNOSTI KOEFICIJENATA PRAVCA ai. real:: a(3).3' do i=1.a(3)) then print*.eq.*)a(i) end do print*.*)b(i) end do print*.'unijeti pravci su paralelni.

2) close(11) end program trougao 13 .2)-X(1.1)=(b(3)-b(2))/(a(2)-a(3)) X(3.2))**2) print*. do i=1.2)-X(2.1)-X(1.X(i.1))**2 + (X(2.1)=(b(3)-b(1))/(a(1)-a(3)) do i=1.2)=a(i)*X(i.'Povrsina trougla iznosi P='.3 X(i.X(3.X(1.1).2))**2) L(2) = sqrt((X(3.dat'.'Obim trougla iznosi O='.*)X(i.! koordinate presjecnih tacaka X(1.2))**2) L(3) = sqrt((X(3.*)X(1.L O = 0.1)+b(i) end do print*.1)=(b(2)-b(1))/(a(1)-a(2)) X(2.P ! ispis tacaka u file: open(unit=11.file='trougao.1).'Duzine stranica iznose'.2)-X(1.2) end do write(11.1).1) ! duzine strana trougla L(1) = sqrt((X(2.status='unknown').1).1)-X(1.1)-X(2.1))**2 + (X(3.O ! povrsina trougla P=sqrt(O*(O-L(1))*(O-L(2))*(O-L(3))) print*.1))**2 + (X(3.5*(L(1)+L(2)+L(3)) print*.X(2.3 write(11.X(1.

sortiranu matricu. AX=b 14 . Napisati program koji elemente matrice u svim redovima sortira po veličini i ispisuje u novu.HOMEWORK: 1. 2. Newtonov polinom Pomoću Newtonovog polinoma odredi jednačinu krive (viseće uže) koje prolazi kroz tri tačke čije su koordinate utvrđene mjerenjem.

3. 15 . Program srednja dubina: data je tekstualna datoteka sa podacima mjerenja dubine dijela od 100 x 100 metara jezera u kvadratnoj mreži 10x10 m. Napisati program koji će učitati navedenu tekstualnu datoteku kao kvadratnu matricu i izračunati srednju dubinu i količinu vode u tom dijelu jezera.