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

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

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

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ä

Java-kielen perusteet

Muuttujat ja kontrolli. Ville Sundberg

11. Javan toistorakenteet 11.1

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

16. Ohjelmoinnin tekniikkaa 16.1

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

16. Ohjelmoinnin tekniikkaa 16.1

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

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

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

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

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

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

Java-kielen perusteita

Fortran 90/95. + sopii erityisesti numeriikkaan:

13. Loogiset operaatiot 13.1

Binäärioperaatiot Tiedostot ja I/O

Ohjausrakenteet. Valinta:

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:

Loppukurssin järjestelyt C:n edistyneet piirteet

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

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

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

Ehto- ja toistolauseet

Johdatus ohjelmointiin / Lausekielinen ohjelmointi 1 & 2

Loppukurssin järjestelyt

13. Loogiset operaatiot 13.1

12. Javan toistorakenteet 12.1

Ohjelmoinnin perusteet Y Python

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

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

Kielioppia: toisin kuin Javassa

Binäärioperaatiot Tiedostot ja I/O

Python-ohjelmointi Harjoitus 2

11. Javan valintarakenteet 11.1

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

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

Ohjelmoinnin perusteet Y Python

Ctl160 Tekstikorpusten tietojenkäsittely Kolmas luento,

811120P Diskreetit rakenteet

Osoittimet ja taulukot

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

Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot

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

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

811120P Diskreetit rakenteet

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

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

ATK I OHJELMOINNIN PERUSTEET 76314P LUENTOMATERIAALI

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

6. Muuttujat ja Java 6.1

Harjoitus 2 (viikko 45)

Ohjelmoinnin peruskurssi Y1

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

Moduli 5: Kehittyneitä piirteitä

Hellä ensikosketus. Tomi Kiviniemi

1. Omat operaatiot 1.1

815338A Ohjelmointikielten periaatteet

OPPITUNTI 5 Ohjelman kulku

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

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

ITKP102 Ohjelmointi 1 (6 op)

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään

Lyhyt kertaus osoittimista

3. Muuttujat ja operaatiot 3.1

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

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

JavaScript alkeet Esimerkkikoodeja moniste 2 ( Metropolia)

tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi

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

Java kahdessa tunnissa. Jyry Suvilehto

Harjoitus 5 (viikko 41)

Ohjelmoinnin perusteet Y Python

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

Ohjausjärjestelmien jatkokurssi. Visual Basic vinkkejä ohjelmointiin

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

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit:

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

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

Sisällys. 16. Lohkot. Lohkot. Lohkot

Ehto- ja toistolauseet

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Osa. Toimintojen toteuttaminen ohjelmissa vaatii usein haarautumisia ja silmukoita. Tässä luvussa tutustummekin seuraaviin asioihin:

Transkriptio:

C! Perusteet 19.1.2017

Palautteesta (1. kierros toistaiseksi) Toistaiseksi helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Vaikeaa eroavuudet Pythonin ja C:n välillä Tietotyyppien välisten erojen hahmottaminen vaikeaa Liian minimaalinen palaute joissain tehtävissä Aloittelevalle koodarille verkkomateriaali vajavaista Oppimateriaali turhan monisanaista fggfgfgfgfgffggfgfgfgfgffggfgfgfgfgffggfgfgfgfgffggfgfgfgfg 2

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 4

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; 5

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 6

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) 7

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

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 9

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 10

Funktiot 13

Tiedon tulostus ja syöttäminen 17

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) 19

Ehtolausekkeet 22

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 23

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 24

Toistolausekkeet 26

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++; } 27

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); 28

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) 29

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 (;;) { } 30

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 31

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 32