Transcript
Page 1: Programmering A C# - mathprog.semathprog.se/.../uploads/Programmering-A-CSharp-Kompendie-20100… · Programmering A – C# ... 3.1 från och ... att kunna få 1, 2 ,3 eller 4 som

 

 

 

   

Programmering A – C#  VT 2010  Ett kompendie över Programmering A (50p) i c#  Stefan Fredriksson 2010‐02‐08  

Page 2: Programmering A C# - mathprog.semathprog.se/.../uploads/Programmering-A-CSharp-Kompendie-20100… · Programmering A – C# ... 3.1 från och ... att kunna få 1, 2 ,3 eller 4 som

      

 

 

Innehåll Hjälp och referenser ................................................................................................................................ 3 

Kap 1 – Introduktion ................................................................................................................................ 3 

Steg‐för‐steg ........................................................................................................................................ 3 

Kapitel 2 ‐ Variabler ................................................................................................................................. 8 

Att göra .............................................................................................................................................. 10 

Kapitel 3 – IF‐satsen .............................................................................................................................. 11 

Att Göra ............................................................................................................................................. 13 

Kap 3.5 – IF‐satser och färger ................................................................................................................ 14 

Att göra .............................................................................................................................................. 14 

Kap 4 – Slumptal .................................................................................................................................... 16 

Att göra .............................................................................................................................................. 18 

Kap5 – Timer .......................................................................................................................................... 19 

Att göra: ............................................................................................................................................. 22 

Kapitel 6 – Picturebox ............................................................................................................................ 23 

Att göra .............................................................................................................................................. 24 

 

     

Page 3: Programmering A C# - mathprog.semathprog.se/.../uploads/Programmering-A-CSharp-Kompendie-20100… · Programmering A – C# ... 3.1 från och ... att kunna få 1, 2 ,3 eller 4 som

      

 

 

Hjälp och referenser http://csharpskolan.se/index.php (Site på svenska om C#) 

http://www.java2s.com (Tutorials till allt från C till Microsoft Word) 

http://iwtjanster.idg.se/webbstudio/ (Onlinetutorials i SQL, JAva, C# och mycket mer. På svenska) 

Kap 1 – Introduktion Ladda ner Sharpdevelop 3.1 från http://icsharpcode.com/OpenSource/SD/Download/  och installera det på din dator.  

Gå till Fronter och ladda ner programmet P1HelloWorld.exe. Det ligger i mappen ”Övningar” i rumment ”Åk 1”. Gör ett program som gör samma sak som P1HelloWorld.exe. 

Steg­för­steg 1. Skapa en ”New solution” 

  

   

Page 4: Programmering A C# - mathprog.semathprog.se/.../uploads/Programmering-A-CSharp-Kompendie-20100… · Programmering A – C# ... 3.1 från och ... att kunna få 1, 2 ,3 eller 4 som

      

 

 

2. Markera ”Windows Application” och döp ditt program till något, exempelvis Program1. Använd helst inte svenska tecken. 

  

   

Page 5: Programmering A C# - mathprog.semathprog.se/.../uploads/Programmering-A-CSharp-Kompendie-20100… · Programmering A – C# ... 3.1 från och ... att kunna få 1, 2 ,3 eller 4 som

      

 

 

3. Lägg märke till de tre markerade delarna.  ‐ Till vänster välj ”Windows Forms”  ‐ I mitten hoppar man mellan designläge och kodläge ‐ Till höger finns alla egenskaper och attribut för det markerade objektet (detta fall själva fönstret) 

 

   

Page 6: Programmering A C# - mathprog.semathprog.se/.../uploads/Programmering-A-CSharp-Kompendie-20100… · Programmering A – C# ... 3.1 från och ... att kunna få 1, 2 ,3 eller 4 som

      

 

 

4. Till vänster under ”Toolbox” finns en mängd olika komponenter som vi kan använda genom ”dra och släpp” till vårt program. Dra en knapp (button), en textfält (label) och en textruta (textbox) till ditt program. Programmet kommer automatiskt att döpa dessa till button1, label1 och textbox1. Detta går att ändra genom att markera objektet och ändra ”name” under egenskaperna (properties) till höger.   

    

   

