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

Similar documents
Naredbe za kontrolu toka

Programiranje III razred

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

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

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

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

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

VRIJEDNOSTI ATRIBUTA

dr. sc.. Josip Musić Originalne slideove izradio:

Uvod, varijable, naredbe, petlje

Prva recenica. Druga recenica.

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

VB komande. Programiranje 1

Primjer ispisuje rečenicu "Dobro dosli na brzi tecaj C-a" na ekranu

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

PREDMET. Osnove Java Programiranja. Čas JAVADOC

Numeričke metode i praktikum

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

SELECT CASE i FOR NEXT. Programiranje 1

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

Uvod u relacione baze podataka

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

Uputstvo za korišćenje logrotate funkcije

VHDLPrimeri Poglavlje5.doc

SVEUČILIŠTE U MOSTARU FAKULTET PRIRODOSLOVNO-MATEMATIČKIH I ODGOJNIH ZNANOSTI BAZE PODATAKA 2. Doc.dr.sc. GORAN KRALJEVIĆ BAZE PODATAKA 2 1

9. RAD S DATOTEKAMA PODATAKA

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

Sberbank Business Online na Mozilla FireFox

2. Linijska algoritamska struktura

Računarske osnove Interneta (SI3ROI, IR4ROI)

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

16. Sigurnije programiranje

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

Uvod u programski jezik

Uvod u Javu. Programski jezik Java Izvršavanje Java programa BlueJ razvojno okruženje Elementi Jave Tipovi podataka Prvi programi

PROGRAMIRANJE. Amir Hajdar

INSTALACIJA RAZVOJNOG OKRUŽENJA DEV-C++

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

VEŽBA 5 do while petlja, switch case

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

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

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET

Vežbe - XII nedelja PHP Doc

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

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

Numerical Computation

Sintaksa VHDL jezika - podsjetnik -

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

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

Izrada VI laboratorijske vježbe

Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb,

Binarne hrpe. Strukture podataka i algoritmi VJEŽBE 26. siječnja / 133

UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a

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

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

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

Upute za postavljanje Outlook Expressa

Programske paradigme Funkcionalna paradigma

Objektno orijentirano programiranje. Auditorne vježbe

Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi.

Programiranje III razred

JAVA PROGRAMIRANJE 1

Sveučilište u Zagrebu PMF Matematički odsjek. Mreže računala. Vježbe 08. Zvonimir Bujanović Slaven Kožić Vinko Petričević

Aktuelna verzija Matlaba je 7, koja ima dosta poboljšanja u odnosu na prethodne.

Extensible Stylesheet Language jezik za definiranje stila XML dokumenta

Shell programiranje. Damir Kirasić Škola otvorenog računarstva FER Zagreb

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

RAČUNARSKI PRAKTIKUM II

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

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

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

String. String. Kreiranje string objekta pomoću string literala (konstanti) Kreiranje string objekta

GUI - događaji (Events) i izuzeci. Bojan Tomić

Algoritmi i programiranje

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

KLASIFIKACIJA JELENA JOVANOVIĆ. Web:

KURSORI BAZE PODATAKA U ORACLE 11g

OSNOVE PROGRAMIRANJA

Zadatci Small Basic za 7. Razred ( programa)

Push(3,&S) 3 1 S Uvijek trebamo paziti da ne zovemo Pop nad praznim stogom.

Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak...

x y = z Zadaci - procedure

Kratke upute za korištenje MATLAB-a

Vidljivost TipPovratneVrednosti ImeFunkcije (NizParametara) { TeloFunkcije }

JavaScript JS Cookies

6. SWITCH IZRAZ I PETLJE

Osnovne strukture podataka

Programiranje kroz aplikacije. Kontrola toka programa Nizovi

PARALELNO PROGRAMIRANJE

This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.

PKI Applet Desktop Application Uputa za instalaciju programske potpore

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

Uvod u programiranje I (za gimnazijalce)

tada su sasvim ispravne sljedeće dodjele (uz pretpostavku da također imamo deklarirane brojčane promjenljive stanje_kase i starost ):

Iskočni okviri (eng. popup boxes)

