Visual Basic, en snabbgenomgång



Relevanta dokument
Översikt över Visual Basic

Omtenta, Programmeringsteknisk översiktskurs, VT06

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Laboration 1 Introduktion till Visual Basic 6.0

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

Användarhandledning Version 1.2

F4. programmeringsteknik och Matlab

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

i LabVIEW. Några programmeringstekniska grundbegrepp

Föreläsning 6: Introduktion av listor

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Klassdeklaration. Metoddeklaration. Parameteröverföring

Logik och kontrollstrukturer

Microsoft Excel. Avancerade funktioner

Arrayer (fält)

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Strukturdiagram. Styra. Algoritmer. Val

JavaScript del 3 If, Operatorer och Confirm

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

PROGRAMMERING A VB 2008 EXPRESS UTVECKLINGSVERKTYGET VISUAL BASIC

Inledande programmering med C# (1DV402) Summera med while"-satsen

En kort text om programmering i C.

TDIU01 - Programmering i C++, grundkurs

Uppgift (poäng) 1 (2) 2 (3) 3 (4) 4 (4) 5 (3) 6 (4) 7 (6) 8 (6) 9 (8) Summa

Data, typ, selektion, iteration

Systemutvecklare SU13, Malmö

Tentamen Grundläggande programmering

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada

Övning2. Variabler. Data typer

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

Föreläsning 2 Programmeringsteknik och C DD1316

SMD 134 Objektorienterad programmering

Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

Språket Python - Del 1 Grundkurs i programmering med Python

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy cards. Slingor

Lite logik. Kap 6: Sid 2

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

DSV A Procedurell programmering 5 poäng Tentamen

Programmering A. Johan Eliasson

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

OOP Objekt-orienterad programmering

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

DOM (Document Object Model) är modellen efter vilken en webbläsaren är uppbyggd. Alla objekt/element i webbläsaren finns hierarkiskt ordnade i DOM.

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

TDIU01 - Programmering i C++, grundkurs

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

Anteckningar 1: Grundläggande saker

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Numeriska Metoder och Grundläggande Programmering för P1, VT2014

Tentamen OOP

Programmering i C, 7,5 hp

TDDC77 Objektorienterad Programmering

Föreläsning 1 & 2 INTRODUKTION

Programmeringsteknik med C och Matlab

C++ Lektion Tecken och teckenfält

[] Arrayer = Indexerad variabel

Föreläsning 3: Booleans, if, switch

1 Texthantering. 1.1 Typen char. Exempel, skriv ut alfabetet

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer

Programmeringsteknisk översiktskurs för yrkeshögskoleprogram

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin)

Beräkningsvetenskap föreläsning 2

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Karlstads Universitet, Datavetenskap 1

PROGRAMMERING 2 GRUNDLÄGGANDE SEMANTIK 4

Exempel: Exempel: Exempel: Exempel: $djur=array("ko","katt","älg"); foreach ($djur as $d) { echo $d. " "; } Resultat. ko katt älg

Övning. Introduktion och förberedelser

Objektorienterad Programmering (TDDC77)

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Tentamen ID1004 Objektorienterad programmering May 29, 2012