Page 7: Programmering A C# - mathprog.semathprog.se/.../uploads/Programmering-A-CSharp-Kompendie-20100… · Programmering A – C# ... 3.1 från och ... att kunna få 1, 2 ,3 eller 4 som

      

 

 

5. Nu vill vi att saker ska hända när vi trycker på knappen. Vi vill att det som står i textrutan (textbox1) ska skrivas in i textfältet (label1).  Vi vill också att texten som står på knappen ska ändras. Alla tre objekt som vi har skapat har ett attribut som heter ”Text”. Detta attribut är det som står på knappen, i textfältet eller i textrutan.  Dubbelklicka på knappen, då hoppar programmet till kodläget och den skapar automatiskt en funktion som heter Button1Click (). Det som vi skriver mellan måsvingarna {} kommer 

att hända när vi trycker på knappen.  Koden nedan gör två saker: ‐ Ändrar texten på knappen till ”Knapp”. ‐ Ändrar texten i label1 till det som står i textbox1.  

 

Kör ditt program (tryck på F5) och kontrollera så att det fungerar som det är tänkt. 

   

Page 8: Programmering A C# - mathprog.semathprog.se/.../uploads/Programmering-A-CSharp-Kompendie-20100… · Programmering A – C# ... 3.1 från och ... att kunna få 1, 2 ,3 eller 4 som

      

 

 

Kapitel 2 ­ Variabler  

En variabel i programmering kan ses som en låda där vi sparar ner något som vi ska använda senare i programmet. Det finns olika typer av variabler beroende på vad vi ska spara i dem. Vi ska börja med att titta på en int. En int är en variabel där vi sparar ett heltal, t.ex 14, 3004 eller ‐45. Först börjar vi med att deklarera (skapa) variablen. 

int a; 

Nu har vi skapat låda som heter a och i den kan vi stoppa ett heltal för att det är en int. Än så länge finns ingenting i lådan, den är helt tom. Vi kan när som helst stoppa in något i lådan, det enda vi måste tänka på är att vi bara kan stoppa in heltal. 

a = 42;

Nu har vi stoppat in talet 42 i lådan. Vi skapar ett par variabler till 

int b; int c; 

 Vi har skapat två variabler till som vi döpt till b och c. Vi stoppar in (det kallas tilldela) talet 10 i variablen b; 

b = 10;

Eftersom båda variablerna a och b är tal (int) kan vi räkna med dem. Vi tar och summerar dem och 

stoppar in svaret i variabeln c 

c = a + b; 

Nu innehåller variabeln c talet 52 (42+10).   

Variabelnamn  Innehåller int  Heltal, ‐2miljarder till 2miljarderlong  Heltal, väldigt stora taldouble  Decimaltal char  Ett tecken string  Textsträngarbool  True eller false   

Page 9: Programmering A C# - mathprog.semathprog.se/.../uploads/Programmering-A-CSharp-Kompendie-20100… · Programmering A – C# ... 3.1 från och ... att kunna få 1, 2 ,3 eller 4 som

      

 

 

Vi gör ett litet program som kan summera två tal. Skapa ett program som ser ut ungefär så här: 

 

I rutorna ska vi skriva in två tal. När vi trycker på knappen ska dessa tal summeras och svaret ska skrivas ut i label1. Dubbelklicka på kappen för att få fram funktionen som körs när vi trycker på knappen. Vi vill nu skapa tre stycken variabler av typen int. I den första ska vi spara det som står I 

textBox1, i den andra ska vi spara det som står i texBox2. I den tredje sparar vi summan av de två första. Jag döper mina variabler till i1, i2 och summa 

 

 

 

 

Nu är variablerna skapade och nästa steg är att stoppa in talen som står i rutorna. Här kommer ett problem, det som står i rutorna är ju text och inte tal så vi måste konvertera (göra om) det som står i textrutor till tal. Så, vi vill göra om det som står i textrutorna till tal och stoppa in i våra variabler. Det går till på följande sätt; 

 

 

 

   

void Button1Click(object sender, EventArgs e) {

int i1; int i2; int summa; } 

i1 = Convert.ToInt32(textBox1.Text); i2 = Convert.ToInt32(textBox2.Text); 

