C! C-ohjelmoinnin peruskurssi Pasi Sarolahti
Mitä haluan oppia C-kurssilla? ja miksi? Tutustu lähimpään naapuriin Keskustelkaa miksi halusitte / jouduitte tulemaan kurssille 3 minuuttia è kootaan vastauksia yhteen (Presemo) presemo.aalto.fi/c17 2
C-koodia näkee esimerkiksi 3
Kurssin tavoitteet C-kielen perusteiden hallinta, mm. Perusrakenteet, tietotyypit ja syntaksi Osoittimet ja muistinhallinta Binäärioperaatiot Kyky toteuttaa itsenäisesti lyhyitä C-ohjelmia Kyky löytää ja korjata virheitä omasta (ja toisten) koodista Tarvittavien koodaus- ja debugaustyökalujen tunteminen Ymmärrys siitä miten oma C-ohjelma suhtautuu tietokoneeseen ja käyttöjärjestelmään 4
Työskentelytavat Ohjelmoimaan oppii parhaiten ohjelmoimalla Paljon ohjelmointiharjoituksia Palautus automaattiselle tarkistimelle Materiaali verkossa Ei varsinaisia luentoja Lopussa isompi ohjelmointitehtävä ja ohjelmointikoe 5
Keskustelualue: Slack Ensisijainen: Slack https://aalto-c.slack.com/signup Käytettävä aalto.fi sähköpostiosoitetta Jos et omista aalto.fi osoitetta, voimme lisätä käsin Toimii web-selaimella: https://aalto-c.slack.com/ Saatavana myös sovellukset monille käyttökärjestelmille: OS X, ios, Android, 14
C - ohjelman tuottaminen
Kännös C-lähdekoodi C vs. Python ohjelma.c Python-koodi Suoritus ohjelma.py C-kääntäjä Python-tulkki Suoritus Käyttöjärjestelmä Ohjelmabinääri a.out Käyttöjärjestelmä Tietokone Tietokone 17
C vs. Python - eroja Muotoilu C-kielessä sisennyksillä tai rivinvaihdoilla ei väliä - Äärimmillään koko ohjelman voi kirjoittaa (melkeinpä) yhdelle riville - Käytännössä käytetään koodia selkeyttämään Muuttujat C:ssä staattinen tyypitys: tyyppi määritellään käännösaikana Muuttujien yhteydessä niiden tyyppi on aina määriteltävä Syntaksi Puolipiste lopettaa aina lauseen: unohtaminen aiheuttaa virheen Lohkorakenteet merkitään aaltosuluilla Muistinhallinta 18
C-ohjelmoinnin vaiheet 1. Kirjoitetaan ohjelmakoodi tekstieditorilla Ohjelmatiedostot nimetään.c päätteellä Suuret ohjelmistot koostuvat useista lähdetiedostoista 2. Käännetään ohjelmakoodi Esikäännös: koodin alkuprosessointi Käännös: c-koodista objektitiedostoksi (yksi per.c tiedosto) Linkkaus: koostetaan objektitiedostot suoritettavaksi ohjelmaksi Mikäli varoituksia tai virheitä, mennään kohtaan 1 ja korjataan 3. Testataan ohjelmaa Mikäli virheitä, mennään kohtaan 1 ja korjataan 19
C-kehityksessä käytetyt tiedostot.c päätteiset tiedostot sisältävät lähdekoodin Suurempi ohjelma voi sisältää näitä useita Yhdistetään yhdeksi ohjelmaksi linkkausvaiheessa.h päätteiset tiedostot ovat otsakkeita Tietotyyppien ja funktioiden määrittelyt Viittaukset.c tiedostoista #include - komennolla Tarvitaan, jotta lähdekoodi voi käyttää ulkopuolisia määrittelyjä Makefile ohjeistus make-työkalulle Kertoo mitkä tiedostot ohjelmaan kuuluvat Sisältää ohjeet ohjelman kääntämiseksi Sekä mahdollisesti muita kehityksessä tarvittavia toimintoja 20
Ohjelman kääntäminen Usein käytetään GNU C (gcc) kääntäjää Yksinkertaisimmillaan komentorivillä: gcc <lähdetiedosto.c> Tuottaa a.out nimisen tiedoston, joka suorittaa ohjelman Jos ohjelma koostuu useasta lähdetiedostosta, kaikki.c tiedostot listataan komentorivillä.h tiedostoja ei listata komennon yhteydessä 21
Kääntämisen tulos Jos kaikki sujuu hyvin: ei tulostetta Kurssin ohjelmissa syntyy src/main ja test/test - tiedostot Käännösvirheet Kääntäjä ei pysty tuottamaan suoritettavaa binääritiedostoa Tutki virheilmoitukset, ja yritä korjata koodi niiden mukaan Varoitukset Kääntäjä tuottaa suoritettavan koodin ja binääritiedosto syntyy Koodissa on hyvin todennäköisesti vikaa Varoitukset syytä aina korjata Ilmoituksissa rivinumero ongelman paikantamiseksi 22
Työkaluista Perinteinen: komentorivi + tekstieditori Editori: esimerkiksi Kate, Emacs, Vi, Notepad++ Ohjelman kääntäminen ja suorittaminen komentoriviterminaalissa Integroitu kehitysympäristö (IDE) Kaikki toiminnot yhdessä paketissa Esim: Xcode, Visual Studio, (Eclipse, Netbeans) 23