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 foreach fö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 = 1Start: Räknaren börjar på 1
  • i <= 5Villkor: Fortsätt medan i är mindre/lika med 5
  • i++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 koden
  • do-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-fel
  • for → 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/arrayer
  • do-while - Som while, men körs minst en gång
  • break - Avsluta loopen direkt
  • continue - Hoppa till nästa iteration

🎯 Övningar

  1. 🟢 Grundläggande: Skriv en for-loop som räknar från 1 till 100
  2. 🟡 Utmanande: Skapa en meny med while-loop som körs tills användaren väljer “Avsluta”
  3. 🔴 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! 🔁

😄 Obligatorisk dad joke

Varför gillar programmerare while-loopar?

För att de aldrig vill göra något for gånger! 😅


Undersidor


    Upp

    Upp


    Licens: Apache 2.0 | © 2023 Marcus Medina, Campus Mölndal. Alla rättigheter förbehållna.
    Du får använda och modifiera detta verk enligt villkoren i Apache License, Version 2.0. Du får inte använda detta verk för kommersiella ändamål utan tillstånd från upphovsmannen.