University of Helsinki Department of Computer Science  

Viimeksi päivitetty 25.10.2000

Helsingin yliopisto
Tietojenkäsittelytieteen laitos

58127-1 C-ohjelmointi - Syksy 1999

Kurssilla opitaan ohjelmoimaan ANSI-standardin mukaisella C-kielellä. Esitietoina edellytetään ohjelmointitaito esimerkiksi Johdatus ohjelmointiin -kurssin laajuudessa.  Ilman esitietojakin voi kurssin suorittaa, mutta se vaatii enemmän työtä.

Foreign students can find more information from here.

o Kurssin loppukokeet ja niiden tulokset

Omia vastauspapereitaan voi käydä tutkimassa Liisa Marttisen vastaanottoaikoina.

  • 29.09.2000
  • Kokeen tulokset tulokset ovat laitoksen ilmoitustaululla ja myös luettavissa laitoksen intranetistä. Selain kysyy laitoksen uuden politiikan mukaisesti laitoksen myöntämää tietojenkäsittelytieeen laitoksen atk-järjestelmien käyttäjätunnusta ja salasanaa (Demo-tunnus ei kelpaa).
  • 18.08.2000
    • Koetehtävät
    • Ratkaisuja ja kokeen arvostelu.
    • Kokeen tulokset tulokset ovat laitoksen ilmoitustaululla ja myös luettavissa laitoksen intranetistä. Selain kysyy laitoksen uuden politiikan mukaisesti laitoksen myöntämää tietojenkäsittelytieeen laitoksen atk-järjestelmien käyttäjätunnusta ja salasanaa (Demo-tunnus ei kelpaa).
  • 21.01.2000

