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

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

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukot C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa. Taulukon muuttujilla (muistipaikoilla) on yhteinen nimi. Jokaiseen yksittäiseen

Lisätiedot

Tietueet. Tietueiden määrittely

Tietueet. Tietueiden määrittely Tietueet Tietueiden määrittely Tietue on tietorakenne, joka kokoaa yhteen eri tyyppistä tietoa yhdeksi asiakokonaisuudeksi. Tähän kokonaisuuteen voidaan viitata yhteisellä nimellä. Auttaa ohjelmoijaa järjestelemään

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

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta C++ - perusteet Java-osaajille luento 5/7: operaattoreiden ylikuormitus, oliotaulukko, parametrien oletusarvot, komentoriviparametrit, constant, inline, Operaattoreiden ylikuormitus Operaattoreiden kuormitus

Lisätiedot

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

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

Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö. Muistin käyttö C-ohjelmassa ssa ohjelman käytössä suoritusaikana oleva muisti jakautuu neljään osaan: koodisegmentti datasegmentti pinosegmentti (stack) kasa (heap) ssa ohjelman koodisegmentti sisältää käännetyn ohjelmakoodin sisältö

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

Tutoriaaliläsnäoloista

Tutoriaaliläsnäoloista Tutoriaaliläsnäoloista Tutoriaaliläsnäolokierroksella voi nyt täyttää anomuksen läsnäolon merkitsemisestä Esim. tagi ei toiminut, korvavaltimon leikkaus, yms. Hyväksyn näitä omaa harkintaa käyttäen Tarkoitus

Lisätiedot

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

Merkkijono määritellään kuten muutkin taulukot, mutta tilaa on varattava yksi ylimääräinen paikka lopetusmerkille: Merkkijonot C-kielessä merkkijono on taulukko, jonka alkiot ovat char -tyyppiä. Taulukon viimeiseksi merkiksi tulee merkki '\0', joka ilmaisee merkkijonon loppumisen. Merkkijono määritellään kuten muutkin

Lisätiedot

Loppukurssin järjestelyt C:n edistyneet piirteet

Loppukurssin järjestelyt C:n edistyneet piirteet C! Loppukurssin järjestelyt C:n edistyneet piirteet 30.3.2017 Ohjelmassa Ohjelmontitehtävän järjestelyt Tietokonetentin järjestelyt Esikääntäjä Parametrilistat Funktio-osoittimet Kunniamainintoja Kuura

Lisätiedot

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

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen Metodit Metodien määrittely Metodin parametrit ja paluuarvo Metodien suorittaminen eli kutsuminen Metodien kuormittaminen 1 Mikä on metodi? Metodi on luokan sisällä oleva yhteenkuuluvien toimintojen kokonaisuus

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 3.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 3.2.2010 1 / 36 Esimerkki: asunnon välityspalkkio Kirjoitetaan ohjelma, joka laskee kiinteistönvälittäjän asunnon

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

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero

Lisätiedot

Osoitin ja viittaus C++:ssa

Osoitin ja viittaus C++:ssa Osoitin ja viittaus C++:ssa Osoitin yksinkertaiseen tietotyyppiin Osoitin on muuttuja, joka sisältää jonkin toisen samantyyppisen muuttujan osoitteen. Ohessa on esimerkkiohjelma, jossa määritellään kokonaislukumuuttuja

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 2.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.2.2011 1 / 37 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

Ohjausrakenteet. Valinta:

Ohjausrakenteet. Valinta: Ohjausrakenteet Luento antaa yleiskuvan siitä kuinka ohjelmassa suorittaan vaihtoehtoisia tehtäviä valintarakenteiden avulla ja kuinka samanlaisia ohjelma-askeleita toistetaan toistorakenteiden avulla

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

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

C-kieli mahdollistaa hyvin tiiviin ja samalla sekavan tavan esittää asioita, kuitenkin hyvän ohjelman tulisi olla mahdollisimman helppolukuinen ja 1. C-kieli yleiskäyttöinen ohjelmointikieli, standardoitu 1990. siirrettävä laiteläheinen pieni ydin, monimutkaiset kokonaisuudet rakennetaan aliohjelmakirjastojen avulla. direktiivit ja esikääntäjien

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

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

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

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python 31. tammikuuta 2009 Ohjelmointi Perusteet Pythonin alkeet Esittely Esimerkkejä Muuttujat Peruskäsitteitä Käsittely

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

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

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

Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python 8. marraskuuta 2010 Ohjelmointi Perusteet Peruskäsitteitä Olio-ohjelmointi Pythonin alkeet Esittely Esimerkkejä Muuttujat

Lisätiedot

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia.

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

Lisätiedot

2. C-kieli ja ongelmanratkaisu

2. C-kieli ja ongelmanratkaisu 2. C-kieli ja ongelmanratkaisu Taustaa Esimerkki C-kielisen ohjelman kehityksestä Kielen yleispiirteet Muuttujat Suoritettavat lauseet Tietotyypit ja lausekkeet Tietojen lukeminen ja tulostaminen 64 C

