105
Uvod u programiranje Uvod u programiranje Programiranje 1 Programiranje 1 (550 (550) Poglavlje 2 Poglavlje 2 Varijable i tipovi podataka Varijable i tipovi podataka 1 Varijable i tipovi podataka Varijable i tipovi podataka dr dr dr dr dr dr dr dr. . . . . . . . sc sc sc sc sc sc sc sc. Josip Musić . Josip Musić . Josip Musić . Josip Musić . Josip Musić . Josip Musić . Josip Musić . Josip Musić jmusic [email protected] fesb.hr Originalne Originalne Originalne Originalne Originalne Originalne Originalne Originalne slideove slideove slideove slideove slideove slideove slideove slideove izradio: izradio: izradio: izradio: izradio: izradio: izradio: izradio: Teo Teo Teo Teo Teo Teo Teo Teo Žuljević Žuljević Žuljević Žuljević Žuljević Žuljević Žuljević Žuljević, , , , , , , , dipl dipl dipl dipl dipl dipl dipl dipl. ing. . ing. . ing. . ing. . ing. . ing. . ing. . ing. teo.zuljevic [email protected] fesb.hr

Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

  • Upload
    lamthu

  • View
    316

  • Download
    7

Embed Size (px)

Citation preview

Page 1: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Uvod u programiranjeUvod u programiranjeProgramiranje 1 Programiranje 1 (550(550))

Poglavlje 2Poglavlje 2

Varijable i tipovi podatakaVarijable i tipovi podataka

1

Varijable i tipovi podatakaVarijable i tipovi podataka

drdrdrdrdrdrdrdr. . . . . . . . scscscscscscscsc. Josip Musić. Josip Musić. Josip Musić. Josip Musić. Josip Musić. Josip Musić. Josip Musić. Josip Musićjmusicjmusic@@fesb.hrfesb.hr

Originalne Originalne Originalne Originalne Originalne Originalne Originalne Originalne slideoveslideoveslideoveslideoveslideoveslideoveslideoveslideove izradio:izradio:izradio:izradio:izradio:izradio:izradio:izradio:Teo Teo Teo Teo Teo Teo Teo Teo ŽuljevićŽuljevićŽuljevićŽuljevićŽuljevićŽuljevićŽuljevićŽuljević, , , , , , , , dipldipldipldipldipldipldipldipl. ing.. ing.. ing.. ing.. ing.. ing.. ing.. ing.teo.zuljevicteo.zuljevic@@fesb.hrfesb.hr

Page 2: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Lab vježbeLab vježbe

Termini lab vježbiTermini lab vježbi__

početakpočetak__

100 % odrañenost vježbi100 % odrañenost vježbi

ee--Learning sustavLearning sustav

2

ee--Learning sustavLearning sustavhttp://www.fesb.hr/elearninghttp://www.fesb.hr/elearning

Moodle CMSMoodle CMS--u (Course Management System) u (Course Management System)

Page 3: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Pregled Pregled (1)(1)

Konzolna aplikacija HelloKonzolna aplikacija Helloprevoñenje i izvoñenje iz naredbene linijeprevoñenje i izvoñenje iz naredbene linije

prevoñenje i izvoñenje prevoñenje i izvoñenje uupotrebom VS.IDEpotrebom VS.IDE

programski elementi u Hprogramski elementi u Heelllloo

Multimedija: Što su varijable?Multimedija: Što su varijable?

Uvod u tipove podatakaUvod u tipove podatakaopći sistem tipovaopći sistem tipova

vrijednosni tipovivrijednosni tipovi

3

vrijednosni tipovivrijednosni tipovi

referencreferencnni tipovii tipovi

VarijableVarijableimenovanje varijabliimenovanje varijabli

ključne riječiključne riječi

pravila i preporuke imenovanjapravila i preporuke imenovanjaPascal označavanjePascal označavanje

Camel označavanjeCamel označavanje

deklariranje varijablideklariranje varijabli

pridruživanje vrijednosti varijablipridruživanje vrijednosti varijabli

pridruživanje vrijednosti izraza varijablipridruživanje vrijednosti izraza varijabli

Option ExplicitOption Explicit

Page 4: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Pregled Pregled (2)(2)

Ugrañeni vrijednosni tipovi podatakaUgrañeni vrijednosni tipovi podatakaza cjelobrojne vrijednostiza cjelobrojne vrijednosti

ByteByteShortShortIntegerIntegerLongLong

za decimalne vrijednostiza decimalne vrijednostirealni brojevirealni brojevibrojevi s pomičnim zarezombrojevi s pomičnim zarezomIEEE Short Real zapisIEEE Short Real zapis

4

IEEE Short Real zapisIEEE Short Real zapismantisamantisanormalizacijanormalizacijaeksponenteksponentspecijalne vrijednostispecijalne vrijednostidenormalizacijadenormalizacija

IEEE Long Real zapisIEEE Long Real zapisSingleSingleDoubleDoubleDecimalDecimal

ostali tipoviostali tipoviDateDateBooleanBooleanCharChar

Page 5: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Pregled Pregled (3)(3)

Opseg varijabliOpseg varijabli

Trajanje varijabliTrajanje varijabli

Lokalne varijableLokalne varijable

Varijable modulaVarijable modulaopseg modulaopseg modula

opseg prostora imenovanjaopseg prostora imenovanja

5

opseg prostora imenovanjaopseg prostora imenovanja

Pretvaračke funkcijePretvaračke funkcijeimplicitna pretvorbaimplicitna pretvorba

eksplicitna pretvorbaeksplicitna pretvorbaOption StrictOption Strict

VB pretvaračke funkcijeVB pretvaračke funkcije

postupci klase Convertpostupci klase Convert

KonstanteKonstante

OperatoriOperatori

Page 6: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Konzolne aplikacijeKonzolne aplikacije

Bez grafičkog korisničkog sučeljaBez grafičkog korisničkog sučeljasučelje tekstualno orijentiranosučelje tekstualno orijentirano

poput DOS aplikacijapoput DOS aplikacija

Pokreću se iz naredbene linijePokreću se iz naredbene linije

Mogućnost prihvata i ispisa informacija za vrijeme izvoñenjaMogućnost prihvata i ispisa informacija za vrijeme izvoñenja

6

Page 7: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Notepad kod Notepad kod –– HelloHello

01: 'program Hello

02: Module Hello

03: Public Sub Main() ‘polazišna točka programa

04: Dim answer As String

05:

06: System.Console.WriteLine (“Da li želite pozdrav?”)

07: System.Console.WriteLine (“Pritisnite Y za DA, N za NE”)

08: answer = System.Console.ReadLine()

7

08: answer = System.Console.ReadLine()

09: If answer = “Y” Then

10: System.Console.WriteLine(“Hello!”)

11: Else

12: System.Console.WriteLine(“Bye Bye!”)

13: End If

14: End Sub

15: End Module

Brojevi linija se ne pišu u kodu !Brojevi linija se ne pišu u kodu !

Page 8: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Prevoñenje iz naredbene linijePrevoñenje iz naredbene linijevbc.exevbc.exevbc.exevbc.exe –– kompajler, dio .NET Frameworkkompajler, dio .NET Framework--aa

za prevoñenje VB.NET izvornog koda za prevoñenje VB.NET izvornog koda

Dovoljan NotepadDovoljan Notepad--a i vbc.exe za:a i vbc.exe za:Izvršni ili EXE program, nalik DOS programima Izvršni ili EXE program, nalik DOS programima

biblioteku ili DLL skup (asembli) biblioteku ili DLL skup (asembli)

Windows program ili EXE Windows program ili EXE

8

Page 9: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Korištenje VS.IDE Korištenje VS.IDE -- demodemo

Odabir programskog jezika (Odabir programskog jezika (VB.NETVB.NET))

Odabir predloška projekta (Odabir predloška projekta (ConsoleConsole))

Pisanje programskog kodaPisanje programskog koda

KompajliranjeKompajliranje i izvoñenjei izvoñenjeDebugDebugDebugDebug/Start/Start/Start/Start (F5)(F5)

9

DebugDebugDebugDebug/Start/Start/Start/Start (F5)(F5)

DebugDebugDebugDebug/Start /Start /Start /Start WithoutWithoutWithoutWithout DebuggingDebuggingDebuggingDebugging ((CtrlCtrl+F5)+F5)

http://www.microsoft.com/http://www.microsoft.com/visualstudiovisualstudio//enen--us/us/productsproducts/2010/2010--editionseditions//visualvisual--basicbasic--expressexpress

Može i Može i openopen sourcesource razvojni alatrazvojni alatwww.icsharpcode.net/www.icsharpcode.net/www.icsharpcode.net/www.icsharpcode.net/opensourceopensourceopensourceopensource/sd//sd//sd//sd/

Page 10: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Programski elementi u Hello.vbProgramski elementi u Hello.vb

Komentari kodaKomentari koda

Definicija modulaDefinicija modulaključne ili rezervirane riječiključne ili rezervirane riječi

identifikatoridentifikator

MainMain proceduraprocedura

10

Varijable i tipovi podatakaVarijable i tipovi podataka

Osnovne ulaz/izlaz operacijeOsnovne ulaz/izlaz operacijeklasa klasa ConsoleConsole

prostori imenovanjaprostori imenovanja

Struktura grananjaStruktura grananja

Page 11: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Komentari kodaKomentari koda

Komentari su važniKomentari su važnidobro dokumentirani program omogućuje programeru dobro dokumentirani program omogućuje programeru puno razumijevanje strukture programapuno razumijevanje strukture programa

Kompajler ih ne prevodiKompajler ih ne prevodi

Mogu biti u zasebnoj liniji ili na kraju postojeće Mogu biti u zasebnoj liniji ili na kraju postojeće naredbene linije.naredbene linije.

11

naredbene linije.naredbene linije.

01: 'program Hello

02: Module Hello

03: Public Sub Main() 'startna točka programa

Page 12: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Definicija modulaDefinicija modula

Koriste se za grupiranje srodnih procedura.Koriste se za grupiranje srodnih procedura.olakšana ponovna upotreba kodaolakšana ponovna upotreba koda

Područje modula je odreñeno sa Područje modula je odreñeno sa Module...End ModuleModule...End ModuleModule...End ModuleModule...End Module

IdentifikatorIdentifikator

12

01: 'program Hello

02: Module Hello

03: Sub Main() ‘polazišna točka programa

...

15: End Module

Page 13: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Main proceduraMain procedura

Svaki program mora negdje započeti izvoñenjeSvaki program mora negdje započeti izvoñenjeMainMainMainMain procedura polazišna točka VB.NET programaprocedura polazišna točka VB.NET programa

Višestruki moduli mogu imati samo jednu Višestruki moduli mogu imati samo jednu MainMainMainMain

procedura odreñenu kao polazišnu.procedura odreñenu kao polazišnu.

Područje Područje MainMainMainMain procedure je odreñeno sa procedure je odreñeno sa

13

Sub Main...End SubSub Main...End SubSub Main...End SubSub Main...End Sub

01: 'program Hello

02: Module Hello

03: Sub Main() ‘polazišna točka

14: End Sub

15: End Module

Page 14: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Varijable i tipovi podatakaVarijable i tipovi podataka

Imenovano memorijsko područje za pohranu podatka.Imenovano memorijsko područje za pohranu podatka.

Sastoji se od:Sastoji se od:identifikatora (identifikatora (answeranswer))

tipa podatka koju varijabla može pohraniti (tipa podatka koju varijabla može pohraniti (StringString))

vrijednosti koja predstavlja trenutno pohranjenu informaciju vrijednosti koja predstavlja trenutno pohranjenu informaciju

14

Page 15: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Klasa ConsoleKlasa Console

.NET Framework sadrži klase već ugrañene .NET Framework sadrži klase već ugrañene funkcionalnostifunkcionalnosti

klase su organizirane u klase su organizirane u prostore imenovanja ili imenikeprostore imenovanja ili imenikeprostore imenovanja ili imenikeprostore imenovanja ili imenikeprostore imenovanja ili imenikeprostore imenovanja ili imenikeprostore imenovanja ili imenikeprostore imenovanja ili imenike((namespacenamespace))

temeljni je temeljni je SystemSystem imenikimenik

ConsoleConsole klasa pripadaklasa pripada SystemSystem imeniku.imeniku.puna pripadnost puna pripadnost System.ConsoleSystem.Console

15

puna pripadnost puna pripadnost System.ConsoleSystem.Console

Osigurava pristup standardnom ulazu i izlazuOsigurava pristup standardnom ulazu i izlazustandardni ulaz standardni ulaz –– tipkovnicatipkovnica

standardni izlaz standardni izlaz -- zaslonzaslon

ConsoleConsole klasa sadrži postupke (procedure):klasa sadrži postupke (procedure):WriteWrite i i WriteLineWriteLine za ispis informacija u konzolni prozorza ispis informacija u konzolni prozor

ReadRead ii ReadLineReadLine za prihvat informacija iz konzolnog za prihvat informacija iz konzolnog prozoraprozora

Page 16: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

WriteLine i ReadLineWriteLine i ReadLine

Console.WriteLineConsole.WriteLine i i Console.WriteConsole.Write ispisuju ispisuju informacije u konzolni prozorinformacije u konzolni prozor

WriteLineWriteLine –– pomak kursora u sljedeću linijupomak kursora u sljedeću liniju

Console.ReadConsole.Read i i Console.ReadLineConsole.ReadLine čitaju čitaju informacije iz konzolnog prozorainformacije iz konzolnog prozora

ReadRead –– čita sljedeći znakčita sljedeći znak

16

ReadRead –– čita sljedeći znakčita sljedeći znak

ReadLineReadLine –– čita sve znakova do kraja ulazne liniječita sve znakova do kraja ulazne linije

06: System.Console.WriteLine (“Da li želite pozdrav?”)

07: System.Console.WriteLine (“Pritisnite Y za DA, N za NE”)

08: answer = System.Console.ReadLine()

Page 17: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Pozivanje postupaka FrameworkPozivanje postupaka Framework--aa

Public Sub Main()…………System.Console.WriteLine("Pritisnite Y za DA, N za NE")………………

End Sub

pozivanje postupkapozivanje postupka��

��

17

End Sub

System.Console

Public Shared Sub WriteLine(value As String)……End Sub

pozvani postupakpozvani postupak

Page 18: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Pridruživanje vrijednosti varijabliPridruživanje vrijednosti varijabli

Znak jednakosti Znak jednakosti –– operator pridruživanjaoperator pridruživanja

Vrijednost unesena u konzolni prozor od strane Vrijednost unesena u konzolni prozor od strane korisnika se pohranjuje u varijablu korisnika se pohranjuje u varijablu answeranswer

‘Notepad kod

18

06: System.Console.WriteLine (“Da li želite pozdrav?”)

07: System.Console.WriteLine (“Pritisnite Y za DA, N za NE”)

08: answer = System.Console.ReadLine()

‘VS kod

06: Console.WriteLine (“Da li želite pozdrav?”)

07: Console.WriteLine (“Pritisnite Y za DA, N za NE”)

08: answer = Console.ReadLine()

Page 19: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Struktura grananjaStruktura grananja

09: If answer = "Y" Then

Zavisno o stanju uvjeta odreñuje se smjer izvoñenja.Zavisno o stanju uvjeta odreñuje se smjer izvoñenja.

Znak jednakosti Znak jednakosti –– operator jednakosti.operator jednakosti.

19

09: If answer = "Y" Then

10: System.Console.WriteLine("Hello!")

11: Else

12: System.Console.WriteLine("Bye Bye!")

13: End If

Page 20: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Multimedija: Što su varijable?Multimedija: Što su varijable?

20

Page 21: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Uvod u tipove podatakaUvod u tipove podataka

Opći sistem tipovaOpći sistem tipova

Vrijednosni tipoviVrijednosni tipovi

Referencni tipoviReferencni tipovi

21

Page 22: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Što je opći sistem tipova? Što je opći sistem tipova?

Prilikom definiranja varijable potrebno izabrati ispravan Prilikom definiranja varijable potrebno izabrati ispravan tip podatka za varijablu.tip podatka za varijablu.

tip podatka odreñuje:tip podatka odreñuje:

dozvoljene vrijednosti za varijabludozvoljene vrijednosti za varijablu

operacije koje mogu biti izvedene sa varijablomoperacije koje mogu biti izvedene sa varijablom

memorijsko zauzeće varijablememorijsko zauzeće varijable

Opći sistem tipova Opći sistem tipova (Common Type System (Common Type System -- CTS)CTS) je integralni je integralni

22

Opći sistem tipova Opći sistem tipova (Common Type System (Common Type System -- CTS)CTS) je integralni je integralni dio CLRdio CLR--a (.NET Frameworka (.NET Framework--a)a)

Model koji definira pravila koja slijedi okolina izvoñenja kod Model koji definira pravila koja slijedi okolina izvoñenja kod deklariranja, korištenja i upravljanja tipovima.deklariranja, korištenja i upravljanja tipovima.

Omogućuje:Omogućuje:

meñumeñu--jezičnu integracijujezičnu integraciju

sigurnost tipova (type safety)sigurnost tipova (type safety)

visoke performanse izvoñenja kodavisoke performanse izvoñenja koda

Page 23: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Vrijednosni i referencni tipovi

CTS podržava vrijednosne i referencne tipove CTS podržava vrijednosne i referencne tipove

Vrijednosni

Tipovi

Referencni

23

primitivni tipovi

podataka

korisničko definirani

tipovi

nabrajanja

String

nizovi (polja)

klase

sučelja

delegiranja

struktureiznimke

Page 24: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Vrijednosni tipoviVrijednosni tipovi

Varijable vrijednosnih tipova direktno sadrže Varijable vrijednosnih tipova direktno sadrže pripadajuće podatke.pripadajuće podatke.

svaka varijabla vrijednosnog tipa sadrži vlastitu kopiju svaka varijabla vrijednosnog tipa sadrži vlastitu kopiju podatakapodataka

nije moguće da operacije nad jednom varijablom utječu nije moguće da operacije nad jednom varijablom utječu na drugu varijabluna drugu varijablu

24

na drugu varijabluna drugu varijablu

ne može biti ne može biti NothingNothing

NothingNothing (VB.NET)== (VB.NET)== nullnull (C#)(C#)

pohrana podatka na stogu pohrana podatka na stogu (Stack)(Stack)

dodjela memorije prilikom deklariranja varijabledodjela memorije prilikom deklariranja varijable

uklanjanje iz memorije automatskiuklanjanje iz memorije automatski

123123iiiiiiiiDim i As Integer = 123

Page 25: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Ugrañeni vrijednosni tipoviUgrañeni vrijednosni tipovi

Ugrañeni, osnovni, predefinirani ili primitivniUgrañeni, osnovni, predefinirani ili primitivni

U U VB.NETVB.NET--uu se identificiraju preko ključnih riječise identificiraju preko ključnih riječi“nadimci” za podržane CTS tipove“nadimci” za podržane CTS tipove

pripadajući predefinirani tipovi se nalaze u pripadajući predefinirani tipovi se nalaze u SystemSystem imeniku imeniku unutar unutar .NET Framework .NET Framework biblioteke klasabiblioteke klasa

nema nikakve razlike izmeñu korištenja “nadimka” i nema nikakve razlike izmeñu korištenja “nadimka” i

25

nema nikakve razlike izmeñu korištenja “nadimka” i nema nikakve razlike izmeñu korištenja “nadimka” i pripadajućeg predefiniranog tipapripadajućeg predefiniranog tipa

“VB nadimak”“VB nadimak” ByteByte = “.NET” = “.NET” System.ByteSystem.Byte

Byte == System.ByteInteger == System.Int32

Page 26: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Ugrañeni vrijednosni tipovi Ugrañeni vrijednosni tipovi (nastavak)(nastavak)

Rezervirane ključne riječi i njihovi ekvivalentni Rezervirane ključne riječi i njihovi ekvivalentni strukturni tipovi:strukturni tipovi:

Strukturni Strukturni Strukturni Strukturni ttttipipipip

OpisOpisOpisOpis Visual Basic.NETVisual Basic.NETVisual Basic.NETVisual Basic.NET C#C#C#C#

ByteByteByteByte ByteByteByteByte bytebytebytebyte

SByteSByteSByteSByte ---- sbytesbytesbytesbyte

Int16Int16Int16Int16 ShortShortShortShort shortshortshortshort

26

Cjelobrojni brojčani tipoviInt32Int32Int32Int32 IntegerIntegerIntegerInteger intintintint

Int64Int64Int64Int64 LongLongLongLong longlonglonglong

Uint16Uint16Uint16Uint16 ---- ushortushortushortushort

Uint32Uint32Uint32Uint32 ---- uintuintuintuint

Uint64Uint64Uint64Uint64 ---- ulongulongulongulong

SingleSingleSingleSingle Decimalni brojčani tipovi s pomičnim zarezom

SingleSingleSingleSingle floatfloatfloatfloat

DoubleDoubleDoubleDouble DoubleDoubleDoubleDouble doubledoubledoubledouble

DecimalDecimalDecimalDecimal Decimalni brojčani tip DecimalDecimalDecimalDecimal decimaldecimaldecimaldecimal

CharCharCharChar Znak CharCharCharChar charcharcharchar

BooleanBooleanBooleanBoolean Logički tip BooleanBooleanBooleanBoolean boolboolboolbool

Page 27: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

VarijableVarijableVarijabla je imenovana memorijska lokacija koja pohranjuje Varijabla je imenovana memorijska lokacija koja pohranjuje podatke za vrijeme izvoñenja programa.podatke za vrijeme izvoñenja programa.

Varijabla ima šest osnovnih elemenata: Varijabla ima šest osnovnih elemenata:

Ime ili identifikatorIme ili identifikatorIme ili identifikatorIme ili identifikator – riječ koja identificira varijablu u kodu

AdresaAdresaAdresaAdresa – memorijska lokacija pridružena varijabli

27

AdresaAdresaAdresaAdresa – memorijska lokacija pridružena varijabli

Tip podatkaTip podatkaTip podatkaTip podatka – tip i veličina podatka koji varijabla može pohraniti

VrijednostVrijednostVrijednostVrijednost – vrijednost pohranjena na adresi varijable

Opseg Opseg Opseg Opseg – dio koda koji može pristupiti i koristiti varijablu

Životni vijekŽivotni vijekŽivotni vijekŽivotni vijek – period vremena za koji varijabla postoji u memoriji

Page 28: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Imenovanje varijabliImenovanje varijabli

Pravila i preporuke za imenovanje varijabliPravila i preporuke za imenovanje varijabliprije korištenja prvo potrebno izabrati prikladno ime za prije korištenja prvo potrebno izabrati prikladno ime za varijabluvarijablu

ime varijable se naziva identifikatorom varijableime varijable se naziva identifikatorom varijableidentifikatori su imena koja se dodjeljuju programskim elementimaidentifikatori su imena koja se dodjeljuju programskim elementima

preporuka je slijediti konvencije imenovanja preporuka je slijediti konvencije imenovanja

28

preporuka je slijediti konvencije imenovanja preporuka je slijediti konvencije imenovanja preporučene za VB.NET preporučene za VB.NET

VB.NET ključne riječi se ne mogu koristiti kao VB.NET ključne riječi se ne mogu koristiti kao identifikatoriidentifikatori

Page 29: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

VB.NET ključne riječiVB.NET ključne riječi

Ključne riječi su rezervirani identifikatoriKljučne riječi su rezervirani identifikatorine smiju se koristiti kao imena varijabli i drugih programskih elemenatane smiju se koristiti kao imena varijabli i drugih programskih elemenata

korištenje ključne riječi za ime varijable ima za posljedicu nastajanje korištenje ključne riječi za ime varijable ima za posljedicu nastajanje pogrješke za vrijeme izvoñenjapogrješke za vrijeme izvoñenja

And AndAlso As Boolean ByRefByte Catch CBool Date DecimalDim Do Double Each Else

29

Dim Do Double Each ElseElseIf End Enum Error EventExit False Finally For FunctionGet Handles If Implements ImportsIn Inherits Integer Interface IsLong Loop Me Mod ModuleNew Namespace Next Not NothingOr OrElse Overloads Private Property Public ReadOnly Return Select SetShort Single String Structure SubThen True Try Until WhenWhile With ...

Page 30: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Pravila i preporuke za imenovanje Pravila i preporuke za imenovanje varijablivarijabli

Pravila imenovanjaPravila imenovanjaime varijable mora započeti sa slovom ili znakom ime varijable mora započeti sa slovom ili znakom podvučeno podvučeno (underscore)(underscore) ‘_’‘_’

nakon prvog znaka mogu se koristiti slova, nakon prvog znaka mogu se koristiti slova, znamenke i znak ‘_’znamenke i znak ‘_’

ne smiju se koristiti ključne riječine smiju se koristiti ključne riječi

Mobile091091Mobile_091Mobile

��������

����

integer ����

30

BADSTYLE_badstylegoodStyle

��������

����

ne smiju se koristiti ključne riječine smiju se koristiti ključne riječi

ako se koristi nedozvoljeno ime => ako se koristi nedozvoljeno ime => compilecompile--time time error (greška za vrijeme prevođenja)error (greška za vrijeme prevođenja)

imena mogu imati najviše 16383 znakaimena mogu imati najviše 16383 znaka

PreporukePreporukeizbjegavati korištenje sve velikih slovaizbjegavati korištenje sve velikih slova

izbjegavati znak ‘_’ kao prviizbjegavati znak ‘_’ kao prvi

izbjegavati korištenje skraćenicaizbjegavati korištenje skraćenica

koristiti Camel označavanje za imena varijabli koristiti Camel označavanje za imena varijabli sastavljena od više riječi sastavljena od više riječi

cntcounter

��������

integerelse

��������

Page 31: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Camel, Pascal i mañarsko Camel, Pascal i mañarsko označavanjeoznačavanje

CamelCamel označavanje se koristi kod imenovanja označavanje se koristi kod imenovanja varijablivarijabli

svaka od riječi imena započinje s velikim slovom svaka od riječi imena započinje s velikim slovom osim prveosim prve

studentFirstNamestudentFirstName

PascalPascal označavanje se koristi za procedureoznačavanje se koristi za procedure

31

PascalPascal označavanje se koristi za procedureoznačavanje se koristi za proceduresvaka od riječi imena započinje s velikim slovomsvaka od riječi imena započinje s velikim slovom

AverageValueAverageValue

MañarskoMañarsko označavanje, u VB6označavanje, u VB6imenu varijable prethodi prefiks koji ukazuje na tip imenu varijable prethodi prefiks koji ukazuje na tip podatka varijablepodatka varijable

intNumberintNumber

strTextstrText

......

Page 32: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Nedozvoljena imena varijabli?Nedozvoljena imena varijabli?

���� 098mobile

���� mobile098

���� _098mobile

��

��

��

32

���� _098mobile

���� $price

���� productPrice

���� ProductPrice

Nothing

��

��

��

��

��

Page 33: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Korištenje ugrañenih vrijednosnih Korištenje ugrañenih vrijednosnih tipova podatakatipova podataka

Deklariranje lokalne varijableDeklariranje lokalne varijable

Pridruživanje vrijednosti varijabliPridruživanje vrijednosti varijabli

Pridruživanje vrijednosti izrazaPridruživanje vrijednosti izraza

Odabir tipa podatkaOdabir tipa podatka

33

Odabir tipa podatkaOdabir tipa podatka

Page 34: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Dim variablename As datatype

Deklariranje varijabliDeklariranje varijabli

Dim(dimension)(dimension)(dimension)(dimension)

- naredba kojom se rezervira memorijski prostor

variablename - ime pridruženo prostoru

As - ukazuje da slijedi tip podatka

34

Moguće deklarirati više varijabli u jednoj liniji.Moguće deklarirati više varijabli u jednoj liniji.

'višestruka deklaracija u jednoj liniji

Dim j, k As Integer

As - ukazuje da slijedi tip podatka

datatype - odreñuje veličinu prostora

Page 35: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Pridruživanje vrijednosti varijabliPridruživanje vrijednosti varijabli

Pridruživanje vrijednosti prethodno deklariranoj varijabliPridruživanje vrijednosti prethodno deklariranoj varijablioperator pridruživanjaoperator pridruživanja

Dim number As Integer

number = 128128128number

35

Inicijalizacija varijable prilikom deklariranjaInicijalizacija varijable prilikom deklariranja

Dim number As Integer = 128

Dim letter As Char = “T”

Dim birthday As Date = #4/27/1970#

128128

"T""T"

number

letter

#...##...#birthday

Page 36: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Pridruživanje vrijednosti izrazaPridruživanje vrijednosti izraza

Dodavanje vrijednosti varijabliDodavanje vrijednosti varijabli

Dim number As Integer = 100

number = number + 128

Skraćeni oblikSkraćeni oblik

36

number += 128

Skraćeni oblik vrijedi za sve aritmetičke operacijeSkraćeni oblik vrijedi za sve aritmetičke operacije

var += izraz; 'var = var + izrazvar -= izraz; 'var = var - izrazvar *= izraz; 'var = var * izrazvar /= izraz; 'var = var / izrazvar %= izraz; 'var = var % izraz

Page 37: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Kako Option Explicit utječe na Kako Option Explicit utječe na varijable ?varijable ?

Option Explicit OnOption Explicit On (default(default))zahtjeva izričito deklariranje varijable prije njezina korištenjazahtjeva izričito deklariranje varijable prije njezina korištenja

smanjuje logičke pogreške i čini kod jednostavnijim za smanjuje logičke pogreške i čini kod jednostavnijim za održavanjeodržavanje

brže izvoñenje kodabrže izvoñenje koda

Option Explicit OffOption Explicit Off

37

Option Explicit OffOption Explicit Offdozvoljava implicitno korištenje varijabli bez njihova deklariranjadozvoljava implicitno korištenje varijabli bez njihova deklariranja

povećava vjerojatnost sukoba imenovanja i neočekivanog povećava vjerojatnost sukoba imenovanja i neočekivanog ponašanja uzrokovanog pravopisnim greškama ponašanja uzrokovanog pravopisnim greškama

rezultira sporijim izvoñenjem kodarezultira sporijim izvoñenjem koda

rectangleSideA = 20rectangleSideB = 30rectanglePerimeter = 2 * (rectangleSideA + rectangleSidB)

Page 38: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

VB.NET ugrañeni tipovi podatakaVB.NET ugrañeni tipovi podatakaCjelobrojne vrijednostiCjelobrojne vrijednosti

ByteByte

ShortShort

IntegerInteger

LongLong

Decimalne vrijednostiDecimalne vrijednostiSingleSingle

38

DoubleDouble

DecimalDecimal

Datum i vrijemeDatum i vrijemeDateDate

LogičkiLogičkiBooleanBoolean

Znak i skup znakovaZnak i skup znakovaCharChar

StringString (referencni tip)(referencni tip)

Page 39: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Tip ByteTip ByteMemorijsko zauzeće: 1 bajt (8 bitova)Memorijsko zauzeće: 1 bajt (8 bitova)

najmanji tip podatkanajmanji tip podatka

Pohranjuje cjelobrojne pozitivne vrijednosti (0 Pohranjuje cjelobrojne pozitivne vrijednosti (0 –– 255)255)najveća vrijednost najveća vrijednost

1x21x20 0 + 1x2+ 1x211 + 1x2+ 1x222 + 1x2+ 1x23 3 + 1x2+ 1x24 4 + 1x2+ 1x25 5 + 1x2+ 1x26 6 + 1x2+ 1x277 = 2= 288--1 =255 1 =255

Byte.MaxValueByte.MaxValue , , Byte.MinValueByte.MinValue

System.ByteSystem.Byte u .NET Frameworku .NET Framework--uu

39

System.ByteSystem.Byte u .NET Frameworku .NET Framework--uu

11 11 11 11 11 11 11 11

22002211222222332244225522662277

11224488161632326464128128

Page 40: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Binarno predstavljanje brojevaBinarno predstavljanje brojeva

Decimalni broj Binarni ekvivalent

0 0000

1 0001

2 0010

3 0011

40

3 0011

4 0100

5 0101

6 0110

7 0111

8 1000

9 1001

Page 41: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Tip ShortTip Short

Memorijsko zauzeće: 2 bajta (16 bitova)Memorijsko zauzeće: 2 bajta (16 bitova)

Pohranjuje cjelobrojne pozitivne i negativne vrijednostiPohranjuje cjelobrojne pozitivne i negativne vrijednostiopseg: od opseg: od --32768 (= 32768 (= --221515 ) do 32767 (=2) do 32767 (=21515-- 1)1)

najviši bit (najviši bit (most significant bit most significant bit -- MSBMSB) ) –– odreñuje predznakodreñuje predznak

1 1 –– negativan, 0 negativan, 0 -- pozitivanpozitivan

System.Int16System.Int16 u .NET Frameworku .NET Framework--uu

41

11 11

11446464

11 11 11 11 11 11 11 11 11 11 11 11 11 11

2200221122222233224422552266227722882299221010221111221212221313221414221515

10241024

MSBMSBMSBMSBMSBMSBMSBMSB LSBLSBLSBLSBLSBLSBLSBLSB

+/+/+/+/+/+/+/+/-------- 1638416384

Page 42: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Predstavljanje negativnih brojevaPredstavljanje negativnih brojevaPrimjer, 16Primjer, 16--bitno predstavljanje broja 13bitno predstavljanje broja 13

jedinični komplementjedinični komplement

00 00 00 00 00 00 00 00 00 00 00 00 11 11 00 11

2200221122222233224422552266227722882299221010221111221212221313221414221515

42

11 11 11 11 11 11 11 11 11 11 11 00 00 11 11

dvojni komplement (jedinični + 1) = dvojni komplement (jedinični + 1) = -- 1313

11 11 11 11 11 11 11 11 11 11 11 11 00 00 11 00

11

+/+/+/+/+/+/+/+/--------

Page 43: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Tip Integer i LongTip Integer i LongIntegerInteger

Memorijsko zauzeće: 4 bajta (32 bita)Memorijsko zauzeće: 4 bajta (32 bita)

Pohranjuje cjelobrojne pozitivne i negativne vrijednostiPohranjuje cjelobrojne pozitivne i negativne vrijednostiopseg: odopseg: od --2147483648 (= 2147483648 (= --223131 ) do 2147483647 (=2) do 2147483647 (=23131-- 1)1)

Integer.MaxValueInteger.MaxValue , , Integer.MinValueInteger.MinValue

MSB MSB –– odreñuje predznakodreñuje predznak

System.Int32System.Int32 u .NET Frameworku .NET Framework--uu

43

System.Int32System.Int32 u .NET Frameworku .NET Framework--uu

LongLong

Memorijsko zauzeće: 8 bajtova (64 bita)Memorijsko zauzeće: 8 bajtova (64 bita)

Pohranjuje cjelobrojne pozitivne i negativne vrijednostiPohranjuje cjelobrojne pozitivne i negativne vrijednostiopseg: od opseg: od --9223372036854775808 (= 9223372036854775808 (= --226363) do ) do

9223372036854775807 (=29223372036854775807 (=26363-- 1)1)

Long.MaxValueLong.MaxValue , , Long.MinValueLong.MinValue

MSB MSB –– odreñuje predznakodreñuje predznak

System.Int64System.Int64 u .NET Frameworku .NET Framework--uu

Page 44: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Realni brojeviRealni brojeviRealni brojeviRealni brojevi

racionalniracionalni

6,0 , ½ , 6,0 , ½ , --15,415,4

iracionalniiracionalni

ππ=3,14159... , =3,14159... , e=2,71828e=2,71828

postoji postoji hh broj realnih brojeva izmeñu dva realna brojabroj realnih brojeva izmeñu dva realna broja

Znanstveno označavanjeZnanstveno označavanje

44

Znanstveno označavanjeZnanstveno označavanjebrojevi s pomičnim zarezom brojevi s pomičnim zarezom (floating point)(floating point)

tri osnovne komponente: predznak, eksponent i mantisatri osnovne komponente: predznak, eksponent i mantisa

--1,60217733x101,60217733x10--1919 (naboj elektrona)(naboj elektrona)

- M x 10Exp

mantisa

eksponent

baza

predznak

Page 45: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Binarni brojevi s pomičnim zarezom Binarni brojevi s pomičnim zarezom

Znanstveno označavanje Znanstveno označavanje Znanstveno označavanje Znanstveno označavanje Znanstveno označavanje Znanstveno označavanje Znanstveno označavanje Znanstveno označavanje -------- binarnobinarnobinarnobinarnobinarnobinarnobinarnobinarno

ss odreñuje je li broj negativan ili pozitivanodreñuje je li broj negativan ili pozitivan

mantisamantisa MM predstavlja razlomački diopredstavlja razlomački dio

ekseksponent ponent EExpxp vrijednost potencije po bazi dvavrijednost potencije po bazi dva

(-1)s Mx2Exp

45

Standard IEEE organizacijeStandard IEEE organizacijeuspostavljen 1985 kao jednoobrazan standard za brojeve s pomičnim uspostavljen 1985 kao jednoobrazan standard za brojeve s pomičnim zarezomzarezom

IEEE Short Real IEEE Short Real IEEE Short Real IEEE Short Real IEEE Short Real IEEE Short Real IEEE Short Real IEEE Short Real –––––––– 32 bita32 bita32 bita32 bita32 bita32 bita32 bita32 bita

IEEE Long Real IEEE Long Real IEEE Long Real IEEE Long Real IEEE Long Real IEEE Long Real IEEE Long Real IEEE Long Real –––––––– 64 bita64 bita64 bita64 bita64 bita64 bita64 bita64 bita

(-1)s Mx2Exp

Page 46: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

IEEE Short Real zapisIEEE Short Real zapis

jednostruka preciznostjednostruka preciznostnajvažniji bit najvažniji bit –– predznakpredznak

1 negativan, 0 pozitivan broj1 negativan, 0 pozitivan broj

8 bitova 8 bitova –– eksponenteksponent

23 bita 23 bita -- mantisamantisa

46

11 1111111111111111 1111111111111111111111111111111111111111111111

002222232330303131

mantisaeksponent+/-

Page 47: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Pretvaranje decimalnih razlomaka u Pretvaranje decimalnih razlomaka u binarnebinarne

Decimalni Decimalni Decimalni Decimalni razlomakrazlomakrazlomakrazlomak

Zbroj razlomakaZbroj razlomakaZbroj razlomakaZbroj razlomakaBinarnoBinarnoBinarnoBinarno2222----11112222----22222222----33332222----4444

1/2 1/2 ,1

1/4 1/4 ,01

3/4 1/2+1/4 ,11

47

3/4 1/2+1/4 ,11

1/8 1/8 ,001

7/8 1/2+1/4+1/8 ,111

3/8 1/4+1/8 ,011

1/16 1/16 ,0001

3/16 1/8+1/16 ,0011

5/16 1/4+1/16 ,0101

Page 48: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Primjeri pretvaranjaPrimjeri pretvaranjaOpažanjaOpažanja

dijeljenje sa 2 pomicanjemdijeljenje sa 2 pomicanjem bitova (bitova (shiftingshifting) ) desnodesno

množenje sa 2 pomicanjem lijevomnoženje sa 2 pomicanjem lijevo

brojevi oblika brojevi oblika 00,,xxxxxxxxxxxx……2 2

manji od 1,manji od 1,00

1/2 + 1/4 + 1/8 + … + 1/21/2 + 1/4 + 1/8 + … + 1/2ii + … + … →→ 11,,00

VrijednostVrijednostVrijednostVrijednostBinarno Binarno Binarno Binarno

predstavljanjepredstavljanjepredstavljanjepredstavljanje

5555 3/4 101,112

2222 7/8 10,1112

63/64 0,1111112

OgraničenjaOgraničenjaizmeñu dva FP broja postoji konačan broj FP brojevaizmeñu dva FP broja postoji konačan broj FP brojeva

48

izmeñu dva FP broja postoji konačan broj FP brojevaizmeñu dva FP broja postoji konačan broj FP brojeva

mogu se točno predstaviti jedino brojeve u obliku mogu se točno predstaviti jedino brojeve u obliku x/2x/2x/2x/2x/2x/2x/2x/2kkkkkkkk

ostali brojevi imaju ponavljanje bitovaostali brojevi imaju ponavljanje bitova

VrijednostVrijednostVrijednostVrijednost Binarno predstavljanjeBinarno predstavljanjeBinarno predstavljanjeBinarno predstavljanje

1/3 0,0101010101[01]…2

1/5 0,001100110011[0011]…2

1/10 0,0001100110011[0011]…2

Page 49: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Primjer: predstavljanje Primjer: predstavljanje 0,2 binarno0,2 binarno

0.2000000000000.2000000000000.2000000000000.200000000000---- 0.125000000000 (2(2(2(2----3333))))==== 0.075000000000---- 0.062500000000 (2(2(2(2----4444))))==== 0.012500000000---- 0.007812500000 (2(2(2(2----7777))))==== 0.004687500000---- 0.003906250000 (2(2(2(2----8888))))==== 0.000781250000 ---- 0.000488281250 (2(2(2(2----11111111))))==== 0.000292968750

Predstavljanje mnogih realnih Predstavljanje mnogih realnih brojeva nije uvijek jednostavno.brojeva nije uvijek jednostavno.

čak i nakon oduzimanja 2čak i nakon oduzimanja 2--2323 postoji postoji ostatakostatak

postoji mala pogreškapostoji mala pogreška

49

==== 0.000292968750---- 0.000244140625 (2(2(2(2----12121212))))==== 0.000048828125---- 0.000030517578 (2(2(2(2----15151515))))==== 0.000018310547---- 0.000015258789 (2(2(2(2----16161616))))==== 0.000003051758---- 0.000001907349 (2(2(2(2----19191919))))==== 0.000001144409---- 0.000000953674 (2(2(2(2----20202020))))==== 0.000000190735---- 0.000000119209 (2(2(2(2----23232323))))==== 0.000000071526

Mantisa: ,00110011001100110011001Mantisa: ,00110011001100110011001Mantisa: ,00110011001100110011001Mantisa: ,00110011001100110011001

Page 50: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Normalizacija mantiseNormalizacija mantisePotrebno normalizirati mantisu Potrebno normalizirati mantisu (mantissa, significand)(mantissa, significand)

pomicanje decimalnog zareza tako da ispred bude samo jedna znamenka pomicanje decimalnog zareza tako da ispred bude samo jedna znamenka različita od nule.različita od nule.

maksimalno povećana količina brojeva koji mogu biti predstavljenimaksimalno povećana količina brojeva koji mogu biti predstavljeni

eksponent izražava broj pozicija pomicanja decimalne točke lijevo eksponent izražava broj pozicija pomicanja decimalne točke lijevo (negativan eksponent) ili pomicanja desno (pozitivan eksponent) (negativan eksponent) ili pomicanja desno (pozitivan eksponent)

Za binarne vrijednosti znamenka 1 se uvijek pojavljuje ispred Za binarne vrijednosti znamenka 1 se uvijek pojavljuje ispred decimalnog zarezadecimalnog zareza

M = 1,xxx.x2

50

decimalnog zarezadecimalnog zareza

1 se izostavlja, pohranjuje1 se izostavlja, pohranjuje f = xxx...xf = xxx...xf = xxx...xf = xxx...xf = xxx...xf = xxx...xf = xxx...xf = xxx...x22222222

minimum kada je 000...0 minimum kada je 000...0 (M=1,0)(M=1,0)

maksimum kada je 111...1maksimum kada je 111...1 (M(M≅≅2,0)2,0)

Binarna Binarna Binarna Binarna vrijednostvrijednostvrijednostvrijednost

Normalizirana Normalizirana Normalizirana Normalizirana vrijednostvrijednostvrijednostvrijednost

ExpExpExpExp

1101,101 1,101101 3

,00101 1,01 -3

1,0001 1,0001 0

10000011,0 1,0000011 7

(-1)s 1,f x 2Exp

Page 51: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Eksponent u IEEE Short Real zapisuEksponent u IEEE Short Real zapisuEksponent u IEEE Short Real zapisu:Eksponent u IEEE Short Real zapisu:

8 bitova8 bitova

općenitoopćenito BiasBias = 2= 2ee--11 -- 1, 1, gdje je gdje je eeeeeeee broj bitova broj bitova eksponentaeksponenta

za IEEE Short => Bias = za IEEE Short => Bias = 2288--11 –– 11 = 127= 127

EExpxp: : --121277…12…128, 8, EE: : 00…25…2555

Primjer: 1,011101 x 2Primjer: 1,011101 x 233

E = 3 + 127 => 130 = 10000010E = 3 + 127 => 130 = 10000010

Exp = E - Bias

Bias = 2e-1-1

51

E = 3 + 127 => 130 = 10000010E = 3 + 127 => 130 = 1000001022

Eksponent (Exp)Eksponent (Exp)Eksponent (Exp)Eksponent (Exp) Namješteni ENamješteni ENamješteni ENamješteni E Binarni EBinarni EBinarni EBinarni E

+4 131 10000011

0 127 01111111

-8 119 01110111

+128 255 11111111

-127 0 00000000

-1 126 01111110

Page 52: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Primjer IEEE Short Real zapisaPrimjer IEEE Short Real zapisaVrijednostVrijednost

1521315213152131521315213152131521315213,,,,,,,,000000001010101010101010

15213152131010 = 11101101101101= 1110110110110122 = 1= 1,,1101101101101110110110110122 X 2X 21313

PredznakPredznakssssssss = 0= 0

MantisaMantisaMMMMMMMM = = 11111111,,,,,,,,1101101101101110110110110111011011011011101101101101110110110110111011011011011101101101101110110110110122222222

(-1)s 1,f x 2E - Bias

52

MMMMMMMM = = 11111111,,,,,,,,1101101101101110110110110111011011011011101101101101110110110110111011011011011101101101101110110110110122222222

ffffffff = = 110110110110111011011011011101101101101110110110110111011011011011101101101101110110110110111011011011010000000000000000000000000000000000000000000000000000000000000000000000000000000022

EEksksponentponentEEEEEEEExpxpxpxpxpxpxpxp = = 1313

BiasBiasBiasBiasBiasBiasBiasBias = = 127127

EEEEEEEE = = 140 140 == 100011001000110010001100100011001000110010001100100011001000110022222222

00 1000110010001100 1101101101101000000000011011011011010000000000

002222232330303131

Page 53: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Specijalne vrijednosti u Specijalne vrijednosti u IEEE Short Real zapisuIEEE Short Real zapisu

UvjetUvjet

EEEEEEEE22222222 = 111…1= 111…1= 111…1= 111…1= 111…1= 111…1= 111…1= 111…1, E, E, E, E, E, E, E, E1010101010101010 = 255, Exp =128= 255, Exp =128= 255, Exp =128= 255, Exp =128= 255, Exp =128= 255, Exp =128= 255, Exp =128= 255, Exp =128

SlučajeviSlučajevi

EEEEEEEE = 111…1, = 111…1, = 111…1, = 111…1, = 111…1, = 111…1, = 111…1, = 111…1, ffffffff = 000…0= 000…0= 000…0= 000…0= 000…0= 000…0= 000…0= 000…0

predstavlja vrijednost predstavlja vrijednost ∞∞ (beskonačno(beskonačno))

operacije koje rezultiraju prekoračenjem operacije koje rezultiraju prekoračenjem ((overflowoverflow))

00 1111111111111111 ……

002222232330303131

53

operacije koje rezultiraju prekoračenjem operacije koje rezultiraju prekoračenjem ((overflowoverflow))

pojavljuje se kad postoji egzaktan rezultat FP operacije sa pojavljuje se kad postoji egzaktan rezultat FP operacije sa vrijednošću koja je veća od najvećeg FP brojavrijednošću koja je veća od najvećeg FP broja

pozitivna i negativna beskonačnostpozitivna i negativna beskonačnost

1/0,0 = 1/0,0 = --1/1/--0,0 = 1* 0,0 = 1* ∞∞ =+ =+ ∞∞ 1/1/--0,0=0,0=-- ∞∞

EEEEEEEE = 111…1, = 111…1, = 111…1, = 111…1, = 111…1, = 111…1, = 111…1, = 111…1, ffffffff ≠≠≠≠≠≠≠≠ 000…0000…0000…0000…0000…0000…0000…0000…0

nije broj (nije broj (NotNot--aa--NumberNumber –– NaNNaNNaNNaNNaNNaNNaNNaN))

predstavlja slučaj kada numerička vrijednost ne može biti odreñenapredstavlja slučaj kada numerička vrijednost ne može biti odreñena

primjer:primjer: sqrt(sqrt(––1),1), ∞∞ -- ∞∞, 0* , 0* ∞∞ , 0/0, 0/0

Page 54: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Najveći broj u IEEE Short Real zapisuNajveći broj u IEEE Short Real zapisu

Najveći mogući pozitivan broj je:Najveći mogući pozitivan broj je:E = 254, Exp = 127E = 254, Exp = 127

M = 1,111...1 M = 1,111...1 = 2,0= 2,0--εε ,, εε –– veoma mala vrijednost (veoma mala vrijednost (22222222--------2323232323232323))

1,111...12 x 2127 = (2 - εε)10 x 2127

54

00 1111111011111110 1111111111111111111111111111111111111111111111

002222232330303131

3,4....10 x 1038

Page 55: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Najmanji broj u IEEE Short Real zapisuNajmanji broj u IEEE Short Real zapisu

Najmanji mogući pozitivan broj je:Najmanji mogući pozitivan broj je:E = 1, Exp = E = 1, Exp = --126126

zašto ne za E = 0 ?zašto ne za E = 0 ?

M = 1,000...0M = 1,000...0

1,000...02 x 2-126

55

1,000...02 x 2-126

00 0000000100000001 0000000000000000000000000000000000000000000000

002222232330303131

1,18...10 x 10-38

Page 56: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

“Rupa” u IEEE Short Real zapisu“Rupa” u IEEE Short Real zapisu

+2+2--126126--22--126126 +2+2128128--22128128

negativnonegativnoprekoračenjeprekoračenje

pozitivnopozitivnoprekoračenjeprekoračenje

“underflow”“underflow” pozitivnipozitivniFP brojeviFP brojevi

negativninegativniFP brojeviFP brojevi

????????-∞∞ ∞∞

56

ProblemProblem“rupa” izmeñu “rupa” izmeñu +/+/--22--126126

nema nulenema nule

RješenjeRješenje

za |n|<2za |n|<2--126126 denormalizacija vrijednostidenormalizacija vrijednostinema više skrivenog bitanema više skrivenog bita

Page 57: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

DenormalizacijaDenormalizacijaUvjetUvjet

EEEEEEEE22222222 = = = = = = = = 000000000000000000000000……………………0, E0, E0, E0, E0, E0, E0, E0, E1010101010101010 = 1, Exp =1= 1, Exp =1= 1, Exp =1= 1, Exp =1= 1, Exp =1= 1, Exp =1= 1, Exp =1= 1, Exp =1-------- Bias= Bias= Bias= Bias= Bias= Bias= Bias= Bias= -------- 126126126126126126126126

SlučajeviSlučajevi

EEEEEEEE = = = = = = = = 000000000000000000000000……………………00000000, , , , , , , , ffffffff = 000…0= 000…0= 000…0= 000…0= 000…0= 000…0= 000…0= 000…0

predstavlja vrijednost 0 !predstavlja vrijednost 0 !predstavlja vrijednost 0 !predstavlja vrijednost 0 !predstavlja vrijednost 0 !predstavlja vrijednost 0 !predstavlja vrijednost 0 !predstavlja vrijednost 0 !

dvije nule (pozitivna i negativna)dvije nule (pozitivna i negativna)

EEEEEEEE = = = = = = = = 000000000000000000000000……………………00000000, , , , , , , , ffffffff ≠≠≠≠≠≠≠≠ 000…0000…0000…0000…0000…0000…0000…0000…0

(-1)s 0,f x 21 - Bias

0 !

57

EEEEEEEE = = = = = = = = 000000000000000000000000……………………00000000, , , , , , , , ffffffff 000…0000…0000…0000…0000…0000…0000…0000…0

denormalizirani brojevidenormalizirani brojevinema skrivenog bitanema skrivenog bita

vrijednost manja od najmanjeg normaliziranog brojavrijednost manja od najmanjeg normaliziranog broja

(-1)s 0,f x 21 - Bias

00 0000000000000000 0000000000000000000000100000000000000000000001

002222232330303131

0,000...12 x 2-126 = 2-23 x 2-126

Page 58: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

IEEE Long Real zapisIEEE Long Real zapis

dvostruka preciznostdvostruka preciznostnajvažniji bit najvažniji bit –– predznakpredznak

1 negativan, 0 pozitivan broj1 negativan, 0 pozitivan broj

11 bitova 11 bitova –– eksponenteksponent

Bias = Bias = 221111--11 –– 11 = 1023= 1023

52 bita 52 bita –– mantisamantisa

najveći broj 2najveći broj 210241024

(-1)s 1,f x 2Exp-1023

58

najveći broj 2najveći broj 210241024

najmanji normalizirani broj 2najmanji normalizirani broj 2--10231023

11 1....1111....111 111 ........11111111111111 ........11111111111

005151525262626363

mantisaeksponent+/-

Page 59: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Tip SingleTip SinglePohranjuje brojeve s pomičnim zarezom jednostruke točnostiPohranjuje brojeve s pomičnim zarezom jednostruke točnosti

koristi koristi IEEE Short RealIEEE Short Real zapiszapisod 1,401298Eod 1,401298E--45 do 3,4028235E+38 za pozitivne vrijednosti45 do 3,4028235E+38 za pozitivne vrijednostiod od --3,4028235E+38 do 3,4028235E+38 do --1,401298E1,401298E--45 za negativne vrijednosti45 za negativne vrijednostiSingle.EpsilonSingle.Epsilon , , Single.MaxValueSingle.MaxValue , , Single.MinValueSingle.MinValue , , SingleSingle..NaNNaN , , Single.NegativeInfinitySingle.NegativeInfinity

Single.IsInfinitySingle.IsInfinity , , Single.IsNegativeInfinitySingle.IsNegativeInfinity , , Single.IsPositiveInfinitySingle.IsPositiveInfinity

Memorijsko zauzeće: 4 bajta (32 bita)Memorijsko zauzeće: 4 bajta (32 bita)

59

Memorijsko zauzeće: 4 bajta (32 bita)Memorijsko zauzeće: 4 bajta (32 bita)isto memorijsko zauzeće kao isto memorijsko zauzeće kao IntegerInteger! !

pohranjuje vrijednost veću nego pohranjuje vrijednost veću nego LongLong!!

System.SingleSystem.Single u .NET Frameworku .NET Framework--u.u.Nivo preciznosti: 6 znamenki nakon decimalnog zarezaNivo preciznosti: 6 znamenki nakon decimalnog zarezaMoguć gubitak preciznosti kod veoma velikih ili veoma malih Moguć gubitak preciznosti kod veoma velikih ili veoma malih brojevabrojeva

primjer: 12345678987 => 1,234567E10primjer: 12345678987 => 1,234567E10

Page 60: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Tip DoubleTip Double

Pohranjuje brojeve s pomičnim zarezom dvostruke točnostiPohranjuje brojeve s pomičnim zarezom dvostruke točnostikoristi koristi IEEE Long RealIEEE Long Real zapiszapis

od od --1,79769313486231570E+308 do 1,79769313486231570E+308 do --4,94065645841246544E4,94065645841246544E--324 za 324 za negativne vrijednostinegativne vrijednosti

od 4,94065645841246544Eod 4,94065645841246544E--324 do 1,79769313486231570E+308 za 324 do 1,79769313486231570E+308 za pozitivne vrijednostipozitivne vrijednosti

Double.EpsilonDouble.Epsilon , , Double.MaxValueDouble.MaxValue , , Double.MinValueDouble.MinValue , , DDouble.NaNouble.NaN , , Double.NegativeInfinityDouble.NegativeInfinity

60

DDouble.NaNouble.NaN , , Double.NegativeInfinityDouble.NegativeInfinity

Double.IsInfinityDouble.IsInfinity ,, Double.IsNegativeInfinityDouble.IsNegativeInfinity , , Double.IsPositiveInfinityDouble.IsPositiveInfinity

Memorijsko zauzeće: 8 bajtova (64 bita)Memorijsko zauzeće: 8 bajtova (64 bita)

System.DoubleSystem.Double u .NET Frameworku .NET Framework--u.u.

Nivo preciznosti: 12 znamenki nakon decimalnog zarezaNivo preciznosti: 12 znamenki nakon decimalnog zareza

Pogodniji za matematičke izračunePogodniji za matematičke izračune

Page 61: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Primjeri: Gubitak preciznostiPrimjeri: Gubitak preciznostiSub Main()

Dim x As IntegerDim y As Single = 30000001'1110010011100001110000001'1.11001001110000111000000(1) x 224+127

' .11001001110000111000000 x 2151

x = yConsole.WriteLine(x) 'ispisuje 30000000

End Sub

61

End Sub

Sub Main()Dim x As IntegerDim y As Single = 30000003x = y'1110010011100001110000011'1.11001001110000111000001(1) x 224+127

' .11001001110000111000010 x 224+127

Console.WriteLine(x) 'ispisuje 30000004End Sub

Page 62: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Zadaća 1: Gubitak preciznostiZadaća 1: Gubitak preciznosti

Sub Main()

Što ispisuje sljedeći program ?Što ispisuje sljedeći program ?ispisati put do rezultataispisati put do rezultata

62

Sub Main()Dim x As IntegerDim y As Single = 300000023x = yConsole.WriteLine(x) 'ispisuje ?

End Sub

Page 63: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Tip DecimalTip Decimal12 bajtova za pohranu cjelobrojne vrijednosti12 bajtova za pohranu cjelobrojne vrijednosti

4 bajta za faktor skale i predznak4 bajta za faktor skale i predznak

Faktor skaleFaktor skalebroj znamenki desno od decimalnog zarezabroj znamenki desno od decimalnog zareza

fs = od 0 do 28fs = od 0 do 28

povećanjem decimalnih mjesta smanjuje se maksimalna vrijednostpovećanjem decimalnih mjesta smanjuje se maksimalna vrijednost

Isti opsezi negativnih i pozitivnih brojevaIsti opsezi negativnih i pozitivnih brojeva

63

Isti opsezi negativnih i pozitivnih brojevaIsti opsezi negativnih i pozitivnih brojevaDecimal.MaxValueDecimal.MaxValue ,, Decimal.MinValueDecimal.MinValue

koristi se i za novčarski podatakkoristi se i za novčarski podatak

System.DecimalSystem.Decimal u .NET Frameworku .NET Framework--uu

najveća vrijednost:za fs = 0 79228162514264337593543950335 (= 296 -1)

za fs = 4 7922816251426433759354395,0335

za fs = 28 7,9228162514264337593543950335

najmanja vrijednost

0,0000000000000000000000000001 (1E-28)

Page 64: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

BooleanBoolean

Predstavlja samo dvije vrijednosti, True/FalsePredstavlja samo dvije vrijednosti, True/False

Memorijsko zauzeće 32 bitaMemorijsko zauzeće 32 bita

System.BooleanSystem.Boolean u .NET Frameworku .NET Framework--uu

Na primjer, naredbaNa primjer, naredba

64

deklarira varijablu deklarira varijablu truth kao kao BooleanBoolean tip te joj pridružuje tip te joj pridružuje vrijednost vrijednost TrueTrue ..

Dim thruth As Boolean = True

Page 65: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

DateDate

Pohranjuje vrijednosti datuma i vremenaPohranjuje vrijednosti datuma i vremena

IEEE Long RealIEEE Long Real zapiszapisOd 00:00:00, Siječanj 1, 0001 do 23:59:59, Prosinac 31, 9999 Od 00:00:00, Siječanj 1, 0001 do 23:59:59, Prosinac 31, 9999 prema Gregorijanskom kalendaruprema Gregorijanskom kalendaruDate.IsLeapYear Date.IsLeapYear , , Date.MaxValueDate.MaxValue , , Date.MinValueDate.MinValue , , Date.NowDate.Now

System.DateTimeSystem.DateTime u .NET Frameworku .NET Framework--uu

65

System.DateTimeSystem.DateTime u .NET Frameworku .NET Framework--uu

Page 66: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

CharChar

Predstavlja 16Predstavlja 16--bitni Unicode znakbitni Unicode znak

Znak mora biti zatvoren u jednostruke navodnike (‘ ’)Znak mora biti zatvoren u jednostruke navodnike (‘ ’)

Char.IsDigitChar.IsDigit , , Char.IsLetterChar.IsLetter ,, Char.IsNumberChar.IsNumber , , Char. Char.

ToLowerToLower , , Char.ToUpperChar.ToUpper , , Char.MaxValueChar.MaxValue , , Char.MinValueChar.MinValue ......System.CharSystem.Char u .NET Frameworku .NET Framework--uu

Na primjer, naredbaNa primjer, naredba

66

Na primjer, naredbaNa primjer, naredba

deklarira varijablu deklarira varijablu letter kao kao CharChar tip te joj pridružuje znak ‘A’tip te joj pridružuje znak ‘A’

Dim letter As Char = ‘A’

Page 67: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Referencni tipoviReferencni tipoviVarijable referencnih tipova sadrže upućivanja Varijable referencnih tipova sadrže upućivanja (references)(references) na stvarne podatke (objekte).na stvarne podatke (objekte).

nazivaju se varijablama upućivanja (reference variable)nazivaju se varijablama upućivanja (reference variable)

sadrže “hvataljku” na objektsadrže “hvataljku” na objekt

moguće je da operacija nad jednom varijablom referencnog tipa utječe na moguće je da operacija nad jednom varijablom referencnog tipa utječe na podatak na koji upućuje neka druga varijabla referencnog tipapodatak na koji upućuje neka druga varijabla referencnog tipa

može biti može biti NothingNothing

Upućivanje se pohranjuje na stogu a podatak na Upućivanje se pohranjuje na stogu a podatak na

67

Upućivanje se pohranjuje na stogu a podatak na Upućivanje se pohranjuje na stogu a podatak na upravljanoj gomili (hrpi)upravljanoj gomili (hrpi) (managed heap)(managed heap)

deklariranje varijable alocira prostor na stogu za pohranu upućivanjedeklariranje varijable alocira prostor na stogu za pohranu upućivanje

dodatni prostor se alocira na upravljanoj gomili za pohranu podatakadodatni prostor se alocira na upravljanoj gomili za pohranu podataka

dodatni prostor se alocira navođenjem dodatni prostor se alocira navođenjem NewNew (izuzetak tip (izuzetak tip StringString))

podacima se pristupa preko upućivanjapodacima se pristupa preko upućivanja

ssssssss "Hello world""Hello world"Dim s As String

s = “Hello World”stogstogstogstogstogstogstogstog upravljana gomilaupravljana gomilaupravljana gomilaupravljana gomilaupravljana gomilaupravljana gomilaupravljana gomilaupravljana gomila

0x1abcdef

Page 68: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

StringString

Nije primitivni tip podatka; to je referencni tip.Nije primitivni tip podatka; to je referencni tip.

Promjenljive veličine!Promjenljive veličine!širi se pridruživanjem novih podatakaširi se pridruživanjem novih podataka

Znakovi moraju biti zatvoreni u duple navodnike (“”)Znakovi moraju biti zatvoreni u duple navodnike (“”)

68

Page 69: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

ObjectObject

Može pohraniti sve tipove podataka podržane od Može pohraniti sve tipove podataka podržane od VB.NETVB.NET--a.a.

Memorijsko zauzeće: 16 bajtovaMemorijsko zauzeće: 16 bajtova

69

Page 70: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Podrazumijevana inicijalizacija Podrazumijevana inicijalizacija varijablivarijabli

Tip Tip Tip Tip varijablevarijablevarijablevarijable

Podrazumijevana Podrazumijevana Podrazumijevana Podrazumijevana vrijednostvrijednostvrijednostvrijednost

Byte 0

Short 0

Integer 0

Long 0

70

Single 0,0

Double 0,0

Decimal 0,0

Char

Date 1.1.0001 0:00:00

Boolean False

Svi referentni

tipoviNothing

Page 71: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Memorijsko predstavljanje Memorijsko predstavljanje vrijednosnih i referencnih tipovavrijednosnih i referencnih tipova

Različito predstavljanje u memorijiRazličito predstavljanje u memorijivarijabla vrijednosnog tipavarijabla vrijednosnog tipa

alocirana memorija na stogualocirana memorija na stogu

poznata veličina potrebnog memorijskog prostorapoznata veličina potrebnog memorijskog prostora

pohranjuje stvarni podatakpohranjuje stvarni podatak

71

pohranjuje stvarni podatakpohranjuje stvarni podatak

varijabla referencnog tipavarijabla referencnog tipaalocirana memorija na stogu za pohranu upućivanjaalocirana memorija na stogu za pohranu upućivanja

memorijska lokacija upravljane gomile na kojoj se nalaze podacimemorijska lokacija upravljane gomile na kojoj se nalaze podaci

uvijek 4 bajtauvijek 4 bajta

alocirana memorija na “upravljanoj gomili” za pohranu podatkaalocirana memorija na “upravljanoj gomili” za pohranu podatka

promjenljiva veličina memorijskog prostorapromjenljiva veličina memorijskog prostora

Page 72: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Opseg varijabli Opseg varijabli (1)(1)

Opseg Opseg (scope)(scope) je područje vidljivosti varijable.je područje vidljivosti varijable.dio koda koji može pristupiti varijablidio koda koji može pristupiti varijabli

Faktori koji utječu na opseg varijableFaktori koji utječu na opseg varijablemjesto (spremnik) gdje je varijabla deklariranamjesto (spremnik) gdje je varijabla deklarirana

prostor imenovanja, modul, klasa, procedura, struktura, blok prostor imenovanja, modul, klasa, procedura, struktura, blok

pristupni nivo spremnika varijablepristupni nivo spremnika varijable

72

pristupni nivo spremnika varijablepristupni nivo spremnika varijable

PrivatePrivate, , PublicPublic, , FriendFriend

pristupni nivo varijablepristupni nivo varijable

PrivatePrivate, , PublicPublic,, FriendFriend

Mogući opsezi varijabli su:Mogući opsezi varijabli su:opseg blokaopseg bloka

opseg procedureopseg procedure

opseg modula/klaseopseg modula/klase

opseg prostora imenovanjaopseg prostora imenovanja

Page 73: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Opseg varijabli Opseg varijabli (2)(2)

Public Module ili ClassPublic A As Integer

Friend Module ili ClassFriend B As Date

Varijabla A je dostupna drugim

projektima unutar rješenja (solution)

Varijabla B je dostupna unutar

projekta

73

Private Module ili ClassPrivate c As String

Procedure ili Block

Dim d As Integer

projekta

Varijabla c je dostupna unutar

modula

Varijabla d je

dostupna jedino

unutar procedure ili

bloka

Page 74: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Trajanje varijableTrajanje varijable

Trajanje ili životni vijek varijable je vrijeme za Trajanje ili životni vijek varijable je vrijeme za koje ona postoji u memorijikoje ona postoji u memoriji

raspoloživaraspoloživa

troši memorijske resursetroši memorijske resurse

neke varijable postoje veoma kratkoneke varijable postoje veoma kratko

druge traju cijelo vrijeme izvoñenja aplikacije druge traju cijelo vrijeme izvoñenja aplikacije

74

Page 75: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Lokalne varijableLokalne varijable

Lokalne varijable su:Lokalne varijable su:varijable koje su definirane unutar procedura i varijable koje su definirane unutar procedura i postupakapostupaka

nazivaju se i automatskim, privremenim ili stack varijablamanazivaju se i automatskim, privremenim ili stack varijablama

varijable koje se stvaraju kada se procedura izvodi i varijable koje se stvaraju kada se procedura izvodi i uništavaju na izlasku iz procedureuništavaju na izlasku iz procedure

75

uništavaju na izlasku iz procedureuništavaju na izlasku iz procedure

Page 76: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Kako deklarirati lokalnu varijablu?Kako deklarirati lokalnu varijablu?

MjestoMjestoMjestoMjestodeklariranjadeklariranja

u bloku

Ključna riječKljučna riječ

Dim

PristupniPristupniPristupniPristupnimodifimodifikatorkator

-

OpsegOpseg

nivo bloka

u proceduri Dim - nivo procredure

Primjer deklariranja lokalne varijable: Primjer deklariranja lokalne varijable:

76

If x = 10 ThenDim blockScope As IntegerblockScope = x + 1

End IfConsole.WriteLine(blockScope)

Sub ProcedureScope()Dim x As Integerx = x + 1Console.WriteLine(x)

End Sub

Primjer deklariranja lokalne varijable: Primjer deklariranja lokalne varijable: nivo procedurenivo procedure

varijabla traje do varijabla traje do kraja kraja izvoñenja procedureizvoñenja procedure

nivo blokanivo blokatrajanje kao i za varijabletrajanje kao i za varijablena nivou procedurena nivou procedure

��

��

Page 77: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Produženje trajanja lokalne varijableProduženje trajanja lokalne varijable

Sub Main()StaticScope() 'pozivanje procedure

Moguće produžiti trajanje lokalne varijable Moguće produžiti trajanje lokalne varijable navoñenjem ključne riječi navoñenjem ključne riječi StaticStatic

opseg ostaje istiopseg ostaje isti

77

StaticScope() 'pozivanje procedureStaticScope()'sljedeće proizvodi grešku

Console.WriteLine(x)End Sub

Sub StaticScope()Static x As Integer 'opseg procedurex = x + 1Console.WriteLine(x) 'ispisuje 1, 2

End Sub

��

��

Page 78: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Kako deklarirati varijablu modulaKako deklarirati varijablu modula

Pristupni modifikatorPristupni modifikatorPristupni modifikatorPristupni modifikator

Private

OpsegOpsegOpsegOpseg

Modula

Friend Projekta

Public Rješenja (Solution)

78

Nivo modula se odnosi i na klase i strukture.Nivo modula se odnosi i na klase i strukture.

Opseg modula:Opseg modula:varijabla deklarirana sa varijabla deklarirana sa PrivatePrivate u području definicije modula, klase ili u području definicije modula, klase ili strukturestrukture

izvan bilo koje procedure ili blokaizvan bilo koje procedure ili bloka

dostupna svim procedurama moduladostupna svim procedurama modula

nije dostupna procedurama izvan modulanije dostupna procedurama izvan modula

Trajanje varijable i nakon kraja izvoñenja procedureTrajanje varijable i nakon kraja izvoñenja procedure

Page 79: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Opseg modulaOpseg modula

Module ModuleScopePrivate x As Integer 'opseg modulaPublic Sub Main()

XIncrement() 'poziv procedureXIncrement()XDecrement() XDisplay()

End Sub

79

Public Sub XIncrement()x = x + 1

End SubPublic Sub XDecrement()

x = x – 1End SubPublic Sub XDisplay()

Console.WriteLine(x) 'ispisuje 1End Sub

End Module

Page 80: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Zasjenjivanje varijable modulaZasjenjivanje varijable modulaVarijabla opsega modula će biti skrivena ako ima Varijabla opsega modula će biti skrivena ako ima isti identifikator kao lokalna varijabla.isti identifikator kao lokalna varijabla.

Module BlockScopePrivate x As Integer = 0 'opseg modulaPrivate Sub ProcedureScope()

Dim y As Integer 'opseg procedureConsole.WriteLine(x) 'ispisuje 0

80

Console.WriteLine(x) 'ispisuje 0For y = 1 To 3

'sljedeći x zasjenjuje x opsega modula

Dim x As Integer 'varijabla opsega blokax = x + 1Console.WriteLine(x) 'ispisuje 1, 2 i 3

Next'ovo sad radiConsole.WriteLine(x) 'ispisuje 0

End SubEnd Module

Page 81: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Opseg prostora imenovanja Opseg prostora imenovanja (1)(1)

Deklariranjem varijable na nivoa modula sa Deklariranjem varijable na nivoa modula sa PublicPublic ili ili FriendFriend ona postaje dostupna svim procedurama ona postaje dostupna svim procedurama unutar prostora imenovanja kojem modul pripada. unutar prostora imenovanja kojem modul pripada.

FriendFriend –– varijabla dostupna unutar projekta, ne i izvan varijabla dostupna unutar projekta, ne i izvan projektaprojekta

PublicPublic –– varijabla dostupna unutar projekta i iz drugih varijabla dostupna unutar projekta i iz drugih projekata koji imaju upućivanje na projekt.projekata koji imaju upućivanje na projekt.

81

Varijable opsega prostora imenovanja se nazivaju Varijable opsega prostora imenovanja se nazivaju javnim ili globalnim.javnim ili globalnim.

Page 82: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Opseg prostora imenovanja Opseg prostora imenovanja (2)(2)

Module NamespaceScopePublic x As Integer 'opseg prostora imenovanjaPublic Sub XIncrement()

x = x + 1End SubPublic Sub XDecrement()

x = x – 1End Sub

82

End SubEnd ModuleModule StartModule

Public Sub Main()XIncrement()XIncrement()XDecrement()Console.WriteLine(x)

End SubEnd Module

Page 83: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Pregled opsega varijabliPregled opsega varijabliDimDim unutar procedure za deklariranje lokalnih varijabli unutar procedure za deklariranje lokalnih varijabli koje su vidljive jedino unutar procedure.koje su vidljive jedino unutar procedure.

DimDim unutar bloka za deklariranje lokalnih varijabli koje unutar bloka za deklariranje lokalnih varijabli koje su vidljive jedino unutar bloka.su vidljive jedino unutar bloka.

DimDim ili ili PrivatePrivate izvan bloka procedure ali unutar izvan bloka procedure ali unutar modula ili klase, za kreiranje varijabli kojima se može modula ili klase, za kreiranje varijabli kojima se može pristupiti iz bilo kojeg dijela modula ili klase ali ne i iz pristupiti iz bilo kojeg dijela modula ili klase ali ne i iz drugih dijelova projekta.drugih dijelova projekta.

83

drugih dijelova projekta.drugih dijelova projekta.

FriendFriend se koristi unutar modula za kreiranje globalnih se koristi unutar modula za kreiranje globalnih varijabli, koje postoje cijelo vrijeme trajanja programa i varijabli, koje postoje cijelo vrijeme trajanja programa i kojima se može pristupiti iz bilo kojeg dijela projekta.kojima se može pristupiti iz bilo kojeg dijela projekta.

PublicPublic isto kao i isto kao i FriendFriend ali su dostupne i izvan ali su dostupne i izvan projekta, unutar rješenja.projekta, unutar rješenja.

StaticStatic se koristi za deklariranje statičkih varijabli se koristi za deklariranje statičkih varijabli unutar procedure.unutar procedure.

Page 84: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Zadatak: deklariranje varijabliZadatak: deklariranje varijabli

Zamijenite vrijednosti dviju varijabli tipa Zamijenite vrijednosti dviju varijabli tipa IntegerInteger

bez korištenja treće varijable. bez korištenja treće varijable.

Sub Main()

84

Sub Main()Dim x As Integer = 20Dim y As Integer = 30x = x + y '50y = x - y '50-30=20 = xx = x - y '50-20=30 = y

End Sub

Page 85: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Pretvaranje tipova podatakaPretvaranje tipova podataka

Dva tipa pretvorbeDva tipa pretvorbeimplicitna (neizričita) pretvorbaimplicitna (neizričita) pretvorba

proširena pretvorba proširena pretvorba (widening conversion)(widening conversion)

iz užeg u širi tip iz užeg u širi tip

bez gubitka podatakabez gubitka podataka

sužena pretvorba sužena pretvorba (narrowing conversion)(narrowing conversion)

85

sužena pretvorba sužena pretvorba (narrowing conversion)(narrowing conversion)

iz šireg u uži tipiz šireg u uži tip

potencijalna mogućnost gubitka podatakapotencijalna mogućnost gubitka podataka

eksplicitna (izričita) pretvorba eksplicitna (izričita) pretvorba korištenjem VB pretvaračkih funkcijakorištenjem VB pretvaračkih funkcija

korištenjem postupaka korištenjem postupaka System.ConvertSystem.Convert klaseklase

Page 86: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Implicitna pretvorba Implicitna pretvorba -- proširenaproširena

Tipovi podataka se automatski pretvarajuTipovi podataka se automatski pretvaraju

Nije potrebna nikakva dodatna sintaksa u koduNije potrebna nikakva dodatna sintaksa u kodu

Primjer: pretvaranjePrimjer: pretvaranje IntegerInteger u u LongLong::

Sub Main()Dim intValue As Integer = 12345Dim longValue As Long = intValue

86

Pretvaranje iz Pretvaranje iz IntegerInteger u u LongLong je proširena pretvorbaje proširena pretvorbauvijek uspješnauvijek uspješna

nikad ne rezultira gubitkom informacijanikad ne rezultira gubitkom informacija

Console.WriteLine("{0} = {1}", intValue, longValue)

Dim longValue As Long = intValue'sljedeće ispisuje 12345 = 12345

Console.WriteLine("{0} = {1}", intValue, longValue)End Sub

Page 87: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Proširena pretvorba Proširena pretvorba -- pregledpregled

Tip Prošireni tipovi

Boolean Object

Byte Short, Integer, Long, Decimal,Single, Double ili Object

Char String ili Object

Date Object

Decimal Single, Double ili Object

87

Decimal Single, Double ili Object

Double Object

Integer Long, Decimal,Single, Double ili Object

Long Decimal,Single, Double ili Object

Object -

Short Integer, Long, Decimal,Single, Double ili Object

Single Double ili Object

String Object

Page 88: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Proširena pretvorba u izrazimaProširena pretvorba u izrazima

U izrazima s mješovitim tipovima podataka svaka U izrazima s mješovitim tipovima podataka svaka vrijednost se pretvara u najširi tip podatka u izrazu. vrijednost se pretvara u najširi tip podatka u izrazu.

Dim longValue As LongDim doubleValue As DoubleConsole.Writeline(longValue + doubleValue)

88

Console.Writeline(longValue + doubleValue)

DoubleDoubleDoubleDouble

Page 89: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Implicitna pretvorba Implicitna pretvorba -- suženasužena

Primjer: pretvaranje Primjer: pretvaranje LongLong u u IntegerInteger::

Console.WriteLine("{0} = {1}", intValue, longValue)

Sub Main()Dim longValue As Long = Integer.MaxValue - 1Dim intValue As Integer = longValue'sljedeće ispisuje 2147483646 = 2147483646

Console.WriteLine("{0} = {1}", intValue, longValue)End Sub

89

Nedostaci:Nedostaci:može dovesti do neočekivanih rezultatamože dovesti do neočekivanih rezultata

prekoračenje tipa podatkaprekoračenje tipa podatka

gubitak decimala (npr. gubitak decimala (npr. SingleSingle uu IntegerInteger))

kod se izvodi sporijekod se izvodi sporije

End Sub

Page 90: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Sužena pretvorba Sužena pretvorba –– nedostacinedostaciPrimjer: pretvaranje Primjer: pretvaranje SingleSingle u u ShortShort::

Sub Main()Dim singleValue As Single = 12.5Dim shortValue As Short = singleValue'sljedeće ispisuje "Razlika = 0,5"

Console.WriteLine("Razlika = {0}", shortValue – singleValue)End Sub

90

Primjer: pretvaranjePrimjer: pretvaranje ShortShort uu ByteByte::

Option StrictOption Strict ne dozvoljava suženu implicitnu ne dozvoljava suženu implicitnu pretvorbu tipova podataka.pretvorbu tipova podataka.

= Console.ReadLine() Sub Main()

Dim shortValue As Short = Console.ReadLine() 'greška za shortValue > 255, <0Dim byteValue As Byte = shortValue

End Sub

Page 91: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Eksplicitna pretvorbaEksplicitna pretvorba

Cilj: eliminacija pogrešaka koje nastaju zbog Cilj: eliminacija pogrešaka koje nastaju zbog sužene pretvorbe.sužene pretvorbe.

Option StrictOption StrictOffOff (podrazumijevano)(podrazumijevano)

u pozadini se izvodi implicitna sužena pretvorbau pozadini se izvodi implicitna sužena pretvorba

moguć gubitak preciznostimoguć gubitak preciznosti

91

moguć gubitak preciznostimoguć gubitak preciznosti

ako su pretvoreni podaci nekompatibilni sa novim tipom podatka, ako su pretvoreni podaci nekompatibilni sa novim tipom podatka, podiže se pogreškapodiže se pogreška

OnOn

ako informacija može biti izgubljena u nekom pridruživanju, ako informacija može biti izgubljena u nekom pridruživanju, programer mora potvrditi pretvorbu programer mora potvrditi pretvorbu

VB pretvaračke funkcijeVB pretvaračke funkcije

pretvarački postupci pretvarački postupci System.ConvertSystem.Convert klaseklase

Page 92: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

VB pretvaračke funkcijeVB pretvaračke funkcijeOmogućuju pretvaranje vrijednosti iz jednog tipa Omogućuju pretvaranje vrijednosti iz jednog tipa podatka u drugi.podatka u drugi.

Integer

123

String

"123"CStrCStr

Double Integer

92Sintaksa:Sintaksa:

Double

45.679894

Integer

46CIntCInt

String

“January 14, 2000"

Date

#1/14/00#CDateCDate

VariableNameVariableNameVariableNameVariableName = = = = FunctionFunctionFunctionFunction((((ExpressionExpressionExpressionExpression))))

Page 93: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Korištenje pretvaračkih funkcijaKorištenje pretvaračkih funkcija

FunkcijaFunkcijaFunkcijaFunkcija Pretvara uPretvara uPretvara uPretvara u

CBool Boolean

CByte Byte

Dim shortValue As Short = Console.ReadLine() 'eksplicitna pretvorbaDim byteValue As Byte =CByte(shortValue)

Pregled funkcija: Pregled funkcija:

93

CChar Char

CDate Date

CDec Decimal

CShort Short

CInt Integer

CLng Long

CObj Object

CSng Single

CDbl Double

CStr String

Page 94: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Klasa ConvertKlasa Convert

Izlaže postupke za pretvaranje tipova podataka. Izlaže postupke za pretvaranje tipova podataka. neovisna o korištenom programskom jezikuneovisna o korištenom programskom jeziku

ekvivalentni pretvaračkim funkcijamaekvivalentni pretvaračkim funkcijama

Dim shortValue As Short = Console.ReadLine() 'eksplicitna pretvorba

94

'eksplicitna pretvorbaDim byteValue As Byte =Convert.ToByte(shortValue)

Page 95: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Pregled postupaka klase ConvertPregled postupaka klase Convert

FunkcijaFunkcijaFunkcijaFunkcija Pretvara uPretvara uPretvara uPretvara u

ToBoolean Boolean

ToByte Byte

ToChar Char

ToDateTime Date

95

ToDecimal Decimal

ToSingle Single

ToDouble Double

ToInt16 Short

ToInt32 Integer

ToInt64 Long

ToString String

Page 96: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

KonstanteKonstante

Imenovane vrijednosti unutar programa.Imenovane vrijednosti unutar programa.

Tri tipa:Tri tipa:literalneliteralne

simboličke (symbolic)simboličke (symbolic)

nabrajanja (enumeration) nabrajanja (enumeration) –– poglavlje 5poglavlje 5

96

Page 97: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Literalne konstanteLiteralne konstante

Predstavljaju vrijednosti u programu.Predstavljaju vrijednosti u programu.

Imaju tip podatka.Imaju tip podatka.

Podjela:Podjela:numeričke konstantenumeričke konstante

tekstualne konstantetekstualne konstante

97

znakovne konstanteznakovne konstante

konstante datuma i vremenakonstante datuma i vremena

Boolean konstanteBoolean konstante

Page 98: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Numeričke konstanteNumeričke konstante

izvan opsega tipa izvan opsega tipa IntegerInteger => tip => tip LongLong

X = Y * 20

IntegerIntegerIntegerIntegerIntegerIntegerIntegerInteger

98

X = Y * 20

X = Y * 3.14

DoubleDoubleDoubleDoubleDoubleDoubleDoubleDouble

Page 99: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Tekstualne i znakovne konstanteTekstualne i znakovne konstante

Console.WriteLine (“Hello !”)

StringStringStringStringStringStringStringString

99

Dim charConstant As Char

charConstant = “A”c

CharCharCharCharCharCharCharChar

Page 100: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Konstante datuma i vremenaKonstante datuma i vremena

Dim dateConstant As DatedateConstant = #04/27/1970 6:00:00 PM#

100

DateDateDateDateDateDateDateDate

Page 101: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Pregled literalnih konstantiPregled literalnih konstanti

Tip podatka Konstanta PrimjerBoolean True, False Dim flag As Boolean = True

Char C Dim charValue As Char = “B”c

Date # # dateValue = #04/27/1970#

Decimal D Dim decimalValue As Decimal = 3.14D

Double RDim doubleValue As Double = 3.14

101

Double RDim doubleValue As Double = 3.14R

Integer IDim integerValue As Integer = 314

Dim integerValue As Integer = 314I

Long L Dim longValue As Long = 314L

Short S Dim shortValue As Short = 314S

Single F Dim singleValue As Single = 3.14F

String “ ” Dim stringValue As String = “Hello”

Page 102: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Simboličke konstanteSimboličke konstanteImenovana konstantna vrijednost Imenovana konstantna vrijednost

If rt < 21 Or rt > 27 Then _Console.WriteLine("Upalite klima ureñaj!")

Module SymbolicConstantPublic Const MinRoomTemperature = 21

102

Public Const MinRoomTemperature = 21Public Const MaxRoomTemperature = 27Sub Main()Dim rt As IntegerIf rt < MinRoomTemperature Or _

rt > MaxRoomTemperature Then _Console.WriteLine("Upalite klima ureñaj!")

End SubEnd Module

Page 103: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

OperatoriOperatoriSimbol koji označava operaciju koje se izvode nad jednim Simbol koji označava operaciju koje se izvode nad jednim ili izmeñu dva operanda. ili izmeñu dva operanda.

aritmetička operacija aritmetička operacija

operacija poredbeoperacija poredbe

operacija ulančavanjaoperacija ulančavanja

logička operacija logička operacija

Operatori koji uzimaju jedan operand se nazivaju Operatori koji uzimaju jedan operand se nazivaju unarnim unarnim operatorima operatorima ((unary operatorsunary operators). ).

103

Operatori koji uzimaju jedan operand se nazivaju Operatori koji uzimaju jedan operand se nazivaju unarnim unarnim operatorima operatorima ((unary operatorsunary operators). ).

operator ispred operanda (npr. operator ispred operanda (npr. --2)2)

Operatori koji uzimaju dva operanda se nazivaju Operatori koji uzimaju dva operanda se nazivaju binarnim binarnim operatorimaoperatorima ((binary operatorsbinary operators). ).

operator smješten izmeñu dva operanda (npr. 6 + 8)operator smješten izmeñu dva operanda (npr. 6 + 8)

Zajedno, operator i njegovi operandi čine izraz. Zajedno, operator i njegovi operandi čine izraz. tip rezultata izraza zavisi od operatora kao i od tipa podatka oba tip rezultata izraza zavisi od operatora kao i od tipa podatka oba operanda. operanda.

Svi operatori nemaju isti prioritet.Svi operatori nemaju isti prioritet.

Page 104: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

Prioritet operatoraPrioritet operatoraOperator Tip Značenje

^ Aritmetički eksponenciranje

+-

AritmetičkiAritmetički

unarni plusunarni minus

*/

AritmetičkiAritmetički

množenjedijeljenje

\ Aritmetički cjelobrojno dijeljenje

Mod Aritmetički modul

+-

AritmetičkiAritmetički

zbrajanjeoduzimanje

& Povezujući ulančavanje

= Poredbeni relacijski je jednako

104

=

<> Poredbeni relacijski je različito od

< Poredbeni relacijski manje od

<= Poredbeni relacijski manje ili jednako od

> Poredbeni relacijski veće od

>= Poredbeni relacijski veće ili jednako od

Like Poredbeni usporeñivanje predloška

Is Poredbeni usporeñivanje upućivanja

TypeOf Poredbeni usporeñivanje tipova

Not Logički/Bitovni unarna logička negacija

And Logički/Bitovni logičko AND bez kratkospojne procijene

AndAlso Logički/Bitovni logičko AND sa kratkospojnom procjenom

Or Logički/Bitovni logičko OR bez kratkospojne procijene

OrElse Logički/Bitovni logičko OR sa kratkospojnom procjenom

Xor Logički/Bitovni logički isključivi OR

Page 105: Uvod u programiranje Programiranje 1 Programiranje 1 · PDF fileProgramiranje 1 Programiranje 1 (550(550)) Poglavlje 2 Varijable i tipovi podataka 1 drddrrdr. .. ... Moodle CMSMoodle

SažetakSažetak

Vrijednosni tipoviVrijednosni tipovidirektno sadrže direktno sadrže podatakpodatak

svaka ima vlastitu svaka ima vlastitu kopiju podatakakopiju podataka

operacije nad jednom operacije nad jednom

Referencni tipoviReferencni tipovisadrže upućivanja na sadrže upućivanja na pripadajuće podatke pripadajuće podatke

svaka ima vlastitu svaka ima vlastitu kopiju podatakakopiju podataka

operacije nad jednom operacije nad jednom

105

operacije nad jednom operacije nad jednom varijablom ne mogu varijablom ne mogu utjecati na drugu utjecati na drugu varijabluvarijablu

operacije nad jednom operacije nad jednom varijablom ne mogu varijablom ne mogu utjecati na drugu utjecati na drugu varijabluvarijablu