Latinske ordtak
Strategi
Igjen stiller vi spørsmålet: Kan problemet dekomponeres, er det så fall noen opplagt eller smart rekkefølge, eller kan problemene løses hver for seg ?
Hvis vi analyserer den aktuelle oppgaven så involverer den i hvert fall tre problemer:
- Hvordan ser dataene ut, hvordan er de organisert?
- Hvordan skal vi kunne lese dem, sikkert og effektivt?
- Hvordan skal vi kunne velge et tilfeldig ordtak med jevne mellomrom?
Dataformat
Det første vi gjør er vel naturlig nok å åpne websiden med ordtak i nettleseren. Vi ser da at vi har en rekke linjer, et utdrag:
Acta est fabula, plaudite;Skuespillet er slutt, applauder Acta non verba;Handling, ikke ord Acta sanctorum;Helgenenes gjerninger Ad absurdum;Til grensen av det absurde Ad astra;Til stjernene Ad augusta per angusta;Til topps på smale veier Ad fontes;Til kildene>
Det ser ut til at vi har et ordtak pr linje og at latinen er skilt fra den norske oversettelsen med et semikolon ;. Siden vi ikke har kontroll over dataene må vi imidlertid alltid ta høyde for at det kan være feil i formatet. Hva hvis den som er ansvarlig plutselig legger til noen ordtak og glemmer et semikolon, eller legger ut en tom linje, eller glemmer å skrive inn oversettelsen ?
Hvordan lese data og lagre dem i programmet
Processing kan lese data i mange ulike formater og fra mange ulike kilder. Vi forsøker oss med den løsningen som er mest nærliggende, loadStrings(). En test kan se slik ut:
Hvordan velge tilfeldig
I Processing som i de fleste andre programmeringsverkøy har vi en funksjon som returnerer en tilfeldig verdi, random(). random returnerer et flytetall og vi kan bestemme nedre og øvre grense for tallet, f.eks. random(1.0,2.0) eller random(0,5). Du kan eksperimentere med en slik skisse.
Hvor mye skal vi kontrollere
Dette er et sentralt spørsmål i mange sammenhenger. Vi må ha en rimelig feil/avviks kontroll og vi må ha en fornuftig reaksjon på feil/avvik. Hvor dypt vi skal gå i dette er selvsagt avhengig av hvilket problem vi skal løse. I dette tilfellet er det vel rimelig nok hvis vi kan gi en forståelig melding hvis det er noe som skjærer seg. Det som kan skjære seg her er vel primært:
- Dataene finnes ikke på den oppgitte adressen
- Det kan være blanke linjer i fila
- Skillet mellom de to delene av en linje kan mangle
Vi har tre altenative strategier for å handtere avvik av typen over.
- Vi kan avlutte programmet straks med en feilmelding.
- Vi kan går nøye gjennom alle linjene og rette opp de vi tror det er håp for.
- vi kan ta linjene som de velges og enten la være å vise dem hvis vi oppdager feil eller vise dem slik de er.
En skisse til en test
Hvis vi skruer alt dette sammen kan vi komme ut med en slik løsning;
Motsatt resonnement
Hvis vi glemmer sikkerhet, kontroll og layout kan oppgaven løses med følgende skisse::
Så kan vi fortsette med feilhandtering og utskrift. I dette tilfellet kan dette være en farbar vei. Ulempem med en slik angrepsvinkel er at vi får en vanskeligere feilfinningssituasjon i selve koden, og vi ender fort opp med en del lappverk.
Eller vi kan selvsagt flytte fila med ordtak til samme katalog som programmet og sjekke den manuelt. I så fall trenger vi kanskje ikke noen feilkontroll, men vi går glipp av eventuelle oppdateringer.