C-ohjelmoinnin peruskurssi. Pasi Sarolahti

Samankaltaiset tiedostot
C-ohjelmoinnin peruskurssi. Pasi Sarolahti

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

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

Loppukurssin järjestelyt C:n edistyneet piirteet

Loppukurssin järjestelyt

KYMENLAAKSON AMMATTIKORKEAKOULU

T harjoitustehtävät, syksy 2011

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

5. HelloWorld-ohjelma 5.1

TT00AA Ohjelmoinnin jatko (TT10S1ECD)

XML tehtävien työnkulku

T harjoitustyö, kevät 2012

Dynaaminen muisti. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät 2017.

Valppaan asennus- ja käyttöohje

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tehdään sähköisesti mikroluokan Windows-koneilla.

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tentti kestää kolme tuntia.

C-ohjelmointikielen perusteet, osa 1

Näin järjestän ohjelmointikurssin, vaikka en ole koskaan ohjelmoinut

4. Lausekielinen ohjelmointi 4.1

5. HelloWorld-ohjelma 5.1

Perusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti

XML tehtävien työnkulku

Pedacode Pikaopas. Web-sovelluksen luominen

Ohjelmoinnin peruskurssi Y1

Kurssin aloitus. AS XML-kuvauskielten perusteet Janne Kalliola

P e d a c o d e ohjelmointikoulutus verkossa

CVS. Kätevä väline usein päivitettävien tiedostojen, kuten lähdekoodin, hallitsemiseen

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

Tietokoneverkot. T Tietokoneverkot (4 op) viimeistä kertaa CSE-C2400 Tietokoneverkot (5 op) ensimmäistä kertaa

TIE Ohjelmistojen testaus 2015 Harjoitustyö Vaihe 3. Antti Jääskeläinen Matti Vuori

BL40A1810 Mikroprosessorit, harjoitus 1

Harjoituksen aiheena on tietokantapalvelimen asentaminen ja testaaminen. Asennetaan MySQL-tietokanta. Hieman linkkejä:

Laiteläheinen C-kieli, hello.c

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

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tentti kestää kolme tuntia. Tehdään sähköisesti mikroluokkien Windows-koneilla.

Ohjelmointi Linuxissa. Sisällysluettelo. 1. Mitä tarvitaan sovellusten tuottamiseen? Tehnyt: Antti Martikainen ( )

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

Ohjelmointi 1. Kumppanit

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

Pedacode Pikaopas. Web Service asiakasohjelman luominen

Tietueet. Tietueiden määrittely

Visma Econet -ohjelmat ActiveX on epävakaa -virheilmoituksen korjausohjeet

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

LINUX-HARJOITUS, MYSQL

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

Joonas Ruotsalainen GIT PIKAOPAS. Tutkielma 2011

PRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER

TeleWell TW-LTE/4G/3G USB -modeemi Cat 4 150/50 Mbps

TT00AA Ohjelmoinnin jatko (TT10S1ECD)

Suvi Junes/Pauliina Munter Tietohallinto/Opetusteknologiapalvelut 2014

Laiteläheinen C-kieli osa 1 pva


Käytin tehtävän tekemiseen Xubuntu käyttöjärjestelmää aikaisemmin tekemältäni LiveUSB-tikulta.

LUENTO 0. Tervetuloa! Käyttöjärjestelmät II 2 ov Teemu Kerola. Helsingin yliopisto Tietojenkäsittelytieteen laitos

UCOT-Sovellusprojekti. Asennusohje

Harjoitus 5 (viikko 41)

CLT131: Tekstityökalut 2012, kymmenes luento

2. Modeemi- ja ISDN-yhteyden käyttöönotto

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python

Tietokoneen rakenne (2 ov / 4 op) Syksy 2006

Ohje sähköiseen osallistumiseen

izettle Reader korttimaksupäätteen käyttöohjeet

Ohjelmoinnin peruskurssi Y1

Osa. Miksi C++ on oikea valinta. Oppitunnit 1 Aloitetaan 2 C++ -ohjelmat osat 3 Muuttujat ja vakiot 4 Ilmaukset ja ohjelmalauseet 5 Funktiot

Ohjelmoinnin perusteet Y Python

CCLEANER PERUSKÄYTTÖ PERUSKÄYTTÖ

Ohjelmointi II. Erkki Pesonen Luennot ja harjoitukset. Itä-Suomen yliopisto Tietojenkäsittelytieteen laitos 2015

PLA Mobiiliohjelmointi. Mika Saari

