Programmering i gymnasieskola och vuxenutbildning referensblad till workshop

Relevanta dokument
Platser för att skriva och testa kod online. Workshop om programmering i matematikkurser, version 0.7 senast sparat

Extramaterial till Matematik Y

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

Uppgifter teknik HT17 (uppdaterad v. 40)

Språket Python - Del 1 Grundkurs i programmering med Python

Användarhandledning Version 1.2

Extramaterial till Matematik Y

Beräkningsvetenskap föreläsning 2

Planering av ett större program, del 2 - for och listor. Linda Mannila

Kurslitteraturen. C-nivå Villkorssatser [kap 8] if & elif & else and & or Loopar [kap 9] for

Förkortning och förlängning av rationella uttryck (s. 27 Origo 3c)

Klassdeklaration. Metoddeklaration. Parameteröverföring

Övningsuppgifter kapitel 8

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

Extramaterial till Matematik Y

Föreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt

Lennart Rolandsson, Uppsala universitet, Ulrica Dahlberg och Ola Helenius, NCM

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Introduktion till programmering SMD180. Föreläsning 3: Funktioner

MATLAB the Matrix Laboratory. Introduktion till MATLAB. Martin Nilsson. Enkel användning: Variabler i MATLAB. utvecklat av MathWorks, Inc.

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

Digitalt lärande och programmering i klassrummet

Förkortning och förlängning av rationella uttryck (s. 29 Origo 3b)

MMA132: Laboration 2 Matriser i MATLAB

729G04 Programmering och diskret matematik. Python 3: Loopar

KPP053, HT2015 MATLAB, Föreläsning 1. Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner

Variabler. TANA81: Beräkningar med Matlab. Matriser. I Matlab skapas en variabel genom att man anger dess namn och ger den ett värde:

TDIU01 - Programmering i C++, grundkurs

Alla datorprogram har en sak gemensam; alla processerar indata för att producera något slags resultat, utdata.

Programmering i matematik på gymnasial nivå: workshop

v. 42 Python HT17 En introduktion Oscar Bergqvist

JavaScript Block Editor:

Variabler och konstanter

v. 43 Python HT17 En introduktion Oscar Bergqvist

MicroPython Ett textbaserad programmeringsspråk för Micro:bit

Planering Programmering grundkurs HI1024 HT 2014

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 27 oktober 2015 Sida 1 / 31

Att förstå hur man konstruerar modulära program Att kunna skapa nya funktioner Att förstå hur data skickas mellan funktioner

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

TDIU01 - Programmering i C++, grundkurs

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY

Föreläsning 10 Datalogi 1 DA2001. Utskrift på skärmen. Syntax. print( Hej ) Hur är det? Hej. print( Hej,end= ) print( Hur är det? ) HejHur är det?

KPP053, HT2016 MATLAB, Föreläsning 1. Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner

Föreläsning 3 Programmeringsteknik och C DD1316. Innehåll i listor. Uppdateringsoperatorer. +,* och listor. Listor. Indexering

Visual Basic, en snabbgenomgång

Övningar i 2D2050. Per-Anders Staav (kallas Pa) Epost: eller

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser

Programmeringsteknik I

DD1314 Programmeringsteknik

Logik och Jämförelser. Styrsatser: Villkorssatsen if och repetitonssatsen for. Scriptfiler. Kommentarer. Tillämpningar: Ett enkelt filter.

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

TAIU07 Matematiska beräkningar med MATLAB för MI. Fredrik Berntsson, Linköpings Universitet. 15 januari 2016 Sida 1 / 26

Introduktion till programmering och Python Grundkurs i programmering med Python

Dagens program. Programmeringsteknik och Matlab. Administrativt. Viktiga datum. Kort introduktion till matlab. Övningsgrupp 2 (Sal Q22/E32)

Introduktion till MATLAB

Inledande programmering med C# (1DV402) Summera med while"-satsen

Introduktion till Matlab

Exempel: Exempel: Exempel: Exempel: $djur=array("ko","katt","älg"); foreach ($djur as $d) { echo $d. " "; } Resultat. ko katt älg

i LabVIEW. Några programmeringstekniska grundbegrepp

Övningsuppgifter till föreläsning 2 Variabler och uttryck

Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell

Föreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk

Typkonvertering. Java versus C

Operatorer Tilldelning Kodblock { } if satsen Logiska uttryck Att programmera

3137 Bestäm ekvationen för den räta linje som går genom punkterna med koordinaterna a) (5, 3) och (3, 5)

Koda ett mattetest 5 av 5. Lektionen handlar om att göra ett mattetest som fungerar för alla multiplikationstabeller. Koda ett mattetest 5 av 5

Introduktion till programmering SMD180. Föreläsning 4: Villkor och rekursion

Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer

PROGRAMMERING ÅK 9 INTRODUKTION

1 Iteration. 1.1 for-satsen

Funktioner. Linda Mannila

Datorlära 6. Arbeta med strängar Inmatning med tangentbordet Bygga ett program med inmatning, funktioner, osv

Grundläggande datalogi - Övning 1

Programmering i C, 7,5 hp

SMD 134 Objektorienterad programmering

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Planering Programmering grundkurs HI1024 HT TIDAA

Dagens program. Programmeringsteknik och Matlab. Viktiga datum. Ett första exempel. Programmall, vad behöver vi i ett javaprogram?

Iteration while-satsen

Parameteröverföring. Exempel. Exempel. Metodkropp

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

Föreläsning 2 Programmeringsteknik DD1310. Programmering. Programspråk

Några inbyggda funktioner (med resultat!) Introduktion till programmering D0009E. Föreläsning 4: Villkor och rekursion. Modulus-operatorn.

Slump och statistik med Scratch. Se video

Introduktion till Matlab

Räkna med C# Inledande programmering med C# (1DV402)

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Introduktion till programmering D0009E. Föreläsning 5: Fruktbara funktioner

Introduktion till programmering SMD180. Föreläsning 9: Tupler

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

JavaScript del 3 If, Operatorer och Confirm

1/15/2013. DD1310/DD1314/DA3009 Programmeringsteknik. Lärandemål... Vilka läser kursen? ...fler lärandemål VARFÖR? Föreläsning 1

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Föreläsning 3. Iteration while-satsen

Viktiga begrepp. Algoritm. Array. Binärkod. Blockprogrammering. Bugg / fel och felsökning. Dataspel. Dator

TANA17 Matematiska beräkningar med Matlab

Logik och kontrollstrukturer

Transkript:

Programmering i gymnasieskola och vuxenutbildning referensblad till workshop Det här häftet innehåller referensblad för fyra olika programspråk, med innehåll utvalt för att vara relevant för matematiklärare på gymnasial nivå. Innan referensbladen finns ett inledande kodexempel, med förklarande rutor. Efter referensbladen finns några tips för felsökning vid programmering. Häftet är en del i Skolverkets konferenser Programmering i gymnasieskola och vuxenutbildning, september 2017. Till materialet hör också ett häfte med nio matematiska problemuppgifter där programmering är en rimlig lösningsstrategi. Materialet kommer att publiceras på ncm.gu.se i samband med modulen Undervisning med digitala verktyg II, i januari 2018. Där finns även lösningsförslag skrivna för Octave/MATLAB. Om programspråken som beskrivs i referensbladen Ämnesplanen i matematik föreskriver inget om att särskilda programspråk eller -miljöer ska användas. Av praktiska skäl är innehållet i referensbladen begränsat till fyra språk. MATLAB är en välkänd programvara för att göra matematiska beräkningar, som används även på industriell nivå och för tunga beräkningar och simuleringar. Språket har stöd för många matematiska metoder och specialfall, och är relativt lätt att komma in i. Octave är en gratis och öppen programvara som har mycket stora likheter med MATLAB, och ett språk som är nära identiskt med MATLAB. Python3 är ett programspråk som inkluderats framförallt för att det är relativt lätt att använda. Det finns, liksom i Octave/MATLAB möjlighet att hantera komplexa tal. JavaScript och PHP är två programspråk som inkluderats framförallt för att de är vanliga inom webbutveckling, och det därför är elever eller lärare använt dem i andra sammanhang. JavaScript är dessutom ett språk som kan användas i GeoGebra, som är ett relativt vanligt verktyg i matematikundervisning. Två språk som inte inkluderats är Java och C/C++/C#, trots att de är vanliga programspråk. Anledningen är att de är relativt svåra att komma igång med, samt att personer som använder dessa språk troligtvis hanterar dem så pass väl att referensblad på den här nivån är överflödiga. Referensbladen är skrivna för att visa grundläggande användning av språken, plus några aspekter som kan vara särskilt intressanta för arbete med matematik. Exemplen är valda för att avspegla samma saker i alla språk, vilket betyder att unika och kanske mer användbara aspekter av varje språk inte syns. Det rekommenderas att söka på nätet för att ta reda på mer om hur du kan använda det språk du väljer. 23 (41)

Platser för att skriva och testa kod online I de flesta fall fungerar det bäst att skriva och exekvera (köra) kod lokalt på den egna datorn. Ofta kräver det dock att man installerar särskilda program, och det kan också finnas svårigheter med att använda vissa programspråk på vissa typer av enheter. Ett alternativ för att komma igång snabbt är att utnyttja onlinetjänster gjorda just för att skriva och exekvera mindre mängd kod. Några sådana tjänster är: repl.it: Stödjer en stor uppsättning språk, och har funktioner för att spara och dela kod. Det finns även guider för att lära sig språken. Stödjer inte Octave/MATLAB. tutorialspoint.com/codingground.htm: Stödjer en stor uppsättning språk, och har funktioner för att spara och dela kod. Det finns även guider för att lära sig språken. Har stöd även för Octave/MATLAB. octave-online.net: Webbplats som endast stödjer Octave/MATLAB. Det finns funktioner för att spara och dela kod. Platser för att lära sig att programmera Det finns en rad webbplatser där man kan lära sig att programmera, för många olika programspråk och kunskapsnivåer från noll till hög. Många av dessa webbplatser är gratis att använda och kräver ingen registrering. Det här dokumentet tar inte upp några specifika sådana webbplatser, men den som vill kan söka reda på listor över urval av dem och recensioner av deras för- och nackdelar. 24 (41)

Anteckningar för introduktion till programmering Introduktionen genomförs med programspråket Python3. Det är skillnad mellan Python3 och Python, så det är viktigt att välja rätt programspråk. Platsen där kodningen görs är webbtjänsten repl.it. Webbtjänsten erbjuder en så kallad programmeringsmiljö, där man kan skriva kod (i rutan till vänster) och se resultat från kod man skriver (i rutan till höger). Koden körs genom att trycka på play-knappen ovanför koden. Medan du skriver kod kommer programmeringsmiljön erbjuda förslag på kommandon, funktioner och variabler som du kan använda ungefär som en mobiltelefon erbjuder ordförslag. Om du inte vill ha något av de föreslagna orden kan du trycka escape. Del 1: Variabler Variabler är en viktig del i programmering. De används för att spara data av olika typer, så som tal och textsträngar. I Python3 och många andra programspråk skapas variabler genom att man hittar på ett variabelnamn, och markerar med ett likamedtecken att variabeln ska få ett värde. a = 3 b = 4 c = -5.5 min_variabel = -1.5 Vi väljer själva vilka namn vi vill ge variablerna, men när vi vill använda variablerna senare i programmet måste vi använda exakt samman namn inklusive stora och små bokstäver. Variabelnamn kan inte innehålla mellanslag. Ett vanligt sätt är att istället använda understreck, som i min_variabel. En annan metod är att inleda nya ord med stor bokstav för att öka läsbarheten, exempelvis minvariabel. Variabelnamn får inte börja med en siffra. Notera att vi använder punkt som decimaltecken, inte komma. Mellanslagen runt likamedtecknet är bara med för ökad läsbarhet de behövs inte för att koden ska fungera. Variabler kan innehålla andra typer av värden än tal, exempelvis text. Texten måste då omges av citattecken (enkla eller dubbla). Text kallas ofta för en sträng i programmeringssammanhang. min_andra_variabel = "Hello world!" Del 2: Kommentarer Välskriven kod innehåller kommentarer som gör den lättare för människor att läsa och förstå. Kommentarer är rader som hoppas över när programmet körs, men som hjälper programmerare att förstå vad hela eller specifika delar av koden gör. 25 (41)

I Python3 markeras kommentarer genom att de börjar med # (fyrkant). # Program för att lösa andragradsekvationer # Koefficienterna för ekvationen ax^2 + bx + c = 0 a = 3 b = 4 c = -5.5 Det är också möjligt att lägga kommentarer sist i kodrader. Del 3: Beräkningar och operatorer Vi kan använda variabler i beräkningar, både med enkla räknesätt och med avancerade operatorer och funktioner. Hur räknesätt och operatorer skrivs varierar mellan olika programspråk, och ofta kan man behöva slå upp dem på nätet eller på andra ställen. Vanliga operatorer i matematikundervisning finns sammanfattade i referensbladet. Nedan följer ett par exempel. (Nya rader är fetmarkerade.) # Program för att lösa andragradsekvationer # Koefficienterna för ekvationen ax^2 + bx + c = 0 a = 3 b = 4 c = -5.5 # Beräkna diskriminanten för andragradsuttrycket D = b ** 2 4 * a * c # Beräkna de två lösningarna på ekvationen import math x1 = (-b + math.sqrt(d)) / (2 * a) x2 = (-b - math.sqrt(d)) / (2 * a) I koden är följande saker lite överraskande eller svåra att veta i förväg: Gånger skrivs *, inte exempelvis eller. Upphöjt till skrivs **, inte exempelvis ^. Kvadratrot skrivs math.sqrt() och kräver att man någonstans tidigare i programmet har skrivit import math ( importerat math-klassen ). Python3 förstår -b men inte 2a. Ofta måste man alltså skriva ut multiplikationer, och då blir det extra viktigt att undersöka behov av parenteser. Dessa saker, och många fler, är sådant man slår upp när det behövs. Saker som man använder ofta lär man sig utantill efter ett tag, annat inte. Att slå upp saker är något som tillhör vardagen i programmering. Samma sak gäller att leta upp och kopiera färdiga kodsnuttar från andra det ses inte som fusk, utan som klokt och ofta även smickrande för den som får sin kod kopierad (så länge man säger varifrån den kommer). 26 (41)

