9789144143293

Page 1

PROGRAMMERING I SKOLMATEMATIKEN – möjligheter och utmaningar Redaktörer

Kajsa Bråting Cecilia Kilhamn Lennart Rolandsson


Kopieringsförbud Detta verk är skyddat av upphovsrättslagen. Kopiering, utöver lärares och studenters begränsade rätt att kopiera för undervisningsändamål enligt Bonus Copyright Access kopieringsavtal, är förbjuden. För information om avtalet hänvisas till utbildningsanordnarens huvudman eller Bonus Copyright Access. Vid utgivning av detta verk som e-bok, är e-boken kopieringsskyddad. Den som bryter mot lagen om upphovsrätt kan åtalas av allmän åklagare och dömas till böter eller fängelse i upp till två år samt bli skyldig att erlägga ersättning till upphovsman eller rättsinnehavare. Studentlitteratur har både digital och traditionell bokutgivning. Studentlitteraturs trycksaker är miljöanpassade, både när det gäller papper och tryckprocess.

Art.nr 43689 ISBN 978-91-44-14329-3 Upplaga 1:1 © Författarna och Studentlitteratur 2021 studentlitteratur.se Studentlitteratur AB, Lund Formgivning inlaga: Henrik Hast Ombrytning inlaga: Helena Jansson Formgivning omslag: Francisco Ortega Omslagsbild: Shutterstock Printed by Graphy Cems, Spain 2021


Innehåll

Författarpresentationer 11

1. Inledning 17 Kajsa Bråting, Cecilia Kilhamn & Lennart Rolandsson Programmering i skolan 18 Programmering i läroplanen 19 Oreda i begreppen 21 Bokens upplägg 22 Referenser 24

Del I Bakgrund och teori 2. Ett historiskt perspektiv på programmering i skolan 27 Lennart Rolandsson Att tänka med symboler 28 Andra förutsättningar med digital teknik 29 Programmering för några eller för alla 31 Förutsättningar och föreställningar 32 Debatt mellan en lärare och en docent 32 Avslutning 35 Referenser 36


3. Programmeringens väg in i skolan – en jämförelse mellan Danmark och Sverige 39 Ola Helenius & Morten Misfeldt Programmering som matematisk teknik och eget fält 40 Programmering ur ett läroplansperspektiv 41 Programmering i dansk läroplan – i ämnen och som ämne 42 Programmering i svenska kursplaner och ämnesplaner för matematik 43 Hur skapas programmering i en skolmatematisk kontext? 45 Den externa didaktiska transpositionen 47 Den interna didaktiska transpositionen – ett exempel från den svenska kursplanen 50 Betydelsen av programmering för matematikundervisningens didaktiska transpositioner 52 Avslutning 53 Referenser 55

4. Syntax och semantik i programmering och matematik 57 Kajsa Bråting & Cecilia Kilhamn Vad är syntax och semantik? 59 En multiplikationsmaskin 60 Eratosthenes såll 65 Avslutning 68 Referenser 69


Del II Programmering i matematiken ur ett elevperspektiv 5. Matematik, digitalisering och programmering i förskolan 73 Andreas Ebbelind, Susanne Kjällander & Hanna Palmér Programmering i transformationscykler och steg 75 Två exempel på programmering och datalogiskt tänkande 76 Exempel 1 – blockprogrammering i det vidgade digitala gränssnittet 76 Exempel 2 – representationskompetens med musiknoter 81 Avslutning 85 Referenser 86

6. Genus och lärande i relation till programmering i matematik – ett elevperspektiv 89 Eva Norén & Kicki Skog Genus och programmering 91 Observationer och intervjuer 92 Observerade aktiviteter 93 Elevernas upplevelser 95 Programmeringsintresse 95 Programmering och lärande 98 Avslutning 102 Referenser 103

7. Programmering som ett matematiskt instrument 105 Andreas Borg Programmeringsmiljön som ett digitalt matematiskt verktyg 106 Programmeringsmiljön som ett matematiskt instrument 107 Instrumentell genes då programmering används vid matematisk problemlösning 109 Programmering som ett matematiskt instrument 110


Programmeringens roll och matematiska normer 114 Matematik och kod – två olika uttryckssätt 116 Diskussion 119 Avslutning 120 Referenser 121