Lisätiedot

Tietorakenteet (syksy 2013)

Tietorakenteet (syksy 2013) Tietorakenteet (syksy 2013) Harjoitus 1 (6.9.2013) Huom. Sinun on osallistuttava perjantain laskuharjoitustilaisuuteen ja tehtävä vähintään kaksi tehtävää, jotta voit jatkaa kurssilla. Näiden laskuharjoitusten

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 21.1.2009 T-106.1208 Ohjelmoinnin perusteet Y 21.1.2009 1 / 32 Tyypeistä Monissa muissa ohjelmointikielissä (esim. Java ja C) muuttujat on määriteltävä ennen

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

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

Ohjelmassa on käytettävä funktiota laskeparkkimaksu laskemaan kunkin asiakkaan maksu. Funktio floor pyöristää luvun lähimmäksi kokonaisluvuksi. Tehtävä 24. Kallioparkki veloittaa 2 euroa kolmelta ensimmäiseltä pysäköintitunnilta. Yli kolmen tunnin pysäköinnistä veloitetaan lisäksi 0.5 euroa jokaiselta yli menevältä tunnilta. Kuitenkin maksimiveloitus

Lisätiedot

Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot

Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot. Tiedostot Tiedosto yhteenkuuluvien tietojen joukko, joka on tavallisesti talletettu pysyväismuistiin muodostuu tietueista, jotka voivat olla keskenään samanlaisia tai vaihdella tyypiltään tiedostot ovat joko tekstitiedostoja

Lisätiedot

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

Lisätiedot

Luvuilla laskeminen. Esim. 1 Laske 6 21 7

Luvuilla laskeminen. Esim. 1 Laske 6 21 7 Luvuilla laskeminen TI-84 Plus käyttää laskujen suorittamiseen ns. yhtälönkäsittelyjärjestelmää (EOS TM, Equation Operating System), jonka avulla lausekkeiden syöttö tapahtuu matemaattisessa kirjoitusjärjestyksessä.

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

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

Rakenne. C-ohjelmointi: Tietorakenteita ja tyyppejä. Tyyppimuunnoksia aritmeettisten tyyppien välillä. Tyyppimuunnokset. & (bitti and) Bittioperaatiot

Rakenne. C-ohjelmointi: Tietorakenteita ja tyyppejä. Tyyppimuunnoksia aritmeettisten tyyppien välillä. Tyyppimuunnokset. & (bitti and) Bittioperaatiot C-ohjelmointi: Tietorakenteita ja tyyppejä Liisa Marttinen & Tiina Niklander 22.3.2005 Tyyppimuunnokset Tyyppimuunnoksia aritmeettisten tyyppien välillä Laskutoimituksissa tehdään automaattisia tyyppimuunnoksia

Lisätiedot

Metodien tekeminen Javalla

Metodien tekeminen Javalla 1 Metodien tekeminen Javalla Mikä metodi on? Metodin syntaksi Metodi ja sen kutsuminen Parametreista Merkkijonot ja metodi Taulukot ja metodi 1 Mikä metodi on? Metodilla toteutetaan luokkaan toiminnallisuutta.

Lisätiedot

Luento 4 Aliohjelmien toteutus

Luento 4 Aliohjelmien toteutus Luento 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio 1 Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet: aliohjelma, proseduuri parametrit funktio parametrit,

Lisätiedot

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus Jakso 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet: aliohjelma, proseduuri parametrit funktio parametrit,

Lisätiedot

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita valintalauseet 1 Johdantoa kontrollirakenteisiin Tähän saakka ohjelmissa on ollut vain peräkkäisyyttä eli lauseet on suoritettu peräkkäin yksi kerrallaan Tarvitsemme myös valintaa

Lisätiedot

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

1. luento. Ohjelmointi (C) T0004 Syksy 2003. 1. luento. 1. luento. 1. luento. 1. luento. kurssin sisältö ja tavoitteet työmuodot. EVTEK Teknillinen ammattikorkeakoulu Ohjelmointi (C) T0004 Syksy 2003 Olli Hämäläinen kurssin sisältö ja tavoitteet työmuodot luennot 1-2/2003 laboratorioharjoitukset 1-2/2003 kotitehtävät, laboratoriokerrat

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

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

Moduli 5: Kehittyneitä piirteitä

Moduli 5: Kehittyneitä piirteitä C! : Kehittyneitä piirteitä 19.4.2016 Aikataulusta 5. harjoituskierroksen määräaika: pe 22.4. Maari-C keskiviikkoisin ja torstaisin (12-14) Ti 26.4. Harjoitustentti (eli kertausluento) Normaalin luennon

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

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

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

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

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit IDL - proseduurit 25. huhtikuuta 2017 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

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

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

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

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

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

tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi

tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi tietueet eri tyyppisiä tietoja saman muuttujan arvoiksi ero taulukkoon taulukossa alkiot samantyyppisiä tietueessa alkiot voivat olla erityyppisiä tiedot kuitenkin yhteen kuuluvia ohjelmoinnin perusteet,