Del 4: Att skriva ut resultat Programmet ovan sparar lösningarna till en andragradsekvation i variablerna x1 och x2, men resultatet syns ingenstans. För att resultatet ska synas för användaren kan vi använda funktionen print(). # Program för att lösa andragradsekvationer # Koefficienterna för ekvationen ax^2 + bx + c = 0 a = 3 b = 4 c = -5.5 # Beräkna diskriminanten för andragradsuttrycket D = b ** 2-4 * a * c # Beräkna de två lösningarna på ekvationen import math x1 = (-b + math.sqrt(d)) / (2 * a) x2 = (-b - math.sqrt(d)) / (2 * a) # Skriv ut resultaten print(x1) print(x2) Om man vill skriva ut flera saker på samma rad kan man använda följande skrivsätt. # Skriv ut resultaten print("x1:", x1) # Skriver ut exempelvis "x1: 0.84256..." print("x2:", x2) # Skriver ut exempelvis "x2: -2.1758..." Del 5: Felmeddelanden Programmet ovan kan nu användas för att lösa andragradsekvationer och få lösningarna presenterade med många decimalers noggrannhet. Genom att ändra på värdena på a, b och c kan vi undersöka olika andragradsekvationer. Men om vi anger koefficienter så att ekvationen saknar reella lösningar får vi inga lösningar i rutan till höger, utan ett rött felmeddelande visas och programmet avbryts. I felmeddelandet står vad som har gått fel. Meddelandet kan vara svårt att tyda, men det finns alltid med en hänvisning till den rad där programmet avbröts. Felmeddelanden visas inte bara när man försöker beräkna kvadratroten ur negativa tal, utan även exempelvis när man använt felaktig syntax eller stavat fel på variabler. Att testköra sitt program medan man håller på att skriva kan göra att man lättare och snabbare hittar fel och misstag. Del 6: Villkor och villkorssatser I programmering används villkorssatser för att köra vissa delar av koden endast om givna villkor är uppfyllda. I vårt program som löser andragradsekvationer är det rimligt att 27 (41)

kontrollera att det finns några reella lösningar. Det görs genom att skriva if, följt av ett villkor, och sedan kolon se exemplet nedan. # Program för att lösa andragradsekvationer # Koefficienterna för ekvationen ax^2 + bx + c = 0 a = 3 b = 4 c = -5.5 # Beräkna diskriminanten för andragradsuttrycket D = b ** 2-4 * a * c import math # Undersök antal lösningar och skriv ut dem if D >= 0: # Reella lösningar finns x1 = (-b + math.sqrt(d)) / (2 * a) x2 = (-b - math.sqrt(d)) / (2 * a) print(x1) print(x2) else: # Ingen reell lösning print("inga reella lösningar finns.") Tre saker att observera: Raderna direkt efter if D >= 0: är indragna ( indenterade ); de börjar med två mellanslag (eller en tab). Det berättar för Python3 att alla dessa fem rader hör till villkoret, och ska köras om D är större än eller lika med noll. I programmeringssammanhang kallas dessa rader för ett block, och hela det här blocket med kod körs om villkoret är uppfyllt. Efter if-satsen och det efterföljande blocket står else:. Det säger åt Python3 att alla de efterföljande indragna raderna ska köras om villkoret innan inte är uppfyllt. Man måste inte ha else-satser, men det kan vara användbart. I Python3, och de flesta programspråk skriver man >= istället för. I många programspråk används måsvingar, { och, för att markera var kodblock börjar och slutar, men Python använder istället indrag. Att förstå och använda kodblock kan vara lite knepigt i början, men är en viktig del av att lära sig att programmera. Del 7: Mer om villkor I koden hittills har vi använt större än eller lika med som villkor, men ett vanligare villkor är lika med. Vi utökar koden för att ta hänsyn till fallet då diskriminanten är noll, och vi bara har en enda lösning till ekvationen. # Program för att lösa andragradsekvationer 28 (41)

# Koefficienterna för ekvationen ax^2 + bx + c = 0 a = 3 b = 4 c = -5.5 # Beräkna diskriminanten för andragradsuttrycket D = b ** 2-4 * a * c import math # Undersök antal lösningar och skriv ut dem if D > 0: # Två reella lösningar x1 = (-b + math.sqrt(d)) / (2 * a) x2 = (-b - math.sqrt(d)) / (2 * a) print(x1) print(x2) elif D == 0: # En reell lösning x = (-b + math.sqrt(d)) / (2 * a) print(x) else: # Ingen reell lösning print("inga reella lösningar finns.") Tre saker att observera: Likheter i jämförelser skrivs med två likamedtecken i Python3 och de flesta programspråk. Detta beror på att ett likamedtecken används för att tilldela variabler nya värden. Det är också värt att veta att inte lika med skrivs!=. Utöver else-satser går det att ha else if-satser, som bara körs villkoret är uppfyllt och ingen tidigare villkorssats körts. I Python3 skrivs dessa satser elif, följt av villkor och ett kolon. Även elif-satser följs av ett kodblock som måste vara indraget på rätt sätt. Med detta är exemplet med ett program som löser andragradsekvationer klart. Del 8: Listor och arrayer I de tre sista delarna av genomgången kommer vi att titta på listor/arrayer och loopar. För att göra det kommer vi att skriva ett program som testar om tal är delbara med 7. När man skriver program hamnar man emellanåt i lägen då man vill spara en hel serie av värden, och ofta vet man kanske inte ens hur många de är. I sådana lägen är listor värdefulla. I Python3 skapas listor som vanliga variabler, men värden anges inom hakparenteser och avdelas med kommatecken. # Program som testar delbarhet med 7 # Tal att testa 29 (41)

