Programiranje predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 12. predavanje p. 1

Величина: px
Почињати приказ од странице:

Download "Programiranje predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 12. predavanje p. 1"

Транскрипт

1 Programiranje predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 12. predavanje p. 1/66

2 Sadržaj predavanja Pretprocesor: Naredba #include. Naredba #define. Parametrizirana #define naredba. Uvjetno uključivanje. Pregled standardne C biblioteke. Standardne datoteke zaglavlja *.h. Matematičke funkcije iz <math.h>. Neke funkcije iz <stdlib.h>. Mjerenje vremena neke funkcije iz <time.h>. Prog2 2019, 12. predavanje p. 2/66

3 Informacije podsjetnik, usmeni Napomena o podsjetniku = šalabahteru na službenom webu: Nemojte ga nositi na kolokvij to je zabranjeno! Dobit ćete ga na kolokviju. Pogledajte unaprijed što sve piše tamo, da se lakše snadete! Ako netko poželi izaći na usmeni (nakon rezultata kolokvija), dogovor za usmeni je u vrijeme uvida u kolokvije. Ako nisam na uvidima javite mi se mailom taj dan! Prog2 2019, 12. predavanje p. 3/66

4 Pretprocesor Prog2 2019, 12. predavanje p. 4/66

5 Općenito o pretprocesoru Prije prevodenja izvornog kôda u objektni ili izvršni kôd izvršavaju se pretprocesorske naredbe. Svaka linija izvornog kôda koja započinje znakom # (osim u komentaru) predstavlja jednu pretprocesorsku naredbu. Pretprocesorska naredba završava krajem linije, a ne znakom ;. Opći oblik pretprocesorske naredbe je #naredba parametri One nisu sastavni dio jezika C, te ne podliježu sintaksi jezika. Neke od pretprocesorskih naredbi su: #include, #define, #undef, #if, #ifdef, #ifndef, #elif, #else, #endif. Prog2 2019, 12. predavanje p. 5/66

6 Naredba #include Naredba #include može se pojaviti u dva oblika: ili #include "ime_datoteke" #include <ime_datoteke> U oba slučaja pretprocesor briše liniju s #include naredbom i uključuje sadržaj datoteke ime_datoteke u izvorni kôd, na mjestu #include naredbe. Ta datoteka smije imati svoje pretprocesorske naredbe, koje će se, takoder, obraditi (= uključi tekst, prodi kroz njega ). Prog2 2019, 12. predavanje p. 6/66

7 Naredba #include (nastavak) Gdje se traži navedena datoteka? Ako je ime_datoteke navedeno unutar navodnika ", onda pretprocesor traži datoteku u direktoriju u kojem se nalazi izvorni program. Ako je ime_datoteke navedeno izmedu znakova < >, to signalizira da se radi o sistemskoj datoteci (poput stdio.h), pa će pretprocesor tražiti datoteku na mjestu odredenom operacijskim sustavom. Prog2 2019, 12. predavanje p. 7/66

8 Naredba #define Naredba #define ima oblik #define ime tekst_zamjene i definira simbol ime kao živi objekt. Ako je zadan i tekst_zamjene (ne mora), onda ime postaje tzv. makro naredba. U tom slučaju, pretprocesor će od mjesta #define naredbe, do kraja datoteke, svaku pojavu imena ime zamijeniti tekstom tekst_zamjene. Do zamjene neće doći unutar znakovnih nizova (string konstanti), tj. unutar para dvostrukih navodnika ", komentara, tj. unutar susjednog para znakova /* i */. Prog2 2019, 12. predavanje p. 8/66

9 Parametrizirane makro naredbe U parametriziranoj makro naredbi, simboličko ime i tekst_zamjene sadrže tzv. formalne argumente. #define ime(argumenti) tekst_zamjene Argumenti se pišu u zagradama ( ) i odvajaju zarezom. Prilikom poziva makro naredbe, ovi formalni argumenti se zamjenjuju stvarnim argumentima navedenim u pozivu. Zamjena ide na razini teksta tekst, umjesto teksta! Makro naredba je efikasnija od funkcije, jer u njoj nema prijenosa argumenata, ali može izazvati neželjene efekte. Prog2 2019, 12. predavanje p. 9/66

10 Primjer parametrizirane makro naredbe Primjer. Makro naredba za nalaženje većeg od dva argumenta #define max(a, B) ((A) > (B)? (A) : (B)) Ovdje su A i B formalni argumenti. Ako se u kôdu pojavi naredba x = max(a1, a2); pretprocesor će je zamijeniti naredbom x = ((a1) > (a2)? (a1) : (a2)); Formalni argumenti (parametri) A i B zamijenjeni su stvarnim argumentima a1 i a2 na razini teksta. Prog2 2019, 12. predavanje p. 10/66

11 Primjer parametrizirane makro naredbe (nast.) Ako na drugom mjestu imamo naredbu x = max(a1 + a2, a1 - a2); ona će biti zamijenjena s x = ((a1 + a2) > (a1 - a2)? (a1 + a2) : (a1 - a2)); Napomena. Sličnost makro naredbe i funkcije može zavarati. Kod makro naredbe nema kontrole tipa argumenata. Supstitucija argumenata je doslovna na razini teksta, što može izazvati neželjene efekte (v. sljedeću stranicu). Prog2 2019, 12. predavanje p. 11/66

12 Razlika makro naredbe i funkcije Ako makro naredbu max pozovemo na sljedeći način x = max(i++, j++); nakon supstitucije dobivamo x = ((i++) > (j++)? (i++) : (j++)); Posljedica: jedna od varijabli i, j neće biti inkrementirana samo jednom (kao kod poziva funkcije) veća varijabla bit će inkrementirana dva puta(!), a rezultat x ovisi o prevoditelju. Napomena. Neke funkcije deklarirane u <stdio.h> su, zapravo, makro naredbe na primjer, getchar i putchar. Isto tako, funkcije u <ctype.h> izvedene su, uglavnom, kao makro naredbe. Prog2 2019, 12. predavanje p. 12/66

13 Makro naredbe i prioritet operacija Primjer. Različite makro naredbe za kvadriranje argumenta. #include <stdio.h> #define SQ1(x) x*x #define SQ2(x) (x)*(x) #define SQ3(x) ((x)*(x)) int main(void) { printf("%d\n", SQ1(1+1)); printf("%d\n", 4/SQ2(2)); printf("%d\n", 4/SQ3(2)); return 0; } Prog2 2019, 12. predavanje p. 13/66

14 Makro naredbe i prioritet operacija (nastavak) Ovaj program ispisuje: Objašnjenje. SQ1: #define SQ1(x) x*x x = 1+1 i doslovnom supstitucijom u SQ1 dobivamo 1+1*1+1 = (prioritet!) = = 3 SQ2: #define SQ2(x) (x)*(x) x = 2 i supstitucijom u 4/SQ2(2) dobivamo 4/(2)*(2) = 4/2*2 = 2*2 = 4 Prog2 2019, 12. predavanje p. 14/66

15 Makro naredbe i prioritet operacija (nastavak) SQ3: #define SQ3(x) ((x)*(x)) x = 2 i supstitucijom u 4/SQ3(2) dobivamo 4/((2)*(2)) = 4/(2*2) = 4/4 = 1 Zato se u parametriziranim makro naredbama koristi gomila zagrada da se osigura korektan prioritet operacija! Tek zadnji SQ3 korektno daje kvadrat argumenta u svim slučajevima, a to se htjelo! Prog2 2019, 12. predavanje p. 15/66

16 Naredba #define i više linija teksta U #define naredbi, tekst_zamjene ide od kraja imena koje definiramo, do kraja linije. Ako želimo da ime bude zamijenjeno s više linija teksta, moramo koristiti obratnu kosu crtu (\) na kraju svakog reda, osim posljednjeg. Kao i prije, \ znači da se red nastavlja na početku sljedećeg. Primjer. Makro za inicijalizaciju polja možemo definirati ovako (nije jako čitljivo i bolje je ne koristiti): #define INIT(polje, dim) for(int i=0;\ i < (dim); ++i) \ (polje)[i] = 0.0; Prog2 2019, 12. predavanje p. 16/66

17 Naredba #undef Definicija nekog imena može se poništiti korištenjem #undef naredbe. Nakon naredbe #undef ime simbol ime više nije definiran ( nije živ ). Primjer. Redefinicija konstante M_PI (vrijednost π u double) #include <math.h> /* math.h definira M_PI kao */ #undef M_PI #define M_PI (4.0*atan(1.0)) Provjeru je li simbol ime definiran ili ne, možemo napraviti naredbama #ifdef, odnosno, #ifndef (v. malo kasnije). Prog2 2019, 12. predavanje p. 17/66

