Institutionen för informationsteknologi

Inlämningsuppgifter

Instruktioner (PDF) Uppdaterad 23/2 -05, kl 21:15

Samtliga uppgifter skall lösas i grupper om exakt två personer. Gör uppgifterna i tur och ordning. De bygger på varandra och till viss del återanvänds kod som skrivits i tidigare uppgifter.

Filer som behövs till uppgifterna

Inl1A.c
Inl1C.c
Inl2D.c
testfil.txt
testfil.count
adressbok.h
adressbok.c - Uppdaterad 2/3 2:18
klondike.c - Uppdaterad 7/3 - Kompilerad testfil (sparc): klondike
ansi.h
cardpile.h
ttt.c

Ett debug-verktyg

Senast uppdaterad: 2/3 kl 4:08

Debuggern testar det mesta som går att testa maskinellt. Det finns dock inga garantier för att er kod fungerar bara för att den går igenom debuggern. Manuell testning krävs fortfarande i slutändan.

Detta verktyg tillhandahålls som en objektfil (.o). Jag kan tyvärr inte ger er källkoden eftersom den innehåller en komplett lösning av uppgiften. Objektfilen är en "halvkompilerad" version av programmet. För att kompilera ihop den med er lösningsfil lägger ni bara till filnamnet som ett argument till gcc:

gcc -ansi -Wall -Wextra adressbok_debugger.o adressbok.c -o adressbok

Jag har medvetet struntat i flaggan -Werror ovan eftersom ni annars måste skriva kod för att använda alla argument i alla funktioner innan ni kan testa något. Ni kommer fortfarande att få varningar om oanvända variabler, men en körbar fil produceras ändå.

Notera! För att debuggern ska fungera krävs två förändringar av den givna källkoden:

  • Det kan bara finnas en main i ett program. Debuggern förväntar sig att er main-metod heter main_debug.
  • Debuggern måste komma åt de globala variablerna boken och poster. Dessa kan därför inte vara static så länge ni använder debuggern. I koden ni lämnar in måste dessa dock vara statiska igen!

Topplistan

Resultaten av inlämningsuppgift 6 visas nedan. Listan är sorterad efter totalstorleken. Lösningen som kallas Minimum effort är den nedre gränsen för att bli godkänd på inlämningsuppgift 6.
Tävlingen är nu avgjord och inga fler bidrag kommer att läggas in i listan. Tack för alla kreativa lösningar, det har varit ett sant nöje att rätta denna uppgift!

Namn Källkod sparc x86 Total Källkod
Pär Andersson, Henrik Meijer 719 7328 5422 13469 ttt_pahm.c
Jonatan Lindén, Ragnar Österlund 761 7644 5550 13955 ttt_jlro.c
Vladimir Katardjiev, Martin Gustafsson 897 8024 5792 14713 ttt_vkmg.c
Niklas Jansson, Christofer Larsson Ferm 1059 7992 5762 14813 ttt_njcl.c
Jan Sundman, Ivan Hiort af Ornäs 1004 8176 5790 14970 ttt_jsih.c
Sliva Abdalla, Lars Lindgren 1096 8064 5866 15026
Fredrik Nordvall Forsberg, Lars Vising 1087 8152 5952 15191
Håkan Nilsson 919 8348 5980 15247
Kristoffer Ekman Wärja, Daniel Nisses-Gagnér 1142 8208 5976 15326
Robert Kajic, Jonatan Heyman 1182 8340 5980 15502
David Svalander, Fredrik Åhs 1164 8364 5980 15508
Markus Näsman, Sam Tavakoli 1177 8356 5980 15513
Johan Sundström, Hans Olsson 1251 8348 5980 15579
Christer Folkesson, Måns Ekman Magnusson 1155 8516 5948 15619
Andreas Pettersson, Martin Blom 1106 8468 6076 15650
Fredrik Edemar 1347 8372 5979 15698
Nils-Anton Hordnes, Marcus Jönsson 1400 8348 6049 15797
Minimum effort 3250 8420 6034 17704

