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
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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
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
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)
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
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”)
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
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.
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
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
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
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
Pohranjuje cjelobrojne pozitivne i negativne vrijednostiPohranjuje cjelobrojne pozitivne i negativne vrijednostiopseg: od opseg: od --9223372036854775808 (= 9223372036854775808 (= --226363) do ) do
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
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)
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
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)
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
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
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
Š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
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 (‘ ’)
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
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
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?
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
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()
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.
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)
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 funkcijeOmogućuju pretvaranje vrijednosti iz jednog tipa Omogućuju pretvaranje vrijednosti iz jednog tipa podatka u drugi.podatka u drugi.
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
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