Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic



Relevanta dokument
PROGRAMMERING A VB 2008 EXPRESS UTVECKLINGSVERKTYGET VISUAL BASIC

Laboration 1 Introduktion till Visual Basic 6.0

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

Visual Basic, en snabbgenomgång

Inledande programmering med C# (1DV402) Ditt första C#-program med Visual Studio

Programmeringsteknisk översiktskurs för yrkeshögskoleprogram

Snabbguide Visma Compact API Copyright Visma Spcs AB

Objektorienterad programmering Föreläsning 2

Introduktion till programmering och Python Grundkurs i programmering med Python

Programmeringsteknik med C och Matlab

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

JavaScript del 3 If, Operatorer och Confirm

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Föreläsning 3. Programmering, C och programmeringsmiljö

Extramaterial till Matematik Y

Komponenter med COM (och COM+/VC++ 7.0)

Windows Forms Winstrand Development

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

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

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

15 Skapa en Start-Diskett

Pascal... Pascal. Pascal... Pascal...

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

Pascal. reserverade ord fördefinierade funktioner och procedurer egendefinierade funktioner, procedurer och objekt

Så här skriver du ditt första program i C++

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

Extramaterial till Matematik Y

SMD 134 Objektorienterad programmering

Design av interaktiv multimedia. Läs i förväg om det som övningarna kommer att beröra. Träna hemma både före och efter övningarna.

Övning: Arbeta med Azure Explorer

Objektorienterad Programmering (TDDC77)

Användarhantering Windows 7 I denna laboration kommer vi att skapa nya användare och grupper och titta på hur man hantera dessa.

Skapa modeller i Vikingen

OOP Objekt-orienterad programmering

Användarmanual TextAppen Online

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

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

PROGRAMMERING A VC# 2008 EXPRESS UTVECKLINGSVERKTYGET VISUAL C#

Övning2. Variabler. Data typer

Objektorienterad programmering i Java

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

Programmering för språkteknologer I, VT2012. Rum

Innehåll i detta dokument

Monitor Pro V7.x SCADA. Förstå och skapa symboler

Lab5 för prgmedcl04 Grafik

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

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

Paneler - VCPXX.2. Programmeringsmanual för VCP-paneler. Revision 2

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

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

Frekvenstabell över tärningskast med C#

7 GRUNDERNA I PROGRAMMERING

Introduktion till algoritmer - L0 - Grunder i C++ Matematikgymnasiet, Läsåret L0 - Grunder i C++

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Föreläsning 3. Programmering, C och programmeringsmiljö

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

Programmering B med Visual C

Användarhandledning Version 1.2

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

Grundkurs 1 IKT Filhantering

Dokument i klassens aktivitet

Simulering med ModelSim En kort introduktion

F4. programmeringsteknik och Matlab

Datorlaboration 0, Programmering i C++ (EDA623)

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

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

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

Whack-a-Witch. Introduktion. Nivå

Objektorienterad programmering med Java Swing: Händelser, lyssnare och applets

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

Frekvenstabell över tärningskast med C#

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

Övningsuppgifter till föreläsning 2 Variabler och uttryck

Föreläsning 1 & 2 INTRODUKTION

Malmö högskola 2007/2008 Teknik och samhälle

Introduktion C-programmering

Här beskrivs Eclipse, den programutvecklingsmiljö som utnyttjas i programmeringskurserna. Mera information finns på:

Lab1 Introduktion. 1 Syfte. 2 Innehåll Win32API Skapa trådar Kritiska sektioner Mailslothantering. 3 Förberedelse & Tips

kl Tentaupplägg

Sphero SPRK+ Appen som används är Sphero Edu. När appen öppnas kommer man till denna bild.

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

TDIU01 - Programmering i C++, grundkurs

Programmering. Scratch - grundövningar

Skärmtangentbordet som är enkelt att använda både med mus, touchskärmar och interaktiva whiteboards

Vilken skillnad gör det var du placerar det? Prova båda.

Föreläsning 6: Introduktion av listor

Datorlaboration 0, Programmering i C++ (EDAF30)

Klassdeklaration. Metoddeklaration. Parameteröverföring

Elektroteknik MF1016 föreläsning 9 MF1017 föreläsning 7 Mikrodatorteknik

Labb LABB 1. Databassagan och en rundtur i databasers märkliga värld. Plushögskolan Frågeutveckling inom MSSQL - SU14

Programmering A. Johan Eliasson

Objektorienterad programmering Föreläsning 6. Mer om klasser och typer Namnrymder Inkapsling Synlighet Statiska variabler Statiska metoder

Programmering av. PADDY mini

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Laboration: Grunderna i MATLAB

Cadcorp SIS. Användarkurs

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

