Programmering 1

Innehållsförteckning
- Grunder
- Använda Visual Studio
- Ett första exempel: Programmet "Hello World"
- Variabler
- Datatyper
- Typomvandling
- Vad är en operator?
- Aritmetiska operatorer
- Villkor
- Relationsoperatorer
- Villkor med flera alternativ
- Logiska operatorer
- Prioriteringsregler
- Introduktion till loopar
- while-loopen
- Förändringsoperatorer
- for-loopen
- Nästlade loopar
- Arrayer
- Metoder
- Stränghantering
- Flödesdiagram
- Namnkonventioner
- Facit
1. Grunder
Grunder
- Om datorn, hårdvara och mjukvara
- Källkod och maskinkod
- Olika programmeringspråk
- Kompilering
- Programspråket C#
- Vad är .NET?
Datorn
En dator är en maskin som utför beräkningar och bearbetar data enligt givna instruktioner. Exempel på olika datorer är persondatorn, miniräknare, mobiltelefon, läsplatta eller spelkonsol.
En dator består av hårdvara som processor, minneschip och andra elektroniska komponenter.
Den styrs av mjukvara, s.k. program, som kan användas till många olika tillämpningar. Ett program är en samling instruktioner som en dator kan tolka och utföra. De kan vara mycket enkla, som en enkel miniräknare, till att vara mycket komplexa och innehålla miljontals rader kod, som exempelvis ett ordbehandlingsprogram eller ett kraftfullt spel.
Källkod och maskinkod
Ett program finns i två format, källkod och maskinkod. Maskinkod är 1or och 0or som bara datorn kan förstå. Eftersom det är väldigt jobbigt för oss människor att skapa maskinkod direkt så skrivs program i källkod.
Källkod kan man skriva som vanlig text i en ordbehandlare, rad för rad, i olika stycken (block). Det är viktigt att källkoden skrivs korrekt och med rätt grammatik vilket kallas syntax och som beror på det programmeringsspråk som används.
Källkod kan inte datorn förstå rakt av utan den måste översättas till maskinkod (kompileras) så att datorn kan köra programmet (kallas även exekvera). Programmet som översätter källkoden till maskinkod kallas för kompilator.
Programmeringsspråk
Det finns många olika programmeringsspråk; vissa riktar sig mer mot hårdvaran, så kallade lågnivåspråk, andra siktar på att vara enklare att producera och förstå, så kallade högnivåspråk.
Varje språk har sin egen kompilator, dock finns det utvecklingsmiljöer som stödjer användning av flera programspråk samtidigt. Microsoft Visual Studio är ett sådant (den utvecklingsmiljö vi ska använda).
Att använda ett lågnivåspråk kräver i allmänhet mer tid och leder lättare till programmeringsfel än om man skulle använda ett högnivåspråk. Fördelen är att programmeraren har god kontroll över hur programmet beter sig, och en duktig programmerare kan då utnyttja den tillgängliga hårdvaran bättre. Exempel på lågnivåspråk är Assembler, i vissa avseenden C/C++.
Programmeringsspråk som riktar sig mot många plattformar och har som mål att vara enklare att producera och förstå kallas för högnivåspråk. C# är ett högnivåspråk, liksom Java, C++, Python och Javascript.
Kompilering
Källkod måste översättas till maskinkod så att datorn kan tolka instruktionerna och köra programmet. Den översättningen kallas kompilering och kan ske i flera steg. Kompileringen genererar bl.a en fil med filändelsen .exe om programmet ska köras på Windows. Varje programspråk har sin egen kompilator och processen hur källkod kompileras till maskinkod ser därför olika ut.
Kompilera C# källkod
snake.cs
Källkod
snake.exe
CIL
snake.exe
CIL
MASKINKOD
101010...
KOMPILERING
PROGRAMMERARENS DATOR
ANVÄNDARENS DATOR
PROGRAMMET DISTRIBURAS ÖVER INTERNET ELLER DISK
JIT
("just-in-time"
kompilering)
När ett C# kompileras översätts det till CIL som står för Common Intermediate Language. Det gör det möjligt för programmet att vara plattformsberoende då det är på användarens dator programmet översätts till maskinkod med det som kallas för JIT.
C#
lite historia
- Uttalas C-sharp
- Skapades av Microsoft år 2000
- Vidareutveckling av Java och C++
- Språket utvecklas kontinuerligt, nu version 8.0 (2019)
- Används för att bygga applikationer för desktop, backend, mobil, Unity :-)
C# .NET
- C# är en del av plattformen .NET
- Plattformen .NET innehåller en massa färdigskriven kod som underlättar för programmerare (ex skapa grafik, skriva till fil, e.t.c)
- När du skriver program i C# är man beroende av .NET plattformen. Plattformar som vill köra .NET program behöver alltså ha .NET installerat. Det finns förinstallerad i många Windows-versioner, men kan också installeras på Mac OS och Linux.


