OHJEITA C-OHJELMOINNIN HARJOITUSTYÖTÄ VARTEN (Syksy 2009)
YLEISTÄ
C-ohjelmointikurssin suoritus edellyttää harjoitustyön tekemistä.
Vain harjoitustyön palauttanut saa osallistua erilliskuulusteluun.
Syksyn 2009 kurssikokeeseen voi osallistua vaikka ei olisi vielä
palauttanut harjoitustyötä. Kurssista ei kuitenkaan voi saada
suoritusta, jos ei tee harjoitustyötä. Harjoitustyö on palautettava
viimeistään ma 9.11.2009.
RYHMÄ- TAI YKSILÖTYÖ
Harjoitustyö tehdään joko 2-3 henkilön ryhmässä tai itsenäisesti.
Ryhmätöissä on oltava lisäksi tietorakennemoduulille testausmoduuli. Ryhmätöissä
tulee huolehtia, että kaikki tekevät suunnilleen yhtä paljon työtä työn
eteen. Ryhmätöissä kunkin funktion kohdalla tulee ilmetä kuka sen on tehnyt.
TYÖN ALOITUS JA TYÖNOHJAUSTILAISUUDET
Valitse yksi tehtävälistan ohjelmointitehtävä
ja toteuta se ANSI-C -kielellä tai C-kielellä käyttä c99 standardia.
Ilmoita moodlessa kurssin alueella harjoitustyöaiheesi 12.10 mennessä.
Jos teet työn ryhmässä, niin silloin yksi ryhmän jäsenistä ilmoittaa
työn nimen ja ryhmän jäsenten nimet. Ryhmässä voi olla 2-3 opiskelijaa.
Kirjautuessasi ensimmäistä kertaa kurssin moodle-alueelle tarvitset
sanaa htyo.
Harjoitustyön ohjausta on saatavilla ohjausaikoina.
Vastuu sopivasta aikataulusta on sinulla itselläsi.
VAATIMUKSIA
Käytettävät piirteet (nämä täytyy löytyä ohjelmakoodista):
- Linkitetty tietorakenne osoittimilla (pino, lista, puu,
hajautustaulu,...), mikäli työ sallii.
- Tiedostosta lukemista ja kirjoittamista (tekstitiedosto tai binääritiedosto)
- Komentoriviparametrit (jos ei muuta järkevää, niin ainakin -h
opastus)
- Funktioita parametreineen järkevästi käytettynä
Muita ominaisuuksia voi sitten käyttää tarpeen mukaan.
Voit tehdä työsi millä tahansa
koneella, mutta tuloksen on kuitenkin ehdottomasti toimittava myös
laitoksen Linux-ympäristössä (muista siis siirrettävyys).
Ohjelman pitää kääntyä gcc:n parameteilla -ansi -pedantic -Wall ja Wextra
ilman varoituksia. Vaihtoehtoisesti voit käyttää c99 standardia.
Käännösyksikköjä on oltava vähintään kaksi. Lisäksi tehdään makefile,
jonka avulla tehdään suorituskelpoinen ohjelma.
HYVIN SUUNNITELTU PUOLIKSI TEHTY
Hahmottele ongelmakenttää ja lyö lukkoon toiminnallinen
määrittely, käytettävät tietorakenteet sekä
ratkaisujen päälinjat. Esittele valintojasi ja ratkaisujasi
työohjaustilaisuudessa. Voit säästää koodinkirjoitusvaivojasi
jo hyvillä tietorakenteilla.
POIS TURHA HIENOSTELU: Eli tee se ja vain se mitä pyydetään
ja tee lisävirittelysi vain omaan versioosi!
Sopiva ohjelman pituus on 200-500 riviä koodia (plus kommentit).
Pituutta tärkeämpää on kuitenkin, että ohjelma
tekee mitä pyydetään.
Älä aliarvioi suunnittelun merkitystä toimintapainotteisessakaan
lähestymistavassa.
HYVÄT OHJELMAT EIVÄT KASVA ITSESTÄÄN - NE TEHDÄÄN
Arvioi tehdyn suunnitelman toteuttamiskelpoisuutta:
-
Ensimmäinen mieleentuleva ratkaisu ei ole välttämättä
paras.
-
Huonoon ratkaisuun ei saa investoida liikaa liian aikaisin.
-
Hyvä ohjelma toimii oikein, tehokkuus on usein vähemmän
tärkeää.
Sijoita funktioiden esittelyt, tietorakenteiden tyyppimäärittelyt
ym. yhteiset esittelyt .h -loppuisiin määrittelytiedostoihin.
Varsinainen suoritettava koodi ja muuttujamäärittelyt tulevat
.c -loppuisiin lähdekooditiedostoihin.
Laadi aina erillinen pääohjelma ja sijoita yhteenkuuluvat, jonkin selkeän
osatehtävän suorittavat funktiot omiin lähdekooditiedostoihinsa
Tee työsi hyvällä maulla (AINA):
-
yhtenäinen ohjelmointityyli
-
vältä kielen erikoisuuksia ja kryptistä koodia
-
iskunkestävä ohjelma - ei natise, eikä kaadu
-
pieni opastus mukaan
-
muuttujat: kuvaavat nimet, joista selviää käyttötarkoitus
merkitys ja käyttö huomioonottaen
Testausta kannattaa tehdä järjestelmällisesti heti alusta
alkaen. Voit etsiä yksinkertaisia virheitä ja 'epäilyttäviä'
kohtia gcc-kääntäjän optioilla -ansi -pedantic -Wall
DOKUMENTOINTI: TARPEELLINEN OSA
Tiedostoon ohje kirjattu 2-4 sivuinen lyhyt rakennedokumentti ja
ohjelman käyttöohje
sekä huolellisesti tehty kommentointi ja lyhyt selitys testauksesta riittää tällä
kertaa.
Ohjelman kommentoinnissa pätevät seuraavat yksinkertaiset
säännöt:
-
Kukin ohjelmatiedosto sisältää yleiskommentin:
-
Mihin tiedosto on tarkoitettu
-
Mitä funktioita tiedosto sisältää
-
Mitä muiden tiedostojen funktioita tiedosto käyttää
-
Käytettyjä kirjastofunktioita ei tarvitse listata
-
Selvitä tärkeät tietorakenteet.
-
Kerro kustakin funktiosta:
-
Mitä funktio tekee
-
Mitkä ovat parametrit
-
Mitä funktio palauttaa
-
Mitä funktio muuttaa
-
Kuka on koodannut funktion
-
Varo liiallista kommentointia. Käytä selkeitä muuttujanimiä,
kielen rakenteet oletetaan tunnetuksi jne.
-
Kommentoi vaikeat ja erikoiset ratkaisut
HARJOITUSTYÖN PALAUTUS
Työ on jätettävä
tarkastettavaksi viimeistään ma 9.11.
Työt jätetään tarkastettavaksi kurssin moodle alueella.
Tarkastettavaksi
jätetään yksi tar-tiedosto, johon on koottu
kaikki työhön liittyvä materiaali:
- kaikki
harjoitustyön C-kieliset ohjelmatiedostot,
- niiden
kääntämisen toteuttava Makefile-tiedosto
- testeissä käytetyt tiedostot
- readme- tai
ohje-niminen tiedosto, joka sisältää työn
dokumentoinnin
Halutessaan tar-tiedoston voi myös
palauttaa pakattuna tgz-tai gz-tiedostona.
(Ohjeita tar-tiedoston tekemiseen ja pakkaamiseen)
HARJOITUSTYÖN ARVOSTELUSTA
Työn arvostelussa otetaan huomioon
seuraavat asiat:
- ohjelman laajuus ja vaikeus,
(1-2 p) (Älä tee turhan laajaa!)
- 1 p toteuttaa annetun tehtävän kohtalaisesti
- 2 p toteuttaa annetun erittäin hyvin
- käytetty ratkaisuperiaate ('Tämän miettimiseen kannattaa käyttää hieman aikaa.')
(1- 2 p)
- selkeä, järkevä,
toimiva tietorakenneratkaisu
- mielekäs jako
käynnistysyksiköiksi
- ohjelmanrakenne eli ohjelman jako
funktioihin, C-piirteiden järkevä, tehokas käyttö
(1-3 p)
- ohjelman jako funktioihin (0-1 p)
- C-piirteiden käyttö (0-2)
(järkevyys, tehokkuus) ja yleensä hyvä
ohjelmointityyli
- ohjelman ulkonäkö ja
luettavuus (kommentointi, muuttujien nimet, sisennykset,
yhtenäisyys) (0-1 p)
- ohjelman testaus ja testitilanteet
(0-1 p)
- käyttöohje (1 p)
Pistemäärät ovat
ohjeellisia. Erityyppisissä töissä voidaan niistä
hieman poiketa.
Ohjelma palautetaan korjattavaksi,
jos
- ohjelma ei käänny
- ohjelma toiminta katkeaa vakavaan
suoritusaikaiseen virheeseen
- ohjelma ei lainkaan suorita sitä,
mitä sen pitäisi tehdä
- dokumentointi puuttuu kokonaan
- ohjelman testikuvaus puuttuu
kokonaan
- ohjelmassa ei ole lainkaan
funktioita
- ohjelman arvostelussa sen
yhteispistemäärä on pienempi kuin 3.
(Harjoitustyöstä vaaditaan 3 pistettä kurssin
läpipääsyyn.)
- Ohjelmasta puuttuu jokin vaadittu piirre: linkitetty tietorakenne, tiedostoston käsittely tai komentoriviparametrin käyttö.
- Ohjelmaa ei ole jaettu käännösyksiköihin
- Makefile puuttuu
Palaute harjoitustyöstä
Palaute harjoitustyöstä
annetaan moodlen kautta. Tarvittaessa voidaan
myös käyttää tapaamista ja suullista
palautetta, etenkin, jos lisäohjaus on tarpeen.
Tarkastukseen jätetty
C-harjoitustyö annetaan korjattavaksi korkeintaan yhden
kerran. Korjausaikaa on 1-2 viikkoa. Korjauksen jälkeen työ
joko hyväksytään tai lopullisesti hylätään.
Jos työ joudutaan hylkäämään,
niin myös kokeessa saadut pisteet mitätöityvät.
Onnea työlle!