Att skapa program

Vad är ett program?

Program, programvara eller mjukvara, appar eller applikationer, är egentligen allt som du skapar med hjälp av ett programmeringsspråk. Allt som är digitalt är uppbyggt av program.

I det här temat handlar det om program som löser något problem, är användbara eller bara roliga. Allt i din dator består av olika programvaror, från operativsystemet till webbläsaren. Du har program för att kunna skriva, rita, räkna, hålla ordning på datum och tid, komma ut på Internet och så vidare. Spel är också program.

Program finns inte bara i datorn, det finns som sagt i allt digitalt. Robotar har programvara, din telefon, din musikspelare, mikrovågsugnen, bilen…

Internet of Things är ett samlingsnamn för de prylar som är uppkopplade till Internet, kopplade med sensorer till dig som använder dem, eller som på andra sätt är programmerade för att göra ”smarta” saker. Exempel på IoT är pennan som laddar upp det du skriver för hand till datorn, eller kylskåpet som säger till när mjölken är slut.

Diskussionsfrågor:

  • Vilka program eller appar använder du i din vardag?
  • Vilka funktioner har det programmet? Vad kan du göra med det?
  • Saknar du funktioner som du önskar att programmet också hade?
  • Hur tror du att programmet kommer att fungera i framtiden?

I det här temat kommer du att få göra enklare varianter av några vanliga program som du kanske använder i din vardag:

Program är problemlösning

Alla program löser något slags problem, ett behov eller en önskan. Att bygga program handlar alltså om att lösa problem och uppfylla önskningar!

Ibland pratar vi om att ha hinder, som i ordet ”funktionshinder”. Men hinder är något som finns i omvärlden runt omkring dig, inte i dig själv. Med hjälp av din påhittighet och utifrån dina förutsättningar kan du skapa lösningar till de hinder som du möter i vardagen.

När du vill hitta på en lösning på ett problem, och skapa ett program för det, behöver du ofta dela upp problemet i mindre delar. Det finns ett talesätt som säger att för att äta en elefant behöver du dela upp den i bitar. Om du har ett stort problem att lösa, blir det lättare om du delar upp det i flera mindre problem. På så sätt kan du hitta en lösning i taget tills du har löst hela det stora problemet och skapat ett program som fungerar. 

Tänk också på att det ibland går att lösa problem bara genom att göra det roligt. Om du till exempel behöver städa ditt rum, hur kan du få den uppgiften att bli lika roligt som ett spel eller en lek som du gillar? 

Exempel på problemlösning

Uppfinnaren Simone Giertz gillar att försöka lösa vardagsproblem, och har bland annat skapat en speciell väckarklocka, en frukostmaskin och en tandborsthjälm. Hon har blivit känd världen över med sina Youtube-klipp där hon testar nya problemlösningar, och hon brukar kallas för "Queen of shitty robots". Simone tycker att det är viktigt att våga prova nya idéer oavsett om de funkar bra eller inte, och hon är inte rädd för att misslyckas!

Här är några fler exempel på hur programmering och påhittighet har använts för att skapa digitala lösningar på problem:

  • Kan sopsortering någonsin bli roligt?

Här kan du kolla på världens djupaste soptunna. Rolighetsteorin.se var en kampanj av Volkswagen, där de försökte lösa problem med humor. Det var också en tävling där människor skickade in förslag på bra lösningar med hjälp av humor.

  • Kan jag uppleva musik med andra sinnen än hörseln?

På Tekniska museet i Stockholm finns en skulptur som heter ”Musik med hela kroppen”. Här kan du skapa och uppleva musik med flera sinnen genom ljud, färger och mönster som förändras och vibrationer som kan kännas mot kroppen. Ljudkonstnären Håkan Lidbo har skapat skulpturen tillsammans med Tekniska museet och barn och unga med olika funktionsförutsättningar: hörselnedsättning, synnedsättning och motoriska nedsättningar. 

  • Kan en blind musiker ”se” vad dirigenten visar i en orkester?

Projektet A Chair For Wu Jing pågår just nu (2015-2016) och handlar om att ta fram ny teknik och programvara för en klassisk musiker som är blind och som därför aldrig har kunnat uppfatta dirigenten i en orkester. Med hjälp av sensorer, mikroprocessorer och vibrationselement ska de översätta dirigentens rörelser till vibrationer som musikern kan förstå.

Ellen Sundh som leder projektet är en “kreativ teknologist” som jobbar med att ta fram påhittiga och ofta roliga, digitala lösningar på olika problem, stora som små. Hon har till exempel också skapat en skohylla som gråter om du sätter skorna fel.

Börja med en idé

För att få idéer behöver du först hitta problemet. Det kan vara små vardagsproblem eller större problem som rör många människor.

Börja med att försöka lösa något problem som du har själv. Du kanske behöver hjälp med att komma upp på morgonen, att göra läxan, att städa rummet eller något annat? Det kan visa sig att många andra också vill ha hjälp med just det problemet. Det kan också visa sig att din lösning kan användas för helt andra problem också.

Vilket problem vill du lösa?

Det är oftast en god idé att börja med dig själv och din egen vardag. Kan du hitta något problem som du själv vill lösa, så kanske det finns andra som också skulle vilja ha hjälp med just det problemet. Här är några frågor som du kan ställa för att hitta problem att lösa:

  • Vad vill du ha hjälp med?
  • Är det något i vardagen som du tycker är jobbigt och som du vill göra enklare?
  • Finns det något som dina syskon, föräldrar, mor- eller farföräldrar behöver hjälp med?
  • Vad vill din kompis ha hjälp med?
  • Finns det något i skolan som skulle kunna bli bättre?
  • Vad vill du kunna göra i framtiden som du inte kan göra idag?
  • Är det något större problem där du bor, eller i världen, som du skulle vilja lösa?

När du har ett problem som du vill lösa, är nästa steg att försöka komma på någon bra idé. Det är inte alltid så enkelt! Här kommer några tips på hur du kan tänka.

Säg inte nej till dina idéer!

Det finns inget rätt eller fel. Ibland är det de konstigaste, tokigaste idéerna, de som ingen tror på från början, som visar sig vara helt fantastiska. Det var många som trodde att Internet aldrig skulle slå igenom eller att sms bara skulle användas av ett fåtal människor.

”Internet är bara en fluga” 
- Ines Uusman, politiker, 1997

Detta är inte ett korrekt återgivet citat, utan en rubriksättning, men innebörden i hennes resonemang var snarlikt (Källa: Wikiquote).

Våga misslyckas!

Det är viktigt att våga tänka annorlunda och att våga misslyckas. För att komma på en bra idé behöver du våga komma på hundra dåliga idéer.

”Det krävs ett helt nytt sätt att tänka för att lösa de problem vi skapat med det gamla sättet att tänka.”

”Den som aldrig gjort ett misstag, har aldrig prövat något nytt.”
– två citat av Albert Einstein

Hitta på nytt av gammalt?

Det är inte så ofta som du kommer på något helt nytt, det är lättare att utveckla något som redan finns och hitta nya användningsområden. Till exempel genom att slå ihop två program eller prylar som redan finns. Vad händer om du slår ihop ett ritprogram med en webbkamera? Eller en musikspelare med en pulsmätare?

Här kan du göra en idéövning för att skapa nytt av gammalt.

Tänk tvärtom!

Om du har en idé till hur du kan lösa ett problem, men som du inte känner dig helt nöjd med, försöka att vända på det. Hur kan du få problemet att bli ännu värre? När du har gjort det, vänd tillbaka och se om du kan komma på en helt ny idé utifrån den bakvända.

Ett exempel:

  • Problem: Att försova sig på morgonen
  • Idé: Väckarklocka som skriker ”VAKNA!”
  • Tvärtom: Väckarklocka som spelar sövande musik
  • Ny idé: Väckarklocka som spelar glad musik

Här kan du göra en idéövning för att tänka tvärtom.

Gör en prototyp av din idé

När du har kommit på din idé är det dags att omvandla den till ett fungerande program. Men på vägen dit är det bra att göra prototyper. En prototyp är en testmodell som visar hur du vill att ditt program ska fungera och se ut, och som du kan använda för att testa din idé på vägen fram till färdig produkt. Det är alltid bra att testa mycket för att upptäcka sådant som kan bli bättre!

När du börjar skapa din prototyp behöver du tänka på:

  • Form: Hur ska programmet se ut?
  • Funktion: Hur ska programmet fungera?
  • Målgrupp: Vilka ska använda programmet och hur ska form och funktion passa dem?

Scratch är ett bra verktyg för att göra prototyper till digitala program, tjänster och prylar!

Uppgifter i Scratch

