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

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

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

Tietotyypit ja operaattorit

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.

Luennon sisältö Tyypit int, char, float, double signed, unsigned short, long Vakiot const Rakenteet if, for, while, switch, do-while Syöttö ja tulostu

Java-kielen perusteet

Java-kielen perusteet

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

Luento 5. Timo Savola. 28. huhtikuuta 2006

Ohjelmointiharjoituksia Arduino-ympäristössä

Muuttujat ja kontrolli. Ville Sundberg

11. Javan toistorakenteet 11.1

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

C-kurssi kevät Luennon sisältö

Luennon sisältö. C-kurssi kevät Tasokokeen kohta 1: Taulukon järjestäminen. Tasokokeen kohta 2. Tasokokeen kohta 2. Tasokokeen kohta 3

Sisällys. 16. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. Aritmetiikkaa toisin merkiten

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

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

16. Ohjelmoinnin tekniikkaa 16.1

13. Loogiset operaatiot 13.1

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

16. Ohjelmoinnin tekniikkaa 16.1

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin

5/20: Algoritmirakenteita III

C-kurssi syksy ltö. Luennon sisält. Luento 2: tyypit, rakenteet, makrot Tyypit. signed, unsigned short,, long Vakiot const Rakenteet

Fortran 90/95. + sopii erityisesti numeriikkaan:

Luennon sisält. ltö. C-kurssi syksy ääreet: int ja char. Yksinkertaiset tyypit. Kokonaisluvut. Merkit

1. luento. Ohjelmointi (C) T0004 Syksy luento. 1. luento. 1. luento. 1. luento. kurssin sisältö ja tavoitteet työmuodot.

Java-kielen perusteita

2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys

Ohjausrakenteet. Valinta:

13. Loogiset operaatiot 13.1

12. Javan toistorakenteet 12.1

VIII. Osa. Liitteet. Liitteet Suoritusjärjestys Varatut sanat Binääri- ja heksamuoto

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

Binäärioperaatiot Tiedostot ja I/O

Ohjelmoinnin perusteet Y Python

Johdatus ohjelmointiin / Lausekielinen ohjelmointi 1 & 2

12. Javan toistorakenteet 12.1

Loppukurssin järjestelyt C:n edistyneet piirteet

Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla:

Ohjelmoinnin perusteet Y Python

Sisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat

Osoittimet ja taulukot

Ohjelmoinnin perusteet Y Python

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä

Ohjelmoinnin perusteet Y Python

Loppukurssin järjestelyt

Ehto- ja toistolauseet

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

Kielioppia: toisin kuin Javassa

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

Python-ohjelmointi Harjoitus 2

Binäärioperaatiot Tiedostot ja I/O

811120P Diskreetit rakenteet

OPPITUNTI 5 Ohjelman kulku

Muuttujatyypit ovat Boolean, Byte, Integer, Long, Double, Currency, Date, Object, String, Variant (oletus)

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

11. Javan valintarakenteet 11.1

Harjoitus 2 (viikko 45)

Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot

Ctl160 Tekstikorpusten tietojenkäsittely Kolmas luento,

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3

811120P Diskreetit rakenteet

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Ohjelmoinnin peruskurssi Y1

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

Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö C-ohjelmassa

1. Omat operaatiot 1.1

Tyyppejä ja vähän muutakin. TIEA341 Funktio ohjelmointi 1 Syksy 2005

TAITAJA 2007 ELEKTRONIIKKAFINAALI KILPAILIJAN TEHTÄVÄT. Kilpailijan nimi / Nro:

Lyhyt kertaus osoittimista

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva

6. Muuttujat ja Java 6.1

Harjoitus 3 (viikko 39)

3. Muuttujat ja operaatiot 3.1

ATK I OHJELMOINNIN PERUSTEET 76314P LUENTOMATERIAALI

Sisällys. 3. Pseudokoodi. Johdanto. Johdanto. Johdanto ja esimerkki. Pseudokoodi lauseina. Kommentointi ja sisentäminen.

Java kahdessa tunnissa. Jyry Suvilehto

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3

Ohjelmoinnin perusteet Y Python

C-kurssi kevät t Luento 2: tyypit, rakenteet, makrot

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 5: Python

815338A Ohjelmointikielten periaatteet

Hellä ensikosketus. Tomi Kiviniemi

