uvod u programiranje programiranje 1 programiranje 1 (550 .... semestar/programiranje...
Post on 04-Oct-2019
260 Views
Preview:
TRANSCRIPT
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
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)
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
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
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
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
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 !
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
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/
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
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
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
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
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
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
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()
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
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()
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
Multimedija: Što su varijable?Multimedija: Što su varijable?
20
Uvod u tipove podatakaUvod u tipove podataka
Opći sistem tipovaOpći sistem tipova
Vrijednosni tipoviVrijednosni tipovi
Referencni tipoviReferencni tipovi
21
Š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
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
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
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
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
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
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
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 ...
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
��������
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
......
Nedozvoljena imena varijabli?Nedozvoljena imena varijabli?
���� 098mobile
���� mobile098
���� _098mobile
��
��
��
32
���� _098mobile
���� $price
���� productPrice
���� ProductPrice
Nothing
��
��
��
��
��
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
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
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
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
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)
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)
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
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
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
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
+/+/+/+/+/+/+/+/--------
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
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
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
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+/-
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
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
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
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
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
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
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
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
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
“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
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
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+/-
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
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
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
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
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)
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
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
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’
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
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
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
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
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
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
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
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
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
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
��
��
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
��
��
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
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
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
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.
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
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.
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
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
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
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
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
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
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
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
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))))
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
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)
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
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
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
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
Tekstualne i znakovne konstanteTekstualne i znakovne konstante
Console.WriteLine (“Hello !”)
StringStringStringStringStringStringStringString
99
Dim charConstant As Char
charConstant = “A”c
CharCharCharCharCharCharCharChar
Konstante datuma i vremenaKonstante datuma i vremena
Dim dateConstant As DatedateConstant = #04/27/1970 6:00:00 PM#
100
DateDateDateDateDateDateDateDate
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”
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
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.
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
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
top related