Räkna med ASP.NET Web Forms

Transkript:

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Inledning Starta Microsoft Visual Studio 2005. Välj create Project Välj VB + Vindows Application och välj ett nytt namn (WindowsApplication1) på ditt projekt, text Labbgrupp12.

Kompilering g Tool Box Solution Explorer Form-bladet Output fönstret Properties - fönster Du får nu upp följande fönster på din dator. 1. Visar Form-bladet och senare kommer här också visas en flik för din programkod. 2. Solution Explorer visar alla filer kopplade till ditt projekt. 3. properties fönstret visar egenskaper på de objekt som du kommer att använda. In detta fall visas egenskaperna för Form, d.v.s. Form-bladet. Senare kommer här visas egenskaper på knappar och textfönster och menyer. Du kan här ändra på egenskaper som är kopplade till varje objekt. Ex. texten på en knapp. 4. Det sista fönstret är output fönstret. Här visas resultatet av din kompilering av programmet, d.v.s. när programmet översätter ditt program till maskinkod. Testa och tryck på den gröna pilen på meny-bar. Det som händer är att programmet kopineras och en exekverbar fil skapas och körs igång. Det skall nu öppnas ett nytt fönster som ser ut som Form1. Testa och se vad du kan göra med det. Avsluta med att trycka på X. Detta avslutar din testning av programmet (debugging) och du kan fortsätta att programmera. Programmering i Visual Basic går till på följande sätt. Man utgår alltid från objekt i form av knappar, menyer, textfönster ect. och till dessa kopplar man sedan olika funktioner. Funktionerna som man vill ha utfört beskriver man med programspråk, i det här fallet använder vi oss av VB programspråk. Enkelt exempel med Knapp-objekt. Från toolbar på vänster kant väljer du ett button objekt. Ta det och flytta det till Form1 med hjälp av drag and dropp. Du hittar objeket under Common controlls.

Form1 skall nu se ut så här. I properties -fönstret till höger i bild ser du vilka egenskaper som är kopplade till denna knapp. Hitta egenskaper Text och ändra denna till Exit. Det som händer nu är att texten på knappen ändras till Exit. Det finns fler egenskaper kopplade till detta objekt undersök gärna. Kan du byta storlek på texten. Ändra Font. Byta färg? Testa att köra igång programmet. Vad händer?? Vi har ännu inte kopplat någon funktion till knappen. Stäng ner Form1 om du har denna igång och återgå till programmet. Dubbelklicka på Exit -knappen. Du får nu upp följande program kod. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click End Class Det som står mellan Private Sub och deklarerar funktionen som hanterar när du klickar på knappen. För att programmet skall avslutas måste du ange detta. Det görs med följande kod: Application.Exit() OBS! När du skrivit Application. visas en lista med fuktioner som du kan koppla till Application. Välj Exit. Koden skall efter detta ha följande utseende: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Application.Exit()

End Class Testa att köra igång programmer. Vad hander när du trycker på Exit -knappen. Om programmet avslutas har du gjort rätt. Exempel med Text-Objekt. Lägg till en TextBox-objekt från Tolbox med hjälp av drag and drop. Kolla vilka egenskaper som man kan ändra i properties förnstret. Lägg även till en ny knapp och kalla denna för Hello. Ditt Form1 skall nu se ut ungefär så här: Testa att skriva in text i textfältet. Du kan skriva in, radera, kopiera in text ect. utan att du behövt skriva en rad kod. För att få texten att vara högerställd istället vär vänsterställd så sätter du RigthToLeft i textfönstrets egenskaper till Yes. Gör det. Testa även att skriva in text, exempelvis Hej i egenskapen Text för TextBox1. Vad händer? Det som händer nu är att TextBox1.Text innehåller textsträngen Hej. Vi skal nu göra så att när man trycker på Hello så skrivs Hello world ut i textfönstret. Dubbelklicka på Hello-knappen. Du kommer nu till programkodsfönstret och det ser nu ut så här: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Application.Exit() Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click End Class Button2_Click är namnet på funktionen som aktiveras när du trycker på Hello-knappen. Vi skall nu lägga till kod så att text visas. Börja med att skriva TextBox1. När du skriver

punkten så får du upp ett fönster med egenskaper som är kopplade till TextBox1. Dessa egenskaper är även de som du hittar i properties fönstret. Välj Text och tilldela TextBox1.Text värdet Hello World. Din kod skall nu se ut så här! Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Application.Exit() Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click TextBox1.Text = "Hello World" End Class Testa programmet och se vad som händer! Lägg till ytterligare en knapp och kalla den för Clear. Lägg till följande kod för Button3 Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click TextBox1.Clear() Genom att lägga till TextBox1.Clear() raderas texten i textfältet. Testa programmet!! Vad händer om du skriver in text och tycker på clear? Ditt program skall nu se ut så här! Redovisa för labhandledaren att du kommit så här långt om du blivit godkänd så skall vi gå vidare och programmera en enkel kalkylator.