8. Programmering för en problembaserad undervisning i gymnasieskolan 123 Johanna Pejlare & Sverker Lundin Introduktion till Mathematica 125 Problem 1 – sannolikhetsteori 129 Problem 2 – atomfysik 133 Problem 3 – diskursanalys 137 Avslutning 140 Referenser 142

Del III Programmering i matematiken ur ett lärarperspektiv 9. Olika program­merings­verktyg och lärares fortbildning – hinder och möjligheter 145 Niklas Humble, Peter Mozelius & Lisa Sällvin Bakgrund och syfte 146 Programmeringsverktyg 147 Textuell programmering 147 Blockprogrammering 148 Analog programmering 149 Möjligheter och hinder i skolan 150 Att använda programmering i matematik 151 Att arbeta med olika programmeringsverktyg 152 Diskussion om programmering i matematik 154 Avslutning 155 Referenser 156


10. Inre och yttre utmaningar med programmering i undervisningen 159 Peter Vinnervik Viktigt att lyssna på lärare 160 Erfarna lärare 161 Utbildningsreformer 161 Vad vet vi om reformarbete? 161 Reformer i svensk skolmatematik 161 En modell för att analysera samtalen 162 Inre utmaningar för undervisningen 163 Kunskaper 163 Självförtroende 164 Attityder 164 Flexibilitet 165 Ägandeskap 166 Yttre utmaningar för undervisningen 167 Resurser 167 Tid 169 Genomförbarhet 170 Bedömning 171 Traditioner 171 Stöd 172 Sammanfattning 173 Avslutning 174 Referenser 175

11. Utmaningar och möjligheter 177 Cecilia Kilhamn & Lennart Rolandsson Lärarnas röster 178 Analytiskt ramverk 179 Praxis 1 – val av uppgifter och innehåll 180 Problemlösning som innehåll 181 Praxis 2 – val av programmeringsspråk och programmeringsmiljö 182 Analog programmering 183


Visuell programmering 183 Textprogrammering 184 Andra digitala verktyg 185 Logos – lärares syn på hur programmering relaterar till matematik 186 Programmering som en del av den digitala kompetensen 186 Programmering som en delmängd av matematik 187 Programmering som ett verktyg för att lära sig matematik 188 Praxis och logos i förening 189 Utmaningar och möjligheter 191 Ökad programmeringskompetens bland lärare 191 Transposition av matematisk kunskap 193 Avslutning 193 Referenser 194


Kajsa Bråting, Cecilia Kilhamn & Lennart Rolandsson

1.

Inledning

Från och med höstterminen 2018 blev programmering en obligatorisk del av ämnena matematik och teknik i den svenska skolan. Detta har medfört ett stort behov av lärarfortbildning, nya och reviderade läromedel, samt en helt ny undervisningspraktik. Den här boken fokuserar på införandet av programmering i matematikämnet. Vi vänder oss till lärarstudenter, lärarutbildare och aktiva lärare som vill utveckla en forskningsbaserad undervisning. Syftet med boken är att påvisa vilka möjligheter och utmaningar som identifierats i forskningen om programmering i relation till skolmatematik. Exempel på aspekter som behandlas i boken är programmeringens roll i matematiken, hur elever kan lära sig matematik genom programmering, lärares syn på införandet av programmering i matematikundervisningen, samt hur själva matematiken förändras när elever och lärare möter den genom programmering. Vi som är bokens redaktörer har valt att arbeta med dessa frågor utifrån ett ramverk som utgår från att kunskap formas och omformas av aktörer på olika nivåer i utbildningssystemet, något som Chevallard (2006) kallar kunskapens transposition. Implementering av ett nytt kunskapsinnehåll har initierats utifrån, vilket innebär att samhällelig och akademisk kunskap förs in i skolan genom läroplanen. Programmeringskunskaper från datavetenskap som akademiskt ämne och olika yrkesprofessioner omvandlas till undervisningsbar kunskap genom 17


Akademisk kunskap Här agerar de samhälleliga institutioner som producerar och använder kunskapen.

Avsedd kunskap

Undervisad kunskap

Här agerar exempelvis författare av läroplaner och läromedel.

Här agerar läraren i klassrummet.

Tillgodogjord kunskap, lärande Här agerar eleverna i klassrummet.

