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
- Metoder med return
- Variablers räckvidd (scope)
- Rekursiva metoder
- Sorterings- och sökningsalgoritmer
- Listor
- Slumptal
1. Grunder
Grunder
- Om datorn, hårdvara och mjukvara
- Källkod och maskinkod
- Olika programmeringspråk
- Kompilering
- Programspråket Python
- Python 2 v.s Python 3
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 1-or och 0-or 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.
En kompilator översätter källkod till maskinkod, lagrar den i en exekverbar fil, så att datorn kan tolka instruktionerna och köra programmet (exekvera). Pythonkod översätts också till maskinkod men interpretaras istället för att kompileras. Till skillnad från kompilatorn tolkar en interpretator maskinkoden direkt, den läser en instruktion i taget och utför den.
.
Python
- Lanserades 1991 av Guido van Rossum
- Vanligt som nybörjarspråk, men också ett av de mest populära idag
- Använder dynamisk typning och beskrivs som scriptspråk
- Används för allt möjligt, mycket till vetenskapliga beräkningar, maskininlärning, webben
- Python 3 släpptes 2008 och var då inte helt och hållet bakåtkompatibel med Python 2
- Vi kommer använda Python 3 i kursen!
Python
- Något som utmärker Python är dess eleganta och rena programkod
- I övriga programspråk brukar klammra {} användas för att dela in olika block, medan Python använder indentering. Blir "rent" och ökar läsbarheten
- "The Zen of Python" - 20 förhållningssätt för en pythonprogrammare (för dig som är intresserad)

2. Installera utvecklingsmiljön


Installera Python 3

Installera Visual Studio Code


Installera en Extension som heter Python

Hjälper dig att köra, felsöka, formatera kod, etc.
Olika typer av program
Konsolprogram (terminalen)
Graphical User Interface (GUI)


3. Ett första exempel
Programmet "Hello World"
# Skriver ut texten "Hello World" i terminalen
message = "Hello World"
print(message)
Output
Det programmet skickar ut till användaren
# Anges i början av en kommentarrad
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
I VS Code kan du även markera koden till vill markera och välja
Edit -> Toggle Line Comment eller Toggle Block Comment
VARIABLER
DATATYPER
OCH
Mål
- Vad är en variabel och hur används en variabel?
- Vad är en datatyp och några av de mest användbara datatyperna i Python
- Lära sig att hantera input och output från/till användaren
- Hur man omvandlar (konverterar) datatyper
- Varför Python kallas för ett dynamiskt typat språk
- Pythons regler och konventioner för namn på variabler
Variabler
- I programmering är en variabel en platshållare för ett värde.
- Tänk matematik, du ger exempelvis x värdet 5, x = 5
- En variabel får ett namn som används för att komma åt värdet
- En variabel kan förändras under programmets gång
- En variabel innehåller en reserverad plats i datorns arbetsminne
Variabler tilldelas med ett variabelnamn till vänster och ett värde till höger om likamedstecknet
total_points = 1034
Variabelnamn
Värde
Variabler måste alltid tilldelas innan de kan användas i programmet. Annars blir det fel när man kör (exekverar) programmet. Felet brukar lyda "undefinied variable.."
Tilldelning
Tilldelning
Här tilldelas variabeln pokemon värdet med texten "Pikachu". Eftersom det är en text och inte ett tal så skriver man den med citattecken.
pokemon = "Pikachu"
Variabelnamn
Värde
- Kan tilldelas till andra variabler
- Tilldelas ett annat värde i programmet
- Tilldelas med andra variabler på samma rad
python_is_awesome = 100
another_var = python_is_awesome
python_is_awesome = 1234
x, y, z = 50, 30, 100
Variabler
Datatyper
Det värde som man tilldelar en variabel måste vara av giltig datatyp. Pythons mest vanliga datatyper:
DATATYP | BESKRIVNING |
---|---|
str | En sekvens av tecken. Benäms string, sv sträng. Med enkla eller dubbla citattecken. Ex "name" eller 'name' |
int | Heltal som 1, 32, 4, o.s.v står för eng heltal |
float | Decimaltal som 1.3, 4.56, osv. Obs! använd punkt, ej kommatecken |
bool | True eller False, d.v.s sant eller falskt |
list | En ordnad sekvens av värden av olika datatyper. Ex [1,2,3] eller ["a", "b", "c"] |
Med flera!
my_str = "a hat"
my_other_str = 'a cat'
String
En sträng, d.v.s en sekvens av tecken kan antingen deklareras med enkla citattecken ' eller dubbla ".
Du kan använda antingen eller, men tänk på att du är konsekvent vilken du använder i samma programfil.
str_one = "john"
str_two = "doe"
str_three = str_one + " " + str_two # john doe
Strängkonkatenering
Med konkatenering menas att man "sätter ihop" flera strängar efter varandra. Det gör man med + - operatorn
Man kan också använda += - operatorn
str_one = "ice"
str_one += " cream"
str_one # ice cream
Nummer
INTEGER | FLOAT |
---|---|
4 | 6.1 |
57 | 1.3333 |
10 | 0.0 |
Två huvudtyper av nummer:
Integer är heltal och float är decimaltal
my_str = "moonlight"
print(type(my_str)) # Skriver ut <class 'str'>
my_int = 666
print(type(my_int)) # Skriver ut <class 'int'>
my_float = 666.666
print(type(my_float)) # Skriver ut <class 'float'>
Datatyper
För att veta vilken datatyp en variabel är av använder du type()
python_variable = True
print(python_variable) # True
python_variable = "a dog"
print(python_variable) # a dog
python_variable = None
print(python_variable) # None
python_variable = 22 / 7
print(python_variable) # 3.142857142857143
Dynamisk typning
Python är flexibelt att tilldela variabler värde av olika datatyper.
Detta kallas dynamisk typning,
Andra språk som C++/C#/Java, m.fl har inte dynamisk typning, utan statisk typning.
Variabelnamn
- Variabler kan bara börja med bokstäver eller underscore _
- Resterande tecken i variabelnamnet kan endast vara bokstäver, nummer eller underscore_
- Inga reserverade ord som redan finns i python (vi kommer till detta senare, men exempvis kan du inte använda print)
- Case-sensitive, d.v.s skillnad på stora och små bokstäver
Regler som måste följas, annars blir det fel i programmet!