tal_att_testa = [123, 234, 345, 456, 567, 678, 789] Listor kallas ibland arrayer, och även om det finns viss skillnad mellan de två är det inget som spelar roll i det här sammanhanget. Två viktiga detaljer om listor Det går att komma åt enskilda värden i en lista, exempelvis för att skriva ut dem, göra villkorssatser eller bearbeta dem på annat vis. Det gör man genom att ange ordningsnumret på värdet inom hakparenteser efter variabelns namn. Notera att Python3 och många andra språk börjar räkna från noll i dessa fall. tal_att_testa = [123, 234, 345, 456, 567, 678, 789] print(tal_att_testa[1]) # Skriver ut 234 print(tal_att_testa[0]) # Skriver ut 123 Ett ganska vanligt behov när man arbetar med listor är att kunna lägga till fler värden i slutet på listan. Det görs på följande vis. tal_att_testa = [123, 234, 345, 456, 567, 678, 789] tal_att_testa.append(890) # Lägger till 890 sist i listan Testa delbarhet I vårt program vill vi för vart och ett av talen i listan undersöka om det är delbart med 7. Vi ska börja med ett klumpigt sätt att göra detta. if tal_att_testa[0] % 7 == 0: print("talet är delbart med 7.") else: print("talet är inte delbart med 7.") Vad betyder raderna ovan? Koden använder modulo-operatorn, som ger resten vid en division. I Python3 och många andra programspråk skrivs den %. 10 % 7 blir alltså 3, eftersom 10 ger resten 3 vid division med 7. Om ett tal är jämnt delbart med 7 blir resten 0. De fyra raderna med kod ovan testar om första värdet av de vi vill testa är delbart med 7, och skriver ut resultatet. Om vi ville skulle vi kunna kopiera den här koden och köra den en gång till för tal_att_testa[1], ytterligare en gång för tal_att_testa[2], och så vidare. Men det finns bättre sätt. 30 (41)

Del 9: Loopa genom en lista for-loopar En vanlig användning av listor är att göra något med varje värde i listan i vårt fall vill vi för vart och ett av talen testa om det är delbart med 7. Detta gör man genom att skapa en loop. Loopar är, precis som villkorssatser, en mycket viktig byggsten i programmering. Den typ av loop vi kommer att använda kallas för en for-loop, vilket kanske kan tolkas som för varje värde -loop. I den rad som startar loopen händer flera saker på en gång, som vi kommer att se. # Program som testar delbarhet med 7 # Tal att testa tal_att_testa = [123, 234, 345, 456, 567, 678, 789] for n in tal_att_testa: # Testa delbarhet if n % 7 == 0: print("talet", n, "är delbart med 7.") else: print("talet", n, "är inte delbart med 7.") Några saker att notera: På raden som inleder loopen, for n in tal_att_testa:, skapas en variabel n. Den variabeln kommer att innehålla värdena som finns i tal_att_testa, vart och ett i ordning. Första gången loopen körs kommer den ha värde 123 (värde nr 0), sedan 234 (värde nummer 1), och så vidare. Vi kan själva välja namn på variabeln, som med andra variabler. Raden som inleder loopen avslutas med ett kolon. Alla efterföljande rader som är indragna bildar ett block, och alla dessa rader kommer att upprepas för varje varv loopen kör. Blocket som ingår i loopen innehåller en if-sats, som i sin tur innehåller block. Det går alltså att nästla flera nivåer av loopar och villkorssatser. Det blir då flera nivåer av indrag i koden. Ett snabbt sätt att skapa enkla listor I exemplet ovan har vi manuellt angett de tal som vi vill testa delbarhet för. Om vi vill testa delbarhet för alla tal mellan 0 och 100 är det dock ett ganska jobbigt förfarande. Python3 har ett snabbt sätt att göra detta funktionen range(n). Det ger en lista med de n första heltalen, med början på 0. # Program som testar delbarhet med 7 # Testa talen 0 till 100 for n in range(101): # Testa delbarhet if n % 7 == 0: print("talet", n, "är delbart med 7.") 31 (41)

