Laiteläheinen C-kieli osa 1 pva

Samankaltaiset tiedostot
Laiteläheinen C-kieli, hello.c

1. NetBeans-ohjelman asennus ja käyttöönotto pva

NetBeans asennus ja etäkäyttö C-kielen opiskeluun, Windows

NetBeans asennus ja etäkäyttö C-kielen opiskeluun, Linux

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

Osa. Listaus 2.1. HELLO.CPP esittelee C++ -ohjelman osat. 14: #include <iostream.h> 15: 16: int main() 17: {

5. HelloWorld-ohjelma 5.1

Raspin Geany-IDE:n etäkäyttö

Laiteläheinen C-kieli, mitä C-käännösprosessissa tapahtuu

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.

5. HelloWorld-ohjelma 5.1

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.

BlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä

TT00AA Ohjelmoinnin jatko (TT10S1ECD)

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille:

Punomo Tee itse -julkaisun tekeminen

6.3. AVR_rauta. EEPROM-muisti pva

TTY TKT-1110 Mikroprosessorit TKT. HEW-ohjeet ver 1.0

CEM DT-3353 Pihtimittari

1 Tivax siirto uuteen koneeseen

ASCII-taidetta. Intro: Python

JAKELUPISTE KÄYTTÖOHJE 2/6

Kieliversiointityökalu Java-ohjelmistoon. Ohje

Johdatus ohjelmointiin

Apuja ohjelmointiin» Yleisiä virheitä

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

Loppukurssin järjestelyt

4. Lausekielinen ohjelmointi 4.1

OHJE Jos Kelaimeen kirjautuminen ei onnistu Mac-koneella Sisällys

BL40A1810 Mikroprosessorit, harjoitus 1

Office ohjelmiston asennusohje

SUOMEN PANKKIYHDISTYS

Loppukurssin järjestelyt C:n edistyneet piirteet

Joomla pikaopas. Yksinkertainen opas, jossa neuvotaan esimerkkisivuston teko Joomla julkaisujärjestelmällä vaihe vaiheelta.

Kansion asetusten muuttaminen Windows 2000 käyttöjärjestelmässä Resurssienhallinnan kautta

5.6. C-kielen perusteet, osa 6/8, Taulukko , pva, kuvat jma

Ohjelma on tarkoitettu pankkiyhteysohjelmalla vastaanotettujen Finvoiceverkkolaskujen

INTERBASE 5.0 PÄIVITYS VERSIOON 5.6

4. Lausekielinen ohjelmointi 4.1

YH1b: Office365 II, verkko-opiskelu

Muuttujien määrittely

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

Kaakkois-Suomen Ammattikorkeakoulu Oy Mikkelin Ammattikorkeakoulu Oy Kymenlaakson Ammattikorkeakoulu Oy

Laiteläheinen C-kieli, yleistä

TIETOKONEEN ASETUKSILLA PARANNAT KÄYTETTÄVYYTTÄ

8. Näppäimistöltä lukeminen 8.1

Microsoft Outlook Web Access. Pikaohje sähköpostin peruskäyttöön

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Älä vielä sulje vanhoja

Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot

HP ProBook 430 G5 kannettavien käyttöönotto

Ohjelmointi 1 / syksy /20: IDE

Provet Pet ohjelmisto ja tulostus PDF-tiedostoon.

Pika-asennusohjeet Suomeksi

Ohjelmoinnin perusteet, syksy 2006

Simulaattorin asennus- ja käyttöohje

Ohjelmointi 1. Kumppanit

Hops-ohjaajan ohje Opiskelijan hopsit.

OpeOodi Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

TALLENNETAAN MUISTITIKULLE JA MUISTIKORTILLE

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Avaa ohjelma ja tarvittaessa Tiedosto -> Uusi kilpailutiedosto

Windows 10 käyttöjärjestelmän helppokäyttötoiminnot ja asetukset

Ohjeet asiakirjan lisäämiseen arkistoon

Webmailin käyttöohje. Ohjeen sisältö. Sähköpostin peruskäyttö. Lomavastaajan asettaminen sähköpostiin. Sähköpostin salasanan vaihtaminen

