Göm menyn

TDP007 Konstruktion av datorspråk

Seminarie 2: Strukturerad text, reguljära uttryck och XML

Syftet med det andra seminariet är att titta på olika sätt att hantera strukturerad text. I första delen behandlar vi informationen i en vanlig textfil med reguljära uttryck, och i andra delen läser vi in information som lagrats med ett uppmärkningsspråk. Båda dessa tekniker fokuserar i första hand på språk som inte är till för programkod utan för information.

Vad ska man tänka på?

Precis som inför förra seminariet ska ni, förutom lösningar på uppgifter, lämna in enhetstester och utvecklarblogg.


Uppgift 1: Presentera rapporter från textfiler

I filen football.txt finns det data i tabellform från en säsong i engelska Premier League. Er uppgift är att skriva ett Ruby-program som kan presentera rapporter med följande information:

  • Ange vilket lag som haft minst skillnad i antal gjorda (F) och insläppta (A) mål.
  • Rangordna lagen med avseende på målskillnad, alltså skillnaden mellan (F) och (A).

Tanken är att ni ska utforma ert program så att det kan hantera även andra fotbollsresultattabeller som ser likadana ut, inte bara just den här exempelfilen.

När ni gjort detta ska ni gå vidare och hantera en annan fil weather.txt som innehåller väderdata under en månads tid för en ort. Er uppgift med väderdatat blir även här att presentera olika rapporter.

  • Vilken dag innebar minst skillnad mellan lägsta (MnT) och högsta (MxT) dyngstemperaturen?
  • Rangordna dagarna med avseende på skillnaden mellan lägsta och högsta dygnstemperatur.

Testa gärna reguljära uttryck på rubular.com.

Utvecklarbloggen:

När ni har löst båda dessa deluppgifter ska ni, som kommentar i programkoden eller i er utvecklarblogg, reflektera över hur mycket av koden från första delen som gick att återanvända inför andra delen av uppgiften. Tänk tillbaka på regeln DRY från TDP001, vad i dessa uppgift gör det lätt/svårt att återanvända kod?


Uppgift 2: Hantering av XML-dokument

Denna uppgift publiceras inom kort


Sidansvarig: Pontus Haglund
Senast uppdaterad: 2026-01-16