18 Uvjetno uključivanje kôda #if, #endif Pretprocesorske naredbe #if, #endif, #else, #elif služe za uvjetno uključivanje (ili isključivanje) pojedinih dijelova programa. Uvjetno uključivanje kôda naredbama #if, #endif ima oblik: #if uvjet blok naredbi #endif Ako je uvjet ispunjen, onda će blok naredbi izmedu #if uvjet i #endif biti uključen u izvorni kôd koji ide prevoditelju na prevodenje. Ako uvjet nije ispunjen, taj blok neće biti uključen, tj. u prevoditelj ide tekst bez tog bloka kôda. Prog2 2019, 12. predavanje p. 18/66

19 Uvjetno uključivanje kôda (nastavak) Oprez: ovaj #if radi na nivou teksta izvornog kôda i nije zamjena za if naredbu u samom jeziku C. Uvjet koji se pojavljuje u #if naredbi je konstantan cjelobrojni izraz. Nula se interpretira kao laž, a svaka vrijednost različita od nule kao istina. Najčešća svrha uključivanja/isključivanja je uključiti neku datoteku zaglavlja, ako neko ime nije bilo definirano ranije (ime = simbol, ili pretprocesorska varijabla ). Za provjeru definiranosti nekog imena (simbola) služi izraz defined(ime) koji daje 1 ako je ime definirano, a 0 ako nije. Prog2 2019, 12. predavanje p. 19/66

20 Uvjetno uključivanje kôda (nastavak) Najčešće se koristi provjera je li neko ime nedefinirano. Tu smijemo koristiti i operator negacije!!defined(ime) Primjer. Provjera nedefiniranosti nekog privatnog imena za uključivanje odgovarajuće datoteke zaglavlja datoteka.h #if!defined( datoteka.h ) #include "datoteka.h" #endif s tim da se na početku datoteka.h definira privatno ime #define datoteka.h Prog2 2019, 12. predavanje p. 20/66

21 Naredbe #ifdef i #ifndef To je standardna tehnika kojom se izbjegava višestruko uključivanje.h datoteka (i potencijalna beskonačna rekurzija). Konstrukcije #if defined i #if!defined se vrlo često pojavljuju u praksi, pa postoje pokrate u obliku naredbi #ifdef i #ifndef (respektivno). Usput, zagrade oko imena simbola (ime) nisu obavezne. Primjer. Prethodnu provjeru možemo napisati u obliku #ifndef datoteka.h #include "datoteka.h" #endif a na početku datoteka.h se definira ime datoteka.h. Prog2 2019, 12. predavanje p. 21/66

22 Naredbe #else i #elif Složene if naredbe za uključivanje ili isključivanje pojedinih dijelova kôda (u pretprocesoru) grade se pomoću naredbi #else i #elif. Značenje #else je isto kao značenje else u C-u. Značenje #elif je isto kao značenje else if. Oprez: Sve ove naredbe rade na nivou teksta programa i nisu zamjena za odgovarajuće naredbe u samom jeziku C! Prog2 2019, 12. predavanje p. 22/66

23 Uvjetno uključivanje kôda Primjer 1 Primjer. Za kôd koji treba raditi na raznim operacijskim sustavima, testira se koji je operacijski sustav u pitanju, kroz ime (ili simbol) SYSTEM, da bi se uključilo ispravno zaglavlje. #if SYSTEM == SYSV #define DATOTEKA "sysv.h" #elif SYSTEM == BSD #define DATOTEKA "bsd.h" #elif SYSTEM == MSDOS #define DATOTEKA "msdos.h" #else #define DATOTEKA "default.h" #endif #include DATOTEKA Prog2 2019, 12. predavanje p. 23/66

24 Uvjetno uključivanje kôda Primjer 2 Primjer. U fazi razvoja programa korisno je ispisivati razne medurezultate, za kontrolu korektnosti izvršavanja programa. U završnoj verziji programa, sav taj suvišan ispis treba eliminirati. Za to se koristi standardni simbol DEBUG.... scanf("%d", &x); #ifdef DEBUG printf("debug: x = %d\n", x); // testiranje #endif Pitanje. Može li se definirati neki simbol (poput DEBUG) izvana prilikom prevodenja programa? Svi standardni prevoditelji imaju -Dsimbol opciju koja omogućava da se simbol definira na komandnoj liniji. Prog2 2019, 12. predavanje p. 24/66

25 Definiranje simbola kod prevodenja Primjer. Pretpostavimo da je program koji sadrži prikazani dio kôda smješten u prog.c. Tada će prevodenje naredbom cc -o prog prog.c proizvesti program u kojem ispis varijable x nije uključen. Medutim, prevodenje naredbom cc -DDEBUG -o prog prog.c dat će izvršni kôd koji uključuje printf naredbu, jer je simbol DEBUG definiran. Napomena. Ovu mogućnost -Dsimbol ima i Code::Blocks, ali samo kad se radi s projektima. Potražite i probajte! Prog2 2019, 12. predavanje p. 25/66

26 Standardna C biblioteka Prog2 2019, 12. predavanje p. 26/66

27 Općenito o zaglavljima Standardna C biblioteka sadrži niz funkcija, tipova i makro naredbi. Pripadne deklaracije nalaze se u sljedećim standardnim zaglavljima (redom kao u KR2): <assert.h> <float.h> <math.h> <stdarg.h> <stdlib.h> <ctype.h> <limits.h> <setjmp.h> <stddef.h> <string.h> <errno.h> <locale.h> <signal.h> <stdio.h> <time.h> Može biti još toga, poput <complex.h>. Nastavak: Pregled matematičke biblioteke <math.h> i neke korisne stvari iz <stdlib.h> i <time.h>. Prog2 2019, 12. predavanje p. 27/66

28 Matematičke funkcije u <math.h> Konvencija: x i y su tipa double, a n je tipa int. Sve funkcije kao rezultat vraćaju double. Funkcija sin(x) cos(x) tan(x) Značenje sin x cos x tg x asin(x) arcsinx [ π 2, π 2], x [ 1,1] acos(x) arccosx [0,π], x [ 1,1] atan(x) arctgx [ π, ] π 2 2 atan2(y, x) (x, y) su koordinate točke u ravnini, vraća arctg y [ π,π], jer prepoznaje kvadrant x Prog2 2019, 12. predavanje p. 28/66

29 Matematičke funkcije u <math.h> (nastavak) Funkcija Značenje sinh(x) sh x cosh(x) ch x tanh(x) th x exp(x) e x log(x) lnx, x > 0 log10(x) log 10 x, x > 0 pow(x, y) x y greška ako x = 0 i y 0, ili x < 0 i y nije cijeli broj sqrt(x) x, x 0 Prog2 2019, 12. predavanje p. 29/66