2. Använda Visual Studio
Det program vi ska använda för att skriva och köra C# kod.

Visual Studio
programmet vi ska använda!

- IDE, Integrated Development Environment
- Används för att skriva C# program
- ... men kan användas till många fler programspråk
Installera Visual Studio

1. Ladda ner Visual Studio Community 2019 här:
2. Välj Download Visual Studio 👉 Community 2019
3. Öppna installationsfilen. Ett vitt fönster med Installing Visual Studio Community 2019
dyker upp.
4. Markera rutan med rubriken .NET Desktop Development
5. Installationen kan ta ett tag. Starta programmet
när den är färdig 👨💻
Visual Studio

- Console Application
- Windows Forms Application
- WPF Application
- Windows Store
Med Visual Studio kan man skapa många applikationer
Vi kommer att börja programmera konsolapplikationer. Då kan vi enklast fokusera på grunderna i programmering.
Olika typer av program
Konsolprogram

Graphical User Interface (GUI)

Komma igång med Visual Studio

1. Öppna Visual Studio Community 2019 och skapa nytt projekt
Komma igång med Visual Studio
2. Välj Console App (.NET Core) i listan av olika projekt man kan skapa

Komma igång med Visual Studio
3. Ge ditt projekt ett namn och var det ska ligga på datorn. Tryck Create.

Komma igång med Visual Studio
4. Mallen för att skriva ut "Hello World" i konsolen öppnas

Komma igång med Visual Studio
5. Kör Applikation genom att klicka på gröna pilen eller F5.
Ett konsolfönster öppnas med utskriften Hello World.



3. Ett första exempel
Programmet "Hello World"
// Krävs för at kunna använda konsolen
using System;
// Namnet på namnrymden
namespace HelloWorld {
// klassnamnet
class Program {
// Metoden Main(). Här börjar programmet köras!
static void Main(string[] args) {
// Skriver ut texten "Hello World" i konsolen
Console.WriteLine("Hello World!");
// Hindrar konsolen från att stängas ner direkt
Console.ReadKey();
}
}
}
Program som skriver ut "Hello World" i konsolen
I början behöver vi endast fokusera på programblocket med rubrik Main
Programstruktur
- Språklig text är uppbyggd av meningar som delas in i avsnitt med olika rubriker.
- På samma sätt är programkod uppbyggd av satser och programblock.
Programblock1
{
Sats1;
Sats2;
Sats3;
}
Programblock2
{
Sats4;
Sats5;
}
- Ett programblock består av en rubrik som kallas programblockets huvud.
- Det som står innan för klammerparenteserna { } tillhör blocket. Där kan man mellanslag, tabbar och tomma rader så att koden blir lätt att läsa.
- En sats är en instruktion till datorn att utföra något. Alla satser i programblocket utförs i den ordning de står.
// Skriver ut texten "Hello World" i konsolen
Console.WriteLine("Hello World!");
Output
Det programmet skickar ut till användaren
4. Variabler
Variabler
- I programmering är en variabel en lagringsplats för data.
- Den håller en reserverad plats i datorns arbetsminne.
- Namnet variabel kommer från att dess data kan förändras under programkörningen.
Deklarera en variabel
Att reservera plats i minnet för ett värde kallas för att deklarera en variabel. Då måste man ange ett variabelnamn och variabelns datatyp. Vi kommer strax till att förklara vad en datatyp är.
string namn;
Datatyp
Variabelnamn
Tilldelning
Tilldelning är när ett värde sparas i en variabel.
Värdet sparas till en plats i datorns minne.
namn = "Pikachu";
Variabelnamn
Värde
När man använder datatypen string måste man skriva dubbla citattecken runt värdet (texten) som man tilldelar variabeln.
namn = Console.Readline();
Input
Det användaren skickar till programmet
Läser in text från användaren som tilldelas en variabel med namnet "namn"
/* Deklarera en variabel som hanterar
text (datatypen string) */
string namn;
/* Input från användaren tilldelas
variabeln "namn" */
namn = Console.Readline();
// Output till användaren
Console.WriteLine("Hej " + namn + " !");
Exempel
Läs in text från användaren (input), tilldela värdet till en variabel och skriv ut variabelns värde till användaren (output)
"Sätta ihop" text och variabelvärden
string name = "John Doe";
string age = "19";
Console.WriteLine("Hej jag heter " + name + " och är " + age + " år gammal");