YH2: Office365 II, verkko-opiskelu

Tietorakenteet ja algoritmit

Tiedostojen lataaminen netistä ja asentaminen

Tietorakenteet ja algoritmit

AS C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

Opetussuunnitteluprosessi WebOodissa - OpasOodi

Sähköposti ja uutisryhmät

Java-kielen perusteet

Raspin Geany-IDE:n etäkäyttö Windows-ympäristössä

OHJE Jos Kelaimeen kirjautuminen ei onnistu Windows-koneilla

ASENNUSOHJEET INTERNET-ASENNUS. Navita Yritysmalli. YHTEYSTIEDOT Visma Solutions Oy Mannerheiminkatu LAPPEENRANTA Puh.

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Työsähköpostin sisällön siirto uuteen postijärjestelmään

Windows Server 2012 asentaminen ja käyttöönotto, Serverin pyörittämisen takia tarvitaan

Asennuksessa kannattaa käyttää asennusohjelman tarjoamia oletusarvoja.

1 Asentaminen. 2 Yleistä ja simuloinnin aloitus 12/

Olet tehnyt hyvän valinnan hankkiessasi kotimaisen StorageIT varmuuskopiointipalvelun.

1 www-sivujen teko opetuksessa

Moodle-oppimisympäristö

Harjoitus 3 Antti Hartikainen

Muistitikun liittäminen tietokoneeseen

JUnit ja EasyMock (TilaustenKäsittely)

Joonas Ruotsalainen GIT PIKAOPAS. Tutkielma 2011

Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen

Kuva: Ilpo Okkonen

1 Visma Econet Pro Arkistointi

Java-kielen perusteet

8. Näppäimistöltä lukeminen 8.1

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

SQL Buddy JAMK Labranet Wiki

Sen jälkeen Microsoft Office ja sen alta löytyy ohjelmat. Ensin käynnistä-valikosta kaikki ohjelmat

Transkriptio:

Laiteläheinen C-kieli osa 1 pva 12.7.2016 Osion sisältö Ohjelmoimaan oppii vain itse tekemällä Ensimmäinen projekti ja ensimmäinen ohjelma hello.c Oletus Sinulla on käytössäsi 1. GNU/Linux (Mint) pöytäkone tai kannettava, jossa oletuksena GCC kääntäjä valmiina, Windows ohjeet tulossa 2. NetBeans 8.1 IDE-C/C++ asennettuna ja toimintakuntoon konfiguroituna 3. Raspberry Pi 3, konfiguroituna 4. LAN, tietokoneet on kytketty omaan paikallisverkkoon Kerron tässä perusteellisesti miten toimitaan NetBeansissa kun luodaan projekti ja siihen koodia, jotta pääset IDE:n käyttöön nopeasti ja helposti. Kokeile rohkeasti, ohjelma eikä kone siitä hajoa. Ja ainahan voi vilkaista Help-napin taakse. Seuraavassa osassa (osa 2) kerron vain itse C-kieleen liittyvät asiat ja oletan että NetBeansin käyttö on hanskassa. Jos tarvetta, emailaa. Osoite löytyy Punomon sivuilta. Kenelle? - peruskoulun yläasteelle - lukioon - ammattioppilaitokseen - ammattikorkeakouluun - vakavaan harrastukseen - fiksujen eläkeläisten aivojumppaan Siis kaikille jotka haluavat liittää esineet internettiin IoT, Internet of Things Eli tehdä huomisen tietoyhteiskunnasta totta. Ohjelmoimaan oppii vain itse tekemällä Ohjelmoinnin opiskelu on kuin polkupyörällä ajoa, on hyvä saada ohjeita ja opastusta, on hyvä katsoa miten toiset ajavat erilaisilla pyörillä, mutta oikeasti opit ajamaan vasta kun tartut itse sarviin ja alat polkea. Nyt alamme perehtyä C-kielen perusteisiin siten, että pääset mahdollisimman nopeasti kirjoittamaan omia ohjelmia. Se on tehokkain ja mielenkiintoisin tapa oppia. Tämä nettijulkaisu keskittyy vain C-kielen perusasioihin, laiteläheisiin perusasioihin. Kielen hienoudet ja ominaisuudet, jotka on tarkoitettu isojen koneiden isojen ohjelmien kirjoittamiseen jätetään pois. Niitä ohjeita on netti pullollaan. 1

