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.
Använd följande algoritm på talet 6.
Addera 2 till talet.
Upprepa följande instruktioner 5 gånger:
Subtrahera 1 från resultatet.
Dubblera resultatet.
Subtrahera 2 från resultatet.
Vi börjar med första steget som säger att vi ska addera 2 till vårt tal. 6 + 2 = 8 Nästa steg säger att vi ska upprepa de två indragna raderna fem gånger. Vi ska alltså först subtrahera 1 från vårt resultat, sedan multiplicera det med 2 och sedan upprepa detta fyra gånger till. Första varvet genom instruktionerna ger 8 - 1 = 7 och 2 * 7 = 14. Andra varvet ger sedan 14 - 1 = 13 och 2 * 13 = 26. Vi gör samma sak tre gånger till. Varv 3: 26 - 1 = 25 och 2 * 25 = 50 Varv 4: 50 - 1 = 49 och 2 * 49 = 98 Varv 5: 98 - 1 = 97 och 2 * 97 = 194 Nu när vi är färdiga med upprepningen går vi vidare på det sista steget. Då ska vi subtrahera 2 från vårt resultat. 194 - 2 = 192 Man får alltså resultatet 192 om man använder algoritmen på talet 6.
Vilmer anser att hans tandborstning har blivit lite ostrukturerad så han bestämmer sig för att skriva en algoritm som förtydligar hur man gör. Hjälp honom skriva en algoritm som beskriver hur man borstar tänderna.
Att borsta tänderna kan beskrivas på mer eller mindre detaljerad nivå. Att bara säga "borsta tänderna" är lite grovt och att gå in på varje drag med tandborsten är förmodligen för detaljerat, så vi väljer att lägga oss någonstans mittemellan. Först bör man ta fram det man behöver, alltså tandborste och tandkräm, vilket ger oss vårt första steg.
Ta fram tandborste och tandkräm.
Sedan förbereder man för borstande genom att skölja av tandborsten och klämma ut tandkräm på den. Vi delar upp detta i två steg.
Skölj av tandborsten. Kläm ut tandkräm på tandborsten.
När man sedan borstar tänderna gör man det för utsidan, insidan och tuggytorna på tänderna. Vi skriver detta som delsteg som görs två gånger: en gång för övre tandraden och en gång för undre tandraden.
Upprepa för både övre och undre tandraden: Borsta utsidan av tänderna. Borsta insidan av tänderna. Borsta tuggytorna på tänderna.
Sedan spottar man ut tandkrämen och sköljer av tandborsten igen.
Spotta ut tandkrämen. Skölj av tandborsten.
Till sist lägger man undan tandborsten och tandkrämen.
Lägg tillbaka tandborste och tandkräm.
Lägger vi ihop alla dessa steg har vi nu en färdig algoritm som beskriver hur man borstar tänderna.
Ta fram tandborste och tandkräm. Skölj av tandborsten. Kläm ut tandkräm på tandborsten. Upprepa för både övre och undre tandraden: Borsta utsidan av tänderna. Borsta insidan av tänderna. Borsta tuggytorna på tänderna. Spotta ut tandkrämen. Skölj av tandborsten. Lägg tillbaka tandborste och tandkräm.
Skriv en algoritm som beräknar variationsbredden av en datamängd.
Variationsbredden är differensen mellan största och minsta talet i datamängden. Första stegen i algoritmen blir därför att bestämma datamängdens största och minsta värde.
Hitta datamängdens största värde. Hitta datamängdens minsta värde.
När man hittat dessa är processen så gott som klar. Det som återstår är att beräkna skillnaden.
Hitta datamängdens största värde. Hitta datamängdens minsta värde. Subtrahera det minsta talet från det största.
En algoritm för att "översätta" ett ord till rövarspråket ser ut så här. Anta att det nya ordet skrivs under ordet som översätts.
Upprepa för varje bokstav i ordet:
Om bokstaven är en vokal:
Lägg till bokstaven i det nya ordet.
Om bokstaven är en konsonant:
Skriv bokstaven två gånger, med en lucka mellan dem.
Skriv bokstaven "O" i luckan mellan dubbletterna.
Enligt algoritmen ska vi undersöka en bokstav i taget, så vi börjar med P. Det är en konsonant så vi skriver bokstaven två gånger och sätter in bokstaven O mellan dem.
På samma sätt byts R mot ROR. I:et är en vokal och sätts in i ordet direkt.
Följer vi algoritmen för återstående bokstäver får vi till slut följande ord.
Vi kan alltså konstatera att PRIMTAL heter POPRORIMOMTOTALOL på rövarspråket.
Skriv en algoritm i minst tre steg för att beräkna lutningen av en linje.
En linjes lutning ges av dess riktningskoefficient: k = y_2 - y_1x_2 - x_1. Här står (x_1, y_1) och (x_2, y_2) för två punkter som ligger på linjen. Steg ett i algoritmen bör därför vara att hitta två sådana punkter.
Hitta koordinaterna för två punkter på linjen.
Därefter ska vi beräkna skillnaden mellan y-koordinaterna och dividera med skillnaden mellan x-koordinaterna.
Hitta koordinaterna för två punkter på linjen. Beräkna skillnaden mellan punkternas y-värden. Beräkna skillnaden mellan punkternas x-värden. Dividera skillnaden i y-led med skillnaden i x-led.
Här måste man tänka på att de två differenserna inte kan beräknas hur som helst - punkterna måste tas i samma ordning! Vi justerar algoritmen för att förtydliga det.
Hitta koordinaterna för två punkter A och B på linjen. Subtrahera A:s y-värde från B:s y-värde. Subtrahera A:s x-värde från B:s x-värde. Dividera skillnaden i y-led med skillnaden i x-led.
Nu har vi en algoritm för att beräkna en linjens lutning.
Skriv en algoritm för att lösa uppgifter av typen "Beräkna absolutbeloppet ∣x∣", där x kan vara vilket reellt tal som helst.
När man tar absolutbeloppet av ett tal "tvingar" man det att vara positivt. Är talet redan positivt händer ingenting, utan man kan ta bort absolutbeloppstecknen direkt. Om talet är negativt behöver man även ta bort minustecknet: |5| & = 5 |-5| & = 5. Algoritmen bör alltså först undersöka om talet är negativt eller inte, samt uppmana till att ta bort minustecknet om talet är negativt.
Om talet x är negativt: Ta bort minustecknet.
Till sist ska absolutbeloppstecknen tas bort.
Om talet x är negativt: Ta bort minustecknet. Ta bort absolutbeloppstecknen.