Ur kursplan i matematik
…”Vidare ska eleverna genom undervisningen ges möjligheter att utveckla kunskaper i att använda 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).
Algoritm är en ny term i det centrala innehållet för årskurs 4–6 och 7–9. I det centrala innehållet i årskurs 7–9 står det:
- Hur mönster i talföljder och geometriska mönster kan konstrueras, beskrivas och uttryckas generellt.
- Hur algoritmer kan skapas och användas vid programmering. Programmering i olika programmeringsmiljöer.
- Hur algoritmer kan skapas, testas och förbättras vid programmering för matematisk problemlösning. (Skolverket, 2018)
Hitta primtal
Uppgiften är tagen från Gleerups matematikbok. (Gert Mårtensson, 2018, s. kod a616)
Emilie har fått som uppgift från sin lärare att undersöka talet 179 424 691, för att se om det är ett primtal. Problemet är att talet är för stort för att hon ska orka göra ett faktorträd. Emilie brukar använda sin dator för att lösa problem, och hon skriver följande kod:
var talet = 179424691;
var primtal = true;
var test = 2;
while (test < talet)
{
if
(talet % test == 0) { primtal = false; }
test += 1;
}
alert(primtal)
Hitta primtal b) uppgift
b) I Emilies kod finns det en bugg. Om man provar att ange talet 1 så svarar datorn att talet är ett primtal, vilket är fel. Hur kan man rätta buggen?
Det rätta koden är
var talet = prompt("Ge mig ett tal!");
var primtal = "Det är ett primtal";
var test = 2;
while (test < talet)
{
if (talet % test == 0) { primtal = "Det är inte ett primtal"; }
test += 1;
}
if (talet == 1)
primtal = "Det är inte ett primtal";
alert(primtal);
upgift c
c) Emilies lärare provar jättestora tal, men då tar det väldigt lång tid. Hur kan man ändra koden så att det går fortare? Kan du hitta lösningar på webben som du kan använda i din kod?
var talet = prompt("Ge mig ett tal!");
var primtal = true;
var
test = 2;
var max = sqrt(talet)
while (test < max)
{
if (talet % test == 0) { primtal = false; }
test += 1;
}
if (talet == 1)
primtal = false;
alert(primtal);
Slutsats
- Att lära sig programmera är effektivare sätt att komma fram till lösningen av ett valt problem
- Eleverna har lär sig på ett nytt sätt resonera och analysera matematiska begrepp.
- De lärde sig bäst genom att de testade fram olika lösningar / koder det betyder ”Learning by doing”.
- Eleverna lärde sig matematiska begrepp genom redskap dvs programmeringsmiljö som förstärker deras inlärning av abstrakta matematiska begrepp i detta fall ”ett primtal”.
- Fokus ligger på förståelse av begrepp
- Eleverna vill ha flera lektioner med programmering