System.out.println("Jaså du har "+ antalhusdjur+ " husdjur"); if ( antalhusdjur > 5 ) System.out.println("Oj det var många);

Enkla datatyper minne

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Omgivningar. Omgivningar är viktiga eftersom de avgör vilka namn som är synliga och därmed dessas innebörd och de värden som är förknippade med dem.

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

PROGRAMMERING-JAVA TENTAMINA

Extramaterial till Matematik Y

JAVAUTVECKLING LEKTION 4

Laboration 1. Utgåva 1 Gäller från

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Objektorienterad programmering Föreläsning 4

Objektorienterad Programmering (TDDC77)

Objektorienterad programmering i Java

Att skriva till och läsa från terminalfönstret

Arrayer (vektorer) Murach s: kap Elektronikcentrum i Svängsta AB

LÖSNINGSFÖRSLAG TENTAMEN

Tentamen ID1004 Objektorienterad programmering October 29, 2013

Transkript:

Visual Basic, en snabbgenomgång Variabler och Datatyper En variabel är som en behållare. Olika behållare passar bra till olika saker. I Visual Basic(härefter VB) finns olika typer av behållare för olika datatyper. Här följer en uppräkning av de vanligaste datatyperna. Integer integer eller heltal, kan innehålla värden från -32000 till +32000 (ungefär) Double decimaltal, t.ex. 3.1 eller 89.17 String sträng, eller ord/mening. En rad tecken, t.ex. HEJ Boolean sanningsvärde, sant eller falskt (true/false) Förutom dessa finns det en del andra, som inte används lika flitigt. De är dock också viktiga, därför att det ibland finns anledning att välja alternativ till de fyra vanligaste. Byte håller värde mellan 0 och 255 Long håller värden mellan -2.1 miljarder och plus 2.1 miljarder (ungefär) Single som lagrar decimaltal med grovt räknat hälften av noggrannheten mot Double Slutligen finns det ett par som inte används annat än i specialfall, där de behövs helt enkelt. Currency håller värden för valuta, 19 tecken långt med en fast decimalpunkt mellan tecken 15 och 16. Date håller datum, anpassar sig efter inställningen i den lokala datorn För en sammanställning av dessa, och de antal som jag inte tagit upp, se tabellen på sidan 151 i Jonssons bok (Visual Basic i foku, 3:e upplagan). Deklarering, initiering och tilldelning av värden till variabler Till att börja med ska man alltid deklarera en variabel. Det innebär att man talar om (deklarerar) för programmet att man ska använda en viss typ av variabel med ett visst valt namn. En deklarering kan se ut som följer: Dim value As Integer Detta ska utläsas som: Dimensionera utrymme för ett heltal som kallas value Det som händer då är att det reserveras minnesutrymme för variabeln. Gör man dessutom deklareringen i VB s kodfönster under General så kan variabeln läsas och ändras överalltifrån i ditt program. Det tolkas så att den är publik för hela projektet. Om man av någon anledning inte vill detta kan man ange den som private vilket gör att den är synlig enbart i den modulen den är deklarerad.

För att sedan tilldela en variabel ett värde används lika-med-tecknet ( = ). Här följer ett exempel: value = 5 Detta ska utläsas som: Heltalet value tilldelas värdet 5 Den första gången man tilldelar en variabel ett värde kallas initiering. De olika datatyperna deklareras och initieras på liknande sätt. Dim message As String Message = hejsan Dim hittad As Boolean Hittad = true Dim ränta As Double Ränta = 3.91 I ett VB-program kan man ofta initiera sina variabler i Form_Load(). Man kan också deklarera flera likadana variabler på samma rad om de är av samma typ, t.ex. Dim saldo, ränta, skuld, amortering As Integer Dim meddelande, namn As String Detta spar lite arbete och utrymme och gör ofta det lite lättare att läsa och förstå vad programmeraren tänkt. Arrayer, eller listor En variabel är som nämnts en behållare för att hålla ett värde, ett heltal eller en textsträng t.ex. Men om man vill hålla reda på många variabler som liknar varandra så måste man använda en annan typ av struktur. Om jag vill lagra namnen på alla i en klass så skulle jag kunna skapa variabler för att hålla namn, det vill säga textsträngar (String). Detta skulle då bli en variabel för varje person i stil med: Dim namn1 as String Dim namn2 as String Dim namn3 as String...... Detta blir dock väldigt oflexibelt eftersom det skulle leda till att det måste finnas lika många variabler som personer. Lösningen på detta är att skapa en array eller lista. En lista är en behållare av behållare. Om vi har en behållare som rymmer ett heltal så kan vi ta en hög sådana och lägga på rad efter varandra, vi får då en lista av heltal. En array innehåller alltid samma typer av behållare, det vill säga att arrayen är en lista av strängar eller en lista av heltal eller en lista av decimaltal och så vidare. När man skapar en array så talar man om hur stor

eller lång den skall vara. Nackdelen är att den sedan kommer att vara av den storleken, den är vad man kallar statisk. En lista deklareras till exempel på följande sätt: Dim namnlista (1 To 10) As String Detta skapar en lista av textsträngar som är 10 behållare i rad, den är 10 stor. För att sedan använda sig av denna lista, att ge den tilldelningar, så adresserar man de enskilda positionerna i listan. Det ser ut enligt följande: namnlista(1) = Oscar namnlista(2) = Cornelia namnlista(3) = Didrik namnlista(4) = Lise-Lotte...... Om man inte anger ett intervall för positioner då man skapar listan, utan bara storleken: Dim namnlista(10) As String Så kommer detta att skapa en array med 10 platser, precis som tidigare, men positionerna kommer att vara från 0 till 9. Kontrollstrukturer för val, if och select Kontrollstrukturer behövs för att styra flödet i ett program. Det kan handla om att kontrollera vad som ska hända beroende på olika ingångsvärden eller att användaren gör olika val när programmet används. Det finns två olika grundstenar för detta, if-satsen och select-satsen. Det som skiljer dem åt är i grunden att if reglerar ett antingen-eller-val, det vill säga att antingen är det si eller så är det så. Select kan utifrån ett ingångsvärde styra många utgångar. If then else If-satsen arbetar utifrån ett villkor som du som programmerare ställer upp. Det kan vara till exempel att om du I en varuautomat väljer en vara för 8 kr så kommer den att inuti sig aktivera en if-sats som sager: om istoppade mynt är 8kr eller mer SÅ leverera varan och betala ut eventuell växel ANNARS gör ingenting. Detta skulle I kod se ut enligt följande: Dim betalt, kostnad, växel As Integer Private sub kolla_betalt() kostnad = 8 If betalt >= kostnad then Lämna ut vara Vänta på mer pengar End sub I villkoret används logiska jämförelser, detta beror på att if-satsen jobbar med sanningsuttryck. Om villkoret är SANT så gör jag si ANNARS(om det inte är sant) så gör jag så. Resultatet av

en jämförelse är alltså alltid sant eller falskt (true / false). Man kan göra jämförelser mellan variabler, som exemplet ovan mellan två heltal och vad de har för värde. Man kan också kolla ett enkelt villkor, t.ex. om en variabel eller en kontroll i ett formulär är sann. Det kan t.ex. vara om en kryssruta (checkbox) är ikryssad. If checkbox1.value = 1 then Checkboxen är ikryssad, så detta händer Om checkboxen inte är ikryssad så händer detta istället, då har checkbox1.value värdet 0 De olika möjliga kontroller man kan göra listas i tabellen nedan. Operator Relationsuttryck Beskrivning = A = B A är lika med B, de har samma värde > A > B A är större än B < A < B A är mindre än B >= A >= B A är större än eller lika med B <= A <= B A är mindre än eller lika med B <> A <> B A är inte lika som B, A är skiljt från B Om man vill gör flera jämförelser, t.ex. för att kontrollera om man har lagt i tillräckligt mycket pengar och det finns någon vara kvar så får man kombinera if-satsens jämförelser med logiska uttryck. Ett exempel kan se ut som följer. If betalt >= kostnad AND varor > 0 Then Lämna ut varor Gör det inte Hur dessa logiska jämförelser fungerar visas i tabellen nedan. Relation Logiskt uttryck Beskrivning AND A and B Utrycket är sant om A och B är sanna samtidigt. OR A or B Uttrycket är sant om A eller B eller båda är sanna. NOT not A Uttrycket är sant om A inte är sann. För att lättare kunna kolla hur olika uttryck fungerar kan man konstruera en tabell med sanningsvärden. A B A and B A or B not A 0 0 0 0 1 0 1 0 1 1 1 0 0 1 0 1 1 1 1 0

Jämförelser mellan textsträngar görs enklast med några tillägg till koden. Under General anger man: Option Compare Text Detta betyder att jämförelsen man vill göra med hjälp av jämförelseoperatorn Like rör textsträngar. Det gör också att det inte spelar roll om textsträngarna innehåller små och stora bokstäver. Här följer ett exempel. Option Compare Text Dim söksträng, namn As String If namn Like söksträng Then Namn och söksträng är lika De var inte lika. Om man läser in söksträng i t.ex. en textbox så kan man dessutom ange så kallade wildcards för att ersätta ett eller flera tecken. Tecknet * betyder ett eller flera tecken och? betyder ett tecken. Följdaktligen är Oscar,?scar, Os* och?sca? lika ur detta perspektiv. Man kan också använda konstruktioner med if elseif else om man har behov av det. Det skulle till exempel kunna vara då man har ett intervall där man vill göra en sak då det är mindre än något annat då det är större än och något tredje om det är identiskt med. If betalt > kostnad Then Lämna ut varor och fråga om man vill handla mer if betalt = kostnad Then Lämna ut varor Gör det inte (betalt < kostnad) Slutligen kan man använda if-satser inuti andra if-satser, så kallad nästling. Detta kan vara praktiskt ibland, men är ofta svårt att få ordning på och svårt att felsöka. Man kan ofta försöka undvika detta, t.ex. genom att konstruera det som Select-Case. Select case Om man nu har flera möjliga utfall på ett val, t.ex. jag har en rullgardinsmeny (combobox) där jag kan välja mellan 5 olika motoralternativ när jag köper en ny bil. Det skulle kunna se ut som följer: Dim val As String Dim kostnad As Integer

Select Case val Case 2.0 liter, 190hk Kostnad = 240000 Case 2.0 liter, diesel, 150hk Kostnad = 235000 Case 1.8 liter, 150hk Kostnad = 220000 Case 1.6 liter, 110hk Kostnad = 200000 End Select Detta exempel grundar sig på olika strängar, men man kan likaväl använda det med heltal. Det går till och med att kolla intervall om man vill definiera hur man kan välja föreläsningssalar i MIT-huset beroende på hur många åhörare man har: Dim antal As Integer Dim rum As String Select Case antal Case 1 to 2 rum = Mitt rum Case 3, 5, 7 rum = Konferensrum A case 4, 6, 8 rum = Konferensrum B Case 9 to 16 rum = MA206 Case 17 to 26 rum = MA226 Case 27 to 36 rum = Ma236 Case 37 to 50 rum = MA246 End Select Select-satsen är mycket användbar då man jobbar med kontroller av typen combobox eller om man vill läsa in data från en fil och göra lite olika saker beroende på vad som kommer in. Kontrollstrukturer för upprepning (iteration), loopar Loppar använder man för att upprepa saker man vill ha gjort flera gånger. Det kan till exempel vara att skriva ut innehållet i en array. Det kan också vara att man vill skriva ut innehållet i en fil, eller söka efter något i en fil. Det finns i huvudsak 3 typer av loopar, for, while och do. For-loopen Denna använder man när man vet hur många gånger man vill upprepa något. Det kan till exempel vara att man vill gå igenom en array och leta efter något. Loopen ser t.ex. ut enligt följande:

For index = 1 to 10 step 1 Här gör man det som ska upprepas Next index Detta betyder gå från 1 till 10, ett steg i taget. Nyckelorden är for och next, de är ramen för loopen. I det här fallet är index den variabel som fungerar som räknare för hur många varv man ska köra loopen. Step är något man kan ställa till olika värden beroende på vad man behöver. Man kan strunta i att sätta ut step och då är det satt till 1 som grundinställning. Det innebär att man kan skriva: For index = 1 to 10 Här gör man det som ska upprepas Next index Detta betyder samma sak som det första exemplet. Om man vill söka bakvägen genom en array t.ex. så kan man göra om loopen enligt följande: For index = 10 to 1 step -1 Här gör man det som ska upprepas Next i Det betyder gå från 10 till 1, ett steg i taget. Variabeln index har ingen annan uppgift än att räkna varv i loopen, men den bör deklareras under General: Dim index As Integer Om vi tänker oss att vi har ett formulär med en bildruta (picturebox) som vi vill skriva ut innehållet i en array av namn vi har när vi klickar på en knapp så kan det se ut enligt följande: Dim namnlista (1 to 10) as String Dim index As Integer Private sub command1_click() For index = 1 to 10 step 1 Picbox1.print(namnlista(index)) Next index End sub Det som händer är att loopen går igenom arrayen och skriver ut innehållet på den positionen. Det fungerar precis som om man skulle ha skrivit: Dim namnlista (1 to 10) as String Private sub command1_click() Picbox1.print(namnlista(1)) Picbox1.print(namnlista(2)) Picbox1.print(namnlista(3)) Picbox1.print(namnlista(4))

End sub Picbox1.print(namnlista(5)) Picbox1.print(namnlista(6)) Picbox1.print(namnlista(7)) Picbox1.print(namnlista(8)) Picbox1.print(namnlista(9)) Picbox1.print(namnlista(10)) Om man bara har ett fåtal element i sin lista så kan detta fungera, men det blir ganska snabbt ohållbart. While och Do-While Dessa två loopar används när man inte vet hur många upprepningar man behöver göra. Det kan till exempel var då man ska läsa in innehållet från en fil, då vet man kanske inte på förväg hur många rader det finns i filen. Det kan också vara så att man vill att det ska fortsätta upprepa så länge ett villkor är uppfyllt, eller inte uppfyllt. Det som skiljer dessa båda åt är att Do-While kommer att köras minst en gång, medans While kanske aldrig körs. Här kommer exempel på hur dessa ser ut: While-Wend Dim kostnad, tillgång As Integer Private sub räkna_ut() kostnad = 10 tillgång = 1 End sub While tillgång < kostnad Picbox1.print( Du har för lite ) tillgång = tillgång + 1 Wend Do while Dim kostnad, tillgång As Integer Private sub räkna_ut() kostnad = 10 tillgång = 1 End sub Do Picbox1.print( Du har för lite ) tillgång = tillgång + 1 While tillgång < kostnad Om man skulle uttrycka sig på svenska så skulle While-Wend bli så länge tillgång är mindre än kostnad skriv ut och öka tillgång. Däremot skulle Do-While utläsas skriv ut och öka tillgång, så länge tillgång är mindre än kostnad fortsätt skriv ut och öka tillgång. Om tillgång hade varit 20 i exemplet ovan så hade inte While-Wend körts alls, men Do-While hade körts en gång. Det finns generellt fler tillfällen då en While-Wend-konstruktion passar in.