Lektion 1

Objektorienterad programmering
Föreläsning 1
© Copyright
Mahmud Al Hakim
mahmud@webacademy.se
www.webacademy.se
Agenda







Introduktion till kursen och genomgång av
kursplanering.
Introduktion till programmering, .NET, C# och Visual
Studio
Kompilering och exekvering
Konsolapplikationer
Variabler
Selektioner (if-satsen)
Dialogrutor
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
2
1
Kursinnehåll


Denna kurs behandlar objektorienterad programmering
i C# och objektorienterad design för
Windowsapplikationer.
Objektorienterad programmering kan användas för
nästan all typ av programmering och därför är denna
kurs en bra grund för efterkommande kurser på
utbildningen.
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
3
Kurslitteratur





Skarp programmering med C#
Författare: Jan Skansholm
ISBN: 9789144052601
Utgivningsår: 2008
Sidantal: 570
Kompletterande material till boken finns här:
http://skansholm.com/skarp
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
4
2
Bra referenslitteratur
◦ Microsoft Visual C# 2013 Step by Step
John Sharp
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
5
Kursplanering





22 föreläsningar (teori, demonstrationer och övningar)
8 laborationer
2 inlämningsuppgifter (måste redovisas)
All redovisning sker muntligen under
schemalagd tid för laborationer
Eventuella kompletteringar ska åtgärdas och redovisas
snarast.
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
6
3
Läraren ställer upp!
Har du problem?
Fråga! Ingen fråga är för dum för att ställas.
 Jag vill så gärna att du lyckas…
 Utnyttja de schemalagda lab-tillfällena för att ställa
frågor. Det är nu då kursen går som läraren har tid
avsatt för att kunna hjälpa dig.
men du… …jag ställer upp till 100% och det enda du bara
behöver göra är att ställa upp själv! Ju tidigare läraren
får reda på eventuella problem desto lättare kan vi
tillsammans åtgärda dem.
Med andra ord kom inte i slutet av kursen och säg att du
inget förstår. Läraren förstår då inte varför du inte tog
kontakt tidigare.

Copyright 2015 - Mahmud Al Hakim www.webacademy.se
7
Vad är programmering?




Programmering handlar om att instruera en
maskin t.ex. en dator att utföra ett visst arbete.
När man programmerar skriver man ett
program och man använder ett programspråk.
Maskinen förstår normalt inte programspråket
direkt. Detta måste översättas till den
maskinkod som maskinen är konstruerad att
direkt förstå.
Källa: http://sv.wikipedia.org/wiki/Programmering
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
8
4
Olika slags programmering
Assemblerprogrammering
1.
◦
Programmering nära hårdvara.
◦
Direktöversättning till maskinkod.
◦
Ex. "SR 1,2" betyder "Subtrahera innehållet i register nummer
1 med innehållet i register nr 2"
◦
Läs mer http://sv.wikipedia.org/wiki/Assemblerspråk
Allmänna programspråk
2.
◦
En sats eller instruktion motsvarar många instruktioner i
maskinspråket.
◦
Ex. saldo = tidigaresaldo - uttag
◦
Ett sådant program översätts, kompileras, till maskinkod av en
kompilator eller interpreteras av en tolk.
◦
Läs mer: http://sv.wikipedia.org/wiki/Programspråk
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
9
Programmeringsspråk
1.
2.
Kompilerande språk
Ett kompilerande språk är ett programspråk
där källkoden med hjälp av olika verktyg
(kompilator) översätts (kompileras) till
maskinkod.
Exempel: C, C++, Java och C#
Interpreterande språk (Skriptspråk)
Ett interpreterande språk är ett programspråk
som tolkas (interpreteras) vid körning.
Exempel: JavaScript, PHP
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
10
5
Vad är .NET Framework?




.NET Framework är en systemkomponent som är en
del av operativsystemet Microsoft Windows.
Den består av en samling komponenter som hanterar
exekveringen av program som är skrivna speciellt för
ramverket.
Den består också av ett stort klassbibliotek
innehållande förkodade lösningar för vanliga
programmeringsuppgifter såsom kryptografi,
databashantering, anslutning till nätverk, webbtjänster
och algoritmer.
Tips
http://sv.wikipedia.org/wiki/.NET_Framework
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
11
Vad är C#?


C# (C-sharp) är ett objektorienterat programspråk
utvecklat av Microsoft som en del av .NET-plattformen.
C# är enkelt, modernt och objektorienterat.
◦ C# version 1.0 (2002) .NET Framework 1.0
◦ C# version 2.0 (2005) .NET Framework 2.0
◦ C# version 3.0 (2007) .NET Framework 3.5
◦ C# version 4.0 (2010) .NET Framework 4
◦ C# version 5.0 (2013) .NET Framework 4.5
◦ C# version 6.0 (2015) . NET Framework 4.6
http://en.wikipedia.org/wiki/C_Sharp_(programming_language)
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
12
6
Kompilering