else: print("talet", n, "är inte delbart med 7.") Notera att det alltså går utmärkt att använda range() direkt i raden där loopen startar vi behöver inte spara listan i en variabel först. Man kan också använda funktionen för att få en lista som inte börjar på 0. Man ger då två parametrar till funktionen först vilket värde listan ska börja på, sedan det första heltalet som inte ska vara med i listan. Ett program som testar alla tal mellan 100 och 200 för delbarhet med 7 kan alltså se ut så här. # Program som testar delbarhet med 7 # Testa alla tal mellan 100 och 200 for n in range(100, 201): # Testa delbarhet if n % 7 == 0: print("talet", n, "är delbart med 7.") else: print("talet", n, "är inte delbart med 7.") Del 10: Villkorsbaserad loop while-loopar For-loopar är användbara när man har ett givet antal värden att bearbeta, eller en loop som man vill köra ett givet antal gånger. Ibland är det dock svårt att veta på förhand hur många gånger koden i loopen behöver köras, och då är while-loopar användbara. De är loopar som fortsätter så länge ett givet villkor är uppfyllt. Ett program som testar alla tal mellan 100 och 200 för delbarhet med 7 kan se ut så här om vi använder en while-loop. # Program som testar delbarhet med 7 # Testa alla tal mellan 100 och 200 n = 100 while n <= 200: # Testa delbarhet if n % 7 == 0: print("talet", n, "är delbart med 7.") else: print("talet", n, "är inte delbart med 7.") n = n + 1 Värt att notera är att vi behöver ha kod inuti loopen som ökar värdet på n annars skulle den aldrig sluta. I det här fallet avslutas loopen med n = n + 1, som alltså ökar värdet på n med 1 för varje gång loopen körs. 32 (41)

Cheat sheet Python3 Det finns ofta fler sätt att hantera språket än vad exemplen nedan visar. Sök på nätet för en mer fullständig referens. Två platser för att skriva kod online: repl.it och tutorialspoint.com/codingground.htm. Skapa variabler siffervariabel = 1 textvariabel = "hello" Vanliga operationer # Fyra räknesätt samt 2 upphöjt till 3 siffervariabel = siffervariabel + 2 * 3-4 / 5 siffervariabel = 2 ** 3 # Förenklat skrivsätt för att öka en variabels värde med ett siffervariabel += 1 # Sammanslagning av strängar textvariabel = textvariabel + " world" Skriva ut värden # Visa resultat print(siffervariabel) Vanliga matematiska konstanter och funktioner # math- eller random-modulen behövs i vissa fall import math import random math.pi math.e round(2.5) # Avrundas till närmsta jämna heltal abs(-1) # Absolutvärdet av -1 10 % 7 # Modulooperatorn, ger resten då 10 delas med 7 random.random() # Slumptal mellan 0 och 1 max(1, 2, 3, 4) min(1, 2, 3, 4) math.sqrt(9) math.log10(x) math.log(x) # Naturliga logaritmen för x math.sin(x) # Vinkeln anges i radianer math.cos(x) # Vinkeln anges i radianer Syntax för villkorssatser if math.sin(x) == 0: print('på y-axeln') elif math.sin(x) > 0: print('positivt y-värde') elif math.sin(x) < 0: print('negativt y-värde') else: print('kan inte tolka y-värdet') 33 (41)

Syntax för loopar # Räkna från 0 till 4 for n in range(5): print('jag har räknat till', n) # Loop baserat på villkor istället för uppräkning while n <= 100: n = n + 1 Syntax för arrayer # Skapa en tom array arrayvariabel = [] # Skapa en array med värden arrayvariabel = [1, 2, 'femton', 'äpple'] # Lägga till ett värde i slutet av en array arrayvariabel.append(x) # Välja ut ett enskilt värde i en array -- räknar från 0 print(arrayvariabel[0]) # Loopa genom alla värden i en array for varde in arrayvariabel: print(varde) Syntax för att skapa och anropa funktioner def min_funktion(x, y): x = x * math.sqrt(y) return x print(min_funktion(2, 5)) Övrigt # Python3 hanterar komplexa tal. "j" (inte "i") används för # den imaginära enheten, och måste alltid föregås av ett tal. z = (1 + 1j) * (1 + 3j) 34 (41)

