Göm menyn

Hur man programmerar

Programutvecklingsprocessen

När man skriver ett program så är det viktigt att man först tänker igenom vad det är man ska göra. Om man inte gör det blir koden ofta en ohanterlig röra. Här är en blid som bra beskriver hur du bör dela upp din process. Det är inte alltid viktigt att följa denna modell precist, men ha den alltid i åtanke när du skriver dina program.

Bild som beskriver programutveckligsprocessen

Exempel

Vi ska nu kolla på ett exempel som visar de olika stegen.

Analys

Pelle tänkte gå en kurs i EcoDriving för att bli bättre på att köra sin bil mer bränslesnålt. Han har tyvärr en gammal bil som inte visar hur mycket bensin den drar, men han vill ändå kunna hålla koll på bränsleförbrukningen. För att göra det hela lite mer spännande vill han ha ett Python-program som hjälper honom.

Specifikation

Pelle vill ha ett enkelt program som tar en körd sträcka (i km) och hur mycket han har tankat (i liter). Programmet ska sedan räkna ut bränsleförbrukningen och skriva ut den.

Design

Programmet kommer att bestå av tre delar:

  • Inmatning av information från användaren.
  • Uträkning av förbrukning enligt formeln förbrukning = bensinmängd/sträcka.
  • Utskrift av resultatet.

Implementation

Testning

Körexempel:

Hur kan vi tillämpa detta?

Tänk efter innan du börjar skriva kod!

Rita upp hur du tänker att programmet ska fungera innan du börjar. Penna och papper är ett bra medel för detta. Ett annat sätt är att använda pseudokod. Pseudokod är ett sätt att skissa upp ett program utan att binda sig till ett programmeringsspråk. Det finns ingen definierad syntax för pseudokod, utan man skriver ner utformningen av det tilltänkta programmet på en form man själv är bekväm med.

Experimentera och lär känna dig själv!

Det är oftast lättare att börja med ett annat, lite enklare problem. Testa hela tiden, och ändra om något inte fungerar.

Divide and Conquer

Divide and conquer är en problemlösningsmetod som går ut på att dela upp ett större problem i mindre delar. Dessa delar är oftast enklare problem att lösa än att försöka sig på att lösa hela problemet direkt. Lösningarna till de mindre delarna kan sedan kombineras till en lösning på det större problemet. Tänk på följande när du använder divide and conquer:

  1. Dela upp lösningen i flera funktioner så att varje funktion gör en sak och får ett vettigt namn. Använd terminologin för problemet. Det gör det enkelt att koppla ihop en funktion med en viss funktionalitet.
  2. Gör varje funktion lagom stor. Det ska vara lätt att överblicka och testa varje funktion var för sig, men dela inte upp lösningen i för små delar. Gör man det kan det bli svårt att skapa sig en överblick, och koden kan bli onödigt ineffektiv.
  3. Skriv funktioner som är generella och går att återanvända i andra projekt. Du tjänar oftast på att lösa lite större problem än du faktiskt har.

Exempel: Beräkning av perfekta tal

Vi säger att ett heltal k delar ett tal n om det finns ett heltal a sådant att a * k = n. Lite enklare kan man säga att k går jämnt upp i n. Vi säger att n är ett perfekt tal om summan av alla delarna är lika med n. Det finns inte särskilt många perfekta tal.

De tre lägsta är:

  • 6 (med delarna 1, 2 och 3)
  • 28 (med delarna 1, 2, 4, 7 och 14)
  • 496 (med delarna 1, 2, 4, 8, 16, 31, 62, 124 och 248)

Vi vill ha en Python-funktion perfect som tar reda på om ett heltal är perfekt eller inte. Hur kan vi dela upp problemet i mindre bitar?

Den här bilden illustrerar ett sätt att dela upp problemet.

Perfekta tal uppdelat i mindre delar

Implementation

Nu när vi har identifierat hur vi kan dela upp problemet är det dags att implementera det.

Testa koden:

När vi vet att koden fungerar som den ska kan vi fortsätta med resten av implementationen.


Sidansvarig: Peter Dalenius
Senast uppdaterad: 2016-08-15