Sveučilište Jurja Dobrile u Puli Fakultet za ekonomiju i turizam "Dr. Mijo Mirković" Marino Pereša. JavaScript. Završni rad. Pula, 2015.

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

ARDUINO KROZ JEDNOSTAVNE PRIMJERE - pripreme za natjecanja -

VDSL modem Zyxel VMG1312-B10A/B30A

PRIJEMNI ISPIT IZ INFORMATIKE

Transcription:

Sadržaj predavanja 02 Cjelobrojni tip podataka(1/3) Cjelobrojni tip podataka Realni tip podataka Aritmetički operatori Izrazi Operatori inkrement i dekrement Kontrola toka programa Naredba za jednostruki izbor Naredba za dvostruki izbor Naredba za višestruki izbor Ponavljanje naredbi/petlja for + Obavezno čitanje literature: Skripta : strane: 16-26 + 96-106 Napomena: dio gore navedenih stranica iz skripte sadrži i koncepte koji neće biti obrađeni na ovom predavanju. Studentima se savjetuje da ipak pročitaju i taj dio. Cjelobrojni tip podataka može imati slijedeće prefikse: - signed omogućuje pridruživanje i pozitivnih i negativnih vrijednosti; - unsigned omogućuje pridruživanje samo pozitivnih vrijednosti; - long omogućuje da se proširi raspon cjelobrojnih vrijednosti koje varijabla može poprimiti; - short sužava raspon cjelobrojnih vrijednosti koje varijabla može poprimiti. Cjelobrojni tip deklariran sa prefiksom long omogućuje veću preciznost u odnosu na deklaraciju ka je korišten prefiks short. Pretpostavljeni prefiks cjelobrojnog tipa je signed. Primjeri koji ilustriraju sve uvedene koncepte Cjelobrojni tip podataka(2/3) Pretpostavim da int zauzima dva bajta. To znači da ta varijabla može poprimiti vrijednosti između: -32768 i 32767 Na primjer, neka je stanje u 16-bitnom registru: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Uz pretpostavku da je korišten zapis dvojnog komplementa vrijedi: - ako je varijabla deklarirana kao signed int vrijednost varijable je -1. - ako je varijabla deklarirana kao unsigned int vrijednost varijable je 65535=2 16-1. Cjelobrojni tip podataka(3/3) ANSI C ne postavlja ograničenja na preciznost prikaza varijabli koristeći prefikse short i long, pri čemu ipak vrijedi: prec(short) prec(int) prec(long) gdje prec označava preciznost, odnosno broj cifri. signed unsigned short long short long Primjeri nekih ekvivalentnih deklaracija su grupirani zajedno: signed long int a; unsigned short int a; signed int a; long int a; unsigned short a; int a; signed long a; long a; int precizan prikaz deklaracije cjelobrojnih varijabli

Primjer uticaja prefiksa na cjelobrojnu varijablu int a; unsigned int b; a=-1; b=a; printf( \n a=%d b=%u,a,b); Izvođenje ovog programa daje rezultat: a = -1 b = 65535 (uz pretpostavku da tip int u konkretnoj implementaciji C-a zauzima 16 bitova) a = -1 b = 4294967295 (uz pretpostavku da tip int u konkretnoj implementaciji C- a zauzima 32 bita) Realni tip podataka(1/3) U programiranju često imamo potrebu deklarirati varijablu koja modelira neku fizikalnu veličinu ili neku drugu vrstu podatka realnim brojem. Ti brojevi su često vrlo mali i vrlo veliki. Obično za prikaz velikih i malih brojeva koristimo slijedeću notaciju: jedno decimalno mjesto isperd tačke 34542000=3.4542 10 7 Slično se mogu prikazati i binarni brojevi. Na primjer: 0.000000101=1.01 2-7 1010.11=1.0101111 1 01011 2 3 Ovakav zapis brojeva nazivamo normalizirani zapis. eksponent Realni tip podataka(2/3) Realni tip podataka(3/3) 0. 0 0 0 0 0 0 1 0 1 = 1. 0 1 2-7 Na prvom mjestu je uvijek jedinica. 1 0 1 0. 1 1 = 1. 0 1 0 1 1 2 3 Kod gore prikazanog načina zapisa binarnih brojeva, na prvom mjestu je uvijek jedinica. float long double precizan prikaz deklaracije varijabli realnog tipa To znači, da se ta jedinica ne mora niti zapisivati jer je možemo podrazumijevati. Na taj način se štedi jedan bit, što doprinosi većoj preciznosti. Primjeri mogućih deklaracija: Taj bit se naziva skriveni bit (eng. hidden bit) - float a; - double b; - long double c;