30 Matematičke funkcije u <math.h> (nastavak) Funkcija ceil(x) floor(x) fabs(x) ldexp(x, n) Značenje x, u double formatu najmanji cijeli broj x x, u double formatu najveći cijeli broj x x x 2 n frexp(x, int *exp) ako je x = y 2 n, uz y [ 1 2,1, vraća y, a eksponent n sprema u *exp. Ako je x = 0, onda je y = n = 0. Prog2 2019, 12. predavanje p. 30/66

31 Matematičke funkcije u <math.h> (nastavak) Funkcija Značenje modf(x, double *ip) rastavlja x na cjelobrojni i razlomljeni dio, oba istog predznaka kao x. Razlomljeni dio vrati, a cjelobrojni dio spremi u *ip. fmod(x, y) realni (floating point) ostatak dijeljenja x/y, istog znaka kao x. Ako je y = 0, rezultat ovisi o implementaciji. Prog2 2019, 12. predavanje p. 31/66

32 Razlika atan i atan2 Razlika izmedu funkcija double atan(double x); double atan2(double y, double x); atan(x) vraća arctgx [ π 2, π 2 ], atan2(y, x) interpretira argumente (paziti na poredak!) kao koordinate točke (x,y) u ravnini i vraća arctg y x [ π,π], (radi i za x = 0, pita prije dijeljenja!) jer prepoznaje kvadrant u kojem je točka (x,y). Prog2 2019, 12. predavanje p. 32/66

33 Razlika atan i atan2 (nastavak) Primjer. Program #include <stdio.h> #include <math.h> int main(void) { double x = -1.0, y = -1.0; printf("%f\n", atan(y / x)); printf("%f\n", atan2(y, x)); return 0; } ispisuje Točni rezultati su π/4, 3π/4 (treći kvadrant). Prog2 2019, 12. predavanje p. 33/66

34 Funkcije floor i ceil Uočite da funkcije za najmanje i najveće cijelo double floor(double x); double ceil(double x); vraćaju rezultat tipa double, a ne int. Primjer. Rezultat ispisa sljedećeg dijela kôda printf("%g\n", floor(5.2)); printf("%g\n", floor(-5.2)); printf("%g\n", ceil(5.2)); printf("%g\n", ceil(-5.2)); je: 5, -6, 6, -5 (zbog %g formata). Prog2 2019, 12. predavanje p. 34/66

35 Funkcija fmod Funkcija double fmod(double x, double y); vraća realni ostatak pri dijeljenju x/y, s tim da ostatak ima isti predznak kao x. Princip je isti kao kod cjelobrojnog dijeljenja, s tim da je ili x = cjelobrojni kvocijent y +ostatak, ostatak < y, ostatak = x ((int)(x/y)) y. Prog2 2019, 12. predavanje p. 35/66

36 Funkcija fmod (nastavak) Primjer. Sljedeći odsječak kôda ispisuje printf("%g, ", fmod(5.2, 2.6)); printf("%g, ", fmod( 5.57, 2.51)); printf("%g, ", fmod( 5.57, -2.51)); printf("%g, ", fmod(-5.57, 2.51)); printf("%g\n", fmod(-5.57, -2.51)); 0, 0.55, 0.55, -0.55, zbog (int)(5.57/2.51) = 2 i 5.57 = , itd. Prog2 2019, 12. predavanje p. 36/66

37 Funkcija frexp Funkcija double frexp(double x, int *exp); rastavlja broj x na binarnu mantisu i binarni eksponent. Primjer. Sljedeći odsječak kôda ispisuje double x = 8.0; int exp_2; printf("%f, ", frexp(x, &exp_2)); printf("%d\n", exp_2); , 4 Prog2 2019, 12. predavanje p. 37/66

38 Funkcije exp, log, log10 i pow double exp(double x); double log(double x); double log10(double x); double pow(double x, double y); Primjer. Sljedeći odsječak kôda ispisuje printf("%g\n", log(exp(22))); printf("%g\n", log10(pow(10.0, 22.0))); Prog2 2019, 12. predavanje p. 38/66

39 Neke funkcije iz <stdlib> Datoteka zaglavlja <stdlib.h> ima nekoliko vrlo korisnih funkcija. Na primjer: qsort QuickSort algoritam za općenito sortiranje niza podataka, bsearch Binarno traženje zadanog podatka u već sortiranom nizu. U pozivu ovih funkcija, kao stvarni argument, moramo zadati funkciju za usporedivanje podataka u nizu. Prog2 2019, 12. predavanje p. 39/66

40 Funkcija za usporedbu dva objekta Funkcija za usporedbu, nazovimo ju comp, prima pokazivače na dva objekta koje treba usporediti i vraća rezultat tipa int. int comp(const nesto *a, const nesto *b); Vraćeni rezultat odreduje medusobni poredak objekata *a i *b (isto kao kod funkcije strcmp za usporedbu stringova): comp(a, b) < 0 *a < *b (*a je ispred *b), comp(a, b) = 0 *a = *b (*a je jednak *b), comp(a, b) > 0 *a > *b (*a je iza *b). Funkcija qsort sortira niz uzlazno, prema tako zadanom poretku. Za obrnuti (= silazni ) poredak, treba okrenuti predznak rezultata funkcije comp (zamjena ispred iza ). Prog2 2019, 12. predavanje p. 40/66

41 Funkcija qsort Funkcija za sortiranje niza QuickSort algoritmom: void qsort(void *base, size_t n, size_t size, int (*comp) (const void *, const void *)); Primjer. Dio programa za uzlazno sortiranje stringova char rjecnik[3][20] = {"po", "ut", "sri"}; int i; qsort(rjecnik, 3, 20, strcmp); for (i = 0; i < 3; ++i) puts(rjecnik[i]); Funkcija za usporedbu stringova je baš strcmp. Prog2 2019, 12. predavanje p. 41/66

42 Funkcija bsearch Funkcija za binarno traženje zadanog podatka u sortiranom nizu (prema poretku zadanom funkcijom comp): void *bsearch(const void *key, const void *base, size_t n, size_t size, int (*comp) (const void *, const void *)); Vraća pokazivač na nadeni podatak (ako ga ima), ili NULL. Primjer. printf("%s\n", bsearch("ut", rjecnik, 3, 20, strcmp)); Pripadni indeks možemo izračunati aritmetikom pokazivača, samo treba paziti na tipove. Prog2 2019, 12. predavanje p. 42/66

43 Korektno baratanje s tipovima Na ovako napisan program (v. qs_1.c) compiler se buni na nekoliko mjesta, upozorenjem zbog miješanja tipova char * i void *. Program radi korektno, ali... nije lijepo! Popravak. Funkciju strcmp za usporedbu stringova treba zatvoriti u funkciju korektnog prototipa nazovimo ju usporedi, a iznutra pretvorimo tipove pokazivača: int usporedi(const void *a, const void *b) { return strcmp((char *) a, (char *) b); } Prog2 2019, 12. predavanje p. 43/66

44 Korektno baratanje s tipovima (nastavak) Poziv funkcije qsort onda glasi: qsort(rjecnik, 3, 20, usporedi); Sasvim analogno, povratnu vrijednost funkcije bsearch treba propisno castati u char * printf("%s\n", (char *) bsearch("ut", rjecnik, 3, 20, usporedi)); Na popravljeni program (v. qs_1a.c) compiler nema teksta. Napomena. Kod sortiranja rječnika zamjenama pokazivača, a ne stringova (kao ovdje), treba paziti na tipove u usporedi! Prog2 2019, 12. predavanje p. 44/66

45 Elegantnije rješenje = pretvoriti tip u pozivu Elegantnije i čitljivije rješenje je (v. KR2, str ): funkcija za usporedbu ima korektne tipove argumenata, u pozivu qsort i bsearch pretvoriti tip funkcije u zadani. Dakle, funkcija za usporedbu stringova je baš strcmp, a poziv izgleda ovako (v. qs_1b.c): qsort(rjecnik, 3, 20, (int (*) (const void*, const void*)) strcmp); Još preglednije je uvesti ime tipa za funkciju (v. qs_1c.c): typedef int (*Comp_fun) (const void*, const void*); qsort(rjecnik, 3, 20, (Comp_fun) strcmp); Prog2 2019, 12. predavanje p. 45/66

46 Definiranje kriterija sortiranja Primjer. Sortiranje polja cijelih brojeva (v. qs_2c.c, qs_3.c). typedef int (*Comp_fun) (const void*, const void*); int main(void) { int i, polje[4] = {1, 3, -4, 2}; qsort(polje, 4, sizeof(int), (Comp_fun) usporedi); /* Cast funkcije */ } for (i = 0; i < 4; ++i) printf("%d\n", polje[i]); return 0; Prog2 2019, 12. predavanje p. 46/66

47 Funkcija usporedi za uzlazno sortiranje Funkcija usporedi za usporedivanje cijelih brojeva (uzlazno): int usporedi(const int *p_a, const int *p_b) { /* Nije dobro: return *p_a - *p_b; jer rezultat ne mora biti korektno prikaziv! */ } if (*p_a < *p_b) return -1; else if (*p_a > *p_b) return 1; else return 0; Prog2 2019, 12. predavanje p. 47/66

48 Funkcije rand i srand Funkcije za generiranje slučajnih cijelih brojeva: int rand(void); void srand(unsigned int seed); Funkcija rand() vraća tzv. pseudo slučajni cijeli broj u rasponu od 0 do RAND_MAX, s tim da RAND_MAX mora biti barem = (tj. 16 bitni int, bez negativnih). Funkcija srand(seed) postavlja tzv. sjeme za generator pseudo slučajnih brojeva na zadanu vrijednost seed. Standardno sjeme je 1, ako ga ne postavimo sami! Prog2 2019, 12. predavanje p. 48/66

49 Funkcije rand i srand (nastavak) Primjer. unsigned int seed; int i; printf("%d\n", RAND_MAX); /* */ scanf("%u", &seed); srand(seed); for (i = 1; i <= 10; ++i) printf(" %6d\n", rand()); Napomene o svrsi generatora pseudoslučajnih brojeva, ulozi i ispravnom korištenju sjemena (seed). Prog2 2019, 12. predavanje p. 49/66

50 Povećanje raspona slučajnih brojeva Povećanje raspona na dvostruki (kvadratni), ako je prikaziv: int randint(void) { return RAND_MAX * rand() + rand(); } Još bolje daje raspon od 0 do (RAND_MAX+1) 2 1: int randint(void) { static int RAND_BASE = RAND_MAX + 1 return RAND_BASE * rand() + rand(); } Ako znamo da je RAND_MAX = , može s pomakom: int randint(void) { /* int od 0 do 2^30-1 */ return ( rand() << 15 ) + rand(); } Prog2 2019, 12. predavanje p. 50/66

51 Transformacije slučajnih cijelih brojeva Skaliranje nenegativnog randint na zadani interval [l, u]: int randint_interval(int l, int u) { return l + randint() % (u - l + 1); } Za dobivanje uniformno distribuiranih realnih brojeva iz intervala [0, 1], bitno je znati RANDINT_MAX: double rand_double() { return (double) randint() / RANDINT_MAX; } Savjet: Ako vam zaista treba, uzeti bolji generator (ima toga)! Prog2 2019, 12. predavanje p. 51/66

52 Mjerenje vremena Prog2 2019, 12. predavanje p. 52/66

53 Datoteka zaglavlja <time.h> U datoteci zaglavlja <time.h> deklarirani su tipovi i funkcije za manipulaciju danima, datumima i vremenom. Detaljnije ćemo opisati samo funkcije za vrijeme, s ciljem: kako napraviti jednostavnu štopericu za vrijeme izvršavanja pojedinih dijelova programa. Za početak, deklarirana su dva aritmetička tipa za prikaz vremena: time_t za prikaz stvarnog kalendarskog vremena, clock_t za prikaz procesorskog vremena. Razlog za dva različita tipa = različite jedinice! Prog2 2019, 12. predavanje p. 53/66

54 Stvarno vrijeme funkcija time Stvarno kalendarsko vrijeme mjeri se u nekim standardnim jedinicama za vrijeme (recimo, sekundama nije bitno). Funkcija za očitanje trenutnog vremena je: Vraća time_t time(time_t *tp); trenutno vrijeme, ili -1, ako vrijeme nije dostupno. Ako pokazivač tp nije NULL, onda se izlazna vrijednost sprema i u *tp. To je katkad zgodno napraviti radi preglednosti. Prog2 2019, 12. predavanje p. 54/66

55 Razlika vremena funkcija difftime Stvarna vrijednost rezultata nije naročito korisna (uključivo i jedinice). Najčešće je to broj sekundi proteklih od nekog nultog trenutka! Za štopericu realnog vremena treba nam samo razlika vremena: vrijeme na kraju vrijeme na početku. Tome služi funkcija double difftime(time_t time2, time_t time1); koja vraća razliku time2 time1 izraženu u sekundama. Prog2 2019, 12. predavanje p. 55/66

56 Primjer mjerenje realnog vremena Primjer. Treba izabrati neki posao koji dovoljno dugo traje, da nešto i vidimo. Zato koristimo dvije cjelobrojne petlje, da dobijemo kvadratnu složenost. Za demo, radimo oko poziva funkcije rand. Cijeli program za ovaj eksperiment je (v. time_1.c) #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int i, j; time_t t1, t2; Prog2 2019, 12. predavanje p. 56/66

57 Primjer mjerenje realnog vremena time(&t1); /* Moze i t1 = time(null); */ for (i = 1; i < ; ++i) for (j = 1; j < i; ++j) rand(); time(&t2); /* Moze i t2 = time(null); */ printf("%g\n", difftime(t2, t1)); } return 0; Na mom računalu (uz Intelov C), rezultat je 96 (sekundi). Prog2 2019, 12. predavanje p. 57/66