Page 10: Programmering A C# - mathprog.semathprog.se/.../uploads/Programmering-A-CSharp-Kompendie-20100… · Programmering A – C# ... 3.1 från och ... att kunna få 1, 2 ,3 eller 4 som

      

 

 

10 

Nu summerar vi dessa två tal och sparar i variabeln summa  

  Slutligen vill vi skriva in svaret vi fick i vår label1. Men, i en label står det text, inte tal, så vi måste göra om vårt tal till text innan vi stoppar in det. Det fungerar på nästan samma sätt som åt andra hållet. 

 

 

Nu ska det fungera. Hämta gärna hem exempel2.exe från fronter om du vill titta hur det ser ut. Gör nu ett eget program som fungerar på samma sätt.  

 

Att göra Hämta hem program P2Räknaren.exe från Fonter. Gör ett eget program som fungerar på samma sätt. 

 

Variabelnamn  Innehåller 

int  Heltal, ‐2miljarder till 2miljarder

long  Heltal, väldigt stora tal

double  Decimaltal

char  Ett tecken

string  Textsträngar

bool  True eller false 

 

   

summa = i1+i2;

label1.Text = Convert.ToString(summa);

Page 11: Programmering A C# - mathprog.semathprog.se/.../uploads/Programmering-A-CSharp-Kompendie-20100… · Programmering A – C# ... 3.1 från och ... att kunna få 1, 2 ,3 eller 4 som

      

 

 

11 

Kapitel 3 – IF­satsen  

Ibland vill man att vissa saker ska hända bara om något annat villkor är uppfyllt. Då används If‐satser.  

Generellt ser IF‐satsen ut så här: 

 

 

 

   

if (Något är sant) { Gör detta!; } else if (Något annat är sant) { Gör detta!; } //(Här kan det komma flera else if) else { I alla andra fall, gör detta!;

Page 12: Programmering A C# - mathprog.semathprog.se/.../uploads/Programmering-A-CSharp-Kompendie-20100… · Programmering A – C# ... 3.1 från och ... att kunna få 1, 2 ,3 eller 4 som

      

 

 

12 

Vi gör ett litet program för att demonstrera. 

 

• Två stycken textbox där vi ska skriva in tal. 

• En knapp. 

• En label där vi ska skriva ut ett par saker.  

När man ska trycker på knappen följande hända: 

• Om talet i textbox1 är större än det i textbox2 skriver den i label1: [Första talet] är större än [Andra talet].  Det är värdena av [Första talet] och [Andra talet] som ska skrivas ut, t.ex. 17, 10 eller vad det nu är. 

• Om talet i ruta B är större än det i ruta A skriver den i label1: [Andra talet] är större än [Första talet]. 

• Om talen är lika ska den skriva ut: [Första talet] och [Andra talet] är lika stora. 

   

Page 13: Programmering A C# - mathprog.semathprog.se/.../uploads/Programmering-A-CSharp-Kompendie-20100… · Programmering A – C# ... 3.1 från och ... att kunna få 1, 2 ,3 eller 4 som

      

 

 

13 

Den gröna texten är kommentarer som programmet inte kommer att bry sig om. Man använder kommentarer för att förklara vad kod gör till andra som läser den eller för att man själv ska komma ihåg det senare. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Att Göra Programmet heter exempel3.exe och ligger på Fronter.  När ni gjort och förstått det kan ni ladda hem och göra P3MyndigKollen.exe. 

   

