Logga in
| 6 sidor teori |
| 15 Uppgifter - Nivå 1 - 3 |
| Varje lektion är menad motsvara 1-2 lektioner i klassrummet. |
Innan man börjar skriva program är det dock viktigt att komma in i rätt sätt att tänka. Datorer är ganska petiga när det gäller instruktioner, och små fel eller otydligheter kan få programmet att göra helt fel eller kanske inget alls. På den här sidan kommer du därför att få träna på att skriva algoritmer, alltså instruktioner för att lösa ett problem eller utföra en uppgift.
I den här lektionen går vi igenom följande begrepp
Inom matematik och programmering är en algoritm en serie instruktioner för att uppnå något. I skolan får man t.ex. lära sig en algoritm för addition genom uppställning, och senare pq-formeln som är en algoritm för att lösa andragradsekvationer. Algoritmer kan liknas vid recept, där tydliga steg måste utföras i en viss ordning för att det ska bli rätt. Ta t.ex. ett recept på havregrynsgröt.
Blanda 1 dl havregryn med 2 dl vatten och 1 krm salt i en kastrull.
Koka upp blandningen och låt sjuda tills gröten är tillräckligt tjock.
Recept behöver inte vara mer detaljerade än så, men en algoritm är ofta väldigt specifik. Receptet skulle kunna göras mer som en algoritm genom att dela upp stegen så här.
Ställ fram en kastrull.
Häll 2 dl vatten i kastrullen.
Häll 1 dl havregryn i kastrullen.
Häll 1 krm salt i kastrullen.
Blanda innehållet i kastrullen.
Ställ kastrullen på en spis.
Sätt spisens temperatur på medelhög värme.
Vänta tills blandningen kokar.
Sänk temperaturen till låg värme.
Rör om tills gröten når önskad konsistens.
Dividera omkretsen med 4.
Upphöj resultatet till 2.
Arean av en kvadrat beräknas genom att multiplicera sidlängden med sig själv, så först måste vi bestämma dess sidlängd. Eftersom vi känner till kvadratens omkrets kan vi dividera den med 4 för att få sidlängden. Det blir vårt första steg.
Dividera omkretsen med 4.
För att beräkna arean upphöjer vi sedan resultatet till 2. Det blir andra steget.
Dividera omkretsen med 4.
Upphöj resultatet till 2.
Det är allt man behöver göra för att beräkna arean baserat på omkretsen, så vår algoritm är färdig.
När man skriver algoritmer måste man ibland ta en mer komplicerad väg genom instruktionerna än att bara gå igenom dem steg för steg. Det kan t.ex. vara så att vissa instruktioner bara ska göras ibland eller att vissa ska upprepas.
Om en algoritm innehåller något som ska göras flera gånger kan man markera upprepningen i instruktionerna istället för att skriva samma sak gång på gång. Ibland kanske man inte ens vet hur många gånger stegen ska upprepas när algoritmen skrivs. Om man t.ex. ska skriva en algoritm för att skala morötter kan man använda något i stil med följande.
Ta fram morötter.
Upprepa för varje morot: Skölj av moroten. Skär av blasten. Skala moroten.
Om en algoritm innehåller steg som bara ska göras under vissa omständigheter kan man införa ett villkor. Om man ska ut och cykla behöver man förmodligen inte pumpa däcken varje gång, så en algoritm för förberedelserna skulle kunna se ut på följande sätt.
Ta fram cykeln.
Om det är dåligt med luft i däcken: Pumpa däcken.
Sätt dig på cykeln och åk.
Följande algoritm tar ett tal och gör en beräkning baserat på det.
Multiplicera talet med 3.
Subtrahera 12 från resultatet.
Om resultatet är jämnt: Dividera resultatet med 2.
Upphöj resultatet till 2.
Följ instruktionerna steg för steg medan du utför de givna operationerna.
Algoritmen Beräknare
använder tre andra algoritmer, Jämnhetskollare
, Förminskare
och Förstorare
, för att göra beräkningar på tal. Vad får man om använder Beräknare
på talet 1?
Beräknare
Addera 2 till talet.
Upprepa 3 gånger:
Använd Jämnhetskollare på resultatet.
Subtrahera 2 från resultatet.
Jämnhetskollare
Om talet är jämnt:
Använd Förminskare på talet.
Annars:
Använd Förstorare på talet.
Förminskare
Dela med 2.
Addera 1.
Förstorare
Multiplicera med 3.
Subtrahera 1.
Vi ska använda algoritmen Beräknare på talet 1, så vi börjar med att titta på den algoritmen.
Addera 2 till talet. Upprepa 3 gånger: Använd algoritm Jämnhetskollare på resultatet. Subtrahera 2 från resultatet.
Första steget säger att vi ska addera 2 till vårt tal. Då får vi 1 + 2 = 3. Sedan ska vi använda algoritm Jämnhetskollare på resultatet tre gånger.
Om talet är jämnt: Använd algoritm Förminskare på talet. Annars: Använd algoritm Förstorare på talet.
Eftersom 3 inte är ett jämnt tal kommer vi inte att utföra instruktionen på rad 2 utan vi går vidare till rad 4. Den säger att vi ska använda algoritm Förstorare på resultatet, så vi gör det.
Multiplicera med 3. Subtrahera 1.
Vi multiplicerar alltså först med 3, vilket ger 3 * 3 = 9, och subtraherar sedan 1 från resultatet, vilket ger 9 - 1 = 8. Vi går sedan tillbaka till algoritm Jämnhetskollare för att göra den andra upprepningen. Nu använder vi Jämnhetskollare på ett jämnt tal, så det är instruktion 2 som kommer att utföras. Den säger att vi ska använda algoritm Förminskare.
Dela med 2. Addera 1.
Vi delar först med 2 och får 82 = 4 för att sedan addera 1, vilket ger 4 + 1 = 5. I sista upprepningen av Jämnhetskollare har vi ett udda tal igen, så det är instruktionen på rad 4 vi hamnar på igen. Då ska vi använda algoritm Förstorare på resultatet 5.
Multiplicera med 3. Subtrahera 1.
Multiplikationen med 3 ger 3 * 5 = 15 och subtraktionen med 1 ger 15 - 1 = 14. Nu är vi färdiga med upprepningen, men vi är inte färdiga med algoritm Beräknare. Det finns en sista instruktion som säger att vi ska subtrahera 2 från resultatet, vilket ger 14 - 2 = 12. Om man använder algoritmen Beräknare på talet 1 får man alltså till slut ut resultatet 12.
Upprepa för varje tecken:
Översätt tecknet till motsvarande tal.
Lägg ihop talen.
Talet XII blir alltså 10+1+1=12. Säg nu att matematikern Matte Maticus kommer till kejsaren och föreslår att talsystemet byts ut till att följa den här algoritmen istället.
Upprepa för varje tecken:
Skriv ner motsvarande tal.
Upprepa för varje tal:
Om talet är mindre än det efterföljande:
Sätt ett minustecken framför talet.
Lägg ihop talen.
Ge ett exempel på ett romerskt tal som algoritmerna tolkar olika.
Vilka fördelar har Maticus talsystem jämfört med det gamla?
Båda algoritmer går ut på att byta ut tecken mot tal och lägga ihop dem. Skillnaden är att den andra algoritmen använder ett villkor om något tecken är värt mindre än det som står efteråt.
Upprepa för varje tal: Om talet är mindre än det efterföljande: Sätt ett minustecken framför talet.
Några minustecken används inte i den första algoritmen, så detta villkor kommer förmodligen göra att algoritmerna ger olika resultat. Vi ser hur algoritmen tolkar talet IV. I är värt 1 och V är värt 5. Eftersom 1 är mindre än 5 säger villkoret att ettan ska räknas som -1, inte 1. Då betyder IV alltså -1+5 = 4, medan den första algoritmen ger 1+5=6 för samma teckenkombination. Algortimerna kommer ge olika resultat för alla romerska tal där två siffror anges i växande ordning, t.ex. IV.
Vi såg att talet 4 kan skrivas som IV i Matte Maticus talsystem. Vill man skriva 4 i det gamla talsystemet kan man bara använda addition, så det måste bli fyra ettor.
IIII = 4
Det blir längre att skriva än bara IV, och dessutom svårare att läsa. Samma sak kommer uppstå för alla tal som är ett mindre än ett tal delbart med 5. Tabellen nedan jämför systemen för några tal.
Tal | Algoritm 1 | Algoritm 2 |
---|---|---|
4 | IIII | IV |
29 | XXVIIII | XXIX |
99 | LXXXXVIIII | IC |
Förutom att vissa tal kan skrivas mer kompakt i Maticus talsystem har det också fördelen att tal skrivna på det gamla sättet ändå tolkas rätt. När ingen siffra är mindre värd än den efterföljande, som t.ex. VIIII blir inget tal negativt enligt nya algoritmen, och då säger de två algoritmerna samma sak. Sådana system, som lägger på ny funktionalitet men ändå fungerar ihop med ett äldre systemet, kallas ibland bakåtkompatibla. Faktum är att Matte Maticus system är ganska likt hur de romerska siffrorna faktiskt användes. Däremot fick man inte subtrahera hur som helst. 99 hade t.ex. skrivits som XCIX, för 90+9, inte IC som ovan.