Uvod u programiranje Programiranje 1 (550) Poglavlje 3 Strukture odluka i ponavljanja dr. sc.. Josip Musić jmusic@fesb.hr 1 Originalne slideove izradio: Teo Žuljević, dipl.. ing. teo.zuljevic@fesb.hr
Pregled Strukture odluke jednostruka selekcija dvostruka selekcija višestruka selekcija rukovanje iznimkama Strukture ponavljanja While For Do Logički operatori Bitovni operatori 2
Strukture odluke Prave izbor prema vrijednosti izraza i selektivno izvode naredbe prema odabranom izboru. nazivaju se i selekcijskim strukturama ili strukturama grananja VB.NET strukture odluke: If Then Then (jednostruka selekcija) If Then Else (dvostruka selekcija) Select Case (višestruka selekcija) Try...Catch...Finally (rukovanje iznimkama) 3
Jednostruka selekcija (1) If naredba je primarno naredba za donošenje odluke. If Then struktura se koristi za uvjetno izvoñenje odreñene naredbe ili bloka naredbi. izvoñenje ako je uvjet True jednolinijski i višelinijski oblik Sintaksa: If condition Then statements 4 gdje je: condition uvjet strukture Boolean izraz vrijednosti drugih tipova podataka statements naredbe strukture izvode se samo kada se izraz razvija u True
Jednostruka selekcija (2) Primjer korištenja If...Then strukture: If number Mod 2 = 0 Then _ Console.WriteLine("{0} je paran", number) operator Mod vraća ostatak dijeljenja underscore ista naredbena linija Sljedeći kod izvodi dvije naredbe: If minute = 60 Then minute = 0 : hours += 1 : - razdvojnik naredbi 5
Pretvaranje Integer u Boolean vrijednost Test na različito od nule: If number <> 0 Then Console.WriteLine _ ("Različito od 0") Implicitna pretvorba If number Then Console.WriteLine _ ("Različito od nule") 6
Višelinijska If struktura Sintaksa: Primjer: If condition Then statements End If If studentgrade >= 50 Then Console.WriteLine("Prošao") End If 7
Dijagram toka If strukture Uvjet istinit? Da naredbe Ne 8
Primjer: jednostavan kalkulator (1) Module Calculator Public Sub Main() Dim answer As Char Dim numa, numb, numc As Double Console.Write("Unesite prvi broj: ") numa = Console.ReadLine() Console.Write("Unesite drugi broj: ") numb = Console.ReadLine() Console.WriteLine("Odaberite matematičku operaciju") Console.Write ("[+, -, *, /] ") answer = System.Console.ReadLine() If answer = "+" Then numc = numa + numb If answer = "-" Then numc = numa numb If answer = "*" Then numc = numa * numb If answer = "/" Then numc = numa / numb Console.WriteLine("Rezultat je = {0}", numc) End Sub End Module 9
Dvostruka selekcija (2) If struktura izvodi odreñene akcije jedino ako se uvjet razvija u True, u suprotnom se ne izvodi ništa. Zahtjev: ako je uvjet zadovoljen neka program izvede jedan skup naredbi, inače neka izvede drugi skup naredbi If Then Else struktura omogućuje definiranje dvaju blokova naredbi. jedan blok naredbi se izvodi za slučaj kada je uvjettrue drugi blok naredbi se izvodi za slučaj kada je uvjet False 10
Dvostruka selekcija (2) Sintaksa: If condition Then ifstatements Else elsestatements End If 11
Dijagram toka If...Else Ne Uvjet istinit? Da else naredbe if naredbe 12
Korištenje If...Else Primjer: If studendgrade >= 50 Then Console.WriteLine("Prošao") Else Console.WriteLine("Pao") End If If number > 2 Then Else Console.WriteLine("Broj nije veći od 2") End If 13
Ugniježñene strukture Struktura unutar druge strukture. Moguće testirati uvjet na više vrijednosti. Strukture kontrole mogu biti ugniježñene u neograničenom broju nivoa. Sintaksa: If condition1 Then If condition2 Then ifstatements Else elsestatements End If End If 14
Primjer: uspjeh studenta (1) 15 Sub Main() Dim studentgrade As Integer Console.Write("Unesite broj bodova: ") studentgrade = Console.ReadLine() If studentgrade >= 90 Then Console.WriteLine("Izvrstan") Else If studentgrade >= 80 Then Console.WriteLine("Vrlo dobar") Else If studentgrade >= 70 Then Console.WriteLine("Dobar") Else If studentgrade >= 50 Then Console.WriteLine("Dovoljan") Else Console.WriteLine("Nedovoljan") End If End If End If End If End Sub
Kaskadne If naredbe Sintaksa: If condition1 Then ifstatements ElseIf condition2 Then ifstatements ElseIf elseifstatements Else elsestatements End If 16
Primjer: uspjeh studenta (2) 17 Sub Main() Dim studentgrade As Integer Console.Write("Unesite broj bodova: ") studentgrade = Console.ReadLine() If studentgrade >= 90 Then Console.WriteLine("Izvrstan") ElseIf studentgrade >= 80 Then Console.WriteLine("Vrlo dobar") ElseIf studentgrade >= 70 Then Console.WriteLine("Dobar") ElseIf studentgrade >= 50 Then Console.WriteLine("Dovoljan") Else Console.WriteLine("Nedovoljan") End If End Sub
Primjer: jednostavan kalkulator (2) If answer = "/" Then If numb<>0 Then numc = numa / numb Console.Write("Rezultat dijeljenja je: " & numc) Else Console.WriteLine("Dijeljenje s nulom!") End If End If 18
Višestruka selekcija 19 Select Case naredba se koristi za odabir bloka koda za izvoñenje prema listi mogućih izbora. koristi se kod višestrukih uvjeta alternativa ugniježñenim If naredbama sastoji se od višestrukihcase blokova svakom bloku je pridružena konstantna vrijednost izraza za koju će naredbe bloka biti izvedene ako su višestruki Case izrazi su True,, samo naredbe koje pripadaju prvom Case bloku se izvode Select Case testexpression Case expressionlist1 statements1 Case expressionlist2 statements2 Case expressionlistn statementsn Case Else elsestatements End Select
Dijagram toka testexpression Case expressionlist1 Da statements1 Ne Case expressionlist1 Da statements1 Ne Case expressionlist1 Da statements1 Ne elsestatements 20
Primjer: uspjeh studenta (3) 21 Sub Main() Dim studentgrade As Integer Console.Write("Unesite broj bodova: ") studentgrade = Console.ReadLine() Select Case studentgrade Case Is >= 90 Console.WriteLine("Izvrstan") Case 80 To 89 Console.WriteLine("Vrlo dobar") Case 65 To 79 Console.WriteLine("Dobar") Case 50 To 64 Console.WriteLine("Dovoljan") Case Else Console.WriteLine("Nedovoljan") End Select End Sub
Primjer: neparni brojevi Sub Main() Dim number As Integer Console.Write("Unesite broj: ") number = CInt(Console.ReadLine()) Select Case (number Mod 2) Case 0 Console.WriteLine("Broj je paran!") Case 1 Console.WriteLine("Broj je neparan!") End Select End Sub 22 operator Mod Exit Select
Iznimka iznimka (exception) je signalizacija neuobičajenog stanja Primjeri: dijeljenje sa nulom (divide-by-zero) aritmetičko prekoračenje (arithmetic overflow) pristup izvan granica niza (array access out of bounds) neupućivanje na objekt (null object reference) nepronañena datoteka (file not found) 23
Rukovanje iznimkama (1) 24 Try Catch Finaly struktura strukturirano rukovanje iznimkama Try blok sadrži naredbe koje se prate na moguću iznimku Catch blok hvata specijalizirani tip iznimke svaka naredba može podignuti jednu ili više različitih iznimki zbog čega može biti više Catch blokova kada nastane iznimka za vrijeme izvoñenja naredbe Try bloka, prekida se njezino izvoñenje i traži Catch blok koji hvata nastali tip iznimke Catch blok bez parametara hvata sve tipove iznimki može biti samo jedan u Try Catch Finaly strukturi
Rukovanje iznimkama (2) Finaly blok opcijski sadrži kod koji se u cijelosti izvodi, bez obzira na pogrešku koristan za izbjegavanje dupliciranja naredbi i za otpuštanje resursa nakon podizanja iznimke u Try bloku 25 Try '... 'naredbe Catch '... 'naredbe End Try Try '... 'naredbe Catch '... 'naredbe Finally 'naredbe End Try
Semantika Try Catch strukture Izvoñenje ide u jednom od dva pravca: nema iznimke: preskače se Catch blok sve dostep4 postoji iznimka: kontrola se prenosi neposredno u Catch blok Try Catch step1 step2 step3 catch1 catch2 End Try nema iznimke greška u naredbi 1 26 step4
Primjer: Rukovanje iznimkama Hvatanje pogreške prekoračenja tipa podatka i ispis prikladne poruke. Sub Main() Dim x As Integer Console.Write("Unesite x: ") Try x = CInt(Console.ReadLine()) Catch Console.Write("Prekoračenje tipa podatka") End Try End Sub 27
Primjer: Finaly blok Sub Main() Dim x As Byte Console.Write("Unesite x: ") Try x = CByte(Console.ReadLine()) Catch Console.Write("Prekoračenje tipa podatka") Finaly Console.Write(x) izvodi se uvijek End Try End Sub 28
Smjernice za izbor strukture odluke If Then struktura se koristi za odluku o izvoñenju samo jednog bloka koda. If Then Else struktura se koriste za odluku o izvoñenju meñusobno isključivih blokova koda. Select Case struktura se koristi kad postoji lista mogućih vrijednosti 29
Strukture ponavljanja Nazivaju se petljama. Koriste se za izvoñenje naredbi sve dok je odreñeni uvjet True, ili dok ne postane True While...End While For Next Do Loop For Each Next 30
While struktura ponavljanja Izvodi ugrañene naredbe neodreñeni broj puta. broj izvoñenja zavisi o stanju Boolean izraza na početku petlje moguće da ugrañene naredbe nikada ne budu izvedene izvodi ugrañene naredbe sve dok je Boolean vrijednost izraza True Sintaksa: While condition statements End While 31
Dijagram toka While strukture Uvjet istinit? Da naredbe Ne 32
Korištenje While strukture Dim number As Integer = 2 While number <= 10 number += 2 4 Console.WriteLine(number) End While 6 8 10 12 33
For Next struktura ponavljanja Koristi se kada je poznat broj izvoñenja petlje. Sintaksa: For counter = start To end Step step statements Next counter 34 gdje je: counter varijabla brojača numerički tip podatka start početna vrijednost varijable brojača end krajnja vrijednost varijable brojača za end >start, counter redom poprima vrijednosti start, start+1,, end za end <start, preskaču se naredbe unutar petlje i izvoñenje nastavlja s prvom naredbom nakon Next. step korak povećanja ili smanjenja varijable brojača podrazumijevana vrijednost 1
For...Next dijagram toka counter = start counter <= end? Da naredbe counter += step Ne 35
Korištenje For...Next Sub Main() Dim counter As Integer For counter = 4 To 12 Step 2 Console.WriteLine(counter) Next counter End Sub 4 6 8 10 12 36 Sub Main() Dim counter As Integer For counter = 12 To 4 Step -2 Console.WriteLine(counter) Next End Sub 12 10 8 6 4
Primjer: tablica množenja od 1 do 4 Sub Main() Dim count1, count2 As Integer For count1 = 1 To 4 Console.WriteLine() For count2 = 1 To 4 Dim product As Integer Next count2 Next count1 End Sub product = count1 * count2 Console.Write("{0}x{1}={2} ", count1, _ count2, product) 1x1=1 1x2=2 1x3=3 1x4=4 2x1=2 2x2=4 2x3=6 2x4=8 3x1=3 3x2=6 3x3=9 3x4=12 4x1=4 4x2=8 4x3=12 4x4=16 37 Variable u For bloku imaju opseg bloka i vrijeme trajanja procedure.
38 For...Next (od.net Framewrork 2.0) Mogućnost inicijaliziranja kontrolne varijable brojača unutar petlje. varijabla brojač je opsega bloka nedostupna izvan bloka koda povezana sa pripadajućom petljom najprikladniji opseg Sub Main() 'Dim counter As Integer For counter As Integer = 4 To 12 Step 2 Console.WriteLine(counter) Next End Sub
DoLoop struktura ponavljanja 39 Izvodi ugrañene naredbe neodreñeni broj puta zavisno o Boolean vrijednosti uvjeta. izvoñenje naredbi se ponavlja sve dok je uvjet True ili dok ne postane True Uvjet može biti: Boolean rezultat usporedbe dviju vrijednosti bilo koji izraz koji se razvija u Boolean vrijednost (True ili False) npr. numerički tipovi Postoje dvije varijacije: Do While izvođenje naredbi dok je uvjet True Do Until izvođenje naredbi dok uvjet ne postane True
Izvoñenje naredbi dok je uvjet True Dva su načina korištenja While za provjeravanje uvjeta u Do petlji: uvjet se provjerava prije ulaska u petlju uvjet se provjerava nakon izvođenja naredbi petlje garantira izvođenje naredbi petlje barem jednom Za testiranje uvjeta prije ulaska u petlju koristi se sljedeći predložak: Do While condition statements Loop 40
Dijagram toka DoWhile petlje Uvjet istinit? Da naredbe Ne 41
Ekvivalentna For......Next petlja condition = start Do While condition <= end statements condition += step Loop 42
Korištenje DoWhile petlje Dim number As Integer = 2 Do While number <= 10 number += 2 Console.WriteLine(number) Loop 4 6 8 10 12 43
Primjer: izračun prosječnog uspjeha 44 Sub Main() Dim grade, sum, count As Integer Dim average As Single Console.WriteLine("RAČUNANJE PROSJEČNOG USPJEHA") Console.WriteLine("Unesite negativan broj za završetak!") Console.Write("Unesite uspjeh: ") 'učitaj prvi broj grade = CInt(Console.ReadLine()) 'ako broj nije negativan, obradi ga Do While grade >= 0 count += 1 sum += grade Console.Write("Unesite uspjeh: ") 'učitaj sljedeći broj grade = CInt(Console.ReadLine()) Loop average = sum / count Console.WriteLine("Prosječan uspjeh je {0}", average) End Sub
Izvoñenje naredbi barem jednom Sintaksa: Do statements Loop While condition 45
Dijagram toka Do......LoopWhile petlje naredbe Je li uvjet istinit? Da Ne 46
Korištenje Do......LoopWhile petlje 47 Dim number As Integer = 2 Do number += 2 Console.WriteLine(number) Loop While number <= 10 4 6 8 10 12
Izvoñenje naredbi dok je uvjet False Sintaksa: Do Until condition statements Loop Uvjet istinit? Ne naredbe Da 48
Korištenje DoUntil petlje 49 Dim number As Integer = 2 Do Until number > 10 number += 2 Console.WriteLine(number) Loop 4 6 8 10 12
Izvoñenje naredbi barem jednom Sintaksa: Do statements Loop Until condition naredbe Je li uvjet istinit? Ne Da 50
Korištenje Do......LoopUntil petlje 51 Dim number As Integer = 2 Do number += 2 Console.WriteLine(number) Loop Until number > 10 4 6 8 10 12
Pregled Do naredbi 52 Do Loop Until Izvodi kod u petlji i tada procjenjuje uvjet. Ponavlja izvoñenje sve dok uvjet nije procijenjen kao True. Do Until Loop Izvodi kod u petlji jedino ako je uvjet procijenjen kao False, i ponavlja izvoñenje sve dok testirani izraz nije procijenjen kao True. Do Loop While Izvodi kod u petlji i potom procjenjuje uvjet. Ponavlja izvoñenje sve dok uvjet nije procijenjen kao False. Do While Loop Izvodi kod u petlji jedino ako je uvjet procijenjen kao True, i ponavlja izvoñenje sve dok testirani izraz nije procijenjen kao False.
Beskonačne petlje endless loop, infinite loop Primjer: Dim number As Integer = 2 Do While number <= 10 number -= 2 Console.WriteLine(number) Loop 53
Korištenje Exit u petljama Neposredno napuštanje petlje sa: Exit Do Exit While Exit For Do While True Console.Write("Unesite uspjeh: ") grade = CInt(Console.ReadLine()) If grade < 0 Then Exit Do count += 1 sum += grade Loop 54
Logički operatori 55 Selekcijske strukture i strukture ponavljanja procjenjuju samo jedan uvjet korištenjem relacijskih operatora. Ako ima više uvjeta => ugniježñene strukture. Logički operatori spajaju više uvjeta. Logički operatori su: And AndAlso Or OrElse Xor Not
Logički operatori And i AndAlso Koriste se kada je potrebno da više uvjeta bude zadovoljeno. You want to be rich and healthy. If productid = 150 And productinstock > 0 Then _ Console.WriteLine ("Proizvod postoji na zalihi.") 56
Tablica istine za And operator If productid = 150 And productinstock > 0 Then _ Console.WriteLine ("Proizvod postoji na zalihi.") Uvjet 1 Uvjet 2 Rezultat False False False False True False True False False True True True And operator nema mogućnost kratkospojne procjene 57
Korištenje And operatora Console.Write("Unesite broj komada? ") If productid = 150 And _ Console.ReadLine() < productinstock Then Console.WriteLine("Proizvod postoji na zalihi.") Else Console.WriteLine("Proizvod ne postoji na zalihi.") End If 58
Tablica istine za AndAlso operator If productid = 150 AndAlso productinstock > 0 Then _ Console.WriteLine ("Proizvod postoji na zalihi.") Uvjet 1 Uvjet 2 Rezultat False ne procjenjuje se False True False False True True True Kratkospojna procjena (short-circuit evaluation) 59
Logički operatori Or i OrElse Koriste se kada je izmeñu dva ili više uvjeta dovoljno da jedan bude zadovoljen. If roomtemperature >= 25 OrElse roomtemperature < 18 Then _ Console.WriteLine("Upalite klima ureñaj!") OrElse izlaže kratkospojnu procjenu. 60
Tablica istine za Or i OrElse Tablica istine za Or operator: Uvjet 1 Uvjet 2 Rezultat False False False False True True True False True True True True Tablica istine za OrElse operator: 61 Uvjet 1 Uvjet 2 Rezultat False False False False True True True ne procjenjuje se True
Logički operator Xor exclusive-or nije kratkospojni operator Tablica istine za Xor operator: Uvjet 1 Uvjet 2 Rezultat True True False True False True False True True False False False 62
Logički operator Not Logički operator negacije okreće uvjet. Uzima jedan operand sa logičkom vrijednošću True ili False i okreće njegovu vrijednost. Jedan operand => unarni operator. Primjer: Tablica istine: If Not number = 2 Then _ Console.WriteLine("Različito od 2") 63 Uvjet True False Rezultat False True If number <> 2 Then End If
Bitovni operatori Aritmetički operatori rukuju sa stvarnim vrijednostima brojeva. Bitovni operatori (bitwise operators) ) rukuju s pojedinačnim bitovima unutar binarne prezentacije brojeva. Bitovni operatori tretiraju svoje operande kao skup bitova (0 i 1) a ne kao numeričku vrijednost. 64
Bitovni operator And Postavke rezultirajućeg bita: Primjer: Bit 1 Bit 2 Rezultat 0 0 0 0 1 0 1 0 0 1 1 1 148 And 37...01001010000 (148) AND...000100101 01 (37)...000000100 (4) 65 testira jesu li bitovi postavljeni!
Bitovni operator Or Postavke rezultirajućeg bita: 66 Primjeri: 148 Or 37 postavlja bitove! Bit 1 Bit 2 Rezultat 0 0 0 0 1 1 1 0 1 1 1 1...010010100 (148) OR...000100101 (37)...010110101 (181)
Bitovni operator Xor Postavke rezultirajućeg bita: 67 Primjeri: Bit 1 Bit 2 Rezultat 1 1 0 1 0 1 0 1 1 0 0 0 148 Xor 37 okreće stanje bitova!...010010100 (148) XOR...000100 00101 (37)...010110001 (177) ako je 0 postavlja 1, ako je je jedan postavlja 0
Bitovni operator Not Primjer: Bit 1 Rezultat 0 1 1 0 Dim x As Integer = 37 Console.WriteLine(Not x) 2 31 2 30 2 29 2 28 2 x 2 20 2 19 2 18 2 17 2 16 2 15 2 14 2 13 2 12 2 11 2 10 2 9 2 8 2 7 2 6 2 5 2 4 2 3 2 2 2 1 2 0 0 31 0 30 0 29 0... 0 20 0 19 0 0 17 0 16 0 15 0 0 0 0 11 0 10 0 0 0 0 1 0 0 1 0 1 (37) 1 1 1 1...... 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0 (Not 37) 1 1 1 1...... 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 1 (-1) 0 0 0 0...... 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 (38) 68
Zadatak 1: parnost broja Korištenjem bitovnih operatora provjeriti parnost broja. Dim number As Integer = Console.ReadLine If number And 1 Then Console.Write("Broj {0} je neparan", number) Else Console.Write("Broj {0} je paran", number) End If 69
Zadatak 2: Uvjetovanje neparnosti Korištenjem bitovnog Or operatora napravite broj uvijek neparan. Dim number As Short Dim count As Short For count = 1 To 10 number = count Console.WriteLine("number: {0}", number) number = number Or 1 'number and...0000 0001 Console.WriteLine("number nakon nulti bit=1: {0}", number) Next 70
Zadatak 3: Uvjetovanje parnosti Korištenjem bitovnog And operatora napravite broj uvijek paran. Dim number As Short Dim count As Integer For count = 1 To 10 number = count Console.WriteLine("number: {0}", number) 'number and 0...1111 1110 number = number And (Short.MaxValue 1) Console.WriteLine("number nakon 0...111 1110: {0}", number) Next 71
Zadatak 4: Brisanje odreñenog bita Korištenjem bitovnih operatora izbrisati odreñeni bit 2 8 And Not 1 0 1 2 7 1 2 6 1 2 5 1 2 4 1 2 3 1 2 2 1 2 1 1 2 0 1 (511) 1 0 0 0 0 0 0 0 (128) 0 1 1 1 1 1 1 1 (Not 128) 1 0 1 1 1 1 1 1 1 (383) 72 Sub Main() Dim number As Integer = 511 Console.WriteLine(number And (Not 1)) '510 Console.WriteLine(number And (Not 2)) '509 Console.WriteLine(number And (Not 4)) '507 Console.WriteLine(number And (Not 8)) '503 Console.WriteLine(number And (Not 16)) '495 Console.WriteLine(number And (Not 32)) '479 Console.WriteLine(number And (Not 64)) '447 Console.WriteLine(number And (Not 128)) '383 Console.WriteLine(number And (Not 256)) '255 End Sub
Zadatak 5: Ispisivanje bitova Potrebno je ispisati bitove unutar bajta. Dim position As Integer = 256 Dim value As Byte = 123 Do While position > 0 If Not (value And position) = 0 Then Console.Write("1 ") Else Console.Write("0 ") End If position = position / 2 'pomak desno Loop 73
Zadatak 6: Zamjena vrijednosti dviju Integer varijabli bez korištenja treće Korištenjem bitovnih operatora zamjeniti vrijednosti dviju varijabli bez korištenja treće. Dim x, y As Integer x = 112 : y = 32 x = x Xor y 'korak 1 x je sada 80 y = y Xor x 'korak 2 y je sada 112 x = x Xor y 'korak 3 x je sada 32 Console.Write("x={0}, y={1}", x, y) 74
Zadatak 6: (nastavak) x=112, y=32 Korak 1: x = x Xor y Korak 2: y = y Xor x Korak 3: x = x Xor y 2 x... 2 7 0 2 6 1 2 5 1 2 4 1 2 3 0 2 2 0 2 1 0 2 0 0 (112)... 0 0 1 0 0 0 0 0 (32)... 0 1 0 1 0 0 0 0 (80) 2 x... 2 7 0 2 6 0 2 5 2 4 2 3 2 2 1 0 0 0 2 1 0 2 0 0 (32)... 0 1 0 1 0 0 0 0 (80)... 0 1 1 1 0 0 0 0 (112) 2 x... 2 7 0 2 6 1 2 5 0 2 4 1 2 3 0 2 2 0 2 1 0 2 0 0 (80)... 0 1 1 1 0 0 0 0 (112) 75... 0 0 1 0 0 0 0 0 (32)
Pomicanje (shifting) bitova 76 Za.NET Framework v.2.0 i više Pomicanje bitova lijevo, operatori << i <<= <<= (shift left) << za pomicanje odreñenog broja bitova lijevo (prema najvažnijem bitu) <<= za pomicanje odreñenog broja bitova lijevo i pohranjivanje rezultata u varijablu >> i >>= (shift right) >> za pomicanje desno (prema najmanje važnom bitu) >>= za pomicanje desno i pohranjivanje rezultata u varijablu Pomicanje bitova desno, operatori >> Ako operacija pomicanja uzrokuje izbacivanje nekih bitova izvan tipa podatka, tada su ti bitovi odbačeni. Prazne pozicije stvorene operacijom pomicanja se uvijek popunjavaju nulama u pomicanju bitova lijevo i pomicanju bitova pozitivnih brojeva desno. Kod pomicanja bitova negativnih brojeva desno (number >> -4), ispražnjene pozicije se popunjavaju jedinicama.
Pomicanje bitova (nastavak) Sljedeći primjer prikazuje što se dešava kada se 16-bitna cjelobrojna vrijednost pomiće četiri mjesta desno. Četiri najniža bita se izbacuju a četiri najviša bita popunjavaju nulama. Dim originalvalue, newvalue As Short originalvalue = 28882 newvalue = originalvalue >> 4 Console.WriteLine(newValue) 77
Primjer: Dijeljenje/množenje pomicanjem bitova pomicanje lijevo = množenje po bazi dva pomicanje desno = dijeljenje po bazi dva 78 Dim x,y,z As Integer y = 16 x = y * 256 '2 8 x = y << 8 Console.WriteLIne (x) z = y / 4 '2 2 z = y >> 2 Console.WriteLIne (z) 4096 4
79 Sažetak Strukture odluke If Then (jednostruka selekcija) If Then Else (dvostruka selekcija) Select Case (višestruka selekcija) Try...Catch...Finally (rukovanje iznimkama) Strukture ponavljanja While For Do Logički operatori And AndAlso Or OrElse Not Xor Bitovni operatori And Or Not Xor << i >>
80 Pitanja?
Za više informacija Odgovaram na mail-ove (uglavnom uvijek :-) jmusic@fesb.hr Web site za materijale, kod, informacije: www.fesb.hr/elearningelearning 81