SA

Programmering 1 – Mer om for-loopar

Centrala mål enligt presentationsslide

  • Fördjupa förståelsen av for-loopar.

  • Kunna specificera start, stopp och steg i range().

  • Lära sig nästlade for-loopar (loopar inuti loopar).

  • Tillämpa kunskaperna i ett antal övningar & diskussionsuppgifter.

Grundläggande syntax och indentering

  • Allmän struktur:

    • python for variabel in range(...): # kodblock

  • Kolon (:) avslutar for-raden – obligatoriskt.

  • Indentering med tabbtangent eller två mellanslag:

    • Kod som är indenterad upprepas i slingan.

    • Fel indrag ger IndentationError eller logiska fel.

  • Svensk terminologi

    • Loop, slinga = repetition.

    • Indentering = "indrag".

Standardexempel: loopa ett fast antal gånger

  • ```python
    for n in range(5):
    print("Hej")

- Utskrift:
  - Hej (5 gånger).
- Viktiga observationer:
  - `range(5)` genererar heltalen 0,1,2,3,4 – **startar på 0 som default**.

# Variabelvärden under iteration
- ```python
  for i in range(5):
      print(i)
  • Resultat: 0\ 1\ 2\ 3\ 4 (radbrytningar mellan talen).

  • Visar att loopvariabeln själv går igenom värdena i range().

range() med Start & Stopp

  • Allmän form: range(start, stop) där stop exkluderas.

  • Exempel:

    • python for i in range(1, 6): print(i)

    • Skriver ut 1\ 2\ 3\ 4\ 5 (ej 6) ⇒ viktigt att komma ihåg exklusionen.

Beräkningar inuti for-loopar

  • Ackumulera summa:

    • python summa = 0 for i in range(1, 101): summa = summa + i # kan förkortas till summa += i print("Summan av alla tal mellan 1 och 100:", summa)

  • Teoretiskt facit: \sum_{i=1}^{100} i = 5050.

  • Gäller för andra operatorer också: -=, *=, /= osv.

range() med Start, Stopp & Steg

  • Full syntax: range(start, stop, step).

  • Exempel (utdata 0–20 med steg 5):

    • python for i in range(0, 21, 5): print(i)

    • Output: 0\ 5\ 10\ 15\ 20.

  • Kan även använda negativa steg för att räkna baklänges.

    • python for i in range(10, 0, -1): print(i)

Nästlade for-loopar (loop i loop)

  • Struktur:

    • python for i in range(outer_stop): for j in range(inner_stop): # kod

  • Två demon:

    1. Utan end-argument → varje print() lägger radbrytning:

    • Två for ger 6 hej (3×2).

    1. Med end="" för att styra radslut:

    • python print("Hej ", end="")

    • Ger utskrift på samma rad tills \n skrivs.

  • Viktigt: inner-loopen körs helt för varje varv i outer-loopen.

Övningar & diskussionsuppgifter (klassgemensamma)

  • Syfte: befästa teori genom praktik.

  • Övningstitlar refereras som Uppgift 1–4.

Uppgift 1 – Heltalsutskrift

  • a) Skriv tal 1\dots 11.

  • b) 1\dots 100.

  • c) -100\dots 5.

  • Tips: justera range(start, stop+1).

Uppgift 2 – Var 7:e tal 0–100

  • Förväntad lista: 0,7,14,21,\dots,98.

  • Kodförslag: range(0, 101, 7).

Uppgift 3 – Produkt 1·2·…·10

  • Använd ackumulator produkt *= i.

  • Matematisk lösning: P = \prod_{i=1}^{10} i = 3628800.

Uppgift 4 – Rektangulär stjärnmatris 5×5

  • Målbild (fyra rader, fem stjärnor):

    • *

    • *

    • *

    • *

  • Nyttjar två nästlade loopar eller print("*"*bredd).

  • print("h", end="")-tipset påminner om hur man spärrar radbrytning.

Individuella övningar (Uppgift 5–12)

  • Strävar efter ökat självständigt tänkande.

Uppgift 5 – Jämna tal 0–100

  • Jämnt tal ⇒ i % 2 == 0 eller range(0, 101, 2).

Uppgift 6 – Summera 1→n (dynamiskt n)

  • Använd input() för att läsa n (glöm ej int()-omvandling).

  • Resultatutskrift: "Summan av talen från 1 till n är: S".

Uppgift 7 – Rita rektangel enligt användar-höjd/bredd

  • Två inputs: höjd, bredd.

  • Ytterloop = höjd, inner = bredd.

Uppgift 8 – Räkna baklänges 10→1

  • Negativt steg: range(10, 0, -1).

Uppgift 9 – Triangel med stjärnor

  • Ökande längd rad för rad:

    • *

    • **

    • ***

    • ****

    • *

  • Innerloopens längd = radnummer.

Uppgift 10 – Första 10 talen i 7:ans tabell

  • Enkel loop: for i in range(1, 11): print(i*7).

Uppgift 11 – Tabell med uttrycksform

  • Format: 7 * i = produkt.

  • Kräver f-string eller format() för snygg utskrift.

Uppgift 12 – Valfri tabell enligt användarinput

  • Läs talet t och loopa i 1–10.

  • Ger generell multiplikationsfunktion.

(Bonus) Full multiplikationstabell 1–10×1–10

  • Dubbel nästlad loop (10×10 = 100 utskrifter).

  • Viktig indenterings-disciplin.

Samband med tidigare lektioner

  • Återkoppling till input() (data från användaren).

  • Repetition av aritmetiska operatorer (+= etc.).

  • Förberedelse för kommande kapitel: while-loopar, listor, funktioner.

Praktiska och real-world kopplingar

  • Datainsamling: Loopa över mätpunkter.

  • Spelutveckling: Spawna fiender i nästlade koordinater.

  • Statistik: Summera eller multiplicera stora datamängder.

  • UI-ritning: Skriva ASCII-grafik (rektanglar, trianglar).

Etiska och pedagogiska reflektioner

  • Undvik oändliga loopar (kan hänga systemet).

  • Viktigt med läsbar kod: indentering → samarbete & felsökning.

  • Övningar tränar algoritmiskt tänkande och exakthet – kärnkompetens för etik (korrekt resultat → rättvisa beslut).

Viktiga minnesregler (sammanfattning)

  • range(stop) → start = 0, stop exkluderas.

  • range(start, stop) → stop exkluderas.

  • range(start, stop, step) → både start & step kan vara negativa.

  • for avslutas med : och följs av indenterat block.

  • Använd +=, *= med ackumulatorer för summor/produkter.

  • Nästlade loopar = loop-i-loop, ordinjerings-regeln: inner är helt färdig före nästa varv i outer.

  • print(..., end="") styr radbrytningar – viktigt för formaterad utskrift.