Code Ohjelman tekeminen alkaa lähdekoodista, source code. Se kirjoitetaan C-kielen kielioppisääntöjä noudattaen ja tallennetaan tavallisena ASCII-tekstinä tiedostoon. Lähdekoodista GCC-kääntäjä-ohjelma tekee objektitiedoston, object code, ja linkkeriohjelma, linker, yhdistää objektikoodin ja tarvittavat kirjastotiedostot ajettavaksi ohjelmatiedostoksi. Tutustu (edes alustavasti, myöhemmin perusteellisemmin) käännösprosessiin dokumentissa Mitä C-lähdekoodin kääntämisessä tapahtuu.pdf. ASCII-koodi (American Standard Code for Information Interchange ) on Yhdysvalloissa kehitetty ja yhteisesti maailmanlaajuiseen käyttöön sovittu tapa merkitä kirjaimet ja numerot 7- (standardi ASCII) tai 8-bitin (laajennettu ASCII) paketteina. PC-ympäristössä C-kielen opiskelun aloittavan ensimmäinen suuri haaste on ollut saada ohjelma tulostamaan kuvaruudulle teksti "Hello, World". Siitä on muodostunut kaikissa oppikirjoissa esiintyvä perinne. Niin mekin tehdään. C-ohjelman osat Jokaisessa C-kielisessä ohjelmassa esiintyvät samat peruselementit, olipa ohjelma PC:ssa ajettava iso koodi tai sulautetun järjestelmän pienen pieni koodi. Siis ohjelman rakenne on aina samanlainen, koko vain muuttuu. Tavallisesti ainakin seuraavat osat löytyvät: - kommentit - esikäsittelysäännöt - pääfunktio main() - muuttujat - ohjelmalauseet Ensimmäinen ohjelma hello.c /*********************************************** Project : eka File : hello.c Hardware : Raspberry Pi3 Software: gcc (Raspbian 4.9.2-10) 4.9.2 IDE : NetBeans 8.1 Date : 12.7.2016 Author : pva Comments : tulostaa näytölle tekstiä ************************************************/ #include <stdio.h> int main(void) { /* tulostetaan tekstiä näytölle */ printf("hello Raspi and World!\n"); return 0; } 2