en lång rad beslut, exempelvis om var i läroplanen programmeringen ska införas, vilken relation programmeringen ska ha till andra ämnen, vilka programmeringsbegrepp som ska tas upp, i vilka årskurser och med vilken progression, samt syftet med det nya innehållet. I nästa steg fattar lärarna beslut om hur uppgifter ska utformas, vilka redskap som ska användas och vilket lärande de förväntar sig. Slutligen finns eleverna som ska tillägna sig kunskapen, utifrån sina förkunskaper, intressen och förväntningar. Ramverket (Bosch & Gascón, 2006; Chevallard, 2006) illustrerar hur kunskap transponeras av de aktörer och ramar som råder inom varje instans (se figur 1.1). Bokens syfte är att rikta ljuset mot det som händer just nu, hur denna transposition av kunskap ser ut, vilka tolkningar som görs, vilka beslut som fattas på respektive nivå och vad konsekvenserna av dessa blir.

Programmering i skolan Det är inte första gången som datorer dyker upp i svenska skolans läroplaner. Redan i 1969 års läroplan återfinns orientering om datamaskiner som ett av matematikämnets huvudmoment för högstadiet (Skolöverstyrelsen, 1969). Då var det själva datorn i sig, snarare än programmeringen, som stod i fokus. I 1980 års läroplansreform infördes i stället datalära som ett nytt innehållsområde i ämnena matematik och samhällskunskap i grundskolan och gymnasieskolan, medan datakunskap utgjorde ett eget ämne i gymnasieskolan (Skolöverstyrelsen, 1983; 1984). I båda ämnena önskade man från skolmyndigheternas sida tona ner de 18 � 1. Inledning

© F Ö R FA T T A R N A O C H S T U D E N T L I T T E R A T U R

Figur 1.1 Kunskapens väg genom olika instanser i utbildningssystemet (Bosch & Gascón, 2006; Chevallard, 2006).


© F Ö R FA T T A R N A O C H S T U D E N T L I T T E R A T U R

tekniska aspekterna av programmering, och man satte därför ämnet i en bredare kontext (Rolandsson & Skogh, 2014). I samband med 1994 års läroplan försvann datalära från grundskolans läroplan, och i gymnasieskolans läroplan byttes ämnet datakunskap ut mot programmering, men endast för en minoritet av eleverna (Utbildningsdepartementet, 1994a; 1994b). För en mer detaljerad beskrivning av den historiska utvecklingen av programmering som innehåll i skolan, se kapitel 2. Det var inte förrän 2018, i samband med en revidering av 2011 års läroplan, som datorer och programmering återinfördes som obligatoriska inslag i läroplanen – den här gången på grundskolans alla nivåer – som en aspekt av vad som kallas digital kompetens (Skolverket, 2018). Det finns ännu ingen allmänt vedertagen definition av digital kompetens, men Skolverket lyfter fram följande fyra aspekter för att beskriva digital kompetens: ŕ ŕ ŕ ŕ

att förstå digitaliseringens påverkan på samhället, att kunna lösa problem och omsätta idéer i handling, att kunna använda och förstå digitala verktyg och medier, att ha ett kritiskt och ansvarsfullt förhållningssätt.

Det är tydligt att digital kompetens handlar om mycket mer än programmering. Eftersom den här boken handlar om programmering i ämnet matematik, nöjer vi oss emellertid med att beskriva vad som står om programmering i matematikämnets kursplan.

Programmering i läroplanen I syftesbeskrivningen till matematikämnet i grundskolans reviderade läroplan (Skolverket, 2018) framhålls digitala verktyg och programmering i samband med användningen av matematiska metoder: Genom undervisningen ska eleverna ges förutsättningar att utveckla förtrogenhet med grundläggande matematiska begrepp och metoder och deras användbarhet. Eleverna ska genom undervisningen ges möjligheter att utveckla kunskaper i att använda

1. Inledning � 19


Programmering finns även inskrivet som en del av det centrala innehållet i algebra i alla grundskolans stadier. För årskurs 1–3 är fokus på hur stegvisa instruktioner kan konstrueras, beskrivas och följas som grund för programmering, samt symbolers användning vid stegvisa instruktioner. För årskurserna 4–6 och 7–9 är fokus på hur algoritmer kan skapas och användas i visuella programmeringsmiljöer (årskurs 4–6) respektive textuella programmeringsmiljöer (årskurs 7–9). För årskurs 7–9 finns programmering även omnämnt i det centrala innehållsområdet problemlösning. I kursplanerna för matematik i gymnasieskolan är programmering enbart inkluderat i innehållsområdet problemlösning. Det varierar hur olika länder har implementerat programmering i sina läroplaner. I England har programmering blivit en del av ett helt nytt ämne som går under benämningen computing. I Danmark finns förslag om att skapa det nya ämnet teknologiförståelse (se kapitel 3). I likhet med Sverige har Finland inkluderat programmering i redan befintliga ämnen, företrädesvis matematik. Det som gör Sverige unikt i sammanhanget är att man i grundskolan infört programmering i området algebra. Det är intressant att jämföra hur Sverige implementerat programmering i skolans läroplaner genom åren. I 1980 års kursplaner för matematik i grundskolan utgjorde programmering en del av datalära, som var ett eget innehållsområde i kursplanen för matematik. I 2018 års kursplan för matematik i grundskolan inkluderades i stället programmering i redan befintliga innehållsområden i matematik. I Sverige har man konsekvent valt att inte implementera ett nytt obligatoriskt ämne (jfr computing i England) som innehåller programmering, utan har i stället fört in programmering i redan existerande ämnen. Det kan förstås ha både för- och nackdelar. En fördel är att man tillför det redan existerande ämnet matematik ett nytt inslag, vilket medför att eleverna får möjlighet att lära sig matematik utifrån andra perspektiv och med andra verktyg. En nackdel kan vara att programmeringen blir 20 � 1. Inledning

© F Ö R FA T T A R N A O C H S T U D E N T L I T T E R A T U R

digitala verktyg och programmering för att kunna undersöka problemställningar och matematiska begrepp, göra beräkningar och för att presentera och tolka data (Skolverket, 2018, s. 54).


© F Ö R FA T T A R N A O C H S T U D E N T L I T T E R A T U R

alltför knuten till matematiken, vilket gör att själva programmeringskunskapen riskerar att hamna i skymundan. När programmeringen inkluderas i det specifika innehållsområdet algebra bör den dessutom leda till att eleverna lär sig algebra. Att programmering kopplats till algebra är något överraskande med tanke på att innebörden av centrala algebraiska begrepp, som till exempel variabler och likheter, skiljer sig från innebörden av dessa begrepp i programmering (se kapitel 4). Ett annat begrepp som fått en delvis ny innebörd i matematik­ ämnet är algoritm. Fram till 1994 fanns algoritmer med som en bärande del av aritmetiken genom att de klassiska algoritmerna för addition, subtraktion, multiplikation och division, med såväl heltal som decimal­ tal, betonades (Skolöverstyrelsen, 1969; 1980). I 1994 års revidering togs ordet algoritmer bort och ersattes av att räkna ”i huvudet, med hjälp av skriftliga räknemetoder och med miniräknare” (Utbildnings­ departementet, 1994a, s. 34–35). I den senaste revideringen nämns inte heller algoritmer i anslutning till aritmetik, men de har i stället dykt upp som en del av programmeringen i innehållsområdet algebra (Skolverket, 2018).

Oreda i begreppen Eftersom programmering är ett relativt nytt innehåll i ämnet matematik, behövs ett gemensamt språk som kan användas när vi pratar om det. Det är tydligt – även i den här boken – att forskare använder begrepp på delvis olika sätt, men förhoppningsvis kan boken ändå bidra till att vi kommer lite närmare ett gemensamt språkbruk. I skolmatematiken finns ett vedertaget språkbruk, vilket är ett resultat av många års arbete med läroböcker och läroplaner. Ämnesinne­ hållet programmering behöver således tid att mogna och hitta sina former. Vi som undervisar i matematik och forskar om matematik­ undervisning behöver ett gemensamt språk när vi pratar om programmering. I arbetet med den här boken har vi upplevt att olika författare ibland använder vissa begrepp på olika sätt. I bokens kapitel förekommer en lång rad begrepp relaterade till programmering i skolan. Vissa finns i läroplanen, såsom digitala verktyg, algoritmer och program1. Inledning � 21


Bokens upplägg Den här boken är en antologi där flera författare beskriver sina forskningsresultat och det aktuella forskningsläget inom området programmering och matematik i skolan. Den forskning som presenteras spänner över utbildningens alla nivåer, från förskolan till gymnasieskolan. Boken består av elva kapitel som förutom detta inledande kapitel är indelade i tre avsnitt: I. Bakgrund och teori (kapitel 2–4) II. Programmering i praktiken ur ett elevperspektiv (kapitel 5–8) III. Programmering i praktiken ur ett lärarperspektiv (kapitel 9–11) Det första avsnittet inleds med ett kapitel där Lennart Rolandsson ger en historisk tillbakablick över hur datorer och programmering hittat sin väg in i den svenska skolans klassrum. I kapitlet beskrivs hur datorer erbjuder ett annat sätt att tänka och arbeta i klassrummet. 22 � 1. Inledning