Cheat sheet Octave/MATLAB Det finns ofta fler sätt att hantera språket än vad exemplen nedan visar. Sök på nätet för en mer fullständig referens. I Octave/MATLAB konverteras variabler i allmänhet till arrayer/vektorer, och den som vill använda Octave eller MATLAB i större omfattning vinner mycket på att hantera arrayer, vektorer och även matriser i språket. Två platser för att skriva kod online: tutorialspoint.com/codingground.htm och octaveonline.net. Skapa variabler siffervariabel = 1; textvariabel = "hello"; Vanliga operationer % Fyra räknesätt samt 2 upphöjt till 3 siffervariabel = siffervariabel + 2 * 3-4 / 5; siffervariabel = 2 ^ 3; % Skrivsätt för att öka en variabels värde med ett siffervariabel = siffervariabel + 1 % Sammanslagning av strängar textvariabel = [textvariabel " world"]; Skriva ut värden % Visa resultat i terminal (avsluta raden utan semikolon) textvariabel Vanliga matematiska konstanter och funktioner pi e round(2.5); % Avrundas till 3 abs(-1); % Absolutvärdet av -1 mod(10, 7) % Modulooperatorn, ger resten då 10 delas med 7 rand(); % Slumptal mellan 0 och 1 max([1, 2, 3, 4]); min([1, 2, 3, 4]); sqrt(9); log10(x); log(x); % Naturliga logaritmen för x sin(x); % Vinkeln anges i radianer cos(x); % Vinkeln anges i radianer 35 (41)

Syntax för villkorssatser if sin(x) == 0 disp('på y-axeln') elseif sin(x) > 0 disp('positivt y-värde') elseif sin(x) < 0 disp('negativt y-värde') else disp('kan inte tolka y-värdet') end Syntax för loopar % Räkna från 0 till 4 for n = 0:4 disp(["jag har räknat till " num2str(n)]) end % Loop baserat på villkor istället för uppräkning while n <= 100 n = n + 1 end Syntax för arrayer % Skapa en tom array arrayvariabel = []; % Skapa en array med värden arrayvariabel = ['1', '2', 'femton', 'äpple']; % Lägga till ett värde i slutet av en array arrayvariabel = [arrayvariabel 'ny']; % Välja ut ett enskilt värde i en array -- räknar från 1 arrayvariabel(1); % Loopa genom alla värden i en array med tal for varde = arrayvariabel varde end Syntax för att skapa och anropa funktioner function returvarde = minfunktion(x, y) returvarde = x * sqrt(y); end minfunktion(2, 5) Övrigt % Octave/MATLAB hanterar även komplexa tal. z = (1 + i) * (1 + 3i) 36 (41)

Cheat sheet JavaScript Det finns ofta fler sätt att hantera språket än vad exemplen nedan visar. Sök på nätet för en mer fullständig referens. Två platser för att skriva kod online: repl.it och tutorialspoint.com/codingground.htm. Skapa variabler var siffervariabel = 1; var textvariabel = "hello"; Vanliga operationer // Fyra räknesätt samt 2 upphöjt till 3 siffervariabel = siffervariabel + 2 * 3-4 / 5; siffervariabel = Math.pow(2, 3); // Förenklat skrivsätt för att öka en variabels värde med ett siffervariabel++; // Sammanslagning av strängar textvariabel = textvariabel + " world"; Skriva ut värden // Visa resultat i en popup-ruta window.alert(textvariabel); // Visa resultat i log console.log(siffervariabel); Vanliga matematiska konstanter och funktioner Math.PI Math.E Math.round(2.5); // Avrundas till 3 Math.abs(-1); // Absolutvärdet av -1 10 % 7 // Modulooperatorn, ger resten då 10 delas med 7 Math.random(); // Slumptal mellan 0 och 1 Math.max(1, 2, 3, 4); Math.min(1, 2, 3, 4); Math.sqrt(9); Math.log10(x); Math.log(x); // Naturliga logaritmen för x Math.sin(x); // Vinkeln anges i radianer Math.cos(x); // Vinkeln anges i radianer Syntax för villkorssatser if (sin(x) == 0) { console.log('på y-axeln'); else if (sin(x) > 0) { console.log('positivt y-värde'); 37 (41)

