C-kieli‎ > ‎

Motivaatio

Miltei kaikissa vähänkin monimutkaisimmissa laitteissa on toimintaa ohjaava logiikka, joka päättelee miten laitteen tulee toimia eri tilanteissa. Tätä logiikkaa sanotaan ohjelmaksi. Se on perättäisten ja haarautuvien toimintojen sarja, joka määrää laitteen käyttäytymisen. Laitteiden ohjaus voidaan totetuttaa näennäisesti monella eri tavalla, mutta taustalla on aina jonkin asteinen tietokone.  Kun tietokone ei näy käyttäjälle puhutaan sulautetusta ohjauksesta.

Ohjelma jakaantuu tyypillisesti pääohjelmaan ja funktioihin (pääohjelmakin on funktio). Ohjelma alkaa aina pääohjelman alusta ja kun pääohjelma päättyy, päättyy myös koko ohjelma. Pääohjelmasta kutsutaan aliohjelmia eli funktioita. Tyypillisesti aliohjelmat tekevät kaiken työn ja pääohjelma pitää ohjelman käynnissä. Yksittäinen aliohjelma ratkaisee jonkin probleeman. Aliohjelman tulisi olla kooltaan kohtuullisen lyhyt, jotta se olisi ymmäretettävissä.
                            
Ohjelmakokonaisuutta kutsutaan prosessiksi. Yksinkertaisimmillaan tietokoneessa on yksi prosessi, joka ohjaa esimerkiksi auton ABS-jarruja. Useimmiten tietokoneessa on kuitenkin useita prosesseja yhtä aikaa käynnissä. Esimerkiksi käyttöjärjestelmä sisältää monta erillistä ohjelmaa eli prosessia. Periaatteellisia lähestymistapoja ohjelmointiin on kaksi, joista ensimmäinen on proseduraalinen ja toinen olioita käyttävä tapa. Proseduraalisessa, eli toiminnollisessa tavassa tieto ja funktiot on eroteltu toisistaan ja ohjelman suunnittelu lähtee tehtävistä, joita ohjelman tulee tehdä. Olio-ohjelmoinnissa suunnitellaan ensin olioille mallit eli luokat. Olio on toiminnot ja tieto yhdessä. Luokkaa voisi verrata vaikkapa piparkakkumuottiin ja piparkakkua piparkakkumuotin luomaan olioon.

Samoin ihmisen DNA:ta voidaan ajatella luokkana, ja ihmistä DNA:n määrittelemänä oliona. Suurissa ohjelmissa olioperustainen lähestymistapa on yleistynyt viime vuosina ehkä siksi, että sillä on helppo mallintaa monimutkaisia tapahtumaohjattuja ongelmia.

Ohjelmoinnin tarve on viime vuosina kasvanut räjähdysmäisesti. Syynä tähän on osaltaan pc:n tuleminen jokaisen työkaluksi sekä toisaalta sulautettujen järjestelmien yleistyminen esimerkiksi kodinkoneissa, autoissa jne. Koneautomaatiossa vielä kymmenen vuotta siten riitti ohjelmoitavan logiikan ohjelmoinititaito. Tänään logiikkaohjelmat siirtyvät yhä useammin osaksi tietokoneohjausta ja liittyvät hyvinkin monimutkaiseen tietojärjestelmään. Tämänkaltaisten sovellusten käyttöönotto ja ohjelmointi vaativat hyvää käyttöjärjestelmä- ja ohjelmointiosaamista.


 Yksinkertaisia esimerkkejä motivaation herättämiseen


Yksinkertaisen C-ohjelman tekeminen on suhteellisen helppoa. Alla olevan ohjelman voi tehdä Windows ympäristössä esimerkiksi VisualC:llä. 

#include <stdio.h> //sisällytetään ohjelmaan standardi input output tiedostossa esitellyt funktiot esim. printf
#include <conio.h> //

int main()//pääohjelma alkaa tästä
{
    printf("Eka ohjelma");//tulostettan tekstiä ruudulle
    getch();//odotetaan näppäimen painallusta
    return 1;//palautetaan ohjelmasta arvo 1
}//pääohjelma loppuu


Toisessa ohjelmassa kommunikoidaan jo käyttäjän kanssa.

#include <stdio.h>
#include <conio.h>

int main()
{
    char JokinMerkki;//esitellään muuttuja, joka voi tallettaa näppäimisöltä annettavan merkin
    printf("anna jokin merkki: ");
    JokinMerkki=getch();//kysytään merkki näppäimistöltä ja talletetaan se muuttujaan
    printf("Antamasi merkki oli %c",JokinMerkki );//tulostetaan annettu merkki %c:n osoittamaan kohtaan
    getch();
    return 1;
}


Kolmannessa esimerkissä käytämme jo kahta aliohjelmaa ja julkista muuttujaa.

#include <stdio.h>
#include <conio.h>

char JokinMerkki;//esitellään muuttuja, nyt julkisena, jotta kaikki funktiot voivat käyttää sitä

void KysyMerkki()
{
    printf("anna jokin merkki: ");
    JokinMerkki=getch();//kysytään merkki näppäimistöltä ja talletetaan se muuttujaan
}

void TulostaMerkki()
{
        printf("Antamasi merkki oli %c",JokinMerkki );//tulostetaan annettu merkki %c:n osoittamaan kohtaan
}

int main()
{
    KysyMerkki();
    TulostaMerkki();   
    getch();
    return 1;
}



Neljännessä esimerkissä esittelemme muuttujan paikallisena, jolloin muuttuja näkyy vain sen funktion sisällä, jossa se on esitelty. Lisäksi opettelemme return lauseen  käyttöä sekä arvoparametrien lähetystä funktiokutsun mukana.

#include <stdio.h>
#include <conio.h>

char KysyMerkki()//funktion tyyppi on nyt char ja funktio paluttaa nyt kutsujalle näppäimistöltä annetun merkin
{
    printf("anna jokin merkki: ");
    return getch();//kysytään merkki näppäimistöltä ja palutetaan se funktiosta return lauseella
}

void TulostaMerkki(char Merkki)
{
        printf("Antamasi merkki oli %c",Merkki );//tulostetaan annettu merkki %c:n osoittamaan kohtaan
}

int main()
{
    char JokinMerkki;//esitellään muuttuja, nyt paikallisena, nyt muutuja näkyy vain tässä funktiossa
    JokinMerkki=KysyMerkki();//funktio palauttaa arvonsa muuttujaan JokinMerkki
    TulostaMerkki(JokinMerkki);//Funktio saa parametrinaan JokinMerkki muuttujan arvon   
    getch();
    return 1;
}

Toivottavasti edellä olevat esimerkit auttoivat herättämään kipinän opetella lisää C-kieltä.

Takaisin C-kielen hakemistoon
Comments