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

Koko: px
Aloita esitys sivulta:

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

Transkriptio

1 3. Funktiot Modulaarisessa ohjelmoinnissa jaetaan ohjelma osiin (moduuleihin), jotka ovat yksinkertaisia ja lyhyitä. Modulaarisuudella pyritään parantamaan ohjelman ymmärrettävyyttä, testattavuutta sekä ylläpidettävyyttä. Funktio ryhmittää ohjelmalauseet yhdeksi ohjelmayksiköksi. Funktio suorittaa jonkin tarkasti rajatun tehtävän. 46

2 Kaksi tasoa: Valmiit kirjastofunktiot, esim. printf() ja scanf() Ohjelmoijan itsensä kirjoittamat funktiot. Funktiot aktivoidaan suorittamalla funktion kutsu, joka on tavallinen C-kielen suoritettava lause: fnimi(); Funktion kutsu aloittaa funktion fnimi() ohjelmalauseiden suorituksen Kun funktion sisältämät lauseet on suoritettu, palataan takaisin siihen ohjelmaan, josta funktiota kutsutaan ja suoritetaan funktion kutsua seuraava lause. 47

3 lause1; lause2; fnimi(); lause4; flause1; flause2; flause3; Funktion kutsussa sulkeet ovat pakolliset, niiden avulla kääntäjä osaa päätellä että kyseessä on funktio, eikä tavallinen muuttuja. 48

4 Funktio täytyy määritellä ennenkuin sitä voidaan kutsua. Yleinen muoto yksinkertaistettuna on: funktion otsikko{ paikallisten muuttujien määrittelyt; suoritettavat lauseet; return arvo; } Funktio määritellään otsikkorivin ja lauselohkon avulla ( { ja }-merkkien välissä olevat lauseet). Otsikkorivillä ilmoitetaan funktion tyyppi, nimi ja parametrit. Funktion tyyppi ilmoittaa funktion palauttaman arvon tyypin, jos funktio ei palauta mitään niin tyyppinä on void. 49

5 Tyyppimäärite void esittää näennäistä tyyppiä, johon ei kuulu mitään arvoja. Parametrit ilmoitetaan sulkujen sisällä. Parametrejä voi olla yksi tai useampi, jokaisesta ilmoitetaan erikseen tyyppi ja nimi. Jos parametrejä ei ole käytetään tyyppinä void. 50

6 Funktion paikalliset muuttujat ovat käytettävissä vain funktion sisällä ja vain funktion suorituksen ajan. Suoritettavat lauseet käyttäytyvät kuten main()-funktiossakin. Funktiot on esiteltävä, jos funktioiden määrittelyt sijaitsevat main()-ohjelman perässä tai jossakin toisessa tiedostossa. Funktion esittelyä kutsutaan myös funktion prototyypiksi. Funktion prototyyppi kirjoitetaan ohjelmatiedoston alkuun esikääntäjän direktiivien jälkeen ennen main()-funktiota. Funktion esittelyssä käytetään funktion otsikko-osaa, jonka perään kirjoitetaan puolipiste. 51

7 Esittelyjen avulla kääntäjä tutkii vastaavatko funktioiden kutsut ja määrittelyt toisiaan. parametrien määrä, järjestys ja tyypit Esimerkkifunktio, joka "simuloi" kissaa: /* kissasimulaattori */ void naukaise( void ) { printf("miau\n"); } Funktiota kutsuttaisiin. naukaise(); 52

8 Esimerkkiohjelma, jossa käytetään hyväksi kissa-funktiota. /* kissasimulaattori */ #include <stdio.h> void naukaise(void); /* funktion protyyppi, eli esittely */ int main(void) { /* kissa naukaisee */ naukaise(); return(0); } /* main loppuu tähän */ /* funktion naukaise määrittely eli toteutus */ void naukaise(void) { printf("miau\n"); } 53

9 Funktion parametrit Parametrien avulla funktiolle välitetään tietoa sen ulkopuolelta ja parametrejä käytetään funktiossa kuten paikallisia muuttujia. Parametrit eroavat paikallisista muuttujista siinä, että niille annetaan alkuarvo funktion ulkopuolelta eli funktion kutsussa. Kuten paikalliset muuttujat eivät parametritkään ole käytettävissä funktion ulkopuolella (ne eivät "näy" funktion ulkopuolelle). Eri funktioissa voi olla saman nimisiä muuttujia ja parametrejä, mutta ne ovat toisistaan täysin riippumattomia. 54

10 Funktion otsikkossa (sekä esittelyssä että määrittelyssä) esiteltäviä parametrejä kutsutaan muodollisiksi parametreiksi. Funktion kutsussa annetut parametrit ovat todellisia parametrejä. Funktiota kutsuttaessa kopioidaan todellisen parametrien arvot funktion määrittelyssä vastaavassa kohdassa sijaitsevien muodollisten parametrien arvoiksi. Todellisten ja muodollisten parametrien tyyppien täytyy vastata toisiaan (joissakin tilanteissa C:ssä tehdään ns. automaattisia tyypin-muunnoksia ). Todellisten ja muodollisten parametrien nimien ei tarvitse olla samoja. Todellisena parametrina voi olla muuttujan tunnus, vakio, lauseke tai funktionkutsu. 55

11 Arvon palauttavat funktiot Funktiosta palataan takaisin kutsuvaan ohjelmaan: funktion viimeisen lauseen suorittamisen jälkeen ja/tai return-lauseella Jos funktion on palautettava arvo käytetään return-lausetta, jonka perään kirjoitetaan palautettava arvo. Palautettavan arvon tyypin on oltava funktion otsikossa esiteltyä tyyppiä. Funktiossa voidaan käyttää tyhjää return-lausetta, jos funktio ei palauta mitään ( funktion tyyppi on tällöin void ). 56

12 Yleensä funktiossa on vain yksi return-lause, mutta mikään ei estä käyttämästä useampaakin (joista vain yksi suoritetaan!). Usean return-lauseen käyttö ei ole suositeltava tapa, koska se saattaa vaikeuttaa ohjelman lukemista ja ylläpitoa. 57