Variabelnamn
- De flesta variabler ska använda sig av s.k snake_case. Små bokstäver och underscore mellan orden. Namnge alltid din variabel utifrån vad den gör, ex health_points = 30.
- CAPITAL_SNAKE_CASE refererar till konstanter ex PI = 3.14
- Vi återkommer till fler namnkonventioner när det blir aktuellt
Pythonprogrammare brukar använda sig av namnkonventioner så att koden blir enhetlig både för sig själv och andra. Ingen regel, utan mer om hur du uppför dig som kodare

_cats
2cats
cats2
hey%%%you
CATS != Cats
print
print_all
Variabelnamn



namn = input("Skriv ditt namn:")
Input
Det användaren skickar till programmet
Läser in text från användaren som tilldelas till variabeln namn.
Metoden input() läser in värdet som string, d.v.s namn blir av datatypen str.
Typomvandling
birth_year = int(input("Skriv in ditt födelseår:"))
current_year = int(input("Skriv in nuvarande årtal:"))
age = current_year - birth_year
Behövs göras när man vill omvandla en variabel av en viss datatyp till en annan. Använd datatypens namn och () kring utrycket.
Ett bra exempel på detta är när du behöver ha ett nummer, int eller float, från input() för att kunna utföra matematiska operationer.
Med int() omvandlas här en str till int
RÄKNA
PYTHON
MED
Hantera nummer och matematik
MÅL
- Använda de mest vanliga matematiska operatorerna
- Skillnaden på int och floats
- Prioriteringsregler
- Några mindre vanliga, men användbara matematiska operatorer som modulo, integer division och exponentiering
Matematiska operatorer
SYMBOL | FUNKTION |
---|---|
+ | Addition |
- | Subtraktion |
* | Multiplikation |
/ | Division |
** | Exponentiering |
% | Modulo |
// | Integer division |
Som du mest kommer att använda:


Exempel 4:a räknesätten
tal1 = 100
tal2 = 10
# 1. Addition
resultat = tal1 + tal2
# 2. Subtraktion
resultat = tal1 - tal2
# 3. Multiplikation
resultat = tal1 * tal2
# 4. Division
resultat = tal1 / tal2
int och floats
resultat = 1 + 2 # 3 <class 'int'>
resultat = 3 / 4 # 0.75 <class 'float'>
resultat = 1 + 0.75 #1.75 <class 'float'>
resultat = 5 // 2 # 2 <class 'int'>
# Med // avrundas divisionen till närmsta heltal (neråt)
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. Parenteser
2. Potenser
3. Multiplikation/Division
4. Addition/Subtraktion
Exempel
# Vi tilldelar tre olika variabler var sitt värde
tal1 = 23, tal2 = 20, tal3 = 28
#Beräknar medelvärdet
medel = (tal1 + tal2 + tal3)/3
# Skriver ut medelvärdet till användaren
print("Medelvärdet är " + medel)
Beräkna medelvärdet av 3 st heltal
Modulo %
Ger rest vid heltalsdivision

Modulo %
print(10 % 8) # Skriver ut 2
print(15 % 4) # Skriver ut 3
print(60 % 30) # Skriver ut 0
print(240 % 13) # Skriver ut 6
Exempelområden
- Udda eller jämnt nummer
- Konvertera minuter till timmar
- Ett slumptal ska vara innanför ett intervall
LOGIK
VILLKORSATSER
OCH
MÅL
- Använda True (sant) och False (falskt)
- Hur man använder villkor (if-satser) för gör att val mellan ett eller flera alternativ
- Jämförelseoperatorer
- Logiska operatorer
Villkor
Ett villkor är en fråga som man besvaras ja eller nej. Exempelvis är 2 större än 1? Det är alltså ett logiskt uttyck som kan antingen vara sant eller falskt.
I Python motsvarar det True eller False .

if-satsen är en enkel selektion som avgörs om villkoret är sant eller falskt.
Ditt program kan alltså ta olika vägar utifrån om uttrycket är True eller False.
If-satsen
Sats(er)
Villkor
FLÖDESSCHEMA
Sant
Falskt
PYTHONKOD
if villkor:
sats(er)
Endast om villkoret är uppfyllt utförs sats(erna).
Tänk på att raden efter kolonet (:) måste vara indraget och tillhör pythons syntax. Indragningen avgör när en if-sats avslutas.
Använda if-sats
if 2 > 1:
#Om villkoret är SANT ska denna sats utföras
print("2 är större än 1!!!")
# Ingen indragnong, if-satsen har avslutats
print("Ok lätt som en plätt. Programmet avslutas.")
VILLKOR
Operator
... är en symbol för något som ska utföras. Exempelvis plustecknet vid matematisk addition.
I Python finns flera olika operatorer. Vi ska utforska de aritmetiska (matematiska)-, jämförelse-, logiska- och förändringsoperatorerna.
3 + 4
operand
operand
operator
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 3 > 2 skulle detta ge True. 3 < 2 skulle ge False.
truthy = 3 > 2 # True
falsy = 3 < 2 # False
Jämförelseoperatorer
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 | True |
mindre än | < | a < b | True |
mindre än lika med | <= | a <= b | True |
Tar in två värden och jämför dem. Exempel om a = 3, b = 5.
Värdena kan vara av vilken datatyp som helst int, float, str, bool. Komma bara ihåg att de du jämför med måsta vara av samma datatyp!
SÅ...
Vad är nu skillnaden mellan att använda
=
==
eller