void Button1Click(object sender, EventArgs e) { //Skapa två variabler int a; int b; //Gör om det som står i textrutorna till int //och stoppa in i a och b a = Convert.ToInt32(textBox1.Text); b = Convert.ToInt32(textBox2.Text); //Om a är större än b… if (a > b) { //Gör detta label1̣Text = a + " är större än " + b; } //Annars b är större än a… else if (b > a) { //Gör detta label1̣Text = b + " är större än " + a; } //I alla andra fall än ovan… else { //Gör detta label1̣Text = a + " och " + b + " är lika stora"; } } 

Page 14: Programmering A C# - mathprog.semathprog.se/.../uploads/Programmering-A-CSharp-Kompendie-20100… · Programmering A – C# ... 3.1 från och ... att kunna få 1, 2 ,3 eller 4 som

      

 

 

14 

Kap 3.5 – IF­satser och färger För att få lite personlig prägel på sitt program ska vi titta på hur man kan ändra färger. 

Vi gör en enkel design med en knapp och en label och en groupbox med två stycken radiobuttons. När vi trycker på knappen ska färgen på bakgrunden, knappen och texten ändras till rött eller grönt beroende på vad man har valt. 

 

 

 

Att göra Gör samma exempel som ovan. Programmet finns att ladda ner från Fronter som exempel3.5.exe.  Ladda sedan ner oh gör ett program som fungerar som P3.5FärgVäljaren.exe. 

 

Variabelnamn  Innehåller 

Int  Heltal, ‐2miljarder till 2miljarder

Long  Heltal, väldigt stora tal

Double  Decimaltal

Char  Ett tecken

String  Textsträngar

Bool  True eller false 

   

Page 15: Programmering A C# - mathprog.semathprog.se/.../uploads/Programmering-A-CSharp-Kompendie-20100… · Programmering A – C# ... 3.1 från och ... att kunna få 1, 2 ,3 eller 4 som

      

 

 

15 

exempel3.5.exe 

 

 

   

void Button1Click(object sender, EventArgs e) { //Om radioButton1 är markerad (notera att det är två stycken “=” if (radioButton1.Checked == true) {

//Detta ändrar bakgrundsfärgen på knappen button1.BackColor = Color.Red; //Detta ändra texten på knappen button1.ForeColor = Color.Green; //Detta ändra bakgrundsfärgen på programmet

this.BackColor = Color.Red; //Detta ändrar textfärgen på radiobuttons

radioButton1.ForeColor = Color.Green; radioButton2.ForeColor = Color.Green; //Detta ändrar färgen på textet i label1. label1.ForeColor = Color.Green; } //Annars om den andra radiobutton2 är markerad ska följande hända else if (radioButton2.Checked == true) { button1.BackColor = Color.Green; button1.ForeColor = Color.Red; this.BackColor = Color.Green; radioButton1.ForeColor = Color.Red; radioButton2.ForeColor = Color.Red; label1.ForeColor = Color.Red; } }

Page 16: Programmering A C# - mathprog.semathprog.se/.../uploads/Programmering-A-CSharp-Kompendie-20100… · Programmering A – C# ... 3.1 från och ... att kunna få 1, 2 ,3 eller 4 som

      

 

 

16 

Kap 4 – Slumptal Ofta i programmering vill man ta fram slumptal for olika ändamål. Vad vi måste göra är att skapa ett objekt som vi kan använda för att ta fram slumptal i programmet. Koden för detta är ganska enkel: 

 

 

I fallet ovan har vi skapat ett objekt av typen Random och vi har döpt vår till myRandom. En skillnad från innan är att vi skapar objektet utanför knappfunktionen. Det innebär att alla funktioner kommer att kunna använda sig av samma objekt och vi behöver inte skapa nya. Mer om det senare. Titta på koden nedan som visar var ni ska skriva in det någonstans. Det är i MainForm.cs. 

 

 

 

 

 

För att nu skapa ett tal skapar vi först en variabel av typen int, sedan använder vi den myRandom som vi skapat tidigare för att ta fram ett slumptal. Denna kod skriver vi där vi vill att den ska hända, till exempel när vi trycker på knappen 

 

 

 Talen 1 och 5 bestämmer mellan vilka tal vi vill att slumptalet ska vara. Vi kommer att kunna få 1, 2 ,3 eller 4 som slumptal med dessa värden. 

 

 

 

   

Random myRandom = new Random();

public partial class MainForm : Form { //Här skapar vi vår random Random myRandom = new Random(); public MainForm() { 

int islumptal; islumptal = myRandom.Next(1, 5); 

Page 17: Programmering A C# - mathprog.semathprog.se/.../uploads/Programmering-A-CSharp-Kompendie-20100… · Programmering A – C# ... 3.1 från och ... att kunna få 1, 2 ,3 eller 4 som

      

 

 

17 

Nu skapar vi en enkel design som innehåller 

2 textBox 1 button 3 label 

 

 

Som ni ser har jag gjort storleken på den label där talet ska skrivas ut större. Ni får gärna ändra färger, bakgrunder o.s.v. på alla delar i programmet. 

När man trycker på knappen ska det skrivas in ett tal i label1 som är mellan det som står i Min‐rutan och det som står i Max‐rutan. 

 

 

 

 

 

 

 

   

Page 18: Programmering A C# - mathprog.semathprog.se/.../uploads/Programmering-A-CSharp-Kompendie-20100… · Programmering A – C# ... 3.1 från och ... att kunna få 1, 2 ,3 eller 4 som

      

 

 

18 

exempel4.exe 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Att göra Efter ni har gjort exempel4.exe (ovan) laddar ni hem P4Random.exe från fronter och gör ett sådant program.  Ge programmet en personlig prägel med färger och bakgrunder ☺ 

[…] public partial class MainForm : Form

{ //Här skapar vi vårt objekt //och döper det till myRandom

Random myRandom = new Random(); public MainForm() […] void Button1Click(object sender, EventArgs e) { //Skapa först 3 variabler som är int (heltal) int imin; int imax; int islumptal; //Ta det som står i textBox1, //gör om det till Int32 och spara i variabeln imin imin = Convert.ToInt32(textBox1.Text); //Gör samma sak med det som står i textBox2 //och stoppa in i imax imax = Convert.ToInt32(textBox2.Text); //Använd myRandom för att ta fram ett värde //mellan imin och imax och spara detta tal i islumptal islumptal = myRandom.Next(imin, imax); //Ändra talet till string (vanlig text) //och skriv ut i label1 label1.Text = Convert.ToString(islumptal); } 

Page 19: Programmering A C# - mathprog.semathprog.se/.../uploads/Programmering-A-CSharp-Kompendie-20100… · Programmering A – C# ... 3.1 från och ... att kunna få 1, 2 ,3 eller 4 som

      

 

 

19 

Kap5 – Timer En timer är en slags räknare som tickar med bestämda intervall. Vi kan bestämma vad som ska hända varje tick. Vi kan också bestämma hur ofta den ska ticka. 

Vi skapar en timer genom att dra den till vårt program, den ligger under tools. Den får som standard 

namnet timer1. 

  

Vi kan nu göra olika saker med denna timer, vi koncentrerar oss på de vanligaste: 

   //För att starta timer1 timer1.Start();

//För att stoppa timer1 timer1.Stop();

//För att ändra intervallet på timertick (1000 = 1000ms = 1sekund) timer1.Interval = 1000;

Page 20: Programmering A C# - mathprog.semathprog.se/.../uploads/Programmering-A-CSharp-Kompendie-20100… · Programmering A – C# ... 3.1 från och ... att kunna få 1, 2 ,3 eller 4 som

      

 

 

20 

Vi gör ett litet program för att demonstrera, skapa ett GUI som ser ut såhär: 

 

Den består av följande objekt 

• Två knappar 

• En label 

• En timer  

  

 

Markerar vi timern så ser vi vilka egenskaper vi kan sätta på den. 

 

Enabled : Om den ska vara startad Interval : Hur ofta den ska ticka (i millisekunder)  

• När trycker på start, startar timern.  

Page 21: Programmering A C# - mathprog.semathprog.se/.../uploads/Programmering-A-CSharp-Kompendie-20100… · Programmering A – C# ... 3.1 från och ... att kunna få 1, 2 ,3 eller 4 som

      

 

 

21 

• När vi trycker på stop, stoppar timern.  

• För varje tick (som ska ske en gång varje sekund), ska en variabel ökas med ett och skrivas ut i label1. 

exempel5.exe 

   [...] public partial class MainForm : Form { //Skapa en räknare som vi använder senare i //programmet. Notera var den skapas int icounter = 0; public MainForm()

[...]

void Button1Click(object sender, EventArgs e) { //När vi klickar på startknappen startas timer1 timer1.Start(); }

void Button2Click(object sender, EventArgs e) { //När vi klickar på stoppknappen stoppas timer1 timer1.Stop(); } void Timer1Tick(object sender, EventArgs e) { //Varje gång timern tickar ska: //Räknaren ökas med ett icounter = icounter + 1; //Räknarens värde skrivs ut i label1 label1.Text = Convert.ToString(icounter); } 

Page 22: Programmering A C# - mathprog.semathprog.se/.../uploads/Programmering-A-CSharp-Kompendie-20100… · Programmering A – C# ... 3.1 från och ... att kunna få 1, 2 ,3 eller 4 som

      

 

 

22 

Att göra: Ladda ner och gör exempel 5.exe.  

Sedan finns det två program: 

• P5Clicker_G.exe 

• P5Clicker_VG_MVG 

Gör först P5Clicker_G.exe om du hinner gör P5Clicker_VG_MVG.exe 

 

Tips/hjälp: 

Om ni fastnar skriv ner svar på följande frågor, ta med eventuella ”om” när ni svara. Exempelvis ”Variablen A ska öka med ett om B är sant”. 

• Vilka variabler behövs? 

• Vad ska hända när vi trycker på knappen/knapparna? 

• Vad ska hända vid varje timertick? 

 

 

 

 

 

   

Page 23: Programmering A C# - mathprog.semathprog.se/.../uploads/Programmering-A-CSharp-Kompendie-20100… · Programmering A – C# ... 3.1 från och ... att kunna få 1, 2 ,3 eller 4 som

      

 

 

23 

Kapitel 6 – Picturebox Det finns några olika sätt för att visa bilder i en picturebox. Vi ska gå igenom hur man gör genom att hänvisa till en bild på datorn. Koden är ganska enkel och ser ut så här: 

 

Till exempel: 

 

Nu ska vi göra ett litet enkelt tärningsspel. Istället för att visa en siffra ska vi visa en bild på tärningen. Desigen blir en knapp och en picturebox 

 

Steg för steg för programmet: 

• Skapa ett Random objekt enligt tidigare kapitel 

•  När vi trycker på knappen ska: o Ett slumptal mellan 1 och 6 tas fram o Om det är en etta, visa bilden på tärning 1 o Om det ör en tvåa, visa bilden på tärning 2 o […fall 3‐5…] o Om det är en sexa, visa bilden på tärning 6 o Om det är något annat, visa en messagebox. Detta är ren kontroll. 

   

pictureBox1.Image = Image.FromFile(@"SÖKVÄG_TILL_FILEN"); 

pictureBox1.Image = Image.FromFile(@"c:\pics\image1.jpeg");

Page 24: Programmering A C# - mathprog.semathprog.se/.../uploads/Programmering-A-CSharp-Kompendie-20100… · Programmering A – C# ... 3.1 från och ... att kunna få 1, 2 ,3 eller 4 som

      

 

 

24 

exempel6.exe 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Koden ovan fungerar och är korrekt. De flesta borde förstå den också. Men, det finns ett lite smidigare sätt att lösa det om man tänker efter. Eftersom sökvägen är en string kan vi bygga ihop den själva: 

 

 

Att göra OBS! Exemplen ovan utgår från att det finns en katalog som heter dice som ligger i samma mapp som exempel6.exe. I denna dice‐katalog ligger bilderna 1.jpeg‐6.jpeg. Ni kan naturligtvis skriva hela sökvägen till filen om ni vill det.  Efter det så gör ett program som fungerar som P6DiceGame.exe. 

 

void Button1Click(object sender, EventArgs e) { int iRandom = myRandom.Next(1,7); if (iRandom == 1){

pictureBox1.Image = Image.FromFile(@"dice\1̣jpeg "); } else if (iRandom == 2){

pictureBox1.Image = Image.FromFile(@"dice\2̣jpeg "); } else if (iRandom == 3){

pictureBox1.Image = Image.FromFile(@"dice\3̣jpeg"); } else if (iRandom == 4){ pictureBox1.Image = Image.FromFile(@"dice\4̣jpeg "); } else if (iRandom == 5){

pictureBox1.Image = Image.FromFile(@"dice\5̣jpeg "); } else if (iRandom == 6){

pictureBox1.Image = Image.FromFile(@"dice\6̣jpeg"); } else{ MessageBox.Show("Ops, iRandom = " + iRandom); } }  

pictureBox1.Image = Image.FromFile(@"dice\" + iRandom + "̣jpeg ");


Recommended