En enkel kalkylator! Börja med att skapa ett nytt projekt. Lägg sedan in knappar (Button) och textfönster (TextBox) enligt figur nedan. Namnge även knapparna enligt figuren. Tips! Du kan markera ett objekt (ex. knapp) och göra copy/paste så att du får ett nytt objekt. Analogt kan du alltså kopiera flera objekt åt gången, ex. en rad med knappar. Dubbelklicka på knappen för ettan och lägg till följande kod (kod som är markerad med fet stil): Dim FirstDigit As Boolean = True Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 'Kollar om det är första siffran annars läggs den till. If FirstDigit Then TextBox1.Text = 1 FirstDigit = False Else TextBox1.Text = TextBox1.Text + "1" End Class Kommandot Dim används när man deklarerar en variabel. En variabel är till för att lagra tex ett tal en textsträng. I detta fall används den för att hålla reda på om det är första gången som vi tryckt på en siffra eller ej. Har man redan matat in en siffra skall den nya siffran läggas till den gamla och det är det som händer om FirstDigit är False. Försök förstå vad koden gör!! If- Then-Else-End satsen skall tolkas om FirstDigit är sann då skall... annars... slut. OBS! Din funktion för knapp1 kanske heter något annat än Button1_Click beroende på vilken ordning du la ut knapparna. Innan vi går vidare och gör samma sak för alla de andra siffrorna så skall vi lägga till funktionen som raderar texten (talet) som står i textfönstret. Dubbelklicka på CE-knappen och lägg till följande kod:

Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click 'Clear textbox TextBox1.Clear() TextBox1 skall tolkas som ett objekt som vi kan manipulera. I detta fall lägger vill vi radera det som står i TextBox1. Detta gör vi genom att utföra funktionen Clear() på TextBox1. FirstDigit sätts till True för att tala om för programmet att inget nytt tal har matats in. Upprepa proceduren som du gjorde på knapp 1 för alla de övriga siffrorna 0-9 genom att byta ut ettan i koden mot motsvarande siffra. Testa efter varje gång att det fungerar genom att kompilera (gröna pilen) och provköra programmet. Lägga till Operatorerna Nästa steg är att lägga till operatorerna +,-,*,/. För att göra en operation mellan två tal behöver vi kunna spara tidigare värden i ett minne. Detta gör vi genom att lägga till en variabel, Accumelator. Vi lägger också till en variabel som håller reda på vilken operation som vi gör. Denna behövs när vi sedan trycker på = -knappen. Mer om det senare. Dina variabledeklarationer skall nu ha följande utseende: Dim FirstDigit As Boolean = True Dim Accumelator As Double = 0.0 Dim Operation As Char = " "c Dubbelklicka på plus-knappen och lägg till följande kod (obs din knapp kan ha annat nummer): Private Sub Button15_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button15.Click Accumelator = Accumelator + CDbl(TextBox1.Text) TextBox1.Text = (Accumelator).ToString Operation = "+"c Koden gör följande: När man klickar på plus-knappen så adderas värdet i textfönstret till ett minne, variablen Accumelator. Detta görs för att skall kunna addera flera tal innan du trycker på =, dvs en sekvens av additioner. Funktionen.ToString omvandlar ett tal till en textsträng så att det kan skrivas ut som text. Funktionen CDbl() gör dett motsatta, dvs. omvandlar en textsträng till tal. Operation lagrar undan vilken som var den senaste operationen som du använde. Detta behövs för att sedan när du slutligen trycker på =. Det är då som den sista operationen utförs. Variablen FirstDigit sätts till sant, eftersom vi skall börja om och mata in ett nytt tal när vi tryckt på operatorknappen, +. Testa och kör programmet. Vad händer om du trycker på + operatorn flera gånger utan att ha matat in ett nytt tal? Gämför med Kalkylatorn i Windows. Vad är problemet? Ett sätt att lösa detta problem är att vi använder oss av variablen FirstDigit igen och kollar att vi verkligen har matat in ett nytt tal innan vi utför operationen. Lägg till följande kod: Private Sub Button15_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button15.Click If Not FirstDigit Then