IEEE standard zapisa realnih brojeva (IEEE-Institute of Electrical and Electronics Engineers) Primjer prikaza realnog broja tipa float P K M 31 30 23 P označava a predznak (1 bit) - 1 negativan broj -0 pozitivan broj K označava karakteristiku (8 bitova) - binarni eksponent+127 - raspon binarnog eksponenta je -126-127 - raspon karakteristike je 0-255 22 0 Potrebno je odrediti prikaz broja 6.625 koji je pridru\en varijabli deklariranoj kao float. 6.625 (10) = 110.101 (2) Binarni broj dalje možemo zapisati na slijedeći način: Izračunajmo karakteristiku: 110.101=1.10101 2 2 K= 2 + 127=129 129 (10) =10000001 (2) Nakon izbacivanja vodeće jedinice i tačke za mantisu dobivamo:10101 Prema tome, broj 6.625 kao tip float će biti zapisan na slijedeći način: M označava mantisu, pri čemu se vodeća jedinica ne zapisuje (23 bita). 0 10000001 10101000000000000000000 Šta je sa zapisom broja 0? Pošto je u normaliziranom zapisu vodeća uvijek jedinica, postavlja se pitanje kako prikazati broj 0. Vrjedi slijedeći dogovor: Kada su svi bitovi karakteristike i svi bitovi mantise jednaki nuli, onda se radi o prikazu realnog broja 0. Gornji dogovor ima za posljedicu da postoje pozitivna nula i negativna nula, pri čemu su oba prikaza ravnopravna. Dogovor je da se pri usporedbi ta dva prikaza smatraju jednakim. Pik Prikaz broja + je: Zapis +, - i not a number 0 11111111 00000000000000000000000 Svi bitovi mantise su 0, karakteristika ima vrijednost 255, a bit predznaka je 0. Prikaz broja - je: 1 11111111 00000000000000000000000 Svi bitovi mantise su 0, karakteristika ima vrijednost 255, a bit predznaka je 1. Gore prikazani brojevi se najčešće dobiju zbog dijeljenja s nulom. pozitivna nula 00000000000000000000000000000000 negativna nula 10000000000000000000000000000000 predznak karakteristika mantisa

Neki specijalni slučajevi Ako karakteristika ima vrijednost 255, te postoje bitovi mantise koji nisu 0, onda se zapis klasificira kao not a number (nije broj) Ovakav zapis se može dobiti zbog toga što je prilikom izvođenja neke operacije došlo do greške. Primjer zapisa klasificiranog i kao not a number: 0 11111111 10000000000000000000001 Postoje i specijalni slučajevi kada je vrijednost karakteristike 0, a postoje bitovi mantise koji nisu nula. Takav zapis nazivamo denormalizirani zapis Ne podrazumijeva da je skriveni bit jednak 1 i smatra se da je vodeći bit mantise 0. Vrijednost eksponenta je -126 (ne koristi se formula K=binarni eksponent +127) Primjer: 0 00000000 01010000000000000000000 (=0.0101 2-126 ) Binarni operatori: + sabiranje - oduzimanje * množenje / dijeljenje % modulo Aritmetički operatori Operator modulo (%) daje ostatak cjelobrojnog dijeljenja. Može se primijeniti samo na cjelobrojne tipove podataka. Izrazi Šta radi naredba i=i+1;? Izrazi se sastoje od operatora, operanada i zagrada. Svaki izraz daje neki rezultat. Primjeri izraza: 2*x+5 (a+b)/2 Brojevi 2 i 5 u gornjim izrazima su konstante. Znakovi *, +, / predstavljaju operatore Varijable x, a i b predstavlaju varijable,odnosno, operande. Za pridruživanje vrijednosti varijablama koristi se znak =. Naredba i=i+1; je jedna od najčešče korištenih naredbi u programiranju. Pošto kod početnika uperator pridruživanja unosi određene dileme jer ih podsjeća na značenje znaka = u matematici, na ovom mjestu bi ta zabuna trebala da se ukloni. Značenje naredbe je: i=i+1; Pridružiti novu vrijednost varijabli i a ta nova vrijednost se dobije tako da se trenutna vrijednost te varijable uveća za 1. Na primjer, slijedeća naredba: i=10; varijabli i pridružuje vrijednost 10. i. 8... 9..