Görs med +-tecknet och kallas för stängkonkatinering
Initiering
När man deklarerar och tilldelar ett värde i samma sats
string pokemon = "Pikachu";
Variabelnamn
Värde
Datatyp
Deklarera flera variabler
int tal1, tal2, summa;
Det går även bra att deklarera fler variabler på en och samma rad förutsatt att de är av samma datatyp
Regler för variabelnamn
- Varje variabel måste ha ett namn som är unikt i sitt programblock.
- Kan innehålla bokstäver, siffror och understrykningstecknet _
- Det första tecknet får inte vara siffra
- C# skiljer på stora och små bokstäver (case-sensitive)
- Brukligt är att första bokstaven är liten (gemen)
// Två snedstreck markerar kommentar för en rad
/* Snedstreck + asterix markerar kommentar för
för flera rader
*/
Kommenterar
- Text som ignoreras av själva programmet
- Bra för att anteckna, skriva förklaringar för sig själv och någon annan som ska förstå koden
5. Datatyper
Datatyper
- Olika värden i datorns program kräver olika mycket plats
- Exempelvis, ett heltal som 3 tar mindre plats än ett decimaltal som 3.14
- För att datorn ska hantera minne på ett effektivt sätt anger man alltid vilken datatyp en variabel har
- I den här kursen kommer vi behandla datatyperna string, char, int, double och bool
string
En string är en eller flera tecken som bildar en text (teckensträng). När man anger en strängs innehåll använder man dubbla citattecken " " runt texten.
string name = "John Doe";
char
char är en förkortning av character som betyder tecken. En char kan endast innehålla ett tecken. När man anger en char använder man enkla citattecken ' ' runt innehållet.
char sign = '+';
int
int är en förkortning för integer som betyder heltal. Den kan ge högst värdet 2 147 483 647. När man använder int till räkneoperationer kan bara alltså bara heltal hanteras.
int number = 43;
double
Till skillnad mot int kan double hantera decimaltal. När man ska decimalkommat skriver man punkt. Bra att använda när man vill räkna med decimaltal. Exempelvis ger division oftast ett decimaltal.
double number = 3.14;
bool
bool är en förkortning för boolean och är döpt efter George Boole som studerade logik. Det är en datatyp som bara kan innehålla ett av värdena true (sant) eller false (falskt). Om vi skulle jämföra om 5 > 4 skulle detta ge true. 3 < 2 skulle ge false.
bool gameOver = false;
Exempel
int v.s double
int hanterar enbart heltal. double kan även hantera decimaltal. Vad blir resultatet av följande uträkningar?
int sträcka = 10;
int tid = 4;
int hastighet = sträcka/tid;
double sträcka = 10;
double tid = 4;
double hastighet = sträcka/tid;
(avrundas neråt
till ett heltal)
Hastighet = 2.5
Hastighet = 2
Olika datatyper
Datatyp | Värdegräns | Utrymme |
---|---|---|
string | text | 2 byte / tecken |
char | ett tecken | 2 byte |
int | heltal ± 2^8 | 4 byte |
double | decimaltal ±1.7×10^308 |
8 byte |
bool | true eller false | 1 byte |
Man mäter datorns minneskapacitet i byte.
Variabelsången :-)
6. Typomvandling
Typomvandling
Ibland behöver man omvandla från ett värde till en annan. Det kallas för typomvandling. Exempelvis läser metoden Console.ReadLine() endast in datatypen string. Om vi läsa in ett tal som vi vill utföra en räkneoperation med måste en typomvandling göras.
string input = Console.ReadLine();
int nowAsInt = Convert.ToInt32(input);
Typomvandlar
Till vilken datatyp
Typomvandling
Det går också bra att skriva konverting och inläsning på samma rad.
int input = Convert.ToInt32(Console.ReadLine());
double input = Convert.ToDouble(Console.ReadLine());
Typomvandlar till double
Typomvandlar till int
Exempel på typomvandling
Vi vill läsa in dagens datum och avgöra hur många år det är kvar till nästa fotbolls VM.
// Deklarera variabler
int now, yearsLeft, vmQuatar = 2022;
/* Läser in aktuellt årtal och
typomvandlar från string till int*/
now = Convert.ToInt32(Console.ReadLine());
// Beräknar differensen av två heltal
yearsLeft = now - vmQuatar;
// Skriver ut till användaren hur många år det är kvar
Console.WriteLine("Det är " + yearsLeft + " kvar till VM i Quatar!");
7. Vad är en operator?
Operator
... är en symbol för något som ska utföras. Exempelvis plustecknet vid matematisk addition.
I C# finns flera olika operatorer. Vi ska utforska de aritmetiska-, förändrings-, relations- och de logiska operatorerna.
3 + 4
operand
operand
operator
8. Aritmetiska operatorer
Aritmetiska operatorer
Operator | Beskrivning |
---|---|
+ | addition |
- | subtraktion |
* | multiplikation |
/ | division |
% | modulo |
Aritmetiska operatorer
int tal1 = 100;
int tal2 = 10;
int resultat;
// 1. Addition
resultat = tal1 + tal2;
// 2. Subtraktion
resultat = tal1 - tal2;
// 3. Multiplikation
resultat = tal1 * tal2;
// 4. Division
resultat = tal1 / tal2;
Exempel
int tal1 = 100;
int tal2 = 10;
int resultat;
// 1. Addition
resultat = tal1 + tal2;
// 2. Subtraktion
resultat = tal1 - tal2;
// 3. Multiplikation
resultat = tal1 * tal2;
// 4. Division
resultat = tal1 / tal2;
Exempel
/* Vi skriver värdet på variablerna
direkt i deklarationen istället för att
läsa in från användare, för denna gång :-) */
int tal1 = 23, tal2 = 20, tal3 = 28;
/* Variabel med datatyp för decimaltal */
double medel;
// Beräknar medelvärdet
medel = (tal1 + tal2 + tal3)/3
// Skriver ut medelvärdet till användaren
Console.WriteLine("Medelvärdet är " + medel);
Beräkna medelvärdet av 3 st heltal
Modulo %
// Exempel 1
int differensen = 1000 - 450;
int kvot = differensen / 100;
int antalHundralappar = floor(kvot); // Ger 6 hundralappar
int rest = differensen % 100; // Ger 50 kr som rest
// Exempel 2
int tid = floor(270/60); // Ger 4 timmar
int minuter = 270 % 60; // och 30 min
Ger rest vid heltalsdivision
Exempel 1: Du betalar 1000 kr och kvittot är på 450 kr. Hur många hundralappar får du tillbaka och vad blir resten?
Exempel 2: Räkna ut att 270 minuter består av 4 timmar och 30 minuter.
9. Villkor