13 Esimerkki: /* Funktio laskee kertoman n! esiehto: n on kokonaisluku ja suurempi tai yhtäsuuri kuin 0 */ int kertoma(int n){ int i, tulo = 1; for(i = 0; i <= n; i = i + 1){ tulo = tulo * i; } } return ( tulo ); /* palauttaa luvun n kertoman */ 58

14 funktion otsikossa ilmoitetaan palautettavan arvon tietotyyppi funktio ei tulosta arvoaan, vaan palauttaa sen return-lauseella Funktion kommentti kertoo kaiken, mitä funktiosta pitää tietää, jotta funktiota voi käyttää. mitä funktio tekee mitä sille pitää antaa syöttietoina mikä on syötettävien tietojen tyyppi esiehto kertoo, mitä pitää olla totta ennenkuin funktiota voidaan kutsua Esimerkkiohjelma, joka käyttää edellä esiteltyä kertoma-funktiota. 59

15 #include <stdio.h> /* funktion kertoma prototyyppi, eli esittely */ int kertoma ( int n ); /* Pääfunktio, joka kutsuu funktiota kertoma */ int main ( void ) { int num, tulos; printf ("Anna kokonaisluku väliltä 0-10 > "); scanf ("%d", &num ); /* tarkastetaan luvun arvo ennen funktion kutsumista */ if ( num >= 0 ) { tulos = kertoma ( num ); printf ("Luvun %d kertoma on %d\n", num, tulos ); } else { printf ("Luvun tulee olla positiivinen!"); } return ( 0 ); } /* main päättyy */ 60

16 /* Funktion kertoma määrittely eli toteutus Funktio laskee kertoman n! esiehto: n on kokonaisluku ja suurempi tai yhtäsuuri kuin 0 */ int kertoma ( int n ) { int i, tulo = 1; for ( i = 1; i <= n; i = i + 1 ) { tulo = tulo * i; } } return ( tulo ); /* palauttaa luvun n kertoman */ 61

17 On myös mahdollista määritellä loogisia funktioita, joissa kokonaisluvut vastaavat loogisia arvoja tosi ja epätosi. /* Funktio, joka ilmoittaa onko argumenttina annettu kokonaisluku parillinen. Funktio palauttaa arvon true (1) jos luku on parillinen, muuten funktio palauttaa arvon false (0) */ bool parillinen(int luku){ bool vastaus; vastaus = ((num % 2) == 0); } return(vastaus); 62

18 Käyttö ehtolausekkeena int x; printf( Anna kokonaisluku ); scanf( %d, &x); if(parillinen(x)) printf("luku on parillinen!"); Usean funktion kutsuminen lauseessa: tulos = kertoma(n) / (kertoma(r) * kertoma(n - r)); 63

19 Funktioiden tiedonvälitys Funktion ja sitä kutsuvan ohjelman osan välinen tiedonsiirto näkyy funktion otsikossa, funktiolle ei pitäisi välittää tietoa ns. globaalien muuttujien avulla. Funktiolle välitetään aina vain kopio todellisen parametrin arvosta. Jos funktion halutaan muuttavan kutsuvassa ohjelmassa olevan muuttujan arvoa, välitetään todellisena parametrina muuttujan osoite (oikeastaan kopio osoitteen arvosta). Kun parametrin arvo on muuttujan osoite käytetään nimeä osoiteparametri, muussa tapauksessa on kyseessä arvoparametri. 64

20 Funktion ja sitä kutsuvan ohjelman väliseen tiedonsiirto on kaksi tapaa: arvoparametri ja return-lause osoiteparametri Lisäksi näiden eri variaatiot 65

21 Funktiot ja osoiteparametrit Funktio voi palauttaa return-lauseella korkeintaan yhden arvon. Jos funktion on palautettava useita arvoja, käytetään osoite-parametreja välittämään tietoa ulos funktiosta. Esimerkki funktiosta, joka palauttaa parametrina annetun reaaliluvun etumerkin, kokonaisosan ja desimaaliosan. 66

22 #include <stdio.h> #include <math.h> /* erota -funktion esittely */ void erota(double num, char *merkkio, int *kokoaiso, double *desio); int main(void){ double luku, desimaaliosa; char etumerkki; int kokonaisosa; printf(" Anna reaaliluku >"); scanf("%lf", &luku ); erota (luku, &etumerkki, &kokonaisosa, &desimaaliosa); printf("luvun %.4lf osat\ etumerkki: %c\n", luku, etumerkki ); printf("kokonaisosa: %d\n", kokonaisosa); printf("desimaaliosa: %.4lf\n", desimaaliosa); return ( 0 ); } /* main */ 67

23 /* erota-funktio saa erottaa in-parametrina saamansa reaaliluvun osiinsa. num: in, erotettava reaaliluku *merkkio: out, etumerkki *kokonaiso: out, kokonaisosa *desio: out, desimaaliosa */ void erota(double num, char *merkkio,int *kokonaiso, double *desio ){ double n; /* paikallinen muuttuja */ if ( num < 0 ) *merkkio = '-'; else if ( num == 0 ) *merkkio = ' ' ; else *merkkio = '+'; n = fabs(num); /* luvun n itseisarvo */ *kokonaiso = floor(n); /* kokonaisosa */ *desio = n - *kokonaiso; /* desimaaliosa */ }/* erota */ 68

24 main-funktion parametrit main()-funktiolle voidaan välittää tietoja kutsuttaessa ns. komentoriviparametrien avulla. Komentoriviparametrit kirjoitetaan ohjelman nimen perään, kun ohjelma käynnistetään komentoriviltä. Käyttöjärjestelmä välittää mitkä tahansa komentoriviparametrit ladattavalle ohjelmalle. 69

25 Ohjelma, joka tulostaa saamansa komentoriviparametrit: int main (int argc, char * argv[]){ int laskuri; printf("parametrien lukumäärä: %d\n", argc ); for ( laskuri = 0; laskuri < argc; laskuri++) { printf("parametri %d on %s\n", laskuri, *(argv+laskuri) ); } } return ( 0 ); 70

26 Ensimmäisen parametri argc kertoo kokonaislukuna annettujen parametrien lukumäärän. Toinen parametri argv[] on osoitin merkkijonotaulukkoon, jonne kaikki parametrit on talletettu syöttöjärjestyksessä. Ensimmäisen merkkijonotaulukon alkion sisältönä on aina suoritettavan ohjelman koko hakemistopolku. 71