PLA Mobiiliohjelmointi. Mika Saari

Hellä ensikosketus. Tomi Kiviniemi

T Johdatus tietoliikenteeseen 5 op

Harjoitus 5. Esimerkki ohjelman toiminnasta: Lausekielinen ohjelmointi I Kesä 2018 Avoin yliopisto 1 / 5

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Ohje sähköiseen osallistumiseen

ASIAKASKOULUTUKSET. Kurssiohjelma Syksy 2016

MS-C1340 Lineaarialgebra ja differentiaaliyhtälöt

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

Lahden kaupunginkirjasto ASIAKASKOULUTUKSET

T Harjoitustyöluento

Kemiantekniikan ohjelmointikurssi CHEM-A2600 (5 op)

17/20: Keittokirja IV

Asialista. CLT131: Tekstityökalut 2012, kymmenes luento. 2. frekvenssien muunnos todennäköisyyksiksi. 1. taulukkohaut

Harjoitus 6 (viikko 42)

WINE API ja Virtualisointiohjelmistot


JulkICT Arkkitehtuuripankki - QPR EnterpriseArchitect asennusohje

.NET ajoympäristö. Juha Järvensivu 2007

Dart. Ryhmä 38. Ville Tahvanainen. Juha Häkli

Simulaattorin asennus- ja käyttöohje

ELEC-C1210 Automaatio 1 ELEC-C1220 Automaatio 2. Kurssien esittely lukukausi

4. Lausekielinen ohjelmointi 4.1

Kääntäjän virheilmoituksia

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

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

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

Test-Driven Development

Transkriptio:

C! C-ohjelmoinnin peruskurssi Pasi Sarolahti 20.6.2016

Mikä C? 2

Kurssin tavoitteet C-kielen perusteiden hallinta, mm. Perusrakenteet, tietotyypit ja syntaksi Osoittimet Muistinhallinta Bittien käsittely Kyky toteuttaa itsenäisesti lyhyitä C-ohjelmia Kyky löytää ja korjata virheitä omasta (ja toisten) koodista Tarvittavien koodaus- ja debugaustyökalujen tunteminen 3

Työskentelytavat Ohjelmoimaan oppii parhaiten ohjelmoimalla Paljon ohjelmointiharjoituksia Palautus automaattiselletarkistimelle Materiaali verkossa Myös Vinkkiwiki Ei varsinaisia luentoja Poikkeuksena ma 8.8. järjestettävä tilaisuus koskien viimeistä kierrosta ja loppukoejärjestelyjä 4

Aikataulu (katso tarkemmat tiedot MyCoursesista) Viisi tehtäväkierrosta + ohjelmointiharjoituskierros Määräajat viikon välein Harjoitukset ti 5.7. pe 12.8. perjantaisin klo 23:59 Kierros 1: pe 8.7. Kierros 2: pe 15.7. Jne Pyrimme avaamaan kierrokset mahdollisimman aikaisin Paperitentti: to 1.9. klo 16:30 5

Maarintalon harjoitukset (Maari-A) Mahdollisuus saada apua ongelmiin Toimintaohjeita: Alussa saatetaan järjestäytyä tehtävien mukaisesti: varaudu vaihtamaan paikkaa Ei kannata odottaakäsipystyssä, assarit kiertävätsaliajärjestyksessä Kannattaa tarkistaa mitä naapuri tekee, odottaessa tehtäviä voi miettiä yhdessä Assarit paikalla Ti 14 16 To 16 18 Pe 14 16 6

Assarit Pääassari: Essi Jukkala Juhana Kekoni Emmi Rehn Viet Tran 7

Arviointi 50% Ohjelmointiharjoituksista 70 tehtäväkohtaa, yksi piste kustakin - 14 tehtäväkohtaa per kierros Vähintään 7 pistettä per kierros saatava Viimeinen kierros vähän erilainen (seuraava kalvo) Yhden kierroksen saa jättäätekemättä 50% Kokeesta Paperitentistä saatava vähintään 15 pistettä (max. 30) Pilotoidaan vaihtoehtoista ohjelmointinäytettä 8

Viimeinen kierros Suoritetaan viikon aikana: 8.8. 12.8. 4 pistettä TMC tehtäviä 10 pistettä ohjelmointiharjoituksesta TMC ei käytössä, ei valmista tehtäväpohjaa Toteutetaan kokonainen ohjelma, joka koostuu muutamasta funktiosta Tulee toteuttaa pyydetyt toiminnot Tarvitaan dynaamista muistinhallintaa, tietorakenteita, tiedosto- I/O:ta, ym. kurssilla käsiteltyjä asioita Pistetytys perustuu paitsi toiminnallisuuteen, myös tyyliin ja valittujen ratkaisujen tarkoituksenmukaisuuteen 9

