Tie koodariksi

Programmeringens grunder

Språk:

Kapitel 5: Mer om slingor

Vi kan genomföra väldigt många slags program genom att kombinera variabler och slingor på lämpliga sätt. Meningen är att med hjälp av variablerna bevara data mellan slingans olika omgångar.

Räkna ut summan

Följande program räknar ut summan 1+2+3+...+100 med hjälp av variabeln summa.
summa = 0
for i in range(1,101):
    summa += i
print(summa)

När vi kör programmet skriver det ut följande tal:

5050

Detta betyder att 1+2+3+...+100 = 5050.

Programmet består av tre skeden. Först skapar programmet variabeln summa, vars värde är 0. Därefter kommer en slinga som går igenom talen 1...100 med hjälp av variabel i. Vid varje tal ökar slingan värdet för variabeln summa med i. Till slut, efter slingan, skriver programmet ut värdet för variabeln summa.

Här är summa += i en förkortningsmarkering som betyder samma sak som summa = summa+i. Denna markering är behändig, eftersom vi ofta vill öka variabelns värde i programmering.

Undersöka programmet

Om vi vill undersöka närmare hur ett program fungerar, kan vi flytta en print-rad in i slingan:

summa = 0
for i in range(1,101):
    summa += i
    print(summa)

Nu skriver programmet ut värdet på variabeln summa efter varje ökning av talet i. Programmet skriver alltså först ut summan 1, sedan summan 1+2 = 3, sedan summan 1+2+3 = 6, etc.

1
3
6
10
15
...
5050

Fler summor

På motsvarande sätt kan vi räkna ut vilken summa som helst genom att ändra slingan. Till exempel räknar följande program ut summan av jämna tal 2+4+6+...+100:
summa = 0
for i in range(2,101,2):
    summa += i
print(summa)
Programmets utskrift är följande:
2550
Följande program räknar däremot ut summan av 21+22+23+...+2100:
summa = 0
for i in range(1,101):
    summa += 2**i
print(summa)
Programmets utskrift är följande:
2535301200456458802993406410750

Utskrift av talföljder

Låt oss ännu skapa ett program som skriver ut de första 100 talen i talföljden 1, 2, 4, 7, 11, etc. Här är meningen att skillnaden mellan intilliggande tal är 1, 2, 3, 4, etc.

Vi använder variablerna tal och skillnad i programmet. Variabeln tal anger vilket tal som skrivs ut som följande och variabeln skillnad anger dess skillnad till följande tal. Varje omgång ökar skillnaden med ett.

tal = 1
skillnad = 1
for i in range(100):
    print(tal)
    tal += skillnad
    skillnad += 1
Programmets utskrift är följande:
1
2
4
7
11
...
4951

Uppgift 1 Olöst

Skriv ett program som räknar ut summan av udda tal 1+3+5+...+99.

Skriv ditt program här:


Uppgift 2 Olöst

Skriv ett program som räknar ut summan av kvadrater 12+22+32+...+1002.

Skriv ditt program här:


Uppgift 3 Olöst

Fakulteten n! beräknas med formeln 1*2*3*...*n. Exempel: fakulteten av 5 är 1*2*3*4*5 = 120.

Skriv ett program som räknar ut fakulteten av 100.

Skriv ditt program här:


Uppgift 4 Olöst

Skriv ett program som räknar ut summan 11+22+33+...+100100.

Skriv ditt program här:


Uppgift 5 Olöst

Fibonaccis talföldj är 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, etc. De två första talen är 0 och 1, och därefter är varje tal summan av de två föregående talen.

Skriv ett program som skriver ut de första 100 talen i Fibonaccis talföljd.

Skriv ditt program här:


Uppgift 6 Olöst

Skriv ett program som skriver ut talen 1...100 sä att varannat tal är det minsta talet som inte har skrivits ut, och varannat tal är det största talet som inte har skrivits ut.

Med andra ord, programmet bör skriva ut 1, 100, 2, 99, 3, 98, etc.

Skriv ditt program här: