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



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

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

Tietotyypit ja operaattorit

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

Java-kielen perusteet

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

Tietueet. Tietueiden määrittely

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

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

Johdatus ohjelmointiin / Lausekielinen ohjelmointi 1 & 2

Ehto- ja toistolauseet

Muuttujien roolit Kiintoarvo cin >> r;

Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot

tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi

Ohjelmoinnin peruskurssi Y1

Ohjausrakenteet. Valinta:

C-kieli mahdollistaa hyvin tiiviin ja samalla sekavan tavan esittää asioita, kuitenkin hyvän ohjelman tulisi olla mahdollisimman helppolukuinen ja

Java-kielen perusteet

Ohjelmoinnin perusteet Y Python

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

Sisältö. 22. Taulukot. Yleistä. Yleistä

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

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

Ohjelmoinnin perusteet Y Python

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

Sisältö. 2. Taulukot. Yleistä. Yleistä

Java-kielen perusteita

Java-kielen perusteita

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

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

if-lauseen yksinkertaisin muoto on sellainen, missä tietyt lauseet joko suoritetaan tai jätetään suorittamatta.

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

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

2. C-kieli ja ongelmanratkaisu

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

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

Ohjelmassa on käytettävä funktiota laskeparkkimaksu laskemaan kunkin asiakkaan maksu. Funktio floor pyöristää luvun lähimmäksi kokonaisluvuksi.

Ohjelmoinnin perusteet Y Python

13 Operaattoreiden ylimäärittelyjä

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

7. Näytölle tulostaminen 7.1

Listarakenne (ArrayList-luokka)

PHP tehtävä 3 Atte Pekarinen TIKT13A

Ohjelmointiharjoituksia Arduino-ympäristössä

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

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Ohjelmoinnin perusteet Y Python

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

Osoittimet ja taulukot

1 Tehtävän kuvaus ja analysointi

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

11. Javan toistorakenteet 11.1

Java-kielen perusteet

Ohjelmoinnin perusteet Y Python

Johdatus Ohjelmointiin

Ohjelmoinnin peruskurssi Y1

LOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100

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

Harjoitus 4 (viikko 47)

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

13. Loogiset operaatiot 13.1

Ohjelmoinnin perusteet Y Python

SQL-perusteet, SELECT-, INSERT-, CREATE-lauseet

Ohjelmointi 1 Taulukot ja merkkijonot

Kirjoita, tallenna, käännä ja suorita alla esitelty ohjelma, joka tervehtii käyttäjäänsä.

Modulaarisessa ohjelmoinnissa jaetaan ohjelma osiin (moduuleihin), jotka ovat yksinkertaisia ja lyhyitä.

811120P Diskreetit rakenteet

Ohjelmoinnin perusteet Y Python

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

811120P Diskreetit rakenteet

Moduli 5: Kehittyneitä piirteitä

Osoittimet ja taulukot

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Osoitin ja viittaus C++:ssa

12. Javan toistorakenteet 12.1

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

TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli

Tietorakenteet ja algoritmit

Moduli 4: Moniulotteiset taulukot & Bittioperaatiot

Ohjelmoinnin perusteet Y Python

12. Javan toistorakenteet 12.1

Muuttujat ja kontrolli. Ville Sundberg

Lyhyt kertaus osoittimista

Moduli 2: Osoittimet ja taulukot. Joel Huttunen

Ohjelmoinnin perusteet Y Python

Loppukurssin järjestelyt C:n edistyneet piirteet

Tietorakenteet ja algoritmit

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

Esimerkki 1: Kahviautomaatti.

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

Binäärioperaatiot Tiedostot ja I/O

Sisällys. 15. Lohkot. Lohkot. Lohkot

Harjoitustyö: virtuaalikone

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

Table of Contents. T Olio-ohjelmointi C/C++ perusteita Jukka Jauhiainen OAMK Tekniikan yksikkö 2010, 2011

Ohjelmoinnin perusteet Y Python

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

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

Transkriptio:

Loogisia operaatioita - esimerkkejä Tänään on lämmin päivä ja perjantai Eilen satoi ja oli keskiviikko tai tänään on tiistai. On perjantai ja kello on yli 13 Ei ole tiistai tai ei sada. Ei pidä paikkaansa, että on tiistai tai sataa Laura on tytön nimi tai Saara on pojan nimi On tiistai tai kello on yli 11 tai kuu on juustoa. Luokkatilassa on yli 50 oppilasta tai ei ole tiistai Ei ole totta, että ensi vuonna on joulu tai taivas on vihreä Ei ole niin, että tänään sataa lunta tai on torstai. Huomenna on perjantai tai tänään on tiistai Huomenna on torstai tai huomenna ei ole torstai Huomenna on perjantai ja tänään on perjantai Ei ole niin, että huomenna on perjantai tai tänään on perjantai 1 T0004 Olli Hämäläinen www.evtek.fi Operaatioiden suoritusjärjestys ++ ja - - muuttujan jäljessä esim. i++ ++ ja - - muuttujan edellä, + ja (etumerkki) esim. - -i, -a * / % kerto- ja jakolasku, jakojäännös a%b + ja yhteen- ja vähennyslasku a+b-c < > <= >= epäyhtälövertailut a<b, c>=d ==!= yhtäsuuruusvertailut a == b && looginen ja a && b looginen tai a b = += -= /= %= sijoitusoperaatiot a+=b, pilkkuoperaattori (peräkkäissuoritus) int a=1, b=2; 2 T0004 Olli Hämäläinen www.evtek.fi Ehtolause if - else ehtolauseella on kaksi muotoa: (1) if (ehto) lause; (2) if (ehto) lause1; else lause2; Huom! Lause voi olla yksinkertainen lause tai koottu lause (lohko) eli koostua useasta yksinkertaisesta lauseesta, jotka ovat aaltosuluissa. Huom! Toisin kuin joissain muissain ohjelmointikielissä C-kielen ehtolauseessa ei ole then-sanaa Ehtolause if - else - esimerkki if (luku<raja_arvo) printf( Luku jää alle rajan ); printf ( Pitäisikö sitä kasvattaa? ); vertaa: if (luku<raja_arvo) printf( Luku jää alle rajan ); printf( Pitäisikö sitä kasvattaa? ); 3 T0004 Olli Hämäläinen www.evtek.fi 4 T0004 Olli Hämäläinen www.evtek.fi Valinta usean vaihtoehdon perusteella if-else rakennetta voidaan käyttää useamman vaihtoehdon tapauksessa seuraavasti: if (ehto1) lause1; else if (ehto2) lause2; else if (ehto3) lause3; else if (ehto4) lause4; else lause5; C-kielessä else viittaa aina lähimpään edelliseen samalla tasolla olevaan if:iin. while-toistolause while (ehto) lause; tavallisimmin lause on lohko eli koottu lause toiminta: lausetta suoritetaan niin kauan kun ehto on tosi (nollasta poikkeava), jos ehto on alunperin epätosi (0) lausetta ei suoriteta yhtään kertaa jotta while-lauseen suoritus joskus päättyisi, on ehdon ehto arvon muututtava jollain lauseen suorituskerralla epätodeksi 5 T0004 Olli Hämäläinen www.evtek.fi 6 T0004 Olli Hämäläinen www.evtek.fi 1

while-toistolause, esimerkki scanf( %d,&luku); while (luku < 100) kirjoita (luku * luku); luku=luku + 1; vertaa: luku=50; while (luku < 100) kirjoita (luku * luku); luku=luku - 1; Kirjastofunktio printf saadaan käyttöön kirjastosta stdio.h lisäämäällä ohjelman alkuun tulostaa tietoa kuvaruudulle halutulla tavalla muotoiltuna 7 T0004 Olli Hämäläinen www.evtek.fi 8 T0004 Olli Hämäläinen www.evtek.fi Kirjastofunktio printf printf(muotoilumerkkijono,muuttujalista); muotoilumerkkijonossa annetaan vakiotekstit, muuttujien paikat tekstissä ja haluttu muuttujan esitysmuoto muuttujalistassa luetellaan tulostettavat muuttujat siinä järjestyksessä kuin niille on varattu paikat muotoilumerkkijonossa Kirjastofunktio printf - esimerkkejä printf( Moikka vaan! ); tulostaa kuvaruudulle tekstin Moikka vaan! printf( Tänään satoi %d mm, sademaara); tulostaa kuvaruudulle tekstin (jos muuttujalla sademaara on arvo 12) Tänään satoi 12 mm printf( Luku1=%d ja luku2=%d,luku1,luku2); tulostaa kuvaruudulle lukujen arvot selitystekstein. 9 T0004 Olli Hämäläinen www.evtek.fi 10 T0004 Olli Hämäläinen www.evtek.fi Muotoilumääreet int %d tai %i long %ld tai %li float %f double %f char %c Muotoilumääreessä voidaan %-merkin jälkeen antaa haluttu tulostuskentän leveys ja %f:n tapauksessa desimaalien määrä, esim. %8d, %5.2f. Miinusmerkki aiheuttaa kohdistamisen vasemmalle, esim. %-5d, %-8.1f. Erikoismerkit ja -toiminnot \n rivinvaihto (new line) \t tabulointimerkki \a hälytys (alarm, bell) \r rivin alkuun (carriage return, vaunun palautus ) \b peruutus (edeltävän merkin poisto, backspace) \f sivunvaihto (form feed) \ooo \xhh oktaalilukua ooo vastaava merkki heksadesimaalilukua hh vastaava merkki 11 T0004 Olli Hämäläinen www.evtek.fi 12 T0004 Olli Hämäläinen www.evtek.fi 2

