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

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

Naredbe za kontrolu toka

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

Programiranje III razred

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

SELECT CASE i FOR NEXT. Programiranje 1

VRIJEDNOSTI ATRIBUTA

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

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

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

VB komande. Programiranje 1

VEŽBA 5 do while petlja, switch case

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

Prva recenica. Druga recenica.

Uvod u relacione baze podataka

Objektno orijentirano programiranje. Auditorne vježbe

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

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

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

Uvod, varijable, naredbe, petlje

Sintaksa VHDL jezika - podsjetnik -

VHDLPrimeri Poglavlje5.doc

16. Sigurnije programiranje

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

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

Izrada VI laboratorijske vježbe

2. Linijska algoritamska struktura

INSTALACIJA RAZVOJNOG OKRUŽENJA DEV-C++

PARALELNO PROGRAMIRANJE

Što ćete naučiti. Internet općenito HTML CSS XML XHTML Javascript DOM DHTML. AJAX jquery PHP ASP.NET Ruby On Rails MS Silverlight FLASH, SMIL, SVG...

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

RAČUNARSKI PRAKTIKUM II

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

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

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

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

Vežbe - XII nedelja PHP Doc

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET

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

Windows Server 2012, VDI Licenciranje najprodavanijeg servera, što je novo, VDI licenciranje. Office 2013 / Office 365

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

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

OSNOVE PROGRAMIRANJA

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

Lekcija 02 Uslovni iskazi i petlje, Funkcije. Miljan Milošević

Iskočni okviri (eng. popup boxes)

PREDMET. Osnove Java Programiranja. Čas JAVADOC

Oracle Proprietary Joins Za upite nad više od jedne tabele korišćenjem Oracle proprietary sintakse koristiti join uslov u WHERE izrazu:

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

Tema 8: Koncepti i teorije relevantne za donošenje odluka (VEŽBE)

11. Iznimke i tokovi (exceptions and streams)

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

Nizovi. Programiranje 1

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

Rad sa MySQL bazom podataka

Programiranje kroz aplikacije. Kontrola toka programa Nizovi

RAČUNARSKI PRAKTIKUM II

Distribuirani procesi Vježbe 01 Uvod i. threadovi

OSNOVE PROGRAMIRANJA

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

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

UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a

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

PROGRAMIRANJE. Objekt-orjentirano programiranje (OOP)

SVEUČILIŠTE U Z GRE U Fakultet prometnih znanosti Zavod za inteligentne transportne sustave Vukelićeva 4, Zagreb, HRV TSK.

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

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

VDSL modem Zyxel VMG1312-B10A/B30A

Uputstvo za korišćenje logrotate funkcije

PROGRAMIRANJE. Amir Hajdar

Univerzitet u Nišu Građevinsko-arhitektonski fakultet. 4. Ciklična algoritamska struktura 5. Jednodimenzionalno polje.

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

Računarske osnove Interneta (SI3ROI, IR4ROI)

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

Šesti čas PL/SQL. Skraćenica za Procedural Language extension to SQL (proširenje SQL-a). Služi za složeniju i precizniju obradu podataka.

x y = z Zadaci - procedure

S E M I N A R S K I R A D Verilog sa primjerima

Uvod u programski jezik

JAVA PROGRAMIRANJE 1

Numeričke metode i praktikum

I PISMENI ZADATAK III6 I GRUPA IME I PREZIME

Sveučilište J. J. Strossmayera u Osijeku Odjel za matematiku Sveučilišni preddiplomski studij matematike. Arhitektura računala. Osijek, 2016.

[] znači opciono; znači ili. Strana 3 od 5

Statements: Part Pearson Education, Inc. All rights reserved.

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

Visual Basic 6.0. Osnove VB. Uvod u računarstvo 1

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

Operacijski sustavi. Laboratorijska vježba 2. Petra Lončar, mag. ing. el., asistent FESB, 2016.

Zadatci Small Basic za 7. Razred ( programa)

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

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

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

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

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

JavaScript i HTML DOM

Zadatak. Sa tastature uneti broj projekta. Za uneseni broj preuzeti njegove podatke u posebne promenjive i prikazati ih u konzoli.

Kratke upute za korištenje MATLAB-a

Numerical Computation

LIGA PROGRAMIRANJA U PYTHONU ZA

PROGRAMIRANJE. Teme. Packages Reference objekata Inheritance nasljeđivanje Exceptions. Amir Hajdar

Transcription:

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