WEBVTT Kind: captions; Language: fi 1 00:00:02.800 --> 00:00:04.600 No niin kello on pykälässä. 2 00:00:04.600 --> 00:00:07.520 Oikein hyvää huomenta kaikille ja tervetuloa seuraamaan luentoa numero 3 00:00:07.520 --> 00:00:12.140 51 kurssilla keväällä 2000 kaksikymmentäneljä. 4 00:00:12.140 --> 00:00:15.290 Tän päivän aiheena. Meillä on aliohjelma ja funktiot. 5 00:00:15.290 --> 00:00:19.850 Me ollaan puhuttu aliohjelmisto jo aika paljonkin ja nyt tänään olisi tarkoitus sitten 6 00:00:19.850 --> 00:00:24.140 laajentaa vähän sitä aliohjelman käsitettä koskemaan myöskin funktioita. 7 00:00:24.140 --> 00:00:28.090 Vaaliohjelmassa ja funktiossa on aika paljon samaa, mutta sitten toisaalta 8 00:00:28.090 --> 00:00:30.900 funktio on hieman erilainen ja ikään kuin laajentaa. 9 00:00:30.900 --> 00:00:33.610 Sitten tuota aliohjelman käsitettä. 10 00:00:33.610 --> 00:00:35.970 Siten, että me voidaan käyttää. 11 00:00:35.970 --> 00:00:41.530 Käyttää näitä hieman erilaisiin tilanteisiin ja monipuolisemmin. 12 00:00:41.530 --> 00:00:47.960 Mutta tota lyhyt kertaus tähän alkuun eli mikä aliohjelma on niin aliohjelman tarkoitus 13 00:00:47.960 --> 00:00:52.400 ohjelmoinnissa on toimia tällaisena itsenäisenä ohjelman osana. 14 00:00:52.400 --> 00:00:56.550 Sillä on joku pieni tehtävä, jonka se suorittaa ja 15 00:00:56.550 --> 00:01:00.070 sen etuina voidaan nähdä monia asioita. 16 00:01:00.070 --> 00:01:05.190 Eli ensinnäkin se helpottaa ohjelman jakamista pienempiin osiin, eli kun meillä on joku 17 00:01:05.190 --> 00:01:09.340 tietokoneohjelma niin se yleensä pyrkii ratkaisemaan jonkun ongelman. 18 00:01:09.340 --> 00:01:11.520 Oli se sitten joku. 19 00:01:11.520 --> 00:01:15.340 Teollisuuden ongelma taikka joku tietojen käsittelyyn liittyvä ongelma 20 00:01:15.340 --> 00:01:18.580 tiedonsiirtoon tai vaikka johonkin tehdas asetelmaan. 21 00:01:18.580 --> 00:01:21.800 Eli ja joka tapauksessa meillä on yleensä joku ongelma jota me 22 00:01:21.800 --> 00:01:26.610 halutaan ratkoa ja sitten tää aliohjelma niin kun. 23 00:01:26.610 --> 00:01:29.490 Vaaliohjelmien avulla se ongelma voidaan paloitella pienempiin 24 00:01:29.490 --> 00:01:33.350 osiin, että se on luotettavampaa. Se koodi se on hallittavampaa. 25 00:01:33.350 --> 00:01:35.850 Se meidän ohjelma muokattavampaa. 26 00:01:35.850 --> 00:01:39.250 Yleensä sitä kuitenkin muokkaa useampi kuin yksi henkilö 27 00:01:39.250 --> 00:01:41.290 niin kun se on pienissä osissa paloiteltuna. 28 00:01:41.290 --> 00:01:44.290 Se muokkaaminen on helpompaa ja voidaan myöskin jakaa tehtäviä ja sitten 29 00:01:44.290 --> 00:01:47.210 niille ohjelmointiin siinä tuota tehdessä ja tuota. 30 00:01:47.210 --> 00:01:51.160 Ja ja ja ei me ikään kuin kaikki siellä sekaisin. 31 00:01:51.160 --> 00:01:56.680 Uudelleenkäyttö viittaa oikeastaan nyt tässä 2 asiaan, eli kuten ollaan tuossa aikaisemmin luennoilla 32 00:01:56.680 --> 00:02:01.220 jo tehty, niin me voidaan niitä aliohjelmia sitten käyttää monta kertaa. 33 00:02:01.220 --> 00:02:06.160 Eli me voidaan vaikkapa luoda lumiukko ja monta kertaa sinne meidän peliin. 34 00:02:06.160 --> 00:02:08.820 Mutta toinen näkökulma tähän uudelleenkäyttöön. 35 00:02:08.820 --> 00:02:12.100 Myöskin se, että että me voidaan uudelleen käyttää konkreettisesti 36 00:02:12.100 --> 00:02:16.820 sitä koodia joka me ollaan tehty jossakin toisessa osassa meidän ohjelmaa 37 00:02:16.820 --> 00:02:18.680 taikka sitten ihan toisessa ohjelmassa. 38 00:02:18.680 --> 00:02:21.370 Elikkä sanotaan nyt vaikkapa niin, että me tehtäisiin hyvä. 39 00:02:21.370 --> 00:02:27.010 Aliohjelma joka osaa vaikkapa lajitella pallot oikeaan järjestykseen suurimmasta 40 00:02:27.010 --> 00:02:32.030 pienimpään jotenkin nätisti, niin me voidaan tämmöinen uudelleen käyttää jossakin 41 00:02:32.030 --> 00:02:35.550 toisessa tilanteessa, jossa meillä myöskin on palloja tai vaikka meillä voisi 42 00:02:35.550 --> 00:02:40.070 olla jotain muita objekteja vaikka. Vaikka sanotaan. 43 00:02:40.070 --> 00:02:43.650 Neliöitä tai lukuja tai merkkijonoja. 44 00:02:43.650 --> 00:02:47.850 Eli joka tapauksessa niin eri tilanteisiin se uudelleenkäyttö 45 00:02:47.850 --> 00:02:50.370 mahdollistuu näiden ohjelmien avulla. 46 00:02:50.370 --> 00:02:54.660 No se mistä ei olla vielä puhuttu on tää testaaminen ja aliohjelmien 47 00:02:54.660 --> 00:02:56.850 avulla myöskin testaaminen helpottuu. 48 00:02:56.850 --> 00:03:01.260 Eli tavallaan toinen ääripää voisi olla se, että meillä 49 00:03:01.260 --> 00:03:04.620 on kaikki koodit samassa läjässä. 50 00:03:04.620 --> 00:03:07.560 Jolloin voisi olla tosi vaikea niinku testata sitä jotakin tiettyä 51 00:03:07.560 --> 00:03:11.660 osaa siitä isosta läjästä, mutta kun meillä on se ohjelma paloiteltuna 52 00:03:11.660 --> 00:03:13.600 pieni osio, niin me voidaan aina tämmöinen. 53 00:03:13.600 --> 00:03:16.720 Yksi pieni osa ottaa erilleen ja testata sitä pientä osaa. 54 00:03:16.720 --> 00:03:18.730 Tätä kutsutaan. 55 00:03:18.730 --> 00:03:22.280 Kutsutaan niinku yksikkö testaamiseksi, josta tullaan. 56 00:03:22.280 --> 00:03:25.900 Tullaan puhumaan kyllä tällä kurssilla huomattavasti lisää. 57 00:03:25.900 --> 00:03:28.960 No sitten ihan konkreettisesti, että miten se aliohjelma kirjoitetaan. 58 00:03:28.960 --> 00:03:31.790 Niitähän meillä nyt ollaan tosissaan tehty, niin se kirjoitan sinne luokan 59 00:03:31.790 --> 00:03:36.640 sisään tässä kielessä, koska kyseessä on tällainen olio ohjelmointikieli 60 00:03:36.640 --> 00:03:41.450 niin nää aliohjelma kirjoitetaan nimenomaan luokan sisään, niin kirjoitetaan 61 00:03:41.450 --> 00:03:43.760 myöskin muiden aliohjelmien ulkopuolelle. 62 00:03:43.760 --> 00:03:46.610 Eli toisin sanoen aina aliohjelma kirjoitetaan ikään 63 00:03:46.610 --> 00:03:49.520 kuin rinnakkain sinne luokan sisään. 64 00:03:49.520 --> 00:03:52.320 No tähänkin on sitten poikkeus niinku ohjelmoinnissa monesti on 65 00:03:52.320 --> 00:03:55.280 poikkeuksia ja sitten on poikkeusten poikkeuksia. 66 00:03:55.280 --> 00:04:00.920 Niin tässäkin on silleen nyt tullut sap kieleen ikään kuin uutena ominaisuutena tällainen, 67 00:04:00.920 --> 00:04:04.270 että sä voit tehdä sen aliohjelman sinne toisen aliohjelman sisään. 68 00:04:04.270 --> 00:04:07.090 Se on itse asiassa ollut aika pitkäänkin. 69 00:04:07.090 --> 00:04:10.570 Ja sen etuna sitten on sellainen niin että se. 70 00:04:10.570 --> 00:04:14.670 Näkyvyysalue rajautuu siihen paikalliseen kontekstiin. 71 00:04:14.670 --> 00:04:19.050 Tätä ei tulla käsittelemään oikeastaan tällä kurssilla, mutta se on äärimmäisen hieno ominaisuus 72 00:04:19.050 --> 00:04:25.230 ja tosi hyödyllinen ja ikään kuin estää sitten sen sisemmän aliohjelman tietojen vuotamisen 73 00:04:25.230 --> 00:04:29.700 sinne ulkopuolelle, mikä voi olla ongelma jossain tilanteessa. 74 00:04:29.700 --> 00:04:34.950 Joo mutta että nyt tällä kurssilla tehdään ikään kuin tällaisia aliohjelma, jotka kirjoitetaan 75 00:04:34.950 --> 00:04:38.560 rinnakkain sinne luokan sisään, niin tavallaan tuosta sisäilmasta budjetista nyt ei 76 00:04:38.560 --> 00:04:41.440 tarvitse silleen silleen huolehtia tällä kurssilla. 77 00:04:41.440 --> 00:04:45.550 No joo, toteutus alkaa sanoilla public static tosin niin kun eilen demossa 78 00:04:45.550 --> 00:04:50.160 vähän sivusin asiaa niin jyp peli aliohjelmat monesti alkaa. 79 00:04:50.160 --> 00:04:57.100 Public void ja ja ja tässä on on tavallaan jälleen kerran tullaan tähän olio ohjelmoinnin käsitteisiin 80 00:04:57.100 --> 00:05:01.380 ja ja ja siinä mielessä semmoisen asian, jota käsitellään tarkemmin. 81 00:05:01.380 --> 00:05:03.910 Vasta ohjelmointi 2 kurssilla. 82 00:05:03.910 --> 00:05:08.500 Mutta mutta tuota sivutaan sivutaan tällä kurssilla näitä ja otetaan ainakin 83 00:05:08.500 --> 00:05:12.630 ainakin esimerkkien kautta, että mitä se tarkoittaa. 84 00:05:12.630 --> 00:05:16.870 No nyt sitten puhutaan tästä void sanasta hieman eli eli eli kuten tuossa edellisellä 85 00:05:16.870 --> 00:05:21.500 slaidilla mainitsin niin nää aliohjelma alkaa sanoilla public static ja sitten monesti 86 00:05:21.500 --> 00:05:24.870 siihen perään tulee se void ja sitten jypissä vielä public void. 87 00:05:24.870 --> 00:05:28.220 No mitä tää void tarkoittaa niin se tarkoittaa sitä että se ei palauta 88 00:05:28.220 --> 00:05:33.170 arvoa ja minkälainen on tämmöinen aliohjelma joka ei palauta mitään 89 00:05:33.170 --> 00:05:37.400 arvoa niin otetaan siitä nyt pari esimerkkiä ja. 90 00:05:37.400 --> 00:05:39.880 Ja otetaan tuohon noin niin. 91 00:05:39.880 --> 00:05:43.860 Tämmöiset parametrittomat voidaan ohjelmat eli tulosta koira ja tulosta. 92 00:05:43.860 --> 00:05:47.390 Kissa ja lyhyesti otetaan vielä nyt tuo isoksi tuohon noin elikkä sen voisi 93 00:05:47.390 --> 00:05:51.700 niinku kuvailla tätä voida sillä tavalla niin että se tekee jonkun asian esimerkiksi 94 00:05:51.700 --> 00:05:58.040 tulostaa tekstiä ruudulle taikka lumiukko ja ruudulle tai toteuttaa jonkun ikään 95 00:05:58.040 --> 00:06:03.900 kuin aktin, mutta ei palauta sinne pyytäjälle siis sinne josta sitä saliohjelmaa 96 00:06:03.900 --> 00:06:06.060 kutsuttiin niin mitään arvoa. 97 00:06:06.060 --> 00:06:10.590 Toisin sanoen sillä tyypillisesti on jotain sivuvaikutusta ja tai sivuvaikutus. 98 00:06:10.590 --> 00:06:14.350 Voi olla juurikin se tulostaminen ruudulle. 99 00:06:14.350 --> 00:06:19.310 Lumiukkojen lisääminen pelialueelle tai jotain muuta vastaavaa. 100 00:06:19.310 --> 00:06:23.300 Mutta sen sen tiedon, jota siellä vaaliohjelmassa käsitellään, niin 101 00:06:23.300 --> 00:06:26.250 sitä ei ole välttämättä tarkoitus jatkokäsittely. 102 00:06:26.250 --> 00:06:28.660 No tästä tosiaan puhutaan nyt monta kertaa vielä lisää, mutta 103 00:06:28.660 --> 00:06:31.410 otetaan nyt ihan pari yksinkertaista esimerkkiä. 104 00:06:31.410 --> 00:06:36.810 Eli jos meillä nyt voisi olla vaikka tällainen aliohjelma kun tulosta koira 105 00:06:36.810 --> 00:06:41.830 niin tuosta nimestäkin on jo oikeastaan selvää, että sen ei varsinaisesti 106 00:06:41.830 --> 00:06:45.350 ole tarkoitus tehdä mitään muuta kuin olla ikään kuin täällä erillään tämän 107 00:06:45.350 --> 00:06:47.710 koodin ja tulostaa vaan se tekstikoira. 108 00:06:47.710 --> 00:06:51.650 Mä nyt sen tähän tähän teen. Tällainen tehtiin. 109 00:06:51.650 --> 00:06:54.230 Tehtiin vähän vastaava tuossa aikaisemmin. 110 00:06:54.230 --> 00:06:57.250 Eli nyt jos mä laitan tän pelin tästä käyntiin niin nähdään 111 00:06:57.250 --> 00:07:02.860 niin että sieltä se teksti kyllä. Toivottavasti tulostuu. 112 00:07:02.860 --> 00:07:05.560 Missäs mun teksti nyt oikein on? 113 00:07:05.560 --> 00:07:11.220 Siellä se on noin eli sinne tulostuu koira ja nyt mulla on tässä aliohjelma tulosta. 114 00:07:11.220 --> 00:07:16.320 Koira jota mä voin nyt 2 kertaa käyttää eli mä voin kutsua tätä samaista hienoa tulosta 115 00:07:16.320 --> 00:07:21.080 koiran aliohjelma nyt toiseenkin kertaan ja arvatenkin sinne nyt 2 kertaa sitten se 116 00:07:21.080 --> 00:07:24.850 koira tulostuu eli tässä mielessä mulla on nyt tämmöinen uudelleenkäytettävä palanen 117 00:07:24.850 --> 00:07:29.780 koodia joka ei palauta mitään arvoa, mutta se akti jonka se tekee niin se on täällä 118 00:07:29.780 --> 00:07:34.000 aliohjelman toteutuksessa sitten tehty eli tulostaa tekstiä ruudulle ja nyt haluan 119 00:07:34.000 --> 00:07:37.370 tässä niinku korostaa sitä niin että. Että. 120 00:07:37.370 --> 00:07:40.610 Tavallaan siis tämä on oikea aliohjelma kyllä. 121 00:07:40.610 --> 00:07:43.010 Eli tämä täyttää sen aliohjelman määritelmän. 122 00:07:43.010 --> 00:07:47.890 Se on itsenäinen osa tätä koodia joka tekee jonkun asian, mutta tavallaan 123 00:07:47.890 --> 00:07:51.330 voidaan niinku argumentoida, että onko tavallaan vähän hyödytön aliohjelma, 124 00:07:51.330 --> 00:07:55.910 koska oikeastaan olisi aika sama että mä tän konsolifin toisin tänne meinin 125 00:07:55.910 --> 00:07:59.600 ja se olisi olisi niinku melkein sama asia. 126 00:07:59.600 --> 00:08:04.720 No toki sitten taas toisinpäin argumentoinut, niin meillä voisi olla enemmänkin koodia täällä 127 00:08:04.720 --> 00:08:09.040 tulostusaikaohjelmassa ja se logiikka voisi olla kohtalaisen monimutkainen, jolloinka voisi 128 00:08:09.040 --> 00:08:15.740 olla perusteltua, että me ei tänne meininki sitten ikään kuin tuoda hirveätä läjää semmoista 129 00:08:15.740 --> 00:08:18.300 koodia, joka kuitenkin toistettaisiin uudestaan. 130 00:08:18.300 --> 00:08:23.160 Eli kyllä tässä niinku puolensa ja puolensa on me otetaan vielä toinen esimerkki, 131 00:08:23.160 --> 00:08:27.580 eli tulostetaan nyt sitten toinen teksti vaikkapa kissa ja toteutetaan sekin 132 00:08:27.580 --> 00:08:29.970 aliohjelman tähän, eli jälleen kerran lähdetään. 133 00:08:29.970 --> 00:08:37.110 Sanoilla public static ja nyt void taas kerran ja sitten laitetaan nää sulut jotka aliohjelman 134 00:08:37.110 --> 00:08:43.550 määrittelyn eli tässä juurikin tässä rivillä jossa tää tulosta kissa aliohjelman nimi 135 00:08:43.550 --> 00:08:49.810 on kerrottu tätä kutsutaan määrittelyniksi ja tätäkin kutsutaan määrittelyn niin siihen 136 00:08:49.810 --> 00:08:55.200 tulee aina loppuun nämä kaari sulkeet ja sinne sulkeiden sisään me laitetaan myöhemmin 137 00:08:55.200 --> 00:08:58.700 sitten parametria niinku tullaan näkemään. 138 00:08:58.700 --> 00:09:04.930 Mutta, mutta nyt meillä on niinku 2 aliohjelmaa tässä ja nyt tämä aliohjelma arvatenkin tulostasi 139 00:09:04.930 --> 00:09:10.710 nyt sitten vaikka näin ja ja nyt jos me laitetaan tästä ohjelmakäyntiin. 140 00:09:10.710 --> 00:09:13.000 Niin 3 riviä tekstiä. 141 00:09:13.000 --> 00:09:15.680 Meillä siellä on jo taas niinku äskenkin, niin nyt mä voin sen tulostaa 142 00:09:15.680 --> 00:09:19.130 kissa aliohjelman kutsun laittaa uudestaan. 143 00:09:19.130 --> 00:09:23.600 Mäpä laitan sen nyt tällä kertaa tuonne alkuun, eli nähdään nyt niin, että mulla on. 144 00:09:23.600 --> 00:09:26.220 Vähän eri järjestys nyt tuossa. 145 00:09:26.220 --> 00:09:28.840 Aliohjelmien kutsussa ja tää on ihan tietysti OK. 146 00:09:28.840 --> 00:09:32.900 Mä voin ensin tulostaa kissan, sitten pari koiraa ja taas kissan. 147 00:09:32.900 --> 00:09:34.920 Otetaan tähän väliin yksi tekninen huomio. 148 00:09:34.920 --> 00:09:41.820 Eli nytten mä kirjoitin tänne nämä vaaliohjelmien määrittelyn ja sitten tämän 149 00:09:41.820 --> 00:09:45.040 aliohjelman toteutuksen tällä tavalla tänne alapuolelle. 150 00:09:45.040 --> 00:09:47.800 Nyt mulla tää maini jäi tänne ikään kuin ylös. 151 00:09:47.800 --> 00:09:52.290 Tää on ihan OK. Mä voin kirjoittaa nää aliohjelmien. 152 00:09:52.290 --> 00:09:54.930 Määrittelyn ja toteutuksen myöskin tuonne yläpuolelle. 153 00:09:54.930 --> 00:09:58.810 Eli nyt mä otan tästä hiiren oikealla ja kät ja siirrän sen 154 00:09:58.810 --> 00:10:02.760 tänne mayn aliohjelman yläpuolelle tää käy. 155 00:10:02.760 --> 00:10:07.450 Ja ja ja ei ole siinä mielessä nyt merkitystä sillä, että missä järjestyksessä näitä 156 00:10:07.450 --> 00:10:11.080 ohjelmia kirjoitetaan ja onko tää maini missä kohtaa tätä kokonaisuutta? 157 00:10:11.080 --> 00:10:14.740 Jos mä zuman pikkuisen ulospäin, niin me nähdään nyt niin, että tää luokka 158 00:10:14.740 --> 00:10:19.210 on tässä kuitenkin ympärillä ja nää kaikki 3 aliohjelmaa tulosta koira 159 00:10:19.210 --> 00:10:21.280 mayn ja tulosta kissa ovat täällä luokan sisällä. 160 00:10:21.280 --> 00:10:25.400 Se on se oleellinen asia eli jos me nyt yritän tuosta supistaa itse, mulla on 161 00:10:25.400 --> 00:10:29.680 näppäin oikotie tähän supistamiseen niin nytten tää classi sisältää kaikki ne 162 00:10:29.680 --> 00:10:32.920 mun aliohjelman on nyt täällä supistettua 3 pisteen sisällä. 163 00:10:32.920 --> 00:10:37.250 Jos mä klikkaan siitä sen auki nähdään, että ne vaaliohjelmat ovat täällä. 164 00:10:37.250 --> 00:10:40.920 Jos mä tekisin näin, että mä siirtäisin tän aliohjelman tänne klaßin ulkopuolelle, 165 00:10:40.920 --> 00:10:45.110 niin tästä alkaisi tulla sitten käännösvirheitä eli tulosta koiraa ei enää olisikaan 166 00:10:45.110 --> 00:10:47.630 olemassa vaan se olisi täällä ulkopuolella ja se ei käy. 167 00:10:47.630 --> 00:10:50.910 Eli nyt mä otan anduta siinä ja palaan siihen tilanteeseen missä 168 00:10:50.910 --> 00:10:54.870 se tulosta koira oli siellä sisäpuolella myöskään. 169 00:10:54.870 --> 00:11:00.880 Tämä no siis OK nyt jos tää tulosta koira olisi täällä mainin sisällä, niin tavallaan niinku 170 00:11:00.880 --> 00:11:05.370 äsken tuossa sanoin niin periaatteessa nämä voivat olla täällä sisäkkäin silloin sitä public 171 00:11:05.370 --> 00:11:10.390 olla, mutta ei me tällä aliohjelma tällä kurssilla oikeastaan näitä kirjoiteta, ellei siihen 172 00:11:10.390 --> 00:11:13.490 jotain erityistä erityistä tarvetta, mutta yleensä ei ole. 173 00:11:13.490 --> 00:11:16.010 Eli kirjoitetaan nää alivoimat tälleen. 174 00:11:16.010 --> 00:11:19.810 Niinku sanottu, tavallaan rinnakkain, jolloin ne tulee tähän niinku samalle tasalle. 175 00:11:19.810 --> 00:11:23.160 Sitten kaikki näin. OK. 176 00:11:23.160 --> 00:11:26.540 No siinä nyt oli pari esimerkkiä. 177 00:11:26.540 --> 00:11:31.670 Pari esimerkkiä tota noin niin aliohjelmista, jotka ovat niin sanottuja parametrittomia 178 00:11:31.670 --> 00:11:35.680 voidaaohjelmia ja nyt mennään hieman niihin mielenkiintoisimpiin. 179 00:11:35.680 --> 00:11:38.600 Aliohjelmiin eli funktioihin ja. 180 00:11:38.600 --> 00:11:43.130 Funktioksi kutsutaan aliohjelma, joka palauttaa jonkin arvon. 181 00:11:43.130 --> 00:11:47.630 Heti sanon tässä alkuun, että nimitykset vaihtelevat kirjallisuudessa rakkaalla. 182 00:11:47.630 --> 00:11:53.220 Lapsella on monta nimeä ja joskus tämmöisiä asioita kutsutaan metodein jossakin 183 00:11:53.220 --> 00:11:58.850 niitä kutsutaan edelleen aliohjelma ja ja ja muitakin nimityksiä niille varmaan 184 00:11:58.850 --> 00:12:03.210 varmaan on ehkä tyypillisin kuitenkin nimitys aliohjelma, joka palauttaa jonkin 185 00:12:03.210 --> 00:12:06.200 arvon on tää funktio englanniksi function. 186 00:12:06.200 --> 00:12:12.590 Ja jossakin kirjallisuudessa käytetään funktiosta vielä vielä tai tää funktiota vaaditaan myöskin 187 00:12:12.590 --> 00:12:17.760 se, että se vastaanottaa parametrin, mutta puhutaan siitä hieman kohta lisää. 188 00:12:17.760 --> 00:12:22.440 Mutta nyt erityisominaisuus tälle funktiolle verrattuna tuohon äskeiseen tilanteeseen. 189 00:12:22.440 --> 00:12:26.850 Niin sanotusta voidaan ohjelmista on se, että tän funktion palauttama tulosta voidaan 190 00:12:26.850 --> 00:12:32.460 hyödyntää siellä missä funktiota kutsuttiin ja katsotaan esimerkkejä. 191 00:12:32.460 --> 00:12:37.320 Otetaan yksinkertaisin mahdollinen esimerkki, arvonpalautus arvon palauttavasta 192 00:12:37.320 --> 00:12:41.500 alijäämästä eli funktiosta, jolla nyt ei tässä vielä ole parametreja 193 00:12:41.500 --> 00:12:44.820 ja sen nimi on tämmöinen kun anna luku 5. 194 00:12:44.820 --> 00:12:51.060 Todella todella simppeli esimerkki. Eli. 195 00:12:51.060 --> 00:12:56.640 Sovitaan niin, että mulla voisi olla tämmöinen funktio kun anna luku 5, jota mä nyt tässä lähden 196 00:12:56.640 --> 00:13:02.420 kutsumaan ja niinku nimestä nyt ehkä ehkä saattaa jo arvata, niin sen ainoa tehtävä on on antaa 197 00:13:02.420 --> 00:13:10.460 tänne kutsujalle luku 5 no mikä on luku 5 on niin se on intti arvoinen asia 198 00:13:10.460 --> 00:13:16.880 ja tän inttiarvoisen asian, jonka tää funktio palauttaa, niin mä voin sijoittaa täällä kutsussa 199 00:13:16.880 --> 00:13:19.910 jonnekin muuttujalle tai tehdä sillä ylipäätään mitä mä haluan. 200 00:13:19.910 --> 00:13:22.430 Mutta tässä mä nyt haluan sen sijoittaa. Muuttujalle. 201 00:13:22.430 --> 00:13:27.630 Mä annan sille muuttujalle nimeksi luku ja tietysti tyyppi on nyt intti intti ja 202 00:13:27.630 --> 00:13:35.520 sitten se tuossa noin niin sijoitetaan tällä sijoitus operaattorilla. 203 00:13:35.520 --> 00:13:37.480 Eli nyt hetki mietitään tätä asiaa. 204 00:13:37.480 --> 00:13:40.840 Mitä tässä oikeastaan tapahtuu tuossa äsken mä tulostin koiria ja kissoja 205 00:13:40.840 --> 00:13:44.260 täällä ihan grillillä, mutta nyt tässä ei ole tarkoitus tulostaa mitään, 206 00:13:44.260 --> 00:13:47.200 vaan ainoastaan pyytää tämmöiseltä. 207 00:13:47.200 --> 00:13:51.520 Aliohjelma arvoa ja se on nytten tää luku. 208 00:13:51.520 --> 00:13:53.660 No toteutetaan tää funktio. 209 00:13:53.660 --> 00:13:57.740 No se lähtee ihan samalla tavalla noilla public statiineilla liikkeelle niin kun. 210 00:13:57.740 --> 00:14:01.640 Melkein kaikki konsoli application aliohjelmat tässä. 211 00:14:01.640 --> 00:14:05.220 Tässä meidän kurssilla, mutta nyt tulee sitten eroavaisuus. 212 00:14:05.220 --> 00:14:07.560 Eli tuohon emme kirjoitakaan voida vaan kirjoitan siihen 213 00:14:07.560 --> 00:14:10.040 kohta joku juttu joka kirjoitetaan siihen. 214 00:14:10.040 --> 00:14:13.470 Mutta mutta nyt mä kirjoitan samaan tapaan tuon aliohjelman nimen niin kuin 215 00:14:13.470 --> 00:14:17.310 tuossa aikaisemmin mä siis täytän nuo viivat tuosta kohta noin. 216 00:14:17.310 --> 00:14:21.670 Eli eli sulut tulee sinne niin kun tuossa aikaisemmissa ohjelmissa 217 00:14:21.670 --> 00:14:25.430 ja sitten aalto sulut myöskin perään, mutta nyt sen sijaan että me 218 00:14:25.430 --> 00:14:29.190 tässä lähdettäisiin tulostelemaan jotakin. 219 00:14:29.190 --> 00:14:35.260 Niin me emme tulosta vaan teemme jotakin. 220 00:14:35.260 --> 00:14:38.230 Jotain logiikkaa on meillä tässä. Tässä se logiikka. 221 00:14:38.230 --> 00:14:42.350 Nyt ei ole mitään kovin monimutkaista, koska meidän pitää vaan palauttaa tästä lukuviikko 222 00:14:42.350 --> 00:14:46.950 miten voidaan palauttaa luku 5 niin se tehdään lauseella. 223 00:14:46.950 --> 00:14:49.890 Return ja ja perään. 224 00:14:49.890 --> 00:14:52.610 Laitetaan se arvo joka me halutaan tästä palauttaa. 225 00:14:52.610 --> 00:14:57.830 No nyt kysymys kuuluu että tää tai että kääntyykö tää niin tää ei vielä käänny 226 00:14:57.830 --> 00:15:03.430 koska tää anna luku 5 ei palauta tai täällä määrittelyn rivillä. 227 00:15:03.430 --> 00:15:08.970 No rivillä numero kolmekymmentäyksi meidän pitää tuossa viivojen kohdalla sanoa että minkä tyyppinen 228 00:15:08.970 --> 00:15:13.890 on se arvo jonka tää ritola lause aikanaan tästä toteutuksessa palauttaa. 229 00:15:13.890 --> 00:15:18.330 No nyt me havaitaan niin että tää luku vitonen on tietysti intti, joten kirjoitetaan sen 230 00:15:18.330 --> 00:15:23.620 arvon tyyppi joka tää vitonen nyt on ja tässä tapauksessa on tietysti int. 231 00:15:23.620 --> 00:15:25.420 Näin elikkä nyt. 232 00:15:25.420 --> 00:15:31.640 Meillä on siinä toimiva ohjelma ja tää on nyt niinku ajatusmallista on hyvin erilainen verrattuna 233 00:15:31.640 --> 00:15:35.970 tuohon aikaisempiin tulostusaikaohjelmiin, jossa ei tavallaan palautettu mitään vaan yksinkertaisesti 234 00:15:35.970 --> 00:15:40.140 vaan toteutettiin jotakin tulostusta ja muuta sellaista. 235 00:15:40.140 --> 00:15:43.150 Ja nythän me ei tässä tulosta mitään, vaan otetaan vaan sen lukuvastaan. 236 00:15:43.150 --> 00:15:49.200 No mitä tän mikä tän pointti on nyt täällä että että nyt me ollaan tehty tällainen itsenäinen 237 00:15:49.200 --> 00:15:52.360 ohjelman osa joka vaan palauttaa luvun 5 mitä me täällä tehdään? 238 00:15:52.360 --> 00:15:55.110 No OK nyt me voidaan totta kai tulostaa se. 239 00:15:55.110 --> 00:15:59.530 Ja tää nyt on yksinkertaisin mahdollinen tilanne ja tehdään nyt kuitenkin 240 00:15:59.530 --> 00:16:03.020 niin, että nähdään että se vitonen sieltä saadaan. 241 00:16:03.020 --> 00:16:08.760 No mitä hyötyä tästä nyt oli, niin ei vielä hirveästi mitään, mutta. 242 00:16:08.760 --> 00:16:14.520 Nyt tämän logiikan pointti täällä tulee, tulee sitten vastaan eli eli tässä se 243 00:16:14.520 --> 00:16:18.660 logiikka voisi olla hyvinkin monimutkaista ja mä nyt vaan yritän hiiren askelin 244 00:16:18.660 --> 00:16:22.770 tässä mennä eteenpäin ja muutan sitä logiikkaa nyt mahdollisimman vähän ja tehdään 245 00:16:22.770 --> 00:16:28.070 siinä nyt tuommoinen laskulauseke, jonka arvo ja tulos sitten palautetaan ja edelleen 246 00:16:28.070 --> 00:16:30.730 se on se tietysti se luku vitonen. 247 00:16:30.730 --> 00:16:34.020 OK elikkä tässä on nyt varmaan yksinkertaisin mahdollisin mahdollinen 248 00:16:34.020 --> 00:16:39.000 funktio, jota jota voi voi tehdä, mutta mennään hieman monimutkaisempiin 249 00:16:39.000 --> 00:16:41.670 ja mielenkiintoisempiin asioihin. 250 00:16:41.670 --> 00:16:45.330 Oikeastaan ennen kun mennään vielä mielenkiintoisiin asioihin, niin otetaan toinen esimerkki 251 00:16:45.330 --> 00:16:49.700 jota tää nyt tulee ikään kuin mahdollisimman moni monipuolisesti nyt katsottua. 252 00:16:49.700 --> 00:16:52.150 Aa. 253 00:16:52.150 --> 00:16:56.350 Niin tehdään nyt vaikkapa semmoinen, että tehdään parametrit 254 00:16:56.350 --> 00:17:01.390 on funktio joka eli jollain tavalla. No palataan tuossa. 255 00:17:01.390 --> 00:17:05.450 Slaidissa nyt kuitenkin tuon edelliselle elikkä ollaan vielä täällä. 256 00:17:05.450 --> 00:17:11.150 Arvon palauttamassa aliohjelmassa, joka ei ota vastaan parametreja. 257 00:17:11.150 --> 00:17:20.050 Ja tehdään funktio joka. Palauttaa mun nimen. 258 00:17:20.050 --> 00:17:26.610 Ja otetaan kyseisen funktion palauttamaan arvo talteen sijoitus operaattorilla 259 00:17:26.610 --> 00:17:30.740 sijoitetaan se muuttujan nimeltä mun nimi. 260 00:17:30.740 --> 00:17:34.110 Ja nyt lähdetään tätä taas toteuttamaan ja. 261 00:17:34.110 --> 00:17:38.370 Aliohjelman tai funktion toteutus lähtee sanoilla public static. 262 00:17:38.370 --> 00:17:42.650 Ja nyt mietitään, että mikä on tällaisen funktion paluuarvon tyyppi. 263 00:17:42.650 --> 00:17:48.290 Nyt havaitaan niin että me halutaan että tää palauta mun nimi funktion palauttama arvo 264 00:17:48.290 --> 00:17:51.750 on sellainen että me voidaan sijoittaa se tämmöiselle muuttujalle. 265 00:17:51.750 --> 00:17:54.730 No mikä on arvo joka me voidaan sijoittaa tämmöiselle muuttujalle? 266 00:17:54.730 --> 00:17:57.740 Voidaanko me sijoittaa mun nimiä muuttujalle intti ei? 267 00:17:57.740 --> 00:18:02.750 Voidaanko me sijoittaa mun nimi muuttujalle ball arvo eli touhutaan false no ei voida 268 00:18:02.750 --> 00:18:06.000 voidaanko me siirtää sinne, voidaanko me sijoittaa sinne striimin? 269 00:18:06.000 --> 00:18:09.140 Kyllä elikkä me sijoitetaan sinne string jolloinka tän funktion. 270 00:18:09.140 --> 00:18:12.680 Palauttamaan arvo täytyy olla string tyyppinen. 271 00:18:12.680 --> 00:18:17.430 No tässä nyt on varmaan itsestäänselvää, mutta joka tapauksessa tuohon kohtaan aina kirjoitetaan 272 00:18:17.430 --> 00:18:22.470 siihen voidin tilalle se minkä tyyppisen arvon tää kyseinen funktio palaute ja nyt laitetaan 273 00:18:22.470 --> 00:18:27.340 sitten funktion nimi siihen varmuuden vuoksi otan tuosta kopisten että tulee oikein kirjoitettua 274 00:18:27.340 --> 00:18:30.680 sulut ja aaltosut niinku aina funktion kuuluu. 275 00:18:30.680 --> 00:18:35.920 Ja nyt meillä on vielä täällä punakynää eli return statement is missing ja koska mä 276 00:18:35.920 --> 00:18:40.410 nyt haluan palauttaa tästä mun oman nimeni niin laitetaan sinne nyt. 277 00:18:40.410 --> 00:18:43.690 Sellainen arvo, joka täyttää tämän vaatimuksen. 278 00:18:43.690 --> 00:18:45.740 Tavallaan tän funktion speksin. 279 00:18:45.740 --> 00:18:48.210 Se on tuossa rivillä kolmekymmentäviisi määritelty, että meillä on tässä julkinen 280 00:18:48.210 --> 00:18:51.290 staattinen funktio, jonka pitää palauttaa string arvoa. 281 00:18:51.290 --> 00:18:54.890 Ja niinpä me tässä kolmekymmentäseitsemän rivillä tehdään työtä käskettyä ja jotta 282 00:18:54.890 --> 00:18:59.860 tää nyt ei olisi niin triviaali, niin tehdään nyt pieni muutos tähän. 283 00:18:59.860 --> 00:19:05.250 Eli me määrittelen täällä funktion sisällä nytten 2 muuttujaa. 284 00:19:05.250 --> 00:19:08.940 Tää tulee tekemään tietysti saman asian kuin mitä mitä tuossa äsken. 285 00:19:08.940 --> 00:19:13.160 No nähtiin vilaukselta, mutta että palautetaan nyt arvo, joka on 286 00:19:13.160 --> 00:19:17.600 yhdistelmä etunimestä ja sukunimestä noin vähän. 287 00:19:17.600 --> 00:19:21.600 Nyt nopeasti etenen tässä, mutta mutta siinä mulla on 2 muuttujaa joiden 288 00:19:21.600 --> 00:19:24.370 arvot mä yhdistän käyttämällä plus operaattoria. 289 00:19:24.370 --> 00:19:26.660 Näinhän voidaan yhdistää merkkijonoja toisiinsa. 290 00:19:26.660 --> 00:19:29.920 Laitan väliin vielä välilyönnin jota se näyttää nätiltä ja 291 00:19:29.920 --> 00:19:33.010 nytten tämän funktion palauttamaan tuloksen. 292 00:19:33.010 --> 00:19:36.090 Mä sitten otan vastaan siellä mun pääohjelmassa. 293 00:19:36.090 --> 00:19:38.090 Mä en sille vielä tee mitään niin kun nähdään niin mun 294 00:19:38.090 --> 00:19:41.240 tulosalueen on edelleen täällä tyhjä. 295 00:19:41.240 --> 00:19:44.350 Eli tämä ei vielä yhtään mitään tulosta, vaan mulla on ainoastaan 296 00:19:44.350 --> 00:19:47.050 se muuttujan arvo tuolla tallessa. 297 00:19:47.050 --> 00:19:52.710 Tuolla mun nimi muuttujassa jos ihan tarkkoja ollaan niin raideri tuossa jopa uikuttaa niin 298 00:19:52.710 --> 00:19:57.590 että local variable mun nimi is never juuse eli se on oikeassa siinä että tätä muuttujaa 299 00:19:57.590 --> 00:20:02.370 ei koskaan käytetä mihinkään ja on niinku kyseenalaista että onko tommoinen muuttuja sitten 300 00:20:02.370 --> 00:20:05.730 oikeasti oikeasti tarpeen minne mun kursori muuten hävisi? 301 00:20:05.730 --> 00:20:09.070 Voi ei. Voi ei. 302 00:20:09.070 --> 00:20:15.270 Nyt mulla tuli tässä. Tuli tässä tekniikalla probleema. 303 00:20:15.270 --> 00:20:22.550 Täytyykö mun sulkea tuolla tuo? 304 00:20:22.550 --> 00:20:29.520 No voi ei näköjään toi zoomaus aliohjelma tai zoomausohjelma onkin sellainen, että se. 305 00:20:29.520 --> 00:20:32.640 Nyt se tuli esiin. Onpa outoa. 306 00:20:32.640 --> 00:20:34.440 Tämähän on jännittävää. 307 00:20:34.440 --> 00:20:38.060 No ei se mitään elikkä nyt raideri on silleen oikeassa, että. 308 00:20:38.060 --> 00:20:42.720 Että sitä ei käytetä mihinkään ja jälleen kerran yksinkertaisin mahdollinen käyttötilanne on 309 00:20:42.720 --> 00:20:48.600 se, että mä sen tulostan, mutta jotta tässä nyt vähän saadaan niin kun ikään kun. 310 00:20:48.600 --> 00:20:52.680 Jotain spesiaalia tehtyä niin tulostetaan vaikka 2 kertaa eli nyt 311 00:20:52.680 --> 00:20:57.440 mä pystyn täällä kutsupäässä käyttämään sitä vastaanotettuja arvoja 312 00:20:57.440 --> 00:21:00.180 ja tekemään sille jotain pikkuisen erilaista. 313 00:21:00.180 --> 00:21:05.000 Eli tuolla palauta arvoa palauttaamattomissa aliohjelmissa, kuten näissä kissan 314 00:21:05.000 --> 00:21:07.820 tuloistuksissa, niin se tulostus on aina sidottu siihen. 315 00:21:07.820 --> 00:21:10.020 Aliohjelman toteutukseen. 316 00:21:10.020 --> 00:21:13.280 Sen sijaan tämmöisessä tilanteessa, jossa mä vaan palautan sen arvon, niin mä voin 317 00:21:13.280 --> 00:21:18.180 tehdä sen tiedon jatkokäsittelyn täällä mainissa taikka siellä missä. 318 00:21:18.180 --> 00:21:20.690 Mä sitä tietoa tarvitsen tässä tapauksessa. 319 00:21:20.690 --> 00:21:23.130 Nyt mä käsittelen sitä tietoa mainissa. 320 00:21:23.130 --> 00:21:26.040 No tässä nytten tää tiedonkäsittely on kyllä niin yksinkertaisesti, että 321 00:21:26.040 --> 00:21:29.720 se on vähän jopa naurettavaa, mutta se mitä mä voisin tehdä tälle merkki 322 00:21:29.720 --> 00:21:32.990 on ollut esimerkiksi mä voisin muuntaa sen suuraakkosin. 323 00:21:32.990 --> 00:21:37.510 Mä voisin paloitella sen vaikkapa välilyönnin välilyönti perusteella palasiin 324 00:21:37.510 --> 00:21:40.210 ottaa sieltä etunimeä ja sukunimeä niin edelleen. 325 00:21:40.210 --> 00:21:43.250 Elikkä mä voisin tehdä sille sitä tiedon jatkojalostusta tai vaikka 326 00:21:43.250 --> 00:21:45.970 laskea, että kuinka monta a kirjainta tässä on. 327 00:21:45.970 --> 00:21:50.080 Eli mä en olisi enää siinä mielessä kiinni tässä. 328 00:21:50.080 --> 00:21:53.450 Arvon tuottaneet aliohjelmassa. 329 00:21:53.450 --> 00:21:57.850 Ja siinä miten se toimii, vaan mä voisin ikään kuin jatkojalostaa sitä dataa. 330 00:21:57.850 --> 00:22:02.550 Ja tää avaa aivan uudenlaisia mahdollisuuksia meille sitten. 331 00:22:02.550 --> 00:22:07.330 Siihen tiedon käsittelyyn. 332 00:22:07.330 --> 00:22:11.710 No jotta tässä nyt saadaan vähän monipuolisuutta mukaan ja otetaan otetaan mukaan sitten 333 00:22:11.710 --> 00:22:17.630 funktiolle myöskin parametreja parametreja elikkä funktion parametri. 334 00:22:17.630 --> 00:22:26.210 On asia, joka se funktio voi ottaa vastaan ja tehdä sillä arvolla jotakin 335 00:22:26.210 --> 00:22:31.480 eli mielekkäämpi funktio on sellainen, joka ottaa vastaan yksi tai useampia parametreja. 336 00:22:31.480 --> 00:22:35.340 Ja nyt tehdään näitä useita, koska nää on aika keskeisessä roolissa tällä kurssilla 337 00:22:35.340 --> 00:22:41.950 nää funktiot kaiken kaikkiaan yksinkertaisin mahdollinen esimerkki arvon vastaanottavasta 338 00:22:41.950 --> 00:22:45.480 funktiosta eli parametrin vastaanottavasta funktiosta. 339 00:22:45.480 --> 00:22:50.560 Toisin sanoen funktio, joka ottaa vastaan arvon ja palauttaa arvon, niin mä en keksi mitään muuta 340 00:22:50.560 --> 00:22:56.430 yksinkertaisempaa muuta kuin sellainen joka on identiteetti funktio eli eli. 341 00:22:56.430 --> 00:22:58.350 Palauttaa sen. 342 00:22:58.350 --> 00:23:04.170 Samaisen arvon, jonka se otti vastaan niin tehdään tää nyt desimaali luvulle. 343 00:23:04.170 --> 00:23:07.880 Ja. 344 00:23:07.880 --> 00:23:11.400 Annetaan tälle kaverille nimeksi identiteetti. 345 00:23:11.400 --> 00:23:14.530 Ja heitetään sinne nyt vaikka 4. 9. 346 00:23:14.530 --> 00:23:18.480 Argumentin arvoksi tätä aliohjelma, että funktiolla 347 00:23:18.480 --> 00:23:22.730 annettua arvoa kutsutaan argumentiksi. 348 00:23:22.730 --> 00:23:25.990 No nytten mä oon antanut sille tosissaan argumentiksi luvun 4. 349 00:23:25.990 --> 00:23:29.090 9 ja nyt mun pitäisi sitten määritellä tällainen funktio. 350 00:23:29.090 --> 00:23:30.940 Eli tätä ei ole tietenkään vielä olemassakaan. 351 00:23:30.940 --> 00:23:34.780 Not resort symboli identiteetti sieltä tulee huiputusta. 352 00:23:34.780 --> 00:23:37.610 Ja tota laitetaan tuosta nytten. 353 00:23:37.610 --> 00:23:39.460 Parasta kuvaakin hetkeksi näkyville. 354 00:23:39.460 --> 00:23:43.210 No niin, elikkä tämmöinen funktio pitäisi nyt sitten lähteä toteuttamaan. 355 00:23:43.210 --> 00:23:45.900 Mä ihan hetkeksi nyt ja pysähdyn tähän kohtaan. 356 00:23:45.900 --> 00:23:50.030 Eli tää tyyli ja tapa millä itse tykkään opettaa näitä 357 00:23:50.030 --> 00:23:53.890 funktioiden tekemistä ja toteuttamista. 358 00:23:53.890 --> 00:23:58.680 On se, että että lähdetään ensin täältä suunnittelupöydältä liikkeelle, 359 00:23:58.680 --> 00:24:03.380 eli meillä on tarve tällaiselle funktiolle ja mä kutsun nyt sitä funktiota 360 00:24:03.380 --> 00:24:05.540 ensin ja vasta sen jälkeen toteutan. 361 00:24:05.540 --> 00:24:10.840 Tää on tietysti nyt vähän makuasia, että onko se järjestys tämä tällä tavalla tehtynä 362 00:24:10.840 --> 00:24:16.080 oikea väärän vai mikä, mutta itse miellän niin, että meillä täytyy ensin olla tarve toteuttaa 363 00:24:16.080 --> 00:24:20.350 jokin asia ja vasta sen jälkeen toteutetaan ja nyt tää rivi kolmekymmentäneljä ikään 364 00:24:20.350 --> 00:24:24.190 kuin kirjoittaa sen tarpeen auki eli meillä on tarve. 365 00:24:24.190 --> 00:24:28.080 Sellaiselle funktiolle, joka ottaa vastaan luvun tässä tapauksessa 4. 366 00:24:28.080 --> 00:24:31.530 9 ja palauttaa sen kyseisen luvun takaisin. 367 00:24:31.530 --> 00:24:35.610 No tietysti on niinku tosi kyseenalaista että mihin mihin tällaista funktiota nyt tarvitaan, 368 00:24:35.610 --> 00:24:38.990 mutta me me tullaan tekemään huomattavasti mielenkiintoisia funktioita. 369 00:24:38.990 --> 00:24:43.580 Kyllä no tää lähtee tää funktion toteutus nyt sitten sen jälkeen kun me ollaan tää kutsu 370 00:24:43.580 --> 00:24:48.450 ensin tehty eli tavallaan sillä suunnittelupöydällä nyt viittaan nimenomaan tähän funktion 371 00:24:48.450 --> 00:24:53.390 kutsumiseen ja siihen auki kirjoittamiseen siellä mainissa. 372 00:24:53.390 --> 00:24:57.590 No nytten public strategisilla liikkeelle ja se tulisi palauttaa nyt double 373 00:24:57.590 --> 00:25:01.150 tyyppisen arvon, koska se vastaanottaa double ja palauttaa double niin tähän 374 00:25:01.150 --> 00:25:04.550 public static perään kirjoitetaan silloin double. 375 00:25:04.550 --> 00:25:10.280 No nimi on tuo identiteetti joka viittaa nyt siihen niin että se palauttaa itsensä. 376 00:25:10.280 --> 00:25:12.160 No nyt katsotaan tuota lukua 4. 377 00:25:12.160 --> 00:25:16.470 9 ja sen perusteella tehdään päätös mitä me tuossa kolmekymmentäseitsemän rivillä kirjoitamme 378 00:25:16.470 --> 00:25:20.430 juuri tähän kaarisuljeiden sisään, minkä tyyppinen arvo on 4. 379 00:25:20.430 --> 00:25:23.890 9 niin se on tyypiltään double. 380 00:25:23.890 --> 00:25:27.850 Ja nyt tulee ensimmäinen tämmöinen. 381 00:25:27.850 --> 00:25:34.930 Tenkkapotilaan elikkä mikä on tämän argumentin pointti ja nyt meidän pitäisi 382 00:25:34.930 --> 00:25:39.890 tässä päättää tälle parametrille nimi ja se nimi meidän tulee päättää sen 383 00:25:39.890 --> 00:25:42.550 perusteella, että mikä on tän argumentin pointti. 384 00:25:42.550 --> 00:25:45.430 No tän argumentin pointti on tietysti vaan olla jokin luku, joka 385 00:25:45.430 --> 00:25:47.850 me halutaan sitten siellä funktiota takaisin. 386 00:25:47.850 --> 00:25:51.850 Jotenka tässä yksinkertaisessa esimerkissä on luontevaa nyt laittaa sille 387 00:25:51.850 --> 00:25:55.650 parametrille, eli tässä kolmekymmentäseitsemän rivillä kirjoiteta vaan 388 00:25:55.650 --> 00:25:58.710 kohtaan sulkujen sisään niin ihan vaan sille. 389 00:25:58.710 --> 00:26:02.100 Nimeksi luku. Tämä on nyt muuttuja. 390 00:26:02.100 --> 00:26:06.080 Ja se on parametri moot ja se on siinä mielessä ihan samanlainen muuttuja kuin mikä tahansa 391 00:26:06.080 --> 00:26:12.080 muuttui ja mutta silloin erityinen merkitys siinä mielessä tässä aliohjelmassa, että me voidaan 392 00:26:12.080 --> 00:26:16.560 nyt hyödyntää sitä parametrin arvoa täällä aliohjelman sisällä. 393 00:26:16.560 --> 00:26:20.740 No miten me nyt tässä tilanteessa sitä voidaan hyödyntää, kun meidän tavoitteena 394 00:26:20.740 --> 00:26:24.350 on tehdä identiteetti funktio, niin se ei tee mitään muuta kuin vaan palauttaa 395 00:26:24.350 --> 00:26:26.910 sen saamansa parametrin takaisin. 396 00:26:26.910 --> 00:26:29.990 Eli äärimmäisen yksinkertainen esimerkki ja tää on periaatteessa 397 00:26:29.990 --> 00:26:32.610 kaiketi pitäisi nyt kääntyä minkä takia siellä tulee. 398 00:26:32.610 --> 00:26:38.240 Aamulla on jo siellä lukuinen, mutta laitetaan se nyt vaikka. 399 00:26:38.240 --> 00:26:41.700 Saatu luku ihan sama kunhan siellä nyt joku joku puoli 400 00:26:41.700 --> 00:26:45.450 järkevä nimi laitetaan tuossa noin. Elikkä. 401 00:26:45.450 --> 00:26:47.460 Elikkä nytten se. 402 00:26:47.460 --> 00:26:53.340 Antaa argumenttina luvun saa vastauksena tässä maalatulle alueelle nyt jonkin arvon. 403 00:26:53.340 --> 00:26:56.620 Tässä tapauksessa luulen itsensä ja tää kyseinen arvo sitten sijoitetaan 404 00:26:56.620 --> 00:26:59.300 muuttujan nimeltä saatu luku jälleen kerran. 405 00:26:59.300 --> 00:27:03.880 Nyt jos mä tähän aliohjelman anteeksi ohjelma, niin tässä käännän tuolta bild solution taikka 406 00:27:03.880 --> 00:27:08.760 sitten näppäin oikotietä käyttämällä niin tää kääntyy bild finnish successfully. 407 00:27:08.760 --> 00:27:13.580 Mulla on täällä raiderissa tämmöinen harmaa joka sanoo että local variable saatu luku is 408 00:27:13.580 --> 00:27:17.220 never use eli siinä mielessä vinkkinä meille että tätä ei koskaan käytetä. 409 00:27:17.220 --> 00:27:19.650 Ja jälleen kerran nyt tehdään niinku tällä kurssilla monesti 410 00:27:19.650 --> 00:27:22.030 niin tulostetaan se kuitenkin täällä meissä. 411 00:27:22.030 --> 00:27:25.620 Nytten katsotaan mitä sille sitten voidaan tehdä. 412 00:27:25.620 --> 00:27:29.350 Ja näin sen luku 4. 9 sieltä saatiin pihalle. 413 00:27:29.350 --> 00:27:35.160 Ei kovin mielenkiintoista, mutta mutta tota tästä nyt päästään sitten eteenpäin. 414 00:27:35.160 --> 00:27:39.580 Ja nyt on oikeastaan mulla on tuossa aikaisemmissa näissä aliohjelmissa mitä tuolla on. 415 00:27:39.580 --> 00:27:44.200 Olen nyt tehnyt niin jäänyt nyt tekemättä nämä dokumentaatiot, mutta tää on tosi tärkeätä, 416 00:27:44.200 --> 00:27:50.960 että nää kirjoitetaan heti alkuun nää dokumentaatiot kuntoon ja mä nyt otan tuosta ajan 417 00:27:50.960 --> 00:27:54.340 voittamiseksi kopion jo valmiiksi tehdystä dokumentaatiosta. 418 00:27:54.340 --> 00:27:57.580 Ei kyseessä on identiteetti funktio, toisin sanoen palauttaa 419 00:27:57.580 --> 00:28:00.260 aina saavansa parametrin arvon. 420 00:28:00.260 --> 00:28:04.820 Parametri tulee dokumentoida myöskin tänne dokumentaatio kommenttialueelle. 421 00:28:04.820 --> 00:28:11.640 Sille on erityinen tagitaalla dokumentaatio kommentti tyylissä se luetaan näin eli param 422 00:28:11.640 --> 00:28:16.820 name ja sitten on yksi kuin ja parametrin nimi ja sitten sen perään annetaan. 423 00:28:16.820 --> 00:28:20.200 Suomenkielinen selitys sille, että mistä on kysymys. 424 00:28:20.200 --> 00:28:25.990 Dokumentaatio kommentteihin kirjoitetaan myöskin returns eli sen paluuarvon idea 425 00:28:25.990 --> 00:28:29.740 ja tässä tapauksessa nyt kun tää on tosiaan näin yksinkertainen, niin siinä nyt vaan 426 00:28:29.740 --> 00:28:33.980 laitetaan että se arvo itsessään tai jotain muuta vastaavaa. 427 00:28:33.980 --> 00:28:39.250 Mutta tässä on tää hahmo hahmo tälleen dokumentaatio kommentit. 428 00:28:39.250 --> 00:28:43.430 Tyylille eli summeri ja sitten parametrit kukin erikseen. 429 00:28:43.430 --> 00:28:47.590 Tässä meillä nyt on vain yksi ja sitten returns tagien sisään. 430 00:28:47.590 --> 00:28:50.970 Paluuarvon idea no nyt mä laitan tästä näppäin oikotieltä käyttämällä 431 00:28:50.970 --> 00:28:53.670 tuon dokumentaatio kommentin tulleen vähän piiloon. 432 00:28:53.670 --> 00:28:56.110 Windowsilla se on konttorilla MM. 433 00:28:56.110 --> 00:28:58.910 Sulla se voi olla jotain muuta. 434 00:28:58.910 --> 00:29:02.670 Mutta se nyt ei vielä tarvitse viedä tuossa meidän näyttöalaa 435 00:29:02.670 --> 00:29:09.400 sen enempää, niin laitetaan se tolleen piiloon. 436 00:29:09.400 --> 00:29:13.020 No siinä oli meillä nyt yksinkertaisesti mahdollinen esimerkki, mutta lähdetään tekemään 437 00:29:13.020 --> 00:29:18.840 mielenkiintoisempia ja tehdään seuraavaksi funktio, joka ottaa vastaan jonkin luvun 438 00:29:18.840 --> 00:29:25.340 ja kertoo sen 2 ja palauttaa tämän kerrotun tuloksen. 439 00:29:25.340 --> 00:29:28.500 Ja. 440 00:29:28.500 --> 00:29:32.680 Tuolta otetaan jälleen suunnittelupöydällä esille, eli mennään tänne 441 00:29:32.680 --> 00:29:35.900 meiningin ja lähdetään sitä ideaa hahmottelemaan. 442 00:29:35.900 --> 00:29:41.200 Eli meillä on tavoite nytten kertoa 2 jotenka annetaan tälle funktiolle 443 00:29:41.200 --> 00:29:46.700 nimeksi kerro 2 toisin sanoen kutsutaan funktiota nimellä kerro 2 sitä 444 00:29:46.700 --> 00:29:50.470 ei tietenkään vielä olemassa, mutta se kohta tehdään. 445 00:29:50.470 --> 00:29:55.890 No nyt voidaan tässä niinku sopia niin, että tää olisi sellainen funktio joka ottaa 446 00:29:55.890 --> 00:30:00.810 vastaan nyt kokonaisluvun ja mä annan sinne nyt vaikkapa luvun 2. 447 00:30:00.810 --> 00:30:06.050 OK no mitä mä tällä kerron 2 suluissa 2 jutskailla nyt oikeastaan teen. 448 00:30:06.050 --> 00:30:11.130 No nythän tää ajatus on se, että tähän maalatulle alueelle pitäisi tän funktion kutsumisen 449 00:30:11.130 --> 00:30:19.200 seurauksena ilmaantua tulos ja nytten sen tuloksen mä voin ottaa talteen. 450 00:30:19.200 --> 00:30:25.320 Ja minkälaiseen muuttujaan mä voin ottaa sen talteen esimerkiksi tällaiseen muuttujaan, jonka 451 00:30:25.320 --> 00:30:31.160 tyyppi on tietysti kokonaisluku ja annan sille nyt nimeksi kerrottu luku. 452 00:30:31.160 --> 00:30:34.920 Ja nyt meillä on siinä kutsu valmiina eli rivillä kolmekymmentäseitsemän on nyt 453 00:30:34.920 --> 00:30:41.170 aliohjelman funktion kutsu maalatulla alueella ja tuloksen sijoitus. 454 00:30:41.170 --> 00:30:43.860 Myöskin tuo on yksi kuin merkki kuuluu tähän maalattuun kohtaan. 455 00:30:43.860 --> 00:30:48.720 Nytten niin tuloksen sijoitus muuttujalle nimeltä kerrottu luku. 456 00:30:48.720 --> 00:30:51.100 Eli vielä kerran. 457 00:30:51.100 --> 00:30:54.100 Tällaista funktiota ei ole vielä olemassa, mutta se täytyy nyt 458 00:30:54.100 --> 00:30:57.020 nyt toteuttaa vilkaistaan tuonne problems kohtaan. 459 00:30:57.020 --> 00:31:00.480 Se on mulla tuossa piilossa tilan säästämiseksi, eli siellä nyt näkyy niin tää, 460 00:31:00.480 --> 00:31:05.590 että cannot resort symboli kerro 2 ja jos mä tän ohjelmani käännän niin sieltä 461 00:31:05.590 --> 00:31:11.490 tulee sitten käännös tai kääntäjältä nyt tää varsinainen käännösvirhe ja vitsi 462 00:31:11.490 --> 00:31:15.080 kun mä en edelleenkään tiedä että miten mä saan tuon kokonaan näkymään, mutta 463 00:31:15.080 --> 00:31:18.830 tuossa se nyt näkyy jos jos tota noin niin. 464 00:31:18.830 --> 00:31:22.480 Tossa pitää hiirtä hetken aikaa päällä niin the name kerro 465 00:31:22.480 --> 00:31:25.360 2 does not exist in the current context. 466 00:31:25.360 --> 00:31:27.770 Eli se valittaa siitä että tällaista. 467 00:31:27.770 --> 00:31:29.870 Funktiota ei ole olemassa. 468 00:31:29.870 --> 00:31:35.860 No lähdetään sitä toteuttamaan eli public static, jonka perään paluu arvon tyyppi. 469 00:31:35.860 --> 00:31:41.080 Tässä tapauksessa on tietysti toi int, koska me odotamme sieltä kokonaislukua. 470 00:31:41.080 --> 00:31:44.140 Kerro 2 on funktion nimi. 471 00:31:44.140 --> 00:31:46.980 Ja nyt tulee sitten parametrien luettelo. 472 00:31:46.980 --> 00:31:49.410 No nyt katsotaan taas tätä argumenttia. 473 00:31:49.410 --> 00:31:52.800 No mikä on tää argumentin arvonus on kakkonen. 474 00:31:52.800 --> 00:31:55.500 Argumentin arvon kakkonen, mikä on argumentin pointti? 475 00:31:55.500 --> 00:31:57.710 No se argumentin pointti on. 476 00:31:57.710 --> 00:32:02.890 Olla luku, jota me halutaan nyt tässä kertoa, eli jälleen kerran pyrin antamaan 477 00:32:02.890 --> 00:32:08.690 tälle parametrin nimeksi eli tänne sulkujen sisään kirjoitettavaksi muuttujan 478 00:32:08.690 --> 00:32:12.670 nimeksi sellaisen nimen joka kuvastaa sitä argumentin ideaa. 479 00:32:12.670 --> 00:32:17.940 Eli nyt mä en anna tälle nimeksi vaikkapa 2. 480 00:32:17.940 --> 00:32:21.530 Ja tyypiksi vaikka tää olisi periaatteessa kaa. 481 00:32:21.530 --> 00:32:23.640 Hyvää koodia tällä tavalla. 482 00:32:23.640 --> 00:32:30.550 Koska jos mä haluaisin kertoa luvun 4 2 ja ottaa sen talteen tuolla pääohjelman niin eihän 483 00:32:30.550 --> 00:32:36.880 tää 2 niminen parametrin nyt enää kuvaisi sitä mitä me ollaan tekemässä. 484 00:32:36.880 --> 00:32:41.540 No muutetaan tuota parametri laitetaan sinne 3 tässä nyt on liikaa noita kakkosia, eli nytten 485 00:32:41.540 --> 00:32:51.790 tämä on vain yleisesti ottaen luku, joka me halutaan tässä funktiossa kertoa. 486 00:32:51.790 --> 00:32:57.030 Laitetaan siihen tulosmuuttujia ja palautetaan tulosmuuttujia arvo eli tulosmuuttujia 487 00:32:57.030 --> 00:33:05.420 on tallennetaan luku kerrottuna 2 ja palautetta on tulossa. 488 00:33:05.420 --> 00:33:07.910 Onko olisiko tästä kysymyksiä? 489 00:33:07.910 --> 00:33:11.350 No mitä me nyt täällä tuloksella voidaan sitten tai tällä kerro 490 00:33:11.350 --> 00:33:15.770 2 funktion palauttamalla arvolla nyt tehdä niin. 491 00:33:15.770 --> 00:33:21.190 Tehdään nyt se kaikki sitä yksinkertaisin mahdollinen asia eli tulostetaan. 492 00:33:21.190 --> 00:33:25.730 Funktion palauttama arvo konsolifin ja hyväksikäyttämällä. 493 00:33:25.730 --> 00:33:29.950 Ja kun tuon ihan sieltä putkahti nyt kun me argumenttina on nyt niin kutonen. 494 00:33:29.950 --> 00:33:34.380 Eli kuten eilen vähän demonisoitiin. Selittää. 495 00:33:34.380 --> 00:33:39.910 Niin niin, niin nyt tämä aliohjelma on tarkoitus on se, että me voidaan ikään kuin. 496 00:33:39.910 --> 00:33:44.840 Meillä on tavallaan semmoinen monistuskone, joka voi tehdä asioita monta kertaa. 497 00:33:44.840 --> 00:33:47.150 Eli nyt jos me haluttaisiin kertoa. 498 00:33:47.150 --> 00:33:53.230 Kertoa 2 jotakin lukua monta kertaa niin me voitaisiin tehdä. 499 00:33:53.230 --> 00:33:55.980 Ja ja ja nyt tän. 500 00:33:55.980 --> 00:33:57.990 Tai jos nyt tavallaan lähdetä mennä nyt vähän taaksepäin, 501 00:33:57.990 --> 00:34:00.220 elikkä nyt tää tulosta kissa ja tulosta. 502 00:34:00.220 --> 00:34:03.060 Koira on ikään kuin semmoinen semmoinen monistuskone, joka aina tulostaa 503 00:34:03.060 --> 00:34:06.520 meille samanlaisen paperin sieltä tuloskoneesta. 504 00:34:06.520 --> 00:34:09.810 Mutta entä jos me ei halutakaan aina tulostaa samanlaista paperia, vaan tässä 505 00:34:09.810 --> 00:34:14.460 me haluttaisiin, että joskus me halutaan kertoa 2 luku 3 ja sitten toisaalla 506 00:34:14.460 --> 00:34:19.100 kertaa me haluttaisiin kertoa 2 vaikkapa luku käsi. 507 00:34:19.100 --> 00:34:21.250 Ja sen jälkeen tulostaa. 508 00:34:21.250 --> 00:34:25.010 Tulosta se kerrot uusi kerrottu luku, joka on hieman tietysti 509 00:34:25.010 --> 00:34:27.000 erilainen kuin tuossa ekalla kerralla. 510 00:34:27.000 --> 00:34:31.140 Ja ja tässä mielessä nytten tämmöinen funktio tarjoaa meille huomattavasti monipuolisemmat 511 00:34:31.140 --> 00:34:35.760 monitasoinen mahdollisuudet, kun me voidaan ikään kuin injektoida sinne monistustilanteeseen 512 00:34:35.760 --> 00:34:38.210 hieman erilaisia asioita. 513 00:34:38.210 --> 00:34:41.730 Joskus tulostetaan vähän isompi paperi, joskus pienempi paperi. 514 00:34:41.730 --> 00:34:46.510 Miten me saadaan saadaan tehtyä semmoinen muodostuskone, joka osaa ottaa vastaan informaatiota 515 00:34:46.510 --> 00:34:50.780 siitä tulostettava asiasta, että muistettava tilanteesta. 516 00:34:50.780 --> 00:34:56.650 Niin tää on se tapa eli sulkujen sisään funktiolle annettava informaatio funktio 517 00:34:56.650 --> 00:35:01.830 ottaa vastaan informaation täällä parametreissa hyödyntää sitä parametrin parametrin 518 00:35:01.830 --> 00:35:14.910 on saatua arvoa ja tekee sille jotain ja palauttaa tuloksen. 519 00:35:14.910 --> 00:35:17.650 OK mulla oli tuossa muitakin noita esimerkkejä ennen kuin mennään 520 00:35:17.650 --> 00:35:19.760 noihin summaan keskiarvoon ja niin edelleen. 521 00:35:19.760 --> 00:35:23.030 Niin mä haluan nyt yksi pointin tästä sanoa ennen kuin niihin mennään. 522 00:35:23.030 --> 00:35:26.450 Eli nyt mä oon tässä tehnyt tällä tyylillä niin että mä olen sen funktion 523 00:35:26.450 --> 00:35:30.300 palauttamaan arvon ottanut muuttujaan vastaan. 524 00:35:30.300 --> 00:35:34.550 Tämä maalatulla alueella oleva asia on se funktio 525 00:35:34.550 --> 00:35:37.750 kutsu ja me voidaan sen funktiokutsun. 526 00:35:37.750 --> 00:35:41.600 Palauttamaan arvoa hyödyntää millä tavalla ikinä haluammekaan. 527 00:35:41.600 --> 00:35:44.750 Meidän ei ole mikään pakko sitä sijoittaa tuonne muuttujia niinku tässä nyt 528 00:35:44.750 --> 00:35:48.540 ollaan muutaman kertaan tehty, vaan me voidaan aivan hyvin. 529 00:35:48.540 --> 00:35:51.160 Hyödyntää sitä muillakin tavoilla. 530 00:35:51.160 --> 00:36:01.840 Katsotaan tässä esimerkki. 531 00:36:01.840 --> 00:36:07.640 Eli funktion palauttama arvo voidaan. 532 00:36:07.640 --> 00:36:10.740 Myös tulostaa suoraan ruudulle. 533 00:36:10.740 --> 00:36:14.460 Tää nyt on taas tätä ruudulle tulostamista, mutta koska meillä nyt ei näitä 534 00:36:14.460 --> 00:36:18.860 pelivälineitä ihan hirveästi vielä ole, niin mennään näin. 535 00:36:18.860 --> 00:36:22.510 Elikkä. Tulostetaan. 536 00:36:22.510 --> 00:36:30.510 Kerro 2 funktion palauttamaan tulos ja laitan sen nyt vaikka luku 19 vaihtelun vuoksi. 537 00:36:30.510 --> 00:36:32.920 Eli tää on nyt taas vähän erilainen kirjoitustapa kuin 538 00:36:32.920 --> 00:36:35.690 mitä tuossa aikaisemmin jo vähän totuttiin. 539 00:36:35.690 --> 00:36:41.090 Eli eli sen sijaan että otetaan se tulos muuttujaan ylös, niin tulostetaan se 540 00:36:41.090 --> 00:36:45.010 tulos suoraan tuolla konsolin fridolin ja nyt sieltä pitäisi kaiken järjen mukaan 541 00:36:45.010 --> 00:36:48.370 tulla luku kolmekymmentäkahdeksan ja näin saatiin. 542 00:36:48.370 --> 00:36:53.410 Ja mikä hyöty tästä nyt on, niin on se, että meidän ei tarvitse sitä tulosta erikseen 543 00:36:53.410 --> 00:36:57.200 tallentaa johonkin muuttujaan, antaa sille nimeä ja määritellä sen tyyppiä vaan jos meillä 544 00:36:57.200 --> 00:37:00.810 on vaan tämmöinen vähän kertakäyttötilanne, niin me voidaan yksinkertaisesti vaan laittaa 545 00:37:00.810 --> 00:37:03.320 se funktiokutsu tänne toisen funktiokutsun sisään. 546 00:37:03.320 --> 00:37:07.250 Siis tää flinkin on funktio joka tekee jonkun asian ja me siellä 547 00:37:07.250 --> 00:37:09.870 funktion sisällä annetaan toinen funktio kutsu. 548 00:37:09.870 --> 00:37:16.440 No ehkä se vähän selventäisi asiaa jos mä laittaisin tähän. 549 00:37:16.440 --> 00:37:23.100 On jonkun tämmöisen toisen tekstin ja sitten sen perään yhdistäisin. 550 00:37:23.100 --> 00:37:26.380 Yhdistäisin sen asian, joka tuolta tulee pihalle, niin se on 551 00:37:26.380 --> 00:37:29.150 ehkä vähän nätimmän näköinenkin kaiken lisäksi. 552 00:37:29.150 --> 00:37:30.950 Eli siellä tulosteessa. 553 00:37:30.950 --> 00:37:33.410 Nyt sitten näkyy, näkyy se meidän kirjoittama teksti ja sitten 554 00:37:33.410 --> 00:37:40.800 lisäksi se funktion palauttama lukuarvo. 555 00:37:40.800 --> 00:37:46.680 Eli funktion palauttamaa. Arvoa ei ole pakko. 556 00:37:46.680 --> 00:37:51.950 Tallettaa. Uuteen muuttujaan tai muuttujaan. 557 00:37:51.950 --> 00:37:58.230 Vaan se voidaan. Esimerkiksi. 558 00:37:58.230 --> 00:38:10.610 Tulosta suoraan ruudulle. Noin. 559 00:38:10.610 --> 00:38:15.200 Eli äsken meillä oli esimerkki, jossa meillä oli yksi parametri. 560 00:38:15.200 --> 00:38:17.370 Ja paluu arvo. 561 00:38:17.370 --> 00:38:21.370 No summa funktio olisi hieman jo monimutkaisempi. 562 00:38:21.370 --> 00:38:23.820 Eli jos me haluttaisiin ottaa vaikka. 563 00:38:23.820 --> 00:38:28.930 Vaikkapa tuota noin niin. 3 luvun summa. 564 00:38:28.930 --> 00:38:34.690 Niin meillähän ei riittäisi enää yksi parametri vaan vaan me tarvittaisiin useampi. 565 00:38:34.690 --> 00:38:38.790 On tästä nyt sitten konkreettinen esimerkki. 566 00:38:38.790 --> 00:38:45.140 Eli leikitään nyt niin, että me haluttaisiin laskea 3 desimaaliluvun summa. 567 00:38:45.140 --> 00:38:48.410 Ja tämmöinen summa. 568 00:38:48.410 --> 00:38:50.700 Tietysti vaan siis me voitaisiin tehdä näin, että me 569 00:38:50.700 --> 00:38:55.420 vaan kirjoitettaisi tähän että -1 plus 2. 0 plus 3. 570 00:38:55.420 --> 00:38:57.830 Viisikymmentäviisi. Totta kai me saataisiin se näin laskettua. 571 00:38:57.830 --> 00:39:00.680 Tää on ihan ihan tietysti OK. 572 00:39:00.680 --> 00:39:03.620 Mutta kun tässä nyt on tarkoitus. 573 00:39:03.620 --> 00:39:08.560 Demonstroida funktioiden käyttöä niin tehdään se nyt funktion avulla. 574 00:39:08.560 --> 00:39:10.590 Ja. 575 00:39:10.590 --> 00:39:15.030 Lähdetään kutsumaan funktiota nimeltä summa ja tässä huomautan, että funktioiden 576 00:39:15.030 --> 00:39:18.430 nimet kirjoitetaan aina suur aakkosilla isolla kirjaimella. 577 00:39:18.430 --> 00:39:22.210 Tää alku ja kaikki alaohjelmien nimet muutenkin kirjoitetaan aina 578 00:39:22.210 --> 00:39:25.150 isolla kun nää muuttujien nimet kirjoitetaan pienellä. 579 00:39:25.150 --> 00:39:29.770 En muista että onko sitä tuossa maininnut aika oleellinen asia tässä kirjoitustyyli. 580 00:39:29.770 --> 00:39:32.710 Toisissa ohjelmointikieliissä saattaa olla hieman toisenlaisia. 581 00:39:32.710 --> 00:39:37.530 Käytänteitä eli tää oli riippuu aina sitten siitä ohjelmointikielen käytänteistä. 582 00:39:37.530 --> 00:39:41.210 Mutta nyt meillä on täällä täällä CRP ja ja 3 3 asiaa 583 00:39:41.210 --> 00:39:43.610 halutaan summata yksi miinus ykkönen 2. 584 00:39:43.610 --> 00:39:45.630 Nolla ja sitten vaikka toi 3. 585 00:39:45.630 --> 00:39:49.510 5 vitonen eli 3 asiaa 3 argumenttia on siellä meillä nyt 586 00:39:49.510 --> 00:39:56.460 pilkuilla erotettuna summa funktion kutsun. 2 sulkeiden sisällä. 587 00:39:56.460 --> 00:40:00.520 Eli 3 argumenttia ja tähän meidän nyt pitäisi sitten kirjoittaa toteutus. 588 00:40:00.520 --> 00:40:05.720 No nyt se toteutuuko funktion toteutuksen määrittelyrivi lähtee liikkeelle 589 00:40:05.720 --> 00:40:08.880 jälleen sanoilla public static tää nyt varmaan tulee tässä tässä 590 00:40:08.880 --> 00:40:11.540 niinku sitten selkärangasta monilla. 591 00:40:11.540 --> 00:40:15.140 Mutta nyt ensimmäinen asia mikä pitää päättää on paluuarvon tyyppi. 592 00:40:15.140 --> 00:40:17.010 No ajatellaan nyt lukuja -1 2. 0 3. 593 00:40:17.010 --> 00:40:21.930 50 niiden summa sehän on jotain paljonko nyt on 5. 594 00:40:21.930 --> 00:40:23.730 4. 595 00:40:23.730 --> 00:40:27.090 50 elikkä se on desimaaliluku desimaaliluku on tyypiltään double. 596 00:40:27.090 --> 00:40:29.590 Joten kun me kirjoitetaan tähän paluuarvon tyypiksi. 597 00:40:29.590 --> 00:40:31.390 Double. 598 00:40:31.390 --> 00:40:35.110 OK no summa on se funktion nimi ja se pitäisi siihen tietysti kirjoittaa täsmälleen 599 00:40:35.110 --> 00:40:38.010 samassa muodossa kuin mitä me tuolla kutsussa kirjoitettiin. 600 00:40:38.010 --> 00:40:42.560 Sulut ja aaltosut sinne perään ja nyt meidän pitää päättää sitten parametrien 601 00:40:42.560 --> 00:40:47.370 nimet eli parametrien nimet ja tyypit päätetään sen perusteella mitä 602 00:40:47.370 --> 00:40:51.640 meillä täällä argumentteina on annettu ja. 603 00:40:51.640 --> 00:40:56.780 Ja 3 argumenttia siellä on josta kaikki näyttää olevan tyyppiä double. 604 00:40:56.780 --> 00:41:00.940 Jotenka laitetaan 3 double tyyppistä asiaa siinä, mutta vielä pitää päättää nimet. 605 00:41:00.940 --> 00:41:03.890 No mikä on näiden argumenttien pointtini jälleen kerran? 606 00:41:03.890 --> 00:41:12.160 Niitten pointtihan on vaan nyt olla 3 lukua jotka halutaan summata 607 00:41:12.160 --> 00:41:16.640 yksi ja tässä mielessä me nyt voidaan antaa sinne tämmöiset aika 608 00:41:16.640 --> 00:41:20.160 geneeriset nimet, luku yksi luku 2 ja luku 3. Niillä ei mitään sen kummempaa 609 00:41:20.160 --> 00:41:20.160 merkitystä ole siis jossakin toisessa tilanteessa 610 00:41:20.160 --> 00:41:22.690 voisi olla jos meillä olisi vaikka semmoinen funktio että. 611 00:41:22.690 --> 00:41:28.190 Muuta jonkun moottorin arvoa, niin silloin meillä näyttää. 612 00:41:28.190 --> 00:41:32.010 Ensimmäinen argumentti voisi olla vaikka että kuinka monta astetta ja tuo voisi 613 00:41:32.010 --> 00:41:35.890 merkitä jotain nopeutta ja joku kolmas argumentti voisi olla sitten johonkin joku 614 00:41:35.890 --> 00:41:40.100 kolmas, niin silloin tietysti nää parametrien nimet ei voisi olla näin tämmöisiä 615 00:41:40.100 --> 00:41:45.750 geneerisiä yleisnimi vaan sillä nimeksi pitäisi antaa jokin sellainen, joka kuvaa 616 00:41:45.750 --> 00:41:48.310 huolellisesti sitä argumentin ideaa. 617 00:41:48.310 --> 00:41:51.270 No tässä se argumentin idea nyt on vaan olla tosissaan joku. 618 00:41:51.270 --> 00:41:53.400 Joku luku vaan. 619 00:41:53.400 --> 00:41:56.320 No nyt meidän pitää näistä se summa osata laskea. 620 00:41:56.320 --> 00:42:00.320 Summahan me varmasti osataan laskea, mutta miten se tästä nyt palautetaan? 621 00:42:00.320 --> 00:42:10.400 Meillä on 2 tapaa miten me voidaan sitten palauttaa joko laskea apuun muuttujaan summa. 622 00:42:10.400 --> 00:42:15.690 Ja ihan normaalilla lasku lausekkeella sijoittaa saadun saatu tulos sitten 623 00:42:15.690 --> 00:42:20.730 tuon summan muuttujalle ja palauttaa tää summa tää toimii. 624 00:42:20.730 --> 00:42:23.360 Ja me voidaan tilanne katsoa. 625 00:42:23.360 --> 00:42:27.780 Että on kääntyykö tämä meidän ohjelma no overflow eli kaikki OK ja 626 00:42:27.780 --> 00:42:30.210 tulostetaan nyt vaikka se summa sitten tuonne ruutuun. 627 00:42:30.210 --> 00:42:35.650 Summa 2 muuttujan sisältämä arvo. Ja pitäisi 4. 628 00:42:35.650 --> 00:42:37.830 Viisikymmentäviisi sieltä tulla. Tää on ihan OK. 629 00:42:37.830 --> 00:42:42.210 Toinen tapa miten me tää voidaan toteuttaa on ihan suoraan return 630 00:42:42.210 --> 00:42:46.710 lauseella laskea luku yksi luku 2 ja luku 3. 631 00:42:46.710 --> 00:42:49.780 Molemmat tekee täsmälleen saman asian. 632 00:42:49.780 --> 00:42:52.510 Ja tuo apu muuttujan luominen tuolla. 633 00:42:52.510 --> 00:42:55.460 Funktion sisällä ei tietysti tässä tilanteessa ole välttämättä tarpeen. 634 00:42:55.460 --> 00:42:59.360 Se voi olla hyödyllistä ja jossakin tilanteessa selventää asiaa, niin ehkä 635 00:42:59.360 --> 00:43:03.370 mä nyt jätän tuon tuohon esimerkin vuoksi tällä tavalla. 636 00:43:03.370 --> 00:43:07.240 OK pieni tauko tähän kohtaan eli nytten pointti. 637 00:43:07.240 --> 00:43:12.570 Tärkeä tärkeä pointti tästä nimeämisestä. Eli nyt mulla on täällä. 638 00:43:12.570 --> 00:43:15.710 Funktion nimi summa isolla ässällä kirjoitettuna. 639 00:43:15.710 --> 00:43:19.090 No sitten mulla on täällä summa niminen muuttuja täällä mainissa 640 00:43:19.090 --> 00:43:21.290 niinku huomaat se on pienellä ässällä. 641 00:43:21.290 --> 00:43:23.320 Näissä ei mitään konflikteja ole keskenään. 642 00:43:23.320 --> 00:43:26.770 Eli tässä mulla on pikku asia, täällä on iso ne ovat eri asioita. 643 00:43:26.770 --> 00:43:30.770 Jos mulla olisi jostain syystä täällä summa kirjoitettu isolla ässällä, niin silloin tulisi 644 00:43:30.770 --> 00:43:35.970 konflikti ja metrot delegoitu blaa blaa tää ei käy eli mulla on jo olemassa summa niminen 645 00:43:35.970 --> 00:43:40.140 asia täällä isolla ässällä kirjoitettuna niin ei voi olla toista. 646 00:43:40.140 --> 00:43:47.040 Mutta silloin kun ne on eri eri aakkoskokoina niin homma OK. 647 00:43:47.040 --> 00:43:48.880 Toinen tärkeä pointti. 648 00:43:48.880 --> 00:43:52.160 Mulla on täällä summa niminen muuttuja ja täällä summa niminen muuttuja. 649 00:43:52.160 --> 00:43:54.240 Onko näissä joku konflikti? 650 00:43:54.240 --> 00:43:57.200 Onko tuo keltainen– kenties tuossa joku semmoinen joka liittyy nyt tähän? 651 00:43:57.200 --> 00:44:01.740 Ei ole eli tää keltainen– mikä täällä on niin kertoo vaan siitä, että tätä summan nimistä 652 00:44:01.740 --> 00:44:05.420 muuttujia ei koskaan käytetä täällä mayn pääohjelmassa yhtään mihinkään. 653 00:44:05.420 --> 00:44:09.820 Totta kai mä voisin nyt tulostaa sen täällä näin ja laittaa vaikka 654 00:44:09.820 --> 00:44:15.420 nyt laittaa tuo muotoiluun vaihteeksi elikkä laskimme. 655 00:44:15.420 --> 00:44:21.600 Summa muuttujaan. Summan manuaalisesti. 656 00:44:21.600 --> 00:44:25.500 Laita noin niinku lainausmerkeissä manuaalisesti. 657 00:44:25.500 --> 00:44:27.430 Ja. 658 00:44:27.430 --> 00:44:31.600 Siihen perään sitten summan muuttujan sisältämä arvo. 659 00:44:31.600 --> 00:44:36.800 Eli tämä tämmöinen muotoilujono tyyli tuli tuossa demossa tutuksi. 660 00:44:36.800 --> 00:44:40.760 Ja tarkoittaa sitä, että me voimme tänne. 661 00:44:40.760 --> 00:44:45.950 Merkkijonon sisään kirjoittaa anteeksi muuttujan arvon. 662 00:44:45.950 --> 00:44:48.150 Tämmöisen aalto sulkeiden sisään. 663 00:44:48.150 --> 00:44:51.290 Silloin meidän täytyy kirjoittaa toi dollarimerkki tuonne. 664 00:44:51.290 --> 00:44:55.190 Toinen tapa tulostaa muuttujan arvo on se, että yksinkertaisesti 665 00:44:55.190 --> 00:44:59.500 täällä plus merkillä sitten. 666 00:44:59.500 --> 00:45:06.120 Yhdistämme sen tuohon toiseen merkkijonoon. 667 00:45:06.120 --> 00:45:12.530 Noin omasta mielestäni tämä muotoilujonoon hieman kätevämpi, koska siitä tulee siistimpi versio 668 00:45:12.530 --> 00:45:16.370 kun ei tarvitse näitä plus merkkejä tänne iskee, mutta tää nyt on pikkuisen makuasia, että kumpi 669 00:45:16.370 --> 00:45:21.820 on parempi tapa, mutta mä nyt näytän molemmat teille jotta saatte. 670 00:45:21.820 --> 00:45:25.520 Esimerkkejä kummastakin, mutta tulos on tosiaan sama nyt joko manuaalisesti 671 00:45:25.520 --> 00:45:29.540 laskettuna tai summa summan arvo funktio kutsun avulla. 672 00:45:29.540 --> 00:45:33.730 No nyt tietysti joku saattaa kysyä, että miksi ihmeessä me tarvittaisiin funktio 673 00:45:33.730 --> 00:45:36.600 siihen, että me lasketaan 3 lukua kun sen voi tälleen kivasti laskea. 674 00:45:36.600 --> 00:45:40.680 Näin niin tää nyt on tietysti taas täysin synteettinen esimerkki. 675 00:45:40.680 --> 00:45:44.960 Ja pointtihan tässä nyt on se, että meillä voisi näitä lukuja olla paljon enemmänkin 676 00:45:44.960 --> 00:45:48.530 eli meillä tulee tilanteita missä meillä on tieto rakenteessa 10. satatuhatta tai 677 00:45:48.530 --> 00:45:52.130 miljoonalukua ja silloin me meidän pitää osata laskea se. 678 00:45:52.130 --> 00:45:55.960 Summa huolimatta siitä, että kuinka monta lukua meillä itse asiassa on nyt ne 679 00:45:55.960 --> 00:45:59.570 tässä esimerkin vuoksi vaan tehtiin tällä tavalla 3 kappaletta. 680 00:45:59.570 --> 00:46:03.140 Näitä parametreja manuaalisesti, mutta me tullaan törmäämään tilanteeseen missä 681 00:46:03.140 --> 00:46:06.930 meillä on paljon enemmän niitä lukuja ja silloin tietysti. 682 00:46:06.930 --> 00:46:10.050 Että se manuaalinen laskeminen tähän tyyliin niinku tässä ollaan tehty niin 683 00:46:10.050 --> 00:46:13.610 ei tule kyseeseen, vaan meidän täytyy keksiä joku parempi tapa ja siinä meitä 684 00:46:13.610 --> 00:46:22.420 sitten käytännössä tulee auttamaan se funktio. 685 00:46:22.420 --> 00:46:27.720 OK no sitten lasketaan keskiarvo päästään vähän vähän taas pikkuisen monimutkaisempaan 686 00:46:27.720 --> 00:46:33.130 tilanteeseen ja lähdetään nyt vaikkapa 2 luvun keskiarvosta liikkeelle. 687 00:46:33.130 --> 00:46:38.310 Eli määritellään tulosta varten jo muuttuja valmiiksi annetaan sille nimi keskiarvo 688 00:46:38.310 --> 00:46:43.240 ja sovitaan nyt niin, että me haluttaisiin vaikka laskea sanotaan. 689 00:46:43.240 --> 00:46:48.830 Öö vaikkapa lukujen 5 ja 8 keskiarvo annetaan sinne nyt tämmöiset kokonaisluvut. 690 00:46:48.830 --> 00:46:52.930 Mutta mutta ehkä pointtina tässä voisi olla se niin, että. 691 00:46:52.930 --> 00:46:58.010 Että sen keskiarvoluku voi olla muutakin kuin kokonaisluku tehdään tästä nyt siinä mielessä 692 00:46:58.010 --> 00:47:03.860 hieman hieman tämmöinen erilainen, että se ottaa vastaan kokonaislukuja 2 kappaletta tässä 693 00:47:03.860 --> 00:47:08.080 tilanteessa, mutta voi palauttaa jonkin muun kuin kokonaisluvun. 694 00:47:08.080 --> 00:47:11.160 Ja nyt kun sen voi palauttaa jonkin muun kuin kokonaisluvun, niin se 695 00:47:11.160 --> 00:47:16.420 pitää tietysti tietysti täytyy ottaa sitten asiallisesti vastaan ja tässä 696 00:47:16.420 --> 00:47:20.160 mä nyt sijoitan sen tonne double muuttujalle. 697 00:47:20.160 --> 00:47:27.630 Lähdetään tällaista keskiarvo nimistä muut funktiota toteuttamaan. 698 00:47:27.630 --> 00:47:30.480 Paluuarvon tyyppi sitä tuossa jo vähän. 699 00:47:30.480 --> 00:47:35.020 Kerroinkin eli sen olisi tarkoitus olla double. 700 00:47:35.020 --> 00:47:39.040 Funktion nimi voi olla turvallisinta aina ottaa tuosta copy tuplaklikkaamalla. 701 00:47:39.040 --> 00:47:41.660 Sen saa sieltä helposti. 702 00:47:41.660 --> 00:47:45.940 No nyt nämä 2 kappaletta parametreja ovat jälleen kerran nyt. 703 00:47:45.940 --> 00:47:49.640 Ensimmäinen luku ja sitten toinen luku tässä tapauksessa nyt. 704 00:47:49.640 --> 00:47:53.060 Kuten sanoin, niin voidaan ajatella niin, että ne ovat kokonaislukuja. 705 00:47:53.060 --> 00:47:56.780 Ei ole mitään estettä sille, etteivätkö ne voisi olla myös double lukuja, mutta 706 00:47:56.780 --> 00:48:03.010 mä nyt teen niitä tässä tässä vaan esimerkin vuoksi niistä inttiä. 707 00:48:03.010 --> 00:48:13.180 Pieni hetki. 708 00:48:13.180 --> 00:48:22.500 No keskiarvo me osataan laskea, eikö vaan? Ja. 709 00:48:22.500 --> 00:48:24.640 Sehän tapahtuu sillä tavalla, että otetaan lukujen 710 00:48:24.640 --> 00:48:27.330 summa ja jaetaan se lukujen määrällä. 711 00:48:27.330 --> 00:48:30.470 Tää on varmaan jo alakoulussa kaikille tuttu. 712 00:48:30.470 --> 00:48:34.260 No nyt kun me lähdetään jakamaan tätä noiden lukujen määrällä. 713 00:48:34.260 --> 00:48:37.330 Niin me havaitaan niin, että raideri tässä nyt rupeaa pikkuisen hukuttamaan. 714 00:48:37.330 --> 00:48:40.180 Eli paso plösö fraktion. 715 00:48:40.180 --> 00:48:45.150 No kuinka ollakaan, niin tää ei oikeastaan ole edes käännösvirhe, joten kun me voidaan tää loppujen 716 00:48:45.150 --> 00:48:51.030 lopuksi anteeksi, voidaan loppujen lopuksi tää saatu tulos täällä tulostaa. 717 00:48:51.030 --> 00:48:55.950 Ja katsotaan miten tässä homma nyt menee, eli eli sieltä pitäisi tulla jotakin 718 00:48:55.950 --> 00:49:02.360 joka on desimaaliluku, mutta tulostus on 6 eli tuossa nyt. 719 00:49:02.360 --> 00:49:05.340 Ruotsin ja matikan keskiarvo on on. 720 00:49:05.340 --> 00:49:07.600 Pitäisi olla varmaankin 7 hetkinen 6. 721 00:49:07.600 --> 00:49:11.660 5 eikö niin että tuossa on 3 eroa ja 2 lukua niin pitäisi olla 6. 722 00:49:11.660 --> 00:49:13.620 5. 723 00:49:13.620 --> 00:49:18.710 Mutta mutta tota tässä käy niin, että kun meillä on 2 intlukua 724 00:49:18.710 --> 00:49:22.650 niin lopputulos on on myöskin intti. 725 00:49:22.650 --> 00:49:27.350 Eli tämän vasemman puoleinen osa on intti luku, kun meillä on 2 lukua eniten lopputulos 726 00:49:27.350 --> 00:49:31.630 on niin ja sitten jakomäen oikealla puolella on myöskin intel luku tässä tapauksessa 727 00:49:31.630 --> 00:49:36.390 luku 2, niin kun me jaetaan include int luvulla siis sekä osoittaja että nimittäjä 728 00:49:36.390 --> 00:49:39.460 ovat tyyppisiä niin myös jakolaskut. Lopputulos on tyyppinen. 729 00:49:39.460 --> 00:49:43.510 Tästä puhuttiin hieman jo tuossa viime luennolla, mutta tää on oikeastaan nyt tämmöinen, jota 730 00:49:43.510 --> 00:49:50.410 mä vähän jouduin jankkaamaan koska tää on aika aika erikoinen ominaisuus tässä. 731 00:49:50.410 --> 00:49:54.600 Mutta kun edes toinen jakolaskun operandeista eli näistä. 732 00:49:54.600 --> 00:49:57.140 Käsiteltävistä luvuista on double tyyppinen. 733 00:49:57.140 --> 00:50:02.200 Niin silloin jakolasku lopputulos on myös double tyyppinen, eli käytännössä tää tarkoittaa sitä, 734 00:50:02.200 --> 00:50:05.740 että mä joudun laittamaan tuon luvun kakkosen tällä tavalla, että se on 2. 735 00:50:05.740 --> 00:50:10.040 Nolla, niin silloin se possible faction ilmoitus tuosta häviää 736 00:50:10.040 --> 00:50:14.290 ja myöskin laskun lopputulos on ikään kuin oikein. 737 00:50:14.290 --> 00:50:20.030 Niin sieltä saatiin nytten keskiarvo ja ja ja tää on vaan niinku syytä vaan muistaa. 738 00:50:20.030 --> 00:50:25.590 Ja onneksi nää modernit ympäristöt kuten tää raide nyt siitä tolleen kivasti keltaisella 739 00:50:25.590 --> 00:50:29.720 kynällä kyllä ilmoittaa ja ja siinä mielessä on meille. 740 00:50:29.720 --> 00:50:37.790 Ohjelmoijille aika tärkeäkin tuki ja turva. 741 00:50:37.790 --> 00:50:41.710 OK sitten otetaan toinen esimerkki vielä 2 parametrin 742 00:50:41.710 --> 00:50:46.130 funktiosta eli tommoinen BMI funktio. 743 00:50:46.130 --> 00:50:51.610 Eli tyypillinen vanha vanhanaikainen tapa laskea tuommoista painoindeksiä on se, että. 744 00:50:51.610 --> 00:50:58.390 Että annetaan sinne henkilön pituus metreinä ja sitten painokilo grammoina. 745 00:50:58.390 --> 00:51:02.510 Ja lähdetään nyt sitten tuota tuota sinne toteuttamaan 746 00:51:02.510 --> 00:51:07.120 ja nyt se, että miten me taas tämä. Kyseinen asia. 747 00:51:07.120 --> 00:51:12.140 Tota noin niin mitä me sille tehdään täällä meinin päässä, niin on meidän tavallaan 748 00:51:12.140 --> 00:51:17.200 jatkokäsittelyijoiden pohdittävissä ja mä nyt taas vaihtelun vuoksi teen sille 749 00:51:17.200 --> 00:51:22.030 vähän vähän toisen toisenlaisen elikkä tulostetaan se. 750 00:51:22.030 --> 00:51:26.960 BMI suoraan tuolla konsolin fridolin eli. 751 00:51:26.960 --> 00:51:35.290 Tää asia nyt vähän taas ympärille jotakin jotakin järkevää eli. 752 00:51:35.290 --> 00:51:40.220 Painoindeksisi on ja sitten kun tää on muuttujan arvo niin se pitää. 753 00:51:40.220 --> 00:51:44.430 Tai no tässä tapauksessa funktion arvo, mutta joka tapauksessa laskettava 754 00:51:44.430 --> 00:51:49.260 laskulauseke niin se pitää laittaa noihin aalto sulkeisiin. 755 00:51:49.260 --> 00:51:52.880 Hyvä elikkä lähdetään tuota nyt toteuttamaan. 756 00:51:52.880 --> 00:51:56.920 No nyt jos tarkastellaan tätä tilannetta, että minkälainen tulos täältä 757 00:51:56.920 --> 00:52:01.890 voi tulla, niin sehän voi olla desimaaliluku, jolloinka tän BMI nimisen 758 00:52:01.890 --> 00:52:06.730 funktion pitäisi palauttaa double tyyppinen arvo. 759 00:52:06.730 --> 00:52:09.980 BMI on funktion nimi sulut ja aalto sulut. 760 00:52:09.980 --> 00:52:14.040 Tarvitaan sinne niin kun funktiossa aina nyt tarkastellaan näitä argumentteja. 761 00:52:14.040 --> 00:52:17.240 Meillä on siellä pituusmetrejä, painokiloa grammoina. 762 00:52:17.240 --> 00:52:21.290 Molemmat näistä näyttäisi olevan double tyyppisiä arvoja, joten kirjoitetaan 763 00:52:21.290 --> 00:52:23.990 sinne tyypiksi kummallekin näistä parametreista. 764 00:52:23.990 --> 00:52:27.230 Double ja nyt ensimmäisen kerran sitten joudutaan miettimään, 765 00:52:27.230 --> 00:52:29.400 että mitä oikeasti nää parametrit edustaa. 766 00:52:29.400 --> 00:52:33.650 Eli nyt mä en missään tapauksessa laita tänne luku yksi ja luku 2 me huomataan 767 00:52:33.650 --> 00:52:38.080 että jos mennään kirjoitetaan niin tota minkä takia muuten toi raideri se 768 00:52:38.080 --> 00:52:41.240 äsken vilautti siellä niin luku yksi ja luku 2. 769 00:52:41.240 --> 00:52:48.710 Nimet tuolla mielenkiintoista. Jännä. 770 00:52:48.710 --> 00:52:52.790 Jos mä otan tuon tuosta pois, niin tuo lukuykkönen näkyy tuolla. 771 00:52:52.790 --> 00:52:57.900 Mutta jos mä kirjoitan luku 2 tuohon niin sitten se häviää OK outoa. 772 00:52:57.900 --> 00:52:59.920 Mutta miksi mä nyt en tai ei ole? 773 00:52:59.920 --> 00:53:03.350 Ei ole suositeltavaa kirjoittaa tällä tavalla, että nyt vaan luku yksi ja luku 774 00:53:03.350 --> 00:53:09.970 2 sen takia, että nyt kun mä lähden tästä sitten laskemaan sitä. 775 00:53:09.970 --> 00:53:14.870 BMI arvo niin mun on tosi vaikea nyt hahmottaa että mitä mitä tää luku yksi oikeastaan 776 00:53:14.870 --> 00:53:18.730 tarkoittaa ja kumpi niistä nyt oli paino kumpi pituus ja mikä on se lopputulema 777 00:53:18.730 --> 00:53:22.390 sille laskutoimituksella mitä mun pitäisi oikeastaan tehdä ja sen takia mä haluan 778 00:53:22.390 --> 00:53:27.880 huolellisesti nyt miettiä sitä, että minkälaiset nimet mä tälle parametrille kummallekin 779 00:53:27.880 --> 00:53:29.910 näistä parametreista annan. 780 00:53:29.910 --> 00:53:34.170 Ensimmäinen näistä edustaa pituutta metreinä ja toinen edustaa painoa kiloa grammoina, jotenka 781 00:53:34.170 --> 00:53:39.310 on tosi hyvä syy silloin kirjoittaa myöskin näille parametreillä kuvaavat nimet. 782 00:53:39.310 --> 00:53:42.690 No nyt ne tuli oikein tuonne ylöskin. Nää vinkit. 783 00:53:42.690 --> 00:53:45.210 Tänne kutsu päähän. 784 00:53:45.210 --> 00:53:49.130 Nämä 2 harmaata laatikkoa tässä pituus metreinä ja painokilo grammoina ovat siis 785 00:53:49.130 --> 00:53:53.510 näitä raiderin antamia vinkkejä siitä, että mitä näiden argumenttien on tarkoitus 786 00:53:53.510 --> 00:53:59.610 edustaa tässä ja ne tulevat nimenomaan täältä funktion määrittelyriltä nämä saa pois 787 00:53:59.610 --> 00:54:02.240 täältä nämä harmaat näkyvistä jos näistä ei tykkää. 788 00:54:02.240 --> 00:54:05.930 Nyt en suoraan sanottuna muista että mistä ne saa pois, mutta itse pidän 789 00:54:05.930 --> 00:54:09.720 näitä aika hyvänä vinkkinä ja se antaa ohjelmoijille. 790 00:54:09.720 --> 00:54:13.180 Informaatiota silleen sopivasti, että minkälaisesta parametreista 791 00:54:13.180 --> 00:54:15.280 on kysymys ja mikä niiden pointti on. 792 00:54:15.280 --> 00:54:19.860 Mutta nyt mun on huomattavasti paljon helpompi sitten toteuttaa tämä aliohjelma. 793 00:54:19.860 --> 00:54:24.240 Eli laskea se oikeasti se BMI oikein eli lasketaanpa se 794 00:54:24.240 --> 00:54:28.870 nyt tähän näin eli double BM jonka arvo on. 795 00:54:28.870 --> 00:54:33.730 Painokilo grammoina jaettuna pituus metreinä kertaa pituus metreinä. 796 00:54:33.730 --> 00:54:37.990 Mä laitan tän nimittäjän nyt sulkuihin, koska se pituus metrinen pitää laskea 797 00:54:37.990 --> 00:54:41.560 ensin toiseen potenssiin ja sieltä sitten saadaan se. 798 00:54:41.560 --> 00:54:46.870 Arvo joka on. Millä me halutaan toi paino joka? 799 00:54:46.870 --> 00:54:50.960 Ja nyt tämä BMI muuttujan arvo on on on tässä se jonka mä haluan tästä 800 00:54:50.960 --> 00:54:57.220 loppujen lopuksi palauttaa ja katsotaan toimiiko tää. 801 00:54:57.220 --> 00:55:05.530 Noin elikkä nyt sieltä saatiin se funktion tulos, joka me annetaan tuolla konsolipelin. 802 00:55:05.530 --> 00:55:07.910 Sitten vaan tulostettavaksi. 803 00:55:07.910 --> 00:55:13.150 Mä teen tän nyt ihan, jotta tulee molemmilla eri tavoilla tehtyä, niin tän toisellakin 804 00:55:13.150 --> 00:55:18.120 tavalla eli kutsutaan tätä BM että niillä samanlaisilla argumenteilla. 805 00:55:18.120 --> 00:55:21.270 Ja otetaan tulos talteen. 806 00:55:21.270 --> 00:55:27.020 BMI pienellä kirjoitettuna nimiseen muuttujaan ja tulostetaan konsolipelinilla. 807 00:55:27.020 --> 00:55:34.430 Nyt sitten sekin. 808 00:55:34.430 --> 00:55:38.050 Muuttuja on tallennettuna ja sinne se muuttujan nimi 809 00:55:38.050 --> 00:55:41.010 alto sulkeiden sisään kirjoitettuna. 810 00:55:41.010 --> 00:55:43.130 Kumpikin näistä on ihan OK. 811 00:55:43.130 --> 00:55:46.590 Joko tälleen suoraan tulostettuna konsolipelin. 812 00:55:46.590 --> 00:55:49.250 Jolloin se funktion kutsu tulee tänne konsolin sisään 813 00:55:49.250 --> 00:55:51.130 taikka sitten erilliseen muuttujaan. 814 00:55:51.130 --> 00:55:54.010 Tätä kutsutaan monesti apu muuttujaksi. 815 00:55:54.010 --> 00:55:59.840 Koska me ainoa ainoa asia missä me sitä muuttuu ja tarvitaan on tässä tulostuksessa. 816 00:55:59.840 --> 00:56:14.240 Ja katsotaan vielä, että homma toimii sieltä pitäisi tulla täsmälleen sama tulos noin. 817 00:56:14.240 --> 00:56:16.260 Jatketaan esimerkkejä. 818 00:56:16.260 --> 00:56:20.000 Kolmion ala sekin pitäisi varmaan olla kaikille tuttu, että miten se lasketaan 819 00:56:20.000 --> 00:56:24.180 eli pituus anteeksi kanta kertaa korkeus jaettuna 2. 820 00:56:24.180 --> 00:56:29.260 Eli tässä meillä on jälleen esimerkki funktiosta joka ottaa vastaan 2 tietoa kannan 821 00:56:29.260 --> 00:56:33.750 ja korkeuden käsittelee ne se funktion tarkoitus on käsitellä ne tiedot toisin 822 00:56:33.750 --> 00:56:40.380 sanoen kertoa ne luvut keskenään ja jakaa tulos 2 ja sitten palauttaa se pintaala 823 00:56:40.380 --> 00:56:43.480 ja lähdetään tekemään tällaista funktiota. 824 00:56:43.480 --> 00:56:48.680 Aloitetaan taas taas tässä, kuten aiemminkin, niin kutsu 825 00:56:48.680 --> 00:56:53.030 päästä eli lähdetään liikkeelle täällä. Niin sanotulla. 826 00:56:53.030 --> 00:56:55.460 Niin sanotulla suunnittelupöydällä sovitaan nyt niin, että 827 00:56:55.460 --> 00:56:59.370 meillä voisi olla täällä kantaniminen muuttuja. 828 00:56:59.370 --> 00:57:03.930 Ja ja ja annetaan siihen nyt vaikkapa arvoksi 5. 829 00:57:03.930 --> 00:57:10.880 Nolla ja sitten sen. Kolmion korkeus nyt voisi olla vaikka. Vaikka 8. 5. 830 00:57:10.880 --> 00:57:13.120 Toivottavasti tässä nyt jotakin järkevää tulee. 831 00:57:13.120 --> 00:57:16.060 Pinta alaksi voi olla vähän hankala tarkistaa, mutta OK 832 00:57:16.060 --> 00:57:18.840 siinä meillä on 2 informaation palasta. 833 00:57:18.840 --> 00:57:25.470 Jotka me tarvitaan sen pinta alan laskemiseksi? 834 00:57:25.470 --> 00:57:28.390 Ja määritellään vielä kolmas muuttuneelta kolmion pinta ala. 835 00:57:28.390 --> 00:57:31.580 Ja mitä me sillä tehdään, niin sijoitetaan siihen. 836 00:57:31.580 --> 00:57:34.070 Tän kolmion ala. 837 00:57:34.070 --> 00:57:38.970 Nimisen funktion palauttama tulos ja nyt tarkkana elikkä nyt mä annan sinne. 838 00:57:38.970 --> 00:57:44.930 Näiden muuttujien. Sisältämät arvot. 839 00:57:44.930 --> 00:57:46.730 Eli tuolla aikaisemmin. 840 00:57:46.730 --> 00:57:49.860 Mä nyt oli vaan antanut tuonne funktioille ihan argumentteina näitä kiinteitä 841 00:57:49.860 --> 00:57:55.150 liberaaleja eli näitä kiinteästi koodiin kirjoitettuja lukuarvoja. 842 00:57:55.150 --> 00:57:57.560 Mutta tässä mä muutan vähän. 843 00:57:57.560 --> 00:58:01.960 Tapaa eli mä määrittelin täällä aikaisemmin kannan ja korkeuden ja annoin 844 00:58:01.960 --> 00:58:04.780 niiden muuttuen sisältämät arvot tänne argumenttien arvoksi. 845 00:58:04.780 --> 00:58:08.420 Tää on täsmälleen sama asia kuin että mä olisin kirjoittanut tänne sen luvun 5. 846 00:58:08.420 --> 00:58:12.270 Nolla, mutta nyt mä ikään kun. 847 00:58:12.270 --> 00:58:16.270 Päätä niin, että tässä mun tilanteessa soveltuvampaa. 848 00:58:16.270 --> 00:58:19.890 On määritellä niille erikseen muuttujat ja antaa niiden muuttujien 849 00:58:19.890 --> 00:58:24.500 sisältämät arvot sinne funktiolle. 850 00:58:24.500 --> 00:58:29.880 On tulostetaan sieltä jo valmiiksi se tulos. 851 00:58:29.880 --> 00:58:32.630 Tulosta tuonne noin. 852 00:58:32.630 --> 00:58:36.770 Valmiina tulostuslause niin se on odottaa meitä siellä puhutaan kohta 853 00:58:36.770 --> 00:58:39.970 lisää, että mitä hyötyä tästä nyt on, että mä laitoin nää muuttujina 854 00:58:39.970 --> 00:58:44.010 tänne, mutta mutta määritellään tuollainen funktio. 855 00:58:44.010 --> 00:58:48.290 Vilkaisen tuonne. 856 00:58:48.290 --> 00:58:53.940 Joo OK otetaan nuo slaidit kohta tuolta esille tarkemmin. 857 00:58:53.940 --> 00:58:57.120 Mutta kolmion ala voi selkeästi olla desimaaliluku, jotenka 858 00:58:57.120 --> 00:59:01.700 paluuarvon tyyppi pitäisi olla myöskin double. 859 00:59:01.700 --> 00:59:04.580 No nyt sitten kysymys kuuluu, että minkälaiset parametrit? 860 00:59:04.580 --> 00:59:06.720 No nyt katsotaan tänne argumentteihin. 861 00:59:06.720 --> 00:59:09.580 Meillä on siellä kantajakorkeus jotka molemmat selkeästi on double tyyppisiä 862 00:59:09.580 --> 00:59:14.120 asioita, jotenka näiden parametrien tyypit on varmasti double. 863 00:59:14.120 --> 00:59:19.480 Mutta entäs nimet nyt mulla on täällä. Täällä niin niin. 864 00:59:19.480 --> 00:59:22.020 Niin niin. 865 00:59:22.020 --> 00:59:27.280 Parametrin muuttujan nimenä kanta ja toisena tai argumentin nimenä 866 00:59:27.280 --> 00:59:29.400 kanta ja toisena argumentin nimenä korkeus. 867 00:59:29.400 --> 00:59:33.190 Onko sillä jotain merkitystä suhteessa siihen, että mitä mä tänne parametrille 868 00:59:33.190 --> 00:59:36.140 4 voin kirjoittaa vastaus tähän kysymykseen on että ei ole. 869 00:59:36.140 --> 00:59:40.120 Eli mä voin aivan hyvin kirjoittaa tänne kanta ja tänne korkeus nää ei 870 00:59:40.120 --> 00:59:44.980 mitenkään konfliktit tässä keskenään vaan tämän funktion. 871 00:59:44.980 --> 00:59:49.420 Alueella mulla voi olla ihan minkä nimisiä. Muuttujia vaan. 872 00:59:49.420 --> 00:59:51.410 Eli eli täällä mainissa. 873 00:59:51.410 --> 00:59:56.050 Mulla on oma hiekkalaatikko, jossa on omat muuttujien nimet ja täällä funktion sisällä. 874 00:59:56.050 --> 00:59:59.700 Mulla on taas varmaan hiekkalaatikko jossa on omat muuttujien nimet näitten 875 00:59:59.700 --> 01:00:03.260 näkyvyysalueet eivät ole ristiriidassa keskenään. 876 01:00:03.260 --> 01:00:10.580 Ainoa mikä täältä välittyy on se informaatio siitä kannan niinku kannan arvosta ja täällä tässä 877 01:00:10.580 --> 01:00:15.760 argumentissa välittyy informaation tieto korkeuden arvosta eli se luku 8. 878 01:00:15.760 --> 01:00:17.990 5 tässä tilanteessa. 879 01:00:17.990 --> 01:00:21.220 Ja nyt me voidaan sitten käsitellä näitä muuttujia tässä. 880 01:00:21.220 --> 01:00:23.850 Funktion toteutuksessa ja niinku sanottu niin tää nyt on 881 01:00:23.850 --> 01:00:29.000 aika helppo lasku eli kanta kertaa korkeus. Kertaa korkeus jaettuna. 882 01:00:29.000 --> 01:00:30.960 2. 883 01:00:30.960 --> 01:00:33.700 Ja nyt mä voin kirjoittaa tän kakkosen tänne tai aloittaa 2. 884 01:00:33.700 --> 01:00:35.500 Nolla. 885 01:00:35.500 --> 01:00:39.270 No minkä takia sen takia että tää korkeus on double tyyppinen jos mä vien hiiren tohon. 886 01:00:39.270 --> 01:00:42.800 Päälle niin tää korkeushan on double tyyppinen toi raiderin sen meille 887 01:00:42.800 --> 01:00:48.080 kyllä kertoo ja kun tuolla aiemmin sanottiin että. 888 01:00:48.080 --> 01:00:52.960 Että kun edes toinen jakolasku operan double tyyppinen jakolasku lopputulos on myös double 889 01:00:52.960 --> 01:00:56.640 tyyppinen ja tämä tilannehan pätee tässä eli meillä on double tyyppinen operointi tässä 890 01:00:56.640 --> 01:01:01.360 vasemmalla, jolloin jakolasku on lopputulos menee oikein. 891 01:01:01.360 --> 01:01:05.480 Ja katsotaan nyt ajossa tuo tilanne, saatiinko me sieltä oikea pinta ala. 892 01:01:05.480 --> 01:01:10.560 Toivottavasti joku voi tarkistaa, että onko tuo ihan oikeasti oikein, että saatiin 893 01:01:10.560 --> 01:01:15.080 saatiin varmasti tulossa sieltä, mutta nyt me tehtiin tässä signe mielessä eri tavalla, 894 01:01:15.080 --> 01:01:19.560 että että käytettiinkin muuttujia argumenttien arvoina. 895 01:01:19.560 --> 01:01:23.760 No miksi me näin teimme nyt meidän täytyy mieltää tää asia sillä tavalla, että 896 01:01:23.760 --> 01:01:29.510 me mehän tässä nyt yksinkertaisuuden vuoksi kirjoitetaan nää. 897 01:01:29.510 --> 01:01:34.930 Monesti nää muuttujien arvot tälleen kiinteänä arvona tuonne koodiin, mutta oikeassa elämässä 898 01:01:34.930 --> 01:01:41.390 ei ole oikeissa tietokoneohjelmissa tuo kannan ja korkeuden arvosanan tietysti yleensä jostain 899 01:01:41.390 --> 01:01:47.310 ulkoapäin, eli joku meillä voi olla joku tietokone sovellus, jossa se käyttäjä voi säätää 900 01:01:47.310 --> 01:01:54.870 sitä kolmion kantaa taikka kääntää jotain konkreettista fyysistä ruuvia joka asettaa sille 901 01:01:54.870 --> 01:01:58.250 kolmikolle kannan ja korkeuden ja niin edelleen. 902 01:01:58.250 --> 01:02:01.000 Taikka sitten se käyttäjä voi yksinkertaisesti näppäimistöltä. 903 01:02:01.000 --> 01:02:05.740 Syöttää kannan ja korkean ja siinä mielessä on aika harvinaista että tänne koodiin 904 01:02:05.740 --> 01:02:09.420 kirjoitetaan kiinteästi näitä lukuarvoja tässä meidän tilanteessa. 905 01:02:09.420 --> 01:02:14.360 Kuten sanottu, se on välttämätöntä yksinkertaisuuden vuoksi, mutta mutta. 906 01:02:14.360 --> 01:02:19.470 Sä voit niinku mieltää niin että oikeassa. Ohjelmassa. 907 01:02:19.470 --> 01:02:23.240 Nämä arvot saadaan jostain muualta. 908 01:02:23.240 --> 01:02:25.940 Se voi se voi tulla sieltä fyysisestä maailmasta. 909 01:02:25.940 --> 01:02:32.270 Se voi tulla internetistä jostain tiedon siirtona meille. 910 01:02:32.270 --> 01:02:37.370 Taikka sitten käyttäjän syötteenä näppäimistöltä tai hiireltä. 911 01:02:37.370 --> 01:02:41.030 Eli tää nyt on vaan esimerkin vuoksi meillä tää data tässä. 912 01:02:41.030 --> 01:02:44.610 Mutta että siinä mielessä tää on hirveän yleinen tilanne, että se parametri tulee 913 01:02:44.610 --> 01:02:48.670 antamaan nimenomaan tällä tavalla muuttujan arvona ja mitä ikinä se sitten onkaan, 914 01:02:48.670 --> 01:02:51.990 niin sitä käsitellään täällä funktiossa parametrin kautta. 915 01:02:51.990 --> 01:03:02.100 Eli meillä on täällä 2 parametria joita sitten käsitellään näin. 916 01:03:02.100 --> 01:03:08.020 Nyt palataan sinne sliideihin eli funktion kutsuminen tuossa nyt ollaankin jo muutamaan kertaan 917 01:03:08.020 --> 01:03:13.870 funktion funktioita kutsuttu, eli meillä voi olla siellä eri määrä noita. 918 01:03:13.870 --> 01:03:17.810 Parametreja tuossa meillä on summa niminen funktio jossa on 3 parametria 919 01:03:17.810 --> 01:03:21.070 ja tässä esimerkissä nyt on tehty näin että. 920 01:03:21.070 --> 01:03:25.790 Että meillä on kukin näistä argumenteista annettu argo. 921 01:03:25.790 --> 01:03:29.190 Teistä annettu muuttujina eli ABC. 922 01:03:29.190 --> 01:03:34.970 Ne sisältävät luvut 3 4 5 ja siinä kun ohjelmaa käytännössä ajetaan niin noiden 923 01:03:34.970 --> 01:03:41.530 AB ja muuttujien kohdalle ikään kuin ilmestyy ne luvut 3, 4 ja 5. 924 01:03:41.530 --> 01:03:44.890 Tässä me ohjelmoija kirjoitamme siihen, että AB ja c. 925 01:03:44.890 --> 01:03:49.790 Mutta kun se ohjelma oikeasti on käynnissä, niin niin tuota siihen sitten 926 01:03:49.790 --> 01:03:54.280 sijoitetaan ne ajon aikana ne oikeat oikeat arvot. 927 01:03:54.280 --> 01:03:59.140 No vastaavasti tuossa on tehtyä summana niminen muuttuja tuohon ennakkoon ja 928 01:03:59.140 --> 01:04:03.190 ja ja sitten sijoitettu siihen summa nimiselle muuttujalle se. 929 01:04:03.190 --> 01:04:08.270 Summa funktion palauttamaan arvo. 930 01:04:08.270 --> 01:04:10.370 OK siinä on diaesitys nyt päättynyt. 931 01:04:10.370 --> 01:04:14.170 Mä katsoin että oliko mulla tuossa vielä. 932 01:04:14.170 --> 01:04:34.170 Lisää esimerkkiä pikkuhetki. 933 01:04:37.450 --> 01:04:41.350 OK itse asiassa mä oon tän päivän esimerkit on näköjään nyt käynyt läpi. 934 01:04:41.350 --> 01:04:45.270 Olinkin ehkä vähän suunniteltua nopeampi tässä se tuskin haittaa 935 01:04:45.270 --> 01:04:48.030 chatissa ei ole kysymyksiä ilmaantunut. 936 01:04:48.030 --> 01:04:52.250 Mä voin tässä vielä hetken aikaa linjoilla istuskella ja odotella, että josko 937 01:04:52.250 --> 01:04:55.510 kysymyksiä sinne tulisi, mut periaatteessa tän päivän asiat on käsitelty, 938 01:04:55.510 --> 01:04:59.230 jotenka päätetään tän päivän osalta ohjelma tähän. 939 01:04:59.230 --> 01:05:04.190 Kiitoksia mukaan alusta jatketaan huomenna me jatketaan huomenna tosiaan näistä funktioista 940 01:05:04.190 --> 01:05:07.780 vielä ja otetaan mukaan testaus ja myöskin aliohjelman kuormitus. 941 01:05:07.780 --> 01:05:10.730 Mikä tarkoittaa sitä, että meillä voi olla useita samannimisiä vaaliohjelmia 942 01:05:10.730 --> 01:05:14.290 tuossa meidän ohjelmassa, mutta kiitoksia tän päiväisestä kiitoksia mukaan 943 01:05:14.290 --> 01:05:17.260 alusta nähdään huomenna 10 15 moi moi.