27 Talletusluokat (Storage classes) C-kielessä on erilaisia talletusluokkia (muistimääreitä), jotka vaikuttavat muuttujien ja funktioiden näkyvyyteen ja elinikään. 1. auto Funktioiden muodollisille parametreille ja paikallisille muuttujille varataan tilaa automaattisesti ja näiden muuttujien käyttämä tila vapautetaan automaattisesti, kun funktion suoritus päättyy. 72

28 2. extern Funktioille voidaan joissakin tilanteissa välittää tietoa muuttujien avulla, jotka on määritelty kaikkien funktioiden ulkopuolella ns. globaalit muuttujat. Globaali muuttuja "näkyy" kaikissa funktioissa, jotka on määritelty globaalin muuttujan määrittelyn jälkeen. Globaaleille muuttujille varataan tilaa koko ohjelman suorituksen ajaksi. Globaalin muuttujan näkyminen voidaan peittää funktiossa määrittelemällä uusi samanniminen paikallinen muuttuja. Kaikki funktioiden nimet ovat tyyppiä extern, eli funktioiden nimet nimet ovat globaaleja. 73

29 Globaalien muuttujien käyttö ei ole vaaratonta, esimerkiksi ohjelmoijalla on tarkoitus käyttää paikallista muuttujaa, jolla on sama nimi kuin globaalilla muuttujalla. Kaikki paikalliseen muuttujaan kohdistuvat toimenpiteet suoritetaan globaaliin muuttujaan, josta seuraa melko varmasti virhetilanne, joka voi olla vaikea havaita. 74

30 Esimerkkiohjelma: #include <stdio.h> int a = 1, b = 2, c = 3; /* globaaleja muuttujia */ int summa(void); /* funktion prototyyppi */ int main ( void ) { printf("%3d\n", summa()); printf("%3d%3d%3d\n", a, b, c ); return (0 ); } /* funktion summa määrittely */ int summa ( void ) { int b, c; /*paikalliset b ja c,globaalit b ja c peittyvät*/ a = b = c = 4; return ( a + b + c ); } 75

31 Globaalin muuttujan määrittelyssä ei käytetä sanaa extern, muuttujaa esiteltäessä. Sanalla extern kerrotaan kääntäjälle "etsi esiteltävän muuttujan määrittely muualta joko tästä tai toisesta tiedostosta". Esimerkiksi jos edellinen ohjelma kirjoitettaisiin kahteen eri tiedostoon. 76

32 tiedosto file1.c: #include <stdio.h> int a = 1, b = 2, c = 3; /* globaaleja muuttujia */ int summa ( void ); /* funktion prototyyppi */ int main ( void ) { printf("%3d\n", summa( ) ); printf("%3d%3d%3d\n", a, b, c ); } return (0 ); 77

33 tiedosto file2.c: /* funktion summa määrittely */ int summa ( void ) { extern int a; /* etsi a:n määrittely muualta */ int b, c; /*paikalliset c ja b, globaalit b ja c peittyvät*/ a = b = c = 4; } return ( a + b + c ); 78

34 3. register register-muistimääreellä kerrotaan kääntäjälle, että jos vain on mahdollista niin muuttujalle varataan tila koneen keskusyksikön rekistereistä, eikä keskusmuistista. Tarkoituksena on tehostaa ohjelman suoritusta. Määre on vain ehdotus kääntäjälle, jos rekistereitä ei ole joutilaana, varataan muuttujalle tilaa normaalisti keskusmuistista. 79

35 Tyypillisiä ehdokkaita ovat silmukkalaskurit ja funktioiden parametrit, esimerkiksi: { } register int i; for(i = 0; i < LIMIT; i++){... } Lohkosta poistuminen vapauttaa muuttujan i. Jos muuttujan määrittelyssä jätetään tyyppi ilmoittamatta, mutta talletusluokka ilmoitetaan, on tyyppi oletusarvoisesti int. 80