ELEC-A4010 Sähköpaja Arduinon ohjelmointi. Jukka Helle

ITKP102 Ohjelmointi 1 (6 op)

Sisällys. 3. Muuttujat ja operaatiot. Muuttujat ja operaatiot. Muuttujat. Operaatiot. Imperatiivinen laskenta. Muuttujat. Esimerkkejä: Operaattorit.

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään

Sisällys. 16. Lohkot. Lohkot. Lohkot

tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi

Ohjelmoinnin peruskurssi Y1

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

JavaScript alkeet Esimerkkikoodeja moniste 2 ( Metropolia)

Ohjelmoinnin perusteet Y Python

Transkriptio:

C! Perusteet 19.1.2017

Palautteesta (1. kierros toistaiseksi) (Erittäin) helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Ei selvää että main funktion pitikin palauttaa nolla Vaikeaa eroavuudet Pythonin ja C:n välillä Akateemisten pisteiden jakaminen palautteesta on typerää Tietotyyppien välisten erojen hahmottaminen vaikeaa 2

Palautteesta (1. kierros toistaiseksi) En löytänyt kaikkea tarvitsemaani tietoa, päädyin hakemaan Googlesta Assarit ammattitaitoisia ja mukavia, Slack hyvä Safarilla ongelmia TIM:n kälin kanssa Sivujen ulkoasua voisi parantaa Liian minimaalinen palaute joissain tehtävissä 3

Komentorivikomentoja ls näytä nykyisen hakemiston sisältö cd <hakemisto> siirry annettuun hakemistoon cd.. takaisin ylempään hakemistoon pwd näytä mikä on uusi hakemisto emacs <tiedosto> editoi tiedostoa käyttäen emacsia rm <tiedosto> poista annettu tiedosto Kätevää: TAB täydentää tiedoston/hakemiston nimen 5

Muuttujat ja niiden esittely C-kielessä muuttujat pitää esitellä ennen käyttöönottoa Määritellään muuttujan tietotyyppi Kääntäjä varaa muuttujalle tarvittavan tilan muistista Muuttujaa ei voi käyttää ennenkuin se on esitelty Muuttujan nimi koostuu kirjaimista, numeroista ja alaviivasta Nimen alettava kirjaimella muuttuja ja Muuttuja ovat kaksi eri nimeä int var_a; int muuttuja = 10; double value1, value2; 6

Kokonaislukutietotyypit 8 bittiä = 1 tavu char -128 127 unsigned char 0 255 16 bittiä = 2 tavua short -32768 32767 unsigned short 0 65535 32 bittiä = 4 tavua int -2 31 2 31 unsigned int 0 2 32 long unsigned long 64 bittiä = 8 tavua...... -2 63 2 63 0 2 64 7

Kokonaislukuvakioista Voidaan käyttää eri lukujärjestelmiä 10-lukujärjestelmä: int number = 66; 16-lukujärjestelmä (arvo alkaa 0x-etuliitteellä) int number = 0x42; 8-lukujärjestelmä (arvo alkaa numerolla 0) int number = 0102; Myös merkkivakioita voidaan käyttää int number = B ; Vastaavat jotain numeroa (konvertoituu merkistön mukaan) A Z peräkkäisillä numeroarvoilla (ASCII: 65-90) 0 9 peräkkäisiä (ASCII: 48 57) 8

ASCII merkistö (+ vähän muutakin) 9

Liukulukutyypit Voidaan käyttää desimaalilukujen, tai suurten lukujen käsittelyyn Sisäisesti koostuu kolmesta komponentista Merkkibitti, eksponentti, mantissa (-1) merkkibitti * 1.mantissa * 2 eksponentti Kaksi eri kokoista tyyppiä float: 32 bittiä (1 + 23 + 8) double: 64 bittiä (1 + 52 + 11) Kaikkia lukuja ei voi esittää Liukuluku on jotain sinne päin 10

Laskuoperaatiot +, -, *, /, % käytetään kuten useimmissa muissa ohjelmointikielissä Samoin sulkeet lisää yhdellä tai vähennä yhdellä Postfix-operaattori: muuttuja++ ja muuttuja-- Prefix-operaattori: ++muuttuja ja --muuttuja Ero: saako lauseke uuden vai vanhan arvon Lisäksi sijoitusoperaattori muuttuja -= 2 on sama kuin muuttuja = muuttuja - 2 Sama toimii myös muille yllämainituille operaattoreille 11