© F Ö R FA T T A R N A O C H S T U D E N T L I T T E R A T U R

meringsmiljöer, andra är hämtade från forskningslitteraturen, som exempel­vis datalogiskt tänkande (jfr eng. computational thinking). Det finns även aktiviteter som bygger på en datalogisk praktik, såsom kodning, felsökning, tinkering och remixing, samt ord som beskriver de yttre ramarna för programmering, såsom programmeringsspråk, hårdvara, mjukvara, fönster och analog respektive digital programmering. I boken görs vissa försök att förklara och definiera begrepp, som exempelvis skillnaden mellan programmeringsspråk och programmeringsmiljö (se kapitel 11). Andra begrepp är emellertid svårare att definiera. Det är till exempel inte alltid tydligt vilken åtskillnad som görs mellan program, algoritm och kod, eller om en visuell programmeringsmiljö alltid måste vara liktydig med blockprogrammering. En annan sak som problematiseras i boken är lärares osäkerhet kring relationen mellan programmering och digitala verktyg – ska programmering betraktas som ett digitalt verktyg, eller är det något som används i digitala verktyg? Vår förhoppning är att boken kan bidra till en diskussion som i slutändan leder oss (forskare, lärare, lärarutbildare, studenter och elever) lite närmare ett gemensamt språkbruk.


Kajsa Bråting & Cecilia Kilhamn

Syntax och semantik i programmering och matematik

4.

Det här kapitlet jämför programmering och matematik ur ett språkligt och begreppsligt perspektiv. Genom att betrakta ett programmeringsspråk som en ny form av matematisk representation menar författarna att elevers erfarenhet av programmering kommer att påverka deras förståelse av matematiska begrepp. Eftersom programmering i den svenska matematikkursplanen för grundskolan har skrivits in som en del av det centrala innehållet i algebra, undersöker författarna specifikt begreppen variabel och funktion, samt användningen av algebraiska symboler, framför allt likhetstecknet. Två undervisningsexempel analyseras i detalj, ett program i Scratch och ett program i JavaScript. Författarna argumente­rar för att lärare behöver känna till när symboler har olika betydelse i programmering respektive matematik, och hur betydelsen av matematiska begrepp, såsom variabel och funktion, får delvis andra innebörder i programmering. Vi kommer här att fokusera på syntax och semantik inom områdena programmering och matematik. I programmering avser syntaxen den uppsättning regler som definierar hur ett programmeringsspråk sätts samman, medan semantiken syftar på betydelsen av programmeringsspråkets symboler, termer och instruktioner. Flera symboler och termer i programmering används även i matematik, exempelvis likhetstecknet, variabler och funktioner. Därmed finns en överlappning 57


58 � i. Bakgrund och teori

© F Ö R FA T T A R N A O C H S T U D E N T L I T T E R A T U R

när det gäller vilka komponenter som ingår. Samtidigt kan både deras betydelse (semantiken), och hur de används och relateras till varandra (syntaxen) skilja sig åt såväl mellan programmeringsspråk som mellan programmeringsspråk och matematik. När programmering gör sitt inträde i skolmatematiken kan det därför jämföras med ett nytt språk som lärarna ska undervisa i. Inom matematikdidaktisk litteratur talar man ofta om olika representationssystem (Duval, 2006), där just översättningar mellan olika representationer är det som ger oss tillträde till den abstrakta matematiken. För att exempelvis förstå en matematisk funktion kan vi rita en graf eller göra en tabell. För att förstå på vilket sätt en beräkning är lösningen på ett problem behöver vi använda naturligt språk som förklarar vad det är som beräknats. Varje representationsform har sin egen syntax och semantik, och för att kunna översätta mellan två representationsformer behöver eleven vara trygg i båda och kunna se var de överlappar och var de skiljer sig åt. Enligt Duval (2006) kan ett representations­system antingen vara multi-funktionellt eller mono-funktionellt. I ett mono-funktionellt språk är de flesta processer algoritmiska och skriftliga, vilket innebär att de bara kan förstås på ett sätt. Ett datorspråk är mono-funktionellt, medan ett naturligt språk, såsom svenska, är multi-funktionellt och därmed beroende av en kontext för att förstås. Ett påstående på svenska kan exempelvis ha helt olika betydelser beroende på sammanhang, exempelvis vem som är avsändare och mottagare, hur påståendet framförs, vad som betonas och en mängd andra saker. En programkod däremot har alltid samma betydelse och exekveras alltid på samma sätt, oavsett sammanhang. För att kommuni­cera med datorer krävs att man följer språkets syntax, ingenting är underförstått eller förgivettaget. Det gäller även matematiken, vars symbolspråk är mono-funktionellt men där användning av naturligt språk alltid utgör en del av den matematiska kommunikationen. Ur ett undervisningsperspektiv är det därför intressant att identifiera var det finns likheter respektive skillnader mellan programmeringsspråk och matematik.