Exempel bool
gameOver = False
If-else-satsen
Alternativ 1
Villkor
FLÖDESSCHEMA
Sant
Falskt
PYTHONKOD
if villkor:
alternativ 1
else:
alternativ 2
If-else satsen är ett val mellan två alternativ, ett tvåvägsval. Till skillnad från if-satsen utförs även ett andra alternativ om villkoret är falskt.
Alternativ 2
Använda if-else-sats
if 2 > 1:
#Om villkoret är SANT ska denna sats utföras
print("2 är större än 1!!!")
# Ingen indragnong, if-satsen har avslutats
print("Ok lätt som en plätt. Programmet avslutas.")
VILLKOR
If-elif-else-satsen
Alternativ 1
Villkor
FLÖDESSCHEMA
Sant
Falskt
PYTHONKOD
if villkor:
alternativ 1
else:
alternativ 2
If-else satsen är ett val mellan två alternativ, ett tvåvägsval. Till skillnad från if-satsen utförs även ett andra alternativ om villkoret är falskt.
Alternativ 2
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 |
Använda if-elif-else-sats
if 2 > 1:
#Om villkoret är SANT ska denna sats utföras
print("2 är större än 1!!!")
# Ingen indragnong, if-satsen har avslutats
print("Ok lätt som en plätt. Programmet avslutas.")
VILLKOR
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".
x = 10
formatted = f"I've told you {x} times already!"
Formatera strängar
/* 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)
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.
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;
}
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);
}
24. Metoder med return
få tillbaka ett värde från en metod
Ordval
Metoder och Funktioner är egentligen samma sak.
En metod är en funktion som är associerad till en klass.
I C# har vi bara klasser, därav har vi använt oss av den bedömningen.

- En funktion (eller metod) är en subrutin, procedur, subprogram som anropas för att utföra en viss uppgift oberoende av resten av koden.
- Man skickar oftast med parametrar (argument) som input till funktionen/metoden.
- En funktion (eller metod) kan också returnera ett värde. Till exempel resultatet av en beräkning som skett i kodblocket inne i funktionen/metoden.
Metoder med return
- Används när vi vill returnera ett värde från metoden.
- Man kan säga att metoden "skickar tillbaka ett värde"
- Om man använder return sätter man inte void, utan den datatyp som returneras (returtyp)
static string sayHi(string name)
{
string greeting = "Welcome " + name;
return greeting;
}
static void Main(string[] args)
{
string text = sayHi("John"); // Metoden anropas
Console.WriteLine(text); // Skriver ut "Welcome John"
}
Returnerar värdet greeting
Parameter till metoden
Ger ett värde tillbaka utifån argumentet "John"
Metoder med return
static void Main(string[] args)
{
int sum = addNumbers(5, 2);
Console.WriteLine(sum);
}
static int addNumbers(int a, int b)
{
int sum = a + b;
return sum;
}
Samma returtyp
Flera parametrar separeras med komma
Ingen retur, använd void
static void sayHi(string name)
{
Console.WriteLine("Welcome " + name);
}
static void Main(string[] args)
{
sayHi("John"); // Metoden anropas
// och skriver ut "Welcome John"
}
Metod som inte returnerar ett värde
25. Variablers räckvidd (eng. scope)
Lokala variabler
static void Main(string[] args)
{
int sum = addNumbers(5, 2);
Console.WriteLine(sum);
}
static int addNumbers(int a, int b)
{
int sum = a + b;
return sum;
}
Variabler som deklarers inne i en metod kallas lokala variabler. D kan inte användas utanför metoden. Detsamma gäller parametarna till metoden.
En variabel i en metod har alltså inte något samband med variabler i en annan metod
Variabler räckvidd eng. scope
class Program
{
static int x = 10;
Console.WriteLine(a + b); //Error
static int addNumbers(int a, int b)
{
int sum = a + b;
return sum;
}
static void Main(string[] args)
{
Console.WriteLine(x); // OK
Console.WriteLine(sum); //Error
}
}
Globalt scope
Lokalt scope
Variablers giltighet (synlighet) gäller i det block de är deklarerade och i alla underblock, men ej de överordnade blocken.
Lokalt scope
26. Rekursiva metoder
Rekursiva metoder
- En rekursiv metod är en metod som anropar sig själv
- Ett alternativ till loopar
- En rekursiv lösning kan ge en enkel lösning till annars svåra problem
static void countDown(int n)
{
Console.WriteLine(n);
if(n <= 1)
{
// Basfallet
return;
} else
{
// Metoden anropar sig själv
countDown(n - 1);
}
}
static void Main(string[] args)
{
// Metoden körs
// Skriver ut 5,4,3,2,1
countDown(5);
}

Exempel på rekursiv metod
En rekursiv metod måste ha ett basfall som talar om när algoritmen är klar.
Metoden anropar sig själv tills den når basfallet.
Beräkna talsumma med rekursion
Exempel: Talsumman för 5 = 5 + 4 + 3 + 2+ 1
s(1) = 1
s(2) = 2 + 1 = 2 + s(1)
s(3) = 3 + 2 + 1 = 3 + s(2)
s(4) = 4 + 3 + 2 + 1 = 4 + s(3)
s(5) = 5 + 4 + 3 + 2 + 1 = 5 + s(4)
.....
s(n) = n + s(n-1)
En rekursiv definition till ett problem innehåller basfallet och hur problemet kan lösas genom ett eller flera mindre delproblem
27. Sortering- & Sökningsalgortimer
En algoritm är en begränsad uppsättning instruktioner som ska utföras i tur och ordning för att lösa en given uppgift
I C# finns det redan färdiga metoder för sortering- och sökning. Men det är bra att ha underliggande kunskap om hur de fungerar!
Infogande sortering
Bubbelsortering
Binär sökning
28. Listor
Listor
- En nackdel med arrayer är att det är besvärligt att lägga till och ta bort data om dessa inte ligger sist i arrayen.
- En annan nackdel är att dess storlek måste bestämmas när arrayen skapas.
En lagringstruktur med fler möjligheter än en array.
Listor
// Deklarera en lista
List<int> numbers = new List<int>();
- Kan ses som en array, men där det finns ett tillägg av praktiska metoder för att hantera listor
- Till skillnad från en array kan en lista krympa eller växa i storlek
Du måste ange datatypen på två ställen
Listor
// Inkludera denna högst upp!
using System.Collections.Generic;
using System.Linq;
Metoder för listor
Metod | Förklaring |
---|---|
Add(element) | Lägger till ett element sist i listan |
AddRange(elements) | Lägger till flera element samtidigt |
Insert(pos, element) | Infogar elementet element i listan i den position som anges av pos. |
RemoveAt(pos) | Tar bort ett element från listan i den position som anges av pos |
Sort() | Sorterar en lista i stigande ordning (numerisk eller alfabetisk ordning) |
IndexOf(element) | Hittar ett element i listan. Returnerar -1 och den inte hittades. |
BinarySearch(element) | Hittar ett element i listan. Listan måste vara sorterad innan denna metod appliceras. |
Clear() | Tömmer listan på dess innehåll |
Count | Ger antalet element i listan |
foreach
passar bra för att söka igenom en lista
List<String> pokemons = new List<string>() {
"Pikachu",
"Spearow",
"Eevee"
}; // Lista med fördefinerade värden
foreach (string element in pokemons)
{
Console.WriteLine(element);
// Skriver ut Pikachu, Spearow, Eevee
}
List<String> pokemons = new List<string>();
pokemons.Add("Pikachu");
Console.WriteLine(pokemons[0]); // Skriver ut Pikachu
string[] morePokemons = { "Eevee", "Squirtle" };
foreach(string element in pokemons)
{
Console.WriteLine(element); // Skriver ut Pikachu, Eevee, Squirtle
}
pokemons.RemoveAt(2);
pokemons.Insert(1, "Spearow");
int posEevee = pokemons.IndexOf("Eevee");
Console.WriteLine(posEevee); //Skriver ut 2
foreach (string element in pokemons)
{
Console.WriteLine(element); // Skriver ut Pikachu, Spearow, Eevee
}
pokemons.Sort();
foreach (string element in pokemons)
{
Console.WriteLine(element); // Skriver ut Eevee, Pikachu, Squirtle
}
int posPikachu = pokemons.BinarySearch("Pikachu");
Console.WriteLine(posPikachu); // SKriver ut 1
Exempel Listor
Varför använda array när man kan använda en lista?
- Om du har en fix storlek på din lista och du inte behöver metoderna, använd dig av en array!
- En array blir på så sätt effektivare i minneshantering än en lista.

"Varför köra truck, om du endast behöver en liten och snabb bil?"
29. Slumptal
Slumptal
//Skapa en randomerare som jag kan slumpa tal med
Random randomerare = new Random();
//Slumpa ett tal mellan 0 och 19
int tal = randomerare.Next(20);
//Slumpa ett tal mellan 15 och 31
int nyttTal = randomerare.Next(15, 32);
Får du "bra" slumptal?

SLASK Programmering 1 Python
By Sandra Larsson
SLASK Programmering 1 Python
The hole shabang
- 167