58 Procesorsko vrijeme funkcija clock Procesorsko vrijeme mjeri se u broju tzv. otkucaja procesorskog sata. Funkcija za očitanje procesorskog vremena je: Vraća clock_t clock(void); procesorsko vrijeme (u broju otkucaja sata) od početka izvršavanja programa, ili -1, ako vrijeme nije dostupno. Dodatno, simbolička konstanta CLOCKS_PER_SEC sadrži broj otkucaja procesorskog sata u jednoj sekundi. Primjena u štoperici ide po istom principu razlike vremena. Prog2 2019, 12. predavanje p. 58/66

59 Primjer mjerenje procesorskog vremena Primjer. Pretvaranje u sekunde realiziramo funkcijom dsecnd. Cijeli program za ovaj eksperiment je (v. time_2.c) #include <stdio.h> #include <stdlib.h> #include <time.h> double dsecnd (void) { return (double)( clock() ) / CLOCKS_PER_SEC; } int main(void) { int i, j; double t1, t2, time; Prog2 2019, 12. predavanje p. 59/66

60 Primjer mjerenje procesorskog vremena t1 = dsecnd(); for (i = 1; i < ; ++i) for (j = 1; j < i; ++j) rand(); t2 = dsecnd(); time = t2 - t1; printf("%g\n", time); } return 0; Rezultati za dva izvršavanja su , (sekundi). Prog2 2019, 12. predavanje p. 60/66

61 Pametniji primjer trajanje QuickSorta Primjer. Trajanje qsort algortima iz <stdlib.h> na slučajno generiranom polju od 10 7 cijelih brojeva (v. qs_time.c). #include <stdio.h> #include <stdlib.h> #include <time.h> /* Globalno polje x za sortiranje, zato da nema problema s velicinom programskog stoga za automatske varijable u funkcijama. */ #define MAXN /* 10^7 */ int x[maxn]; Prog2 2019, 12. predavanje p. 61/66

62 Trajanje QuickSorta (nastavak) /* Funkcija za procesorsko vrijeme u sekundama. */ double dsecnd (void) { return (double)( clock() ) / CLOCKS_PER_SEC; } /* Slucajni broj iz [0, 2^30-1]. KORISTI da je RAND_MAX = 2^15-1. Dvostruki poziv rand(), uz pomak prvog broja za 15 bitova. */ int randint(void) { return ( rand() << 15 ) + rand(); } Prog2 2019, 12. predavanje p. 62/66

63 Trajanje QuickSorta (nastavak) /* Usporedba cijelih brojeva za qsort. */ int intcomp(const int *p_a, const int *p_b) { /* Opcenito, NIJE dobro: return *p_a - *p_b; jer rezultat ne mora biti korektno prikaziv! */ /* Medjutim, to RADI za brojeve iz [0, 2^30-1], dobivene iz randint. */ } if (*p_a < *p_b) return -1; else if (*p_a > *p_b) return 1; else return 0; Prog2 2019, 12. predavanje p. 63/66

64 Trajanje QuickSorta (nastavak) /* Tip funkcije za usporedbu, kod casta u pozivu qsort. */ typedef int (*Comp_fun) (const void*, const void*); /* Glavni program. */ int main(void) { int n = MAXN; /* Broj elemenata u polju. */ int i; double start, stop; Prog2 2019, 12. predavanje p. 64/66

65 Trajanje QuickSorta (nastavak) /* Generiranje slucajnog polja x s n intova. */ for (i = 0; i < n; ++i) x[i] = randint(); /* Quicksort na polju x, sa stopericom oko poziva. */ start = dsecnd(); qsort(x, n, sizeof(int), (Comp_fun) intcomp); stop = dsecnd(); Prog2 2019, 12. predavanje p. 65/66

66 Trajanje QuickSorta (nastavak) /* Provjera sortiranosti polja x. */ for (i = 1; i < n; ++i) if (x[i-1] > x[i]) printf(" Greska na [%d, %d]\n", i-1, i); /* Ispis vremena. */ } printf(" n = %8d, vrijeme = %9.3f [s]\n", n, stop - start); return 0; Na mom računalu (uz Intelov C), rezultat je (sekundi). Prog2 2019, 12. predavanje p. 66/66

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4 Programiranje 2 0. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/48 Sadržaj predavanja Ponavljanje onog dijela C-a koji

Више

Uvod u računarstvo 2+2

Uvod u računarstvo 2+2 Ulaz i izlaz podataka Ulaz i izlaz podataka Nakon odslušanog bit ćete u stanju: navesti sintaksu naredbi za unos/ispis znakova znakovnih nizova cijelih brojeva realnih brojeva jednostruke i dvostruke preciznosti

Више

Programiranje 1 9. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 9. predavanje p. 1/6

Programiranje 1 9. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 9. predavanje p. 1/6 Programiranje 1 9. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 9. predavanje p. 1/60 Sadržaj predavanja Osnovni algoritmi na cijelim brojevima:

Више

070-ALIP2-udzbenik.indb

070-ALIP2-udzbenik.indb 0. U uvodnom ćemo poglavlju ponoviti osnove programskog jezika C s kojima smo se susreli u. razredu. U kratkom pregledu navedeni su operatori (aritmetički, relacijski i logički), neke od funkcija iz biblioteka

Више

Programiranje predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2016, 10. predavanje p. 1

Programiranje predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2016, 10. predavanje p. 1 Programiranje 1 10. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2016, 10. predavanje p. 1/95 Sadržaj predavanja Funkcije: Definicija funkcije.

Више

Uvod u računarstvo 2+2

Uvod u računarstvo 2+2 Pokazivači Pointeri Definicija pokazivača Pokazivač na tip je varijabla koja sadrži adresu varijable tipa tip. Definicija pokazivača: mem_klasa tip * p_var; Primjer: static int * pi; double *px; char*

