Objektorienterad programmering Föreläsning 2 Copyright Mahmud Al Hakim mahmud@webacademy.se www.webacademy.se Agenda Inläsning av data via dialogrutor Repetitioner (While-satsen och For-satsen) Nästlade repetitionssatser Escape-sekvenser Introduktion till grafiska program Övningar Copyright 2015 -Mahmud Al Hakim www.webacademy.se 2 1
Inläsning av data via dialogrutor Det finns ingen lättanvänd standardmetod i C# som man kan använda för att läsa in text från dialogrutor! Men det finns en enkel InputBox-metod i programspråket Visual Basic inom.net Framework. Eller man kan använda en färdig skräddarsydd (icke standard) klass som en annan har gjort. Det finns en fil som heter InputBox.cs att ladda ner från bokens hemsida Copyright 2015 -Mahmud Al Hakim www.webacademy.se 3 InputBox via Visual Basic Lägg till referensen Microsoft.VisualBasic Lägg till using-direktivet Microsoft.VisualBasic; Metoden InputBox finns i klassen Interaction Copyright 2015 -Mahmud Al Hakim www.webacademy.se 4 2
InputBox via en skräddarsydd C#-klass 1. Ladda ner filen InputBox.cs från bokens hemsida 2. Lägg till filen till din Solution (högerklicka Add Existing Item ) Copyright 2015 -Mahmud Al Hakim www.webacademy.se 5 Klassen InputBox Exempel Metoden Show() finns i klassen InputBox Copyright 2015 -Mahmud Al Hakim www.webacademy.se 6 3
Övning Priser och rabatter med dialogrutor Utveckla ett program som beräknar det totala priset när man har köpt ett antal varor av samma slag. Indata är antal enheter och pris per styck. Medlemmar får 10% i rabatt. Programmet frågar om kunden är medlem eller ej. Programmet beräknar det totala priset och visar resultatet i en dialogruta. Copyright 2015 -Mahmud Al Hakim www.webacademy.se 7 Analys 1. Vi ska skapa ett program i Visual Studio Vi måste skapa ett projekt och ge ett lämpligt namn Projektet måste innehålla en källkodsfil 2. Vi behöver deklarera variabler av olika slag 3. Vi behöver läsa in data (antal och pris per styck) via två dialogrutor. (Vi använder Skansholms InputBox). 4. Vi beräknar priset (Pris/st x Antal) 5. Vi behöver fråga användaren om man är medlem eller inte. Detta gör vi med hjälp av en dialogruta av typen (Ja/Nej). 6. Om kunden är medlem så ska priset multipliceras med 0.10 (10%) 7. Visa resultatet i en dialogruta 8. Vi måste kompilera och testköra programmet Copyright 2015 -Mahmud Al Hakim www.webacademy.se 8 4
Lösning Priser och rabatter Environment.Exit(0); Avslutar programmet om användaren klickar på knappen Avbryt eller X-rutan. Copyright 2015 -Mahmud Al Hakim www.webacademy.se 9 While-satsen Det enklaste sättet att åstadkomma repetitioner (loopar) är att använda en while-sats. while(uttryck) { en eller flera satser; } Copyright 2015 -Mahmud Al Hakim www.webacademy.se 10 5
While Exempel 1 Vi ger x ett startvärde Medan x är mindre än 10 Gör detta Öka x med 1 Copyright 2015 -Mahmud Al Hakim www.webacademy.se 11 While Exempel 2 Vi ger j ett startvärde Medan j är mindre än 6 Gör detta Öka j med 2 Copyright 2015 -Mahmud Al Hakim www.webacademy.se 12 6
Rik Ett orealistiskt exempel :-) Man har erbjudits ett mycket farligt och riskfyllt arbete Lönesättningen är ganska ovanlig För första dagens arbete erbjuds man 1 öre För andra dagen 2 öre Tredje dagen 4 öre Fjärde dagen 8 öre Osv Lönen fördubblas varje dag Hur många dagar måste man arbeta för att bli rik? Användaren anger önskat belopp tex.1000000 Copyright 2015 -Mahmud Al Hakim www.webacademy.se 13 Analys 1. Vi behöver skapa ett nytt projekt i Visual Studio. En källkodsfil skapas automatiskt. 2. Vi behöver läsa in önskat belopp (tex. 1000000) 3. Vi behöver skapa en räknare (antaldagar med startvärde =1) 4. Vi behöver spara totalt belopp i en variabel (tex. totaltbelopp). 5. Vi behöver en while-sats med uttrycket (totaltbelopp är mindre än önskatbelopp) 6. Inuti loopen behöver vi beräkna dagens lön (multiplicera dagens lön med 2) 7. Beräkna det nya totala beloppet. 8. Öka antaldagar med 1 9. Visa antal dagar efter loopen. 10. Vi måste kompilera och testköra programmet Copyright 2015 -Mahmud Al Hakim www.webacademy.se 14 7
Programmet Rik Copyright 2015 -Mahmud Al Hakim www.webacademy.se 15 Break-satsen Ibland har man behov av att kunna avbryta en loop mitt inne i en repetition. Då kan man använda sig av en break-sats. En break-sats kan placeras bland de satser som exekveras på varje varv. En break-sats bör ligga i en if-sats så att den bara utförs villkorligt. if (villkor för att sluta) break; Copyright 2015 -Mahmud Al Hakim www.webacademy.se 16 8
Programmet Rik Ny version I den nya versionen skall man kunna göra upprepade beräkningar. Varje gång programmet har räknat ut och visat hur många dagar man behöver arbeta, så börjar det om från början igen och låter användaren mata in nytt önskat belopp. Programmet gör upprepade beräkningar ända tills användaren trycker ner Ctrl+Z. Ctrl+Z returnerar ett speciellt värde som heter null. Null betyder ingen text. Copyright 2015 -Mahmud Al Hakim www.webacademy.se 17 Oändlig while-sats true är alltid sant Om inmatningen är null hoppa till } Här slutar den första while-satsen Copyright 2015 -Mahmud Al Hakim www.webacademy.se 18 9
For-satsen Man brukar använda en for-sats när man har en räknare som skall räkna upp eller ner på varje varv. for( initiering ; villkor ; ändring) { en eller flera satser } Copyright 2015 -Mahmud Al Hakim www.webacademy.se 19 For-satsen Exempel 1 Initiering Villkor Ändring Copyright 2015 -Mahmud Al Hakim www.webacademy.se 20 10
For-satsen Övning Skapa ett program som visar talen från 10 ned till 1 Se bilden nedan Copyright 2015 -Mahmud Al Hakim www.webacademy.se 21 For-satsen Exempel 2 Skapa ett program som beräknar hur mycket pengar man får på ett bankkonto om man sätter in 1000kr och låter pengarna stå inne utan att röra dem under 5 år. Räntesatsen är 2,5% Copyright 2015 -Mahmud Al Hakim www.webacademy.se 22 11
Programmet Bank Explicit typomvandling Här omvandlas double till int för att slippa decimaler i utskriften Obs! decimaler kapas utan avrundning Mer om detta senare! Copyright 2015 -Mahmud Al Hakim www.webacademy.se 23 For-satsen Övning Skapa ett program som räknar ut femmans multiplikationstabell. Copyright 2015 -Mahmud Al Hakim www.webacademy.se 24 12
Nästlade repetitionssatser De satser som står inne i en repetitionssats får vara vilken sorts satser som helst. Det betyder att det kan finnas en repetitionssats inne i en annan repetitionssats. for( init ; villkor ; ändring) { } for( init ; villkor ; ändring) { } en eller flera satser Copyright 2015 -Mahmud Al Hakim www.webacademy.se 25 Nästlade repetitionssatser Exempel Skapa ett program som skriver ut ett visst antal rader. På första raden skrivs ett plustecken. På andra raden två plustecken. Osv Copyright 2015 -Mahmud Al Hakim www.webacademy.se 26 13
Nästlade repetitionssatser Copyright 2015 -Mahmud Al Hakim www.webacademy.se 27 Kommentering Att kommentera i sin kod är en konst. Det är mycket att tänka på! Det som är svårast är att veta hur mycket man skall kommentera. Det är lika illa att kommentera för mycket som för lite! Här kommer några riktlinjer. Skriv i kommentaren VAD som görs och inte HUR det görs. Hur det görs skall koden i sig själv förklara. Kommentera i en sammanhängande längre kommentar före ett avancerat block vad som görs. Copyright 2015 -Mahmud Al Hakim www.webacademy.se 28 14
Kommentering i C# // Detta är en kommentar x = 1000; // Detta är också en kommentar /* Detta är en kommentar som sträcker sig över flera rader */ /// Detta är en XML-kommentar (överkurs) Copyright 2015 -Mahmud Al Hakim www.webacademy.se 29 Escape-sekvenser En escape-sekvens inleds med tecknet \ och ska tolkas som ett enda tecken. Några exempel \' en apostrof \\ ett backslash-tecken \n ny rad \t ett tabb-tecken Tips http://msdn.microsoft.com/en-us/library/h21280bw.aspx Copyright 2015 -Mahmud Al Hakim www.webacademy.se 30 15
Introduktion till grafiska program Moderna program använder grafiska användargränssnitt för att kommunicera med användaren. Grafiska program visar fönster på skärmen. Dessa fönster kan innehålla diverse grafiska komponenter t.ex. knappar, menyer och texter. Copyright 2015 -Mahmud Al Hakim www.webacademy.se 31 Ett grafiskt program Ett fönster som innehåller en label Copyright 2015 -Mahmud Al Hakim www.webacademy.se 32 16
Ett grafiskt program En klass som kör fönstret Copyright 2015 -Mahmud Al Hakim www.webacademy.se 33 Ett grafiskt program i Visual Studio Välj Windows Forms Application Copyright 2015 -Mahmud Al Hakim www.webacademy.se 34 17
Här ändrar vi fönstrets egenskaper Copyright 2015 -Mahmud Al Hakim www.webacademy.se 35 Filen Program.cs Här skapas ett nytt fönster Copyright 2015 -Mahmud Al Hakim www.webacademy.se 36 18
Toolbox Här finns olika grafiska komponenter s.k. Controls Copyright 2015 -Mahmud Al Hakim www.webacademy.se 37 Ändra egenskaper för Label Copyright 2015 -Mahmud Al Hakim www.webacademy.se 38 19
Övning Skapa ett grafiskt C#-program som visar ett fönster och valfri Label (etikett). Prova med olika färger och typsnitt. Copyright 2015 -Mahmud Al Hakim www.webacademy.se 39 Övning 1 - Programmet Rik Lös problemet med hjälp av dialogrutor istället. Copyright 2015 -Mahmud Al Hakim www.webacademy.se 40 20
Övning 2 Konvertera följande while-sats till en for-sats Copyright 2015 -Mahmud Al Hakim www.webacademy.se 41 Övning 3 Skapa ett program som visar nians multiplikationstabell i en dialogruta Copyright 2015 -Mahmud Al Hakim www.webacademy.se 42 21
Övning 4 Skapa ett program som räknar ut valfri multiplikationstabell. Copyright 2015 -Mahmud Al Hakim www.webacademy.se 43 Övning 5 Skapa ett program som visar multiplikationstabellerna 1-10 enligt nedan! Tips! För att få jämna mellanrum använd "/t" Copyright 2015 -Mahmud Al Hakim www.webacademy.se 44 22