© F Ö R FA T T A R N A O C H S T U D E N T L I T T E R A T U R

Vad är syntax och semantik? Inom lingvistiken, det vill säga vetskapen om mänskliga språk, brukar man dela in språk i tre delar: syntax, semantik och pragmatik. Indelningen utvecklades av den amerikanske filosofen Charles Morris (1901– 1979) som var verksam under första halvan av 1900-talet (se Morris, 1938). Syntax handlar om språkets struktur, det vill säga en uppsättning regler som styr hur ord kan sättas samman i fraser, satser och meningar. Ord som sätts ihop slumpvis och bildar så kallad rappakalja saknar syntax. Termen syntax kopplas ofta till ett språks grammatik, men i sin mest abstrakta och generella form, menar Rapaport (2020), beskriver syntaxen inom en domän helt enkelt ett antal komponenter och deras egenskaper, samt hur dessa relateras till varandra. Om domänen är ett språk är syntaxen dess grammatik, men talar vi om logik utgörs syntaxen av regler för bevisföring. Programmering sker inom en domän som ofta kallas för programmeringsspråk (ibland används även programmeringsmiljö om språket inte går att koppla bort från miljön, se kapitel 2). Även ett programmeringsspråk består av en uppsättning komponenter som har vissa egenskaper och som kan relateras till varandra på ett förutbestämt sätt. Semantik handlar i sin tur om språkets betydelse, i första hand betydelsen av vanliga språk såsom svenska, engelska eller japanska. Inom ett språk behandlar semantiken den mening vi fyller olika ord och sammansättningar av ord med, exempelvis i vilken utsträckning vi accepterar ett uttalande som sant. Rapaport (2020) menar att semantikens uppgift är att skapa förståelse för det som uttrycks i den syntaktiska domänen. Vi diskuterar härnäst två programmeringsaktiviteter från modulen Matematikundervisning med digitala verktyg II som återfinns i Lärportalen på Skolverkets webbplats.1 Modulen innehåller bland annat aktiviteter som kan användas under lektionerna, och tanken är att inspirera och stödja lärare när de introducerar programmering i matematikundervisningen. Det första exemplet är avsett för mellanstadiet, medan det andra riktar sig till högstadiet. I vår diskussion av exemplen 1 För mer information, se Skolverkets webbplats (https://larportalen.skolverket.se/#/ modul/0-digitalisering/Gymnasieskola/448_matematikundervisningmeddigitala verktygII_GY/del_01/). 4. Syntax och semantik i programmering … � 59


fokuserar vi på syntaktiska och semantiska aspekter i både matematik och programmering. Framför allt kommer vi att uppmärksamma skillnader i syntax och semantik som är centrala ur ett lärandeperspektiv.2

I den här aktiviteten ska eleverna skapa en multiplikationsmaskin. Tanken är att läraren tillsammans med eleverna först diskuterar på vilka sätt man kan programmera en maskin som beräknar produkten av två input-värden. Eleverna ska därefter följa och utveckla sina idéer i syfte att skapa en algoritm för multiplikation i det visuella programmeringsspråket Scratch. Vi antar här att upprepad addition är ett vanligt förekommande sätt att introducera multiplikation i skolan. Skolverkets material tillhandahåller inte något förslag på kod, varför vi konstruerat en kod i Scratch som multiplicerar två input-värden med hjälp av upprepad addition (se figur 4.1). För enkelhetens skull har vi begränsat vår maskin till input-värden som är större än eller lika med 0. För att utföra uppgiften behövs följande fyra variabler: input-­ variablerna faktor1 och faktor2, loop-variabeln räkna som räknar antalet upprepningar, samt variabeln summa som lagrar den summa som ökar allt eftersom additionerna upprepas. Dessa fyra har skapats separat från koden. I Scratch representeras variabler med mörkorange färg. Genom att använda de blå så kallade ”känna av”-blocken ”fråga och vänta” kopplat till svar skapar programmet utrymme för användaren att mata in värden i faktor1 och faktor2. Dessa variabler motsvarar de två faktorerna, där faktor1 är multiplikanden och faktor2 är multi­plikatorn. Variabeln svar håller det värde som användaren matat in och som först tilldelas faktor1 och vid nästa inmatning tilldelas faktor2. Det är inte givet för användaren varför svar inte kallas för en variabel utan behövs som ett mellansteg mellan det värde användaren matar in och datorns tilldelning av detta värde till variabeln. Trots att Scratch inte framställer svar som en variabel (svar är blå och inte orange) så är den faktiskt

2 Fler exempel och en mera ingående analys av semantiska och syntaktiska skillnader mellan programmering och matematik genomförs i (Bråting & Kilhamn, 2021). 60 � i. Bakgrund och teori

© F Ö R FA T T A R N A O C H S T U D E N T L I T T E R A T U R

En multiplikationsmaskin


© F Ö R FA T T A R N A O C H S T U D E N T L I T T E R A T U R

Figur 4.1 En algoritm för multiplikation, skriven i Scratch.

det. Precis som andra variabler är svar en platshållare åt ett värde som kan ändras. Skillnaden är att endast blocket ”fråga och vänta” kan ändra dess värde. I Scratch är svar en inbyggd variabel som förenklar kodningen i de fall där man endast behöver mata in ett värde. I textbaserade programmeringsspråk finns inget behov av sådana variabler. I programmering är namngivning av en variabel (här t.ex. räkna) och tilldelning av ett värde till variabeln (här t.ex. sätts räkna till 0) två olika processer. En variabels namn är en del av kodens semantik, då namnet speglar dess innehåll och ger programmeraren en bättre förståelse av hur variabeln fyller en mening. I Scratch sker namngivningen i ett eget fönster och tilldelningen i koden. I textprogrammering däremot sker alltsammans i koden. Värdet lagras sedan i minnet och kan ändras allt eftersom koden körs. Detta skiljer sig från matematiken där variabeln står i stället för ett obekant eller godtyckligt värde, och där värdet – när det har bestämts – kan ersätta variabeln. I koden uppdateras svar av den föregående frågan. Blocken ”sätt faktor1 till svar” och ”sätt faktor2 till svar” motsvarar värdet som finns 4. Syntax och semantik i programmering … � 61


17 · 1 = 17 17 · 2 = 17 · 1 + 17 = 17 + 17 = 34 17 · 3 = 17 · 2 + 17 = 34 + 17 = 51 17 · 4 = 17 · 3 + 17 = 51 + 17 = 68 17 · 5 = 17 · 4 + 17 = 68 + 17 = 85 (I) 62 � i. Bakgrund och teori

© F Ö R FA T T A R N A O C H S T U D E N T L I T T E R A T U R

lagrat i svar vid olika tillfällen. Detta skiljer sig från den matematiska konventionen att aldrig låta en variabel ändra värde inom samma beräkning. Det skiljer sig också från förståelsen av termen svar i en skolmatematisk kontext, där ett svar brukar vara liktydigt med resultatet av en beräkning eller lösningen av ett problem. Programmet innehåller också en loop där variabeln räkna används för att hålla räkningen på antalet gånger additionen upprepas och variabeln summa håller reda på den delsumma som uppnås efter varje addition av faktor1. Noterbart är att alla dessa variabler har en namngivning som följer ett semantiskt ideal vid programmering. Inledningsvis tilldelas både räkna och summa värdet 0. Därefter ändras värdet på dessa variabler när programmet körs. För varje loop ökar räkna med 1 och summa med värdet lagrat i faktor1. Tidigare värden ersätts med nya värden vid respektive tilldelning. Även här ser vi en skillnad mot matematiken där en variabel inte kan ändra värde under en och samma beräkning. Vi återkommer till detta i samband med exempel 2 nedan. Programmet avslutas när variabeln räkna har räknats upp och nått samma värde som faktor2. Sista raden i koden gör så att hela uttrycket skrivs ut som en textrad på skärmen, där de två inmatade faktorerna multipliceras och resultatet visas efter likhetstecknet, till exempel 17 · 5 = 85. För att kunna skriva ut detta uttryck i alla situationer används faktor1 och faktor2 som matats in i början av programmet och variabeln summa som nu innehåller det slutliga resultatet av multiplikationen. Motsvarande procedur skulle med matematikens symbolspråk kunna representeras antingen aritmetiskt som en följd av operationer, eller algebraiskt med hjälp av variabler. En aritmetisk representation innehåller inte variabler utan specifika tal. Vi tittar närmare på exemplet 17 · 5. Vi behöver nu skriva varje deloperation på en separat rad, där resultatet av en rad används i den nästkommande.


© F Ö R FA T T A R N A O C H S T U D E N T L I T T E R A T U R

Här finns inga variabler alls. Programvariabeln räkna motsvaras av vilken rad som står i fokus i uträkningen, och programvariabeln summa motsvaras av delsummorna längst ut till höger på varje rad. Ur ett matematiskt perspektiv är det inte möjligt att använda en variabel (exempelvis s) i stället för att skriva ut delsummorna, eftersom vi då skulle erhålla 17 · 1 = s och 17 · 2 = s, vilket skulle leda till det falska påståendet 17 = 34. Vi kan ibland se att elever hamnar i denna fallgrop som ett resultat av att de använder miniräknare. Eleven slår in 17 + 17 = och ser 34 på displayen. Därefter slår eleven = igen och ser 51 på displayen. Ett problem som uppstått sedan miniräknarens införande i skolmatematiken är att detta sätt att hantera likhetstecknet smugit sig in i elevens matematiska notation med en felaktig syntax som följd, exempelvis kan eleven skriva 17 + 17 = 34 + 17 = 51. Aktiviteten som beskrivs i figur 4.1 kan hjälpa eleven att förstå den loop som ligger inbakad och underförstådd i miniräknarens likhetstecken, men den hjälper knappast eleven att utveckla sin kompetens att uttrycka sig matematiskt. Den upprepade additionen går också att representera algebraiskt. Anta att vi vill multiplicera två tal, a och b. Då gäller att: b a · b = a + a + a + ···+ a = ∑ a

b antal gånger

k=1

(II) Här motsvaras programvariabeln räkna av summationsindexet , medan variabeln summa inte har någon motsvarighet alls eftersom delsummorna inte specificeras. Men vi kan synliggöra även delsummorna med algebraisk notation. För att göra det lägger vi in parenteser i uttrycket ovan, vilka var och en representerar delsummorna. För enkelhetens skull fokuserar vi här på de fyra första värdena i uttrycket ovan. Vi får då följande rekursiva uttryck:

((((a) + a) ) + a)

4. Syntax och semantik i programmering … � 63

(III)


Kajsa Bråting (red.) är docent och excellent lärare i didaktik vid Uppsala universitet. Hon bedriver forskning i matematikdidaktik och har mångårig erfarenhet som lärarutbildare och läromedels­ författare. Cecilia Kilhamn (red.) är pedagogisk utvecklare och forskare på Nationellt centrum för matematikundervisning vid Göteborgs universitet. Hennes forskning handlar om grundskolans matematik­ undervisning ur olika perspektiv. Lennart Rolandsson (red.) är lärarutbildare och forskare i teknik­ didaktik vid Uppsala universitet. Hans forskning handlar om programmering i skolan. Han har många års erfarenhet som gymnasielärare i programmering.

PROGRAMMERING I SKOLMATEMATIKEN – möjligheter och utmaningar Med utgångspunkt i den senaste forskningen diskuterar bokens författare programmeringens inträde i skolmatematiken. Vilken roll har programmeringen i skolmatematiken? Kan elever lära sig matematik genom programmering? Vilka möjliga broar mellan matematik och programmering kan skapas? Vilka är utmaningarna? Diskussionen utgår från elevernas, lärarnas och lärarutbildarnas perspektiv. Innehållet i boken innefattar skolans alla nivåer, från förskola till gymnasiet. Programmering i skolmatematiken vänder sig till blivande och verksamma lärare, och till lärarutbildare, men även till personer med övergripande ansvar för skolans digitalisering på lokal, kommunal eller nationell nivå.

Art.nr 43689

studentlitteratur.se


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.