Више

Programiranje 2 popravni kolokvij, 15. lipnja Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanj

Programiranje 2 popravni kolokvij, 15. lipnja Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanj Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje, te službeni šalabahter. Kalkulatori, mobiteli, razne neslužbene tablice, papiri i sl., nisu dozvoljeni! Sva rješenja napišite

Више

Uvod u računarstvo 2+2

Uvod u računarstvo 2+2 Programiranje 2 doc.dr.sc. Goranka Nogo PMF Matematički odsjek, Zagreb Kontakt ured: 228, drugi kat e-mail: nogo@math.hr konzultacije: četvrtak, 12:00-14:00 petak, 11:00-12:00 neki drugi termin, uz prethodni

Више

Programiranje 1 5. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 5. predavanj

Programiranje 1 5. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 5. predavanj Programiranje 1 5. predavanje dodatak Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 5. predavanje dodatak p. 1/60 Sadržaj predavanja dodatka Primjeri

Више

Uvod u računarstvo 2+2

Uvod u računarstvo 2+2 Datoteke nastavak Funkcija fgets Funkcija koja učitava podatke iz datoteke, liniju po liniju, je char *fgets(char *str, int n, FILE *fp); gdje su str pokazivač na dio memorije (string) u koji će ulazna

Више

Oblikovanje i analiza algoritama 5. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 5. pr

Oblikovanje i analiza algoritama 5. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 5. pr Oblikovanje i analiza algoritama 5. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 5. predavanje p. 1/68 Sadržaj predavanja Nehomogene rekurzije

Више

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode] Programski jezik C organizacija izvornog programa Prevođenje Pisanje programa izvorni program Prevođenje programa izvršni program Izvršavanje programa rezultat Faze prevođenja Pretprocesiranje Kompilacija

Више

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić projektni zadatak projektovanje programa (algoritmi) pisanje programskog koda, izvorni kod,

Више

Programiranje 1 IEEE prikaz brojeva sažetak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, IEEE p

Programiranje 1 IEEE prikaz brojeva sažetak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, IEEE p Programiranje IEEE prikaz brojeva sažetak Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog 208, IEEE prikaz brojeva sažetak p. /4 Sadržaj predavanja IEEE standard

Више

Funkcije predavač: Nadežda Jakšić

Funkcije predavač: Nadežda Jakšić Funkcije predavač: Nadežda Jakšić funkcije delovi programa koji izvršavaju neki zadatak, celinu; dele na ugrađene, korisničke i main funkciju ugrađene funkcije printf,scanf... da bi se one izvršile potrebno

Више

Programiranje 1 3. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2017, 3. predavanje p. 1/1

Programiranje 1 3. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2017, 3. predavanje p. 1/1 Programiranje 1 3. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2017, 3. predavanje p. 1/132 Sadržaj predavanja Osnovni tipovi podataka u računalu

Више

2015_k2_z12.dvi

2015_k2_z12.dvi OBLIKOVANJE I ANALIZA ALGORITAMA 2. kolokvij 27. 1. 2016. Skice rješenja prva dva zadatka 1. (20) Zadano je n poslova. Svaki posao je zadan kao vremenski interval realnih brojeva, P i = [p i,k i ],zai

Више

Računarski praktikum I - Vježbe 03 - Implementacija strukture string

Računarski praktikum I - Vježbe 03 - Implementacija strukture string Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 03 - Implementacija strukture string v2018/2019. Sastavio: Zvonimir Bujanović Stringovi u C-u String

Више

Programiranje 2 1. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 1. predavanje p. 1/7

Programiranje 2 1. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 1. predavanje p. 1/7 Programiranje 2 1. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 1. predavanje p. 1/75 Dobar dan, dobro došli Prog2 2019, 1. predavanje

Више

Programiranje 1 drugi kolokvij, 2. veljače Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje,

Programiranje 1 drugi kolokvij, 2. veljače Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje, Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje, te službeni podsjetnik. Kalkulatori, mobiteli, razne neslužbene tablice, papiri i sl., nisu dozvoljeni! Sva rješenja napišite

Више

Programiranje 1 3. predavanje prošireno Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 3. predava

Programiranje 1 3. predavanje prošireno Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 3. predava Programiranje 1 3. predavanje prošireno Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 3. predavanje prošireno p. 1/120 Sadržaj proširenog predavanja

Више

Oblikovanje i analiza algoritama 4. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 4. pr

Oblikovanje i analiza algoritama 4. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 4. pr Oblikovanje i analiza algoritama 4. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 4. predavanje p. 1/69 Sadržaj predavanja Složenost u praksi

Више

Računarski praktikum I - Vježbe 01 - Uvod

Računarski praktikum I - Vježbe 01 - Uvod Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 01 - Uvod v2018/2019. Sastavio: Zvonimir Bujanović Gradivo i način polaganja Gradivo: osnove jezika

Више

Microsoft PowerPoint - MR - Vjezbe - 03.ppt [Compatibility Mode]

Microsoft PowerPoint - MR - Vjezbe - 03.ppt [Compatibility Mode] Sveučilište u Zagrebu PMF Matematički odsjek Mreže računala Vježbe 03 Zvonimir Bujanović Slaven Kožić Vinko Petričević Mrežno programiranje: SocketAPI Programiramo u aplikacijskom sloju, za ostale se brinu

Више

Tutoring System for Distance Learning of Java Programming Language

Tutoring System for Distance Learning of Java Programming Language Niz (array) Nizovi Niz je lista elemenata istog tipa sa zajedničkim imenom. Redosled elemenata u nizovnoj strukturi je bitan. Konkretnom elementu niza pristupa se preko zajedničkog imena niza i konkretne

Више

PROMENLJIVE, TIPOVI PROMENLJIVIH

PROMENLJIVE, TIPOVI PROMENLJIVIH PROMENLJIVE, TIPOVI PROMENLJIVIH Šta je promenljiva? To je objekat jezika koji ima ime i kome se mogu dodeljivati vrednosti. Svakoj promenljivoj se dodeljuje registar (memorijska lokacija) operativne memorije

Више

Računarski praktikum I - Vježbe 07 - Podstrukture, const, reference

Računarski praktikum I - Vježbe 07 - Podstrukture, const, reference Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 07 - Podstrukture, const, reference v2018/2019. Sastavio: Zvonimir Bujanović Podstrukture Član

Више

Konverzije, operatori, matematičke funkcije predavač: Nadežda Jakšić

Konverzije, operatori, matematičke funkcije predavač: Nadežda Jakšić Konverzije, operatori, matematičke funkcije predavač: Nadežda Jakšić 1. temperatura u stepenima Celzijusa i stepene Farenhajta tf=1.8*tc+32 2. pretvoriti inče u centimetre 1 inč=2.54cm 3. vreme učitano

Више

PowerPoint Presentation

PowerPoint Presentation V Unos i prikaz podataka Programi čitaju i ispisuju podatke sa spoljašnjih uređaja Postoji prolazni U/I (tastatura i monitor) i trajni U/I podataka (fajlovi) printf i scanf pišu/čitaju na monitor ili sa

Више

Microsoft PowerPoint - Datoteke [Compatibility Mode]

Microsoft PowerPoint - Datoteke [Compatibility Mode] Датотеке стандардни улаз / излаз Датотека је именовани низ знакова (бајтова) У програмском језику C датотека је везана за улаз и излаз података функције стандардне библиотеке Најједностaвније

Више

Microsoft PowerPoint - Bitovi [Compatibility Mode]

Microsoft PowerPoint - Bitovi [Compatibility Mode] Оператори над битовима (Јаничић, Марић: Програмирање 2, тачка 5.6) Оператори за рад са појединачним битовима Само на целобројне аргументе: ~ битовска негација & битовска конјункција (и) битовска (инклузивна)

Више

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije korake. Uz dobro razrađen algoritam neku radnju ćemo

Више

Programski jezik C

Programski jezik C Pojam funkcije Deklaracija i definicija funcije Poziv funkcije Memorijske klase promjenljivih Primjeri. Za kompajliranje koda koristen DEV-C++ 4.9.9.2 Compiler!!!! Moze is koristiti I bilo koji drugi standardni

Више

Funkcije predavač: Nadežda Jakšić

Funkcije predavač: Nadežda Jakšić Funkcije predavač: Nadežda Jakšić do sada su korišćene "gotove" funkcije iz standardnih biblioteka (cin, cout...) one su pozivane iz main funkcije koja je glavna funkcija u programu jer izvršavanje programa

Више

Programiranje 2 7. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 7. predavanje p. 1/7

Programiranje 2 7. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 7. predavanje p. 1/7 Programiranje 2 7. predavanje Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 7. predavanje p. 1/75 Sadržaj predavanja Tipovi i složene deklaracije:

Више

Slide 1

Slide 1 OSNOVNI POJMOVI Naredba je uputa računalu za obavljanje određene radnje. Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Pisanje programa zovemo programiranje. Programski jezik

Више

Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 1

Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 1 Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 1 Sadržaj 1 Pokazivači - ponavljanje 3 2 Pokazivači - veza sa nizovima 5 2 1 Pokazivači - ponavljanje 1.

Више

Strukture predavač: Nadežda Jakšić

Strukture predavač: Nadežda Jakšić Strukture predavač: Nadežda Jakšić složeni tip podatka; kolekcija promenljivih različitog tipa koje su sakupljene radi lakše manipulacije sintaksa: struct [oznakastrukture] navede { definicija člana strukture;

Више

P1.3 Projektovanje makroasemblera

P1.3 Projektovanje makroasemblera ПРОЈЕКТОВАЊЕ МАКРОАСЕМБЛЕРА Макроасемблер Потребна проширења асемблера 1 МАКРОАСЕМБЛЕР Макроасемблер преводи полазни програм написан на макроасемблерском језику у извршиви машински програм. Приликом израде

Више

1. OPĆE INFORMACIJE 1.1. Naziv kolegija Programiranje 1.6. Semestar Nositelj kolegija dr.sc. Bruno Trstenjak, v. pred Bodovna vrijednost

1. OPĆE INFORMACIJE 1.1. Naziv kolegija Programiranje 1.6. Semestar Nositelj kolegija dr.sc. Bruno Trstenjak, v. pred Bodovna vrijednost 1. OPĆE INFORMACIJE 1.1. Naziv kolegija Programiranje 1.6. Semestar. 1.. Nositelj kolegija dr.sc. Bruno Trstenjak, v. pred. 1.7. Bodovna vrijednost (ECTS) 7 1.3. Suradnici 1.8. Način izvođenja nastave

Више

Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan

Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan Programiranje u C-u ili C++-u Pseudo-slučajni brojevi; Dinamička alokacija memorije 1 ZADACI SA ČASA Zadatak 1 Napraviti funkciju koja generišlučajan realan broj od 0 i 1. Na standardni izlaz ispisati

Више

Microsoft PowerPoint - 03-Slozenost [Compatibility Mode]

Microsoft PowerPoint - 03-Slozenost [Compatibility Mode] Сложеност алгоритама (Програмирање 2, глава 3, глава 4-4.3) Проблем: класа задатака истог типа Велики број различитих (коректних) алгоритама Величина (димензија) проблема нпр. количина података које треба

Више

PASCAL UVOD 2 II razred gimnazije

PASCAL UVOD 2 II razred gimnazije PASCAL UVOD 2 II razred gimnazije Upis-ispis 1. Upis Read(a,b); --u jednom redu Readln(a,b); -- nakon upisa prelazi se u novi red 2. Ispis Write(a,b); -- u jednom redu Writeln(a,b); --nakon ispisa prelazi

Више

Programski jezik C

Programski jezik C SPR, 2016 Rad sa datotekama Komunikacija sa OS Rad sa datotekama Vrste datoteka Otvaranje / zatvaranje datoteka Pristup datotekama za upis / čitanje Funkcije za rad sa datotekama Ulazno / izlazni tokovi

Више

Tutoring System for Distance Learning of Java Programming Language

Tutoring System for Distance Learning of Java Programming Language Deklaracija promenljivih Inicijalizacija promenljivih Deklaracija promenljive obuhvata: dodelu simboličkog imena promenljivoj i određivanje tipa promenljive (tip određuje koja će vrsta memorijskog registra

Више

1 jmbag ime i prezime Programiranje 2 prvi kolokvij, Rezultati i uvidi u kolokvije: Rezultati u petak, 3.5., navečer na webu, a uvidi u p

1 jmbag ime i prezime Programiranje 2 prvi kolokvij, Rezultati i uvidi u kolokvije: Rezultati u petak, 3.5., navečer na webu, a uvidi u p 1 Rezultati i uvidi u kolokvije: Rezultati u petak 3.5. navečer na webu a uvidi u ponedjeljak 6.5. u 16 sati. Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanje te službeni podsjetnik.

Више

Računarski praktikum I - Vježbe 11 - Funktori

Računarski praktikum I - Vježbe 11 - Funktori Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 11 - Funktori v2018/2019. Sastavio: Zvonimir Bujanović Funkcijski objekti (funktori) Objekt klase

Више

Fortran

Fortran FORTRAN Uvod Računala su samo strojevi: neznaju ništa, ne razmišljaju ni o čemu, ali mogu izuzetnom brzinom i vrlo točno, slijediti precizno napisane upute. Takve upute moraju se napisati u posebnom jeziku

Више

Microsoft Word - predavanje8

Microsoft Word - predavanje8 DERIVACIJA KOMPOZICIJE FUNKCIJA Ponekad je potrebno derivirati funkcije koje nisu jednostavne (složene su). Na primjer, funkcija sin2 je kompozicija funkcija sin (vanjska funkcija) i 2 (unutarnja funkcija).

Више

23. siječnja od 13:00 do 14:00 Školsko natjecanje / Osnove informatike Srednje škole RJEŠENJA ZADATAKA S OBJAŠNJENJIMA Sponzori Medijski pokrovi

23. siječnja od 13:00 do 14:00 Školsko natjecanje / Osnove informatike Srednje škole RJEŠENJA ZADATAKA S OBJAŠNJENJIMA Sponzori Medijski pokrovi 3. siječnja 0. od 3:00 do 4:00 RJEŠENJA ZADATAKA S OBJAŠNJENJIMA Sponzori Medijski pokrovitelji Sadržaj Zadaci. 4.... Zadaci 5. 0.... 3 od 8 Zadaci. 4. U sljedećim pitanjima na pitanja odgovaraš upisivanjem

Више

Grananje u programu predavač: Nadežda Jakšić

Grananje u programu predavač: Nadežda Jakšić Grananje u programu predavač: Nadežda Jakšić u okviru linijske strukture izvršavaju se sve naredbe u okviru razgranate strukture uvek se ispituje neki uslov; u zavisnosti od toga da li je uslov ispunjen

Више

Sveucilište u Zagrebu

Sveucilište u Zagrebu Proširivanje Pythona programskim jezicima C/C++ Ivo Majić Mentor: Doc. dr. sc. Domagoj Jakobović Sveučilište u Zagrebu Fakultet elektrotehnike i računarstva Ak. god. 2011/12 Ivo Majić (FER) Sveučilište

Више

Numerička matematika 11. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb NumMat 2019, 11. p

Numerička matematika 11. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb NumMat 2019, 11. p Numerička matematika 11. predavanje dodatak Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb NumMat 2019, 11. predavanje dodatak p. 1/46 Sadržaj predavanja dodatka

Више

Uvod u PHP

Uvod u PHP Uvod u PHP Marijan Šuflaj FER, 2018 Sadržaj PHP Općenito Sintaksa Osnove Kontrola toka Zadatci Resursi Općenito Naziv od PHP Hypertext Preprocessor Obično koristi ekstenziju.php Tipovi su dinamički Trenutno

Више

Računarski praktikum I - Vježbe 09 - this, static

Računarski praktikum I - Vježbe 09 - this, static Prirodoslovno-matematički fakultet Matematički odsjek Sveučilište u Zagrebu RAČUNARSKI PRAKTIKUM I Vježbe 09 - this, static v2018/2019. Sastavio: Zvonimir Bujanović Pokazivač this Kako funkcija članica

Више

Microsoft Word - 02 Elementi programskog jezika Pascal

Microsoft Word - 02 Elementi programskog jezika Pascal Elementi programskog jezika Pascal Osnovni elementi jezika Osnovni simboli U programskom jeziku Pascal sve konstrukcije se grade od skupa osnovnih simbola jezika koji čine slova, cifre i specijalni znaci.

Више

Programiranje 1 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević December 5, 2007

Programiranje 1 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević December 5, 2007 Programiranje 1 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević December 5, 2007 2 Sadržaj 1 Programski jezik C 5 1.1 Oblast važenja lokalnih promenljivih..........................

Више

Pojačavači

Pojačavači Programiranje u fizici Prirodno-matematički fakultet u Nišu Departman za fiziku dr Dejan S. Aleksić Programiranje u fizici dr Dejan S. Aleksić, vanredni profesor Kabinet 307 (treći sprat), lab. za elektroniku

Више

Microsoft Word - Zadaci za samostalno vjezbanje 4.doc

Microsoft Word - Zadaci za samostalno vjezbanje 4.doc Zadaci za samostalno vježbanje 4. Svi zadaci dati ovdje su takvi da se mogu uraditi korištenjem isključivo gradiva prva četiri predavanja i ranije stečenog predznanja na predmetu Osnove računarstva. Zvjezdicom

Више

Matematika 1 - izborna

Matematika 1 - izborna 3.3. NELINEARNE DIOFANTSKE JEDNADŽBE Navest ćemo sada neke metode rješavanja diofantskih jednadžbi koje su drugog i viših stupnjeva. Sve su te metode zapravo posebni oblici jedne opće metode, koja se naziva

Више

Osnove inženjerske informatike II. Uvod u programiranje Vaš prvi program K. F. & V. B.

Osnove inženjerske informatike II. Uvod u programiranje Vaš prvi program K. F. & V. B. Osnove inženjerske informatike II. Uvod u programiranje Vaš prvi program K. F. & V. B. The only way to learn a new programming language is by writing programs in it. Kernighan & Ritchie... and it is well

Више

Državna matura iz informatike

Državna matura iz informatike DRŽAVNA MATURA IZ INFORMATIKE U ŠK. GOD. 2013./14. 2016./17. SADRŽAJ Osnovne informacije o ispitu iz informatike Područja ispitivanja Pragovi prolaznosti u 2014./15. Primjeri zadataka po područjima ispitivanja

Више

PowerPoint Presentation

PowerPoint Presentation Programski jezici i strukture podataka UVOD Izvođači nastave Srđan Popov (JUG 215) Petar Marić (JUG 105) Milena Počuča (JUG 215) Milica Milutinović (JUG 215) Termini konsultacija naknadno Cilj vežbi Sticanje

Више

Test ispravio: (1) (2) Ukupan broj bodova: 21. veljače od 13:00 do 14:00 Županijsko natjecanje / Osnove informatike Osnovne škole Ime i prezime

Test ispravio: (1) (2) Ukupan broj bodova: 21. veljače od 13:00 do 14:00 Županijsko natjecanje / Osnove informatike Osnovne škole Ime i prezime Test ispravio: () () Ukupan broj bodova:. veljače 04. od 3:00 do 4:00 Ime i prezime Razred Škola Županija Mentor Sadržaj Upute za natjecatelje... Zadaci... Upute za natjecatelje Vrijeme pisanja: 60 minuta

Више

PowerPoint Presentation

PowerPoint Presentation SVEUČILIŠTE U ZAGREBU Fakultet prometnih znanosti Zavod za inteligentne transportne sustave Vukelićeva 4, Zagreb, HRVATSKA Računalstvo Operatori, pisanje izraza i osnove pseudokôda Izv. prof. dr. sc. Edouard

Више

Univerzitet u Novom Sadu Tehnički fakultet Mihajlo Pupin Zrenjanin Seminarski rad Predmet: Konkuretno programiranje doc. dr Dejan Lacmanovic Zorica Br

Univerzitet u Novom Sadu Tehnički fakultet Mihajlo Pupin Zrenjanin Seminarski rad Predmet: Konkuretno programiranje doc. dr Dejan Lacmanovic Zorica Br Univerzitet u Novom Sadu Tehnički fakultet Mihajlo Pupin Zrenjanin Seminarski rad Predmet: Konkuretno programiranje doc. dr Dejan Lacmanovic Zorica Brkić SI 29/15 Zrenjanin 2018. Softversko inženjerstvo

Више

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode]

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode] Osnove programiranja Funkcije - Metode Prenos parametara Po vrednosti Po referenci Po izlazu Sadržaj Opseg važenja promenljive u drugim strukturama Rekurzije Prenos parametara Metoda može vratiti isključivo