Accumelator = Accumelator + CDbl(TextBox1.Text) TextBox1.Text = (Accumelator).ToString Operation = "+"c Fungerar det bättre? Om vi skall utföra en en sekvens av operationer behöver vi även hålla reda på det första talet som vi matar in eftersom ingen operation skall utföras på det talet, det skall bara läggas in i minnet. Modifiera koden ytterligare en gång genom att lägga till följande kod + en ny variabel FirstNumber. Dim FirstDigit As Boolean = True Dim FirstNumber As Boolean = True Dim Accumelator As Double = 0.0 Dim Operation As Char = " "c Private Sub Button15_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button15.Click If Not FirstDigit Then If FirstNumber Then Accumelator = CDbl(TextBox1.Text) FirstNumber = False Else Accumelator = Accumelator + CDbl(TextBox1.Text) TextBox1.Text = (Accumelator).ToString Operation = "+"c End Class Ett problem återstår. Ovan kod fungerar bara om gör en sekvens av operationer av samma operatortyp, ex +. Vi behöver alltså även hålla reda på senaste operatorn som vi använt. Vi börjar med att lägga till en ny funktion till programmet. En funktion är en programmdel som kan anropas från flera delar i programmet. Lägg till följande kod under din variabledekleration: Private Sub DoOperation(ByVal Acc1 As Double, ByVal Acc2 As Double) If Operation = "+"c Then Accumelator = Acc1 + Acc2 If Operation = "-"c Then Accumelator = Acc1 - Acc2 If Operation = "*"c Then Accumelator = Acc1 * Acc2 If Operation = "/"c Then Accumelator = Acc1 / Acc2

Private Sub Button15_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button15.Click If Not FirstDigit Then If Operation = " "c Then Operation = "+"c If FirstNumber Then Accumelator = CDbl(TextBox1.Text) FirstNumber = False Else DoOperation(Accumelator, CDbl(TextBox1.Text)) TextBox1.Text = (Accumelator).ToString Operation = "+"c DoOperation är en funktion som har två invariabler Acc1 och Acc2. Beroende vilken som är den senaste operatorn som används så utförs denna. Denna funktion anropas sedan från + knappen (Button15_Click) Upprepa nu proceduren för alla operatorer genom att byta ut + till motsvarande operator. Nu skall vil avsluta de grundläggande operationerna med att lägga till = funktionen. Dubbleklicka på knappen och lägg till följande kod och en ny variabel Accumelator2. Dim FirstDigit As Boolean = True Dim FirstNumber As Boolean = True Dim Accumelator As Double = 0.0 Dim Accumelator2 As Double = 0.0 Dim Operation As Char = " "c Private Sub Button14_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button14.Click If Not FirstDigit Then Accumelator2 = CDbl(TextBox1.Text) DoOperation(Accumelator, Accumelator2) TextBox1.Text = (Accumelator).ToString FirstNumber = True Här ser du nu varför vi behöver spara vilken den sista operationen är som vi gör. Det är först här som det slutgiltiga svaret räknas ut. Vi behöver här också en ny variabel, Accumelator2, för att hålla reda på det sista talet som vi matat in. Detta behövs för att detta talet skall kunna adderas på nytt om vi utför flera tryck på =, dvs sista operationen repeteras. If satsen Not FirstDigit försäkrar oss om att det är det sista talet som vi sparar i Accumelator2. Variablen FirstDigit och FirstNumber sätts till True för att tala om att en ny inmatning är tänkt att börja. Testa att kompilera programmet. Fungerar det som det var tänkt?

Övriga knappar! Har du kommit så här långt så kan du säkert metodiken. Här följer kod för de övriga knapparna. Backspace: Om där finns något att ta bort >0 så tar vi bort det. If TextBox1.Text.Length > 0 Then TextBox1.Text = TextBox1.Text.Remove((TextBox1.Text.Length - 1), 1) Square rot: Funktion för kvadratrot finns inbyggd I VB och anropas så här: TextBox1.Text = (System.Math.Sqrt(CDbl(TextBox1.Text))).ToString 1/x: TextBox1.Text = (1.0 / CDbl(TextBox1.Text)).ToString +/-: Vi bytar tecken på värdet i textrutan. TextBox1.Text = (-CDbl(TextBox1.Text)).ToString C: Clear all. Allt resetas och alla variabler återfår sitt ursprungliga värde. TextBox1.Clear() FirstNumber = True Accumelator = 0.0 Accumelator2 = 0.0 Operation = " "c TextBox1.Text = 0,: Decimalkommat blir lite mer kod. Vi måste kontrollera att vi inte matar in flera decimaltecken. Detta gör vi genom att kolla om textfältet redan innehåller ett decimaltecken. Om inte, i så fall lägger vi till ett decimaltecken. Vi kollar ochså om det är första talet (knappen) som vi trycker på. I så fall lägger vi till en nolla framför. If FirstDigit Then TextBox1.Text = "0," FirstDigit = False Else If Not TextBox1.Text.Contains(","c) Then TextBox1.Text = TextBox1.Text + "," När du är klar med allt testa programmet och kontakta labhandledaren och visa programmet!