När programmet tar beslut utifrån sant/falskt
Villkor
Pseudokod
Mata in tiden
Om tid är större än 22
skriv: "Gå och lägg dig"
annars
skriv: "Läs en bok"
Flödesdiagram

Hur?
if(5 > 2) {
/* Om villkoret är SANT ska
kodraderna i detta block
utföras
*/
}
else {
/* Om villkoret är FALSKT ska
kodraderna i detta block
utföras
*/
}
Använda if/else sats
VILLKOR
10. Relationsoperatorer
Relationsoperatorer
Jämförelse | Symbol | Exempel | Värde |
---|---|---|---|
lika med | == | a == b | false |
inte lika med | != | a != b | true |
större än | > | a > b | false |
större än eller lika med | >= | a >= b | false |
mindre än | < | a < b | true |
mindre än lika med | <= | a <= b | true |
Exempel om a = 3, b = 5
Används för att jämföra två operander.
Övning: Relationsoperatorer
Avgör om följande uttryck är sant (true) eller falskt (false)
Om a = 3, b = 4, c = 4, så är:
a) a == b _________ g) b > a _________
b) b == c _________ h) b <= c _________
c) c == a _________ i) a <= c _________
d) a < b _________ j) b >= c _________
e) a > b _________ k) c <= a _________
f) b < a _________
if/else
Console.WriteLine("Vad är klockan nu?")
int tid = Convert.ToDouble(Console.ReadLine());
if(tid > 22)
{
// Om SANT, så ska detta utföras
Console.WriteLine("Gå och lägg dig");
}
else
{
// Om FALSKT, så ska detta utföras
Console.WriteLine("Läs en bok");
}
använda relationsoperatorer
Är värdet i tid större 22? Om ja, SANT, annars FALSKT
if/else
int secret = 13;
int guess = Convert.ToInt32(Console.ReadLine());
if(guess == secret)
{
Console.WriteLine("Congrats!");
}
else {
Console.WriteLine("Try again...");
}
använda relationsoperatorer
Jämförelse. Är värdet i guess lika med värdet i secret? Om ja, SANT, annars FALSKT
if/else
int age = Convert.ToInt32(Console.ReadLine());
if(age >= 18)
{
Console.WriteLine("Du är myndig. Får ta körkört. Gå på krogen.");
}
else {
Console.WriteLine("Du får vänta " + (18-age) + " år in du är 18 år.");
}
använda relationsoperatorer
Är värdet i age är större än eller lika med 18? Om ja, SANT, annars FALSKT.
11. Villkor med flera alternativ
Villkor med flera alternativ
if-else satsen kan endast hantera ett val mellan två situationer, SANT eller FALSKT.
I många situationer kan man behöva hantera tre eller fler eller fler alternativ.
Studera följande intervall:
Antal poäng | Betyg |
---|---|
36 | A |
25 | C |
18 | E |
Flera if-satser och else
int points = Convert.ToInt32(Console.ReadLine());
if(points >= 36)
{
Console.WriteLine("Betyg A");
}
if(points >= 25)
{
Console.WriteLine("Betyg C");
}
if(points >= 18)
{
Console.WriteLine("Betyg E");
}
else {
Console.WriteLine("Snart klarar du.");
}
villkor med flera alternativ
Om points = 37, vad skrivs ut?
if/else if/else
int points = Convert.ToInt32(Console.ReadLine());
if(points >= 36)
{
Console.WriteLine("Betyg A");
}
else if(points >= 25)
{
Console.WriteLine("Betyg C");
}
else if(points >= 18)
{
Console.WriteLine("Betyg E");
}
else {
Console.WriteLine("Snart klarar du.");
}
villkor med flera alternativ
Om points = 37, vad skrivs ut? Skillnad mot förra exemplet?
Skillnad med else if-sats?
En if-sats kommer alltid att köras om villkoret är SANT.
En else if-sats kommer endast att köras om föregående villkor var FALSKA. D.v.s endast ett alternativ om minst ett av alternativen är sanna.
switch-satsen
en variant av if/else if/else-satsen
int userChoice = Convert.ToInt32(Console.ReadLine());
switch (userChoice)
{
case 1:
Console.WriteLine("Du har valt nr 1");
break;
case 2:
Console.WriteLine("Du har valt nr 2");
break;
case 3:
Console.WriteLine("Du har valt nr 3");
break;
case 4:
Console.WriteLine("Du har valt nr 4");
break;
default:
Console.WriteLine("Var god välj ett alternativ nr 1-4");
break;
}
12. Logiska operatorer
Hur skapar du ett villkor som är SANT om en variabel X är större än 100 och mindre än 200 🤔?
Vad måste gälla?
Jo, att både X > 100 OCH X < 200!
Vi behöver alltså använda oss av två villkor.
Logiska operatorer
Logisk operator | Symbol | Exempel | Värde |
---|---|---|---|
OCH | && | uttryck1 and uttryck2 |
true om båda är sanna annars false |
ELLER | || | uttryck1 or uttryck2 |
true om minst ett är sant, annars false |
INTE | ! | !uttryck | false om uttrycket är sant, annars true |
Används för att undersöka flera villkor samtidigt
OCH - &&
int X = Convert.ToInt32(Console.ReadLine());
if(X > 100 && X < 200)
{
Console.WriteLine("Det okända talet är mellan 100 och 200");
}
else {
Console.WriteLine("Utanför intervallet...");
}
Logiska operatorn som är sann då endast alla uttryck är sanna (eng. AND)
Här måste X både vara större än 100 och mindre än 200 för att hela utrycket ska vara SANT.
ELLER - ||
bool solenSkiner = false;
double badTemperatur = 21;
if(solenSkiner || badTemperatur > 20)
{
Console.WriteLine("Vi går och badar");
}
else {
Console.WriteLine("Vi badar när solen skiner eller
badtemperaturen är över 21 grader");
}
Logiska operatorn som är SANT då minst ett av utrycken är sanna.
Här räcker det att antingen solenSKiner är SANT eller badTemperatur är större än 20 för att hela uttrycket ska vara sant.
INTE - !
bool gameOver = false;
if(!gameOver)
{
Console.WriteLine("Spelet avslutas");
}
else {
Console.WriteLine("Du får fortsätta spela");
}
Logiska operatorn INTE, !, då FALSKT blir SANT, eller SANT blir FALSKT
Här blir gameOver = true och villkoret hamnar i "Spelet avslutas".
Övning: Logiska operatorer
Avgör om följande uttryck är sanna eller falsk. Sätt true för sant och false för falskt.
a) 1 < 2 && 5 > 4 _________
b) 1 == 2 && 1 < 2 _________
c) 1 == 2 || 1 == 1 ________
d) 3 <= 4 || 3 >= 4 ________
e) 3 <= 4 && 3 >= 4 _________
f) 2 < 1 || 2 == 0 _________
g) 5 < 5 && 5 > 5 _________
h) 5 < 5 || 5 > 5 _________
Om a = 1, b = 2, och c = 3:
i) a < b && a > b _________
j) a < b || a > b _________
k) a < c && b < c ________
l) a > c || c > b ________
m) a == b && a < c _________
n) a <= b && a <= c _________
o) b <= c || b >= a _________
13. Prioriteringsregler
Prioriteringsregler
När man skriver uttryck med flera operatorer så måste det finnas regler för i vilken ordning de ska utvärderas. Precis som i matematiken är det viktigt att multiplikation och division genomförs innan addition och subtraktion.
1. Räknesätten ( * och /, sedan + och -)
2. Jämförelser
3. Logiska operatorer (förutom ICKE ! )
4. Tilldelningar
Exempel prioriteringsregler
svar = 3 + 2 * 3 < 5 && 4/4 >= 1 || true;
svar = 3 + 6 < 5 && 1 >= 1 || true;
svar = 9 < 5 && 1 >= 1 || true;
svar = false && true || true;
svar = false || true;
svar = true;
* och /
+ och -
+ och -
Jämförelser
Logiska operatorer, && sedan ||
Tilldelning
14. Introduktion till loopar
Repetitionssatser
Loopar används för att kunna köra ett block kod flera gånger. En iteration (=upprepning) är ett varv inuti en loop.