36 4. static static-määrettä käytetään kahdessa eri tarkoituksessa. Paikalliset muuttujat säilyttävät arvonsa kun samaan lohkoon tullaan uudestaan, toisin kuin automaattisten muuttujien kohdalla. Esimerkiksi funktio, joka toimii eri tavalla riippuen montako kertaa sitä on kutsuttu. void teejotakin ( void ) { static int lkm = 0; lkm++; if ( lkm % 2 == 0)... /* tee jotakin */ else... /* tee jotakin muuta */ 81

37 lauseessa static int lkm = 0; alustetaan muuttujalle lkm arvo 0 vain funktion teejotakin ensimmäisellä suorituskerralla. static -määreen käyttö globaalien nimien yhteydessä antaa mahdollisuuden rajoittaa muuttujien ja funktioiden "näkyvyyttä". Näkyvyys rajataan vain sen tiedoston loppuun, jossa muuttuja tai funktio on määritelty ts. muuttujat eivät näy funktioissa, jotka on esitelty ennen muuttujan määrittelyä eikä funktioissa, jotka on määritelty eri tiedostoissa. 82

38 Esimerkiksi: void funktioyksi(void) {... /* muuttuja v ei ole käytettävissä */ } static int v; /* static external v */ void funktiokaksi ( void ) {... /* v:tä voidaan käyttää täällä */ } 83

39 Myöskin funktion näkyminen voidaan rajoittaa esim: static int funktiog(void); /* prototyyppi */ void funktiof(void){ /* funktion määrittely */... /*funktiog() "näkyy" täällä, mutta ei muissa tiedostoissa*/ } static int funktiog(void){... } 84

40 C-kielessä globaalit ja staattiset muuttujat alustetaan automaattisesti nollaksi ellei ohjelmoija anna niille alkuarvoja. Automaattisia ja rekisterimuuttujia ei alusteta automaattisesti. 85

41 Funktiokirjastot C-kielessä on valmiiksi määriteltyä funktioita, jotka on koottu funktiokirjastoihin, jotka on jaettu useisiin pienempiin ryhmiin. Funktiokirjastot otetaan käyttöön #include-komennolla kirjoittamalla komennon perään tarvittavan otsikkotiedoston nimi kulmasulkeissa. #include <stdio.h> Otsikkotiedosto sisältää funktioiden määrittelyt. Kulmasulkeet ilmoittavat kääntäjälle, että sisältö sijaitsee standardikirjasto-hakemistossa. C:n standardikirjasto koostuu 15 otsikkotiedostosta. 86

42 Otsikkotiedosto assert.h ctype.h locale.h math.h setjmp.h signal.h stdarg.h stdbool.h stddef.h stdio.h stdlib.h string.h time.h Kuvaus ohjelmien diagnostiikkatoimintoja merkkien testausfunktioita maa- ja kieli-informaatiota tarjoavia funktioita matemaattiset funktiot mahdollistaa ohjelman kulun muuttamisen funktioilla poikkeustilanteiden käsittelyfunktiot muuttuja-argumenttien käsittelymakroja loogisen tietotyypin määrittelyt tietotyyppien ja makrojen määrittelyitä syöttö- ja tulostusfunktioita erilaisia hyötyfunktioita merkkijonojen käsittelyfunktiot päivänmäärä- ja aikafunktioita 87

43 Matemaattiset funktiot. Funktio Kuvaus abs () kokonaislukumuuttujan itseisarvo fabs() reaalilukumuuttujan itseisarvo sin() luvun sini cos() luvun kosini tan() luvun tangentti asin() luvun arcussini acos()... atan()... log() luonnollinen logaritmi log10() 10-kantainen logaritmi exp() eksponenttifunktio sqrt() neliöjuuri pow() luvun korotus potenssiin 88

44 Aika- ja päivänmääräfunktiot Otsikkotiedostossa time.h määritellään funktioita, joilla käsitellään aikaa ja päivänmäärää. Funktioiden avulla voidaan käyttöjärjestelmältä kysyä aika ja päivänmäärä, sekä muuntaa aikamuotoja. Useissa ympäristöissä päivänmäärä ja aika ilmaistaan sekunteina, joka on kulunut päivänmäärästä Funktio stime() time() asctime() clock() kuvaus asettaa ajan ja päivänmäärän palauttaa ajan aikana (GMT) muuntaa ajan muodosta toiseen palauttaa kuluneen prosessoriajan 89

45 Tiedostossa stdlib.h on useita hyötyfunktioita, joista alla muutamia yleisimmin käytettyjä Funktio rand() srand() exit() abort() mallaoc() realloc() free() system() qsort() kuvaus Palauttaa satunnaisluvun Alustaa satunnaislukugeneraattorin ohjelman keskeytys (yleensä virhetilanteessa ) ohjelman epänormaali keskeytys muistin allokointi vapauttaa muistia palauttaa allokoidun muistin järjestelmälle suorittaa käyttöjärjestelmätoiminnon lajittelee taulukon, quicksort-algoritmia käyttäen 90

46 Merkkienkäsittelyfunktiot Funktio isalpha() iscntrl() ispunct() isspace() isupper() islower() tolower() toupper() kuvaus onko merkki aakkonen onko merkki ohjausmerkki onko merkki välimerkki onko merkki välilyönti onko merkki iso kirjain onko merkki pieni kirjain muuttaa kirjaimen pieneksi kirjaimeksi muuttaa merkin isoksi kirjaimeksi 91

47 Yhteenveto: return-lause päättää funktion suorituksen ja palauttaa kontrollin kutsuvalle ympäristölle. Jos return-lause sisältää lausekkeen, lasketaan lausekkeen arvo ja sen arvo palautetaan kutsujalle. Funktion prototyyppi kertoo kääntäjälle funktiolle välitettävien parametrien tyypin ja lukumäärän sekä funktion palauttaman arvon tyypin. Jos funktiolle ei välitetä parametreja käytetään sanaa void. Jos funktio ei palauta mitään käytetään sanaa void. Funktiolle välitetään parametrina aina kopio todellisen parametrin arvosta, joka voi olla joko muutujan sisältö tai sen osoite. Välitettävän tiedon tyypin ja järjestyksen täytyy vastata funktion prototyypissä ja määrittelyssä ilmoitettua tyyppiä ja järjestystä. 92

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

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista Sisällys 1. Omat operaatiot Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

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

Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin. 2. Ohjausrakenteet Ohjausrakenteiden avulla ohjataan ohjelman suoritusta. peräkkäisyys valinta toisto Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet

Lisätiedot

1. Omat operaatiot 1.1

1. Omat operaatiot 1.1 1. Omat operaatiot 1.1 Sisällys Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

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

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan. Osoittimet Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan. Muistilohkon koko riippuu muuttujan tyypistä, eli kuinka suuria arvoja muuttujan

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,

Lisätiedot

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset

815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.

Lisätiedot

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

C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. C-ohjelma. Operaatioiden suoritusjärjestys 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,

Lisätiedot

Tietotyypit ja operaattorit

Tietotyypit ja operaattorit Tietotyypit ja operaattorit Luennossa tarkastellaan yksinkertaisten tietotyyppien int, double ja char muunnoksia tyypistä toiseen sekä esitellään uusia operaatioita. Numeeriset tietotyypit ja muunnos Merkkitieto

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 2 vastaukset Harjoituksen aiheena on BNF-merkinnän käyttö ja yhteys rekursiivisesti etenevään jäsentäjään. Tehtävä 1. Mitkä ilmaukset seuraava

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 4 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten lauseisiin, lausekkeisiin ja aliohjelmiin liittyvät kysymykset. Tehtävä 1. Mitä

Lisätiedot

Muuttujien roolit Kiintoarvo cin >> r;

Muuttujien roolit Kiintoarvo cin >> r; Muuttujien roolit Muuttujilla on ohjelmissa eräitä tyypillisiä käyttötapoja, joita kutsutaan muuttujien rooleiksi. Esimerkiksi muuttuja, jonka arvoa ei muuteta enää kertaakaan muuttujan alustamisen jälkeen,

Lisätiedot

Harjoitus 1 -- Ratkaisut

Harjoitus 1 -- Ratkaisut Kun teet harjoitustyöselostuksia Mathematicalla, voit luoda selkkariin otsikon (ja mahdollisia alaotsikoita...) määräämällä soluille erilaisia tyylejä. Uuden solun tyyli määrätään painamalla ALT ja jokin

Lisätiedot

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

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5) Alkuarvot ja tyyppimuunnokset (1/5) Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int luku = 123; Alkuarvon on oltava muuttujan tietotyypin mukainen, esimerkiksi int-muuttujilla kokonaisluku,

Lisätiedot

Metropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3 opettaja: Pasi Ranne

Metropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3 opettaja: Pasi Ranne Seuraavista tehtävistä saatu yhteispistemäärä (max 7 pistettä) jaetaan luvulla 3.5 ja näin saadaan varsinainen kurssipisteisiin laskettava pistemäärä. Bonustehtävien pisteet jaetaan luvulla 4 eli niistä

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, Vakio Tiedon merkkipohjainen tulostaminen Ohjelmointi (ict1tx006) Tunnus (5.3) Javan tunnus Java-kirjain Java-numero

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print

Lisätiedot

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

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014 18. syyskuuta 2014 IDL - proseduurit Viimeksi käsiteltiin IDL:n interaktiivista käyttöä, mutta tämä on hyvin kömpelöä monimutkaisempia asioita tehtäessä. IDL:llä on mahdollista tehdä ns. proseduuri-tiedostoja,

Lisätiedot

#include // io-toiminnot. //#define KM_MAILISSA int main( ){

#include <stdio.h> // io-toiminnot. //#define KM_MAILISSA int main( ){ demo1.c 30/09/15 08:19 #include // io-toiminnot //#define KM_MAILISSA 1.609 int main( ){ double mailit = 0.0; double kilometrit; const double KM_MAILISSA = 1.609; printf("anna maililukema > ");

Lisätiedot

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

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen Ohjelmointitaito (ict1td002, 12 op) Kevät 2009 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-kehitysympäristö Java-ohjelma ja luokka

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 19.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 19.1.2011 1 / 39 Haluatko antaa palautetta luennoista? Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast

Lisätiedot

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1 Tietorakenteet ja algoritmit syksy 2012 Laskuharjoitus 1 1. Tietojenkäsittelijä voi ajatella logaritmia usein seuraavasti: a-kantainen logaritmi log a n kertoo, kuinka monta kertaa luku n pitää jakaa a:lla,

Lisätiedot

11. Javan toistorakenteet 11.1

11. Javan toistorakenteet 11.1 11. Javan toistorakenteet 11.1 Sisällys Laskuri- ja lippumuuttujat. Sisäkkäiset silmukat. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin

Lisätiedot

Harjoitustyö: virtuaalikone

Harjoitustyö: virtuaalikone Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CS-A1111 14.9.2016 CS-A1111 Ohjelmoinnin peruskurssi Y1 14.9.2016 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,

Lisätiedot

Harjoitus 1 -- Ratkaisut

Harjoitus 1 -- Ratkaisut Kun teet harjoitustyöselostuksia Mathematicalla, voit luoda selkkariin otsikon (ja mahdollisia alaotsikoita...) määräämällä soluille erilaisia tyylejä. Uuden solun tyyli määrätään painamalla ALT ja jokin

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen

Lisätiedot

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa(); Sisällys 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden käsittelyä: sijoitus, vertailu ja varautuminen null-arvoon. Viite metodin paluuarvona.. 7.1 7.2 Olio

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman

Lisätiedot

16. Ohjelmoinnin tekniikkaa 16.1

16. Ohjelmoinnin tekniikkaa 16.1 16. Ohjelmoinnin tekniikkaa 16.1 Sisällys For-lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. If-else-lause vaihtoehtoisesti

Lisätiedot

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

Sisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin Sisällys 17. Ohjelmoinnin tekniikkaa for-lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. if-else-lause vaihtoehtoisesti

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 9.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 9.9.2015 1 / 26 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 22. huhtikuuta 2016 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille! Kirjoittamasi luokat, funktiot ja aliohjelmat

Lisätiedot

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

Sisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä Sisällys 11. Javan toistorakenteet Laskuri- ja lippumuuttujat.. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin lopettaminen break-lauseella.

Lisätiedot

// // whiledemov1.c // #include int main(void){ int luku1 = -1; int luku2 = -1;

// // whiledemov1.c // #include <stdio.h> int main(void){ int luku1 = -1; int luku2 = -1; // // whiledemov1.c // #include int main(void){ int luku1 = -1; int luku2 = -1; while( luku1

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 23.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 23.9.2015 1 / 30 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

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

Sisältö. 2. Taulukot. Yleistä. Yleistä Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 30.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 30.9.2015 1 / 27 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

Johdatus ohjelmointiin / Lausekielinen ohjelmointi 1 & 2

Johdatus ohjelmointiin / Lausekielinen ohjelmointi 1 & 2 Johdatus ohjelmointiin / Lausekielinen ohjelmointi 1 & 2 Syntaksilomake (22.4.2007) C-kielen standardikirjaston funktioita gets(merkkijono); scanf("formaatti", &muuttuja1,..., &muuttujan); sscanf(merkkijono,

Lisätiedot

Modulaarinen ohjelmointi

Modulaarinen ohjelmointi C-ohjelmointi Modulaarinen ohjelmointi Viikko 6 1 Sisältö Modulaarisuus C:ssä Käännösyksikkö ja otsaketiedosto Makefile 2 Ison ohjelman toteuttaminen Kokonaisuus on jaettava hallittaviin osiin Toiminnallisia

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Muuttujat eri muisteissa Ohjelman muistialueen layout Paikallisen ja globaalin muuttujan ominaisuudet Dynaamisen muistinkäytön edut Paikallisten muuttujien dynaamisuus ADT

Lisätiedot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin peruskurssi Y1 Ohjelmoinnin peruskurssi Y1 CSE-A1111 28.9.2016 CSE-A1111 Ohjelmoinnin peruskurssi Y1 28.9.2016 1 / 29 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.

Lisätiedot

C++11 lambdat: [](){} Matti Rintala

C++11 lambdat: [](){} Matti Rintala C++11 lambdat: [](){} Matti Rintala bool(*)(int) Tarve Tarve välittää kirjastolle/funktiolle toiminnallisuutta Callback-funktiot Virhekäsittely Käyttöliittymät Geneeristen kirjastojen räätälöinti STL:n

Lisätiedot

\+jokin merkki tarkoittaa erikoismerkkiä; \n = uusi rivi.

\+jokin merkki tarkoittaa erikoismerkkiä; \n = uusi rivi. 1. Johdanto 1.1 Yleistä Suurten ohjelmien organisointi vaikeaa C:ssä. 1980 Stroustrup lisäsi C:hen olio-ohjelmoinnin (OOP = Object Oriented Programming). C C++: C-ohjelma on (muutamia poikkeuksia lukuunottamatta)

Lisätiedot

7. Oliot ja viitteet 7.1

7. Oliot ja viitteet 7.1 7. Oliot ja viitteet 7.1 Sisällys Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden sijoitus. Viitteiden vertailu. Varautuminen null-arvoon. Viite metodin paluuarvona. Viite metodin

Lisätiedot

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Rekursio Rekursion käyttötapauksia Rekursio määritelmissä Rekursio ongelmanratkaisussa ja ohjelmointitekniikkana Esimerkkejä taulukolla Esimerkkejä linkatulla listalla Hanoin

Lisätiedot

19. Olio-ohjelmointia Javalla 19.1

19. Olio-ohjelmointia Javalla 19.1 19. Olio-ohjelmointia Javalla 19.1 Sisällys Olioiden esittely ja alustus. Metodit Yleistä metodeista. Mihin metodeja tarvitaan? Metodien määrittely. Omat metodit: nimeäminen, paikka, kutsuminen, parametrit

Lisätiedot

Luokassa määriteltävät jäsenet ovat pääasiassa tietojäseniä tai aliohjelmajäseniä. Luokan määrittelyyn liittyvät varatut sanat:

Luokassa määriteltävät jäsenet ovat pääasiassa tietojäseniä tai aliohjelmajäseniä. Luokan määrittelyyn liittyvät varatut sanat: 1. Luokan jäsenet Luokassa määriteltävät jäsenet ovat pääasiassa tietojäseniä tai aliohjelmajäseniä. Luokan määrittelyyn liittyvät varatut sanat: class luokan_nimi tyypit: enum, struct, class, typedef

Lisätiedot

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

Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla: KERTAUSTEHTÄVIÄ Tietue Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla: struct henkilotiedot char nimi [20]; int ika; char puh [10]; ; Edellä esitetty kuvaus määrittelee

Lisätiedot

Ohjelmointiharjoituksia Arduino-ympäristössä

Ohjelmointiharjoituksia Arduino-ympäristössä Ohjelmointiharjoituksia Arduino-ympäristössä Yleistä Arduino-sovelluksen rakenne Syntaksi ja käytännöt Esimerkki ohjelman rakenteesta Muuttujat ja tietotyypit Tietotyypit Esimerkkejä tietotyypeistä Ehtolauseet

Lisätiedot

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

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 6: Python Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 6: Python 15. helmikuuta 2009 Merkkijonot Yleistä Käsittely Muotoiltu tulostus Tiedostot Käsittely Lukeminen Kirjoittaminen Modulit Käyttö Seuraava luento

Lisätiedot

12. Javan toistorakenteet 12.1

12. Javan toistorakenteet 12.1 12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu

Lisätiedot

11. Javan valintarakenteet 11.1

11. Javan valintarakenteet 11.1 11. Javan valintarakenteet 11.1 Sisällys If- ja if--lauseet. Orpo. Valintaa toisin: switch-lause. 11.2 Valintarakenteet Valintarakenteilla ilmaistaan formaalisti, kuinka algoritmin suoritus voi haarautua

Lisätiedot

Sisällys. 15. Lohkot. Lohkot. Lohkot

Sisällys. 15. Lohkot. Lohkot. Lohkot Sisällys 15. Lohkot Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 15.1 15.2 Lohkot Aaltosulkeet

Lisätiedot

58131 Tietorakenteet ja algoritmit (syksy 2015)

58131 Tietorakenteet ja algoritmit (syksy 2015) 58131 Tietorakenteet ja algoritmit (syksy 2015) Harjoitus 2 (14. 18.9.2015) Huom. Sinun on tehtävä vähintään kaksi tehtävää, jotta voit jatkaa kurssilla. 1. Erään algoritmin suoritus vie 1 ms, kun syötteen

Lisätiedot

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla 2.5. YDIN-HASKELL 19 tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla kirjaimilla. Jos Γ ja ovat tyyppilausekkeita, niin Γ on tyyppilauseke. Nuoli kirjoitetaan koneella

Lisätiedot

20. Javan omat luokat 20.1

20. Javan omat luokat 20.1 20. Javan omat luokat 20.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

Moduli 4: Moniulotteiset taulukot & Bittioperaatiot

Moduli 4: Moniulotteiset taulukot & Bittioperaatiot C! : Moniulotteiset taulukot & Bittioperaatiot 15.3.2016 Agenda Pieni kertausharjoitus Moniulotteiset taulukot Esimerkki taulukoista Tauko (bittitehtävä) Binäärioperaatioista Esimerkki (vilkaistaan IP

Lisätiedot

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang Sisällys 20. Javan omat luokat Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.1 20.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

PHP tehtävä 3 Atte Pekarinen TIKT13A 4.12.2014

PHP tehtävä 3 Atte Pekarinen TIKT13A 4.12.2014 PHP-kielen perusteet 3.1 Mitä tarkoittaan heredoc? Milloin sitä kannattaa käyttää? Kirjoita esimerkki sen käyttämisestä. Heredoc on ominaisuus PHP-koodaamisessa, jolla voidaan kirjoittaa pitkiä tekstejä

Lisätiedot

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

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma. 2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä

Lisätiedot

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

Sisältö. 22. Taulukot. Yleistä. Yleistä Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 31.1.2011 T-106.1208 Ohjelmoinnin perusteet Y 31.1.2011 1 / 41 Luentopalaute kännykällä käynnissä! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti Vast

Lisätiedot

1. Kun käyttäjä antaa nollan, niin ei tulosteta enää tuloa 2. Hyväksy käyttäjältä luku vain joltain tietyltä väliltä (esim tai )

1. Kun käyttäjä antaa nollan, niin ei tulosteta enää tuloa 2. Hyväksy käyttäjältä luku vain joltain tietyltä väliltä (esim tai ) Tehtävä do while + Viikko 1 Tehtävä 27. Salasana (MOOC) Viikko 1 Tehtävä 28. Lämpötilat (MOOC) Tehdään ohjelma, joka kysyy käyttäjältä lukua. Luku kerrotaan aina seuraavalla käyttäjän antamalla luvulla

Lisätiedot

Ohjelmointi funktioiden avulla

Ohjelmointi funktioiden avulla Ohjelmointi funktioiden avulla 8 Ohjelmointi funktioiden avulla Ohjelman jakaminen hallittaviin osiin on idea, joka on perustana kaikille ohjelmointikielille. Funktio on kaikkien C++-ohjelmien perusosa.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 1.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 1.2.2010 1 / 47 Sijoituksen arvokehitys, koodi def main(): print "Ohjelma laskee sijoituksen arvon kehittymisen."

Lisätiedot

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen Sisällys 6. Metodit Oliot viestivät metodeja kutsuen. Kuormittaminen. Luokkametodit (ja -attribuutit).. Metodien ja muun luokan sisällön järjestäminen. 6.1 6.2 Oliot viestivät metodeja kutsuen Oliot viestivät

Lisätiedot

Ohjelmointi 2. Jussi Pohjolainen. TAMK» Tieto- ja viestintäteknologia , Jussi Pohjolainen TAMPEREEN AMMATTIKORKEAKOULU

Ohjelmointi 2. Jussi Pohjolainen. TAMK» Tieto- ja viestintäteknologia , Jussi Pohjolainen TAMPEREEN AMMATTIKORKEAKOULU Ohjelmointi 2 Jussi Pohjolainen TAMK» Tieto- ja viestintäteknologia Tietotyypeistä C++ - kielessä useita tietotyyppejä Kirjaimet: char, wchar_t Kokonaisluvut: short, int, long Liukuluvut: float, double

Lisätiedot

Harjoitustyön testaus. Juha Taina

Harjoitustyön testaus. Juha Taina Harjoitustyön testaus Juha Taina 1. Johdanto Ohjelman teko on muutakin kuin koodausta. Oleellinen osa on selvittää, että ohjelma toimii oikein. Tätä sanotaan ohjelman validoinniksi. Eräs keino validoida

Lisätiedot

Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005 Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005 Tällä luennolla Algebralliset tietotyypit Hahmonsovitus (pattern matching) Primitiivirekursio Esimerkkinä binäärinen hakupuu Muistattehan...

Lisätiedot

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

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004 Vertailulauseet Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra == yhtäsuuruus!= erisuuruus < pienempi suurempi >= suurempi tai yhtäsuuri Esimerkkejä: int i=7; int j=10;

Lisätiedot

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä Sisälls 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen.. Viitteiden vertailu. Varautuminen null-arvoon. Viite metodin paluuarvona.. Muuttumattomat ja muuttuvat merkkijonot.

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 16.3.2009 1 / 40 Kertausta: tiedostosta lukeminen Aluksi käsiteltävä tiedosto pitää avata: tiedostomuuttuja = open("teksti.txt","r")

Lisätiedot

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public) Tietorakenteet JAVA-OHJELMOINTI Osa 5: Tietorakenteita Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto Olioita ja tietoja voidaan organisoida määrämuotoisiksi tietorakenteiksi Hyödyllisiä

Lisätiedot

Olio-ohjelmointi Syntaksikokoelma

Olio-ohjelmointi Syntaksikokoelma C++-kielen uusia ominaisuuksia Olio-ohjelmointi Syntaksikokoelma 31.10.2008 Bool-tietotyyppi: Totuusarvo true (1), jos ehto on tosi ja false (0) jos ehto epätosi. Dynaaminen muistinvaraus: Yhden muuttuja

Lisätiedot

5/20: Algoritmirakenteita III

5/20: Algoritmirakenteita III Ohjelmointi 1 / syksy 2007 5/20: Algoritmirakenteita III Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/17 Tämän

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 15.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.2.2010 1 / 46 Merkkijonot Merkkijonojen avulla ohjelmassa voi esittää tekstitietoa, esim. nimiä, osoitteita ja

Lisätiedot

Osoittimet ja taulukot

Osoittimet ja taulukot Osoittimet ja taulukot Hannu Laine Copyright Hannu Laine Osoittimet int main (void) { int a; int *p; //p on osoitinmuuttuja p = &a; *p = 10; printf( %d, *p); //tulostuu muuttujan a sisältö scanf( %d, p);

Lisätiedot

Taulukoiden käsittely Javalla

Taulukoiden käsittely Javalla 1 Taulukoiden käsittely Javalla Mikä taulukko on? Taulukon syntaksi Merkkijonotaulukko Lukutaulukko Taulukon kopiointi 1 Mikä taulukko on? Taulukko on rakenne, minne saadaan talteen usea saman tyyppinen

Lisätiedot

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

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva Sisällys 6. Muuttujat ja Java Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut. boolean- ja char-tyypit. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

Lisätiedot

6. Muuttujat ja Java 6.1

6. Muuttujat ja Java 6.1 6. Muuttujat ja Java 6.1 Sisällys Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut. boolean- ja char-tyypit. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

Lisätiedot

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla Tietojen syöttäminen ohjelmalle Tähän mennessä on käsitelty Javan tulostuslauseet System.out.print ja System.out.println sekä ohjelman perusrakenneosat (muuttujat, vakiot, lauseet). Jotta päästään tekemään

Lisätiedot

1. Esittelyt ja vakiot 1.1 Esittelyt (declarations) Ennen nimen, tunnuksen (identifier) käyttöä se on

1. Esittelyt ja vakiot 1.1 Esittelyt (declarations) Ennen nimen, tunnuksen (identifier) käyttöä se on 1. Esittelyt ja vakiot 1.1 Esittelyt (declarations) Ennen nimen, tunnuksen (identifier) käyttöä se on esiteltävä. char ch; int count=1; struct complex float re, im; complex z; complex sqrt( complex );

Lisätiedot

13. Loogiset operaatiot 13.1

13. Loogiset operaatiot 13.1 13. Loogiset operaatiot 13.1 Sisällys Loogiset operaatiot AND, OR, XOR ja NOT. Operaatioiden ehdollisuus. Bittioperaatiot. Loogiset operaatiot ohjausrakenteissa. Loogiset operaatiot ja laskentajärjestys.

Lisätiedot

12. Näppäimistöltä lukeminen 12.1

12. Näppäimistöltä lukeminen 12.1 12. Näppäimistöltä lukeminen 12.1 Sisällys Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit.

Lisätiedot

Olkoon funktion f määrittelyjoukkona reaalilukuväli (erityistapauksena R). Jos kaikilla määrittelyjoukon luvuilla x 1 ja x 2 on voimassa ehto:

Olkoon funktion f määrittelyjoukkona reaalilukuväli (erityistapauksena R). Jos kaikilla määrittelyjoukon luvuilla x 1 ja x 2 on voimassa ehto: 4 Reaalifunktiot 4. Funktion monotonisuus Olkoon funktion f määrittelyjoukkona reaalilukuväli (erityistapauksena R). Jos kaikilla määrittelyjoukon luvuilla x ja x on voimassa ehto: "jos x < x, niin f (x

Lisätiedot

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

Sisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva Sisällys 6. Muuttujat ja Java Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut, merkit, totuusarvot. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

Lisätiedot

6. Muuttujat ja Java 6.1

6. Muuttujat ja Java 6.1 6. Muuttujat ja Java 6.1 Sisällys Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut, merkit, totuusarvot. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi

Lisätiedot

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

812341A Olio-ohjelmointi Peruskäsitteet jatkoa 812341A Olio-ohjelmointi 2106 Peruskäsitteet jatkoa Luokkakohtaiset piirteet n Yhteisiä kaikille saman luokan olioille n Liittyvät luokkaan, eivät yksittäiseen olioon n Kaikki ko. luokan oliot voivat käyttää

Lisätiedot

Algebra. 1. Ovatko alla olevat väittämät tosia? Perustele tai anna vastaesimerkki. 2. Laske. a) Luku 2 on luonnollinen luku.

Algebra. 1. Ovatko alla olevat väittämät tosia? Perustele tai anna vastaesimerkki. 2. Laske. a) Luku 2 on luonnollinen luku. Algebra 1. Ovatko alla olevat väittämät tosia? Perustele tai anna vastaesimerkki. a) Luku on luonnollinen luku. b) Z c) Luvut 5 6 ja 7 8 ovat rationaalilukuja, mutta luvut ja π eivät. d) sin(45 ) R e)

Lisätiedot

Modulaarinen ohjelmointi Kertaus osoittimista

Modulaarinen ohjelmointi Kertaus osoittimista , kevät 2006 Modulaarinen ohjelmointi Kertaus osoittimista Luento 9 28.3.2006 Kevät 2006 Liisa Marttinen 1 Sisältö Modulaarisuus C:ssä Käännösyksikkö ja otsaketiedosto Makefile Kertaus osoittimista ja

Lisätiedot

Esimerkki 1: Kahviautomaatti.

Esimerkki 1: Kahviautomaatti. Esimerkki 1: Kahviautomaatti. ÄÄRELLISET AUTOAATIT JA SÄÄNNÖLLISET KIELET 2.1 Tilakaaviot ja tilataulut Tarkastellaan aluksi tietojenkäsittelyjärjestelmiä, joilla on vain äärellisen monta mahdollista tilaa.

Lisätiedot

Ohjelman virheet ja poikkeusten käsittely

Ohjelman virheet ja poikkeusten käsittely Ohjelman virheet ja poikkeusten käsittely 17 Ohjelman virheet ja poikkeusten käsittely Poikkeukset ovat tapa ilmoittaa virheistä ja odottamattomista tilanteista C++-ohjelmassasi. Poikkeusten käyttö virheiden