Om uppgifterna

  1. Bekanta dig med gcc. Uppgiften bör vara klar innan måndag 21/2 -05
  2. Lätta små program. Loopar, I/O. Uppgiften bör vara klar innan måndag 21/2 -05
  3. Mindre lätta små program. Argument, Funktioner, Strängar, Arrayer. Uppgiften bör bli klar på labben fredagen den 25/2 -05
  4. Adressbok. Strukturer, Arrayer, malloc och pekare. Uppgiften ska vara klar runt påsk -05
  5. Endast DVP. Kortspel. Länkad lista av strukturer. Uppgiften ska vara klar runt påsk -05
  6. Endast DVP. Fulkod - minimera programmet. Uppgiften blir aldrig klar.. Men lämna in efter påsk -05

Uppgift 1 och 2 är lätta! Steg för steg-instruktioner tar er igenom era första C-program och lär er använda gcc - den kompilator vi kommer att använda under kursen. Beräkna ca 4 timmar för dessa två uppgifter. Om ni är vana vid imperativ programmering så går dessa uppgifter mycket fortare.

Uppgift 3 löser ni under v8. Den är lite klurigare och veckan avslutas därför med en lab där ni har möjlighet att fixa de sista buggarna. Om ni börjar med uppgiften på fredags-laben kommer ni inte att hinna klart i tid. Beräkna ca 10 timmar för uppgift 3.

Uppgift 4 kommer att ta mer än de fyra schemalagda lab-timmarna att genomföra. Räkna inte med att ni kan göra uppgiften hemifrån utan att behöva be om hjälp under lab-tiden. Beräkna ca 15 timmar för uppgift 4.

Uppgift 5 (endast DVP) är en stor uppgift. Fredagens fyra lab-timmar är bara början. Beräkna ca 30 timmar för uppgift 5.

Uppgift 6 (endast DVP) blir inte svårare än ni gör den, den innehåller inget nytt material. Dock innehåller uppgiften ett tävlingsmoment så vill ni vinna blir det mer jobb Smiling smiley Ni förväntas hitta material i böcker eller på nätet för att göra ett bra jobb med denna uppgift. Topplista kommer att publiceras på kurshemsidan. Ni bör spendera åtminstonde 5 timmar på uppgift 6. Resultatet i tävlingen påverkar inte betyget men en minimigräns finns som måste presteras för att få godkänt på uppgiften.

Inlämning och deadlines

Inlämning sker via Course Manager.

Datumen ovan är riktlinjer för att ge en uppfattning om vad som krävs för att hänga med i föreläsningarna. Ni har tre inlämningsförsök per uppgift. Ett ordinarie och två möjligheter till kompletteringar. Samtliga uppgifter är obliga­toriska för att få godkänt på kursen.

Det finns bara en riktig deadline och det är den 4/4 -05. Efter detta datum kommer uppgifter endast att rättas sporadiskt under våren / sommaren. Obs­ervera att denna deadline alltså är sista datum för den sista kompletteringen, inte för första inlämningen.

Alternativa uppgifter

För er som känner att ni redan kan allt som sägs på föreläsningarna finns en möjlighet att lösa alternativa uppgifter. Dessa är betydligt svårare uppgifter än inlämningsuppgifterna, men för en erfaren C-programmerare bör de gå att lösa på någon timma. Uppgifterna skall lösas ENSKILT under föreläsningstiden, ni kommer inte att behöva tillgång till dator. Uppgiften lämnas ut vid föreläsningens start och ska vara inlämnad innan föreläsningen är slut. Varje korrekt löst alternativuppgift räknas som en godkänd lab. (Alla som läser DVP måste dock göra uppgift 5 och 6.) Missar man att lämna in i tid eller om man inte löser uppgiften får man göra den vanliga inlämningsuppgiften istället. Det går alltså bra att göra någon eller flera och på så sätt slippa motsvarande labar och göra de vanliga labarna på resten.

OBSERVERA!! Det är svåra uppgifter, på riktigt. Ni ska ha mycket goda kunskaper i C för att klara alla uppgifter. Tio år i industrin med Java eller C++ räcker inte! Det är C-specifika detaljer i uppgifterna.

Uppdaterad  2005-05-09 16:16:30 av Jesper Wilhelmsson.