Visual Basic Kontrollstrukturer del 2 Løkker - 1 1 Repetisjon fra mandag Tre kontrollstrukturer: Sekvens Gjør punkt 1 Gjør punkt 2 Valg Hvis betingelse er sann Gjør punkt 1 Ellers Gjør punkt 2 Løkke initier Løkkebetingelse Gjør noe så lenge n er sann (Løkkekropp) Oppdater 2 1
Sekvens Les to tall Beregn sum Skriv ut svaret Dim tall1, tall2, sum As Integer tall1 = txttall1.text tall2 = txttall2.text sum = tall1 + tall2 MsgBox(sum) 3 Les to tall og regneart + - Valg Dim tall1, tall2, sum as Integer Dim regneart as char tall1 = txttall1.text tall2 = txttall2.text Regneart = lbxregneart.text Beregn sum Beregn differanse If regneart = + then sum = tall1 + tall2 sum = tall1 tall2 End if Skriv ut svaret MsgBox(sum) 4 2
Minikalkis med bruk av IF Private Sub btnerlikif_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles btnerlikif.click Dim tall1, tall2, sum As Integer Dim regneart As Char ' Sjekker om det er skrevet inn tall i tekstboksene: If IsNumeric(txtTall1if.Text.Trim) And IsNumeric(txtTall2if.Text.Trim) Then tall1 = txttall1if.text tall2 = txttall2if.text regneart = lbxregneartif.selecteditem If regneart = "-" Then lblresultatif.text = tall1 - tall2 Ingen regneart er valgt: lbxregneartif.setselected(0, True) ' Velg første regneart lblresultatif.text = tall1 + tall2 MsgBox("Du må skrive inn tall") 5 Minikalkis med Case Private Sub btnerlik_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles btnerlik.click Dim tall1, tall2, sum As Integer Dim regneart As Char ' Sjekker om det er skrevet inn tall i tekstboksene: If IsNumeric(txtTall1.Text.Trim) And IsNumeric(txtTall2.Text.Trim) Then tall1 = txttall1.text tall2 = txttall2.text regneart = lbxregneart.selecteditem Select Case regneart Case "+" lblresultat.text = tall1 + tall2 Case "-" lblresultat.text = tall1 - tall2 Case MsgBox("Du må velge en regneart!") End Select MsgBox("Du må skrive inn to tall (ikke tekst)") 6 3
Løkker Private Sub btnløkkeknapp_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles btnløkkeknapp.click Dim tekst As String If txttekst.text.trim = "" Then MsgBox("Du må skrive inn en tekst") tekst = txttekst.text.trim lblresultatløkker.text += 1 : " & tekst & vblf lblresultatløkker.text += 2 : " & tekst & vblf lblresultatløkker.text += 3 : " & tekst & vblf lblresultatløkker.text += 4 : " & tekst & vblf lblresultatløkker.text += 5 : " & tekst & vblf 7 For-Next tellerkontrollert Do Loop betingelsesstyrt Løkketyper 8 4
Løkker Alle løkker består av fire elementer: Initiering av Løkkebetingelse Løkkekropp (det som skal gjentas) Oppdatering av 9 Løkker: For - Next Initiering av Dim sum As Integer = 0 Dim i As Integer For i = 1 To 3 sum += i Next i Oppdatering av MsgBox("Summen er: " & sum) 10 5
Resultat av forrige eksempel: 11 Eksempel Private Sub btnløkkeknapp_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles btnløkkeknapp.click Dim tekst As String If txttekst.text.trim = "" Then MsgBox("Du må skrive inn en tekst") tekst = txttekst.text.trim ' initiering av Løkkebetingelse og : Dim i As Integer For i = 1 To 5 ' Løkkekropp: lblresultatløkker.text += i & : " & tekst & vblf ' Oppdatering av : Next i 12 6
Løkker: Do While Loop Dim sum As Integer = 10 Dim i As Integer = 3 Initiering av Oppdatering av Do While i > 0 sum -= i i -= 1 Loop MsgBox("Summen er: " & sum) 13 Resultat av kjøring 1. 2. 3. 4. i 3 2 1 0 sum 10 7 5 4 14 7
Dim tekst As String lblresultatloop.text = "" Løkke: Do-Loop If txttextloop.text.trim = "" Then MsgBox("Du må skrive inn en tekst") tekst = txttextloop.text.trim ' initiering av Løkkebetingelse og : Dim i As Integer = 1 Do While i <= 5 ' Løkkekropp: lblresultatloop.text += i & ":" & " " & tekst & vblf i = i + 1 ' Oppdatering av Loop 15 Løkke Do-Loop ' Prosedyre som leser inn navn fra bruker og lister opp disse i en label helt til ' teksten Ferdig skrives inn. Dim tekst As String ' Initiering av : tekst = InputBox("Skriv inn navn:", "VB-2005") Do While tekst <> "Ferdig" ' Løkkebetingelse lblresultatløkker.text += tekst & vblf ' Løkkekropp ' Oppdatering av : tekst = InputBox("Skriv inn navn:", "VB-2005") Loop 16 8
Eksempel laget i timen: 17 Koden bak form1.vb: Private Sub btnkalkis_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles btnkalkis.click Dim nyform As New Minikalkis nyform.show() Private Sub btnløkke_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles btnløkke.click Dim tekst As String If txttekst.text.trim = "" Then MsgBox("Du må skrive inn en tekst!", MsgBoxStyle.Exclamation) tekst = txttekst.text.trim Dim i As Integer For i = 1 To 5 lblresultatløkker.text += i & ": " & tekst & vblf Next i Private Sub btndoloop_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles btndoloop.click Dim tekst As String tekst = InputBox("Skriv inn navn:", "VB-2005") ' Initiering av Do While tekst <> "Ferdig" ' Løkkebetingelse lblresultatløkker.text += tekst & vblf 'Løkkekropp tekst = InputBox("Skriv inn navn:", "VB-2005") ' Oppdatering av Loop 18 9
Koden Minikalkis.vb - 1: Private Sub btnerlik_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles btnerlik.click Dim tall1, tall2, sum As Integer Dim regneart As Char ' Sjekker om det er skrevet inn tall i tekstboksene: If IsNumeric(txtTall1.Text.Trim) And IsNumeric(txtTall2.Text.Trim) Then tall1 = txttall1.text tall2 = txttall2.text regneart = lbxregneart.selecteditem If regneart = "-" Then sum = tall1 - tall2 ' Ingen regneart er valgt: lbxregneart.setselected(0, True) ' Velg første regneart sum = tall1 + tall2 ' Skriv ut svar txtsvar.text = sum MsgBox("Du må skrive inn tall") 19 Koden Minikalkis.vb - 2: Private Sub btncaseerlik_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles btncaseerlik.click Dim tall1, tall2, sum As Integer Dim regneart As Char ' Sjekker om det er skrevet inn tall i tekstboksene: If IsNumeric(txtTall1.Text.Trim) And IsNumeric(txtTall2.Text.Trim) Then tall1 = txttall1.text tall2 = txttall2.text regneart = lbxregneart.selecteditem Select Case regneart Case "+" sum = tall1 + tall2 Case "-" sum = tall1 - tall2 Case MsgBox("Du må velge en regneart!") End Select txtsvar.text = sum MsgBox("Du må skrive inn to tall (ikke tekst)") 20 10
Nyttige ting Lage en ny Form og Meny: Meny valg: Project Add Windows Form Formens navn bør starte med frm eks- frmminikalkis (Dette ble ikke gjort på forelesning i dag ) Utform så skjemaet slik du vil ha det slik vi gjorde i minikalkis eks) Legg følgende kode under den knappen/menyvalg som skal starte dette nye skjemaet: Dim nyform As New Minikalkis nyform.show() Input boks: Dim tekst as String Tekst = Inputbox( Skriv inn navn, VB-2005 ) 21 11