Више

Microsoft Word - IZVODI ZADACI _2.deo_

Microsoft Word - IZVODI ZADACI _2.deo_ IZVODI ZADACI ( II deo U ovom del ćemo pokšati da vam objasnimo traženje izvoda složenih fnkcija. Prvo da razjasnimo koja je fnkcija složena? Pa, najprostije rečeno, to je svaka fnkcija koje nema tablici

Више

PowerPoint Presentation

PowerPoint Presentation Tehnička škola 9. maj Bačka Palanka Programiranje III razred Tok izvršavanja programa Tok izvršavanja programa Dosadašnji kod se izvršavao praktično linearno. Nije postojala nikakva uslovna ili brojačka

Више

Microsoft Word - 11 Pokazivaci

Microsoft Word - 11 Pokazivaci Pokazivači U dosadašnjem radu smo imali prilike da koristimo promenljive koje smo deklarisali na početku nekog bloka. Prilikom deklaracije promenljiva dobija jedinstveni naziv i odgovarajući prostor u

Више

PRIRODNO MATEMATIČKI FAKULTET U NIŠU DEPARTMAN ZA RAČUNARSKE NAUKE Utorak, godine PRIJEMNI ISPIT IZ INFORMATIKE 1. Koja od navedenih ekste

PRIRODNO MATEMATIČKI FAKULTET U NIŠU DEPARTMAN ZA RAČUNARSKE NAUKE Utorak, godine PRIJEMNI ISPIT IZ INFORMATIKE 1. Koja od navedenih ekste PRIRODNO MATEMATIČKI FAKULTET U NIŠU DEPARTMAN ZA RAČUNARSKE NAUKE Utorak, 5.06.019. godine PRIJEMNI ISPIT IZ INFORMATIKE 1. Koja od navedenih ekstenzija se najčešće koristi za tekstualne datoteke? a)

Више

Uvod u takmičarsko programiranje

Uvod u takmičarsko programiranje 8. čas Uvod u programiranje - naredbe ciklusa Uvežbavamo naredbe ciklusa, naredbe ponavljanja (loop) https://studio.code.org/s/course2/stage/6/puzzle/3 "Talk is cheap. Show me the code." - Linus Torvalds

Више

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijski program: Informacioni inženjering Informacioni inženjering 1 Rekurzivne funkcije Binarna stabla Informacioni

Више

Konstrukcija i analiza algoritama vežbe 10 Nina Radojičić 15. decembar Algoritamske strategije - podeli pa vladaj (divide and conquer) Ova stra

Konstrukcija i analiza algoritama vežbe 10 Nina Radojičić 15. decembar Algoritamske strategije - podeli pa vladaj (divide and conquer) Ova stra Konstrukcija i analiza algoritama vežbe 10 Nina Radojičić 15. decembar 2016 1 Algoritamske strategije - podeli pa vladaj (divide and conquer) Ova strategija rekurzivno razbija problem na 2 ili više potproblema

Више

Tutoring System for Distance Learning of Java Programming Language

Tutoring System for Distance Learning of Java Programming Language Obeležene petlje Obeležene petlje Obeležavanje petlje nekim identifikatorom omogućava da se programski tok usmeri na mesto u programu specificirano tim identifikatorom. Ako se iza naredbi break ili continue

Више

Microsoft PowerPoint - 11.Programski_Jezik_C_ulaz-izlaz [Compatibility Mode]

Microsoft PowerPoint - 11.Programski_Jezik_C_ulaz-izlaz [Compatibility Mode] Programski jezik C - ulaz i izlaz programa Ulaz i izlaz programa Argumenti komandne linije Standardni tokovi Preusmerenje Funkcije za rad sa ulazom i izlazom Formatiran ulaz/izlaz Datoteke 2 Aргументи

Више

Dvostruki integrali Matematika 2 Erna Begović Kovač, Literatura: I. Gusić, Lekcije iz Matematike 2

Dvostruki integrali Matematika 2 Erna Begović Kovač, Literatura: I. Gusić, Lekcije iz Matematike 2 vostruki integrali Matematika 2 Erna Begović Kovač, 2019. Literatura: I. Gusić, Lekcije iz Matematike 2 http://matematika.fkit.hr Uvod vostruki integral je integral funkcije dvije varijable. Oznaka: f

Више

MJEŠOVITA SREDNJA TEHNIČKA ŠKOLA TRAVNIK PROGRAMIRANJE I PROGRAMSKI JEZICI PROGRAMSKI JEZIK C -SKRIPTA ZA INTERNU UPOTREBU-

MJEŠOVITA SREDNJA TEHNIČKA ŠKOLA TRAVNIK PROGRAMIRANJE I PROGRAMSKI JEZICI PROGRAMSKI JEZIK C -SKRIPTA ZA INTERNU UPOTREBU- MJEŠOVITA SREDNJA TEHNIČKA ŠKOLA TRAVNIK PROGRAMIRANJE I PROGRAMSKI JEZICI PROGRAMSKI JEZIK C -SKRIPTA ZA INTERNU UPOTREBU- Sadržaj 1 Uvod 8 1.1 Programski jezici......................... 8 1.2 Osnove

Више

MergedFile

MergedFile ELEKTROTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU BEOGRAD, 18.09.2018. Ispit iz Programiranja 2 Ispit traje 135 minuta Napomene: a) Pažljivo proučite Uputstvo pre popunjavanja Obrasca za odgovore. b) Vrednost