Heti opiskelun alussa on tärkeää oppia oikeat työmenetelmät. Siispä sovitaan, että toimit näin: Jokainen ohjelmasi sisältää aluksi kommenttirivejä, joissa on vähintään seuraavat tiedot ohjelmasta: - projektin ja tiedoston (siis ohjelman) nimi, - mille raudalle, hardware, koodi on kirjoitettu - millä C-kääntäjällä lähdekoodi on käännetty - päiväys, milloin ohjelma tallennettu/muutettu, - tekijän nimi tai nimilyhenne - lyhyt kuvaus mitä ohjelma tekee Näin omaksut heti oikean tavan tehdä ohjelmia ja tulet - muut ohjelmoijat etenkin - arvostamaan sitä myöhemmin, kun harrastuksesi, toivon mukaan, muuttuu ammatiksi. Ensimmäiset rivit ohjelmassamme sisältävät huomautuksia, kommentteja. Huomautukset ovat vain Sinulle itselle, jotta ymmärtäisit vielä huomennakin mitä ohjelma tekee. Niin ja tietysti toisille ohjelmoijille, heidänkin tulee kyetä tulkitsemaan koodia oikein ja sitä kautta ymmärtämään ohjelman toiminta. Kommentteja kannattaa käyttää sopivassa määrin, ainakin alussa mieluummin liikaa kuin liian vähän. Itsestäänselvyyksiä ei tietenkään kirjata. Kommentit tulee kirjoittaa samaan aikaan kuin itse ohjelmakoodi, jotta kaikki oleellinen tulisi kerrottua silloin kun se vielä on muistissa (oman pääsi muistissa). Kommentteja voidaan määrittää kahdella eri tavalla: // kommentti - kaksi kauttaviivaa kertoo c-kääntäjälle, että koko rivi tulee ohittaa, siis ei huomioida. Tämä tapa tulee C++-ohjelmasta, mutta se toimii myös C-kääntäjä-ympäristössä (C99). Käytä tätä yhden rivin kommentteihin. /* kommentti */ - on C-kielen alkuperäinen (ISO C90 = ANSI C 89) merkintä. Käytä tätä tapaa, jos kommentti on pidempi kuin yksi rivi. Esikäsittelysäännöt, direktiivit, directives Lisäämällä #include-rivi, kerrotaan esikääntäjälle (ei siis varsinaiselle kääntäjälle) mikä ohjetiedosto liitetään ohjelmaan mukaan. Tämä tiedosto, stdio.h (Standard Input/Output) sisältää normioidun osan kääntäjäpaketista, tässä tapauksessa ohjeet miten printf-funktiossa tulostetaan merkit näytölle (yleisesti tiedosto sisältää ohjeet näppäimistön ja näytön ohjaamisesta, input/output). Näin koodista tulee yksinkertaista. Kirjastotiedosto on koodivarasto, joka helpottaa meidän työtämme ja jota ilman ohjelma ei toimi. Näitä hiidereitä kuuluu ANSI-C-normin kirjastoon kymmenittäin. Risuaita #-käskyt eivät ole mukana kääntäjälle menevässä koodissa, sillä en eivät ole ohjelmakoodia, vaan ohjetekstiä esikääntäjälle. Hieman yksinkertaistaen: #include on leikkaa ja liimaa -toiminto. Se hakee tiedoston sisällön ja upottaa sen siihen kohtaan, jossa #include-rivi koodissa on. 3

Kulmat, brockets, < > kertovat, että tiedosto on talletettu oletuksena /usr/includehakemistoon muiden headereitten joukkoon. Jos tiedosto olisi talletettu samaan kansioon kuin koodi, se tulee ympäröidä with double quotes. Sellainenkin malli tulee vielä. Header-tiedoston tarkoitus on koota yhteen paikkaan muuttujat ja niiden funktioiden esittelyt jotka ovat muidenkin ohjelmamoduulien käytössä. Kun ohjelma on pieni, niitä ei tarvita, siis kirjastotiedostoja lukuunottamatta. Kun ohjelmasi kasvavat monia moduuleita käsittäviksi, silloin niitten merkitys tulee tärkeäksi. Matkan varrella headereista lisää. *.h, oikeaoppisessa header-tiedostossa ei ole ajokelpoista koodia. C-kielen ohjelmissa headereissa - määritetään vakioita - määritetään makroja - esitellään ohjelmassa käytettävät funktiot, c-tiedostot, yms. Funktio ja muuttuja C-kielen peruskäsitteitä ovat funktio ja muuttuja. Muuttujiin tallennetaan käsiteltäviä tietoja. Funktio sisältää komentolauseita, jotka ovat ohjeita tietokoneelle. Tietokone toimii näiden ohjeiden, käskyjen mukaan. Kun käytetään käyttöjärjestelmää, se kutsuu aina main()-funktiota, josta ohjelma alkaa/käynnistyy. Kääntäjäohjelma tunnistaa nimen funktioksi nimeä välittömästi seuraavista kaarisulkeista (). Funktioita tulee olla vähintään yksi, nimittäin pääfunktio main(). Miksi main-funktion tyyppi on int? Funktion tyyppi kertoo sen palauttaman arvon tyypin, kuten opit perusteellisesti myöhemmin. Tavallisesti sellaisen funktion tyypiksi, joka ei palauta arvoa, laitetaan void, tyhjä. Kääntäjä olettaa main-funktion tyypin olevan int, koska se palauttaa tietoa käyttöjärjestelmälle. Funktion nimirivillä olevien kaarisulkeiden väliin kirjoitetaan funktion parametrit, tässä vain määritys void, tyhjä, eli ei parametreja. Aaltosulkeet {} rajoittavat itse funktion rungon. { on funktion koodilohkon alkumerkki ja } on loppumerkki. Kaikki käskyt, tiedot, määritykset, yms. kirjoitetaan aaltosulkeiden väliin. printf(); funktion kutsu, kaarisulkeiden välissä on lainausmerkkien ympäröimänä tulostettava teksti. Funktio on määritelty stdio.h headerissa. Ohjelma kertoo loppuessaan onnistumisestaan. Siksi tyyppinsä mukaisesti mainfunktio palauttaa kokonaisluvun (int). Yleensä 0 = onnistui, jos luku > 0 = epäonnistui Kun olet pidemmällä avr-gcc-kääntimen opinnoissa, voit käydä tutkimassa asiaan tarkemmin dokumentissa C-lähdekoodin kääntäminen.pdf. 4

Töihin NetBeansin käyttöohje:http://punomo.npn.fi/teeitse/netbeans-asennus-jakayttoonotto/ ja sieltä avautuvasta pdf-tiedostosta kohta: Ensimmäinen projekti. Avaa se aina ohjelmien kehityksessä, kunnes homma alkaa käydä ilman ohjetta. Käynnistä NetBeans. Ensin pitää luoda projekti ja kirjoittaa sekä tallettaa ensimmäinen C-kielinen ohjelma. Annetaan projektille nimeksi eka. NetBeansin eräs hyvä puoli on se, että se tuo kaikki projektiin kuuluvat tiedostot (hakemistopuussa) mukavasti esille. Projektin nimi Lähdekoodin nimi Sitten kirjoitetaan koodi editori-ikkunassa Source. Talleta. 5

NetBeansin Files-välilehti Huomaa, että eka-projektikansio sisältöineen on pöytäkoneessa jossa NetBeans toimii. Sama asia kaapattuna Mintkoneen tiedostojärjestelmästä. Sitten varmistetaan, että Raspin c- kääntäjän työkaluketju on käytettävissä. Tämä siksi, että käännös ei tapahtu pöytäkoneessa kuten tavallisesti, vaan Raspi-koneessa, joka on omassa LANpaikallisverkossa. 6

IDE-ikkunan ulkoasua voi muutella halutuksi. Jos virheilmoituksia on paljon, niin niiden korjaamisen ajaksi kannattaa alimmalla oleva info-fikkuna suurentaa. Tai jos koodia kirjoitellaan, silloin saattaa olla mukavaa, jos editori-ikkuna on iso. Ensimmäisen lähdekoodin kääntäminen Kun ohjelman lähdekoodi on valmis, se on käännettävä ARM-mikro-ohjaimen ymmärtämään muotoon. Kutsutaan C-kääntäjää klikkaamalla NetBeansin työkalurivin Built-painonappia, joka on vasara-kuvake. Jos koodi on kirjoitettu noudattaen C- kielen kielioppisääntöjä, NetBeansin alaosaan avautuu kääntämisen etenemisestä ja onnistumisesta/epäonnistumisesta kertovat viestit, notifications. Tärkeintä on ilmoitus BUILD SUCCESSFULL, onnistui eli ei käännösvirheitä. Jos virheitä ilmenee, tarkista lähdekoodin kirjoitusasu. Jos yksikin merkki on väärin, liikaa, puuttuu, tai on väärässä paikassa, niin käännin ei ymmärrä koodia ja käännösprosessi keskeytyy. Ensimmäisen lähdekoodin ajaminen Klikkaa työkalurillä olevaa vihreää nuolta. Jos käännös onnistui, niin ajokin onnistuu ja äskeiseen info-ikkunaan tulee tulostettava teksti. Kerrataan vielä: Koodi kirjoitetaan ja talletetaan GNU/Linux-Mint-koneessa. Käännöstä varten lähdekoodi kopioidaan verkon kautta Raspiin ja käännetään siellä, koska Raspissa on ARM-prosessori. (Ristikäännös kerrotaan toisaalla). Ajo tapahtuu tottakai myös Raspissa ja ohjelman tulostus siirretään verkon kautta NetBeansin oikealla alaosassa olevaan info-ikkunaan. 7