Mikä tyyppi? 7:n kertotaulun läpikäyminen luvuilla 1 10? Nopeusmittari? Verkkokaupan tuotteiden varastosaldo? Ulkolämpötilan mittaaminen? Suomalaisten aakkosten läpikäyminen ja tulostaminen? Kiinalaisten merkkien luetteloiminen ja tulostaminen? char unsigned char short unsigned short int unsigned int long unsigned long float double 12

13

Funktiot 14

Tiedon tulostus ja syöttäminen 18

Syötteen lukeminen scanf - funktiolla Formaatti näyttää samalta kuin printf:n kanssa Pitkälti samat muotoilumääreet (mutta pieniä eroja) Scanf ei palauta luettua arvoa Paluuarvo: onnistuneesti luettujen kenttien lukumäärä Useimmissa tapauksissa välilyönnit ja rivinvaihdot sivuutetaan Poikkeus: yhden merkin (%c) lukeminen Scanf poistuu heti kun tarpeellinen määrä on luettu Jos käyttäjä syötti enemmän, seuraava scanf-kutsu nappaa ne Huomaa & - operaattori (address-of) 20

Ehtolausekkeet 23

Loogiset operaattorit <, <=, >, >= käytetään kuten yleensä == yhtä suuri kuin!= eri suuri kuin Looginen JA, TAI, EI &&: looginen JA (a < 5 && b < 5) on tosi jos sekä a ja b ovat < 5 looginen TAI (a < 5 b < 5) on tosi, jos jompi kumpi on < 5! Looginen EI --!(a < 5) on tosi jos a ei ole pienempi kuin 5 Tuottavat arvon 0 (epätosi) tai 1 (tosi) C:ssä ei erillisiä tosi ja epätosi arvoja Esimerkiksi sijoitus muuttujaan on mahdollinen: int result = (a == 5); // lopputulos 0 tai 1 24

If else rakenne Kun if - ehto toteutuu, suoritetaan seuraava lauseke tai lohko Muussa tapauksessa hypätään sen yli if (lauseke) toteutuu kun lauseke on jotain muuta kuin 0 (eli tosi ) if (!lauseke) toteutuu vain kun lauseke on 0 Voidaan käyttää muuttujan arvon testaamiseen tai loogisten operaatioiden yhteydessä else haara optionaalinen Vaihtoehtoinen toiminta, mikäli if ei toteudu Mahdollista lisätä useita else if - haaroja 25

Toistolausekkeet 27

While - lauserakenne Vähän kuin if, mutta lauseke tai lohko toistuu kunnes ehto on epätosi If suorittaa lausekkeen vain kerran, mikäli ehto on tosi Toistuu kymmenen kertaa: int a = 0; while (a < 10) { printf("value of a is now %d\n", a); a++; } 28

While ja do while Ei suorita lohkon sisältöä lainkaan: int a = 20; while (a < 10) { printf("value of a is now %d\n", a); a++; } Suorittaa yhden kerran: int a = 20; do { printf("value of a is now %d\n", a); a++; } while (a < 10); 29

While ja For expression_1; while (expression_2) { statement expression_3; } on sama kuin: for (expression_1; expression_2; expression_3) statement (toki kaarisulkuja voi käyttää for:in kanssa) 30

While ja For int a = 0; while (a < 10) { printf("value of a is now %d\n", a); a++; } on sama kuin: int a; for (a = 0; a < 10; a++) { printf("value of a is now %d\n", a); } Ikuinen silmukka: for (;;) { } 31

Break Sisimmästä toisto- tai switch-rakenteesta suoraan poistuminen Suoritus jatkuu rakennetta seuraavalta riviltä int a; for (a = 0; a < 10; a++) { printf("value of a is now %d\n", a); if (a == 5) break; } Toistolauseke keskeytyy kun a:n arvo on 5 32

Continue Suoritus siirtyy toistolausekkeen seuraavan kierroksen alkuun For-lausekkeen muutosehto suoritetaan int a; for (a = 0; a < 10; a++) { if (a % 2 == 1) continue; printf("value of a is now %d\n", a); } Tulostaa vain parilliset numerot 33