Allmänna anvisningar för I-uppgiften, INDA F96

I-uppgiften är en obligatorisk del av INDA-kursen där du på egen hand ska arbeta med konstruktionen av ett lite större program. Uppgifterna ska lösas i C och du får välja bland ett antal uppgifter.

Det finns också möjlighet att få göra en uppgift som du själv formulerar, men du måste då först få klartecken från kursledaren (Örjan) eller kursassistenten (Joacim) innan du sätter igång. Formulera isåfall ditt förslag till uppgift på ungefär samma sätt som de övriga uppgifterna är beskrivna och lämna in det för godkännande innan du sätter igång. Du får inte räkna program som du redan har skrivit i andra sammanhang tillgodo som I-uppgift.

Till skillnad från tidigare laborationsuppgifter är det meningen att ni ska arbeta individuellt med I-uppgifterna. Naturligtvis är det fortfarande tillåtet att diskutera problem m.m. med varandra, men du måste själv skriva och stå för hela programmet.

Innan du börjar programmera måste du strukturera upp problemet: välja datastrukturer, modularisera, specificera gränssnitt, etc. Detta gör man med fördel med papper och penna. Det är mycket viktigt att vara noga med detta steg, för att undvika att gå in i en återvändsgränd senare. Tänk noga igenom vilka moduler du delar upp programmet i och vad varje modul ansvarar för.

Examination

Redovisningen sker genom ett individuellt förhör vid en tid som du bokar genom att anteckna dej på speciella bokningslistor. Vid redovisningen ska allt vara klart för körning. En prydlig programlista ska finnas till hands. Du ska vara beredd att svara på frågor om programmets funktion och uppbyggnad.

Uppgifter att välja på

Följande uppgifter finns att välja på:

Krav på programmet

Användbart C-bibliotek

På katalogen /info/inda-f96/iuppg finns bl.a. ett bibliotek med ett antal användbara moduler. I katalogen /info/inda-f96/iuppg/include finns för varje modul en h-fil som ska inkluderas. Själva biblioteket ligger i katalogen /info/inda-f96/iuppg/lib. Källkod till modulerna ligger i katalogen /info/inda-f96/iuppg/libsrc. Observera att källkoden endast är till för referens, användning av modulen ska ske enligt nedan. Om du kopierar källkoden och modifierar den är du inne på fel spår.

tty
denna modul innehåller sådant som behövs om man vill kunna läsa tangenttryckningar, utan att inmatning måste avslutas med RETURN. Detta kallas obuffrad inläsning. Här finns också funktioner för att rensa skärmen, flytta cursor till viss position, skriva text understruket, med fetstil, etc.

com
denna modul innehåller rutiner för att kommunicera mellan två användare.

graphics
denna modul innehåller enkla grafikrutiner, dvs. möjlighet att rita linjer, cirklar, etc.

random
denna modul innehåller funktioner för slumptal, använd dessa hellre än den inbyggda rand som är tämligen dålig.

prio
denna modul innehåller en ADT för prioritetsköer.

hash
denna modul innehåller en ADT för hashtabeller.

list
denna modul innehåller en ADT för dubbellänkade listor.

sequence
denna modul innehåller en ADT för sekvenser.

bintree
denna modul innehåller en ADT för binära träd.

För att använda en modul, ska rätt h-fil inkluderas, och dessutom måste man vid kompilering och länknining ge vissa väljare. Detta åstadkommer man enklast genom att skriva några "magiska" rader i sin Makefile:

CFLAGS=-g -Wall -I/info/inda-f96/iuppg/include
anger att C-kompilatorn ska leta även i katalogen /info/inda-f96/iuppg/include efter h-filer.

LDFLAGS=-g -L/info/inda-f96/iuppg/lib
anger att länkaren ska leta efter bibliotek även i katalogen /info/inda-f96/iuppg/lib

LOADLIBES=-linda
anger vilket bibliotek som ska användas. Om du behöver flera bibliotek (t.ex. math) så anger du flera "-lxxx", t.ex. LOADLIBES=-linda -lm.

För modulen graphics gäller att man dessutom måste länka med systembiblioteket X11, som den modulen använder sig av. Om man använder graphics måste man därför skriva -linda -lX11 som värde på LOADLIBES i din Makefile (den inbördes ordningen måste vara den givna).

I katalogen /info/inda-f96/iuppg/libdemo finns för vissa moduler ett demo-exempel.

Andra filer som kan vara bra att ha:

/info/inda-f96/iuppg/data/ord
denna fil innehåller ca. 15000 svenska ord, ett per rad.

/info/inda-f96/iuppg/data/ord5
denna fil innehåller ca. 1800 svenska ord på fem bokstäver, ett ord per rad.

/info/inda-f96/iuppg/data/tips
denna fil innehåller exempel på inlämnade tipskuponger.

/info/inda-f96/iuppg/data/avikt
denna fil innehåller atomvikter.