o Ilmoitusasioita syksyn 1999 kurssille

  • Kokeen 'valitustilaisuus' on perjantaina 10.12. klo 11-12 salissa C439.
  • Kokeen 9.11.99 tulokset tulokset ovat nähtävissä laitoksen ilmoitustaululla.
  • Kokeen arvostelusta .

    Kurssikirjanpitoon kullekin opiskelijalle merkityt harjoitustehtävät ja hyväksytyt harjoitustyöt voit tarkistaa täältä.

  • Kurssilla käsiteltyjä esimerkkiohjelmia löytyy osoitteesta http://www.cs.helsinki.fi/u/marttine/c/esimerkkeja.

  • OHJELMIEN TESTAUKSESTA
    Yksinkertaisimmillaan C-ohjelmien toimintaa voi tutkia laittamalla sopiviin kohtiin ylimääräisiä printf-lauseita, jotka tulostavat 'epäilyttävien' muuttujien arvoja.

    C:n standardikirjasto tarjoaa assert-makron (void assert(int testilauseke)), jolla voidaan testata ohjelman toimintaa. Assert-lauseita liitetään ohjelmaan paljolti samalla tavoin kuin ylimääräisiä printf-lauseita.

      #include 
      .....
      
      assert(i<10);
      assert(j!=0);
      .....
    
    Jos testin tulos on 0, assert kirjoittaa stderr:lle diagnostiikkaviestin ja lopettaa ohjelman.
     
    assert.c:11: failed assertion `i<10'
    IOT trap/Abort
    
    Jos makronimi NDEBUG on määritelty, assert-lauseet eivät tee mitään.

    Ohjelman tutkimiseen voidaan käyttää myös tätä varten tehtyjä 'debugger'-ohjelmia, esimerkiksi GDB:tä. Lisätietoja GDB:stä löytyy verkosta runsaasti. Tässä esimerkiksi:

    
    lyhyt ohje, jolla pääsee alkuun 
    
     
    kattava selvitys GDB:sta
     

  •      - harjoituksissa 5. käytettävissä ovat
             - osoittimet: merkkiosoittimet, osoitintaulukot, funktiosoittimet
             - moniulotteiset taulukot
             - komentorivin argumentit
             - myös kurssimapissa liitteessä 1 Standardikirjastot esitellyt 
               kirjastofunktiot ja Lokin monisteen kirjastofunktiot
               mikäli tehtävässä ei  erikseen  kielletä kirjastofunktioiden käyttöä
               
       
    
  • Aikaisempiin harjoitustehtävien korjaukset ja selvennykset on lisätty verkossa oleviin tehtäväpapereihin.

  • VIERAILUT PERJANTAIN RYHMÄSSÄ SALLITTUJA VAIN ERITYISLUVALLA!

  • HARJOITUSTÖIDEN AIHEET
  • on nyt julkistettu.
  • Tarkemmat ohjeet harjoitustyön tekemiseen ja palauttamiseenselvitetään harjoitustyöohjeessa.
  • Harjoitustyön viimeinen palautuspäivä on perjantaina 29.10.

o Ilmoittautuminen

Kurssille ilmoittaudutaan kontti-tietokoneessa olevalla tkt_ilmo -järjestelmällä. Ilmoittauminen alkaa 1.9.1999 klo 9. Ilmoittautumisjärjestelmää voi käyttää mm. salissa D423 - tarkat ohjeet ovat salissa. Kurssille ilmoittaudutaan ilmoittautumalla sopivaan laskuharjoitusryhmään. Poista ilmoittautumisesi, jos se osoittautuu turhaksi - älä varaa kanssaopiskelijaltasi paikkaa.

o Luennot

o Harjoitukset 20.9. - 29.10.

Kursilla harjoituskertoja on kaikkiaan kuusi. Kullakin harjoituskerralla on yleensä kuusi harjoitustehtävää.

Harjoitusryhmät: 20.9-22.10

      1. Tuntiop. Lauri Alanko                     TI  8-10 B450
      2. Leht.    Liisa Marttinen                  TI 12-14 A319 (ryhmän keskustelukieli osin englanti!)
      3. Tuntiop. Jaakko Kyrö                      TI 14-16 A318
      4. Tuntiop. Jaakko Kyrö                      TI 16-18 A318
      5. Tuntiop. Lauri Alanko                     KE 10-12 B453
      6. Tuntiop. Mikko Rauhala                    KE 12-14 C454
      7. Tuntiop. Jaakko Kyrö                      KE 14-16 B453
      8. Tuntiop. Lauri Alanko                     TO 12-14 B450
      9. Tuntiop. Mikko Rauhala                    TO 14-16 B453
     10. Leht.    Liisa Marttinen                  PE 10-12 A319

o Harjoitustehtävät

(Jos harjoituskerrasta ei ole linkkiä eteenpäin, niin tehtävät eivät ole vielä jaossa)

20.-24.9. Harjoitus 1 Exercise 1
27.9-1.10. Harjoitus 2 Exercise 2
4.-8.10. Harjoitus 3 Exercise 3
11.-15.10. Harjoitus 4 Exercise 4
18.-22.10. Harjoitus 5 Exercise 5
25.-29.10. Harjoitus 6 Exercise 6
Harjoitustehtävät jaetaan aina harjoitusta edeltävän viikon tiistain luennoilla. Sen jälkeen niitä saa kurssin lokerosta. Tehtävät voi myös kopioida kurssin kotisivulta tai kurssimapista. Lokero ja kurssimappi ovat salissa B413.

Harjoitukset ovat lähinnä ohjelmointitehtäviä, jotka tehdään tietokoneella eli vaadittu ohjelma kirjoitetaan jollain tekstieditorilla ja käännetään C-kääntäjällä, jotta varmistutaan ohjelman syntaktisesta oikeellisuudesta. Lopuksi ohjelma ajetaan tietokoneessa, jotta nähdään, toimiiko se halutulla tavalla.

Sopivin C-kääntäjä DOS- ja Windows-koneille lienee vapaasti imuroitava djgpp. Lisätietoja djgpp:tä ja sen asentamisesta löytyy runsaasti djgpp:n verkkosivulta http://www.delorie.com/djgpp/

Harjoituksista saa lisäpisteitä 0-12 pistettä riippuen tehtyjen tehtävien määrästä:

harj. pisteitä   tehtyjä tehtäviä
    0                   0
    1                  1-3
    2                  4-5
    3                  6-7
    4                  8-10
    5                 11-13
    6                 14-16
    7                 17-19
    8                 20-22
    9                 23-25
   10                 26-28
   11                 29-31
   12                 32-36              
Harjoituksissa kukin opiskelija merkitsee tekemänsä tehtävät ja pyydettäessä esittää oman ratkaisunsa. Merkittyjen tehtävien ratkaisujen tulee olla toimivia ja kohtalaisen oikeita, mutta ei välttämättä täydellisiä.

Vaikka kurssin harjoitukset eivät ole pakollisia, harjoitustehtävien tekeminen ja harjoituksiin osallistuminen on lähes välttämätöntä kaikille niille, jotka tällä kurssilla haluavat oppia C-ohjelmointia. Ohjelmointitaitoon ei ole mitään oikotietä, ohjelmoimaan oppii vain ohjelmoimalla.

Jos jo osaa sujuvasti ohjelmoida C-kielellä ja haluaa kurssista vain opintoviikot, niin harjoituksiin osallistuminen voi olla turhaa.

o Harjoitustyö

Kurssiin kuuluu pakollinen harjoitustyö. Harjoitustyö arvostellaan asteikolla hyväksytty/hylätty.   Hylättyä harjoitustyötä voi yrittää korjata kurssin aikataulun puitteissa.

Tarkemmat ohjeet harjoitustyön tekemiseen ja palauttamiseenselvitetään harjoitustyöohjeessa. Kurssin kokeeseen voivat osallistua vain harjoitustyön hyväksytysti tehneet.

Kaikilla on syytä olla käyttäjätunnus UNIX-tietokoneeseen. Harjoitustyö tehdään tietokoneella.

Harjoitustyöaiheet

o Kurssin suoritus

Kurssi voidaan suorittaa kahdella eri tavalla:

a) otetaan huomioon kurssilla kerätyt harjoituspisteet

    tentti          max 50 pistettä (tentistä saatava vähintään 25 pistettä)
    harjoitukset    max 12 pistettä
    harjoitustyö    saatava hyväksyttyä, ei pisteitä
    yhteensä        max 60 pistettä (+2 ylimääräistä pistettä)
b) kurssin koe tulkitaan suoraan loppukokeeksi
    koe             max  60 pistettä 
    harjoitustyö    saatava hyväksyttyä, ei pisteitä
    yhteensä        max 60 pistettä 
  • Kaikkien kurssin osallistujien on ilmoittauduttava kurssille eli ilmoittauduttava johonkin harjoitusryhmään. Harjoitusryhmän ohjaaja tarkastaa ryhmäläistensä harjoitustyöt. Häneltä saa myös apua ja ohjeita harjoitustyön tekemisessä.
  • Kurssin koe on tiistaina 9.11. klo 12-16 sali 1 päärakennus . Kokeeseen saavat osallistua vain ne, joiden harjoitustyö on hyväksytty.

  • Läpipääsyraja on 30 pistettä ja 51:llä pisteellä saa 3/3. Jos opiskelija on osallistunut harjoituksiin, hänelle tulee automaattisesti arvosanaksi kahdesta suoritusvaihtoehdoista parempi.

  • Kurssin liittyvät loppukokeet ovat vuoden 2000 puolella. Yksi koe kevätlukukaudella, toinen kesällä ja kolmas syksyllä. Tarkemmat ajat ilmoitetaan myöhemmin. Loppukokeeseen saa osallistua, kun harjoitustyö on hyväksytty. Laskuharjoituspisteet eivät periydy loppukokeeseen.

o Kurssimateriaali

  • Luennot noudattelevat kirjaa:

  • Kernighan B.W. & Ritchie D.M.: The C Programming Language, 2nd ed., Prentice Hall 1988.
  • Mikä tahansa ANSI-C oppikirja kelpaa lukemistoksi.
  • Syksyn 1996 luentokalvojen kopiot (Heikki Lokki: C-ohjelmointi) ovat myynnissä laitoksen monistemyynnissä.
  • Luentokalvojen kopiot ilmestyvät mahdollista kopiointia varten kurssimappiin huoneeseen A412 viimeistään luennon jälkeen.


Liisa Marttinen (Liisa.Marttinen@cs.Helsinki.FI)