int a,b,o; a=7; b=3; Primjer (operator modulo) o=a%b; printf( \n Ostatak dijeljenja %d i %d je %d.,a,b,o); Izvođenjem programa dobit će se: Ostatak dijeljenja 7 i 3 je 1. Prioritet operatora Prioritet operatora *, / i % je viši od operatora + i -. Na primjer, u izrazu: x=a/b+c*d prvo će se izvesti operacije dijeljenja i množenja, a nakon toga i operacija sabiranja. Kod operatora s istim prioritetom, izvršavanje operacija ide od lijeve strane prema desnoj. Prioritet izvođenja operacija se može mijenjati j upotrebom zagrada. Na primjer, u izrazu: s=(x*(a-b)+1)/2 operacija dijeljenja će biti izvedena posljedna. Operatori inkrement i dekrement Operatori inkrement i dekrement u izrazima Unarni opertori. ++ operator inkrement - uvećaj za jedan; -- operator dekrement- umanji za jedan. Mogu se pisati iza ili ispred varijable. x=x+1; x=x-1; x x++; x--; Na primjer, iza odsječka programa:. x=15; x++; vrijednost varijable x je 16. Isto vrijedi i u slučaju da je umjesto x++ napisano ++x. U izrazima nije svejedno da li operatori ++ i -- stoje ispred ili iza varijable. O položaju operatora u odnosu na varijablu ovisi kada će se vrijednost varijable povećati(++) ili smanjiti(- -). Ako operator stoji ispred varijable, onda se vrijednost varijable prvo promijeni a zatim se promijenjena vrijednost koristi u izrazu. Ako operator stoji iza varijable, onda se u izrazu uzima trenutna vrijednost varijable, a tek nakon izračunavanja izraya se promijeni vrijednost varijable. Na primjer, neka je x=100. Izračunavanjem izraza: y=++x; vrijednost varijable x će se prvo povećati za 1, a zatim će se ta vrijednost pridružiti varijabli y. Dakle, varijabla y će poprimiti vrijednost 101.

Operatori inkrement i dekrement u izrazima(2/2) Kontrola toka programa Suprotno, izračunavanjem izraza: y=x++; varijabli y će se pridružiti vrijednost varijable x (a to je 100), a zatim će se povećati za 1 vrijednost varijable x. Vrijednost varijable y nakon izračunavanja gornjeg izraza je 100, dok je vrijednost varijable x tada 101. Prikladnim odabirom operatora inkrement i dekrement može se povećati razumljivost programskog koda. Operatori ++ i -- se ne mogu primijeniti na konstante i na aritmetičke izraze. To znači da su slijedeći izrazi pogrešni: Kod proceduralnih programskih jezika naredbe se izvršavaju sekvencijalno, a to znači redoslijedom kojim su napisane. Naredbe za kontrolu toka programa omogućuju: - ponavljanje jedne ili više naredbi; - preusmjeravanje toka programa. Naredba n Naredba n+1 Naredba +2. (2*x+y)++ 5.672++ Naredba za jednostruki izbor Primjer(naredba za jednostruki izbor) Opći oblik naredbe za jednostruki izbor je: if (uvjet) blok naredbi; Uvjet može biti bilo koji aritmetički ili logički izraz. Blok naredbi može imati jednu ili više naredbi. Uvjet je istinit ako je rezultat izraza različit od nule. Ako je uvjet istinit, blok naredbi se izvršava. U suprotnom, naredbe koje se nalaze u bloku se preskaču. uvjet DA blok narebi NE int a,b; printf( \n Unesite prvi cijeli broj ); scanf( %d,&a); printf( \n Unesite drugi cijeli broj ); scanf( %d,&b); if (a==b) printf( \n Unijeli ste iste brojeve ); Šta bi bilo kad bi uvjet glasio a=b, a za unos u program je: 1. a=10, b=3 2. a=0, b=0

Opći oblik naredbe za jednostruki izbor je: Naredba za dvostruki izbor if (uvjet) blok naredbi1; else blok naredbi2; Uvjet može biti bilo koji aritmetički ili logički izraz. DA blok narebi 1 uvjet NE blok narebi 2 Ako je uvjet ispunjen (vrijednost izraza je različita od 0, izvršava se blok naredbi1 i preskače blok naredbi2. U suprotnom(uvjet nije ispunjen, tj. izraz ima vrijednost 0), izvršava se blok narebi2, a preskače se blok naredbi1. Primjer (naredba za dvostruki izbor) int br; printf( \n Unesite cijeli broj ); scanf( %d,&br); if (br%2) printf( \n Unijeli ste neparan broj ); else printf( \n Unijeli ste paran broj ); Višestruki izbor (if-else if-else) Opći oblik pisanja naredbi za višestruki izbor je: if (uvjet 1) blok naredbi 1; else if (uvjet 2) blok naredbi 2;. else if (uvjet n-1) blok naredbi n-1; else blok naredbi n; Ovakav oblik naredbi if-else if-else omogućava uzastopno ispitivanje niza uvjeta. Ako je bilo koji uvjet istinit (različit od nule) izvršava se blok naredbi pridružen tom uvjetu, dok se svi ostali blokovi naredbi preskaču Broj uvjeta nije ograničen Uvjet može biti logički ili aritmetički izraz Primjer (program za rješavanje kvadratne jednadžbe) #include <math.h> Uključuje se datoteka math.h u kojoj je definicija funkcije pow() koja je korištena u programu. float a, b, c, x1, x2, x1re, x2re, x1im, x2im, t, D; printf( \n Unesite koeficijente kvadratne jednadzbe a,b,c:"); scanf("%f %f %f", &a,&b,&c); D=b*b -4.0*a*c; /* diskriminanta */ if (D > 0) t = sqrt(d); x1 = (-b + t)/(2*a); x2 = (-b - t)/(2*a); \ \ printf ( \n Rjesenja su: x1=%f x2=%f\n", x1, x2); Blok naredbi koji će se izvršiti ako je diskriminanta D pozitivna

Nastavak primjera programa za rješavanje kvadratne jednadžbe Programska petlja for else if (D == 0) x1 = -b/(2*a); printf ( \n Rjesenja su: x1=x2=%f\n", x1); else Blok naredbi koji će se izvršiti ako je t = sqrt(-d); diskriminanta D jednaka nuli x1re = -b/(2*a); x2re = x1re; x1im = t/(2*a); x2im = -x1im; printf ( \n Rjesenja su: x1 = (%f,%f)\n", x1re, x1im); printf ( x2 = (%f,%f)\n", x2re, x2im); Blok naredbi koji će se izvršiti ako je diskriminanta D negativna Opći oblik programske petlje for: for (izraz1;izraz2;izraz3) blok naredbi; Ispitivanje uvjeta izlaza iz petlje se ispituje na početku. To znači da postoji mogućnost da se blok naredbi ne izvede niti jednom. izraz1 pridružuje kontrolnoj varijabli petlje početnu vrijednost. Ovaj izraz se izvršava samo jednom. Ako trebamo všše naredbi u izrazu, onda ih odvajamo zarezom izraz2 predstavlja izraz kojim se provjerava da li kontrolna varijabla petlje ispunjava uvjet izlazka iz petlje. Provjera se vrši prije svake iteracije. izraz3 definira na koji način se mijenja kontrolna varijabla. Izraz se izvršava nakon svakog prolaska kroz petlju. Ako trebamo više naredbi u izrazu, odvajamo ih zarezom. Primjer Ispis na monitoru niza brojeva od d1d do 10 int broj; for(broj=1; broj<=10; broj++) printf( %d, broj); Iza naredbe for nema oznake početka bloka naredbi, jer se blok naredbi u ovom primjeru sastoji od samo jedne naredbe, pa tada oznake početka i kraja bloka naredbi nisu potrebne.