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
|
|
- Bernarda Majstorović
- пре 5 година
- Прикази:
Транскрипт
1 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
2 Sadržaj predavanja Tipovi i složene deklaracije: Pokazivači i polja (ponavljanje). Pokazivač na funkciju (ponavljanje). Složene deklaracije primjeri. Deklaracija tipova typedef. Strukture (prvi dio): Deklaracija strukture. Strukture i typedef. Rad sa strukturama. Operator točka. Strukture i funkcije. Strukture i pokazivači. Operator strelica (->). Unije. Dodatak: Polja bitova. Prog2 2019, 7. predavanje p. 2/75
3 Informacije Trenutno nema bitnih informacija. Prog2 2019, 7. predavanje p. 3/75
4 Tipovi i složene deklaracije Prog2 2019, 7. predavanje p. 4/75
5 Sadržaj Tipovi i složene deklaracije: Pokazivači i polja (ponavljanje). Pokazivač na funkciju (ponavljanje). Složene deklaracije primjeri. Deklaracije tipova typedef. Prog2 2019, 7. predavanje p. 5/75
6 Polje pokazivača i pokazivač na polje Polje pokazivača ima deklaraciju: tip_pod *ime[izraz]; Napomena: Primarni operator [ ] ima viši prioritet od unarnog operatora *. Primjer. Razlikujte polje pokazivača (ovdje, 10 pokazivača): int *ppi[10]; od pokazivača na polje (ovdje, od 10 elemenata): int (*ppi)[10]; Prog2 2019, 7. predavanje p. 6/75
7 Pokazivač na funkciju Pokazivač na funkciju deklarira se kao: tip_pod (*ime)(tip_1 arg_1,..., tip_n arg_n); Ovdje je ime varijabla tipa pokazivač na funkciju, koja uzima n argumenata, tipa tip_1 do tip_n, i vraća vrijednost tipa tip_pod. Slično kao i u prototipu funkcije, u deklaraciji ne treba pisati imena argumenata arg_1 do arg_n. Primjer: int (*pf)(char c, double a); int (*pf)(char, double); Prog2 2019, 7. predavanje p. 7/75
8 Pokazivač na funkciju (nastavak) U deklaraciji pokazivača na funkciju zagrade su nužne. Primarni operator ( ) poziva ili argumenata funkcije, ima viši prioritet od unarnog operatora *. Primjer. Razlikujte funkciju koja vraća pokazivač na neki tip (ovdje, na double): double *pf(double, double); double *(pf(double, double)); /* Isto */ od pokazivača na funkciju koja vraća vrijednost nekog tipa (ovdje, tipa double): double (*pf)(double, double); Prog2 2019, 7. predavanje p. 8/75
9 Pokazivač na funkciju primjeri Primjeri pokazivača na funkciju f iz integracije (prošli put): double integracija(double, double, double (*)(double)); double integracija(double a, double b, double (*f)(double)) { return 0.5 * (b - a) * ( (*f)(a) + (*f)(b) ); } ili: double integracija(double, double, int, double (*)(double));... Prog2 2019, 7. predavanje p. 9/75
10 Složene deklaracije primjeri Kod interpretacije deklaracije uzimaju se u obzir prioriteti i asocijativnost pojedinih operatora. Ti prioriteti mogu se promijeniti upotrebom zagrada. Primjeri. Što je p u sljedećim deklaracijama? int *p[10]; /* polje od 10 ptr na int */ int *p(void); /* funkcija koja nema arg i vraca pokazivac na int */ int p(char *a); /* funkcija koja uzima ptr na char i vraca int */ int *p(char *a); /* funkcija koja uzima ptr na char i vraca ptr na int */ int (*p)(char *a); /* ptr na funkciju koja uzima ptr na char i vraca int */ Prog2 2019, 7. predavanje p. 10/75
11 Složene deklaracije primjeri (nastavak) int (*p(char *a))[10]; int p(char (*a)[8]); /* funk. uzima ptr na char i vraca ptr na polje od 10 elem. tipa int */ /* funk. uzima ptr na polje od 8 char i vraca int */ int (*p)(char (*a)[8]); /* ptr na funk. koja uzima ptr na polje od 8 char i vraca int */ int *(*p)(char (*a)[8]); /* ptr na funk. koja uzima ptr na polje od 8 char i vraca ptr na int */ int *(*p[10])(char *a); /* polje od 10 ptr na funk. koja uzima ptr na char i vraca ptr na int */ Prog2 2019, 7. predavanje p. 11/75
12 Deklaracije tipova typedef Prog2 2019, 7. predavanje p. 12/75
13 Ključna riječ typedef Korištenjem ključne riječi typedef postojećim ili složenim tipovima podataka dajemo nova imena (ne kreiramo nove objekte ili varijable tog imena). Jednostavni oblik typedef deklaracije je: typedef tip_podatka novo_ime_za_tip_podatka; To znači da: novo_ime_za_tip_podatka postaje sinonim za tip_podatka i smije se tako koristiti u svim kasnijim deklaracijama tamo gdje smijemo napisati jedno, smijemo napisati i drugo, i to s istim značenjem. Prog2 2019, 7. predavanje p. 13/75
14 Jednostavne typedef deklaracije Primjer. Deklaracijom typedef double Masa; identifikator Masa postaje sinonim za double. Nakon toga, varijable tipa double možemo deklarirati i kao: Masa m1, m2, *pm1; Masa elementi[10]; Uočite da je pm1 pokazivač na double, elementi polje od 10 elemenata tipa double. Medutim, nije baš jasno što smo s tim dobili! Prog2 2019, 7. predavanje p. 14/75
15 Svrha deklaracije tipova Zaista, kod ovako jednostavnih deklaracija svrha se ne vidi odmah. Stvarna svrha deklaracije ili imenovanja tipova je: lakše razumijevanje (čitanje) kôda i dokumentiranje programa. To postaje vrlo korisno kod složenijih tipova podataka kad u programo koristimo čitavu hijerarhiju tipova koji se grade jedni iz drugih. Korist će se vidjeti vrlo skoro, kad dodemo na strukture i samoreferencirajuće strukture (vezane liste, binarna stabla i sl.). Prog2 2019, 7. predavanje p. 15/75
16 Primjer jednostavne deklaracije tipova Korist od deklaracije tipova može se vidjeti i na jednostavnim primjerima ako dobro izaberemo ime za tip. Primjer. typedef int Metri, Kilometri; Metri duljina, sirina; Kilometri udaljenost; Ideja (ili svrha): ovdje ime tipa sugerira jedinice u kojima su izražene odredene vrijednosti! No, stvarna korist od typedef je tek kod složenijih tipova. Kako se pišu takve deklaracije? Prog2 2019, 7. predavanje p. 16/75
17 Složenije typedef deklaracije Sasvim općenito, deklaracija imena za složeniji tip: počinje s typedef, a dalje ima isti oblik kao i deklaracija varijable tog imena i tog tipa. Sve je isto, osim što tada ime nije varijabla tog tipa (ne dobiva memorijski prostor i adresu), već ime postaje sinonim za taj tip, kojeg bi imala takva varijabla. typedef deklaracija_za_tip_podatka; Prog2 2019, 7. predavanje p. 17/75
18 Primjer složenije deklaracije tipa za polja Primjer. Uvedimo imena tipova za vektore i matrice odgovarajućih dimenzija (recimo, n = 10). #define n 10 typedef double skalar; typedef skalar vektor[n]; typedef vektor matrica[n]; Zadnje dvije deklaracije daju imena poljima: vektor je ime tipa za polje od n (10) skalara (double), matrica je ime tipa za polje od n (10) vektora, tj. matrica je dvodimenzionalno polje skalara, ili sinonim za tip double[n][n] = double[10][10]. Prog2 2019, 7. predavanje p. 18/75
19 typedef i polja (nastavak) Funkciju za računanje produkta y = Ax, kvadratne matrice A i vektora x, možemo i ovako napisati: void prod_mat_vek(matrica A, vektor x, vektor y) { int i, j; for (i = 0; i < n; ++i) { y[i] = 0.0; for (j = 0; j < n; ++j) y[i] += A[i][j] * x[j]; } } Napomena. Ovdje je n fiksan n = 10. Popravite funkciju tako da stvarni red matrice i vektora bude argument funkcije. Prog2 2019, 7. predavanje p. 19/75
20 Primjer deklaracije tipa stringovi Primjer. Kod obrade stringova možemo uvesti deklaraciju typedef char *string; Ovdje je string sinonim za pokazivač na char (tip char *), s očitom svrhom: taj pokazivač interpretiramo kao pokazivač na prvi element u polju znakova, a to polje znakova obradujemo kao string (do nul-znaka)! Funkcija strcmp za usporedivanje stringova smije se ovako deklarirati: int strcmp(string, string); Prog2 2019, 7. predavanje p. 20/75
21 typedef i pokazivači (nastavak) Primjer. Pokazivač na double nazvat ćemo Pdouble. typedef double *Pdouble; Pdouble postaje pokazivač na double, pa smijemo pisati: Pdouble px; /* = double *px */ void f(pdouble, Pdouble); /* = void f(double *, double *); */ px = (Pdouble) malloc(100 * sizeof(double)); Prog2 2019, 7. predavanje p. 21/75
22 typedef i deklaracije funkcija Općenito, typedef koristimo za kraće zapisivanje složenih deklaracija. Primjer. Pokazivač na funkciju. typedef int (*PF)(char *, char *); PF postaje ime za tip pokazivač na funkciju koja uzima dva pokazivača na char i vraća int. Umjesto deklaracije: void f(double x, int (*g)(char *, char *)) {... } možemo pisati: void f(double x, PF g) {... } Prog2 2019, 7. predavanje p. 22/75
23 Strukture Prog2 2019, 7. predavanje p. 23/75
24 Sadržaj Strukture (prvi dio): Deklaracija strukture. Strukture i typedef. Rad sa strukturama. Operator točka. Strukture i funkcije. Strukture i pokazivači. Operator strelica (->). Unije. Dodatak: Polja bitova. Prog2 2019, 7. predavanje p. 24/75
25 Što je struktura? Struktura je složeni tip podataka, kao i polje. Za razliku od polja, koje služi grupiranju podataka istog tipa, struktura služi grupiranju podataka različitih tipova. Može i ovako malo detaljnije. Svi elementi polja imaju isti tip i zajedničko ime, a razlikuju se po indeksu. To se vidi i u deklaraciji polja. Elementi (ili članovi) strukture mogu, ali ne moraju, biti različitog tipa i svaki element ima svoje posebno ime. Zato u deklaraciji strukture moramo navesti ime i tip svakog člana. Tip strukture možemo deklarirati na dva načina. Prog2 2019, 7. predavanje p. 25/75
26 Deklaracija strukture bez typedef Prvi način bez typedef. Tip strukture deklarira se ovako: struct ime { tip_1 ime_1; tip_2 ime_2;... tip_n ime_n; }; Ovdje je struct rezervirana riječ, a ime je ime strukture. Stvarni tip strukture je struct ime dvije riječi (i to je, ponekad, nezgodno!). Unutar vitičastih zagrada popisani su članovi strukture. Prog2 2019, 7. predavanje p. 26/75
27 Definicija varijabli tipa strukture bez typedef Napomena. Kao i kod polja, članovi strukture smješteni su u memoriji jedan za drugim, onim redom kojim su navedeni. Kod ovakve deklaracije tipa strukture, varijable tog tipa, općenito, definiramo ovako: mem_klasa struct ime var_1, var_2,..., var_n; var_1, var_2,..., var_n su varijable tipa struct ime. Prog2 2019, 7. predavanje p. 27/75
28 Primjer struktura za točke Primjer. Struktura tocka definira točku u ravnini. Uzmimo da točka ima cjelobrojne koordinate, poput pixela na ekranu. struct tocka { int x; int y; }; Varijable tipa strukture tocka možemo definirati na (barem) dva načina. Nakon gornje deklaracije strukture tocka (kao tipa), napišemo običnu definiciju varijabli: struct tocka t1, t2; Prog2 2019, 7. predavanje p. 28/75
29 Primjer struktura za točke (nastavak) Deklaraciju tipa strukture ne moramo napisati posebno. Možemo ju napisati i u sklopu definicije varijabli tog tipa: struct tocka { int x; int y; } t1, t2; Prvi način je pregledniji! Medutim, postoji i bolji način deklaracije tipa strukture, koji olakšava i definiciju varijabli tog tipa preko typedef. Prednost: tako možemo izbjeći stalno navodenje riječi struct u deklaracijama varijabli. Prog2 2019, 7. predavanje p. 29/75
30 Deklaracija strukture preko typedef Drugi način preko typedef. Tip strukture deklarira se ovako: typedef struct ime { tip_1 ime_1; tip_2 ime_2;... tip_n ime_n; } ime_tipa; // <-- ime tipa za strukturu Ovdje smo još, na kraju deklaracije, cijelom tipu strukture dali ime ime_tipa. Stvarni tip strukture je onda i ime_tipa kao sinonim za struct ime. Sve ostalo je isto kao i prije. Prog2 2019, 7. predavanje p. 30/75
31 Definicija varijabli tipa strukture uz typedef Napomena. Prvo ime strukture (odmah iza struct) smijemo i ispustiti, ako ga nigdje nećemo koristiti! (Uvijek bi trebalo pisati struct ispred tog imena.) Ako pišemo to prvo ime, ono mora biti različito od svih ostalih imena (identifikatora), pa i od ime_tipa. Običaj: prvo ime = _ime_tipa (na primjer, _osoba). Kod ovakve deklaracije tipa strukture, varijable tog tipa, općenito, definiramo ovako: mem_klasa ime_tipa var_1, var_2,..., var_n; var_1, var_2,..., var_n su varijable tipa ime_tipa, što je sinonim za struct ime. Prog2 2019, 7. predavanje p. 31/75
32 Primjer struktura za točke Primjer. Umjesto ranije definicije strukture za točku u ravnini, možemo uvesti tip Tocka za cijelu strukturu. typedef struct { int x; int y; } Tocka;... Tocka t1, t2, *pt1; Identifikator Tocka je ime tipa za cijelu strukturu, a t1 i t2 su varijable tipa Tocka. Što je pt1? Uočite da ovdje nismo napisali ime strukture iza struct, jer ga nećemo koristiti. Prog2 2019, 7. predavanje p. 32/75
33 Inicijalizacija strukture Varijablu tipa strukture možemo inicijalizirati pri definiciji (kao i svaku drugu varijablu): mem_klasa struct ime var = {v_1,..., v_n}; mem_klasa ime_tipa var = {v_1,..., v_n}; Konstante v_1, v_2,..., v_n pridružuju se navedenim redom odgovarajućim članovima strukture var član, po član. Prog2 2019, 7. predavanje p. 33/75
34 Inicijalizacija strukture primjer Primjer. Ako je definirana struktura struct racun { int broj_racuna; char ime[80]; float stanje; }; onda varijablu kupac možemo inicijalizirati ovako: struct racun kupac = { 1234, "Pero Bacilova", f }; Prog2 2019, 7. predavanje p. 34/75
35 Inicijalizacija polja struktura Primjer. Slično se može inicijalizirati i čitavo polje struktura: struct racun kupci[] = { 2234, "Goga", f, 1235, "Josip", f, 436, "Martina", 0.00f }; Prog2 2019, 7. predavanje p. 35/75
36 Operator točka pristup članu strukture Članovima strukture može se pojedinačno pristupiti korištenjem primarnog operatora točka (.). Operator točka (.) separira ime varijable i ime člana te strukture. Ako je var varijabla tipa strukture koja sadrži član memb, onda je var.memb član memb u strukturi var (preciznije, vrijednost tog člana). Napomena. Ime člana je lokalno za svaku strukturu. Zato smijemo koristiti isto ime člana u raznim strukturama. Prog2 2019, 7. predavanje p. 36/75
37 Prioritet i asocijativnost operatora točka Operator točka (.) spada u najvišu prioritetnu grupu (primarni operatori) i ima asocijativnost L D. Zbog najvišeg prioriteta vrijedi: ++varijabla.clan ++(varijabla.clan) &varijabla.clan &(varijabla.clan) Član strukture (kao i element polja), naravno, smije pisati na lijevoj strani naredbe pridruživanja. Prog2 2019, 7. predavanje p. 37/75
38 Rad sa strukturama pristup članovima Primjer. Pristup članovima strukture. struct tocka { int x; /* prvi clan strukture */ int y; /* drugi clan strukture */ }; struct tocka ishodiste; Imena objekata i značenje: ishodiste je varijabla tipa struct tocka, ishodiste.x je prvi član (ili prva komponenta) varijable ishodiste, ishodiste.y je drugi član (ili druga komponenta) varijable ishodiste. Prog2 2019, 7. predavanje p. 38/75
39 Pristup članovima strukture (nastavak) Primjer. Ako je struct racun { int broj_racuna; char ime[80]; float stanje; } kupac = { 1234, "Pero Bacilova", f }; tada je, redom: kupac.broj_racuna = 1234, kupac.ime = "Pero Bacilova", kupac.stanje = f. Prog2 2019, 7. predavanje p. 39/75
40 Struktura kao član druge strukture Strukture mogu sadržavati druge strukture kao članove. Primjer. Pravokutnik paralelan koordinatnim osima možemo zadati parom dijagonalno suprotnih vrhova na pr. donjim lijevim (pt1) i gornjim desnim (pt2). Vrhovi su točke. struct pravokutnik { struct tocka pt1; /* ili Tocka pt1; */ struct tocka pt2; /* ili Tocka pt2; */ }; Struktura struct tocka (ili Tocka) mora biti deklarirana prije deklaracije strukture pravokutnik. U različitim strukturama mogu se koristiti ista imena članova. Prog2 2019, 7. predavanje p. 40/75
41 Polje kao član strukture Kad struktura sadrži polje kao član strukture, onda se pojedinim elementima tog polja (zovimo ga clan) pristupa izrazom: varijabla.clan[izraz] Koristi se asocijativnost L D za primarne operatore točka (.) i indeksiranje polja ([ ]). Prog2 2019, 7. predavanje p. 41/75
42 Polje kao član strukture primjer Primjer. typedef struct { int broj_racuna; char ime[80]; float stanje; } Racun; Racun kupac = { 1234, "Pero Bacilova", f };... if (kupac.ime[0] == P ) puts(kupac.ime); Prog2 2019, 7. predavanje p. 42/75
43 Polje struktura Ako imamo polje struktura, svaki element polja je struktura. Nekom članu pripadne strukture pristupamo izrazom polje[izraz].clan Asocijativnost je bitna, jer su svi operatori istog prioriteta. Primjer. struct tocka { int x; int y; } vrhovi[1024]; /* Polje tocaka. */... if (vrhovi[17].x == vrhovi[17].y)... Prog2 2019, 7. predavanje p. 43/75
44 Strukture operacije i funkcije Dozvoljene operacije nad strukturom, kao cjelinom, su: pridruživanje, uzimanje adrese, primjena sizeof operatora. Napomena. Nije dozvoljeno usporedivanje struktura. Strukture i funkcije: Struktura može biti argument funkcije. Funkcija tada dobiva kopiju cijele strukture kao argument. Funkcija može vratiti strukturu. Ovo je isto kao za obične varijable, a ne kao kod polja. Prog2 2019, 7. predavanje p. 44/75
45 Strukture i funkcije primjer Primjer. Argumenti funkcije suma su dvije strukture tipa Tocka, a funkcija vraća sumu argumenata (tipa Tocka). Suma točaka = zbroj odgovarajućih koordinata (kao vektori). typedef struct { int x; int y; } Tocka; Tocka t, ishodiste = {0, 0}, t1 = {1, 7}; Tocka suma(tocka p1, Tocka p2) { p1.x += p2.x; p1.y += p2.y; return p1; } Prog2 2019, 7. predavanje p. 45/75
46 Strukture i funkcije primjer (nastavak) int main(void) { /* Dodjeljivanje struktura: t i ishodiste moraju biti istog tipa */ t = ishodiste; printf("velicina = %u byteova\n", sizeof(t)); /* Zbroj tocaka, rezultat je tocka. */ t1 = suma(t1, t1); printf("t1 = (%d, %d)\n", t1.x, t1.y); } return 0; Prog2 2019, 7. predavanje p. 46/75
47 Strukture i funkcije kompleksni brojevi Primjer. Biblioteka funkcija za osnovne operacije s kompleksnim brojevima (v. complex.c). typedef struct { double re; /* ili x */ double im; /* ili y */ } complex; /* Napomena: cabs vec postoji u <math.h>! */ double zabs(complex a) { return sqrt( a.re * a.re + a.im * a.im ); } U C99 standardu postoje tipovi i odgovarajuće funkcije za kompleksne brojeve (zaglavlje <complex.h>). Prog2 2019, 7. predavanje p. 47/75
48 Strukture i pokazivači Pokazivač na strukturu definira se isto kao i pokazivač na druge tipove objekata. struct tocka { int x; int y; } p1, *pp1;... pp1 = &p1; (*pp1).x = 13; /* Zagrade su NUZNE! */ (*pp1).y = 27; *pp1.x = 13; /* GRESKA! *pp1.x je isto sto i *(pp1.x) */ Prog2 2019, 7. predavanje p. 48/75
49 Operator strelica (->) Primarni operator strelica (->) omogućava jednostavano dohvaćanje člana strukture, preko pokazivača na tu strukturu. Asocijativnost operatora -> je L D. Ako je ptvar pokazivač na strukturu, a clan je neki član te strukture, onda je: Primjer. ptvar->clan (*ptvar).clan struct tocka p1, *pp1 = &p1; pp1->x = 13; pp1->y = 27; Prog2 2019, 7. predavanje p. 49/75
50 Složeni izrazi Pristup koordinatama vrhova pravokutnika r izravno i preko pokazivača pr. struct pravokutnik { struct tocka pt1; struct tocka pt2; } r, *pr = &r; Sljedeći su izrazi ekvivalentni (x-koordinata prvog vrha pt1): r.pt1.x // Operatori. i -> pr->pt1.x // imaju isti prioritet. (r.pt1).x // Asocijativnost im je (pr->pt1).x // L -> D. Prog2 2019, 7. predavanje p. 50/75
51 Unije Prog2 2019, 7. predavanje p. 51/75
52 Unija Unija je složeni tip podataka sličan strukturi, jer sadrži članove različitog tipa. Gdje je razlika? Članovi strukture su smješteni u memoriji jedan za drugim. Za razliku od toga, svi članovi unije počinju na istom mjestu u memoriji na istoj lokaciji, tj. dijele jedan zajednički dio memorije (na početku), ovisno o veličini članova unije. Ukupna rezervirana memorija za varijablu tipa unije dovoljno je velika da u nju stane najveći član unije. Prog2 2019, 7. predavanje p. 52/75
53 Svrha unije i rad s unijama Ideja: taj zajednički dio memorije možemo interpretirati na razne načine kao vrijednost(i) različitih tipova. Zato i ime unija tipova! Napomena. Osnovna svrha unije nije ušteda memorijskog prostora, iako se može koristiti i za to. Osim navedene razlike izmedu unija i struktura u rezervaciji memorije, sve ostalo u C-u je potpuno isto, samo umjesto ključne riječi struct za strukture, pišemo ključnu riječ union za unije. Prog2 2019, 7. predavanje p. 53/75
54 Deklaracija unije Deklaracija tipa unije ima isti oblik kao i za tip strukture umjesto struct, pišemo union. union ime { tip_1 ime_1; tip_n ime_n; }; Kao i kod struktura, bolje je koristiti typedef za deklaraciju tipa unije. Varijable x i y tipa ove unije mogu se deklarirati ovako: union ime x, y; Prog2 2019, 7. predavanje p. 54/75
55 Unija primjer Primjer. union podatak { int i; float x; } u, *pu; Ovdje su: u.i i pu->i varijable tipa int. u.x i pu->x varijable tipa float. Član i (tipa int) i član x (tipa float) počinju na istoj lokaciji u memoriji. Standardno zauzimaju po 4 bytea, tj. dijele isti prostor! Prog2 2019, 7. predavanje p. 55/75
56 Unija primjer (nastavak) Primjer. Uniju možemo iskoristiti za ispis binarnog (preciznije, heksadecimalnog) oblika prikaza realnog broja tipa float u računalu. u.x = f; printf(" binarno = %x\n", u.i); Za pravi binarni prikaz možemo iskoristiti algoritam s Prog1 koji ispisuje binarni prikaz cijelog broja. Prog2 2019, 7. predavanje p. 56/75
57 Primjer binarni prikaz realnog broja Primjer. Napisati program koji učitava realni broj tipa double i piše binarni prikaz tog broja u računalu (v. p_double.c). Broj tipa double standardno zauzima 8 byteova = 64 bita. Taj prostor gledamo kao polje od 2 cijela broja tipa int (= 2 riječi ). Još jedna sitnica bitovi u IEEE prikazu za double imaju sljedeći raspored po byteovima (na IA 32): 1. byte = bitovi 7 0 (donji bitovi), 2. byte = bitovi 15 8, byte = bitovi (gornji bitovi). Prog2 2019, 7. predavanje p. 57/75
58 Binarni prikaz realnog broja program Početak programa s globalnom deklaracijom tipa unije za jedan double i polje od 2 int-a. #include <stdio.h> /* Binarni prikaz realnog broja tipa double. */ typedef union { double d; /* 8 byteova = 64 bita. */ int i[2]; /* 2 rijeci od po 4 bytea. */ } Double_bits; Prog2 2019, 7. predavanje p. 58/75
59 Binarni prikaz realnog broja program (nast.) void prikaz_int(int broj) { int nbits, bit, i; unsigned mask; /* Broj bitova u tipu int. */ nbits = 8 * sizeof(int); /* Pocetna maska ima bit 1 na najznacajnijem mjestu. */ mask = 0x1 << nbits - 1; Prog2 2019, 7. predavanje p. 59/75
60 Binarni prikaz realnog broja program (nast.) for (i = 1; i <= nbits; ++i) { /* Maskiranje odgovarajuceg bita. */ bit = broj & mask? 1 : 0; /* Ispis i blank nakon svaka 4 bita, osim zadnjeg. */ printf("%d", bit); if (i % 4 == 0 && i < nbits) printf(" "); /* Pomak maske za 1 bit udesno. */ mask >>= 1; } printf("\n"); } return; Prog2 2019, 7. predavanje p. 60/75
61 Binarni prikaz realnog broja program (nast.) void prikaz_double(double d) { Double_bits u; u.d = d; printf(" 1. rijec: "); prikaz_int( u.i[0] ); printf(" 2. rijec: "); prikaz_int( u.i[1] ); } return; Prog2 2019, 7. predavanje p. 61/75
62 Binarni prikaz realnog broja program (kraj) int main(void) { double d; printf(" Upisi realni broj: "); scanf("%lf", &d); printf(" Prikaz broja %10.3f u racunalu:\n", d); prikaz_double(d); } return 0; Prog2 2019, 7. predavanje p. 62/75
63 Binarni prikaz realnog broja rezultati Za ulaz 1.0, dobivamo (v. p_d_3.out): Prikaz broja u racunalu: 1. rijec: rijec: Za ulaz 0.1, dobivamo (v. p_d_6.out): Prikaz broja u racunalu: 1. rijec: rijec: Obratite pažnju na zadnja 2 bita u prvoj riječi to je rezultat zaokruživanja mantise (signifikanda)! Prog2 2019, 7. predavanje p. 63/75
64 Binarni prikaz realnog broja zadaci Zadatak. Napišite varijantu ovog programa za realni broj tipa float (v. p_float.c). Zadatak. Preuredite oba programa tako da pregledno ispisuju sve bitne dijelove u prikazu realnog broja: bit predznaka, bitove karakteristike (eksponenta), bitove značajnog dijela (mantise). Dodajte ovom programu i ispis vodećeg (skrivenog) bita mantise, ovisno o eksponentu, tzv. posebnih vrijednosti Inf i NaN. Prog2 2019, 7. predavanje p. 64/75
65 Dodatak: Polja bitova Prog2 2019, 7. predavanje p. 65/75
66 Polja bitova Polja bitova (engl. bit fields ) omogućuju rad s pojedinim bitovima unutar jedne riječi u računalu. Svrha: Jedno polja bitova je član (ili element) strukture ili unije. Sprema se u bloku susjednih bitova u memoriji računala, a zadaje se brojem bitova koje zauzima. Susjedna polja spremaju se u bloku susjednih bitova! Spremanje 1-bitnih zastavica (engl. flag) u jednu riječ. Na primjer, koriste se u aplikacijama kao što je tablica simbola za kompajler. Komunikacija s vanjskim uredajima treba postaviti ili očitati samo dijelove riječi. Prog2 2019, 7. predavanje p. 66/75
67 Deklaracija polja bitova Deklaracija jednog polja bitova, kao člana strukture ili unije, ima sljedeći oblik iza člana dolazi još znak : i broj bitova: struct ime { /* ili: union ime */... tip_polja ime_polja : broj_bitova;... }; Ograničenja (svi detalji ovise o implementaciji): tip_polja mora biti: int, unsigned int ili signed int. ime_polja je identifikator (kao i za ostale članove), a broj_bitova mora biti nenegativan cijeli broj (nula ima posebno značenje i onda se ime_polja smije ispustiti). Prog2 2019, 7. predavanje p. 67/75
68 Svrha = uzastopna polja bitova Ovako deklarirani član ime_polja predstavlja jedno polje uzastopnih bitova u računalu, duljine broj_bitova. Stvarna svrha je u deklaraciji uzastopnih članova tog oblika! Razlika izmedu običnih članova i polja bitova: Obični član započinje u novoj riječi i zauzima cijeli broj riječi, ovisno o tzv. poravnanju riječi (engl. byte/word/memory alignment ). Susjedno deklarirana polja bitova spremaju se u bloku uzastopnih bitova, bez rupa, tj. nastavljaju se jedan do drugog može i unutar iste riječi, i baš to je svrha! Poredak spremanja ( ili u riječi) i eventualni prijelom sljedećih članova izmedu riječi ovisi o implementaciji! Prog2 2019, 7. predavanje p. 68/75
69 Deklaracija polja bitova primjer Primjer. struct primjer { unsigned int a : 1; unsigned int b : 3; unsigned int c : 2; unsigned int d : 1; }; struct primjer v;... if (v.a == 1)... v.c = STATIC; Prog2 2019, 7. predavanje p. 69/75
70 Deklaracija polja bitova primjer (nastavak) Prva deklaracija definira strukturu sastavljenu iz četiri uzastopna polja bitova: a, b, c i d. Ta polja, redom, imaju duljinu 1, 3, 2 i 1 bit. Prema tome, ukupno zauzimaju 7 bitova i spremaju se u bloku. Poredak tih bitova unutar jedne riječi u računalu ovisi o implementaciji. Pojedine članove, koji su polje bitova, dohvaćamo na isti način kao i obične članove strukture v.a, v.b, itd. Ako broj bitova, deklariran u polju bitova, nadmašuje duljinu jedne riječi u računalu, za pamćenje tog polja bit će upotrebljeno više riječi. Isto vrijedi i za blok uzastopnih polja bitova. Prog2 2019, 7. predavanje p. 70/75
71 Polja bitova primjer Primjer. Program koji upotrebljava uzastopna polja bitova: #include <stdio.h> int main(void) { struct primjer { unsigned int a : 5; unsigned int b : 5; unsigned int c : 5; unsigned int d : 5; }; struct primjer v = {1, 2, 3, 4}; Prog2 2019, 7. predavanje p. 71/75
72 Polja bitova primjer (nastavak) } printf(" v.a = %d, v.b = %d, v.c = %d," " v.d = %d\n", v.a, v.b, v.c, v.d); printf(" sizeof(v) = %u\n", sizeof(v)); return 0; Izlaz: v.a = 1, v.b = 2, v.c = 3, v.d = 4 sizeof(v) = 4 Na IA 32, cijela struktura v zauzima jednu riječ = 4 bytea. Prog2 2019, 7. predavanje p. 72/75
73 Neimenovano polje bitova u bloku Raspored bitova unutar riječi može se kontrolirati korištenjem Primjer. neimenovanih članova pozitivne duljine, unutar bloka uzastopnih polja bitova. struct primjer { unsigned int a : 5; unsigned int b : 5; unsigned int : 5; // Razmak od 5 bitova. unsigned int c : 5; }; struct primjer v; Prog2 2019, 7. predavanje p. 73/75
74 Neimenovano polje bitova u bloku (nastavak) Neimenovani član duljine 0 bitova označava da Primjer. sljedeće polje iz bloka treba smjestiti u sljedeću riječ. #include <stdio.h> int main(void) { struct primjer { unsigned int a : 5; unsigned int b : 5; unsigned int : 0; // Idi u novu rijec. unsigned int c : 5; }; struct primjer v = {1, 2, 3}; Prog2 2019, 7. predavanje p. 74/75
75 Neimenovano polje bitova u bloku (nastavak) } printf(" v.a = %d, v.b = %d, v.c = %d\n", v.a, v.b, v.c); printf(" sizeof(v) = %u\n", sizeof(v)); return 0; Izlaz: v.a = 1, v.b = 2, v.c = 3 sizeof(v) = 8 Na IA 32, struktura v sad zauzima dvije riječi = 8 byteova. Prog2 2019, 7. predavanje p. 75/75
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
Више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
Више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*
Више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
Више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 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:
Више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
Више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.
Више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
ВишеMicrosoft PowerPoint - Bitovi [Compatibility Mode]
Оператори над битовима (Јаничић, Марић: Програмирање 2, тачка 5.6) Оператори за рад са појединачним битовима Само на целобројне аргументе: ~ битовска негација & битовска конјункција (и) битовска (инклузивна)
Више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
Више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 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
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
Више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
Више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
Више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
Више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
Више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
Више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
Више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.
Више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
Више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.
Више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 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
Више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 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
Више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;
Више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
ВишеMatrice. Algebarske operacije s matricama. - Predavanje I
Matrice.. Predavanje I Ines Radošević inesr@math.uniri.hr Odjel za matematiku Sveučilišta u Rijeci Matrice... Matrice... Podsjeti se... skup, element skupa,..., matematička logika skupovi brojeva N,...,
Више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 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
Више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
Више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
Више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
Више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
Више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
Више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 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
Више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
Више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
Више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).
Више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 Word - MATB - kolovoz osnovna razina - rje\232enja zadataka)
. B. Zapišimo zadane brojeve u obliku beskonačno periodičnih decimalnih brojeva: 3 4 = 0.7, = 0.36. Prvi od navedenih četiriju brojeva je manji od 3 4, dok su treći i četvrti veći od. Jedini broj koji
Више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
Више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
ВишеSadržaj 1 Diskretan slučajan vektor Definicija slučajnog vektora Diskretan slučajan vektor
Sadržaj Diskretan slučajan vektor Definicija slučajnog vektora 2 Diskretan slučajan vektor Funkcija distribucije slučajnog vektora 2 4 Nezavisnost slučajnih vektora 2 5 Očekivanje slučajnog vektora 6 Kovarijanca
Више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
Више3.Kontrlne (upravlja~ke) strukture u Javi
Објектно орјентисано програмирање Владимир Филиповић vladaf@matf.bg.ac.rs Александар Картељ kartelj@matf.bg.ac.rs Низови у програмском језику Јава Владимир Филиповић vladaf@matf.bg.ac.rs Александар Картељ
ВишеCIJELI BROJEVI 1.) Kako još nazivamo pozitivne cijele brojeve? 1.) Za što je oznaka? 2.) Ispiši skup prirodnih brojeva! 3.) Kako označavamo skup priro
CIJELI BROJEVI 1.) Kako još nazivamo pozitivne cijele brojeve? 1.) Za što je oznaka? 2.) Ispiši skup prirodnih brojeva! 3.) Kako označavamo skup prirodnih brojeva? 4.) Pripada li 0 skupu prirodnih brojeva?
ВишеMicrosoft Word - 15ms261
Zadatak 6 (Mirko, elektrotehnička škola) Rješenje 6 Odredite sup S, inf S, ma S i min S u skupu R ako je S = { R } a b = a a b + b a b, c < 0 a c b c. ( ), : 5. Skratiti razlomak znači brojnik i nazivnik
Више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
Више(Microsoft Word - Dr\236avna matura - studeni osnovna razina - rje\232enja)
1. C. Imamo redom: I. ZADATCI VIŠESTRUKOGA IZBORA 9 + 7 6 9 + 4 51 = = = 5.1 18 4 18 8 10. B. Pomoću kalkulatora nalazimo 10 1.5 = 63.45553. Četvrta decimala je očito jednaka 5, pa se zaokruživanje vrši
Вишеsve.dvi
1. Uvod Ovo uvodno poglavlje neophodno je za razumijevanje terminologije i notacije koja se koristi u ostatku teksta. Takoder, ono nam bolje objašnjava ciljeve i svrhu cijelog udžbenika. Sastoji se od
Више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
ВишеP11.3 Analiza zivotnog veka, Graf smetnji
Поједностављени поглед на задњи део компајлера Међурепрезентација (Међујезик IR) Избор инструкција Додела ресурса Распоређивање инструкција Инструкције циљне архитектуре 1 Поједностављени поглед на задњи
Више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.
ВишеTeorija skupova - blog.sake.ba
Uvod Matematika je jedan od najomraženijih predmeta kod većine učenika S pravom, dakako! Zapitajmo se šta je uzrok tome? Da li je matematika zaista toliko teška, komplikovana? Odgovor je jednostavan, naravno
Више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..........................
ВишеSlide 1
0(a) 0(b) 0(c) 0(d) 0(e) :: :: Neke fizikalne veličine poput indeksa loma u anizotropnim sredstvima ovise o iznosu i smjeru, a nisu vektori. Stoga se namede potreba poopdavanja. Međutim, fizikalne veličine,
Више(Microsoft Word - Dr\236avna matura - svibanj osnovna razina - rje\232enja)
I. ZADATCI VIŠESTRUKOGA IZBORA 1. A. Svih pet zadanih razlomaka svedemo na najmanji zajednički nazivnik. Taj nazivnik je najmanji zajednički višekratnik brojeva i 3, tj. NZV(, 3) = 6. Dobijemo: 15 1, 6
ВишеMicrosoft PowerPoint - 07-DinamickeStrukturePodataka
Динамичке структуре података листа, стек, ред Програмирање 2: глава 6 Динамичке структуре података Динамичка алокација и динамичке структуре података Најзначајније динамичке структуре података листе и
Више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
Више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
ВишеAlgoritmi SŠ P1
Državno natjecanje iz informatike Srednja škola Prvi dan natjecanja 2. ožujka 219. ime zadatka BADMINTON SJEME MANIPULATOR vremensko ograničenje 1 sekunda 1 sekunda 3 sekunde memorijsko ograničenje 512
Више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
Више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
ВишеMicrosoft PowerPoint - Datoteke [Compatibility Mode]
Датотеке стандардни улаз / излаз Датотека је именовани низ знакова (бајтова) У програмском језику C датотека је везана за улаз и излаз података функције стандардне библиотеке Најједностaвније
Више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
ВишеElementarna matematika 1 - Oblici matematickog mišljenja
Oblici matematičkog mišljenja 2007/2008 Mišljenje (psihološka definicija) = izdvajanje u čovjekovoj spoznaji odre denih strana i svojstava promatranog objekta i njihovo dovo denje u odgovarajuće veze s
Више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
Више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
Више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.
Више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
ВишеElementi praćenja i ocjenjivanja za nastavni predmet Matematika u 4. razredu Elementi praćenja i ocjenjivanja za nastavni predmet Matematika u 4. razr
Elementi praćenja i ocjenjivanja za nastavni predmet Matematika u 4. razredu ODLIČAN (5) navodi primjer kuta kao dijela ravnine omeđenog polupravcima analizira i uspoređuje vrh i krakove kuta analizira
Вишеs2.dvi
1. Skup kompleksnih brojeva 1. Skupovibrojeva.... Skup kompleksnih brojeva................................. 6. Zbrajanje i množenje kompleksnih brojeva..................... 9 4. Kompleksno konjugirani
Више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
ВишеUDŽBENIK 2. dio
UDŽBENIK 2. dio Pročitaj pažljivo Primjer 1. i Primjer 2. Ova dva primjera bi te trebala uvjeriti u potrebu za uvo - denjem još jedne vrste brojeva. Primjer 1. Živa u termometru pokazivala je temperaturu
ВишеPLAN I PROGRAM ZA DOPUNSKU (PRODUŽNU) NASTAVU IZ MATEMATIKE (za 1. razred)
PLAN I PROGRAM ZA DOPUNSKU (PRODUŽNU) NASTAVU IZ MATEMATIKE (za 1. razred) Učenik prvog razreda treba ostvarit sljedeće minimalne standarde 1. SKUP REALNIH BROJEVA -razlikovati brojevne skupove i njihove
Вишеknjiga.dvi
1. Vjerojatnost 1. lgebra dogadaja......................... 1 2. Vjerojatnost............................. 9 3. Klasični vjerojatnosni prostor................. 14 4. eskonačni vjerojatnosni prostor...............
ВишеMicrosoft PowerPoint - Programski_Jezik_C_Organizacija_Izvrsnog_Programa [Compatibility Mode]
Организација извршног програма (Марић, Јаничић: Програмирање 1, 9.3.3) Извршавање програма После успешног превођења (претпроцесирања, компилације, повезивања) програм може да се изврши Извршавање се захтева
Више(Microsoft Word - Dr\236avna matura - kolovoz ni\236a razina - rje\232enja)
1. C. Imamo redom: I. ZADATCI VIŠESTRUKOGA IZBORA. B. Imamo redom: 0.3 0. 8 7 8 19 ( 3) 4 : = 9 4 = 9 4 = 9 = =. 0. 0.3 3 3 3 3 0 1 3 + 1 + 4 8 5 5 = = = = = = 0 1 3 0 1 3 0 1+ 3 ( : ) ( : ) 5 5 4 0 3.
ВишеJMBAG IME I PREZIME BROJ BODOVA 1. (ukupno 6 bodova) MJERA I INTEGRAL 1. kolokvij 4. svibnja (Knjige, bilježnice, dodatni papiri i kalkulatori n
1. (ukupno 6 bodova) MJERA I INTEGRAL 1. kolokvij 4. svibnja 2018. (Knjige, bilježnice, dodatni papiri i kalkulatori nisu dozvoljeni!) (a) (2 boda) Definirajte (općenitu) vanjsku mjeru. (b) (2 boda) Definirajte
Више0255_Uvod.p65
1Skupovi brojeva Skup prirodnih brojeva Zbrajanje prirodnih brojeva Množenje prirodnih brojeva U košari ima 12 jaja. U drugoj košari nedostaju tri jabuke da bi bila puna, a treća je prazna. Pozitivni,
Више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
Више(Microsoft Word - Rje\232enja zadataka)
1. D. Svedimo sve razlomke na jedinstveni zajednički nazivnik. Lako provjeravamo da vrijede rastavi: 85 = 17 5, 187 = 17 11, 170 = 17 10, pa je zajednički nazivnik svih razlomaka jednak Tako sada imamo:
Више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
ВишеMicrosoft PowerPoint - 03-Slozenost [Compatibility Mode]
Сложеност алгоритама (Програмирање 2, глава 3, глава 4-4.3) Проблем: класа задатака истог типа Велики број различитих (коректних) алгоритама Величина (димензија) проблема нпр. количина података које треба
ВишеMicrosoft Word - 09_Frenetove formule
6 Frenet- Serret-ove formule x : 0,L Neka je regularna parametrizaija krivulje C u prostoru parametru s ) zadana vektorskom jednadžbom: x s x s i y s j z s k x s, y s, z s C za svaki 0, L Pritom je zbog
ВишеVEŽBA 5: KLASE I OBJEKTI U C# Cilj ove vežbe je upoznavanje sa osnovama rada sa klasama i objektima u programskom jeziku C#. Pored toga, bide demonstr
VEŽBA 5: KLASE I OBJEKTI U C# Cilj ove vežbe je upoznavanje sa osnovama rada sa klasama i objektima u programskom jeziku C#. Pored toga, bide demonstrirana upotreba konstruktora, svojstava, metoda klase,
Више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
Више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
Више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
Више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 - 1. doma\346a zada\346a)
z1 1 Izračunajte z 1 + z, z 1 z, z z 1, z 1 z, z, z z, z z1 1, z, z 1 + z, z 1 z, z 1 z, z z z 1 ako je zadano: 1 i a) z 1 = 1 + i, z = i b) z 1 = 1 i, z = i c) z 1 = i, z = 1 + i d) z 1 = i, z = 1 i e)
ВишеUAAG Osnovne algebarske strukture 5. Vektorski prostori Borka Jadrijević
Osnovne algebarske strukture 5. Vektorski prostori Borka Jadrijević Osnovne algebarske strukture5. Vektorski prostori 2 5.1 Unutarnja i vanjska množenja Imamo dvije vrste algebarskih operacija, tzv. unutarnja
Више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
Више7. predavanje Vladimir Dananić 14. studenoga Vladimir Dananić () 7. predavanje 14. studenoga / 16
7. predavanje Vladimir Dananić 14. studenoga 2011. Vladimir Dananić () 7. predavanje 14. studenoga 2011. 1 / 16 Sadržaj 1 Operator kutne količine gibanja 2 3 Zadatci Vladimir Dananić () 7. predavanje 14.
Више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
Више