Више

My_P_Trigo_Zbir_Free

My_P_Trigo_Zbir_Free Штa треба знати пре почетка решавања задатака? ТРИГОНОМЕТРИЈА Ниво - Основне формуле које произилазе из дефиниција тригонометријских функција Тригонометријске функције се дефинишу у правоуглом троуглу

Више

ALIP1_udzb_2019.indb

ALIP1_udzb_2019.indb Razmislimo Kako u memoriji računala prikazujemo tekst, brojeve, slike? Gdje se spremaju svi ti podatci? Kako uopće izgleda memorija računala i koji ju elektronički sklopovi čine? Kako biste znali odgovoriti

Више

Програмирај!

Програмирај! Листе Поред појединачних вредности исказаних бројем или ниском карактера, често је потребно забележити већи скуп вредности које су на неки начин повезане, као, на пример, имена у списку путника у неком

Више

Programski jezici i strukture podataka

Programski jezici i strukture podataka Programski jezici i strukture podataka 7 ULAZ, IZLAZ I DATOTEKE Ulazno izlazne operacije Programi moraju imati mogućnost da upisuju podatke u datoteke ili da ih ispisuju na izlazni uređaj poput ekrana

Више

Numerička matematika 1. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb NumMat 2019, 1. pre

Numerička matematika 1. predavanje dodatak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb NumMat 2019, 1. pre Numerička matematika 1. predavanje dodatak Saša Singer singer@math.hr web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb NumMat 2019, 1. predavanje dodatak p. 1/102 Sadržaj predavanja dodatka

Више

Datoteke predavač: Nadežda Jakšić

Datoteke predavač: Nadežda Jakšić Datoteke predavač: Nadežda Jakšić svi podaci sa kojima smo do sada radili u programima su smeštani u operativnu memoriju računara i trajali su najduže koliko i sam program; kada program završi sa radom,

Више

SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK Ivana Šore REKURZIVNOST REALNIH FUNKCIJA Diplomski rad Voditelj rada: doc.

SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK Ivana Šore REKURZIVNOST REALNIH FUNKCIJA Diplomski rad Voditelj rada: doc. SVEUČILIŠTE U ZAGREBU PRIRODOSLOVNO MATEMATIČKI FAKULTET MATEMATIČKI ODSJEK Ivana Šore REKURZIVNOST REALNIH FUNKCIJA Diplomski rad Voditelj rada: doc.dr.sc. Zvonko Iljazović Zagreb, rujan, 2015. Ovaj diplomski

Више

Рачунарска интелигенција

Рачунарска интелигенција Рачунарска интелигенција Генетско програмирање Александар Картељ kartelj@matf.bg.ac.rs Ови слајдови представљају прилагођење слајдова: A.E. Eiben, J.E. Smith, Introduction to Evolutionary computing: Genetic

Више

JMBAG IME I PREZIME BROJ BODOVA MJERA I INTEGRAL 2. kolokvij 29. lipnja (Knjige, bilježnice, dodatni papiri i kalkulatori nisu dozvoljeni!) 1. (

JMBAG IME I PREZIME BROJ BODOVA MJERA I INTEGRAL 2. kolokvij 29. lipnja (Knjige, bilježnice, dodatni papiri i kalkulatori nisu dozvoljeni!) 1. ( MJERA I INTEGRAL. kolokvij 9. lipnja 018. (Knjige, bilježnice, dodatni papiri i kalkulatori nisu dozvoljeni! 1. (ukupno 6 bodova Neka je (, F, µ prostor s mjerom, neka je (f n n1 niz F-izmjerivih funkcija

Више

ELEKTROTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU BEOGRAD, Ispit iz Programiranja 2 Ispit traje 135 minuta Napomene: a) Pažljivo proučite U

ELEKTROTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU BEOGRAD, Ispit iz Programiranja 2 Ispit traje 135 minuta Napomene: a) Pažljivo proučite U ELEKTROTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU BEOGRAD, 02.07.2019. Ispit iz Programiranja 2 Ispit traje 135 minuta Napomene: a) Pažljivo proučite Uputstvo pre popunjavanja Obrasca za odgovore. b) Vrednost

Више

Programiranje 1

Programiranje 1 Sveučilište u Rijeci ODJEL ZA INFORMATIKU Ulica Radmile Matejčić 2, Rijeka Akademska 2018./2019. godina PROGRAMIRANJE 1 Studij: Preddiplomski studij informatike (jednopredmetni) Godina i semestar: 1. godina,

Више

PowerPoint Presentation

PowerPoint Presentation II Karakteristike C jezika Programski jezik C je viši programski jezik opšte namene. Tesno je povezan sa UNIX OS uz koji je razvijan. Razvio ga je Dennis Ritchie 1970 u Bell Telephone Laboratories, Inc.

Више

Skalarne funkcije više varijabli Parcijalne derivacije Skalarne funkcije više varijabli i parcijalne derivacije Franka Miriam Brückler

Skalarne funkcije više varijabli Parcijalne derivacije Skalarne funkcije više varijabli i parcijalne derivacije Franka Miriam Brückler i parcijalne derivacije Franka Miriam Brückler Jednadžba stanja idealnog plina uz p = nrt V f (x, y, z) = xy z x = n mol, y = T K, z = V L, f == p Pa. Pritom je kodomena od f skup R, a domena je Jednadžba

Више

Konstrukcija i analiza algoritama Nina Radojičić februar Analiza algoritama, rekurentne relacije 1 Definicija: Neka su f i g dve pozitivne fun

Konstrukcija i analiza algoritama Nina Radojičić februar Analiza algoritama, rekurentne relacije 1 Definicija: Neka su f i g dve pozitivne fun Konstrukcija i analiza algoritama Nina Radojičić februar 2018. 1 Analiza algoritama, rekurentne relacije 1 Definicija: Neka su f i g dve pozitivne funkcije od argumenta n iz skupa N prirodnih brojeva.

Више

07_PJISP_II_Predavanja

07_PJISP_II_Predavanja Rekurzija i rekurzivne funkcije Informacioni inženjering 1 Rekurzija Rekurzija nastaje kada se pojam definiše pomoću sebe samog Javlja se u različitim oblastima, od lingvistike i logike, preko matematike

Више

8 2 upiti_izvjesca.indd

8 2 upiti_izvjesca.indd 1 2. Baze podataka Upiti i izvješća baze podataka Na početku cjeline o bazama podataka napravili ste plošnu bazu podataka o natjecanjima učenika. Sada ćete izraditi relacijsku bazu u Accessu o učenicima

Више

Numeričke metode u fizici 1, Projektni zadataci 2018./ Za sustav običnih diferencijalnih jednadžbi, koje opisuju kretanje populacije dviju vrs

Numeričke metode u fizici 1, Projektni zadataci 2018./ Za sustav običnih diferencijalnih jednadžbi, koje opisuju kretanje populacije dviju vrs Numeričke metode u fizici, Projektni zadataci 8./9.. Za sustav običnih diferencijalnih jednadžbi, koje opisuju kretanje populacije dviju vrsta životinja koje se nadmeću za istu hranu, dx ( dt = x x ) xy

Више

Uvod u obične diferencijalne jednadžbe Metoda separacije varijabli Obične diferencijalne jednadžbe Franka Miriam Brückler

Uvod u obične diferencijalne jednadžbe Metoda separacije varijabli Obične diferencijalne jednadžbe Franka Miriam Brückler Obične diferencijalne jednadžbe Franka Miriam Brückler Primjer Deriviranje po x je linearan operator d dx kojemu recimo kao domenu i kodomenu uzmemo (beskonačnodimenzionalni) vektorski prostor funkcija

Више

Sveučilište u Zagrebu Fakultet prometnih znanosti Zavod za inteligentne transportne sustave Katedra za primijenjeno računarstvo Vježba: #7 Kolegij: Ba

Sveučilište u Zagrebu Fakultet prometnih znanosti Zavod za inteligentne transportne sustave Katedra za primijenjeno računarstvo Vježba: #7 Kolegij: Ba Sveučilište u Zagrebu Fakultet prometnih znanosti Zavod za inteligentne transportne sustave Katedra za primijenjeno računarstvo Vježba: #7 Kolegij: Baze podataka Tema: Osnovna SELECT naredba Vježbu pripremili:

Више

Microsoft Word - 6ms001

Microsoft Word - 6ms001 Zadatak 001 (Anela, ekonomska škola) Riješi sustav jednadžbi: 5 z = 0 + + z = 14 4 + + z = 16 Rješenje 001 Sustav rješavamo Gaussovom metodom eliminacije (isključivanja). Gaussova metoda provodi se pomoću

Више