Helsingin yliopisto Tietojenkäsittelytieteen laitos
 

Tietojenkäsittelytieteen laitos

Tietoa laitoksesta:

 
Helsingin yliopisto / Tietojenkäsittelytieteen laitos / Copyright © 2000 Jan Lindström. Tämän oppimateriaalin käyttö on sallittu vain yksityishenkilöille opiskelutarkoituksissa. Materiaalin käyttö muihin tarkoituksiin, kuten kaupallisilla tai muilla kursseilla, on kielletty.

58127-1 C-ohjelmointi - Syksy 2001


Sisällys:

1 Johdanto

C on yleiskäyttöinen ohjemointikieli, jota käytetään erilaisissa ympäristöissä pienistä tietokoneista suuriin järjestelmiin. C on matalan tason kieli, johon ei kuulu esim. I/O ja merkkijonojen käsittely. ANSI-standardin mukaisen C-kääntäjän mukana tulee standardikirjastot, joista saadaan funktiot mm. merkkijonoille. C-ohjelma rakentuu kahdesta osasta: joukosta lähdekooditiedostoja (päättenä .c) ja joukosta alustustiedostoja (päätteenä .h). C: tärkeimpiin ominaisuuksiin kuuluu:

C-kielen huonoja puolia on mahdollisuus kirjoittaa täysin törkeän epäselvää koodia, esimerkiksi:
#define	DIT	(
#define	DAH	)
#define	__DAH	++
#define DITDAH	*
#define	DAHDIT	for
#define	DIT_DAH	malloc
#define DAH_DIT	gets
#define	_DAHDIT	char
_DAHDIT _DAH_[]="ETIANMSURWDKGOHVFaLaPJBXCYZQb54a3d2f16g7c8a90l?e'b.s;i,d:"
;main			DIT			DAH{_DAHDIT
DITDAH			_DIT,DITDAH		DAH_,DITDAH DIT_,
DITDAH			_DIT_,DITDAH		DIT_DAH DIT
DAH,DITDAH		DAH_DIT DIT		DAH;DAHDIT
DIT _DIT=DIT_DAH	DIT 81			DAH,DIT_=_DIT
__DAH;_DIT==DAH_DIT	DIT _DIT		DAH;__DIT
DIT'\n'DAH DAH		DAHDIT DIT		DAH_=_DIT;DITDAH
DAH_;__DIT		DIT			DITDAH
_DIT_?_DAH DIT		DITDAH			DIT_ DAH:'?'DAH,__DIT
DIT' 'DAH,DAH_ __DAH	DAH DAHDIT		DIT
DITDAH			DIT_=2,_DIT_=_DAH_;	DITDAH _DIT_&&DIT
DITDAH _DIT_!=DIT	DITDAH DAH_>='a'?	DITDAH
DAH_&223:DITDAH		DAH_ DAH DAH;		DIT
DITDAH			DIT_ DAH __DAH,_DIT_	__DAH DAH
DITDAH DIT_+=		DIT DITDAH _DIT_>='a'?	DITDAH _DIT_-'a':0
DAH;}_DAH DIT DIT_	DAH{			__DIT DIT
DIT_>3?_DAH		DIT			 DIT_>>1 DAH:'\0'DAH;return
DIT_&1?'-':'.';}__DIT DIT			DIT_ DAH _DAHDIT
DIT_;{DIT void DAH write DIT			1,&DIT_,1 DAH;}

Suurin osa C-kielen syntaksista on käsitelty jo 581325-0 Ohjelmoinnin perusteet -kurssilla ja 581326-3 Java-ohjelmointi -kurssilla. Kyseisiä asioita ei tulla tällä kurssilla käymään läpi uudestaan. Voit kerrata ne esim. kurssikirjasta. Tällä kurssilla keskitytään niihin C-kielen piirteisiin, joita ei löydy Java-kielestä. Lisäksi kurssilla käsitellään dynaamista muistinkäyttöä, tietorakenteiden toteutusta ja kirjastojen laatimista C-kielellä. Seuraavassa on esitelty C-kielen tärkeimmät erot Java-kieleen:


2 Ensimmäinen C-ohjelma

Muodostamme C-ohjelman joka tulostaa päätteelle (stdout) tekstin Hyvin menee maailma!.

#include<stdio.h>

int main(void)
{
    printf("Hyvin menee maailma!\n");
    return 0;
}

Havaitsemme monta tuttua piirrettä Java-kielestä, mutta myös muutaman uuden piirteen. Ensinnäkin ohjelman alkuun kirjoitettu direktiivi #include<stdio.h> mahdollistaa tavallisimman syöttö- ja tulostuspakkauksen (stdio) käytön. Tämän direktiivin lisäksi ohjelma sisältää vain pääohjelman (main). Tulostaminen tapahtuu printf-funktiolla. Pääohjelman nimen tulee C-kielessä olla main. Nimen eteen kirjoitetaan funktion tyyppi (int) ja nimen perään sulkujen sisään argumenttien kuvaus. Tässä tapauksessa argumenttilistana on void, joka kertoo, että funktiolla ei ole argumentteja.



Jan Lindström (Jan.Lindstrom@cs.Helsinki.FI)