Fortran 90. Numeričke Metode DECEMBAR ĐURĐEVAC NATAŠA

Similar documents
b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end.

Uvod u programiranje - vežbe. Kontrola toka izvršavanja programa

Veliki računski zadaci mogu se razbiti u manje delove i time se omogućava ljudima da iskoriste ono što su neki drugi već uradili, umesto da počinju

Programiranje III razred

Učitati cio broj n i štampati njegovu recipročnu vrijednost. Ako je učitan broj 0, štampati 1/0.

Numeričke metode i praktikum

I PISMENI ZADATAK III6 I GRUPA IME I PREZIME

Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj list.

NIZOVI.

... ; ako je a n parno. ; ako je a n neparno

pojedinačnom elementu niza se pristupa imeniza[indeks] indeks od 0 do n-1

24/03/2018. Deklaracija promenljivih. Inicijalizacija promenljivih. Deklaracija i inicijalizacija promenljivih

Programiranje 1. Školska 2006/2007 godina. Matematički fakultet, Beograd

Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi

For. 1) program ispis; {ispisuje brojeve od 1 do 5 jedan ispod drugog} uses wincrt; var s,i:integer; begin for i:=1 to 5do writeln(i); end.

/*#include <iostream> // Prvi zadatak sa integralnomg ispita

VHDLPrimeri Poglavlje5.doc

x y = z Zadaci - procedure

VB komande. Programiranje 1

Rekurzivne metode. Posmatrajmo rekurzivan metod kojim u objektu listbox1 klase ListBox upisujemo sve prirodne brojeve od 1 do datog n.

Vidljivost TipPovratneVrednosti ImeFunkcije (NizParametara) { TeloFunkcije }

Univerzitet u Nišu Građevinsko-arhitektonski fakultet. 4. Ciklična algoritamska struktura 5. Jednodimenzionalno polje.

Vežbe - XII nedelja PHP Doc

for i:=2 to n do if glasovi[i]>max then begin max:=glasovi[i]; k:=i {*promenljiva k ce cuvati indeks takmicara sa najvise glasova *} end;

2. Linijska algoritamska struktura

NISKE (stringovi) u C-u: podsećanje. 1. Primer programa koji uvodi niske karaktera terminisane nulom

Uvod u relacione baze podataka

VEŽBA 5 do while petlja, switch case

Programiranje kroz aplikacije. Kontrola toka programa Nizovi

Programiranje III razred

Izrada VI laboratorijske vježbe

Algoritmi i strukture podataka 2. Čas, Uvod u C++

Programiranje 1 Programski jezik C 2. čas. Mirko Spasić

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET

Uvod u programiranje i softverski paketi. Milan Gocić

Numerical Computation

Ugradjena promenljiva ans cuva poslednju vrednost koja nije dodeljena ni jednoj promenljivoj >> ans+3

Mašinska vizija. Dr Nenad Jovičić tnt.etf.rs/~mv

Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo

namespace spojneice { public partial class Form1 : Form { public Form1() { InitializeComponent(); }

Osnovne strukture podataka

Programiranje Programski jezik C. Sadržaj. Datoteke. prof.dr.sc. Ivo Ipšić 2009/2010

Svi Java tipovi imaju ekvivalentan tip u jeziku Scala Većina Scala koda se direktno preslikava u odgovarajući Java konstrukt

PREDMET. Osnove Java Programiranja. Čas JAVADOC

var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.LoadFromFile('d:\brojevi.

CSS CSS. selector { property: value; } 3/20/2018. CSS: Cascading Style Sheets

modifier returnvaluetype methodname(list of parameters) { // Method body; }

Sintaksa VHDL jezika - podsjetnik -

PHP? PHP (recursive acronym "PHP: Hypertext Preprocessor") Open Source general-purpose scripting language Web development

Šesti čas PL/SQL. Skraćenica za Procedural Language extension to SQL (proširenje SQL-a). Služi za složeniju i precizniju obradu podataka.

Prirodno-matematički fakultet u Nišu Departman za fiziku. dr Dejan S. Aleksić Programiranje u fizici

Računarske osnove Interneta (SI3ROI, IR4ROI)

Uvod u programiranje I (za gimnazijalce)

Jezik Baze Podataka SQL. Jennifer Widom

Dežurni nastavnik: Kolokvijum traje 1.5 sat, prvih sat vremena nije dozvoljeno napuštanje kolokvijuma. Upotreba literature nije dozvoljena.

CREATE DATABASE naziv-baze-podataka [IN naziv-dbspace]

INSTALACIJA RAZVOJNOG OKRUŽENJA DEV-C++

Uvod u programiranje

VRIJEDNOSTI ATRIBUTA

Programiranje 2. Odsek za Softversko inženjerstvo. Elektrotehnički fakultet Beograd

Funkcije, prenos parametara i dinamička alokacija memorije

Ispit iz Programiranja 1

Naredbe za kontrolu toka

Variable Neighborhood Descent - VND (Metoda promenljivog spusta)

Nizovi. Programiranje 1

Internet programiranje JavaScript - školska 2017/2018

Programske paradigme Funkcionalna paradigma

Java. primeri. /verzija /

12. Uskladištene procedure (Stored Procedures)

Objektno orijentisano programiranje

Tema 8: Koncepti i teorije relevantne za donošenje odluka (VEŽBE)

VHDLPrimeri Poglavlje3.doc. end process seq; Slika 3.1: Anatomija osnovne definicije test bench-a

1/42 SQL DDL. CREATE ALTER DROP Schema Table Tablespace Index View Domain Constraint... DECLARE TABLE (DB2)

Sistemi baza podataka. Slavica Aleksić

Informacioni sistemi i baze podataka

f2() f6() main() f3() f7() f4()

Reflection Seismology (SCPY 482) An Introduction to Fortran 90 Programming

Veverica (za ocene >=3)

Aspektno programiranje u Javi. AOP + AspectJ

Zadaci za Tutorijal 2.

Sadržaj predavanja 02. Cjelobrojni tip podataka(1/3) Cjelobrojni tip podataka(2/3) Cjelobrojni tip podataka(3/3) prec(short) prec(int) prec(long) int

JavaScript i HTML DOM

Scheme je funkcionalni jezik moderna varijanta jezika LISP-a, s dodacima iz Algola (lokalni doseg identifikatora).

AMath 483/583 Lecture 8

Lekcija 02 Uslovni iskazi i petlje, Funkcije. Miljan Milošević

Što ćete naučiti. Internet općenito HTML CSS XML XHTML Javascript DOM DHTML PHP, ASP.NET

PROGRAMIRANJE. Amir Hajdar

EL E E L M E EN E T N I PRO R GR G A R M A SKO K G G JEZ E I Z KA A C# C PROF DR SAŠA BOŠNJAK

UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a

Z1. Dati RDF graf predstavljen u JSON-LD sintaksi potrebno je grafički predstaviti u skladu sa RDF notacijom. (5 poena)

[] znači opciono; znači ili. Strana 3 od 5

PARALELNO PROGRAMIRANJE

Ovde će se raditi na funkcijama konverzija: konverzija tipa datuma u znak tip i obrnuto, konverzija broja u karakter tip i obrnuto

Uputstvo za korišćenje logrotate funkcije

Lekcija 01 Uvodna razmatranja, Uvod u C. Miljan Milošević

Uvod u programski jezik

Algoritmi i strukture podataka

8. NIZOVI. // deklaracija niza od 10 elemenata: data[0], data[1],..data[9] int data[10] ; S elementima niza se operira kao s prostim varijablama

KLASIFIKACIJA JELENA JOVANOVIĆ. Web:

(non breaking space) kontrola horizontalnog rastojanja u tekstu

Transcription:

Fortran 90 Numeričke Metode DECEMBAR 2007. ĐURĐEVAC NATAŠA

Zašto Fortran? jer je konstruisan da bi se koristio za rešavanje matematičkih problema. jer je jednostavan jezik sa dobrim performansama (odlična podrška za brz i jednostavan rad sa kompleksnim brojevima, matricama i vektorima). jer je najpopularniji p. jezik za rešavanje problema iz oblasti numeričkih metoda (Scientific computing)

Fortran ili C++? In the early 1990s, C++ programs were much slower than their Fortran counterparts -- typical benchmarks showed C++ lagging behind Fortran's performance by anywhere from 20% to a factor of ten. Users of C++ often rewrote the number crunching parts of their programs in Fortran to get acceptable performance. In the past five years, the performance of C++ programs has improved markedly due to a combination of better optimizing C++ compilers and new library techniques (Blitz++). Now, C++ has caught up with Fortran and is giving it stiff competition (http://www.oonumerics.org/blitz/)

Literatura: knjiga; disk Filipa Marića GNU Fortran 95 compiler (Windows, Linux), Salford Fortran 95 Compiler 4.8.0 ( Windows), Intel Fortran 95 Compiler (Linux). e-knjige. Kod-ovi. vežbe;

Osnovni elementi jezika :!prvi primer =komentar program hello!ime programa je hello implicit none!neophodno zbog pravila iz f77 (tamo nije bila neophodna deklaracija svih prom. vec je kompajler to sam radio na osnovu imena promenljivih) write (*, *) Hello, world!! Prvo * je za std.izlaz, a drugo * za listu prom.koja se ispisuje end program hello!kraj programa

Tipovi podataka: <tip pod.>(<opc. atr.>)* :: <ime prom.>(=init vr.)* (,<ime promenljive> >(=inicijalna vrednost)*)* tip pod.: character za stringove (dužina mora da se navede prilikom deklaracije i ne može da se menja) logical za istinitosne vrednosti integer za cele brojeve real za realne brojeve complex za kompleksne brojeve

program deklaracije implicit none! Deklarišu se promenljive.! Realni brojevi. real :: masa, visina! Karakter.Kad se ne zada duzina stringa podrazumeva se da je 1. Nije terminiran nulom. character :: c! Niska. character(len=5) :: hello! Ceo 16-bitan broj.kind odredjuje sirinu u bajtovima. Podrazumevana vr.za kind je 4. integer(kind=2) :: brojac! Realan broj sirine 8 bajtova. real(kind=3) :: duzina

! Kao logicke konstante se koriste!.true. i.false.! Logicka promenljiva. logical :: zastavica=.true.! Kompleksan broj. complex :: i=(0,1), comp comp = 4 + i write(*,*) 'Kompleksan broj', comp! Niska. character(len=4) :: poruka1='blah'! Moze i: character(len=4) :: poruka2="blah"! Niska koja sadrzi apostrof: character(len=5) :: poruka3= 'ajde"

! Jos jedna niska :) character(len=42) :: poruka4="in the beginning the Universe was created"! Ispisuje se vrednost promenljive poruka4. write(*,*) poruka4! Deklaracija konstantne promenljive,atribut parameter. integer, parameter :: answer=42 real, parameter :: pi=3.14! Ucitava se promenljiva duzina: read(*,*) duzina! Uvecava se duzina za 1, i zatim ispisuje na ekran. duzina = duzina + 1 write(*,*) duzina

! Izvedeni, korisnicki tip, tacka u 3D prostoru. type tacka real :: x1, x2, x3 end type tacka type(tacka) :: a type(tacka) :: b! Referenciranje izvedenog tipa. a%x1 = 2.3 a%x2 = 3.14 a%x3 = 0 write(*,*) 'A je tacka i ima koordinate', a%x1, a%x2, a%x3 end program deklaracije

Izrazi : Aritmetički operatori +,-,*,/,**. Relacioni operatori ==, /=, <,<=,>,>=. Logički operatori.nor.(negacija),.and.,.or.,.eqv. Operator konkatenacije // Konverzija int(),real(),cmplx() Matematičke f-je sqrt(),exp(), log(),sin(),cos(),abs(),min(), max()

program operatori implicit none real, parameter :: dva=2.00 real :: x, y x = 2.71 y = 10.00 write(*,*) 'x + y je', x+y! Zbir celog i realnog broja je realan broj. write(*,*) 1 + 2.45 write(*,*) 'Koren iz dva je', dva ** 0.5! Kosinus korena iz 3 je: write(*,*) cos(sqrt(3.0)) end program operatori

Kontrolne strukture : Naredba grananja if (log.izraz) then blok naredbi elseif (log.izraz) then else blok naredbi blok naredbi end if select case

program case implicit none integer :: x x = 4 select case (x) case(:6) write(*,*) 'prvi slucaj' case(7, 9, 10) write(*,*) 'drugi slucaj' case default write(*,*) 'treci slucaj' end select end program case

Napisati program koji za unete realne brojeve a,b,c resava kvadratnu jednacinu ax^2+bx+c=0.

Petlje do blok naredbi end do do i=poc,kraj blok naredbi end do do while (uslov) blok naredbi end do

program petlja1 implicit none integer :: i, j! Do petlja. do i=1,10 if (sin(real(i)) > 0) write(*,*) i, sin(i+0.0) end do! Do while petlja. do while(i<20) write(*,*) i i = i + 1 end do

j = 0! Cycle - naredba za prelazak na sledeci krug! petlje. do i=1,30 j = j + 1 if (i>20) cycle write(*,*) i end do write(*,*) 'j ima vrednost', j end program petlja1

Napisati program koji racuna n-ti clan Fibonacijevog niza. Neka su prvi i drugi clan jedinice, a svaki naredni clan zbir prethodna dva.

Nizovi : Jednodimenzioni i visedimenzioni nizovi. tip, DIMENSION( (indeks:indeks)+ ) :: ime1, ime2,..., imen ime ( ceo broj )=vrednost

program nizovi implicit none integer :: I! Deklaracija niza integer, dimension(0:2) :: niz real, dimension(-2:4) :: niz2!inicijalizacija 1-dim niza integer, dimension(0:4) :: nule=(/0,3,0,9,0/)! Dvodimenzioni niz real, dimension(0:2, 2:7) :: niz3! Inicijalizacija vise-dim niza: real, dimension(0:2, 0:2) ::eye=reshape((/1,0,0,0,1,0,0,0,1/),(/3,3/))

niz(0) = 3 niz(1) = 5 niz(2) = -25 niz3(0,4) = 4.4343! Ispis vrednosti write(*,*) niz3(0,4) nule(1) = (nule(1)) ** 2 do i=0,4 write(*,*) nule(i) end do end program nizovi

Nizovi promenljive dužine: tip, DIMENSION(:,:),allocatable :: ime1,ime2,..., imen Alociranje i dealociranje niza: allocate(ime(ind1:ind2, )) deallocate(ime) Napisati program kojim se racuna nedijagonalna norma matrice (koren iz zbira kvadrata svih elemenata koji nisu na dijagonali)

! Program racuna koren iz zbira kvadrata svih elemenata koji nisu na dijagonali. program nednorma implicit none integer :: n! Dimenzija matrice real, dimension (:,:), allocatable :: a! Matrica integer :: i, j! Brojaci u petljama real :: rezultat! Konacni rezultat! Ucitava se dimenzija matrica. read (*,*) n! Alocira se prostor. allocate(a(1:n, 1:n))

! Ucitava se matrica! read(*,*) ucitava matricu kolonu po kolonu,! a ne vrstu po vrstu. read (*,*) a rezultat = 0 do i=1, n do j=1, n if (i/=j) then rezultat = rezultat + a(i,j) ** 2 endif end do end do rezultat = rezultat ** 0.5 write (*,*) "Rezultat je ", rezultat deallocate(a); end program nednorma

Procedure i funkcije tip FUNCTION (SUBROUTINE) ime f-je (arg1, arg2,..., argn) Deklarisanje prom. (spec. tip,intent(in/out/inout) :: arg1, argn) Naredbe (za f-je ime f-je=.vrednost) END FUNCTION (SUBROUTINE) ime f-je Poziv u programu Za f-je : Za procedure : prom=ime f-je( ); call ime proc( ). Rekurzivne f-je : recursive ispred function, tj. subroutine

Napisati f-ju koja racuna euklidsku normu vektora. Napisati funkciju trag() koja racuna trag matrice.

Programi i moduli Programi su namenjeni izvrsavanju, a moduli grupisanju deklaracija i procedura koje se koriste u vecem broju programa. Moduli: module <ime-modula> implicit none public <ime-prom.> contains end module <ime-modula>

Korišćenje modula u programu program <ime programa> use <ime modula> implicit none end <ime programa> (norma.f90)