På det här temat finns några olika uppgifter till Scratch som deltagarna kan välja mellan och som är exempel på prototyper till program. Alla uppgifter kan användas för att själv fundera kring hur nya program skulle kunna fungera. 

Exempel på program att skapa i Scratch:

Ritprogram: Ett enkelt ritprogram, lite likt de första versionerna av Paint, med olika färger och stämplar att rita med. Här utforskar du funktioner för pennan, övar dig på att redigera klädslar och introduceras till operatorer.

  • Scratch exempel av Ritprogram
  • Finns det funktioner som du skulle vilja ha i ett ritprogram, som inte finns idag? 
  • Vad händer om du kombinerar ett ritprogram med ett annat program, till exempel en kalender, kameran, ett spel?
  • Utveckla ditt ritprogram så som du vill att det ska fungera!

Robotgenerator: Ett program som slumpar fram olika varianter på robotar, bara för att det är skoj. Men generatorn kanske också kan göras om till något användbart? Här introduceras strängar, listor, att programmera sprajtars ordning i lager, och det handlar också om att öva på slumptal. Det ingår mycket kreativt skapande med att redigera klädslar.

  • Scratch exempel av Robotgenerator 
  • Skulle du kunna göra robotgeneratorn till ett användbart program?
  • Vad händer om generatorn slumpar fram kläder, ingredienser till matlagning, ord eller meningar?
  • Testa att utveckla robotgeneratorn till något som du kan använda i vardagen!

Photo Booth: Brukar du använda effekter till mobilkameran som finns till exempel i Snapchat? Om du har en webbkamera i din dator kan du här skapa en prototyp till din alldeles egna photobooth-app, alltså en app där du kan lägga till effekter till din bild! Rita egna frisyrer, mustascher, glasögon och så vidare, som du lägger till din kamerabild.

  • Scratch-exempel av Photo Booth
  • Hur tror du att photobooth-appar och effekter kommer att kunna användas i framtiden? 
  • Hur skulle du vilja kunna ändra ditt ansikte i webbkameran? Är det något annat du vill kunna ändra?
  • Utveckla din photobooth-app så som du vill att det ska fungera!

Eget program – eller remixa andras

Om det är deltagare som snabbt blir klara, ge dem möjligheten att skapa nya program utifrån de funktioner de har lärt sig. Låt dem fundera på program som de önskar att de hade för att underlätta, ta bort hinder, eller göra något i vardagen roligare.

Därefter får de fundera på hur de kan göra en prototyp i Scratch och hur den kan kodas. Var uppmärksam på att det blir genomförbart och inte allt för komplext!

Här kan ni utforska program som andra har gjort i Scratch och visa på möjligheten att remixa andras program för att göra egna varianter och se hur de har löst särskilda funktioner!

Några exempel:

Begrepp inom programmering som introduceras

Här är några exempel på begrepp inom spelprogrammering som vi introducerar i uppgifterna till Scratch:

Sträng: En sträng är en variabel som har text istället för siffror som värde. Det är ungefär som ett pärlhalsband med bokstäver eller ord skrivna på pärlorna. En sträng kan innehålla alla bokstäver och andra tecken så som mellanslag och utropstecken.

Lista: En lista är en variabel som innehåller flera andra variabler. Om variabeln är byrålådan så är listan hela byrån med alla lådor. En lista kan innehålla flera olika siffror eller flera olika strängar.

Operatorer: Funktioner som hanterar matematiska beräkningar av värden och strängar. Det kan t ex vara att addera två värden, kombinera två strängar, bestämma om något är större eller mindre än, eller ge ut ett slumptal.

Slumptal: Ibland vill du kunna göra oförutsägbara händelser i ditt program och då behöver du använda slumptal. T ex att Robotgeneratorn slumpar fram olika varianter på robotar, varje gång du trycker på start.

Andra läromiljöer

Det här är webbaserade lärmiljöer som ni kan tipsa om för deltagare som snabbt blir färdiga med uppgifterna eller som vill prova något annat än Scratch. De är på engelska och vänder sig till en lite äldre målgrupp. Om ni testar någon av dem får ni gärna återkoppla om hur de fungerar i kodstugan.

  • Made with code: blockbaserat, uppdrag där du skapar olika projekt med handledning.
  • CodeAvengers.com: gratis grundkurs bl a för Javascript och html & css, engelska.
  • MIT App Inventor: blockbaserat för att skapa appar, rekommenderas för 12 år och uppåt.
Har du kommentarer till materialet på den här sidan? Mejla info@kodcentrum.se