Programmeringsmetodik
för D2, SDU2 m fl
lördag 12 december 2009
Gäller som tentamen för:
DT2010 Datateknik B, Programmeringsmetodik, provkod 0100
DT2006 Datateknik B, Tillämpad datavetenskap B, provkod 0110
Hjälpmedel: | Inga hjälpmedel. |
Poängkrav: |
Maximal poäng är 30.
För godkänt betyg (3 respektive G) krävs 15 poäng. |
Resultat: | Meddelas på kursens hemsida eller via e-post senast lördag 2 januari 2010. |
Återlämning av tentor: | Efter att resultatet meddelats kan tentorna hämtas på institutionen. Man kan också få sin rättade tenta hemskickad. |
Examinator och jourhavande: | Thomas Padron-McCarthy, telefon 070-73 47 013. |
Prioritet | Kategori | Operator | Associativitet |
---|---|---|---|
Högsta | Unära postfixoperatorer | (), [], ->, ., ++, -- | vänster |
Unära prefixoperatorer | !, ~, ++, --, +, -, *, &, sizeof, (typ) | höger | |
Multiplikation mm | *, /, % | vänster | |
Addition mm | +, - | vänster | |
Bitvis skift | <<, >> | vänster | |
Jämförelser | <, <=, >=, > | vänster | |
Likhetsjämförelser | ==, != | vänster | |
Bitvis OCH | & | vänster | |
Bitvis XOR | ^ | vänster | |
Bitvis ELLER | | | vänster | |
Logiskt OCH | && | vänster | |
Logiskt ELLER | || | vänster | |
Villkorsoperatorn | ?: | höger | |
Tilldelning | =, +=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |= | höger | |
Lägsta | Komma-operatorn | , | vänster |
När det gör stavningskontrollen ska programmet utgå från två ordlistor: en lista med ord som det känner till, och en lista med vanliga felstavningar. Dessa ordlistor finns lagrade som två filer, som heter ord.txt och felstavningar.txt. Båda filerna har samma format, nämligen ett ord per rad. Filerna behöver inte vara sorterade i bokstavsordning, men kan råka vara det ändå.
Som ett enkelt exempel kan filerna se ut så här:
ord.txt
|
felstavningar.txt
|
Filen ord.txt innehåller alltså alla (rättstavade) ord som programmet känner till, och filen felstavningar.txt innehåller ett antal felstavade ord.
Programmets uppgift är att läsa text från standardinmatningen, dela upp den i ord, och sen på standardutmatningen rapportera dels alla kända felstavningar, och dels alla ord som den inte hittar i någon av de två filerna med ord.
För enkelhets skull tänker vi oss att inmatningen till programmet görs enbart med små bokstäver och utan några skiljetecken. Vi kan också anta att inget ord, vare sig i filerna eller i inmatningen, är längre än 30 tecken.
Denna inmatning:
det är alldrig för sent att skriva up sin diskussion i sin almenacka
bör ge en utmatning som ser ut som den här:
alldrig -- känd felstavning! sent -- okänt ord skriva -- okänt ord up -- okänt ord sin -- okänt ord sin -- okänt ord almenacka -- känd felstavning!
Programmet ska alltså läsa text från standardinmatningen, och dela upp den i ord.
Varje ord ska sen slås upp dels i den vanliga ordlistan, och dels i listan med kända felstavningar.
Om ett ord hittas i den vanliga ordlistan, antas det vara rättstavat, och ger ingen utskrift.
Om ordet hittas i listan med kända felstavningar, ska en varning om det skrivas ut.
Om ordet inte hittas i någon lista, ska en varning om att det är ett okänt ord skrivas ut.
Om man väljer olämpliga datastrukturer, till exempel osorterade länkade listor, eller (ännu värre) att läsa direkt i filerna vid varje uppslagning, kan det ta lång tid att köra programmet. Välj därför datastrukturer så att programmet går att köra på en normal, modern dator utan att det tar orimligt lång tid, och utan att det kraschar på grund av minnesbrist.
För att ett program ska vara lätt att förstå och arbeta vidare med, bör man dela upp det i mindre delar, så kallad modularisering. Modularisera programmet så det består av flera filer (.c- och .h-filer). Modulariseringen gäller främst de viktigaste datatyperna i programmet, där man bör använda abstrakta datatyper. En abstrakt datatyp är gjord så att implementationsdetaljerna är dolda, och därför går att ändra utan att man behöver ändra i resten av programmet.
Poängbedömning: