OHJEITA C-OHJELMOINNIN HARJOITUSTYÖTÄ VARTEN (Syksy 2007)
YLEISTÄ
C-ohjelmointikurssin suoritus edellyttää harjoitustyön tekemistä.
Vain harjoitustyön palauttanut saa osallistua erilliskuulusteluun.
Syksyn 2007 kurssikokeeseen voi osallistua vaikka ei olisi vielä
palauttanut harjoitustyötä. Kurssista ei kuitenkaan voi saada
suoritusta, jos ei tee harjoitustyötä. Harjoitustyö on palautettava
ma 5.11.2007 mennessä.
YKSILÖTYÖ
Harjoitustyö on yksilötyö eli jokainen tekee työn itsenäisesti.
Keskustella toki voi muiden kurssilla olevien kanssa erilaisista
ratkaisuista ym., mutta töiden tulee olla itsenäisesti tehtyjä eikä kopioituja.
TYÖN ALOITUS JA TYÖNOHJAUSTILAISUUDET
Valitse yksi tehtävälistan ohjelmointitehtävä
ja toteuta se ANSI-C -kielellä.
Ilmoita valitsemasi ohjelmointyön aihe Päivi Kuupppelomäelle
(paivi.kuuppelomaki@cs.helsinki.fi)
pe 12.10 mennessä.
Tiedot valituista aiheista tulevat kurssin sivulle.
Työnohjaustilaisuuksia järjestetään neljä kertaa.
Ohjausta antaa Tomi Jylhä-Ollila.
- ma 8.10 klo 12-14 salissa CK110
- ma 15.10 klo 12-14 salissa CK110
- to 1.11 klo 10-12 salissa CK110
- pe 2.11 klo 14-16 salissa CK110
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,...)
- 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 ja -Wall
ilman varoituksia.
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öohjaustilaisuuksissa. 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
-
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 5.11.
Työt jätetään tarkastettavaksi sähköpostitse
Päivi Kuuppelomäelle
(Paivi.Kuuppelomaki@cs.helsinki.fi)
ja Tomi Jylhä-Ollilalle (tomi.jylha-ollila@helsinki.fi)
Sanalaskuri palautetaan Tomi Jylhä-Ollilalle ja muut työt Päivi Kuuppelomäelle.
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
Tar-tiedosto
talletetaan omalle kotisivulle.
Halutessaan tar-tiedoston voi myös
lähettää pakattuna tgz-tai gz-tiedostona.
(Ohjeita tar-tiedoston tekemiseen ja pakkaamiseen)
Tarkastajalle lähetetään
sähköpostitse vain linkki talletettuun
tar-tiedostoon.
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 normaalisti sähköpostitse, 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!