Ohjelmointinäyte 25.8. Kokeilu: mukaan mahtuu 40 satunnaisesti valittua halukasta Vaihtoehto tentille (50% arvosanasta tässäkin) Kahden tunnin aikana tehtävä lyhyt kokonainen ohjelma Tehtävänanto annetaan alussa, valmista koodipohjaa ei ole Samankaltainenkuin viimeisen kierroksen ohjelmointitehtävä Yksilösuoritus, suoritetaan mikroluokassa Nettiyhteydet suljettu, man-sivut käytössä Kaksi vuoroa: klo 10-12 ja 13-15 Ilmoittaudu Oodissa 10

Kurssimateriaali Verkossa: http://src.aalto.fi/c/home/ Tehtävät upotettu materiaalin sekaan Myös kirjallisuutta voi käyttää Hyvä perinteinen kirja: Kernighan, Ritchie: The C Programming Language, 2 nd edition. Prentice Hall. - C is not a big language, and it is not well served by a big book Netissä paljon tietoa Vinkkiwiki https://wiki.aalto.fi/display/c/ 11

Tehtäväpalautus: TestMyCode (TMC) https://src.aalto.fi/tmc/ Rekisteröidy aluksi käyttäenopiskelijanumeroa käyttäjätunnuksena Jos sinulla on jo tunnus, käytä sitä Käytä myös Aalto-sähköpostiosoitetta Kurssi: C-summer-2016 Eri tapoja palauttaa tehtäviä: Komentorivityökalu SuoraanNetbeans-käyttöliittymästä Zip-pakettina web-selaimen kautta 12

Keskustelualue: Slack Ensisijainen: Slack https://aalto-c.slack.com/signup Käytettävä aalto.fi sähköpostiosoitetta Toimii web-selaimella: https://aalto-c.slack.com/ Saatavana myös sovellukset monille käyttökärjestelmille: OS X, ios, Android, 13

Yhteenvetoa Varo vieraita sivuja: mooc.fi Käynnissä samaan aikaan MOOC samaan materiaaliin pohjautuen SuunnattuAalto-yliopiston ulkopuolelle mooc.fi pisteet eivät siirry tällekurssille Seuraa MyCourses-tiedotteita Muista ilmoittautua tenttiin / ohjelmointinäytteeseen 14

C - ohjelman tuottaminen

C vs. Python C-lähdekoodi Python-koodi C-kääntäjä Ohjelmabinääri Käyttöjärjestelmä Tietokone Python-tulkki Käyttöjärjestelmä Tietokone 16

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 18

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 19

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 tässä TMC-tehtävissä tulee mukana Makefile Skripti ohjelman kääntämiseksi (gcc:tä käyttäen) make <komento> komentorivillä riittää 20

Kääntämisen tulos Jos kaikki sujuu hyvin: ei tulostetta Kurssinohjelmissa 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ääritiedostosyntyy Koodissaon hyvin todennäköisesti vikaa Varoitukset syytä aina korjata Ilmoituksissa rivinumero ongelman paikantamiseksi 21

Työkaluista Perinteinen: komentorivi + tekstieditori Editori: esimerkiksi Kate, Emacs, Vi, Notepad++ Ohjelman kääntäminen ja suorittaminen komentoriviterminaalissa TMC - komentorivityökalu Integroitu kehitysympäristö (IDE) Kaikkitoiminnot yhdessä paketissa Netbeansiin saatavilla TMC-plugintehtävien palauttamiseen - Web-selaimen käyttäminen ja zippaaminen ei tarpeen Netbeans vaatii JDK 7:n toimiakseen Ohjeita: https://src.aalto.fi/c/instructions/ 22

Työkalut eri järjestelmille Linuxissa hyvä kehitystuki Tarvittavat ohjelmat usein asennettu oletusarvoisesti Paras tuki ohjelmien analysoimiseen ja debugaukseen Mac OS X XCode-ohjelmointiympäristön mukana tarvittavat työkalut - Asenna lisäksi komentorivityökalut - XCode IDE:n käyttö havaittu epäkäteväksi kurssilla Kääntäjä ja debuggeri eroavat Linuxista Windows tarvitsee hieman lisäasennuksia Esim. Cygwin ohjelmistolla saadaan komentorivillä toimivat työkalut Valgrind analysointi ei onnistu 23