Kirjastofunktio scanf saadaan käyttöön kirjastosta stdio.h scanf(muotoilumerkkijono,osoitelista); funktiolla luetaan tietoa syöttöriviltä yhdelle tai useammalle muuttujalle soveltuu parhaiten numeeristen muuttujien arvojen kukemiseen Kirjastofunktio scanf muotoilumerkkijonossa annetaan muuttujien paikat syötteessä ja muuttujan esitysmuoto osoitelistassa luetellaan tulostettavat muuttujat vasrustettuna &-merkillä siinä järjestyksessä kuin niille on varattu paikat muotoilumerkkijonossa muotoilumääreet ovat lähes samat kuin printffunktiossa (määre %lf double-tyypille, ei leveysmäärityksiä) 13 T0004 Olli Hämäläinen www.evtek.fi 14 T0004 Olli Hämäläinen www.evtek.fi /*Esimerkki 6.2 (Silander) Ohjelma pyytää kokonaisluvun, ottaa vastaan ja tulostaa sen: */ void main(void) printf ("Anna kokonaisluku: "); scanf ("%d", &luku); printf ("Annoit luvun %d",luku); Kirjastofunktiot gets ja sscanf eli lukeminen puskurin kautta funktiot saadaan käyttöön kirjastosta stdio.h gets(puskuri); sscanf(puskuri,muotoilumerkkijono, osoitelista); gets-funktiolla luetaan syöttörivi kerralla puskuriin (merkkitaulukkoon, esim. char puskuri[128]) sscanf-funktiolla luetaan kuten scanf funktiolla, mutta puskurista, joka annetaan 1. parametrina 15 T0004 Olli Hämäläinen www.evtek.fi 16 T0004 Olli Hämäläinen www.evtek.fi /* Esimerkki 6.3 (Silander) */ void main (void) char merkki; char puskuri[128]; printf ("Anna luku: "); gets (puskuri); sscanf (puskuri,"%d", &luku); /* Esimerkki jatkuu */ printf ("Anna merkki"); gets (puskuri); sscanf (puskuri,"%c", &merkki); printf ("Annoit luvun %d ja merkin %c", luku, merkki); 17 T0004 Olli Hämäläinen www.evtek.fi 18 T0004 Olli Hämäläinen www.evtek.fi 3

/*Esimerkki vertaa edelliseen! */ void main (void) char merkki; printf ("Anna luku: "); scanf ( %d", &luku); printf ("Anna merkki"); scanf ("%c", &merkki); printf ("Annoit luvun %d ja merkin %c", luku, merkki); 19 T0004 Olli Hämäläinen www.evtek.fi kun yhteenkuuluvia, samantyyppisiä ja samanlaisia tietoja käsitellään samalla tavalla,voidaan yksittäisten yksinkertaisten muuttujien sijaan käyttää taulukkomuuttujaa tietoihin viitataan samalla tunnuksella (nimellä) ja ne erotetaan toisistaan indeksin avulla yksittäistä taulukossa olevaa tietoa kutsutaan taulukon alkioksi taulukon koko on vakio, joka on ilmoitettava määrittelyn yhteydessä taulukon indeksointi alkaa aina arvosta 0 20 T0004 Olli Hämäläinen www.evtek.fi - esimerkki int luku[10]; määrittelee 10 alkiota käsittävän taulukon, jossa on alkiot luku[0],luku[1],luku[2],luku[3], luku[4],luku[5],luku[6],luku[7],luku[8], luku[9] taulukon alkioita voidaan käyttää operaatioissa aivan kuten yksinkertaisia muuttujia: luku[5] = a + luku[i]/n; indeksinä voidaan käyttää muuttujaa tai vakiota - esimerkki Vaaleissa on 99 ehdokasta. Tuloslaskentaa varten on laadittava ohjelma, joka lukee ehdokkaiden numeroita (2-99), kunnes annetaan negatiivinen arvo. Hylätty äänestyslippu syötetään arvona 0. Määritellään ohjelmaan kokonaislukutaulukko ehdokas, johon kootaan äänimääriä ja liukulukutaulukko osuus, johon lasketaan kunkin ehdokkaan osuus annetuista äänistä. Lopuksi tiedot tulostetaan. 21 T0004 Olli Hämäläinen www.evtek.fi 22 T0004 Olli Hämäläinen www.evtek.fi int main (void) int ehdokas[100] = 0; float osuus[100] = 0.0f; int numero = 1; int summa = 0; /* lukuvaihe */ while (numero >= 0&& numero <100) scanf( %d,&numero); if ((numero==0) (numero >=2 && numero<100)) ehdokas[numero]++; summa++; 23 T0004 Olli Hämäläinen www.evtek.fi /* osuuksien laskenta */ numero = 0; while (numero < 100) osuus[numero] = 100*ehdokas[numero]/summa; numero++; /* seuraavaksi tulosten kirjoittaminen */ printf( Yhteenveto annetuista äänistä\n ; 24 T0004 Olli Hämäläinen www.evtek.fi 4

numero = 2; while (numero < 100) printf( Ehdokkaan %d äänimäärä %d (%f)%%\n, numero, ehdokas[numero], osuus[numero]); numero++; printf ( Hylättyjä ääniä oli %d (%f)%%)\n, ehdokas[0], osuus[0]); printf ( Ääniä annettiin kaikkiaan %d \n, summa); return 0; 25 T0004 Olli Hämäläinen www.evtek.fi 5