I denna kurs lär vi oss loopen för:
while
for
och
(de är snarlika, men lite olika syntax och användningsområden)
15. while-loopen
Exempel while-loop
string input;
bool run = true;
while(run == true) {
Console.WriteLine("Vill du avsluta programmet? ja/nej");
input = Console.ReadLine();
if(input == "ja" {
run = false;
}
}
16. Förändringsoperatorer
Förändringsoperatorer
Operator | Symbol | Exempel | Samma som | Om tal är 3, blir det |
---|---|---|---|---|
Uppräkning | ++ | tal++ | tal = tal + 1 | 4 |
Nedräkning | -- | tal-- | tal = tal -1 | 2 |
Enklare sätt att öka eller minska med 1.
while-loop
En while-loop körs så länge villkoret är uppfyllt
int counter = 1;
while(counter < 10)
{
counter++;
}
//Räknaren är 10
Console.WriteLine(counter);
int counter = 1;
if(counter < 10)
{
counter++;
}
//Räknaren är 2
Console.WriteLine(counter);
17. for-loopen
for-loopen
Initierar räknaren
Sker bara en gång
Kontrollerar räknaren
Sker innan varje loop
Ändrar räknaren
Sker efter varje loop
for-loopen fungerar likadant while-loopen, men här skrivs initiering, kontroll och uppräkning på samma rad.
for(int i = 1; i < 10; i++)
{
Console.WriteLine(i);
}
Exempel for-loop
// Läser in talet som det ska summeras till
int num = Convert.ToInt32(Console.ReadLine());
// Börja med att summan är 0
int sum = 0;
// Loopa från 1 upp till talet som det ska summeras till
for(int i = 1; i <= num; i++) {
// Addera varje heltal till variabeln "sum"
sum = sum = i;
}
// Skriv ut resultatet till användaren
Console.WriteLIne("Talsumman för " + num + " är " + sum);
En for-loop som adderar alla tal upp till ett valfritt tal "num"
18. Nästlade loopar
Nästlade loopar
for(int i = 0; i < 10; i++) {
for(int j = 0; j < i; j++) {
Console.Write("*");
}
Console.WriteLIne("");
}
Det går bra ha en loop i en loop, det kallas nästlade loopar. Här skriver den yttre loopen ut varje raden och den inre antal * som motsvar radnumret.
*
**
***
****
*****
******
*******
********
*********
19. Arrayer
Hur gör man om man vill hantera många värden? Exempelvis olika temperaturer under längre tid. Det blir opraktiskt att deklarera en variabel för varje värde.
Problemet
Använda en array, som är en slags lista som reserverar plats i minnet för flera värden på en gång.
Lösning
Arrayer
För att nå ett värde i arrayen måste man veta vilken plats i arrayen värdet ligger, detta kallas index.
4 | 1 | 9 | 8 | 10 | 5 | 2 | 1 | 7 |
---|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|
index
Obs! Startar på 0!
Denna array har storlek 9, från index 0 till 8
Värde
En array är en variabel som innehåller flera värden av samma typ. Det är en lista som lagrar flera värden och är praktisk för att hantera större mängder data.
Deklarera en array
// En array som innehåller 3 element som är av datatypen string
string[] pokemons = {"Pikachu", "Wartotle", "Squirtle"};
// En array som innehåller 5 element som är av datatypen int
int[] numbers = {3, 4, 8, 8, 0};
När du vet vilka värden du vill ha från början (fördefinierad array).
Deklarera en array
När du inte vet vilka värden du har från början.
// En array av dataypen string som kan innehålla max 5 värden
string[] friends = new string[5];
// En array av dataypen int som kan innehålla max 10 värden
int[] numbers = new int[10];
Hämta ett värde från en array
//Deklarerar en int array med 5 platser och initerierar dess värden
int[] numbers = { 4, 1, 9, 8};
/* Hämtar värde från arrayen "number" på position 0
och tilldela till variabeln valuePos0 */
int valuePos0 = numbers[0];
/* Hämtar värde från arrayen "number" på position 3
och tilldela till variabeln valuePos3 */
int valuePos3 = numbers[3];
Console.WriteLine(valuePos0); // Skriver ut 4
Console.WriteLine(valuePos3); // Skriver ut 8
Tilldela ett värde i en array
//Deklarerar en int array med 5 platser och initerierar dess värden
int[] numbers = { 4, 1, 9, 8};
/* Tilldelar värdet för elementet i arrayen "numbers"
på position 0 till 43 */
numbers[0] = 43;
/* Tilldelar värdet för elementet i arrayen "numbers"
på position 3 till 59 */
numbers[3] = 59;
Console.WriteLine(valuePos0); // Skriver ut 43 (gamla värde 4 ersätts)
Console.WriteLine(valuePos3); // Skriver ut 59 (gamla värde 8 ersätts)
for-loopar arrayer
//Deklararer en int array med 10 platser
int[] numbers = new int[10];
Console.WriteLine("Skriv in 10 st heltal:");
//1. Fyller en array med 10 st heltal genom att loopa genom varje index.
// Metoden .Length ger oss längden på arrayen
for (int i = 0; i < numbers.Length; i++)
{
numbers[i] = Convert.ToInt32(Console.ReadLine());
}
//2. Skriver ut varje värde i arrayen från 1)
for (int i = 0; i < numbers.Length; i++)
{
Console.WriteLine(numbers[i]);
}
20. Metoder
Metoder
- Ändrar inte i funktion, bara i struktur!
- DRY-principen (Don't Repeat Yourself)
- Handlar om att återvinna sin kod (eng refactoring)
- Istället för att upprepa kod kan man anropa metoden ifråga
- Kallas i vissa fall funktioner
Main-metoden
där programmet börjar
using System;
namespace Metoder
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
EN METOD - DÄR PROGRAMMET BÖRJAR -MÅSTE FINNAS!
Exempel på metod
using System;
namespace Metoder
{
class Program
{
static void Main(string[] args)
{
//Skriv ut Simpsonfamiljen
Console.WriteLine("Marge");
Console.WriteLine("Maggie");
Console.WriteLine("Homer");
Console.WriteLine("Lisa");
//Här händer en massa annat
//Skriv ut Simpsonfamiljen
Console.WriteLine("Marge");
Console.WriteLine("Maggie");
Console.WriteLine("Homer");
Console.WriteLine("Lisa");
}
}
}
Upprepas. Bör "kapslas in"
Exempel på metod
using System;
namespace Metoder
{
class Program
{
static void Main(string[] args)
{
//Metoden printSimpsonFamily anropas
PrintSimpsonFamily();
//Här händer en massa annat
//Metoden printSimpsonFamily anropas, igen.
PrintSimpsonFamily();
}
//Skriver ut Simpsonfamiljen
static void PrintSimpsonFamily()
{
Console.WriteLine("Marge");
Console.WriteLine("Maggie");
Console.WriteLine("Homer");
Console.WriteLine("Lisa");
}
}
}
Koden inkapslad i en metod
Metoden anropas från main-metoden
Metoden anropas från main-metoden
static är ett reserverat ord som vi kommer beröra senare
Reserverat ord. Metoden ger inte något tillbaka (returnerar) - vi återkommer om det!
using System;
namespace Game
{
class Game
{
//Default character name
static string CharacterName = "John Doe";
static void Main(string[] args)
{
StartGame();
NameCharacter();
Console.ReadKey();
}
static void StartGame()
{
Console.WriteLine("Game Title");
Console.WriteLine("Welcome to ...");
}
static void NameCharacter()
{
Console.WriteLine("What would you like your character's name to be?");
CharacterName = Console.ReadLine();
Console.WriteLine("Great! Your character is now named " + CharacterName);
}
}
}
EXEMPEL METODER
INFÖR TEXTÄVENTYR
using System;
namespace Game
{
class Game
{
static void Main(string[] args)
{
Console.Write("A stranger approaches...");
Dialog("Have you seen..?");
Console.Write("1) Yes, 2) No, 3) Repeat the question");
Console.ReadKey();
}
static void Dialog(string message)
{
Console.ForegroundColor = ConsoleColor.Cyan;
Console.Write(message);
Console.ResetColor();
}
}
}
Att ta in information i en metod - PARAMETER
Definiera en metod
Anropa en metod
21. Stränghantering
Escapesekvenser
Escape-sekvens | Förklaring | Exempel i kod | Utseende i program |
---|---|---|---|
\n | Ny rad | "Album: \n The Wall" | Album The Wall |
\t | Infoga tabbavstånd | "Album: \t The Wall" | Album The Wall |
\" | Visa citattecken | "Album: \"The Wall\"" | Album: "The Wall" |
\\ | Visa ett bakvänt streck | "Album: Pink Floyd \\The Wall" | Album Pink Floyd\The Wall |
Det bakvända snedstrecket / inleder något som kallas escapesekvens (flyktsekvens). Dessa är bra att känna till:
Få information om strängar!
- Kom ihåg att en sträng kan hanteras som en array!
- mening[2] - ta reda på tecken på index 2 i strängen (arrayen)
- Length - få information om antalet platser i strängen (arrayen)
string sentence = "Det här är en kort text";
Console.WriteLine(sentence[0]); //Skriver ut plats 0 - D
Console.WriteLine(sentence[9]); //Skriver ut plats 0 - r
Console.WriteLine(sentence.Length); //Skriver ut antal tecken i strängen sentence
Användbara metoder för strängar
Metod | Förklaring |
---|---|
ToUpper() | Gör alla tecken till versaler |
ToLower() | Gör alla tecken till gemener |
Contains(string value) | Ger true/false om value finns i strängen |
IndexOf(char value) | Ger positionen för value |
Substring(int startindex, int length) | Ger delsträngen från startindex till antal tecken length |
Trim() | Tar bort whitespace innan och efter |
Exempel på metoder för strängar

string sentence = " Det här är en kort text ";
string upper = sentence.ToUpper();
Console.WriteLine(upper);
string lower = sentence.ToLower();
Console.WriteLine(lower);
bool contains = sentence.Contains("text");
Console.WriteLine(contains);
contains = sentence.Contains("txt");
Console.WriteLine(contains);
int index = sentence.IndexOf("D");
Console.WriteLine(index);
string substring = sentence.Substring(3, 5);
Console.WriteLine(substring);
string trimmed = sentence.Trim();
Console.WriteLine(trimmed);
Programkod
Utskrift i konsolen
23. Flödesdiagram
att planera sin kodning...
Vad är en algoritm?
Algoritm
En algoritm består av begränsat antal instruktioner som ska utföras för att lösa ett problem
Pseudokod & Flödessdiagram
- Om en algoritm uttrycks på vårt vanliga språk kallas det för pseudokod
- Ett flödesdiagram visar med symboler hur ett problem ska lösas och ger en bra överblick
Att lättare förstå hur ett problem ska kunna lösas innan det översätts till programspråk
Flödesdiagram
En algoritm kan delas upp i ett begränsat antal instruktioner. Varje instruktion illustreras med en symbol som förbinds med pilar.
Start eller stopp
Något utförs
Ett val mellan två alternativ (selektion)
sats
sats
sats
sats
sats
sats
sats
sats
sats
sats
villkor
sant
falskt
SEKVENS
SELEKTION
ITERATION
villkor
sant
falskt

Flödesdiagram på verkligt problem!
Start
Stopp
Läs i tal1
Läs i tal2
Skriv tal1
Skriv tal2
tal1>tal2
sant
falskt
FLÖDESDIAGRAM
PSEUDOKOD
Uppgift: Jämföra två inmatade tal och skriva ut det tal som är störst
Läs in två tal, tal1 och tal2
Om tal1 är större än tal2
skriv ut tal1
annars
skriv ut tal2
Övning
Flödesdigram: Hur gjorde du frukost imorse?
23. Namnkonventioner
Namnkonventioner C#
Variabelnamn och argument
Metoder (och allt annat)
int currentScore;
string firstName;
Använd camel-case!
static void SayMessage() {
Console.WriteLine("Hey!");
}
Använd pascal-case!
Hur man kommentera en metod
/**
* Den här metoden frågar efter användarens karaktärsnamn
* och sedan skriver ut karaktärsnamnet i konsolen.
* Utskriften är grön då namnet efterfrågas.
* @param -
*
* @author Sandra Larsson
* @since 2019-12-10
*/
static void NameCharacter()
{
Console.WriteLine("You need a code name for this mission. What will it be?");
Console.ForegroundColor = ConsoleColor.Green;
Console.Write("Enter your code name: ");
CharacterName = Console.ReadLine();
Console.ResetColor();
Console.WriteLine("Your code name is confirmed to be " + CharacterName);
}
Facit
Övning Relationsoperatorer
Övning Logiska operatorer
a) false b) true c) false d) true e) false f) false g) true h) true i) true j) true k) false
a) true b) false c) true d) true e) false f) false g) false h) false i) false j) true k) true l) true
m) false n) true o) true
Programmering 1 t.o.m PROV - Printversion
By Sandra Larsson
Programmering 1 t.o.m PROV - Printversion
The hole shabang
- 151