Loopar
💡 Vad är loopar?
Loopar är som att säga till datorn: “Gör det här 100 gånger!” 🚀
Tänk dig att du ska skriva “Jag kommer inte vara sen” 100 gånger på tavlan. Istället för att skriva varje rad manuellt, säger du till datorn: “Skriv den här meningen 100 gånger”. Det är precis vad loopar gör!
🎯 TL;DR
Loopar = automatisk upprepning. for när du vet antal gånger, while när du inte vet, foreach för listor. Andra håll koll på oändliga loopar - de kraschar din dator! 💥
📋 Efter att ha läst detta kommer du att kunna
- Använda
for-loopar för att räkna 📊 - Använda
while-loopar när du inte vet hur lång loopen ska vara ⏳ - Använda
foreachför att gå igenom listor 📝 - Undvika oändliga loopar (superviktigt!) ⚠️
- Nästla loopar (loop i loop) 🤯
🔧 Grundprinciper
Princip 1: Rätt loop för rätt jobb
for: När du VET hur många gånger (1-10, 0-100, etc)while: När du INTE vet hur många gånger (tills användaren säger stopp)foreach: När du vill gå igenom en lista/array
Princip 2: Undvik oändliga loopar
Om loopen aldrig slutar = datorn kraschar! 💻💥
Princip 3: Håll det enkelt
En loop ska göra EN sak. Komplex logik = svårt att debugga.
🚀 Loopar i praktiken
🟢 For-loop - När du räknar
// Skriv ut nummer 1-5
for (int i = 1; i <= 5; i++)
{
Console.WriteLine($"Nummer: {i}");
}
// Output:
// Nummer: 1
// Nummer: 2
// Nummer: 3
// Nummer: 4
// Nummer: 5
For-loop uppdelat:
int i = 1→ Start: Räknaren börjar på 1i <= 5→ Villkor: Fortsätt medan i är mindre/lika med 5i++→ Steg: Öka i med 1 varje gång
// Räkna bakåt
for (int i = 10; i >= 1; i--)
{
Console.WriteLine($"Nedräkning: {i}");
}
Console.WriteLine("🚀 Start!");
🟡 While-loop - När du inte vet hur länge
// Låt användaren gissa ett nummer
int hemligNummer = 42;
int gissning = 0;
while (gissning != hemligNummer)
{
Console.Write("Gissa numret: ");
gissning = int.Parse(Console.ReadLine());
if (gissning < hemligNummer)
Console.WriteLine("🔼 För lågt!");
else if (gissning > hemligNummer)
Console.WriteLine("🔽 För högt!");
else
Console.WriteLine("🎉 Rätt! Du vann!");
}
Viktigt med while-loops:
- ⚠️ ALLTID ändra villkoret inne i loopen
- Annars = oändlig loop = krascha datorn!
// 🚨 FARLIG - oändlig loop!
while (true)
{
Console.WriteLine("Detta slutar aldrig!"); // 💥
// Ingen break eller ändring av villkoret
}
// ✅ SÄKER - med break
while (true)
{
Console.Write("Skriv 'quit' för att avsluta: ");
string input = Console.ReadLine();
if (input == "quit")
break; // 🚪 Avsluta loopen
Console.WriteLine($"Du skrev: {input}");
}
🔄 Do-while-loop - Gör minst en gång
// Be användaren mata in ett positivt nummer
int nummer;
do
{
Console.Write("Ange ett positivt nummer: ");
nummer = int.Parse(Console.ReadLine());
if (nummer <= 0)
Console.WriteLine("❌ Det var inte positivt. Försök igen!");
} while (nummer <= 0);
Console.WriteLine($"✅ Bra! Du valde {nummer}");
Skillnad mellan while och do-while:
while→ Kollar villkoret först, sedan kör kodendo-while→ Kör koden först, kollar villkoret sedan
// while - körs 0 gånger
int x = 10;
while (x < 5)
{
Console.WriteLine("Detta skrivs aldrig ut");
}
// do-while - körs 1 gång
int y = 10;
do
{
Console.WriteLine("Detta skrivs ut en gång");
} while (y < 5);
🔴 Foreach-loop - För listor och arrayer
// Gå igenom en lista av namn
List<string> namn = new List<string> { "Anna", "Bertil", "Cecilia", "David" };
foreach (string person in namn)
{
Console.WriteLine($"👋 Hej {person}!");
}
// Output:
// 👋 Hej Anna!
// 👋 Hej Bertil!
// 👋 Hej Cecilia!
// 👋 Hej David!
// Fungerar med arrayer också
int[] poäng = { 85, 92, 78, 96, 88 };
int totalt = 0;
foreach (int betyg in poäng)
{
totalt += betyg;
Console.WriteLine($"Betyg: {betyg}");
}
Console.WriteLine($"Genomsnitt: {totalt / poäng.Length}");
Foreach vs For:
foreach→ Enklare, ingen risk för index-felfor→ Mer kontroll, kan ändra ordning eller hoppa över
⚠️ Avancerade loop-tekniker
Nästlade loopar (Loop i loop)
// Skapa ett 3x3 rutnät
for (int rad = 1; rad <= 3; rad++)
{
for (int kolumn = 1; kolumn <= 3; kolumn++)
{
Console.Write($"[{rad},{kolumn}] ");
}
Console.WriteLine(); // Ny rad
}
// Output:
// [1,1] [1,2] [1,3]
// [2,1] [2,2] [2,3]
// [3,1] [3,2] [3,3]
Break och Continue
// Break - avsluta loopen
for (int i = 1; i <= 10; i++)
{
if (i == 5)
break; // 🚪 Stoppa här!
Console.WriteLine(i); // Skriver 1,2,3,4
}
// Continue - hoppa över
for (int i = 1; i <= 5; i++)
{
if (i == 3)
continue; // ⏩ Hoppa över 3
Console.WriteLine(i); // Skriver 1,2,4,5
}
📚 Sammanfattning
Loopar = kraftfullt verktyg för att undvika att upprepa kod:
for- När du vet antal gånger (1-10, 0-100)while- När du inte vet antal gånger (tills användaren säger stopp)foreach- För att gå igenom listor/arrayerdo-while- Som while, men körs minst en gångbreak- Avsluta loopen direktcontinue- Hoppa till nästa iteration
🎯 Övningar
- 🟢 Grundläggande: Skriv en for-loop som räknar från 1 till 100
- 🟡 Utmanande: Skapa en meny med while-loop som körs tills användaren väljer “Avsluta”
- 🔴 Expert: Använd nästlade loopar för att skapa en multiplikationstabell
🎬 Filmtips för att förstå loopar
Om loopar känns svårt - kolla på filmer om tidslingor! 🔁
- Groundhog Day - Klassikern!
- Edge of Tomorrow - Tom Cruise i action-loop
- Happy Death Day - Skräck-loop
- Source Code - Sci-fi loop
😄 Obligatorisk dad joke
Varför gillar programmerare while-loopar?
För att de aldrig vill göra något for gånger! 😅