Lisätiedot

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta. Tehtävä 63. Kirjoita oma versio funktiosta strcmp(),joka saa parametrinaan kaksi merkkiosoitinta. Tee ohjelma, jossa luetaan kaksi merkkijonoa, joita sitten verrataan ko. funktiolla. Tehtävä 64. Kirjoita

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 peruskurssi Y1

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

Lisätiedot

Osa. Listaus 2.1. HELLO.CPP esittelee C++ -ohjelman osat. 14: #include 15: 16: int main() 17: {

Osa. Listaus 2.1. HELLO.CPP esittelee C++ -ohjelman osat. 14: #include <iostream.h> 15: 16: int main() 17: { Osa I 2. oppitunti C++-ohjelman osat Ennen kuin menemme yksityiskohtaisemmin sisälle C++-luokkiin, -muuttujiin jne, katsokaamme ensin, millaisista osista C++-ohjelma koostuu. Tämän tunnin aikana opit seuraavat

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 28.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 28.2.2011 1 / 46 Ohjelmointiprojektin vaiheet 1. Määrittely 2. Ohjelman suunnittelu (ohjelman rakenne ja ohjelman

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

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

17. Javan omat luokat 17.1

17. Javan omat luokat 17.1 17. Javan omat luokat 17.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 17.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

13 Operaattoreiden ylimäärittelyjä

13 Operaattoreiden ylimäärittelyjä 248 13 C++-kielessä voidaan operaattoreita ylimäärittää. Ylimääriteltävää operaattoria voidaan pitää ikäänkuin metodina, joka esitellään luokan esittelyssä ja määritellään luokan ulkopuolella kuten metoditkin.

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

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

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi 1 Javan perusteet Ohjelmointi IPO-malli Java lähdekoodista suoritettavaksi ohjelmaksi Vakio Muuttuja Miten Javalla näytetään tietoa käyttäjälle, miten Javalla luetaan käyttäjän antama syöte Miten Javalla

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

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

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

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

5.6. C-kielen perusteet, osa 6/8, Taulukko 6.1.2008, pva, kuvat jma 5.6. C-kielen perusteet, osa 6/8, Taulukko 6.1.2008, pva, kuvat jma Every cloud has a silver line. - englantilainen sananlasku Tässä osiossa tärkeää: yksi- ja moniulotteinen taulukko Sisältö Yleistä Yksiulotteinen

Lisätiedot

12 Mallit (Templates)

12 Mallit (Templates) 12 Mallit (Templates) Malli on määrittely, jota käyttämällä voidaan luoda samankaltaisten aliohjelmien ja luokkien perheitä. Malli on ohje kääntäjälle luoda geneerisestä tyyppiriippumattomasta ohjelmakoodista

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

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

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus

Aliohjelmatyypit (2) Jakso 4 Aliohjelmien toteutus Jakso 4 Aliohjelmien toteutus Tyypit Parametrit Aktivointitietue (AT) AT-pino Rekursio Aliohjelmatyypit (2) Korkean tason ohjelmointikielen käsitteet: aliohjelma, proseduuri parametrit funktio parametrit,

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

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

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

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

AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin Raimo Nikkilä Aalto-yliopiston sähkötekniikan korkeakoulu - Automaation tietotekniikan tutkimusryhmä 17. tammikuuta 2013

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

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 2.3.2011 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2011 1 / 39 Kertausta: tiedoston avaaminen Kun ohjelma haluaa lukea tai kirjoittaa tekstitiedostoon, on ohjelmalle

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

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

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä 812347A Olio-ohjelmointi, 2015 syksy 2. vsk X Poikkeusten käsittelystä Sisältö 1. Yleistä poikkeusten käsittelystä 2. Poikkeuskäsittelyn perusteita C++:ssa 3. Standardissa määritellyt poikkeukset 4. Poikkeusvarmuus

Lisätiedot

811120P Diskreetit rakenteet

811120P Diskreetit rakenteet 811120P Diskreetit rakenteet 2016-2017 4. Joukot, relaatiot ja funktiot Osa 3: Funktiot 4.3 Funktiot Olkoot A ja B joukkoja. Funktio joukosta A joukkoon B on sääntö, joka liittää yksikäsitteisesti määrätyn

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

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 C! Perusteet 19.1.2015 Työkaluista Perinteinen: komentorivi + tekstieditori Editori: esimerkiksi Kate, Notepad++, Aquamacs (Emacs) Ohjelman kääntäminen ja suorittaminen komentoriviterminaalissa TMC - komentorivityökalu

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

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2009 1 / 35 Listat Esimerkki: halutaan kirjoittaa ohjelma, joka lukee käyttäjältä 30 lämpötilaa. Kun lämpötilat

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

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

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

Sisällys. 19. Olio-ohjelmointia Javalla. Yleistä. Olioiden esittely ja alustus

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

Lisätiedot