En programmerare skriver ett datorprogram i form av
vanlig text med hjälp av en texteditor eller IDE t.ex..
(Visual Studio).
Programtexten (källkoden) översätts till maskinkod med
hjälp av en kompilator (finns i .NET Framework).
Källkodsfiler som kompileras i C# skapar en "assembly".
En assembly är antingen en exekveringsbar fil (exe) eller
en DLL (Dynamic-link library).
En assembly innehåller ingen kod som en dator direkt
kan exekvera, utan mellankod kallad Common
Intermediate Language (CIL).
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
13
Visual Studio



Microsoft Visual Studio är en avancerad
programutvecklingsmiljö
(Integrated Development Environment, IDE).
Med Visual Studio kan man utveckla både PC-baserade
applikationer för Microsoft Windows, mobila
applikationer och Internetanpassade applikationer.
Express och Community Editions är tänkta för enskilda
utvecklare och studenter som inte behöver de riktigt
stora funktionerna som utvecklingsföretag kan ha nytta
av. Dessa program tillhandahålls utan kostnad men
kräver registrering och tillgång till ett Microsoft-konto.
http://en.wikipedia.org/wiki/Integrated_development_environment
http://en.wikipedia.org/wiki/Microsoft_Visual_Studio
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
14
7
Ladda ner och installera
Visual Studio


Gå till http://www.visualstudio.com/downloads
Välj Visual Studio Express eller Community
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
15
Kommandofönstret
Starta cmd.exe
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
16
8
Testa om kompilatorn finns i
systemets sökvägar (PATH)
C#-kompilatorn heter csc.exe
Skriv csc och tryck på Enter
Om du får detta
felmeddelande så måste du
uppdatera PATH
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
17
Leta efter sökvägen till csc.exe
Kopiera sökvägen
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
18
9
Öppna dialogrutan Systemegenskaper
Dialogrutan finns i
kontrollpanelen
Öppna
Miljövariabler…
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
19
Redigera PATH
OBS!
Lägg till ett semikolon först och
sedan sökvägen till csc.exe
t.ex.
; C:\Windows\Microsoft.NET\Framework\vxxx
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
20
10
Testa csc.exe igen
OBS!
Du behöver starta ett
nytt
kommandofönster!
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
21
Skapa filen hej.cs
manuellt i Notepad (anteckningar)
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
22
11
Navigera till filen
cd
Call Directory
\ = rooten
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
23
Kompilera
csc Hej.cs
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
24
12
Exekvera
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
25
Skapa Konsol-applikationer
i Visual Studio
Välj
Console Application
Ändra projektnamn
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
26
13
Console Application
En Grundmall
Main är huvudingången i
ett program.
Här startar programmet!
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
27
Källkoden sparas i filen
Program.cs
Filens hittar du i panelen
Solution Explorer
Filens sökväg hittar du i
panelen
Properties
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
28
14
Visa radnummer
Tools – Options…
Leta efter Text Editor All Languages
Markera
Line numbers
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
29
Vårt första konsolapplikation
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
30
15
Kompilera och exekvera
Start Debugging (F5)
Kompilerar och kör
applikationen
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
31
Skapa en Breakpoint
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
32
16
ReadKey()
ReadKey()
Visar konsolfönstret
och avvaktar
tangenttryckning
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
33
Indentering


Indentering går ut på att man med hjälp av olika mycket
blanksteg (space) till vänster om koden kan på ett
logiskt sätt gruppera koden så att den går lättare att
läsa.
Grundprincipen är att kod som hänger ihop skall ha
samma indenteringsnivå.
Vi indenterar
metoden Main
i klassen Hej
class Hej
{
static void Main(string[] args)
{
Console.WriteLine("Välkommen till c#");
}
}
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
34
17
Variabler






I datorprogram använder man s.k. variabler för att
lagra data.
Data kan vara av olika slag (typer).
De vanligaste typerna är texter och numeriska värden
(heltal och flyttal).
En variabel kan innehålla data av en viss typ.
Innan man använder en variabel i ett program måste
man deklarera den.
Då talar man om vilken typ variabeln skall ha och vad
den skall heta.
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
35
En variabel kan ses som en
behållare för tillfällig
information i datorns minne.
Du måste ge variabler
unika namn.
Kan du ge
mig kassen?
Vilken?
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
36
18
Deklarera en variabel
Du måste ange
datatyp
Du måste ange
variabelnamn
(identifierare)
string namn;
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
37
Tilldelning