else if (sin(x) < 0) { console.log('negativt y-värde'); else { console.log('kan inte tolka y-värdet'); Syntax för loopar // Räkna från 0 till 4 for (n = 0; n < 5; n++) { console.log('jag har räknat till ' + n); // Loop baserat på villkor istället för uppräkning while (n <= 100) { n++; Syntax för arrayer // Skapa en tom array arrayvariabel = []; // Skapa en array med värden arrayvariabel = [1, 2, 'femton', 'äpple']; // Lägga till ett värde i slutet av en array arrayvariabel.push(x); // Välja ut ett enskilt värde i en array -- räknar från 0 console.log(arrayvariabel[0]); // Skapa ett objekt -- till skillnad från arrayer blir värdena inte ordnade objektvariabel = {'ett' : 'one', 'två' : 'two', 3 : 'three'; // Välja ut ett enskilt värde i ett objekt objektvariabel['ett']; // 'one' objektvariabel[3]; // 'three' objektvariabel['3']; // Odefinierat // Loopa genom alla värden i ett objekt for (var i in objektvariabel) { console.log(objektvariabel[i]); Syntax för att skapa och anropa funktioner function minfunktion(x, y) { x = x * Math.sqrt(y); return x; console.log(minfunktion(2, 5)); 38 (41)

Cheat sheet PHP Det finns ofta fler sätt att hantera språket än vad exemplen nedan visar. Sök på nätet för en mer fullständig referens. Två platser för att skriva kod online: repl.it och tutorialspoint.com/codingground.htm. Skapa variabler $siffervariabel = 1; $textvariabel = "hello"; Vanliga operationer // Fyra räknesätt samt 2 upphöjt till 3 $siffervariabel = $siffervariabel + 2 * 3-4 / 5; $siffervariabel = pow(2, 3); // Förenklat skrivsätt för att öka en variabels värde med ett $siffervariabel++; // Sammanslagning av strängar $textvariabel = $textvariabel. " world"; Skriva ut värden // Visa resultat i log print $siffervariabel; Vanliga matematiska konstanter och funktioner pi(); exp(1); // e upphöjt till 1, dvs. e round(2.5); // Avrundas till 3 abs(-1); // Absolutvärdet av -1 10 % 7 // Modulooperatorn, ger resten då 10 delas med 7 rand(5, 10); // Slumpat heltal mellan 5 och 10 max(1, 2, 3, 4); min(1, 2, 3, 4); sqrt(9); log10($x); log($x); // Naturliga logaritmen för $x sin($x); // Vinkeln anges i radianer cos($x); // Vinkeln anges i radianer Syntax för villkorssatser if (sin($x) == 0) { print 'På y-axeln'; else if (sin($x) > 0) { print 'Positivt y-värde'; else if (sin($x) < 0) { print 'Negativt y-värde'; 39 (41)

else { print 'Kan inte tolka y-värdet'; Syntax för loopar // Räkna från 0 till 4 for ($n = 0; $n < 5; $n++) { print 'Jag har räknat till '. $n; // Loop baserat på villkor istället för uppräkning while ($n <= 100) { $n++; Syntax för arrayer // Skapa en tom array $arrayvariabel = []; // Skapa en array med värden $arrayvariabel = [1, 2, 'femton', 'äpple']; // Lägga till ett värde i slutet av en array $arrayvariabel[] = $x; // Välja ut ett enskilt värde i en array -- räknar från 0 print $arrayvariabel[0]; // Loopa genom alla värden i en array foreach ($arrayvariabel as $index => $varde) { print $varde; Syntax för att skapa och anropa funktioner function minfunktion($x, $y) { $x = $x * sqrt($y); return $x; print minfunktion(2, 5); Övrigt // Skapa en radbrytning i utskriven text print "\r\n"; 40 (41)

Tips vid felsökning En oundviklig del av programmering är att hitta och åtgärda så kallade buggar kodfel som får program att fungera på oväntade sätt eller inte fungera alls. Att felsöka kod är en konst i sig, särskilt när program börjar bli komplexa, men det finns ändå några tips på vanliga misstag och metoder för att hitta och åtgärda buggar. Generella metoder för felsökning Att skriva ut kommentarer i koden, som beskriver vad olika avsnitt av koden gör, är ett bra sätt att hålla ordning både på kod och tankar. Det gör det lättare att felsöka själv, även långt i efterhand, och för andra att hjälpa till med felsökning. Titta i referensbladen för att se hur kommentarer skrivs i ditt programspråk. (Kommentarer är rader som finns med i koden, men ignoreras när programmet körs.) Det är ofta användbart att på ett antal ställen i programmet skriva ut/logga värden på variabler som beter sig konstigt, för att ringa in var de spårar ur. (I ordentliga programmeringsmiljöer finns möjlighet att stega genom program och följa värden på uttryck och variabler, men i exempelvis onlinemiljöer för programmering är det ovanligt.) Om man är tämligen säker på att felet uppstår i en viss del av koden, men inte kan hitta var, kan det vara användbart att skriva om hela det kodstycket från början. (Du kan då spara den gamla koden, men inleda varje rad med de symboler som används för kommentarer i ditt programspråk.) Om programmet inte kan köras Vissa programspråk kräver att kommandon avslutas med ett semikolon. Har du missat att avsluta en rad korrekt? I många programspråk används måsvingar, { och, för att börja och avsluta block för loopar eller villkor. Har du missat att avsluta något sådant block? I många programspråk används dubbla likhetstecken för villkor (x == 3), medan enkla likhetstecken (x = 3) gör antingen att programmet inte kan köras eller beter sig konstigt. Har du missat att använda dubbla likhetstecken i en villkorssats? Om programmet ger oväntade resultat Om enkla likhetstecken används i villkor, medan programspråket förväntar sig dubbla, leder det i många språk till att variabeln får ett nytt värde och villkoret utvärderas till sant. Om villkorssatser beter sig konstigt, eller om variabler får oväntade värden, är det alltså något värt att dubbelkolla. I många programspråk börjar arrayer eller listor med värden att räkna från 0, medan andra räknar man från 1. Finns det en miss i hur värden i listor räknas? 41 (41)