Bowling – Et eksempel på perfekt programmering

Skrevet av on 18. januar 2015
Bowling

Jeg elsker programmering. Dette fordi programmering kan løse svært mange oppgaver automatisk og erstatte manuelt arbeid.

I går var jeg å spilte bowling med mine barn. Ekstremt morsomt, selv med handicap-veggene oppe slik at kula ikke kunne gå i renna. Dette var nok også hovedgrunnen til at far fortsatt er best i familien. Mens ungene finsiktet og trillet de alt for tunge kulene avgårde, kom jeg til å tenke på at dette er et perfekt eksempel på hvordan god programmering kan løse en oppgave som tidligere måtte gjøres manuelt; Sette opp kjeglene igjen og returner kula til startpunktet.

Bowling har eksistert i flere hundre, om ikke tusen år. Kong Edvard III av England forbød (!) troppene sine å spille bowling allerede på 13. tallet. Enkelte mener at bowling eksisterte allerede 3200 f.Kr.

Bowling - Old styleI Norge kom den første automatiske bowlingbanen i Bergen  i 1960 og året etterpå åpnet den første i Oslo. Mye av grunnen til at dette raskt ble populært, skyldes nok den automatiske kjeglemaskinen som setter opp kjeglene igjen og gjør at ventetiden blir utrolig mye kortere. I 2004 var jeg forøvrig i Edinburgh og fikk prøve hvordan det var å spille uten hull i kulene og uten noen automatisk maskin. De hadde bygget opp en renne for å føre kulene tilbake, men det måtte fortsatt stå en person å sette opp kjeglene manuelt og sende kula tilbake.

Programmering av bowling maskiner

Nå har jeg ingen anelse om hvordan bowling-maskiner er programmert og hvordan de løste dette allerede på 50-tallet når de første maskinene kom. Men det er heller ikke poenget. Det er prinsippene for hvordan en hendelse som medfølger en oppgave kan løses, som jeg ønsker å vise deg her.

Hendelsen er kule passerer et visst område og oppgaven man ønsker å gjennomføre når hendelsen oppstår, er returner kule og sett fjern falne kjelger hvis det er forsøk nr 1.

Allerede her ser du premissene for hele oppgaven; Hvis

Hvis er hele nøkkelen bak programmering. Hvis sånn, så gjør sånn. Og så kan man sette Hvis-setninger inni hverandre. I bowling-hallen kunne dette eksempelvis bli løst slik:

Hvis kule passerer strek 2cm før første kjegle, senk sperrebom og start transportbånd for retur av kule

Hvis forsøk 1:

– Fjern kun kjegler som har falt
Hvis alle kjegler har falt, sett opp 10 nye, send poeng til poengtavle og gjør klar for neste runde

Hvis forsøk 2:

– Fjern alle kjegler, sett opp 10 nye, send poeng til poengtavle og gjør klar for neste runde

I runde 10 er det spesielle regler som tilsier at man får minimum 2 forsøk uansett. Klarer man derfor alle 10 i forsøk 1, får man et nytt forsøk med 10 nye kjegler. Klarer man disse også, får man enda et nytt forsøk med 10 nye. Med andre ord, enda flere Hvis-setninger.

Jeg ser for meg at kreative sjeler har lagd enda flere Hvis-setninger her. Som f.eks. Hvis noen får flere poeng enn sjefen, send e-post til sjefen. 

Det er dette som gjør programmering såpass spennende. Med Hvis-setninger kan man sende varsler, endre priser, endre poengskalaer, stenge bowling-hallen pga feil på systemet og mye mer.

Så kan du jo selv tenke deg alle andre situasjoner enn bowling man kan bruke programmering til å løse manuelle oppgaver ;)

Om Stiantf

Innehaver av stianfredriksen.no, Daglig leder i webbyrået Sorentio AS. Mindre sjef hjemme.

Legg igjen et svar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

Du kan bruke disse HTML-kodene og -egenskapene: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>