Vill du ge en variabel ett värde använder du
likhetstecknet (=) som kallas tilldelningsoperator.
Då du ger en variabel ett värde kallas det att du
tilldelar variabeln ett värde.
Exempel:
hälsning = ”Välkommen”;
antal = 7;
Du kan deklarera och tilldela en variabel ett värde på en
och samma gång t.ex.
string namn = ”Mahmud”;
Detta kallas
att
initiera
en variabel.
int ålder = 42;
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
38
19
Att läsa indata
namn och hälsning
är två variabler av
typen String (text)
ReadLine()
En metod som läser
en rad från
kommandotolken
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
39
Problem: Bilhyra




Utveckla ett program som beräknar hur mycket det
kostar att hyra en bil.
Antag att man vet hur många dagar man vill hyra bilen
samt hur mycket det kostar per dag.
Programmet frågar efter dessa uppgifter och beräknar
den totala kostnaden.
Det kan se ut på följande sätt när man kör programmet.
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
40
20
Analys
Vi ska skriva ett C#-program
2. Som IDE väljer vi Microsoft Visual Studio.
3. Programmet är en konsolapplikation
(Console Application).
4. Vi måste skapa ett projekt och ge ett lämpligt namn
5. Källkoden måste skirvas i en cs-fil (t.ex. Program.cs)
6. Källkodsfilen måste innehålla en klass
7. Klassen måste innehålla metoden Main
8. I Main behöver vi ett antal variabler av olika slag
9. Vi behöver läsa in data (antal och pris per dag)
10. Beräkna totalt pris och visa resultatet
11. Vi måste kompilera och testköra programmet
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
1.
41
Lösning: Bilhyra
antalDagar är en
variabel av typen int
(heltal)
dagsPris och totPris
är två variabler av
typen double
(decimaltal)
Parse() är en metod
som omvandlar text till
ett numeriskt värde
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
42
21
Sekvens, selektion och repetition




I alla de exempel vi kört hittills har satserna i
programmen utförts i sekvens, från början till slut.
För att man skall kunna skriva lite mer intressanta
program krävs ytterligare två grundläggande
konstruktionsmetoder.
Ett program skall kunna välja alternativa satser att
utföra (selektion).
Och ett program skall kunna utföra satser upprepade
gånger (repetition).
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
43
Selektion med if-satser

För att åstadkomma val i ett program kan man använda
if-satsen.
if(uttryck){
en eller flera satser
}
else {
en eller flera satser
}
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
44
22
Problem: Priser och rabatter

Del 1
◦ 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.
◦ Programmet beräknar det totala priset och visar
resultatet.

Del 2
◦ Anta att man får 10% i rabatt om man handlar för
mer än 1000kr.
◦ Handlar man för lägre belopp får man ingen rabatt.
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
45
Analys


Del 1
1.
Vi ska skriva en konsolapplikation i Visual Studio
2.
Vi måste skapa ett projekt och ge ett lämpligt namn
3.
Projektet måste innehålla en källkodsfil
4.
Källkodsfilen måste innehålla en klass och Main
5.
Vi behöver ett antal variabler av olika slag
6.
Vi behöver läsa in data (antal och pris per styck)
7.
Beräkna priset och visa resultatet
8.
Vi måste kompilera och testköra programmet
Del 2
1.
Om priset är högre än 1000
2.
Ge 10% rabatt (multiplicera priset med 0.10 för att få rabatten)
3.
Beräkna det nya priset och visa resultatet
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
46
23
Lösning: Priser och rabatter
Del 1
Vi initierar variabler
direkt i deklarationen
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
47
Lösning: Priser och rabatter
Del 2
(pris >1000)
är ett logiskt
uttryck som måste
ha något av värdena
true eller false
Om uttrycket är sant
utförs dessa satser
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
48
24
Dialogrutor


I alla program hittills har utskrifterna hamnat i
kommandofönstret.
Men det är enkelt att istället visa en utskrift i en
dialogruta.
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
49
Lägg till
System.Windows.Forms
Högerklicka på Referens i
Solution Explorer och välj
Add Reference…
Leta efter
System.Windows.Forms
Markera och lägg till.
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
50
25
Visa en dialogruta
Lägg till
using-direktivet
System.Windows.Forms;
Klassen MessageBox är nu
tillgänglig
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
51
Ändra dialogrutans titel (caption)
Copyright 2015 - Mahmud Al Hakim www.webacademy.se
52
26