Lisätiedot

Valitse ruudun yläosassa oleva painike Download Scilab.

Valitse ruudun yläosassa oleva painike Download Scilab. Luku 1 Ohjeita ohjelmiston Scilab käyttöön 1.1 Ohjelmiston lataaminen Ohjeet ohjelmiston lataamiseen Windows-koneelle. Mene verkko-osoitteeseen www.scilab.org. Valitse ruudun yläosassa oleva painike Download

Lisätiedot

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana Muilla kielillä: English Suomi Pong-peli, vaihe 3 Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana Jaetaan ohjelma pienempiin palasiin (aliohjelmiin) Lisätään peliin maila (jota ei voi vielä

Lisätiedot

3. Kirjoita seuraavat joukot luettelemalla niiden alkiot, jos mahdollista. Onko jokin joukoista tyhjä joukko?

3. Kirjoita seuraavat joukot luettelemalla niiden alkiot, jos mahdollista. Onko jokin joukoista tyhjä joukko? HY / Avoin yliopisto Johdatus yliopistomatematiikkaan, kesä 2015 Harjoitus 1 Ratkaisuehdotuksia Tehtäväsarja I Seuraavat tehtävät liittyvät luentokalvoihin 1 14. Erityisesti esimerkistä 4 ja esimerkin

Lisätiedot

0. Kertausta. Luvut, lukujoukot (tavalliset) Osajoukot: Yhtälöt ja niiden ratkaisu: N, luonnolliset luvut (1,2,3,... ) Z, kokonaisluvut

0. Kertausta. Luvut, lukujoukot (tavalliset) Osajoukot: Yhtälöt ja niiden ratkaisu: N, luonnolliset luvut (1,2,3,... ) Z, kokonaisluvut 0. Kertausta Luvut, lukujoukot (tavalliset) N, luonnolliset luvut (1,2,3,... ) Z, kokonaisluvut Rationaaliluvut n/m, missä n,m Z Reaaliluvut R muodostavat jatkumon fysiikan lukujoukko Kompleksiluvut C:z

Lisätiedot

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

TAITAJA 2007 ELEKTRONIIKKAFINAALI 31.01-02.02.07 KILPAILIJAN TEHTÄVÄT. Kilpailijan nimi / Nro: KILPAILIJAN TEHTÄVÄT Kilpailijan nimi / Nro: Tehtävän laatinut: Hannu Laurikainen, Deltabit Oy Kilpailutehtävä Kilpailijalle annetaan tehtävässä tarvittavat ohjelmakoodit. Tämä ohjelma on tehty laitteen

Lisätiedot