C-kieli

C-kieli on julkaistu 1970 Yhdysvaltalaisen Bell puhelinyhtiön tutkimusinsinöörien toimesta kehitettynä, joka oli vaihe, jotta käyttöjärjestelmä voitaisiin ohjelmoida. UNIX ja myös Linux on ohjelmoitu C-kielellä.

C-kielessä on joitain olio-ohjelmointikielistä muistuttavia piirteitä, vaikka seei täysiverinen olio-kieli olekaan. C-ohjelmointikielen ohjelmointiparadigma on proseduraalisen ohjelmoinnin ja funktionaalisen ohjelmoinnin välimaastossa.

Näkemykseni siitä, miten saa komentokehoitteen parametrisyötteestä minimimäärällä koodia tulostettua käyttäjän antaman luvun kertoman.

Suora linkki .c -koodiini ja käännettyyn .exe -tiedostoon on tämän linkin takana.

Oma historiani C-kieleen liittyen

Tietojenkäsittely-opinnoissani elämäni aikana ei ole ollut lainkaan kursseja C-kieleen liittyen. Käytin jonkin verran aikaani kesällä 2019 yksinäisinä kesäöinä C-kieleen liittyvän kirjallisuuden parissa, ja siitä lähtien olen ollut sisällä C-kielen maailmassa. Tosin osoittimet ja pointterit jäivät vähän vähemmälle huomiolle, vaikka ne ovat oleellisen tärkeitä ymmärtää, jos mielii C-kielellä jotain ohjelmoida.

Olen kirjoittanut muutamia artikkeleita Tietokone-blogiini liittyen C-kielen oliokieliä muistuttavista ominaisuuksista myös kesällä 2019.

Pointterit ja osoittimet

Osoittimet C-kielen opiskeluvaiheessa saattavat tuntua vaikeilta aluksi. Moni kokenutkin ohjelmoija voi saada vietettyä monta unetonta yötä, jos on hallittavana laajempikin ohjelmisto-kokonaisuus nimenomaan näiden osoittimien ja pointtereiden kanssa.

Jos ajattelee pseudotasolla tietokoneen muistia taulukkona, jossa yksi alkio edustaa tietokoneen muistipaikkaa, yksinkertaisimmillaan osoittimet toimivat näin, vähän kuin mikro-ohjelmoinnissa, konekielissä suora viittausmenetelmä. Itse Paintilla piirtämäni kuva alla:

Kuvassa tietokoneen muistipaikassa 66 sijaitsee fyysisesti primaaritietotyypin int sijaitsema fyysinen kokonaislukuarvo ”7”, ja muistipaikassa sijaitsee osoitinmuuttuja, jossa viitataan muistipaikkaan 66. Näin osoitinmuuttujan tulostamisella esimerkiksi saadaan ulostuloksi arvo 7.

Netistä löytyy myös suomenkielinen esitys Osoittimista ja Pointtereista C-ielessä Wikibooks-artikkelikokoelmassa. Linkki tässä

Lähdekoodin kääntäminen ja tulkkaus (debuggaus)

Ohjelman lähdekoodi (source code) voidaan kirjoittaa millä tahansa tavallisella tekstieditorilla, Windows -ympäristössä vaikka Notepad++ -tekstieditorilla, vaikka Unix-klooni Linux on tehty kuin ohjelmoijille.

Kääntäjät

C-kääntääjiä on sekä kaupallisia, että avoimen lähdekoodin vapaasti saatavilla olevia kääntäjiä myös Windows-ympäristöön. Itse suosin gcc-kääntäjää. Kääntäjäohjelmistojen bin-alihakemisto kannattaa asettaa Windowsin asetuksista ympäristömuuttujiin, jotta tiedostoja ei tarvitse joka projektihakemistoon kopioida erikseen. Kirjoitin Tietokoneblogiini artikkelin havainnollistavien kuvien kera 26.7.2018 liittyen Java-ympäristömuuttujan asettamiseen Windows 10-järjestelmässä, joka on luettavissa tämän linkin kautta. Gcc-kääntäjä asetetaan samalla tavalla.

Ohjelman lähdekoodi siis tulee kääntää tai omia kirjastoja laadittaessa objektitiedostoiksi, jotka sitten lopulta käännetään yhdeksi ohjelmaksi myöhempää suoritusta varten.

Tulkkaus tai debuggaus

Tulkin ja kääntäjän ero on siinä, että kääntäjä kääntää ohjelman kokonaisuudessaan kertaalleen, kun taas ohjelman lähdekoodin tulkki kääntää rivi kerrallaan koodia, joka voikin olla hyödyksi debuggaus-operaatiossa. Siinä asetetaan koodiriveille startpoint ja endpoint, jonka välisen ohjelmakoodin sitten tulkille lähetetään tulkittavaksi. Debuggaus -vaiheessa voi ohjelmaa ajaa rivi kerrallaan, jolloin pystyy tarkastelemaan muuttujien käyttäytymistä, ja mitä arvoja ne mahdollisesti ajon aikana omaavat esimerkiksi.

Omien C-kirjastojen laadinta

Jos tykkää laatia oman kirjaston, jota sitten voi hyödyntää joko omassa ohjelmassa, tai jossain muualla, kirjaston lähdekoodit sijoitetaan objektitiedostoihin, jotka sitten käännetään yhdeksi tiedostoksi, ja sisällytetään sitten omaan ohjelmaan <include omaKirjasto.h> -ohjelman alussa.