WEBVTT Kind: captions; Language: fi 1 00:00:03.480 --> 00:00:08.520 Oikein hyvää huomenta kaikille ja tervetuloa seuraamaan luontoa numero 8 ohjelmointi 2 00:00:08.520 --> 00:00:13.760 yksi kurssilla keväällä 2 4 meidän tämän päivän aiheena on tyyppi, muunnokset ja 3 00:00:13.760 --> 00:00:19.550 silmukat ja lähdetään ensin noista tyyppimuutoksista. 4 00:00:19.550 --> 00:00:26.390 Liikkeelle eli tää ckieli jota tässä nyt tällä kurssilla käytetään esimerkkinä ohjelmointikielestä, 5 00:00:26.390 --> 00:00:30.750 niin sehän on tämmöinen niin sanotusti staattisesti tyyppitetty kieli. 6 00:00:30.750 --> 00:00:35.090 Eli tää tyyppi jonka joka me halutaan sinne ohjelmaan kirjoittaa 7 00:00:35.090 --> 00:00:38.930 tai siis tieto joka me halutaan sinne ohjelmaan. 8 00:00:38.930 --> 00:00:43.810 Kirjoittaa niin sille pitää aina kirjoittaa tyyppi mukaan sinne koodiin eksplisiittisesti 9 00:00:43.810 --> 00:00:49.290 tai staattisesti ja se tarkoittaa silloin sitä niin, että muuttujan määrittelemisen jälkeen 10 00:00:49.290 --> 00:00:54.900 niin siihen kyseiseen muuttujaan ei voi sijoittaa toisen tyyppistä. 11 00:00:54.900 --> 00:01:01.020 Arvoa otetaan tuosta esimerkki, eli jos me nyt halutaan tänne laittaa vaikkapa 12 00:01:01.020 --> 00:01:06.680 int on yksi kuin 3 ja nythän tää meidän aamu muuttui ja on tyypiltään silloin 13 00:01:06.680 --> 00:01:10.460 int tyyppinen ja me sijoitamme sinne arvon. 14 00:01:10.460 --> 00:01:16.460 Niin nyt tämä aamuttuja ei voi sisältää enää mitään toisen tyyppistä asiaa. 15 00:01:16.460 --> 00:01:19.770 Eli me emme voi sijoittaa tänne. 16 00:01:19.770 --> 00:01:22.270 Merkkijono tyyppistä arvoa. 17 00:01:22.270 --> 00:01:25.600 Ei tää tietysti olisi onnistunut tässäkään, eli en mä voi täälläkään 18 00:01:25.600 --> 00:01:28.570 sanoa että int on antti jussi eli tää. 19 00:01:28.570 --> 00:01:31.960 Int sana tässä ikään kuin kiinnittää tämän AN tyypin ja 20 00:01:31.960 --> 00:01:36.050 sitä se tarkoittaa se staattisuus siinä. Että että se on. 21 00:01:36.050 --> 00:01:38.730 Se on sitten se mitä se on ja sitä ei voi. 22 00:01:38.730 --> 00:01:44.360 Ei voi tossa lähteä tuon AN tyyppiä enää enää kaapistatelemaan. 23 00:01:44.360 --> 00:01:47.460 Ja joskus on kuitenkin tilanteita, että meidän tarvitsee 24 00:01:47.460 --> 00:01:50.400 se arvo, jota me käytetään tuossa äsken. 25 00:01:50.400 --> 00:01:55.100 Se nyt oli oli luku 3 ja se on kokonaisluku arvoinen olento. 26 00:01:55.100 --> 00:02:02.100 Niin kuitenkin halutaan hyödyntää sitä tilanteessa, että se kolmonen voisi voitaisiinkin tulkita 27 00:02:02.100 --> 00:02:07.040 desimaalin lukuina ja tässä me voidaan sitten tehdä näitä tyyppimuutoksia. 28 00:02:07.040 --> 00:02:12.260 Katsotaan näistä nyt sitten lukuisia esimerkkejä ja cesar on oikeastaan montakin tapaa 29 00:02:12.260 --> 00:02:16.340 tehdä tyyppi muunnos englanniksi käytetään termiä the conversion. 30 00:02:16.340 --> 00:02:22.810 Tai hast ehkä lyhyemmin toi haaste on se mitä useammin näkee kirjallisuudessa käytettävän, 31 00:02:22.810 --> 00:02:25.980 mutta tää muunnos voidaan tehdä esimerkiksi seuraavilla tavoilla. 32 00:02:25.980 --> 00:02:31.430 Ne eivät ole ainoita tapoja, mutta tässä meidän tän kurssin kontekstissa 33 00:02:31.430 --> 00:02:33.650 nää on niitä mitä me tullaan käyttämään. 34 00:02:33.650 --> 00:02:36.490 Eli ensimmäinen on tämmöinen implisiittinen tyyppi. 35 00:02:36.490 --> 00:02:42.340 Muunnos, joka ei vaadi erityistä syntaksia ja onnistuu aina tai ainakin pitäisi onnistua 36 00:02:42.340 --> 00:02:45.250 niille tyypeille, joille tämmöinen toimenpide on määritelty. 37 00:02:45.250 --> 00:02:48.120 Katsotaan esimerkkejä. 38 00:02:48.120 --> 00:02:53.760 Eli jos meillä on vaikka toi int kolmonen niinku tuossa äsken sanoin niin me voidaan määritellä 39 00:02:53.760 --> 00:03:00.580 muuttuja jonka tyyppi on double ja sijoittaa tää aamu ja sisältämä arvo siihen tämä ei 40 00:03:00.580 --> 00:03:07.120 aiheuta mitään käännösvirhettä eikä poikkeusta eikä mitään muutakaan vastaavaa eli tämmöinen 41 00:03:07.120 --> 00:03:10.880 implisiittinen tyyppi muunnos intistä double onnistuu. 42 00:03:10.880 --> 00:03:14.300 Mä voin vielä ihan varmuuden välttämiseksi ja laittaa tän ohjelman 43 00:03:14.300 --> 00:03:17.920 käyntiin ja katsoa että sieltä ei mitään virheitä tule. No. 44 00:03:17.920 --> 00:03:20.020 En saanut nyt sieltä sitä konsoli ikkunaa auki. 45 00:03:20.020 --> 00:03:23.670 Ihan tässä nyt tietysti ollut mitään tarkoitusta tulostaan, mutta nähdään vaan 46 00:03:23.670 --> 00:03:27.580 se, että että se ohjelma kääntyy ja mitään virheitä sinne ei tule. 47 00:03:27.580 --> 00:03:32.170 No tulostetaan nyt sitten se BN arvo niin nähdään että kyllä se sieltä ihan 48 00:03:32.170 --> 00:03:37.060 oikeasti ulos putkahtaa se kolmonen eli tää on niin sanottu. 49 00:03:37.060 --> 00:03:39.720 Implisiittinen tyyppi muunnos ja oleellista. 50 00:03:39.720 --> 00:03:44.940 Tässä on nyt se, että tässä muunnoksessa ei informaatiota voi hävitä. 51 00:03:44.940 --> 00:03:51.130 Eli tää muunnos onnistuu sen takia, että että toi AN sisältämä arvo eli luku kolmonen niin 52 00:03:51.130 --> 00:03:56.340 se voidaan sinne teille sijoittaa ilman että informaatiota häviää ja tää on nyt määritelty 53 00:03:56.340 --> 00:04:01.080 muutamille eri tyypeille täällä CR pissa ja ja oleellisesti nytten tällä kurssilla niin 54 00:04:01.080 --> 00:04:07.670 toi intistä double muuttaminen onnistuu ja tää on ihan OK. 55 00:04:07.670 --> 00:04:11.170 No kuitenkaan ei onnistu sitten niin päin, että että 56 00:04:11.170 --> 00:04:14.610 sanottaisiin, että itse on on eli. 57 00:04:14.610 --> 00:04:19.270 Nyt me yritettäisiin tässä ikään kuin muuttaa tätä tai chan tää ei onnistu. 58 00:04:19.270 --> 00:04:23.910 Ja syy on tosiaan se niin, että on mahdollista, että tässä informaatiota häviää. 59 00:04:23.910 --> 00:04:28.710 Nyt me tiedetään että se, on kolmonen tässä meidän tapauksessa, mutta on kuitenkin 60 00:04:28.710 --> 00:04:33.090 mahdollista, että jo jossakin tilanteessa jos tää olisi jotakin muuta, niin 61 00:04:33.090 --> 00:04:37.210 silloin silloin tuota niin sieltä se desimaali osa voi kadota, jotenka tää ei 62 00:04:37.210 --> 00:04:39.650 onnistu ja hesarissa se aiheuttaa myöskin. 63 00:04:39.650 --> 00:04:42.740 Myöskin käännösvirhe eli cannot. 64 00:04:42.740 --> 00:04:49.870 Convert no saanko mä sen eli käy nyt convert double int ja ja tää on ihan ihan mielekäs 65 00:04:49.870 --> 00:04:55.710 virheilmoitus koska niinku sanottu niin siinä sitä informaatiota voi hävitä. 66 00:04:55.710 --> 00:04:59.510 No toinen ehkä semmoinen vähän harvemmin käytetty esimerkki tai 67 00:04:59.510 --> 00:05:02.860 harvemmin vastaan tuleva tilanne on tuommoinen. 68 00:05:02.860 --> 00:05:08.460 Että muutetaankin merkki eli yksittäinen car arvo kokonaisluvun. 69 00:05:08.460 --> 00:05:14.980 Ja tässä siis nythar arvo muuttuu indeksi ja tää onnistuu, koska jokaisella car 70 00:05:14.980 --> 00:05:21.480 merkillä on yksi käsitteiden kokonaislukuarvo ja tehdään nyt tähän tää esimerkki 71 00:05:21.480 --> 00:05:24.850 ja katsotaan sitten vaikkapa monisteesta että mistä se? 72 00:05:24.850 --> 00:05:26.690 Mistä se muunnostaulukko löytyy? 73 00:05:26.690 --> 00:05:30.730 Elikkä nyt mä tässä otan oikealle puolelle khar merkin laitan 74 00:05:30.730 --> 00:05:32.170 sitä tämmöisiin yksittäisiin hipsuihin. 75 00:05:32.170 --> 00:05:34.590 Huomaa, että tämä ei ole nyt merkkijono, vaan tää on yksittäinen 76 00:05:34.590 --> 00:05:39.560 merkki ja sitten oikealle puolelle toi. 77 00:05:39.560 --> 00:05:44.600 Kokonaisluku muuttuja ja niin hassulta kuin tää tuntuukin, niin tää kuitenkin kääntyy 78 00:05:44.600 --> 00:05:49.030 ja mä voin jopa sieltä ton DN arvon tulosta ja me nähdään että tää. 79 00:05:49.030 --> 00:05:54.750 Suuraakkosin AN arvo näyttäisi olevan 6 5 ja jos me mennään tuonne 80 00:05:54.750 --> 00:05:58.510 monisteen, olisin tietysti voinut tähän laittaa auki. 81 00:05:58.510 --> 00:06:04.210 Katsotaanpa se tuosta toi moni sitten auki tuolta noin moniste niin täältä monisteesta 82 00:06:04.210 --> 00:06:10.820 nyt löytyy sitten kohta jossa puhutaan tästä niin sanotusta askiin taulukosta ja tää 83 00:06:10.820 --> 00:06:15.670 askitaulukko on tällainen kansainvälinen standardi sille. 84 00:06:15.670 --> 00:06:22.950 Että mikä tämmöisen ensimmäisen sadankahdenkymmenenseitsemän kokonaisluvun eli desimaaliluvun, 85 00:06:22.950 --> 00:06:27.430 joka juoksee täällä reunassa, niin vastine on tässä tämmöisessä merkistö. 86 00:06:27.430 --> 00:06:32.580 Eli kuinka tämmöiset merkit voidaan tulkita kokonaisuuksia toisinpäin. 87 00:06:32.580 --> 00:06:35.250 Eli jos me nyt etsitään täältä, vaikkapa tämä. 88 00:06:35.250 --> 00:06:39.140 Suur aakkonen se on tuolla jossakin tuolla noin niin me nähdään 89 00:06:39.140 --> 00:06:42.670 niin, että sen desimaaliluku vastine on luku kuusikymmentäviisi niinku 90 00:06:42.670 --> 00:06:46.280 tuossa tietysti äsken tulostettuna nähtiin. 91 00:06:46.280 --> 00:06:51.010 Ja tää onnistuu periaatteessa myös toisinpäin, sillä eksplisiittisen tyyppi muunnoksella, josta 92 00:06:51.010 --> 00:06:57.800 puhutaan ihan kohta, että toi kokonaisluku voidaan muuttaa myöskin merkiksi. 93 00:06:57.800 --> 00:07:02.060 Eli tämmöinen yksikäsitteinen vastine joka ikiselle kirjoitusmerkit löytyy 94 00:07:02.060 --> 00:07:04.960 ja itse asiassa jokaiselle niin sanotulle unicodemerelle. 95 00:07:04.960 --> 00:07:09.010 Eli sieltä löytyy muun muassa muun muassa emojia ja muita vastaavia kivoja 96 00:07:09.010 --> 00:07:13.440 merkkejä, niin niille löytyy myöskin tämmöinen kokonaisluku vastine yhteensä 97 00:07:13.440 --> 00:07:16.540 yli kuusikymmentäviisituhatta kappaletta näitä värejä. 98 00:07:16.540 --> 00:07:22.930 On olemassa se ja ja sitten tässä niin sanotussa unicode standardissa. 99 00:07:22.930 --> 00:07:25.760 Mutta tää taulukko mikä tässä meillä nyt on niin ei tietenkään katsoa niitä 100 00:07:25.760 --> 00:07:29.570 kaikkia kuuttakymmentätuhatta vaan ainoastaan ensimmäiset satakaksikymmentäseitsemän 101 00:07:29.570 --> 00:07:32.530 kappaletta jotka on siellä joskus. 102 00:07:32.530 --> 00:07:37.570 Milloinhan tuo aski koodi nyt perustettiin, siis se on askiin tämmöinen. 103 00:07:37.570 --> 00:07:42.230 Standardi american standard code for information interchange. 104 00:07:42.230 --> 00:07:45.910 Ja jos tuosta nyt etsitään nopeasti se wikipedia artikkeli 105 00:07:45.910 --> 00:07:48.420 wikipediasta löytyy ihan hyvää tietoa. 106 00:07:48.420 --> 00:07:53.170 Niin tota tota tota tää kehitettiin tuhatyhdeksänsataakuusikymmentä luvulla. 107 00:07:53.170 --> 00:07:55.790 Eli tää on tää on aika vanha vanha standardia. 108 00:07:55.790 --> 00:08:01.610 Siihen on tietysti päälle rakenneltu monenlaisia muita standardin jatke jatkeita, 109 00:08:01.610 --> 00:08:09.940 koska maailmassa on aika paljon muitakin merkkejä kun AZ ja numerot. 110 00:08:09.940 --> 00:08:12.550 Mutta silloin kuusikymmentäluvulla lähdettiin kuuhun ja ja tehtiin 111 00:08:12.550 --> 00:08:16.260 kaikenlaista muuta jännää, niin silloin tommoinen kuitenkin oli ihan 112 00:08:16.260 --> 00:08:20.020 riittävä merkkimäärä ilmaisemaan asioita. 113 00:08:20.020 --> 00:08:27.120 Mut joo palataan noihin slideihin eli eli siellä toi muunnos onnistuu ihan hienosti 114 00:08:27.120 --> 00:08:31.800 ja ehkäpä nyt voisin jopa tässä tässä mainita tuommoisen pikku kikan että että 115 00:08:31.800 --> 00:08:35.930 tällä d, llä laskeminen nyt jopa jopa tietenkin onnistuu. 116 00:08:35.930 --> 00:08:41.560 Eli me voidaan tuohon, hen lisätä yksi yksi lukuja ja tietysti lopputulos 117 00:08:41.560 --> 00:08:46.990 on on totta kai niin kuin arvata saattaa, niin sitten. 118 00:08:46.990 --> 00:08:51.350 Kuusikymmentäkuusi ja tuo voidaan sitten muuttaa myöskin 119 00:08:51.350 --> 00:08:56.180 car merkiksi niinku kohta nähdään. 120 00:08:56.180 --> 00:08:59.880 No kuten tuossa nyt jo mainitsin, niin implisiittinen tyyppi muunnos ei 121 00:08:59.880 --> 00:09:06.530 onnistu sitten aina eli eli tuota esimerkiksi nytten karille niin ei onnistu 122 00:09:06.530 --> 00:09:10.000 tuolla että muutetaan luku suoraan kaariiksi. 123 00:09:10.000 --> 00:09:13.450 Eli eli jos mä nyt yrittäisin kuitenkin. 124 00:09:13.450 --> 00:09:18.460 Tämän luvun nyt tästä carrick muuttaa niin se ei valitettavasti onnistu. 125 00:09:18.460 --> 00:09:26.180 Myöskään ei onnistu. Ball tyyppisen muuttujan määrittely. 126 00:09:26.180 --> 00:09:31.620 Kokonaisluvutusta on huomattavaa, että tämä joissakin kielissä on ihan OK. 127 00:09:31.620 --> 00:09:36.070 Esimerkiksi muistaakseni sen ainakin jossakin aiemmassa standardissa, niin niin 128 00:09:36.070 --> 00:09:40.360 tämmöinen tietysti käy ja ja sitten siitä voi aiheutua jotakin ongelmia, mutta 129 00:09:40.360 --> 00:09:47.570 että se ei sarvissa on on mahdotonta tehdä tuolla tavalla. 130 00:09:47.570 --> 00:09:50.530 Eli ihan ihan kaikenlaiset muunnokset eivät kuitenkaan 131 00:09:50.530 --> 00:09:54.250 tälleen epäsuorasti ole mahdollisia. 132 00:09:54.250 --> 00:09:56.800 Mutta monet sellaiset muunnokset, jotka epäsuorasti eivät 133 00:09:56.800 --> 00:09:59.560 ole mahdollisin ja ovat kuitenkin mahdollisia. 134 00:09:59.560 --> 00:10:06.440 Ikään kuin eksplisiittisesti, eli itse kirjoittamalla sinne koodiin, että haluan tehdä tyyppimuutoksen 135 00:10:06.440 --> 00:10:12.530 ja olen valmis ottamaan sen riskin, että tietoa tässä muunnoksessa myöskin häviää ja tämä vaatii 136 00:10:12.530 --> 00:10:15.560 sitten erityistä syntaksia, jolloin muunnos on ilmeinen. 137 00:10:15.560 --> 00:10:18.950 Myöskin sille ohjelmoijalle ja se ohjelmoija myöskin visuaalisesti pystyy 138 00:10:18.950 --> 00:10:22.300 havainnoimaan, että hei, tässä on mahdollisuus siihen, että informaatiota 139 00:10:22.300 --> 00:10:26.780 häviää tämmöinen eksplisiittinen tyyppimuutos voi heittää myöskin poikkeuksena 140 00:10:26.780 --> 00:10:29.410 aiheuttaa käännösvirheen niitä poikkeuksia. 141 00:10:29.410 --> 00:10:31.210 Nyt harvemmin tällä kurssilla. 142 00:10:31.210 --> 00:10:35.020 Tullaan näkemään, mutta teoriassa semmoinenkin on mahdollista. 143 00:10:35.020 --> 00:10:38.240 No jos nyt määritellään niin esimerkiksi tommoinen double 144 00:10:38.240 --> 00:10:41.880 tyyppinen muuttuja eli meillä siellä nyt oli. 145 00:10:41.880 --> 00:10:48.030 Oli tota no joo tehdään siihen uusi. Double on vaikkapa 3. 146 00:10:48.030 --> 00:10:52.440 5 ja sitten nyt tietysti jos me. 147 00:10:52.440 --> 00:10:55.710 Yritetään tätä doblea muuttaa. 148 00:10:55.710 --> 00:10:59.230 Instituuttiseksi on muuttujan arvoksi, niin sehän ei onnistu. 149 00:10:59.230 --> 00:11:04.730 Mutta jos me heitetään tuonne sulut eteen ja sanotaan, että kyllä minä haluan ottaa sen 150 00:11:04.730 --> 00:11:11.940 osan tuosta double luvusta joka on on inttiosaa niin tämä on OK ja tässä. 151 00:11:11.940 --> 00:11:18.680 Silloin. Desimaaliosa leikkautuu pois. 152 00:11:18.680 --> 00:11:23.100 No äsken puhuttiin siitä car tyyppisen taikka tyyppisistä 153 00:11:23.100 --> 00:11:29.900 asioista, niin silloin voimme tehdä. 154 00:11:29.900 --> 00:11:36.700 Double GEFGH laitapas nyt siihen menee ihan kirjaimetkin tässä sekaisin eli 155 00:11:36.700 --> 00:11:41.740 määritellään car tyyppinen muuttuja ja otetaan nytten se meidän b. 156 00:11:41.740 --> 00:11:45.310 Eikö hetkinen mikä se olikaan, d tuolta noin menee kirjaa mut sekasin 157 00:11:45.310 --> 00:11:48.700 elikkä tuolla oli se, d tää on kokonaisluku. 158 00:11:48.700 --> 00:11:54.810 Eli tämä on nyt. Intarvoinen luku 6 6 eikö vaan. 159 00:11:54.810 --> 00:11:58.690 Toivottavasti muistin oikein. No niin ja nyt tästä. 160 00:11:58.690 --> 00:12:00.910 D muuttujasta. 161 00:12:00.910 --> 00:12:05.060 D muuttujasta sitten muutetaan car tämmöisellä. 162 00:12:05.060 --> 00:12:08.340 Eksplisiittisen tyyppi muunnoksella ja mä laitan tuohon puolipisteen 163 00:12:08.340 --> 00:12:11.660 perään niin mitään erroreita täällä ei näytä olevan. 164 00:12:11.660 --> 00:12:16.350 Eli tehdään nyt tuo mitä tuossa toiseksi viimeisellä rivillä on ja tehdään. 165 00:12:16.350 --> 00:12:20.670 Eksplisiittinen tyyppi muunnos intistä carrie ja nyt tietysti kiinnostaa 166 00:12:20.670 --> 00:12:26.380 se, että mitä tuo muuttujan arvo on tulostettuna. 167 00:12:26.380 --> 00:12:30.740 Eli 6 kuutonen näyttäisi olevan suuraakkosin b mikä on tietysti ihan loogista, jos 168 00:12:30.740 --> 00:12:34.740 meidän vilkaistaan nyt vielä kertaalleen tuonne askiin koodiin, niin me nähdään niin, 169 00:12:34.740 --> 00:12:39.300 että se luku kuusikymmentäviisi sen yksi tai sen suora vastine. 170 00:12:39.300 --> 00:12:48.310 Tässä ascii merkistö on ja myöskin tämä sarppi sitä tietysti noudattaa. 171 00:12:48.310 --> 00:12:51.500 Eksplisiittinen tyyppi muunnos ei kuitenkaan ole onnistu aina. 172 00:12:51.500 --> 00:12:56.310 Eli jos me yritämme nyt tehdä tällaisen tyypin muunnoksen, että me yritämme tämmöiselle 173 00:12:56.310 --> 00:13:00.560 lyhyelle kokonaisluvun eli shorthan on tämmöinen hetkinen. 174 00:13:00.560 --> 00:13:02.620 Onko se 16 bittinen? 175 00:13:02.620 --> 00:13:05.050 Kokonaisluku tulee niin harvoin käytettyä tuotetta. 176 00:13:05.050 --> 00:13:06.850 En edes muista. 177 00:13:06.850 --> 00:13:10.290 Juu elikkä sieltä näkyy dokumentaatio, että se on 16 bittinen. 178 00:13:10.290 --> 00:13:14.750 Kokonaisluku eli puolet vähemmän bittejä kuin tuossa intissä. 179 00:13:14.750 --> 00:13:19.950 Niin. Tähän voi kohtuu pieniä. 180 00:13:19.950 --> 00:13:21.900 Tota. 181 00:13:21.900 --> 00:13:27.620 Ja FGHI noin kohtuu pieni ja kokonaislukuja sijoittaa, mutta jos me 182 00:13:27.620 --> 00:13:33.180 yritämme tähän kovin suurta kokonaislukua sijoittaa, niin silloin kääntäjä 183 00:13:33.180 --> 00:13:35.860 ilmoittaa, että käydään nyt into short. 184 00:13:35.860 --> 00:13:39.820 Eli ihan sama juttu kuin tuossa aikaisemmin yritimme. 185 00:13:39.820 --> 00:13:42.880 Doblea muuttaa indeksi niin eihän sekään onnistu. 186 00:13:42.880 --> 00:13:45.120 No entäs sitten eksplisiittinen tyyppi muunnos? 187 00:13:45.120 --> 00:13:47.530 Onnistuisiko semmoinen, että siitä nyt vaikka jotenkin leikattaisiin 188 00:13:47.530 --> 00:13:49.380 joku osaa pois niin eipä onnistu. 189 00:13:49.380 --> 00:13:53.160 Eli tässä overflow constant väljyys computational vähän tommoinen kryptinen 190 00:13:53.160 --> 00:13:57.820 ilmoitus, mutta alleviivaa on nyt sitä niin, että tämä eksplisiittinen käyn 191 00:13:57.820 --> 00:14:02.400 tyyppi muunnos ei ihan aina onnistu, eli silloin kun me tehdään implisiittinen 192 00:14:02.400 --> 00:14:06.740 tyyppi muunnos, niinku täällä tehtiin esimerkiksi tuossa tilanteessa jossa intti 193 00:14:06.740 --> 00:14:10.440 muutettiin double, niin se onnistuu aina. 194 00:14:10.440 --> 00:14:14.950 Tai ainakin pitäisi onnistua näitä implisiittisiä tyyppimuutoksia voi tehdä omillekin tyypeille, 195 00:14:14.950 --> 00:14:19.740 että siinä tietysti jälleen kerran niinku ohjelmoinnissa monesti niin poikkeuksia on, mutta 196 00:14:19.740 --> 00:14:25.640 eksplisiittinen tyyppi muunnos saattaa sitten heittää heittää tota käännösvirheen vaikka poikkeukseen 197 00:14:25.640 --> 00:14:30.970 ja tässä tilanteessa nyt kysymyksessä oli käännösvirhe. 198 00:14:30.970 --> 00:14:36.810 No mihin näitä nyt täällä ohjelmointi yksi kurssilla tarvitaan näitä tyyppimuutoksia, 199 00:14:36.810 --> 00:14:40.850 niin oikeastaan se mihin me tullaan törmäämään tällä kurssilla ovat nämä 200 00:14:40.850 --> 00:14:42.870 implisiittiset tyyppi muunnokset. 201 00:14:42.870 --> 00:14:51.090 Eli jos palataan tuosta pari slaidia taaksepäin niin tämä että intti muutetaan double automaattisesti 202 00:14:51.090 --> 00:14:56.090 siellä pellin alla ilman että me ikään kuin edes havaitaan sen tapahtuneen niin se on se mitä 203 00:14:56.090 --> 00:15:02.320 me tässä ehkä kaikista eniten käytetään puolittain huomaamatta. 204 00:15:02.320 --> 00:15:08.100 Toinen mitä me puolittain huomaamatta tehdään, on luvun muuttaminen merkki. 205 00:15:08.100 --> 00:15:09.900 Onko se siitä? 206 00:15:09.900 --> 00:15:14.180 Mulla nyt ei ole oikeastaan tässä slaidilla ollut esimerkkiä, mutta jos me tässä niinku 207 00:15:14.180 --> 00:15:19.530 me ollaan koko ajan tehty, eli tässä vaikkapa tulosta on luku, niin se mitä tänne frit 208 00:15:19.530 --> 00:15:25.310 linelle itsessä tullaan vieneeksi on se inttiarvo, mutta se mitä me siinä oikeasti todellisesti 209 00:15:25.310 --> 00:15:27.800 nähdään on tietysti merkkijono, eikö niin? 210 00:15:27.800 --> 00:15:31.270 Eli kun me tarkastellaan tässä tätä merkki ja b, niin oikeastihan 211 00:15:31.270 --> 00:15:34.390 se tietokoneen sisällä on tietysti lukuarvo. 212 00:15:34.390 --> 00:15:39.620 Ykkösten jo nollien jonoa, mutta totta kai me tässä tässä tarkastelussa 213 00:15:39.620 --> 00:15:44.910 katselemme merkkijonoa, eli vähän ehkä tekninen aspekti, mutta kuitenkin 214 00:15:44.910 --> 00:15:53.510 tuollakin tapahtuu tyyppi muunnos taustalla. Noin. 215 00:15:53.510 --> 00:15:56.310 No sitten huomautus JavaScriptin tyypittömyydestä. 216 00:15:56.310 --> 00:15:58.780 Eli nyt me ollaan tässä ihan iloisesti tehty. 217 00:15:58.780 --> 00:16:04.610 Nytten näitä tyyppejä tänne sarppiin ja ollaan ikään kuin tyytyväisiä siihen, että 218 00:16:04.610 --> 00:16:10.150 että jokainen muuttuja voi edustaa vain tietyn tyyppistä olentoa, mutta täähän ei kaikissa 219 00:16:10.150 --> 00:16:15.930 kaikissa ohjelmointikielissä ole näin eli eli tuota tai ainakaan se tyyppi ei ole niinku 220 00:16:15.930 --> 00:16:18.090 ilmeinen eikä sitä hieronta ohjelmaan naamaan. 221 00:16:18.090 --> 00:16:21.170 Eli jos me mennään tänne ihan selaimeen ja avataan 222 00:16:21.170 --> 00:16:24.220 täältä 12 näppäimen kautta tämmöinen. 223 00:16:24.220 --> 00:16:29.090 Dev tools paneeli tää löytyy kaikista moderneista internet selaimista, niin täältä löytyy 224 00:16:29.090 --> 00:16:33.100 tämmöinen console kohta johon voi alkaa kirjoittamaan javascriptiä. 225 00:16:33.100 --> 00:16:37.840 Eli tää on tämmöinen JavaScript tulkki joka on on siellä selaimessa sisäänrakennettu 226 00:16:37.840 --> 00:16:40.520 ja nyt mä voin alkaa tänne kirjoittamaan koodia. 227 00:16:40.520 --> 00:16:45.320 Sanotaan että vaikka tommoinen laskulauseke niin se kertoo sieltä enteriä 228 00:16:45.320 --> 00:16:49.220 painamalla sitten että mikäs sen laskulauseen lopputulema on. 229 00:16:49.220 --> 00:16:53.360 No mä voin tänne kirjoittaa vähän monimutkaisempaa koodia eli javascriptissä 230 00:16:53.360 --> 00:16:55.320 muuttujan määrittely tapahtuu sanalla. 231 00:16:55.320 --> 00:17:01.300 Et ja sitten muuttujien nimi ja sitten sille voisi ottaa arvon eli tässä ei ei erikseen 232 00:17:01.300 --> 00:17:05.300 määritellä että mikä tän AN tyyppi on vaan yksinkertaisesti vaan annetaan sinne arvo 233 00:17:05.300 --> 00:17:10.360 ja tässä mä nyt tulin antaneeksi sinne kokonaisluku kolmosen ja sitten mä voin tulostaa 234 00:17:10.360 --> 00:17:15.100 sen arvon kirjoittamalla ja painamalla enter niin sitten tää niin sanottu interaktiivinen 235 00:17:15.100 --> 00:17:18.280 tulkki mulle sen AN arvon myöskin tulostaa. 236 00:17:18.280 --> 00:17:21.280 No tässä niinku voidaan havaita niin että nyt täää vaikuttaisi 237 00:17:21.280 --> 00:17:25.740 olevan 3 ja jos mä nyt lisään aahan vaikka vitosen. 238 00:17:25.740 --> 00:17:32.260 Ja painan enteriä tuosta noin niin lopputulema on myöskin kokonaisluku luku 8. 239 00:17:32.260 --> 00:17:35.760 No nyt jos mä jaan tän AN vaikkapa sanotaan nyt sillä 240 00:17:35.760 --> 00:17:37.820 kolmosella niin lopputulos on yksi. 241 00:17:37.820 --> 00:17:40.980 No tässä nyt tietysti ei ollut mitään ihmeellistä kun se alkuperäinen luku oli kolmonen, 242 00:17:40.980 --> 00:17:46.010 mutta jos me nyt tehdään semmoinen temppu niinku tuossa CR että jaetaankin siellä 243 00:17:46.010 --> 00:17:48.420 luvulla kakkonen, niin nyt sieltä tuleekin luku yksi. 244 00:17:48.420 --> 00:17:50.270 5. 245 00:17:50.270 --> 00:17:53.990 Eli sarvissa se inttiluvun jakaminen oli semmoinen, missä piti olla aina vähän 246 00:17:53.990 --> 00:17:57.840 korvat höröllään ja miettiä, että mitäs tässä oikeastaan tapahtuu, mutta javascriptissä 247 00:17:57.840 --> 00:18:01.270 niinku näyttäisi siltä, että ei erikseen tarvitse sanoa, että hei meillä on tässä 248 00:18:01.270 --> 00:18:06.200 nyt tämmöinen erikoinen tyyppi, muunnos tai erikoinen jakolasku menossa ja tässä 249 00:18:06.200 --> 00:18:09.210 mielessä nytten JavaScript eroaa eroaa CSR. 250 00:18:09.210 --> 00:18:13.710 Aika paljonkin siinä, että ei tarvitse erikseen erikseen määritellä intteja 251 00:18:13.710 --> 00:18:19.930 ja erikseen määritellä noita liukuja OK taustalla. 252 00:18:19.930 --> 00:18:23.210 Me voidaan katsoa, että mikä tän ään tyyppi itse asiassa on. 253 00:18:23.210 --> 00:18:26.910 Ja kyllä siellä tietynlainen tyyppijärjestelmä on taustalla. 254 00:18:26.910 --> 00:18:30.640 Jos me kysytään siltä, että minkä tyyppinen olento sinä olet, niin se on tämmöinen 255 00:18:30.640 --> 00:18:36.630 number ja nää number nyt sattuu olemaan täällä ja scriptissä tämmöisiä niin 256 00:18:36.630 --> 00:18:43.060 sanotun IE 7 5 4 standardin mukaisia liukuja eli itse asiassa samanlaisia 257 00:18:43.060 --> 00:18:45.610 lukuja kuin mitä ne sarjan double ovat. 258 00:18:45.610 --> 00:18:49.440 Toisin sanoen ja scripti on mahdollista. 259 00:18:49.440 --> 00:18:52.550 Ainakin tässä niin sanotussa normaalissa JavaScript ohjelmoinnissa 260 00:18:52.550 --> 00:18:54.630 määritellä vaan tämmöisiä. 261 00:18:54.630 --> 00:19:01.330 Double tyyppisiä lukuja ja ja niiden nimi nyt tällä ja skriptillä sitten sattuu olemaan number 262 00:19:01.330 --> 00:19:06.490 eli tällä haluan vaan sanoa sitä niin että aina pikkuisen riippuu tilanteesta ja siitä käytettävästä 263 00:19:06.490 --> 00:19:11.070 ohjelmointikielestä, että kuinka niitä lukuja käsitellään, mikä niitten käyttöympäristö on 264 00:19:11.070 --> 00:19:15.230 ja ja miten niitä lukuja siellä käsitellään. 265 00:19:15.230 --> 00:19:17.180 No. 266 00:19:17.180 --> 00:19:23.380 Javascriptissä tosiaan on on vähän tämmöinen joskus ehkä ehkä vähän moitittukin 267 00:19:23.380 --> 00:19:27.360 semmoinen relaxed tyyli näiden muuttujien arvojen käsittelyyn. 268 00:19:27.360 --> 00:19:33.400 Tuossa mä nyt määrittelin luvun tai muuttujan b ja annoin sille arvoksi nolla ja sitten mä voin 269 00:19:33.400 --> 00:19:40.340 toisaalta määritellä myöskin muuttujan false ja nytten molemmat niistä antaa undefined mikä tarkoittaa 270 00:19:40.340 --> 00:19:44.100 sitä, että tän lauseen tulos on undefined, mutta mä voin toki. 271 00:19:44.100 --> 00:19:47.780 Toki tulostaa, että mikä ton ben arvoon ja mikä tuon sen arvo on. 272 00:19:47.780 --> 00:19:53.480 Mutta jos mä vertaan tän ben arvoa c, täällä 2 on yksi suuruusmerkillä niin mä saan arvoksi 273 00:19:53.480 --> 00:19:59.920 true eli tää näyttäisi olevan saman arvoinen asia kun tää c, mutta nythän meillä on 274 00:19:59.920 --> 00:20:06.340 lukolla täällä ja on false eli joskus moititaan javascriptiä siitä että eihän nää nyt 275 00:20:06.340 --> 00:20:11.520 oikeasti ole sama asia, mutta ne ikään kuin samaistetaan niin jos me nyt vilkaistaan sitä 276 00:20:11.520 --> 00:20:15.020 että mikä ton BN tyyppi on niin se on number. 277 00:20:15.020 --> 00:20:20.770 Ja sitten tän sen tyyppi on boolean eli siellä kyllä taustalla on näitä näillä b, 278 00:20:20.770 --> 00:20:26.330 llä ja c, llä hieman eri tyypit, mutta tällä 2 on yksi kuin merkillä se vertailu näyttäisi 279 00:20:26.330 --> 00:20:30.290 onnistuvan hieman ehkä jossain mielessä epäloogisesti. 280 00:20:30.290 --> 00:20:35.010 Näiden 2 erityyppisen kaveruksen välillä ja sen takia JavaScriptin 281 00:20:35.010 --> 00:20:37.970 onkin tullut siitä nyt on jo aikaa. 282 00:20:37.970 --> 00:20:43.890 Mutta joka tapauksessa niin tämmöinen 3 on yksi suuruusmerkin mukainen vertailu, joka 283 00:20:43.890 --> 00:20:48.940 on vähän samantyyppinen kuin cesarpissa, joka ottaa huomioon sen. 284 00:20:48.940 --> 00:20:54.700 Arvon tyypin myöskin ja tämä vertailu antaa sitten vastaavasti tota noin niin arvoksi 285 00:20:54.700 --> 00:20:59.180 false eli nytten se joka oli nolla ja c joka oli false niin eivät enää olekaan 286 00:20:59.180 --> 00:21:01.980 samaa asiaa koska ne on täysin eri tyyppisiä asioita. 287 00:21:01.980 --> 00:21:07.240 Huomionarvoista on kuitenkin se, että mä ylipäätään voin tällaisen vertailun tehdä. 288 00:21:07.240 --> 00:21:10.390 Jos mä nyt palaan vielä tuonne sarppiin. 289 00:21:10.390 --> 00:21:16.210 Laitetaan tuosta toi kääntämätön koodi pois ja laitetaan tänne nytten. 290 00:21:16.210 --> 00:21:19.810 Ball on falseja. 291 00:21:19.810 --> 00:21:26.350 K on nyt, vaikka se nolla tehdään nyt introo no intro on olla näin piti kirjoittaa 292 00:21:26.350 --> 00:21:31.560 ja jos me nyt lähden tässä sitten tutkimaan sitä, että onko samaa asia kuin 293 00:21:31.560 --> 00:21:36.590 k, niin tämmöinen vertailu aiheuttaa täällä käännösvirheen eli tämmöinen vertailu 294 00:21:36.590 --> 00:21:41.430 eic ole edes mahdollista tehdä, mutta javascriptissä se vertailu on mahdollista 295 00:21:41.430 --> 00:21:44.370 tehdä, mutta se tuottaa arvon false. 296 00:21:44.370 --> 00:21:49.040 Paitsi jos käytät sitä niin sanotusti vanhanaikaista vertailuoperaattori, 297 00:21:49.040 --> 00:21:52.050 jolloin saat saat tuota noin niin arvo. 298 00:21:52.050 --> 00:21:57.570 Eli tässä voidaan varmaan nyt argumentoida ja ja päästä väittelyyn siitä, että kumpi 299 00:21:57.570 --> 00:22:03.980 tapa on parempi tämä, että meillä ei ole mitään kiinteästi määriteltyjä. 300 00:22:03.980 --> 00:22:08.380 Tyyppejä tänne ja oikeastaan se mitä mulla jäi tuossa sanomatta että nyt mulla on tää 301 00:22:08.380 --> 00:22:13.240 on siis arvossa nolla, mutta mä voin aivan hyvin käydä pokkaamassa sinne hen arvoksi 302 00:22:13.240 --> 00:22:18.950 false ja tää on ihan OK eli nyt sillä b, llä oli aikaisemmin arvo. 303 00:22:18.950 --> 00:22:23.710 Tai tyyppi number mutta nyt jos mä kysyn siltä beeta että mikäs sun tyyppi 304 00:22:23.710 --> 00:22:28.020 nyt on niin se onkin boolen eli tämmöinen dynaaminen tyyppi. 305 00:22:28.020 --> 00:22:32.750 Systeemi on mahdollista tehdä ohjelmointikielen ja tässä se 306 00:22:32.750 --> 00:22:35.660 javascriptissä se on niinku erityisen jotenkin. 307 00:22:35.660 --> 00:22:40.530 Näkyville ja semmoinen oleellinen, että se tyyppi voi lennosta muuttua ja 308 00:22:40.530 --> 00:22:45.060 ja se on niinku sinänsä ihan OK, mutta on tilanteesta riippuvainen että onko 309 00:22:45.060 --> 00:22:49.850 tää hyvä vai huono asia ja ehkä pikkuisen ohjelmointi. 310 00:22:49.850 --> 00:22:55.210 Tyylin tavallaan preferenssien mukainen ja ohjelmoijan preferensseistä 311 00:22:55.210 --> 00:22:59.730 riippuva ja mä haluan korostaa sitä, että ei ole jotenkin täysin yksioikoisen 312 00:22:59.730 --> 00:23:02.190 selvää, että kumpi tämmöisistä. 313 00:23:02.190 --> 00:23:05.710 Järjestelmistä on parempi tuommoinen dynaaminen, niinku javascriptissä. 314 00:23:05.710 --> 00:23:10.650 Vaiko sitten tämmöinen staattinen. 315 00:23:10.650 --> 00:23:16.460 Joka tässä on aika vahvasti edustettuna, jos tää asia olisi vesiselvä kaikille ohjelmoijille, 316 00:23:16.460 --> 00:23:20.130 niin ei näitä eri ohjelmointikieliä olisi ja eri ohjelmointi tyylejä olisi. 317 00:23:20.130 --> 00:23:23.370 Jotkut tykkää toisenlaisesta ja toiset tykkää toisenlaisesta 318 00:23:23.370 --> 00:23:25.170 toisenlaisiin tilanteisiin. 319 00:23:25.170 --> 00:23:30.310 Tämmöinen staattisuus ja ikään kuin vahva tyypitys sopii hieman paremmin ja sitten toisiin 320 00:23:30.310 --> 00:23:34.550 tämmöinen löysä relaxed dynaaminen systeemi toimii taas oikein hyvin. 321 00:23:34.550 --> 00:23:39.110 On kuitenkin huomattava myöskin se asia, että java scream JavaScript. 322 00:23:39.110 --> 00:23:44.540 On tämmöinen ikään kuin vahva tyypitys hiljalleen tullut esiin ja noussut ja ottanut 323 00:23:44.540 --> 00:23:50.210 ikään kuin alaa siellä tää type script joka on tähän JavaScriptin päälle rakennettu 324 00:23:50.210 --> 00:23:55.160 tyyppi järjestelmä, niin on aika vahvassa nousussa ollut viime vuosina ja sen ja 325 00:23:55.160 --> 00:24:00.870 sitä yhä enenevässä määrin isoissa ohjelmistojärjestelmissä käytetään liittyy pes 326 00:24:00.870 --> 00:24:03.900 script, joka on tämmöinen JavaScriptin. 327 00:24:03.900 --> 00:24:08.980 Voisi sanoa, että tämmöinen päälle rakennettu järjestelmä. 328 00:24:08.980 --> 00:24:12.460 Mutta että silleen tähän niin ei ole yksi ja oikeata vastausta, vaikka olisi tietysti 329 00:24:12.460 --> 00:24:15.500 kiva täältä jotenkin julistaa että mikä on paras ja mikä on huonoin. 330 00:24:15.500 --> 00:24:17.300 Mutta sitä mä en voi tehdä. 331 00:24:17.300 --> 00:24:22.480 On otettava huomioon eri järjestelmien eroavaisuudet ja toimittava niiden mukaan. 332 00:24:22.480 --> 00:24:27.780 Ja nyt meillä tässä ohjelmointi ykkösellä mennään, mennään tietysti mukaisesti, 333 00:24:27.780 --> 00:24:32.100 mutta että sitten kun alalla etenette ja teette eteenpäin hommia niin niin 334 00:24:32.100 --> 00:24:36.660 tuota on otettava eri systeemit huomioon, mutta mennään eteenpäin ja puhutaan 335 00:24:36.660 --> 00:24:39.690 hieman lisää vielä tuosta testaamisesta. 336 00:24:39.690 --> 00:24:42.550 Tää on nyt vähän koskettelee osittain myöskin tuota tyyppi 337 00:24:42.550 --> 00:24:46.730 muunnosasiaa mitä tuossa käsiteltiin. 338 00:24:46.730 --> 00:24:54.360 Ja otetaan tähän ikään kuin jatkona nyt eiliselle sitten tästä contest testaamisesta 339 00:24:54.360 --> 00:24:59.710 vielä 2 esimerkkiä ja lähdetään tekemään tämmöinen monista funktio, joka monistaa 340 00:24:59.710 --> 00:25:02.270 annetun merkin 3 merkin merkkijonoksi. 341 00:25:02.270 --> 00:25:04.530 Eli vielä kerran siis meillä on yksi merkki joka halutaan 342 00:25:04.530 --> 00:25:07.580 monistaa 3 merkin pituiseksi merkkijonoksi. 343 00:25:07.580 --> 00:25:12.560 Ja sitten toinen toisena esimerkkinä tämmöinen jää 2 joka alleviivaa nyt sitä, 344 00:25:12.560 --> 00:25:17.580 että meillä voi olla tosissaan desimaaliluku ja siellä tuloksena ja pohditaan 345 00:25:17.580 --> 00:25:22.330 sitä, että mitä jos se desimaaliluku ei olekaan sellainen joka me voidaan voidaan 346 00:25:22.330 --> 00:25:27.460 sitten kivasti esittää 2 potenssin summana, eli se on niin sanotusti hieman 347 00:25:27.460 --> 00:25:30.450 epätarkka siellä tietokoneen sisällä. 348 00:25:30.450 --> 00:25:35.770 Ja tehdään nyt aluksi toi monista esimerkkiä ja lähdetään tekemään sitä tämmöisellä 349 00:25:35.770 --> 00:25:41.110 niin kutsutulla TDD tyylillä eli test driven development tyylillä, jossa aluksi 350 00:25:41.110 --> 00:25:45.650 pohditaan että mitäs meidän oikeastaan pitää tehdä ja vasta sitten toteutetaan 351 00:25:45.650 --> 00:25:51.340 se varsinainen ohjelma tai funktion toteutus. 352 00:25:51.340 --> 00:25:54.550 Ja luntti tuosta auki elikkä. 353 00:25:54.550 --> 00:25:59.370 Suunnittelupöydältä lähdetään liikkeelle täältä mayn pääohjelmasta käsin ja meidän ajatus 354 00:25:59.370 --> 00:26:05.690 nyt olisi sellainen, että me halutaan monistaa hupsista monistaa vaikkapa nyt merkkiä 355 00:26:05.690 --> 00:26:11.520 eli me toivomme niin, että tämä merkki b monistuuisi siellä meidän funktion sisällä 356 00:26:11.520 --> 00:26:18.330 ja me saisimme paluuarvon semmoisen olion, joka me voidaan sijoittaa jono merkkijonolla 357 00:26:18.330 --> 00:26:23.290 jono jono nimiselle string tyyppiselle merkkijonolla. 358 00:26:23.290 --> 00:26:26.330 Ja nythän tämmöistä funktiota ei tietenkään ole vielä olemassa ja se pitää 359 00:26:26.330 --> 00:26:29.470 toteuttaa, mutta tässä olisi nyt sitä suunnittelupöytää. 360 00:26:29.470 --> 00:26:34.570 No se suunnittelupöytä jatkuu siten, että me lähdemme kirjoittamaan funktion 361 00:26:34.570 --> 00:26:39.490 esittelyn ja tätähän me pystymme päättelemään tästä funktion kutsusta, 362 00:26:39.490 --> 00:26:41.470 jonka me olemme tuohon hienosti kirjoittaneet. 363 00:26:41.470 --> 00:26:45.930 Public static sillä eteenpäin ja sen jälkeen paluuarvon tyyppi, jonka me voidaan 364 00:26:45.930 --> 00:26:49.940 päätellä, että tästä on yksi kuin merkin vasemmasta osasta. 365 00:26:49.940 --> 00:26:55.200 Ja sitten kirjoitetaan funktion nimi sulut ja aaltosut niinku aina funktioon kuuluu. 366 00:26:55.200 --> 00:26:57.480 No sitten tää parametrilista. 367 00:26:57.480 --> 00:26:59.900 No nyt vilkaistaan tänne argumenttien luetteloon. 368 00:26:59.900 --> 00:27:02.560 Meillä on siellä yksittäinen b merkki mitä me laitetaan 369 00:27:02.560 --> 00:27:04.980 silloin tänne parametrien listaan. 370 00:27:04.980 --> 00:27:09.540 No me emme Kirjoita tänne nyt mitään b jutskia vaan me pohdimme sitä että 371 00:27:09.540 --> 00:27:15.330 mikä on tuon BN pointti tässä aliohjelma ja sen BN pointti on olla se merkki 372 00:27:15.330 --> 00:27:19.070 joka me halutaan monistaa eli monisteettava. 373 00:27:19.070 --> 00:27:22.650 Annamme sille sen takia ikään kuin tämmöisiin ilmeisen nimen, joka indikoi 374 00:27:22.650 --> 00:27:27.810 sitä, että mikä sen parametrin tarkoitus on olla tässä meidän hienossa 375 00:27:27.810 --> 00:27:29.970 funktiossa, joka me nyt tässä toteutetaan. 376 00:27:29.970 --> 00:27:34.960 Eli nyt meillä on esittelyni tässä valmiina ja ennen kuin me lähdetään sitten 377 00:27:34.960 --> 00:27:39.930 oikeasti ikään kuin toteuttamaan tätä moniistusta, niin me palautetaan tästä 378 00:27:39.930 --> 00:27:46.340 joku semmoinen asia, jolla me saadaan tämä funktion. 379 00:27:46.340 --> 00:27:49.240 Toteutus siinä mielessä tyytyväiseksi. 380 00:27:49.240 --> 00:27:53.640 Oikeastaan ei laitettaisi sitä monistaettavaa vielä sinne saadaan siinä mielessä tyytyväiseksi, 381 00:27:53.640 --> 00:27:58.330 että se toteuttaa tämän spesifikaation eli toteuttaa tämän funktion. 382 00:27:58.330 --> 00:28:00.870 Syntaxtisesti oikeaksi. 383 00:28:00.870 --> 00:28:06.030 Ja kun me halutaan täältä palauttaa string tyyppinen arvo niin silloinhan pienin tai lyhin 384 00:28:06.030 --> 00:28:11.570 mahdollinen string tyyppinen arvo on varmaankin toi tyhjä merkkijono sen pienempää toteutusta 385 00:28:11.570 --> 00:28:14.610 meidän ikään kuin tälle meidän hienolle funktiolle voi tehdä. 386 00:28:14.610 --> 00:28:19.210 Miksi me näin teemme sen takia, että me voimme kirjoittaa tänne 387 00:28:19.210 --> 00:28:26.360 dokumentaation ja tän pointti nyt on se, että. 388 00:28:26.360 --> 00:28:31.620 On tavallaan tosi tosi tärkeätä ohjelmoinnissa aina ajatella ensin ennen kuin lähdetään 389 00:28:31.620 --> 00:28:37.540 tekemään ja nytten semmoista ikään kuin kynä paperia ajattelua on se, että me kirjoitamme 390 00:28:37.540 --> 00:28:41.850 sen funktion dokumentaation ja tulemme myöskin kirjoittaneeksi tuohon sitten myöhemmin, 391 00:28:41.850 --> 00:28:46.420 että testit jo joka ilmentää sitä, että miten tätä funktiota kutsutaan, miten sitä 392 00:28:46.420 --> 00:28:50.290 käytetään ja minkälaisia paluuarvoja me odotamme sieltä ja minkälaisia reunatapauksia 393 00:28:50.290 --> 00:28:52.250 sillä funktiolla voi olla. 394 00:28:52.250 --> 00:28:57.140 Eli aina mieti ennen kuin lähdet tekemään mitä se sun ohjelma oikeastaan pitäisi tehdä? 395 00:28:57.140 --> 00:28:59.010 Ennen kuin toteutat sen. 396 00:28:59.010 --> 00:29:02.790 No, nyt tässä on tietysti jälleen kerran meidän kysymyksessä tämmöinen aikasieettinen pieni 397 00:29:02.790 --> 00:29:08.710 ohjelma, mutta tehdään se silti esimerkki ja mä niinku tällä tavalla. 398 00:29:08.710 --> 00:29:14.870 Ensin pohtien ja vasta sitten toteuttaen tän funktion ihan selkeäsanainen suomenkielinen tarkoitus 399 00:29:14.870 --> 00:29:19.890 olisi se, että se monistaa annetun merkin ja nyt päätän tässä niin, että se voisi olla 3 merkin 400 00:29:19.890 --> 00:29:23.930 mittainen merkki on tehdään myöhemmin siitä semmoinen versio joka. 401 00:29:23.930 --> 00:29:26.110 On on tuota. 402 00:29:26.110 --> 00:29:30.250 Sitten sellainen, että se voi monistaa sen ikään kuin halutun mittaiseksi, 403 00:29:30.250 --> 00:29:32.990 mutta tehdään nyt tämmöinen kiinteä kiinteä mittainen, koska 404 00:29:32.990 --> 00:29:34.660 emme ole vielä puhunut näistä silmukoista mitään. 405 00:29:34.660 --> 00:29:37.060 Me tarvitaan siihen silmukoita, jotta voidaan tehdä 406 00:29:37.060 --> 00:29:44.860 siitä sitten mielivaltaisen mittainen. 407 00:29:44.860 --> 00:29:48.400 Dokumentaatio kommentteihin kuuluu myöskin parametrien dokumentaatio ja 408 00:29:48.400 --> 00:29:53.300 tässä mä nyt oon dokumentoimassa sitten monisteettavaa. 409 00:29:53.300 --> 00:29:57.360 Merkkiä eli annetaan sille ihan selkeäsanainen suomenkielinen kuvailu 410 00:29:57.360 --> 00:30:01.200 siitä, että mikä tän parametrin pointti on. 411 00:30:01.200 --> 00:30:05.160 Ja tän paluuarvon tulisi siis olla monistetuista merkeistä koostuva jono. 412 00:30:05.160 --> 00:30:09.230 Jos nyt vielä vilkaistaan tänne pääohjelman puolelle, niin mehän odotetaan niin, että 413 00:30:09.230 --> 00:30:12.860 tää on monista funktio tuottaa mulle sellaisen jonon, jossa ei sitä beeta. 414 00:30:12.860 --> 00:30:18.820 Nyt on monistettu eli tän returns tagien sisään kirjoitamme siitä selko sanasen 415 00:30:18.820 --> 00:30:23.930 kuvauksen eli monista tutuista merkeistä koostuva merkkijono. 416 00:30:23.930 --> 00:30:28.210 Noin eli nyt mä oon kirjoittanut tähän ikään kuin pohdinnan semmoisen ajatuksen 417 00:30:28.210 --> 00:30:33.550 siitä, että mitä tän funktion se semmoinen korkean tason pointti on ja sen jälkeen 418 00:30:33.550 --> 00:30:37.790 kirjoitetaan näitä testejä eli com ja yksi kerran tabulaattorin niin mulle tulee 419 00:30:37.790 --> 00:30:42.850 tää com test hahmo tähän eli tämmöinen testausalue johon mä voin kirjoittaa näitä 420 00:30:42.850 --> 00:30:47.670 testejä ja mä otan sen verran vielä nyt ajatusta taaksepäin tästä, että kun me näitä 421 00:30:47.670 --> 00:30:50.760 aliohjelma kirjoitetaan niin tää. 422 00:30:50.760 --> 00:30:56.220 Esittelyni ja runko osa on tässä ja sen välittömään läheisyyteen tähän yläpuolelle. 423 00:30:56.220 --> 00:30:59.360 Kirjoitetaan siis tää dokumentaatio kommentti alue ja sitten 424 00:30:59.360 --> 00:31:01.420 myöskin nää testit tässä järjestyksessä. 425 00:31:01.420 --> 00:31:04.920 Eli ensin dokumentaatio kommentit ja sitten nää testitapaukset 426 00:31:04.920 --> 00:31:07.480 eli näitä ei Kirjoita minnekään. 427 00:31:07.480 --> 00:31:10.860 Tänne funktion sisään ei tänne. 428 00:31:10.860 --> 00:31:14.300 Ei tähän esittelyn ja aalto sulkeiden väliin. 429 00:31:14.300 --> 00:31:16.840 Ei siihen vaan tänne yläpuolelle. 430 00:31:16.840 --> 00:31:21.740 Eli tää on se tyyli ja tapa missä mitä se sarpila noudatetaan ja tällä tavalla ne aina 431 00:31:21.740 --> 00:31:26.440 aina sarpi se kirjoitetaan tänne dokumentin anteeksi esittelyn yläpuolelle jossain 432 00:31:26.440 --> 00:31:30.840 muissa ohjelmointikieliä kuten betonissa toi dokumentaatio saatetaan kirjoittaa tai 433 00:31:30.840 --> 00:31:34.340 muistaakseni kirjoitankin tänne esittelyn alapuolelle. 434 00:31:34.340 --> 00:31:36.140 Mutta se ei sarvissa se on näin. 435 00:31:36.140 --> 00:31:40.750 En nyt osaa oikein antaa siihen järkevää selitystä, että miksi se. 436 00:31:40.750 --> 00:31:45.180 Kirjoitustapaa nyt sitten eroaa, eroaa eli eri kielissä. 437 00:31:45.180 --> 00:31:48.680 Mutta me emme vielä edelleenkään Kirjoita tuota funktion toteutusta, 438 00:31:48.680 --> 00:31:52.980 vaan nyt teemme sitä niin sanottua. Test riven development. 439 00:31:52.980 --> 00:31:59.120 Eli ajattelemme aluksi, että kuinka sitä funktiota nyt sitten kutsutaan ja nyt mä haluan 440 00:31:59.120 --> 00:32:05.280 että moni jos mä haluaisin monistaa merkkejä a eli kutsua tätä monista funktiota merkillä 441 00:32:05.280 --> 00:32:10.900 niin sen pitäisi palauttaa mulle semmoinen merkkijono missä se on monistettu 3 kertaan 442 00:32:10.900 --> 00:32:16.710 eikö vaan elikkä nytten kutsuessamme tätä monista funktiota niin tuo oikea puoli eli 443 00:32:16.710 --> 00:32:22.020 tän tuloksen pitäisi näyttää tuolta ja jälleen kerran korostan sitä että tää 3 1 kun 444 00:32:22.020 --> 00:32:24.450 merkkiä nyt tässä tilanteessa. 445 00:32:24.450 --> 00:32:28.880 Täällä frii jutskia sisäpuolella, niin on tätä contest syntaksia. 446 00:32:28.880 --> 00:32:31.030 Se on tän contest työkalun. 447 00:32:31.030 --> 00:32:34.410 Tuottamaa tai tai sinne syötettävää syntaksia. 448 00:32:34.410 --> 00:32:36.920 Eli tavallaan meillä on tässä ikään kuin vähän niinku pieni 449 00:32:36.920 --> 00:32:41.930 kieli jota tää contest sitten noudattelee. Tämä ei ole nyt. 450 00:32:41.930 --> 00:32:46.590 Sen JavaScriptin 3 1 suuruusvertailu niinku äsken nähtiin 451 00:32:46.590 --> 00:32:50.580 vaan vaan tätä kontekstin syntaksia. 452 00:32:50.580 --> 00:32:54.950 OK elikkä tuommoisella kutsulla meidän pitäisi saada sieltä. 453 00:32:54.950 --> 00:33:00.090 3 ta mutta on tietysti syytä kirjoittaa nyt tähän useampi testi. 454 00:33:00.090 --> 00:33:06.290 Ja ja ja tehdään nyt näin, että kirjoitamme tahallaan sinne ikään kuin vääränlaisen 455 00:33:06.290 --> 00:33:11.630 testin tai tai sellaisen testin, joka me tiedämme tuottavan virheellisen 456 00:33:11.630 --> 00:33:16.310 tuloksen ja koitetaan generoida nää testit. 457 00:33:16.310 --> 00:33:21.700 Ja myöskin ajan ne ja mä teen tän sen takia että mä tulen tarkistaneeksi tässä samalla 458 00:33:21.700 --> 00:33:27.350 tätä mun testaus ympäristö toimii ja havaitsee niin että siellä virhe on eli tästä pitäisi 459 00:33:27.350 --> 00:33:33.320 ilman muuta silloin filia tulla one or more test failed ja. 460 00:33:33.320 --> 00:33:39.380 Hetkinen tuolta pitää hakea se eli odotimme aata, mutta tietysti saimme 461 00:33:39.380 --> 00:33:43.380 sieltä tyhjän merkkijonon koska tuo meidän funktio. 462 00:33:43.380 --> 00:33:45.900 Funktio palauttaa aina sieltä. 463 00:33:45.900 --> 00:33:49.840 Tyhjän merkkijonon niin se on ihan tietysti selvä asia. 464 00:33:49.840 --> 00:33:55.360 No nytten meillä on siinä 2 esimerkkiä ja voisimme nyt lähteä tätä monistusfunktiota 465 00:33:55.360 --> 00:33:58.380 toteuttamaan, mutta mä teen vielä tänne pari keissiä. 466 00:33:58.380 --> 00:34:03.380 Eli jos meillä onkin vaikka ihan välilyönti niin sekin pitäisi tietysti toimia. 467 00:34:03.380 --> 00:34:07.860 Eli välilyönti on siinä carmen missä mikä tahansa muukin carmen 468 00:34:07.860 --> 00:34:11.390 ja se pitäisi onnistua ihan samalla tavalla. 469 00:34:11.390 --> 00:34:14.650 Vastaavasti, jos meillä on suura aakkonen vaikkapa niin siitä 470 00:34:14.650 --> 00:34:18.090 pitäisi tuloksena tulla sitten 3 suuraakkosin. 471 00:34:18.090 --> 00:34:23.010 Mielenkiintoista kyllä niin tämmöinen tyhjämerkki ei ole car merkki. 472 00:34:23.010 --> 00:34:25.170 Eli tämä tulee aiheuttamaan käännösvirhe. 473 00:34:25.170 --> 00:34:28.820 Mä voin nyt jättää se hetkeksi tuohon, niin me nähdään että. 474 00:34:28.820 --> 00:34:33.520 Että mitä siitä, mitä siitä tapahtuu, mutta tyhjää merkkejä ei valitettavasti 475 00:34:33.520 --> 00:34:38.210 voi monistaa, mutta generoida nyt nää testit ja katsotaan. 476 00:34:38.210 --> 00:34:40.430 Mitä tapahtuu? 477 00:34:40.430 --> 00:34:44.440 Eli ajetaan ne teidät, minkä takia mennään tuolla? 478 00:34:44.440 --> 00:34:48.540 Tuolla tota. Tietoja tuosta striimistä. 479 00:34:48.540 --> 00:34:52.440 Toivottavasti tuosta striimi nyt on siellä ihan validisti menossa. 480 00:34:52.440 --> 00:34:55.940 Mä en jostain syystä tosissaan nyt näe että onko se käynnissä vai ei, 481 00:34:55.940 --> 00:35:00.390 mutta OK eli tässä meille tuli nytten virheilmoitus että empty character 482 00:35:00.390 --> 00:35:04.460 liberal ja se tarkoittaa silloin sitä, että. 483 00:35:04.460 --> 00:35:11.270 Meidän testi ei onnistunut, eli tämä feilaa käännösvirheeseen ja. 484 00:35:11.270 --> 00:35:15.720 Ei ole mahdollista mahdollista tuota syöttää tuollaista tyhjää merkkiä, 485 00:35:15.720 --> 00:35:19.080 niin mä laitan sen sen takia nyt tuonne kommentteihin ja laitan siihen vaan 486 00:35:19.080 --> 00:35:22.120 muistutuksen että tyhjää merkkiä ei voi monistaa. 487 00:35:22.120 --> 00:35:24.680 Eli tämä aiheuttaa käännösvirheen. 488 00:35:24.680 --> 00:35:27.790 Mutta koitetaan uudestaan, eli eli generoidaan ne. 489 00:35:27.790 --> 00:35:31.070 Nykyiset testit sieltä. Mistä se yksi? 490 00:35:31.070 --> 00:35:37.350 Yksi tyhjä syöte on häipynyt, mutta sieltä saatiin näköjään faileja edelleen OK eli eli 491 00:35:37.350 --> 00:35:42.910 nyt me saatiin saatiin tuota no niin edelleen edelleen siitä edelleen siitä ensimmäisestä 492 00:35:42.910 --> 00:35:46.800 testistä saadaan se fili eli meillä siellä kuitenkin on se. 493 00:35:46.800 --> 00:35:51.150 Se tyhjä merkki on on vielä paluuarvoinen, niin nyt lähdetään toteuttamaan tätä. 494 00:35:51.150 --> 00:35:56.030 Ja nyt tässä on muutama eri tapa, miten me voidaan monistaa tämmöinen carmen moneksi. 495 00:35:56.030 --> 00:36:01.260 No, nyt se ensimmäinen ajatus voisi olla se, että laitetaan sinne vaan moniistettava. 496 00:36:01.260 --> 00:36:05.320 Plus moniistettava plus moniistettava. 497 00:36:05.320 --> 00:36:08.800 Ja niin luontevalta kuin tämä ajatus nyt tuntuisikin, niin valitettavasti 498 00:36:08.800 --> 00:36:13.590 tämä ei CR pissa käy, eli täältä tulee virheilmoitus. 499 00:36:13.590 --> 00:36:18.170 Siis käännösvirhe että kannot convert expression. 500 00:36:18.170 --> 00:36:22.310 Taide int turi the type string mitä tää oikeastaan tarkoittaa? 501 00:36:22.310 --> 00:36:27.490 Tää tarkoittaa sitä, että tää plus operaattori tulkitsee tämän vasemman 502 00:36:27.490 --> 00:36:32.270 puolen ja tämän oikean puolen nytten car merkkeinä. 503 00:36:32.270 --> 00:36:37.280 Ja tarkemmin sanottuna into lukuina, eli tämä plus operaatio ottaa sen 504 00:36:37.280 --> 00:36:41.570 carin yrittää muuttaa sen indeksi ja laskea intteja yksi. 505 00:36:41.570 --> 00:36:44.630 Eli nyt jos meillä on siellä se pikku a niin me voidaan vaikka vilkaista 506 00:36:44.630 --> 00:36:48.230 että paljonko se pikku a nyt olikaan siellä. 507 00:36:48.230 --> 00:36:51.610 Paljonko se pikkuaa nyt olikaan siellä askiin merkityssä? 508 00:36:51.610 --> 00:36:53.500 Sehän on tietysti. 509 00:36:53.500 --> 00:36:58.040 Sehän on tietysti yhdeksänkymmentäseitsemän eli se yrittää laskea nyt yhdeksänkymmentäseitsemän 510 00:36:58.040 --> 00:37:00.980 plus yhdeksänkymmentäseitsemän yhdeksänkymmentäseitsemän ja palauttaa meille 511 00:37:00.980 --> 00:37:03.200 semmoisen kokonaisluvun. 512 00:37:03.200 --> 00:37:06.750 Mutta me luvataan palauttaa täältä intti anteeksi. 513 00:37:06.750 --> 00:37:11.020 Me luvataan palauttaa täällä string olio tai string merkkijono 514 00:37:11.020 --> 00:37:18.590 ja se kokonaislukua kun se nyt onkaan hetkinen 200. 515 00:37:18.590 --> 00:37:21.690 72 tai kahdeksankymmentäkaksi satayhdeksänkymmentäyksi. 516 00:37:21.690 --> 00:37:28.040 Onko? 2 1 niin se ei tietenkään ole string olio. No tässä on pari eri tapaa. 517 00:37:28.040 --> 00:37:30.370 Miten me voidaan tämä nyt sitten? 518 00:37:30.370 --> 00:37:36.000 Pelastaa tää tilanne joko tekemällä eksplisiittinen tyyppi muunnos. 519 00:37:36.000 --> 00:37:43.220 Hetkinen? Tämä ei muuten onnistu. 520 00:37:43.220 --> 00:37:45.020 Mielenkiintoista. 521 00:37:45.020 --> 00:37:49.100 Joo tää tuli nyt vähän lonkalta tässä lennosta, mutta näköjään eksplisiittinen 522 00:37:49.100 --> 00:37:52.040 tyyppi muunnos carista stringeissä ei tuolleen onnistukaan. 523 00:37:52.040 --> 00:37:59.340 No se miten me voidaan muuttaa mikä tahansa olen tuon string olioksi on tämmöisellä 524 00:37:59.340 --> 00:38:04.900 string metodilla eli tämmöinen tostring löytyy joka ikiseltä öljyltä ja tällä 525 00:38:04.900 --> 00:38:09.400 tavalla muutettuna me kyllä päästään tästä tästä eteenpäin. 526 00:38:09.400 --> 00:38:13.600 Eli muuttaa kaikki noi käärit stringit sitten tällä tavalla ja nyt 527 00:38:13.600 --> 00:38:17.360 me voidaan ne testit ajaa ja katsoa mitä sieltä tulee. 528 00:38:17.360 --> 00:38:22.820 No sieltä nyt tulee filia koska koska tota me kirjoitettiin vahingossa sinne väärä väärä 529 00:38:22.820 --> 00:38:27.010 testi eli tuolla oli vielä kolmekymmentäkaksi pitäisi tietysti tulla BB. 530 00:38:27.010 --> 00:38:32.100 Ja ajetaan uudestaan ne testi tai itse asiassa me joudutaan ne generoimaan. 531 00:38:32.100 --> 00:38:37.920 Generoimaan uudelleen ja sitten ajamaankin myös. 532 00:38:37.920 --> 00:38:42.700 Ja nyt sieltä tulee sitten suksia eli tota tää on ihan ihan OK. 533 00:38:42.700 --> 00:38:46.530 Tähän on lyhyempikin tapa eli me voidaan sanoa. 534 00:38:46.530 --> 00:38:53.060 Moniste hetkinen. 535 00:38:53.060 --> 00:38:56.950 Joo elikkä me voidaan sanoa tämmöinenkin pikkukikka. 536 00:38:56.950 --> 00:39:04.710 Että muutetaan se ensimmäinen. Ensimmäinen tuota. 537 00:39:04.710 --> 00:39:09.810 Jono tai tehdään ensin tyhjä string ja tämän tyyppi on string eli jos me viedään 538 00:39:09.810 --> 00:39:14.390 hiiri tohon päälle niin me nähdään paitsi että ei nähdäkään. 539 00:39:14.390 --> 00:39:20.210 Jostain syystä tää nyt ei tulosta sitä tohon ruudulle, mutta tämmöisen tyhjän merkkijonon 540 00:39:20.210 --> 00:39:26.610 tyyppi on string ja sitten kun me yhdistetään siihen car niin se tulkitsee tätä plus operaatiota 541 00:39:26.610 --> 00:39:31.370 sillä tavalla, että string plus car tyyppisen olion. 542 00:39:31.370 --> 00:39:35.710 Lopputulema täytyy olla string ja sitten siihen taas yhdistetään 543 00:39:35.710 --> 00:39:38.270 uusi kari jonka tyyppi on string. 544 00:39:38.270 --> 00:39:41.670 Tää on ehkä omasta mielestäni vähän turhan tekninen ratkaisu ja se 545 00:39:41.670 --> 00:39:44.330 miten mä ehkä loppujen lopuksi kuitenkin tykkäisin. 546 00:39:44.330 --> 00:39:49.340 Tämän asian ratkaista on se tällä muotoiluun on olla eli. 547 00:39:49.340 --> 00:39:55.660 Laitetaan 3 kertaa tänne näitä monisteettavia merkkejä sisäkkäin. 548 00:39:55.660 --> 00:39:59.490 Tai siis peräkkäin siten, että koko hässäkkä on. 549 00:39:59.490 --> 00:40:04.350 On tämmöisten lainausmerkkien sisällä ja ympäröitynä tällä dollarin merkinnällä, 550 00:40:04.350 --> 00:40:08.230 niin silloin kysymyksessä on tämmöinen niin sanottu muotoilujono. 551 00:40:08.230 --> 00:40:10.030 Että tää on. 552 00:40:10.030 --> 00:40:13.000 Tää on tullut cesarpiin tuossa pari versiota takaperin ja omasta mielestäni ehkä 553 00:40:13.000 --> 00:40:17.220 loppujen lopuksi kuitenkin paras tapa, vaikka nyt onkin näitä ihmemerkkejä täällä 554 00:40:17.220 --> 00:40:20.630 muutama kappale peräkkäin, mutta nyt me voidaan paitsi laittaa. 555 00:40:20.630 --> 00:40:23.310 Tietysti tää ohjelma käyntiin mikä on nyt ei ole hirveän kiinnostavaa, 556 00:40:23.310 --> 00:40:26.590 koska ei sieltä mitään tulostusta tule, mutta me voidaan nyt ajaa nää 557 00:40:26.590 --> 00:40:29.480 meidän testit ja toivottavasti saadaan sieltä. 558 00:40:29.480 --> 00:40:36.850 Suksia ulos eli tässä nyt on muutama eri variaatio miten tän voi käytännössä toteuttaa. 559 00:40:36.850 --> 00:40:39.910 No hyvä niin siinä tuli nyt vähän sivuttua myöskin tuota tyyppi. 560 00:40:39.910 --> 00:40:43.710 Muunnos asiaa laitetaan tää kuitenkin nyt hetkeksi tälleen vähän 561 00:40:43.710 --> 00:40:47.110 piiloon ja tehdään sinne toinen esimerkki. 562 00:40:47.110 --> 00:40:51.320 Itse asiassa voidaan nyt toi jonoa sieltä tulostaa ulos, niin nähdään. 563 00:40:51.320 --> 00:40:55.480 Nähdään myöskin tuolla konsoli ikkunassa, että sieltä monistettua 564 00:40:55.480 --> 00:40:59.740 se tulee ja isketään sinne nyt joku. 565 00:40:59.740 --> 00:41:05.810 Joku muukin merkki niin testataan ihan tällä perinteisellä tulostusestyksellä ja jos 566 00:41:05.810 --> 00:41:12.920 sinne laitetaan jopa Niin sekin on sinänsä ihan validi carmen ja silloin sinne tulee 567 00:41:12.920 --> 00:41:17.540 3 rivinvaihtoa, vaikka niitä nyt on pikkuisen hankala tästä tulostusalueelta käytännössä 568 00:41:17.540 --> 00:41:22.410 nähdä on laitetaan sinne nyt vaikka iso haava. 569 00:41:22.410 --> 00:41:27.630 Noin eli tämä näyttäisi toimivan niin contest testien perusteella kuin 570 00:41:27.630 --> 00:41:32.210 tämän meidän perinteisen tulostus testaamisen perusteella. 571 00:41:32.210 --> 00:41:36.400 Mutta tää on sieltä tuo toinen esimerkki eli tää 2 jako ja siinä nyt sitten 572 00:41:36.400 --> 00:41:41.040 nähdään esimerkki myöskin noitten liukulukujen testaamisesta eli leikitään 573 00:41:41.040 --> 00:41:46.370 niin että meillä olisi tarve tehdä tämmöinen funktio kun jää 3 ja mä haluaisin 574 00:41:46.370 --> 00:41:50.830 antaa sinne vaikkapa nytten luvun. 3. 575 00:41:50.830 --> 00:41:56.590 Nolla no sen tulos tietysti tulee olemaan ykkönen, mikä on tietysti silleen ihan kiva tulos noin 576 00:41:56.590 --> 00:42:01.290 niinku teknisesti, mutta katsotaan sitten siitä vähän erilaisia esimerkkejä. 577 00:42:01.290 --> 00:42:05.450 Otetaan se tulos talteen muuttujan nimeltä jaettu ja sitten aikanaan myöskin 578 00:42:05.450 --> 00:42:09.450 tulostetaan tää jaettu muuttujan sisältämä lukuarvo. 579 00:42:09.450 --> 00:42:15.190 Nyt lähdetään taas sillä testien liikkeelle. 580 00:42:15.190 --> 00:42:20.330 Joka tarkoittaa sitä, että kirjoitetaan sinne aluksi toi esittelyrivi. 581 00:42:20.330 --> 00:42:24.670 Public static no me odotetaan tästä nytten double tyyppistä arvoa takaisin, 582 00:42:24.670 --> 00:42:28.930 jotenka kirjoitetaan sinne se double tuohon paluuarvon tyypiksi. 583 00:42:28.930 --> 00:42:33.110 Nimi on toi jako 3 jotain joka noudatetaan sitä ja sen jälkeen 584 00:42:33.110 --> 00:42:35.370 annetaan nimi tälle meidän hienolle parametrille. 585 00:42:35.370 --> 00:42:37.570 Täällä se nyt argumenttina on annettu 3. 586 00:42:37.570 --> 00:42:43.520 Nolla, mutta me ei mitään kolmosta tähän Kirjoita, vaan me kirjoitamme tähän jaettavan muuttujan 587 00:42:43.520 --> 00:42:48.130 nimen elikkä annetaan sille nimeksi jaettava se kuvailee nyt tässä tilanteessa minun mielestäni 588 00:42:48.130 --> 00:42:52.170 parhaiten sitä, että mitä me oikeastaan tässä ollaan tekemässä. 589 00:42:52.170 --> 00:42:53.970 No tää. 590 00:42:53.970 --> 00:42:56.350 Parametrin nyt on tyypiltään doble, jotenka me voidaan sanoa 591 00:42:56.350 --> 00:43:03.270 että jaettava jaettuna 3 ja palauttaa sen. Funktion tulos siinä ja. 592 00:43:03.270 --> 00:43:07.160 Jälleen kerran meni vähän vähän turhan nopeasti tässä. 593 00:43:07.160 --> 00:43:13.720 Tässä ajatuksissani eteenpäin, kun just 2 sekuntia sitten sanoin että tehdään tehdään 594 00:43:13.720 --> 00:43:19.250 TDD tyylillä niin innokkaana jo innokkaana ja tein sen toteutuksen, mutta tehdään nyt 595 00:43:19.250 --> 00:43:26.160 sitten näin elikkä funktion funktion pointti on jakaa annettu luku 3. 596 00:43:26.160 --> 00:43:29.870 Kirjoitan selkoosana niin teksti tuonne. 597 00:43:29.870 --> 00:43:35.410 Ja dokumentoidaan myöskin parametri eli se on se jaettava luku ja sitten paluu arvona. 598 00:43:35.410 --> 00:43:42.060 Odotamme lukua jaettuna 3 tää nyt on yksinkertainen tilanne ja totta kai tää jako jakolasku on 599 00:43:42.060 --> 00:43:46.350 sisäänrakennettu operaatio täällä CSR pissa elikkä siinä mielessä tässä nyt ei ole mitään järkeä, 600 00:43:46.350 --> 00:43:50.030 mutta se mitä mä haluan tällä alleviivata on nyt näitä näitä testejä. 601 00:43:50.030 --> 00:43:56.270 Eli mä teen tänne ensimmäisenä semmoisen testin missä mä jään nyt vaikkapa tämmöisen kokonaisluvun, 602 00:43:56.270 --> 00:43:59.250 sillä sillä kolmosella ja ja ja tietysti saan sieltä ykkösenä. 603 00:43:59.250 --> 00:44:02.460 Tää testi tietysti tulee menemään läpi. 604 00:44:02.460 --> 00:44:07.560 Ja ajetaan se testi tuosta nyt samalla me nähdään että sieltä se test jää. 605 00:44:07.560 --> 00:44:11.480 3 nyt antaa suksia, mutta tässä ei ole syytä vielä ruveta. 606 00:44:11.480 --> 00:44:17.470 Hurraa huutoja huutamaan vaan ajetaan muutama muutama muukin testi vielä lisäksi. 607 00:44:17.470 --> 00:44:21.610 Ajetaan vähän haastavampi testi, eli otetaan luku kymppi ja nyt pitää miettiä ihan 608 00:44:21.610 --> 00:44:27.570 että mikä se luku kymppi on jaettuna 3 sehän on on 3 ja sitten ikään kuin ääretön 609 00:44:27.570 --> 00:44:32.190 määrä kolmos ja siihen perään ja koitetaan ajan nytten nuo. 610 00:44:32.190 --> 00:44:37.510 Ja jos kaikki menee niinku mä no niin sieltä tuli sun keissi eli 611 00:44:37.510 --> 00:44:40.230 eli tämä nyt meni justiin niinku mä en halunnut. 612 00:44:40.230 --> 00:44:44.390 No otetaan vielä yksi siihen. No vaikkapa luku nolla. 613 00:44:44.390 --> 00:44:47.490 3 ja toivottavasti nyt tässä saadaan. 614 00:44:47.490 --> 00:44:51.810 Saadaan tota sitten filia eli. Eli nolla. 615 00:44:51.810 --> 00:44:55.170 3 jaettuna 3 pitäisi olla nolla. 616 00:44:55.170 --> 00:45:01.990 Yksi mutta katsotaan miten käy. OK. 617 00:45:01.990 --> 00:45:03.990 Mitenkähän mä saisin sieltä? 618 00:45:03.990 --> 00:45:06.770 No tehdäänpäs nyt sitten. 619 00:45:06.770 --> 00:45:11.890 Vielä yksi testi pitää ihan mä mä mä luulin kokeileeni tämän etukäteen 620 00:45:11.890 --> 00:45:15.210 etukäteen sillä tavalla, että että sieltä tulisi nyt file ja laitetaanpa 621 00:45:15.210 --> 00:45:17.420 nyt vaikka näin elikkä mulla on luku yksi. 622 00:45:17.420 --> 00:45:19.750 Nolla ja mä haluan jakaa sen 3 ja pistetään siihen vähän rajoitetumpi 623 00:45:19.750 --> 00:45:22.900 määrä noita kolmosia perään ja katsotaan miten käy. 624 00:45:22.900 --> 00:45:27.480 Eli nytten. Toivottavasti sieltä filia tulee. 625 00:45:27.480 --> 00:45:30.340 Nyt tuli filia ja katsotaan mitä sieltä oikeasti tuli. 626 00:45:30.340 --> 00:45:34.850 Eli odotimme lukua nolla. 3 3 3. 627 00:45:34.850 --> 00:45:38.010 Ja sitten nähdään, että se on pätkä nollia ja ihmeellisesti kakkonen 628 00:45:38.010 --> 00:45:41.630 perässä, mutta me saatiin sieltä oikeasti luku nolla. 629 00:45:41.630 --> 00:45:45.770 3 plaa plaa ja sitten luku ykkönen tuonne putkeen. 630 00:45:45.770 --> 00:45:48.750 Eli jos me nyt ajatellaan sitä, että mitä toi luku yksi. 631 00:45:48.750 --> 00:45:52.820 Nolla oikeasti jaettuna 3 on niin sehän on tosissaan tässä meidän 632 00:45:52.820 --> 00:45:55.830 ikään kuin matemaattisesti välissä systeemissä nolla. 633 00:45:55.830 --> 00:45:58.930 3 3 ja päättymättömästi. 634 00:45:58.930 --> 00:46:02.800 Niitä kolmosia sinne putkeen, mutta semmoista lukuahan me ei voida 635 00:46:02.800 --> 00:46:05.090 ikään kuin ykkösten ja nollien jona kirjoittaa. 636 00:46:05.090 --> 00:46:08.510 Se ei nyt tässä vaiheessa vielä ehkä ole ilmeistä, mutta tämmöinen nolla. 637 00:46:08.510 --> 00:46:16.490 3 3 3 on luku, jota ei voi 2 potenssin summana ilmaista ja toi tietokoneen sisäinen järjestelmä 638 00:46:16.490 --> 00:46:22.160 toimii 2 potenssin summana eli joku luku korotettuna kakkosen potenssiin. 639 00:46:22.160 --> 00:46:28.410 Ja niitä sitten peräkkäin laitettuna summa summana ja ja ja tää golf nolla. 640 00:46:28.410 --> 00:46:30.320 3 3 3. 641 00:46:30.320 --> 00:46:34.880 Loputtomasti niitä kolmosia on sellainen, jota ei tällaisten systeemien. 642 00:46:34.880 --> 00:46:39.860 Tällaisen systeemin mukaan voit kirjoittaa ja sen takia. 643 00:46:39.860 --> 00:46:46.150 Se mitä se todellisesti toi yksi 1,0 jaettuna 3 on siellä tietokoneen 644 00:46:46.150 --> 00:46:48.240 näkökulmasta on jotakin tuollaista. 645 00:46:48.240 --> 00:46:50.860 No otetaan sieltä päästä pois niin ehkä näette vähän 646 00:46:50.860 --> 00:46:54.540 paremmin eli siellä on on nyt sitten. 647 00:46:54.540 --> 00:47:00.570 Tosissaan hieman epätarkkuutta siinä luvussa ja sen takia nyt tässä contest systeemissä 648 00:47:00.570 --> 00:47:05.350 me joudumme ikään kuin toimimaan tän asian kanssa sillä tavalla, että hyväksymme 649 00:47:05.350 --> 00:47:11.220 sinne pienen epätarkkuuden näiden liukulukujen vertailussa siten, että kirjoitamme 650 00:47:11.220 --> 00:47:13.620 siihen tän vertailun 3 matomerkillä. 651 00:47:13.620 --> 00:47:16.620 Nyt korostan, että tää on nyt tätä kontekstin syntaksia ja 652 00:47:16.620 --> 00:47:20.420 silloin kun me haluamme kontekstissa vertailla. 653 00:47:20.420 --> 00:47:25.970 Double lukua niinku tässä nyt vasemmalla tää jää 3 kutsumelle double luvun tuottaa 654 00:47:25.970 --> 00:47:30.670 ja sitten meidän itse käsin kirjoittamaa double lukua toisiinsa, niin me kirjoitamme 655 00:47:30.670 --> 00:47:33.050 sen vertailun tämmöisellä 3 matomerkillä. 656 00:47:33.050 --> 00:47:37.870 Tää on sama asia kuin että me sinne koodiin kirjoittaisimme. 657 00:47:37.870 --> 00:47:42.960 Kirjoittaisimme tota siten, että onko tämmöinen? 658 00:47:42.960 --> 00:47:47.330 Yksi liukuluku ikään kuin jonkun toleranssin päässä jostakin toisesta 659 00:47:47.330 --> 00:47:50.810 liukui luvusta eli eli koodiksi kirjoitettuna. 660 00:47:50.810 --> 00:47:54.400 Sen voisi olla jotakin sen tapaista, että if nolla. 661 00:47:54.400 --> 00:47:57.790 3 3 3 1. 662 00:47:57.790 --> 00:48:03.620 On niin kun oppositio miten mä sen kirjoittaisin. 663 00:48:03.620 --> 00:48:06.450 No joo, ehkä itse asiassa tuo tulee demo tehtävänä puhutaan 664 00:48:06.450 --> 00:48:08.600 siitä, puhutaan siitä hieman myöhemmin. 665 00:48:08.600 --> 00:48:13.330 Mä voin näyttää sen mitä toi testi sinne taustalle generoi, mutta nyt mä generoi uudestaan 666 00:48:13.330 --> 00:48:20.180 nuo testit ja ikään kuin hyväksyn pienen virhemarginaalin siellä jakolaskussa ja näköjään 667 00:48:20.180 --> 00:48:23.480 se vielä vielä se virhemarginaalin ei ihan mulle riittänyt. 668 00:48:23.480 --> 00:48:28.030 Mun pitää laittaa varmaan noita kolmosia tuohon muutama putkeen vielä perään. 669 00:48:28.030 --> 00:48:31.550 Ja katsotaan, että saadaanko sieltä nytten nytten sukelsi ja kyllä 670 00:48:31.550 --> 00:48:37.050 saatiin eli jos me vilkaistaan sitä koodia mitä toi contest tuonne 671 00:48:37.050 --> 00:48:41.060 tuottaa tänne testaaminen test projektiin? 672 00:48:41.060 --> 00:48:48.240 Niin mä näen, että että mitä mitä siellä on taustalla eli tämä jää 673 00:48:48.240 --> 00:48:53.550 3 testikirj testitapausten kirjoittaa anteeksi testi. 674 00:48:53.550 --> 00:48:57.210 Tapausten taustalla oleva koodi löytyy täältä. 675 00:48:57.210 --> 00:48:59.630 Ja siellä on tämmöinen delta eli nolla. 676 00:48:59.630 --> 00:49:04.460 0 0 0 1 eli tää on se etäisyys. 677 00:49:04.460 --> 00:49:10.220 Jonka ollessa pienempi, niin me hyväksytään nää luvut samaksi. 678 00:49:10.220 --> 00:49:16.520 Eli mikäli tän funktion kutsun tuottama luku on enintään tämmöisen deltan päässä 679 00:49:16.520 --> 00:49:20.880 tästä expected valjus siis siitä joka me kirjoitettiin siihen meidän. 680 00:49:20.880 --> 00:49:23.580 Kontekstilla siihen oikealle puolelle. 681 00:49:23.580 --> 00:49:27.110 Niin jos jos se etäisyys on niin enintään tuo niin me hyväksytään. 682 00:49:27.110 --> 00:49:30.500 Hyväksytään silloin että ne ovat ikään kuin samat luvut tai tarkemmin 683 00:49:30.500 --> 00:49:33.920 sanottuna riittävän lähellä toisiaan, mikä me halutaan. 684 00:49:33.920 --> 00:49:37.500 Halutaan sitä toleranssia säätää, niin me voidaan periaatteessa 685 00:49:37.500 --> 00:49:39.200 sitä toleranssia täällä muuttaa. 686 00:49:39.200 --> 00:49:41.640 Olikohan se syntaksi jotakin tuon tapaista? 687 00:49:41.640 --> 00:49:44.760 Eli eli tuossa jos me hyväksytään että ne nolla. 688 00:49:44.760 --> 00:49:50.120 Yksi eli se erosi hyväksytään niinkin suuri luku kuin nolla. 689 00:49:50.120 --> 00:49:53.560 Yks niin silloin meille riittää tänne määritellä. 690 00:49:53.560 --> 00:49:58.780 Määritellä vähän pienemmillä naaraalla desimaalia toi tarkkuus ja katsotaan 691 00:49:58.780 --> 00:50:02.380 kirjoitinko mä tuon toleranssien oikean ehkä en. 692 00:50:02.380 --> 00:50:07.460 OK pre prosessia direktiivi expected. 693 00:50:07.460 --> 00:50:10.100 Saattaa olla, että tämä kirjoitin ton väärin, mutta jotain tuon 694 00:50:10.100 --> 00:50:15.380 tapaista se se kontekstin syntaksi ehkä on. 695 00:50:15.380 --> 00:50:19.940 Se lukee siellä konteksti ohjesivuilta, mutta tulee niin harvoin käytettyä tota. 696 00:50:19.940 --> 00:50:24.510 Direktiiviä, että en nyt muista miten se meni, mutta jotain tuon tapaista sinne. 697 00:50:24.510 --> 00:50:28.560 Kun kirjoittaa niin niin, niin pystyy tuota tarkkuustasoa sitten 698 00:50:28.560 --> 00:50:32.110 säätämään, mutta oletuksena se on tosiaan. 699 00:50:32.110 --> 00:50:36.830 Oletuksena se on tosiaan se delta, mikä siellä äsken äsken taustalla peliala nähtiin. 700 00:50:36.830 --> 00:50:41.090 Jos sitä haluaa sieltä lähteä lähteä katselemaan. 701 00:50:41.090 --> 00:50:44.990 Mutta pointtina tässä nyt on se, että desimaalilukuja ei voi suoraan verrata 702 00:50:44.990 --> 00:50:48.810 keskenään, elleivät ne ole sitten 2 potenssiin summia. 703 00:50:48.810 --> 00:50:54.430 Ja nämä kokonaisluvut nyt sattuvat olemaan 2 potenssiin summia ja niinpä niitten 704 00:50:54.430 --> 00:51:00.350 kohdalla tämmöinen yksi suuruusvertailu ihan näillä merkeillä onnistuu, mutta jos 705 00:51:00.350 --> 00:51:05.100 tästä nyt jotakin pitää ja kannattaa muistaa on se, että. 706 00:51:05.100 --> 00:51:10.820 Liukulukuja. Ei yleensä. 707 00:51:10.820 --> 00:51:14.700 Pidä verrata. Toisiinsa. 708 00:51:14.700 --> 00:51:20.520 2 on yksi suuruus. Merkillä. 709 00:51:20.520 --> 00:51:23.920 Näin jos ei, jos ei mitään muuta tästä pitkästä selityksestä 710 00:51:23.920 --> 00:51:30.990 muista niin tuo on se mitä pitää muistaa. No niin. 711 00:51:30.990 --> 00:51:36.490 Ja sitten vilkaisen vielä tuolta, että oliko mulle jotain muita. 712 00:51:36.490 --> 00:51:40.130 Luntatäviä asioita joo elikkä elikkä nyt niin niin tässä niin 713 00:51:40.130 --> 00:51:43.080 niin lähtisin kyllä siitä niin, että näitäkään ei. 714 00:51:43.080 --> 00:51:49.990 Ei tuolla 3 1 kuin merkillä verrata toisiinsa vaan verrataan nimenomaan tällä. 715 00:51:49.990 --> 00:51:58.790 Mato merkeillä, vaikkakin se nyt tossa tilanteessa meille sukelsi ja antoi se testi. 716 00:51:58.790 --> 00:52:03.910 Testi sieltä kontekstista. No niin. Hyvä. 717 00:52:03.910 --> 00:52:06.840 Elikkä siinä tutustuttiin vielä hetken testaamiseen ja sitten 718 00:52:06.840 --> 00:52:18.240 char int ja incar tyyppimuutoksiin ja. 719 00:52:18.240 --> 00:52:23.060 Toby vertaaminen toisiinsa testauksen yhteydessä. 720 00:52:23.060 --> 00:52:32.490 Noin siinä muistiinpanoja vielä hieman. 721 00:52:32.490 --> 00:52:34.290 Hyvä. 722 00:52:34.290 --> 00:52:38.400 No sitten ollaan valmiita etenemään seuraavaan asiaan kurssilla eli tulee tulee isoa 723 00:52:38.400 --> 00:52:44.490 käsite elikkä silmukat tässä seuraavaksi ja ja meillä on tähän asti nyt ollut ollut 724 00:52:44.490 --> 00:52:47.690 se tilanne, että me ollaan monistettu ikään kuin käsin. 725 00:52:47.690 --> 00:52:53.310 Me ollaan tehty eri palloja vain yksinkertaisesti tekemällä uusia muuttujia. 726 00:52:53.310 --> 00:52:57.990 Ja jos me ollaan haluttu tehdä useita asioita siellä meidän pelissä tai ohjelmassa, niin 727 00:52:57.990 --> 00:53:02.850 me ollaan vaan monistettu manuaalisesti sitä sitä meidän koodia, mutta ei tietysti pidemmän 728 00:53:02.850 --> 00:53:07.550 päälle ole järkevää ja ja ja jos me haluttaisi vaikka 1000 tai miljoona kertaa monistaa 729 00:53:07.550 --> 00:53:12.810 jotain asiaa, niin silloin silloin me tarvitaan vähän järeämpiä työkaluja, elikkä silmukoita 730 00:53:12.810 --> 00:53:17.090 ja yksi käyttötilanne voisi olla vaikkapa semmoinen, että me halutaan monistaa jotain 731 00:53:17.090 --> 00:53:19.290 asiaa jonkun tietyn määrän kertaa. 732 00:53:19.290 --> 00:53:22.700 Eli meillä on tasan vaikka 100 kertaa monistettava joku 733 00:53:22.700 --> 00:53:28.460 asia vaikkapa nyt sitten noita palloja. Ja niitä. 734 00:53:28.460 --> 00:53:30.500 Tota. 735 00:53:30.500 --> 00:53:34.300 Halutaan sitten laittaa ruudulle ruudulle tosissaan se ennakolta ikään kuin ennakolta. 736 00:53:34.300 --> 00:53:39.150 Tietty tietty määrä niitä objekteja. 737 00:53:39.150 --> 00:53:42.470 No sitten meillä voisi olla toinen tilanne, jossa halutaan 738 00:53:42.470 --> 00:53:45.170 monistaa jotakin asiaa monta kertaa. 739 00:53:45.170 --> 00:53:49.990 No esimerkiksi tällainen, että me halutaan kysyä salasanaa ja silloinhan 740 00:53:49.990 --> 00:53:54.710 me halutaan varmasti kysyä ainakin yksi kerran käyttäjältä sitä salasanaa, 741 00:53:54.710 --> 00:53:58.190 mutta mahdollisesti useampiakin kertoja, eikö vaan? 742 00:53:58.190 --> 00:54:01.720 Eli tuossa aikaisemmassa esimerkissä on tavallaan mahdollista, että me halutaan 743 00:54:01.720 --> 00:54:06.490 monistaa pallon tekemistä nolla kertaa taikka sitten enemmän. 744 00:54:06.490 --> 00:54:11.390 Mutta jonkun tietty määrä kertoja, mutta tässä tunnussanan kyselyssä on varma asia se, 745 00:54:11.390 --> 00:54:16.150 että me halutaan sieltä käyttäjältä ainakin yksi kertaa se asia tiedustella, mutta mahdollisesti 746 00:54:16.150 --> 00:54:20.850 useamminkin, mikäli se käyttäjä antaa väärän salasanan ja sieltähän se salasana nyt näytti 747 00:54:20.850 --> 00:54:24.960 sitten löytyvän loppujen lopuksi oikein. 748 00:54:24.960 --> 00:54:27.160 Ja voitais nyt lähteä tässä aluksi toteuttamaan. 749 00:54:27.160 --> 00:54:34.610 Toi ensimmäinen tilanne missä me haluttiin monistaa sen tietyn määrän niitä palloja. 750 00:54:34.610 --> 00:54:39.890 Eli otetaan esimerkki tällaisesta. Silmukasta. 751 00:54:39.890 --> 00:54:46.990 Kun tulostetaan tietty. Tietty määrä niitä palloja ja. 752 00:54:46.990 --> 00:54:52.580 Homma lähtee liikkeelle sanomalla int IA nolla tai ylipäätään. 753 00:54:52.580 --> 00:54:54.970 Mikä tän pointti on tää on laskuri. 754 00:54:54.970 --> 00:55:05.230 Muuttuja joka meillä pitää kirjaa. Monistetusta määrästä. 755 00:55:05.230 --> 00:55:07.030 Ja tän jälkeen. 756 00:55:07.030 --> 00:55:10.530 Tää on siis kaikista yksinkertaisin silmukka rakenne mitä on 757 00:55:10.530 --> 00:55:15.600 ja tän jälkeen annetaan sanaa vaille ja toistoehto. 758 00:55:15.600 --> 00:55:19.250 Eli ehto jonka ollessa totta. 759 00:55:19.250 --> 00:55:26.640 Ehto jonka ollessa totta. Tehdään. 760 00:55:26.640 --> 00:55:32.930 Tuo runko osa joka tuossa alapuolella on aalto sulkuilla rajattu. 761 00:55:32.930 --> 00:55:37.750 Runkoosa alkaa. Tästä päättyy tähän. 762 00:55:37.750 --> 00:55:40.420 Ja tosissaan niin niin niin ehdon ollessa totta tehdään 763 00:55:40.420 --> 00:55:43.880 tämä asia mitä me nyt halutaan siinä tehdä. 764 00:55:43.880 --> 00:55:47.140 Mitenköhän mä nyt vähän turhan nopeasti taas ei oikein nyt. 765 00:55:47.140 --> 00:55:51.820 Ei oikein nyt taida näköjään aivot taas tänään toimia. 766 00:55:51.820 --> 00:55:54.410 Tehdään tää monta palloa kun nyt lähdin tätä tekemään. 767 00:55:54.410 --> 00:55:57.230 Oli ehkä tarkoituksena tehdä tuossa toi. 768 00:55:57.230 --> 00:56:02.870 Oli ehkä tarkoituksena tehdä tuossa toi. 769 00:56:02.870 --> 00:56:05.040 Konsoli application ekana mutta ei se mitään. 770 00:56:05.040 --> 00:56:07.770 Tää on ehkä vähän mielenkiintoisempi. Anyways. 771 00:56:07.770 --> 00:56:11.370 Mitä me halutaan toistaa, niin me halutaan toistaa nyt niitten. 772 00:56:11.370 --> 00:56:16.180 Pallojen tekemistä eli meillä voisi olla ja tietenkään mä en tehnyt edes. 773 00:56:16.180 --> 00:56:18.330 Tietenkään mä en tehnyt tästä syypeliprojektia. 774 00:56:18.330 --> 00:56:20.640 Voi että lainen kun ei nyt oikein tänään aivot kulje. 775 00:56:20.640 --> 00:56:24.410 Tehdään tuosta uusi projekti. 776 00:56:24.410 --> 00:56:30.600 Ei tänään aivot toimi delegoidaan tämä edit delete delete product. 777 00:56:30.600 --> 00:56:33.700 Tää on oikeastaan ihan kätevä toiminto tässä raiderissa. 778 00:56:33.700 --> 00:56:37.250 Täältä voi kertakaikkiaan tuommoisen projektin deletoida tehdä fysiikka. 779 00:56:37.250 --> 00:56:41.550 Peli annetaan sille nimeksi monta palloa, painetaan enteriä siitä 780 00:56:41.550 --> 00:56:46.780 vähän vähän mielenkiintoisempi projekti käyntiin noin. 781 00:56:46.780 --> 00:56:52.020 Eli tännehän mun piti tietysti oikeasti kirjoittaa että että tota. 782 00:56:52.020 --> 00:56:55.080 Fysiikka object. 783 00:56:55.080 --> 00:57:00.220 Pallo ja sitten tehdään uusi fysiikka objekti, uusi fysiikka objekti, 784 00:57:00.220 --> 00:57:02.250 jolle annetaan nyt vaikka koko neljäkymmentäneljä. 785 00:57:02.250 --> 00:57:04.050 Laitetaan se nyt. 786 00:57:04.050 --> 00:57:08.260 Laitan sen nyt tuota kiinteäksi toi koko ja annetaan sille muoto. 787 00:57:08.260 --> 00:57:12.650 Ja lisätään sen ruudulle eli nyt huomaat niin, että mä täällä runko osan 788 00:57:12.650 --> 00:57:16.200 sisällä teen tämmöisen pallon ja nyt niinku oletus on tietysti tässä se 789 00:57:16.200 --> 00:57:19.610 tai arvaus, että niitä tulisi nyt 100 kappaletta. 790 00:57:19.610 --> 00:57:23.720 Ja ja ja nyt me ikään kuin 100 kertaa tätä täällä monistetaan ikään kuin laitetaan 791 00:57:23.720 --> 00:57:27.180 monistuskone käyntiin ja määräksi 100 ja painetaan enter ja. 792 00:57:27.180 --> 00:57:29.730 Katsotaan mitä tapahtuu eli me ollaan nytten aktiivisena projektina. 793 00:57:29.730 --> 00:57:34.440 Toivottavasti tää monta palloa niinku näyttäisikin olevan painetaan run. 794 00:57:34.440 --> 00:57:38.910 Ja katsotaan mitä käy. Ja ainakaan vielä mitään ei tapahdu. 795 00:57:38.910 --> 00:57:45.210 Mulla on siellä tiimalasi ja mäkin sä varmaan rantapallo heittää siellä volttia ja katsotaan 796 00:57:45.210 --> 00:57:49.890 mitä mun tehtävähallinta sanoo kun tää nyt ei näytä tästä etenevän tää homma eli siellä 797 00:57:49.890 --> 00:57:56.430 nyt jostain syystä tää raider backend vie aika paljon muistia ja suoritin käy siellä kuumana 798 00:57:56.430 --> 00:58:01.540 ja mitään ei näköjään tapahdu monta palloa ohjelma vie yhtäkkiä 7 gigaa muistia miten se 799 00:58:01.540 --> 00:58:06.230 on mahdollista 8 gigaa ei tää nyt jutella nyt ihan niin raskas systeemi ole eli se mitä 800 00:58:06.230 --> 00:58:08.630 tässä herkästi tuppaa käymään kun. 801 00:58:08.630 --> 00:58:12.380 Näitä silmukoita tehdään on että jotakin unohtuu ja se mitä mulla tässä 802 00:58:12.380 --> 00:58:17.820 unohtui on ikään kuin lopettaa tää silmukka joskus. 803 00:58:17.820 --> 00:58:21.580 Eli tämä on nyt täällä aina totta, eli raideri itse asiassa täällä 804 00:58:21.580 --> 00:58:24.940 vähän ehdotteleekin, että expression solveig tre. 805 00:58:24.940 --> 00:58:28.720 Tää toistoehto jonka ollessa totta me aina suoritetaan tää 806 00:58:28.720 --> 00:58:30.940 runko osa niin se on nyt täällä aina totta. 807 00:58:30.940 --> 00:58:35.210 Mä en missään vaiheessa aiheuta semmoista tilannetta milloin 808 00:58:35.210 --> 00:58:38.560 tämä on pienempää kuin 100 olisikin epätotta. 809 00:58:38.560 --> 00:58:43.920 Eli mun pitää ehdottomasti luoda tämmöinen tänne semmoinen olosuhde että tää on 810 00:58:43.920 --> 00:58:47.460 pienempää kuin 100 niin se on sen on joskus mahdollista olla totta. 811 00:58:47.460 --> 00:58:49.430 Vilkaistaan vielä tuonne. 812 00:58:49.430 --> 00:58:54.310 Task manageriin me ollaan tässä mun superkoneessa nyt näköjään niin paljon tätä 813 00:58:54.310 --> 00:58:57.660 keskusmuistia, että että tota tuo ei ihan äkkiä menee täyteen. 814 00:58:57.660 --> 00:59:03.070 Mutta niinku tuosta ylä. Yläviistoon juoksevasta mäestä. Nyt näkee niin kovasti. 815 00:59:03.070 --> 00:59:05.630 Se siellä tuppaa kohta loppumaan niin kaksikymmentäyksi gigaa. 816 00:59:05.630 --> 00:59:08.340 No joo, ehkä mä nyt en tätä tän pidemmälle vielä. 817 00:59:08.340 --> 00:59:13.480 Mun oli tarkoitus tässä näyttää, että kohta tää ohjelma ohjelma siinä kaatuu. 818 00:59:13.480 --> 00:59:17.500 Kun muisti loppuu, mutta näköjään mulla on vähän liikaa muistia tähän demonstraation, 819 00:59:17.500 --> 00:59:23.160 mutta se mitä tänne piti tehdä on laittaa i plus plus eli saattaa tää muuttujan 820 00:59:23.160 --> 00:59:28.660 arvo semmoiseen tilaan, että se jossain monistauksen vaiheessa aikanaan päätyy siihen 821 00:59:28.660 --> 00:59:33.200 lukuun 100 jolloinka tää ehto ei enää olekaan totta. 822 00:59:33.200 --> 00:59:38.900 Esimerkiksi luku 100 ei ole pienempää kuin 100, jolloin se ehto on epätotta. 823 00:59:38.900 --> 00:59:41.080 Ja me hypätään silloin tän silmukan yli. 824 00:59:41.080 --> 00:59:45.200 Jatketaan tätä ohjelmaa eteenpäin käytännössä tänne loppukuun. 825 00:59:45.200 --> 00:59:49.280 No laitetaan nyt tää ohjelma käyntiin ja toivotaan että saadaan sieltä ne satapalloa 826 00:59:49.280 --> 00:59:54.080 esille ja kyllä sieltä ne 100 palloa varmaan esille tuli, mutta nyt ne on kaikki siinä 827 00:59:54.080 --> 00:59:58.390 vähän ikävästi päällekkäin, niin ne ei oikein siinä silleen näy. 828 00:59:58.390 --> 01:00:04.030 Niin luodaan niille vähän mukavammat olosuhteet sinne, eli laitetaan niitten positio. 829 01:00:04.030 --> 01:00:10.590 Vähän toisistaan erilleen eli random genillä tai random gen luokkaa hyväksikäyttämällä 830 01:00:10.590 --> 01:00:13.530 luo menee vähän eri paikkaan ja täähän on ihan tämmöinen kätevä. 831 01:00:13.530 --> 01:00:20.650 Oikotie että jos me otamme tuolta level. Poundin rekt nimisen. 832 01:00:20.650 --> 01:00:24.520 Tiedon, niin me saamme tiedon siitä, että mikä on sen. 833 01:00:24.520 --> 01:00:28.500 Meidän pelialueen ympäröivä reunus, niin me voidaan luoda siitä tämmöinen 834 01:00:28.500 --> 01:00:32.940 satunnainen vektori eli luodaan satunnainen sijainti siten, että meidän 835 01:00:32.940 --> 01:00:35.660 rajoittavana tekijänä on meidän pelialue. 836 01:00:35.660 --> 01:00:40.490 Siten tää voidaan luoda lukea ääneen. 837 01:00:40.490 --> 01:00:47.490 Annetaan pallolle satunnainen sijainti. Kuitenkin niin. 838 01:00:47.490 --> 01:00:51.830 Että se on pelialueen sisällä. Noin. 839 01:00:51.830 --> 01:00:55.470 Jotain eli nyt toivotaan niin että että ne pallot menee hieman sieltä eri 840 01:00:55.470 --> 01:00:59.010 paikkoihin ja saadaan jotain näkyvää sieltä aikaiseksi. 841 01:00:59.010 --> 01:01:01.660 Ja nyt ne on ihan kivasti siellä eri paikoissa laitetaan 842 01:01:01.660 --> 01:01:03.890 niille vielä vähän eri värejäkin. 843 01:01:03.890 --> 01:01:06.430 Sekin on mahdollista sanomalla random gen. 844 01:01:06.430 --> 01:01:12.230 Next color tätä oltiin aikaisemminkin, muistaakseni jo käytetty ja ihan vaan jotta tästä 845 01:01:12.230 --> 01:01:15.700 tulisi vähän hauskemman näköinen niin laitetaan ne vielä tippumaan alaspäin. 846 01:01:15.700 --> 01:01:19.650 Eli gravity on yksi kuin new vector ja alaspäin kun me 847 01:01:19.650 --> 01:01:22.370 halutaan niin komponentin arvoa sitten. 848 01:01:22.370 --> 01:01:25.480 Pistetään siitä negatiiviselle puolelle, niin toivottavasti 849 01:01:25.480 --> 01:01:29.060 saadaan niitä kivasti sieltä tiputeltuakin. 850 01:01:29.060 --> 01:01:32.120 Noin ne hävisi sinne avaruuteen ja laitetaan vielä 851 01:01:32.120 --> 01:01:36.000 levelille reunus reunatkin eli level. 852 01:01:36.000 --> 01:01:42.100 Pitää ihan luntata create borders ja; Perään niin silloin siihen pelialueen ympärille tulee 853 01:01:42.100 --> 01:01:46.440 semmoiset kiinteät kiinteät reunat jotka ei liiku yhtään mihinkään ja ne pallot jää tuohon 854 01:01:46.440 --> 01:01:51.000 sitten kivasti jumiin ja nyt ne pallot on tolleen saman kokoisia kaikki ja peleissä ja nyt 855 01:01:51.000 --> 01:01:55.660 yleensä jotakin satunnaisuutta tuppaa olemaan niin tehdään niistä palloista nyt aavistuksen 856 01:01:55.660 --> 01:01:59.480 erikokoisia niin laitetaan tohon tohon nyt niin että. 857 01:01:59.480 --> 01:02:03.170 Pallo. Vid on random gen. 858 01:02:03.170 --> 01:02:10.650 Next double ja arvotaan siihen vaikkapa 10– 100 väliltä leveys ja vastaavasti 859 01:02:10.650 --> 01:02:13.610 voitossa arpoa myöskin korkeus niistä nyt tulee sitten vähän semmoisia 860 01:02:13.610 --> 01:02:17.610 elliptisiä, mutta mitäpä sillä nyt on väliä. 861 01:02:17.610 --> 01:02:22.710 Eli jokaisella pallolla on hieman satunnainen, satunnainen koko ja se nyt näyttää vähän 862 01:02:22.710 --> 01:02:26.600 vähän mielenkiintoisemmalta tuo meidän peli OK elikkä tää on se yksinkertaisin mahdollinen 863 01:02:26.600 --> 01:02:31.670 silmukka rakenne joka joka c sarvissa on mahdollista tehdä. 864 01:02:31.670 --> 01:02:36.610 Ja mä teen nyt niitä pikkuisen vähemmän kun muuten tuo mun peli menee pikkuisen 865 01:02:36.610 --> 01:02:40.790 sekavan näköiseksi niin tehdään niistä nyt tuolleen aavistuksen pienempiä ja 866 01:02:40.790 --> 01:02:43.900 hieman vähemmän kappaleita, niin saadaan sinne vaikka. 867 01:02:43.900 --> 01:02:46.840 Toinen esimerkki on vähän liiankin pieni. 868 01:02:46.840 --> 01:02:49.020 Täältä meni taas vähän säätämiseksi, mutta tehdään niistä 869 01:02:49.020 --> 01:02:54.970 nyt 20 kertaa 40 kokoisia palleroita niin. Näyttää vähän. 870 01:02:54.970 --> 01:03:01.420 Mukavammalta noin no niin siellä ne on ja sitten mennään eteenpäin. 871 01:03:01.420 --> 01:03:04.750 Otetaan sieltä toi slaidikin esille. 872 01:03:04.750 --> 01:03:10.040 Eli meillä käsiteltiin nyt tota väyliä, joka ehkä soveltuu siihen tilanteeseen, 873 01:03:10.040 --> 01:03:15.230 että meillä on ennalta tuntematon määrä toistoja, mutta tossahan mä nyt tiesin 874 01:03:15.230 --> 01:03:18.950 sen, että mä tulen tekemään 20 palloa niin me voitaisiin ottaa tähän väliin 875 01:03:18.950 --> 01:03:21.230 nyt että toi for silmukka myöskin. 876 01:03:21.230 --> 01:03:26.250 Eli meillä on ennalta tunnettu määrä toistoja ja tehdään se tuohon alapuolelle 877 01:03:26.250 --> 01:03:32.400 eli tehdään ennalta tunnettu määrä toistoja vaikkapa nyt sitten. 878 01:03:32.400 --> 01:03:37.620 40 tai 20 vaikka neliötä forsin mukaan syntaksi eroaa aavistuksen verran 879 01:03:37.620 --> 01:03:41.320 tuosta willistä eli siinä missä välissä meillä oli täällä laskuri muuttuja 880 01:03:41.320 --> 01:03:44.380 joka pitää meillä kirjaa monistaetusta määrästä. 881 01:03:44.380 --> 01:03:49.700 Meillä oli toistoehto, joka pitää meidät meidän tilanteen tasalla siitä, että 882 01:03:49.700 --> 01:03:53.440 että toistetaanko me tätä ehtoa vai tätä runko osaa vai ei. 883 01:03:53.440 --> 01:03:57.880 Ja sitten meillä oli täällä. Lisäys. 884 01:03:57.880 --> 01:04:03.870 Lauseke. Joka muuttaa laskuri muuttujan arvoa. 885 01:04:03.870 --> 01:04:07.990 Mä nyt laitan sen laskurin muutti on tuolle lainausmerkkeihin, koska se on ihan 886 01:04:07.990 --> 01:04:11.820 samanlainen muuttuja siinä missä mikä tahansa muukin muuttuja. 887 01:04:11.820 --> 01:04:16.200 Mutta mä nyt vaan nimitän sitä tässä laskuri muuttujaksi. 888 01:04:16.200 --> 01:04:21.240 Niin tää forsell mokka eroaa siinä mielessä nytten tästä willistä että ne kaikki 889 01:04:21.240 --> 01:04:28.170 asiat annetaankin tässä sulkujen sisällä puolipisteellä erotettuna. 890 01:04:28.170 --> 01:04:31.420 Tää nyt näyttää ehkä aavistuksen kryptiselta, mutta kun tätä hetken 891 01:04:31.420 --> 01:04:34.350 lukee niin tää on itse asiassa aika selkeä eli. 892 01:04:34.350 --> 01:04:39.590 Laskuri muuttujien alustus laitetaan tänne sen jälkeen puolipisteellä erotettuna laitetaan 893 01:04:39.590 --> 01:04:43.890 toistoehto ja sitten tää lisäyslauseke joka muuttaa laskurin. 894 01:04:43.890 --> 01:04:47.630 Muuttujan arvoa laitetaan siihen muistiin ne asiat eli forssell 895 01:04:47.630 --> 01:04:51.200 mukaan niin kutsutulle määrittelynille. 896 01:04:51.200 --> 01:04:55.250 Mä en nyt tiedä onko tää kirjallisuudessa käytetty tämmöistä sanaa määrittelyn nyt tässä 897 01:04:55.250 --> 01:04:58.370 yhteydessä välttämättä, mutta mun mielestä se on aika hyvin kuvaa tätä. 898 01:04:58.370 --> 01:05:06.080 Mitä tässä tehdään kirjoitetaan. Sekä. 899 01:05:06.080 --> 01:05:11.560 Laskuri muuttujan. Alustus. 900 01:05:11.560 --> 01:05:15.560 Toistoehto. Että myöskin. 901 01:05:15.560 --> 01:05:19.770 Lisäyslauseke. 902 01:05:19.770 --> 01:05:24.060 Ja siinä mielessä tää on ehkä vähän kompaktimpi ja tietysti ohjelmat monesti tykkää lyhyestä 903 01:05:24.060 --> 01:05:28.500 kirjoitustyylistä ja tavasta joka säästää riveä ja ehkä on jotenkin nätimpää. 904 01:05:28.500 --> 01:05:33.230 Niin joku nyt sitten voi sanoa niin, että ehkä tää on vähän vähän elegantimpaa koodia. 905 01:05:33.230 --> 01:05:37.710 Siitä nyt voi olla sitten montaa mieltä, mutta pointti on se, että me voimme tehdä tänne ihan 906 01:05:37.710 --> 01:05:42.760 samalla tavalla niitä fyysisiä objekteja tehdään nyt tällä kertaa neliöitä. 907 01:05:42.760 --> 01:05:46.800 Hupsista, nyt fyysiset objektit annetaan sille nyt vaikka koko 908 01:05:46.800 --> 01:05:51.710 50, 50 ja tehdään niistä shapepiste rektaalejä. 909 01:05:51.710 --> 01:05:56.210 Ja lisätään ne ruutuun ja tehdään niille nyt samalla tavalla sitten. 910 01:05:56.210 --> 01:06:02.780 Positio. Randommiksi kun tuolla äskenkin. 911 01:06:02.780 --> 01:06:04.580 4. 912 01:06:04.580 --> 01:06:07.880 Position ja heitetään ne satunnaisiin sijainteihin ja nyt huomataan niin, 913 01:06:07.880 --> 01:06:10.340 että tänne ei tarvitse mitään j plus plussaa tänne perään. 914 01:06:10.340 --> 01:06:14.260 Enää vaan se plus plus lukee täällä forsin mukaan määrittelyn rivillä. 915 01:06:14.260 --> 01:06:19.120 Eli siinä mielessä tää koodin suoritusjärjestys ei ehkä 916 01:06:19.120 --> 01:06:23.260 ole niin selvä kuin tuossa vain tapauksessa. 917 01:06:23.260 --> 01:06:28.200 Vaan vaan tuota se ikään kun kirjoitetaan tuonne se lisäyslauseke, 918 01:06:28.200 --> 01:06:31.630 mutta lopputulema on se, että meillä on siellä ne 20. 919 01:06:31.630 --> 01:06:35.480 Laatikkoa ihan samalla tavalla. 920 01:06:35.480 --> 01:06:38.360 Eli jälleen kerran tätä voisi kuvailla vähän niinku monistuskoneen, 921 01:06:38.360 --> 01:06:42.890 jossa se monistusmäärä kirjoitetaan tonne noin ja sitten painetaan 922 01:06:42.890 --> 01:06:47.220 nappia joka kerta tulee yksi laatikko lisää. 923 01:06:47.220 --> 01:06:51.300 No. 924 01:06:51.300 --> 01:06:54.660 Tää nyt oli varmaan tämmöinen yksinkertaisin mahdollinen esimerkki. 925 01:06:54.660 --> 01:06:59.600 Ja ja ja mä ehkä laajennan tätä ajatusta nyt hieman himpun 926 01:06:59.600 --> 01:07:05.090 verran tuolla sitten vielä niin kun tuolla. 927 01:07:05.090 --> 01:07:10.170 Konsoli application puolella ja tuon vähän tähän vähän uutta näkökulmaa. 928 01:07:10.170 --> 01:07:20.060 Pieni hetki. Tuolta luntti auki mä nyt menin. 929 01:07:20.060 --> 01:07:23.250 Menin tässä pikkuisen väärässä järjestyksessä. 930 01:07:23.250 --> 01:07:28.210 Mitä olin ajatellut, mutta ei kai se haittaa eli tehdään nytten konsoli application missä 931 01:07:28.210 --> 01:07:34.250 tulostetaan luvut 0 9 ja tässä meillä nyt sitten muuttuja toimii laskurin mä otan tuosta 932 01:07:34.250 --> 01:07:38.820 ajan voittamiseksi vähän copypastea eli ihan samalla tavalla kun tuossa äskenkin pallojen 933 01:07:38.820 --> 01:07:42.310 tapauksessa niin mä määrittelen erikseen tänne tämmöisen muuttujan. 934 01:07:42.310 --> 01:07:44.890 Mä annan sille nyt nimen mutta huomaatte tällä ei ole mitään 935 01:07:44.890 --> 01:07:46.810 merkitystä että minkä nimeä mä tälle annan. 936 01:07:46.810 --> 01:07:49.830 Mä voisin antaa sille nimen vaikka pekka, mutta joka tapauksessa niin 937 01:07:49.830 --> 01:07:52.640 ajatus nyt on se että se toimii mulla laskuri muuttuja joka pitää 938 01:07:52.640 --> 01:07:54.440 kirjaa että kuinka monta kertaa mä oon tässä. 939 01:07:54.440 --> 01:07:56.650 Silmänsä pyörinyt rundia. 940 01:07:56.650 --> 01:08:00.650 Sitten meillä on se toistoehto, jonka ollessa voimassa silmukan runko osa suoritetaan 941 01:08:00.650 --> 01:08:04.940 ja sitten meillä on tää aalto sulkeiden rajaama alue. 942 01:08:04.940 --> 01:08:08.590 Joka toteutetaan silloin kun ehto on totta ja nyt ehkä nokkelimmat huomaa, 943 01:08:08.590 --> 01:08:12.540 että meillä oli if lauseen tapauksessa vähän sama ajatus, että ehdon ollessa 944 01:08:12.540 --> 01:08:14.700 voimassa niin se runko osa toteutettiin. 945 01:08:14.700 --> 01:08:20.080 Tää on valion vähän saman sukuinen asia, eli ehdon ollessa voimassa toteutetaan 946 01:08:20.080 --> 01:08:24.520 tämä jutska, mutta vaili ikään kuin tuuppaa tätä edelleen. 947 01:08:24.520 --> 01:08:28.750 Ja edelleen mikäli tää on pienempää kuin kymppi on totta ja nyt 948 01:08:28.750 --> 01:08:32.520 meillä on siellä tulostuslause joka tulostaa muuttujan sen hetkisen 949 01:08:32.520 --> 01:08:35.230 arvon ja katsotaan mitä siellä pamahtaa. 950 01:08:35.230 --> 01:08:39.670 Ruutuun ja näköjään mulla oli väärä väärä tuota projekti siellä aktiivisena 951 01:08:39.670 --> 01:08:46.570 niin käydään vielä sekin sieltä laittamassa kuntoon. 952 01:08:46.570 --> 01:08:49.830 Noin eli nyt sinne tulostus alueelle, jota vähän tuossa suurennetaan niin 953 01:08:49.830 --> 01:08:53.250 saatiin ne luvut 0 9 no miksi se kymppi ei sinne tullut. 954 01:08:53.250 --> 01:08:55.050 Meillähän on luku kymppi täällä. 955 01:08:55.050 --> 01:08:58.610 No nyt pitää huomata niin, että että meidän alkaa nolla 956 01:08:58.610 --> 01:09:02.570 ja lisääntyy aina täällä runko osan lopussa. 957 01:09:02.570 --> 01:09:06.190 No nyt jos me laitetaan tää ohjelmakäynti ja pohditaan että miten tää suoritus tässä 958 01:09:06.190 --> 01:09:10.530 eteen niin se etenee siten että me aluksi alustetaan tää sen jälkeen mennään tuohon 959 01:09:10.530 --> 01:09:12.770 tarkasteluun että onko i on pienempää kuin kymppi. 960 01:09:12.770 --> 01:09:20.140 OK se on olluksi sitten tehdään nää rivit i muuttuu ykköseen mennään loppukuun ja sen 961 01:09:20.140 --> 01:09:24.190 jälkeen hypätään tänne riville kaksikymmentäyksi tarkastelemaan uudelleen että onko se 962 01:09:24.190 --> 01:09:30.010 ykkönen pienempää kuin 10 no se on jotenka tehdään uudestaan se tulostus ja näin jatketaan 963 01:09:30.010 --> 01:09:33.560 aina siihen saakka että tullaan siihen ysiin tulostukseen. 964 01:09:33.560 --> 01:09:39.440 Ysi korotetaan kymppiin, mennään loppukuun ja palataan tarkastelemaan toisto ehtoa. 965 01:09:39.440 --> 01:09:43.940 Onko kymppi pienempää kuin kymppi ei ole. Jotenka hypätään. 966 01:09:43.940 --> 01:09:47.830 Loppusumma on yli ja mennään seuraavaan askeleeseen riville kaksikymmentäkuusi, jossa 967 01:09:47.830 --> 01:09:52.020 meidän ohjelma päättyy lopullisesti eli sitä se kymppi ei koskaan tule täyttämään 968 01:09:52.020 --> 01:09:55.620 sitä meidän toisto ehtoa, mikä täällä 20 rivillä on asetettu. 969 01:09:55.620 --> 01:10:00.000 Jos me haluttaisiin se kymppi tulostaa myöskin, niin me laitettaisiin tähän 970 01:10:00.000 --> 01:10:05.060 yksi suuruusmerkki, jolloinka se kymppi on pienempää tai yhtäsuuri kuin kymppi 971 01:10:05.060 --> 01:10:10.400 ja se tulisi myöskin tulostetuksi siellä tulostus lauseella ja silloin silloin 972 01:10:10.400 --> 01:10:13.270 tota tietysti tässä tulostuisi nyt 11 lukua. 973 01:10:13.270 --> 01:10:15.710 Mikä voi taas tuntua epäloogiselta. 974 01:10:15.710 --> 01:10:32.170 Eli tässä tilanteessa me tulostetaan luvut ykkösestä tai 975 01:10:32.170 --> 01:10:38.350 nolla ysiin eli tasan 10 lukua jos me haluttaisiin tulostaa luvut ykkösestä kymppiin, 976 01:10:38.350 --> 01:10:42.850 niin me tietysti muutettaisi tätä asetelmaa hieman, mutta jätetään se nyt näin, koska varsin 977 01:10:42.850 --> 01:10:42.850 usein meillä ohjelmoinnissa on se tilanne, että me halutaan käydä nimenomaan 978 01:10:42.850 --> 01:10:42.850 sieltä nolla alkuisesta niitä asioita esimerkiksi taulukon tai merkkijonon tai muiden vastaavien 979 01:10:42.850 --> 01:10:42.850 tietorakenteiden tapauksessa ja ikään kuin jättää sen aivan se vihoviimeinen 980 01:10:42.850 --> 01:10:44.650 tässä tapauksessa lukukymppiä ikään kuin käsittelemättä. 981 01:10:44.650 --> 01:10:47.920 Tästä meille tulee useita esimerkkejä. 982 01:10:47.920 --> 01:10:53.280 Joo no sitten otetaan toinen esimerkki, eli mä muutan 983 01:10:53.280 --> 01:11:08.200 nytten ton IN tässä takaisin siihen 984 01:11:08.200 --> 01:11:17.940 nolla. Eli nyt niinku huomaan 985 01:11:17.940 --> 01:11:18.440 että tää on ihan siinä samanlainen muuttuja missä mikä tahansa muukin muuttuja. 986 01:11:18.440 --> 01:11:18.440 Jos mä nyt huvikseen tulostan sen Inarin tuossa uudelleen ja katsoin että mitä sieltä 987 01:11:18.440 --> 01:11:18.440 pullahtaa tulostusalueelle pihalle niin sieltä se nolla tulee pihalle. 988 01:11:18.440 --> 01:11:18.440 Eli tää on ihan silleen normaali muuttuja, mutta mä en nyt tulosta sitä tuossa vaan. 989 01:11:18.440 --> 01:11:20.240 Mä teen uuden silmukan ja edelleen toistoehto voisi olla että on pienempää. 990 01:11:20.240 --> 01:11:24.690 Kun kymppi ja nyt mä tulostan luvut nolla ysiin kuitenkin sillä tavalla. 991 01:11:24.690 --> 01:11:29.670 Että mä en tulosta kaikkia lukuja, vaan mä tulostan. 992 01:11:29.670 --> 01:11:37.770 Luvut siten että kertaa 2 eli kasvatan i, tä joka joka 993 01:11:37.770 --> 01:11:46.110 kierroksella yksi mutta en tulosta 0 1 2 ja niin edelleen vaan aina seni kertaa kakkosen sen hetkisen arvon. 994 01:11:46.110 --> 01:11:50.720 Ja nyt me saadaan sieltä siis toisin sanoen IN. 995 01:11:50.720 --> 01:11:55.230 I tuplana aina joka kierroksella eli siinä mielessä me ei olla sitouduttu 996 01:11:55.230 --> 01:11:58.010 tässä mitenkään siihen IN varsinaiseen arvoon. 997 01:11:58.010 --> 01:12:03.540 Me voidaan tehdä siellä ihan mitä me lystään, mutta mutta tota. 998 01:12:03.540 --> 01:12:06.420 Sei auttaa meitä niinku etenemään siinä prosessissa. 999 01:12:06.420 --> 01:12:11.690 No sitten seuraava esimerkki eli laskuri muuttuja voi olla minkä niminen vain esimerkiksi 1000 01:12:11.690 --> 01:12:18.720 meillä ei ole mitään syytä ja niinku pakkoa käyttää nimenomaan sitä iita, vaikka 1001 01:12:18.720 --> 01:12:22.380 nyt ohjelmoit ehkä tapaavat sitä iita käyttää. 1002 01:12:22.380 --> 01:12:26.400 Jostain syystä se tulee varmaan sanasta index, joka kuvaa niinku tavallaan 1003 01:12:26.400 --> 01:12:31.020 paikkaa missä ollaan menossa ja siitä se varmaan lyhennettynä sitten on 1004 01:12:31.020 --> 01:12:35.880 joskus 50 60 ehkä keksitty jota hei käytetäänkö iida? 1005 01:12:35.880 --> 01:12:38.820 Ja sitten se on vaan jäänyt elämään, mutta aivan hyvin voi olla myöskin 1006 01:12:38.820 --> 01:12:44.180 vaikkapa ja sitten tulostaa tulostaa tota noin niin. 1007 01:12:44.180 --> 01:12:48.950 JN arvo ja tehdäänpä tämä nyt hieman eri tavalla, eli tulostetaan se JN 1008 01:12:48.950 --> 01:12:54.120 arvo, mutta kasvatetaan JN arvoa yksi tällä tavalla eli äsken me kasvatettiin 1009 01:12:54.120 --> 01:12:58.730 IN arvoa sillä plus plus merkinnällä, mutta ihan yksi hyvin me voitaisiin 1010 01:12:58.730 --> 01:13:01.540 kasvattaa jen arvoa joko tuolla tavalla. 1011 01:13:01.540 --> 01:13:05.970 Plus on yks taikka sanomalla j on plus yks eli nää kaikki 1012 01:13:05.970 --> 01:13:11.030 3 asiaa ovat ekvivalentti keskenään. 1013 01:13:11.030 --> 01:13:15.570 Nämä 3 asiaa tekevät tässä täysin saman asian. 1014 01:13:15.570 --> 01:13:21.980 Kasvattavat JN arvaa yksi ja siitä ohjelmakäyntiin ja nähdään niin, että. 1015 01:13:21.980 --> 01:13:24.870 Homma toimii edelleen, eli siellä käytetään nimenomaan 1016 01:13:24.870 --> 01:13:27.920 j, tä ja tulostetaan luvut nolla ysiin. 1017 01:13:27.920 --> 01:13:30.880 Hyvä pari esimerkkiä vielä. 1018 01:13:30.880 --> 01:13:34.500 Tällä kerralla lähdetäänkin liikkeelle hieman isommasta luvusta eli määritellään 1019 01:13:34.500 --> 01:13:40.060 muuttuja ja aloitetaan se luvusta 13 ja tehdäänpä semmoinen jekku. 1020 01:13:40.060 --> 01:13:45.440 Nyt lähdetäänkin pienentämään koota siten, että ei pienennetäkään sitä koota aina yksi vaan 1021 01:13:45.440 --> 01:13:50.400 pienennetään 2 joka kerta heitetään 2 kappaletta näitä vähennys lauseita sinne ja tulostetaan 1022 01:13:50.400 --> 01:13:53.990 koonneen hetkinen arvo ja nyt huomaat että meillä on toisto ehdossa. 1023 01:13:53.990 --> 01:13:58.170 K on suurempaa kuin -5. 1024 01:13:58.170 --> 01:14:01.910 Eli vaikka meillä niin kun semmoinen ehkä tapa ja tyyli on monesti kirjoittaa 1025 01:14:01.910 --> 01:14:06.010 siten, että se laskuri muuttuja on pienempää kuin jotakin, niin mikään ei 1026 01:14:06.010 --> 01:14:09.780 estä meitä tekemästä semmoista toistoehtoja, joka on ihan toisenlainen ja 1027 01:14:09.780 --> 01:14:11.970 tässä se toistoehto nyt näyttää tuolta. 1028 01:14:11.970 --> 01:14:15.280 Katsotaan mitä sieltä tulostuu. 1029 01:14:15.280 --> 01:14:19.220 Eli sieltä tulostuu 13 11, 9 7 ja niin edelleen. 1030 01:14:19.220 --> 01:14:23.310 Aina sinne negatiiviselle puolelle asti, kunnes se saavuttaa 1031 01:14:23.310 --> 01:14:30.050 sen -5 arvon jota ei sitten enää tulostetakaan. 1032 01:14:30.050 --> 01:14:33.790 K plus tai plus plus operaattorin käyttämisestä seuraava havainto 1033 01:14:33.790 --> 01:14:39.110 eli tää plus plus tällä tavalla kirjoitettuna lisää sen koon arvoon 1034 01:14:39.110 --> 01:14:42.510 yksi sen jälkeen kun sitä koota on käytetty. 1035 01:14:42.510 --> 01:14:44.370 Tää on mainittu siellä monisteessa. 1036 01:14:44.370 --> 01:14:47.230 Vastaavasti tää plus plus k. 1037 01:14:47.230 --> 01:14:52.430 Lisää siihen koon arvon yksi ennen kuin sitä arvoa käytetään. 1038 01:14:52.430 --> 01:14:55.350 Otetaan tästä esimerkki. 1039 01:14:55.350 --> 01:14:59.810 Eli leikitään, että meillä on nyt tuommoinen luku muuttuja ja annetaan sille 1040 01:14:59.810 --> 01:15:04.580 arvoksi 3 nyt jos me tulostetaan tää luku muuttujan sisältämä arvo, totta 1041 01:15:04.580 --> 01:15:08.970 kai se on kolmonen mä en nyt aja voittamiseksi edes näytä sitä, mutta mitä 1042 01:15:08.970 --> 01:15:12.590 tulostuu kun me sanotaan luku plus plus. 1043 01:15:12.590 --> 01:15:14.940 Laitetaan tuo käyntiin ja katsotaan mitä siellä tulostanut. 1044 01:15:14.940 --> 01:15:20.410 Vastaus on siinä perässä, mutta ihan nyt vaan todistuksena niin näette näin. 1045 01:15:20.410 --> 01:15:25.600 OK no entäs sitten jos mä kirjoitan konsoli edellinen luku. 1046 01:15:25.600 --> 01:15:28.450 Äsken se oli kolmonen. Mutta meillä on jo plussa. 1047 01:15:28.450 --> 01:15:33.360 Siinä katsotaan mitä tapahtuu. 1048 01:15:33.360 --> 01:15:37.670 Nyt tulostuukin 4 eli palataan tuohon mitä mä kirjoitin. 1049 01:15:37.670 --> 01:15:41.750 K plus plus lisäys suoritetaan KN arvon käyttämisen jälkeen. 1050 01:15:41.750 --> 01:15:47.350 Eli tässä me käytetään ensin lukuarvoa sille tulostuslauseen siis fritzlin 1051 01:15:47.350 --> 01:15:50.730 viedäksemme sen arvon ja sen jälkeen lisätään siihen yksi. 1052 01:15:50.730 --> 01:15:56.490 Eli tässä tapahtuu siinä mielessä 2 asiaa se tulostuslaatuseille argumentin antaminen 1053 01:15:56.490 --> 01:16:01.610 ja sen jälkeen luku muuttujan muuttaminen tässä on niinku syytä olla silleen tarkkana 1054 01:16:01.610 --> 01:16:06.280 kun tätä käytetään, että jos se on meillä argumenttina jollekin tämä luku muuttuja 1055 01:16:06.280 --> 01:16:09.620 niin tää plus plus tapahtuu vasta sen jälkeen. 1056 01:16:09.620 --> 01:16:17.140 No tehdäänpä toisinpäin eli plus plus luku. Mitä tulostuu? 1057 01:16:17.140 --> 01:16:22.970 Äsken tulostetun nelonen mitä tulostuu nytten? 1058 01:16:22.970 --> 01:16:26.870 No nyt sieltä tulostuu vitonen, koska plus plus operaatio lisää 1059 01:16:26.870 --> 01:16:29.490 sen muuttujan arvoa ennen kuin sitä käytetään. 1060 01:16:29.490 --> 01:16:33.320 Toisin sanoen ennen kuin se annetaan argumenttina grillille. 1061 01:16:33.320 --> 01:16:36.510 Ja tulostetaan nyt vielä kerran sitten sen lukuun muuttujan arvo niin nähdään 1062 01:16:36.510 --> 01:16:39.840 niin, että tuossa kohtaa sen ei pitäisi olla enää muuttunut. 1063 01:16:39.840 --> 01:16:43.200 Eli sieltä pitäisi nyt se sama vitonen tulla jo tai edelleen 1064 01:16:43.200 --> 01:16:48.130 ulos niinku tuossa aikaisemmassakin rivillä tuli. 1065 01:16:48.130 --> 01:16:50.590 Hyvä nuo nyt vaan niinku muistutuksena tuon noin niin 1066 01:16:50.590 --> 01:16:54.700 antaa itse olla siellä kommenttina. 1067 01:16:54.700 --> 01:16:58.060 No sitten vielä meillä on himpun verran tässä aikaa, niin otetaan 1068 01:16:58.060 --> 01:17:02.240 vielä forsell vastaavia esimerkkejä eli muistutuksena. 1069 01:17:02.240 --> 01:17:06.800 Ja nyt tähän kertauksena tämä forsin muka yleinen rakenne, eli meillä on se sana 1070 01:17:06.800 --> 01:17:11.600 for siinä sitten tyypillisesti välilyönti ja sitten sulut jonka sisään tulee 1071 01:17:11.600 --> 01:17:17.480 3 asiaa muuttujien alustukset tai yksi muuttujan alustus; Ja toistoehto eli se 1072 01:17:17.480 --> 01:17:22.180 ehto jonka ollessa totta runko osaa toistetaan ja sitten lopetustoimet tai tyypillisesti 1073 01:17:22.180 --> 01:17:24.920 lisäys lausekkeet kuten sen. 1074 01:17:24.920 --> 01:17:30.310 Silmukka muuttujan muuttaminen siellä lopetustoimissa on voidaan kasvattaa tai vähentää 1075 01:17:30.310 --> 01:17:35.510 useitakin eri muuttujia ei pelkästään vain yksi ja sitten tosiaan tää runko osa jossa tehdään 1076 01:17:35.510 --> 01:17:40.190 sitä varsinaista toistettavaa asiaa, otetaan siitä esimerkkejä. 1077 01:17:40.190 --> 01:17:45.530 Tässä meillä on forsell mutka, jossa meillä on alustettu muuttuja arvo on nolla. 1078 01:17:45.530 --> 01:17:48.310 Siellä on yksi muuttuja alustettu toisto ehtona. 1079 01:17:48.310 --> 01:17:50.170 Meillä on on pienempää kuin 5. 1080 01:17:50.170 --> 01:17:53.990 Toisin sanoen aina kun tää on totta niin tulostetaan sitä. 1081 01:17:53.990 --> 01:18:00.790 Tulostuslausetta ja sitten, että silmukan kierroksen päätteeksi aina yksi lisäys tehdään sinne 1082 01:18:00.790 --> 01:18:04.910 maan ja nyt tässä tosiaan huomattava niin että se plus plus on siellä perässä. 1083 01:18:04.910 --> 01:18:08.210 Mutta ihan ihan sama asia olisi tässä kohtaa tehdä. 1084 01:18:08.210 --> 01:18:11.760 Plus plussaa tässä kohtaa sillä niinku mitään eroa. 1085 01:18:11.760 --> 01:18:14.710 Tyypillistä se nyt kuitenkin kirjoitan tuolle plus plus. 1086 01:18:14.710 --> 01:18:20.200 Hyvä ja sinne isketään pari viivaa perään niin nähdään sitten ero ero seuraavaan. 1087 01:18:20.200 --> 01:18:25.790 Elikkä siellä nytten forsell vaikka tulostaa luvut 0 4. 1088 01:18:25.790 --> 01:18:28.090 Seuraava esimerkki. 1089 01:18:28.090 --> 01:18:31.460 No tehdään sitten vastaavasti tää mitä aikaisemmin tehtiin välillä, 1090 01:18:31.460 --> 01:18:35.310 niin toi kolmestatoista alaspäin tulostus niin nyt for silmukalla 1091 01:18:35.310 --> 01:18:38.230 eli for ja sitten jos sulut ja aalto solut. 1092 01:18:38.230 --> 01:18:41.250 No mitä tänne sulkujen sisään niin nyt me alustetaan se meidän silmukka 1093 01:18:41.250 --> 01:18:45.080 muuttuja sieltä viidestätoista lähteä liikenteeseen. 1094 01:18:45.080 --> 01:18:50.300 No sen jälkeen me tarvitaan toistoehto eli ehto, jonka ollessa voimassa niin toistetaan asiaa 1095 01:18:50.300 --> 01:18:55.080 ja sehän nyt oli se meidän on suurempaa kuin -5 sieltä ylempää se nähtiin. 1096 01:18:55.080 --> 01:19:00.680 No tän jälkeen tehdään asia, joka toistuu joka ikisen kierroksen perässä ja nythän meillä 1097 01:19:00.680 --> 01:19:05.500 täällä aikaisemmin oli näin, että k miinus miinus ja sitten miinus miinus. 1098 01:19:05.500 --> 01:19:10.760 No me ei valitettavasti voida kirjoittaa tänne 2 asiaa tuolla tavalla ihan että miinus miinus 1099 01:19:10.760 --> 01:19:15.780 ja sitten miinus miinus nekin peräkkäin tämä ei onnistu, mutta se mitä me tässä halutaan tehdä 1100 01:19:15.780 --> 01:19:23.860 on vähentää MN arvoa 2 ja MN vähentäminen 2 tapahtuu ihan sanomalla miinus on 2 eli tää on 1101 01:19:23.860 --> 01:19:28.530 ihan sama asia kuin me tehtäis m miinus -2 kertaa putkeen. 1102 01:19:28.530 --> 01:19:33.100 Eli nyt meillä on förin määrittelyrivi siinä kunnossa ja meille jää enää tehtäväksi. 1103 01:19:33.100 --> 01:19:36.780 Tulostaa se MN sen hetkinen arvo. 1104 01:19:36.780 --> 01:19:42.520 Ja pitäisi saada sama juttu elikkä kolmestatoista miinus kolmosen tulostus ihan niinku siellä 1105 01:19:42.520 --> 01:19:48.300 aikaisemmassakin vailla silmukasta nähtiin vielä yksi esimerkki ennen päätöstä alustuskohdassa 1106 01:19:48.300 --> 01:19:52.960 voidaan määritellä useita muuttujia, eli meillä voi olla aivan hyvin. 1107 01:19:52.960 --> 01:19:58.440 For lause, jossa meillä on vaikka päivä alustetaan se nolla. 1108 01:19:58.440 --> 01:20:01.540 Sitten meillä voi olla vaikka kissoja. 1109 01:20:01.540 --> 01:20:04.100 13 kappaletta ja nyt tässä huomataan tää hupsista. 1110 01:20:04.100 --> 01:20:08.380 Nyt kirjoitin vahingossa puolipisteen siihen elikkä nyt tässä useiden muuttujien 1111 01:20:08.380 --> 01:20:11.760 alustuksessa pitää huomata, että tämmöinen pikkuinen. 1112 01:20:11.760 --> 01:20:16.280 Erikoisuus tässä sarpissa, että ne muistaakseni täytyy olla kaikki samantyyppisiä. 1113 01:20:16.280 --> 01:20:18.830 Vai täytyykö? 1114 01:20:18.830 --> 01:20:22.110 Joo, näiden näiden täytyy olla kaikki samantyyppisiä. 1115 01:20:22.110 --> 01:20:25.850 Mä en ihan täytyy sanoa, että aivan sataprosenttisen varmaksi muista että minkä 1116 01:20:25.850 --> 01:20:30.580 takia niiden täytyy olla samantyyppisiä, mutta alustuskohdassa täytyy olla samantyyppisiä 1117 01:20:30.580 --> 01:20:33.870 muuttujia, mutta niin tavallaan useita. 1118 01:20:33.870 --> 01:20:39.670 No sitten voidaan tehdä niin, että päiviä tai päiviä tässä niinku edistetään ja 1119 01:20:39.670 --> 01:20:43.050 kun päivä muuttuu ja saavuttaa vitosen niin sitten lopetellaan tää silmukka elikkä 1120 01:20:43.050 --> 01:20:50.450 toisin sanoen toistoehto on päivän pienempi kuin 5 ja sitten tämä lopetustoimet 1121 01:20:50.450 --> 01:20:56.080 tapahtuu siten että päivät kasvaa ja kissat siellä kissat lisääntyy 2 elikkä varmaankin 1122 01:20:56.080 --> 01:20:59.650 tässä nyt olisi ajatus niin että. 1123 01:20:59.650 --> 01:21:02.750 Joka päivä tulee 2 kissaa lisää. 1124 01:21:02.750 --> 01:21:08.380 Ja sitten tulostetaan eli. Päivänä päivänä. 1125 01:21:08.380 --> 01:21:13.290 Päivä. Meillä on noin monta. 1126 01:21:13.290 --> 01:21:17.660 Kissaa noin elikkä nyt tässä tapahtuu tosiaan 2 asiaa päivät kasvaa ja 1127 01:21:17.660 --> 01:21:21.300 kissalta lisääntyy joka päivä 2 ja huomaat niin että aluksi meillä on 1128 01:21:21.300 --> 01:21:24.060 13 kissaa ja sitten kissojen määrä siinä kasvaa. 1129 01:21:24.060 --> 01:21:26.900 Kasvaa sitä mukaa kun päivät etenee. 1130 01:21:26.900 --> 01:21:29.900 Eli ekana päivänä meillä on 13 kissaa ja niin edelleen ja viimeisenä 1131 01:21:29.900 --> 01:21:33.470 päivänä kaksikymmentäyksi kissaa eli tavallaan aika monimutkaisiakin 1132 01:21:33.470 --> 01:21:36.920 asioita voidaan tehdä täällä alustuskohdassa. 1133 01:21:36.920 --> 01:21:40.500 Nyt mulla oli tämä toistoehto tällä tavalla vain yksinkertaisesti näin, 1134 01:21:40.500 --> 01:21:43.780 mutta jopa tässäkin kohdassa voitaisiin tehdä useita ehtoja. 1135 01:21:43.780 --> 01:21:51.350 Mä vielä yksi esimerkin näytän. 1136 01:21:51.350 --> 01:21:55.130 Forssin mukava voidaan tehdä jopa jopa ikuinen silmukka. 1137 01:21:55.130 --> 01:21:58.990 Eli jos mä haluan tehdä tämmöisen silmukan joka ei koskaan pääty, 1138 01:21:58.990 --> 01:22:04.670 niin mä voin tehdä sen siten että mä jätän ton. 1139 01:22:04.670 --> 01:22:07.300 Jätän ton mikä mulla nyt on kirjain siellä menossa. 1140 01:22:07.300 --> 01:22:09.270 L ää ei ole vielä käytetty. 1141 01:22:09.270 --> 01:22:11.170 Jätän toistaehdon tyhjäksi. 1142 01:22:11.170 --> 01:22:14.690 Eli nyt mulla tuossa maalatulla alueella on vain tuommoinen tyhjä väli, joka tarkoittaa 1143 01:22:14.690 --> 01:22:17.530 sitä, että meillä meidän meidän toistoehto on aina tru. 1144 01:22:17.530 --> 01:22:21.640 Toistoehto on aina totta, tehtiin me mitä ikinä. 1145 01:22:21.640 --> 01:22:26.350 Ja nyt laitetaan tuonne, että ikuinen silmukka on nyt menossa. 1146 01:22:26.350 --> 01:22:31.610 Kohdassa ja sitten sinne toi muuttujan sen hetkinen arvo eli näin me saadaan 1147 01:22:31.610 --> 01:22:36.120 toteutettua tämmöinen tilanne, että tää meidän ohjelma ei koskaan ei koskaan pääty, 1148 01:22:36.120 --> 01:22:40.060 vaan me ollaan siellä ikuisessa loopissa ja tästä nyt ei sitten pääse pois mitenkään 1149 01:22:40.060 --> 01:22:44.670 muuten kuin painamalla tuosta stoppia taikka control että windowsilla ja macilla 1150 01:22:44.670 --> 01:22:47.110 jotakin muuta näppäin oikotietä. 1151 01:22:47.110 --> 01:22:52.120 Eli tämmöinenkin on mahdollista, että jättää sen tyhjäksi taikka kirjoittaa sinne sinne 1152 01:22:52.120 --> 01:22:58.330 vaan sanan tru joka tarkoittaa täsmälleen samaa asiaa eli ikuista silmukkaa. 1153 01:22:58.330 --> 01:23:01.670 Joskus tämmöisiä ikuisia silmukoita tarvitaan. 1154 01:23:01.670 --> 01:23:04.830 Esimerkiksi peleissä on itse asiassa yllättävänkin tyypillisiä, jos 1155 01:23:04.830 --> 01:23:09.780 ajattelette asiaa esimerkiksi tän meidän monta palloa. 1156 01:23:09.780 --> 01:23:15.360 Kohdan kautta niin meillähän on tässä siis tilanne, että meillä 1157 01:23:15.360 --> 01:23:17.470 tää peli ikään kuin etenee siellä taustalla. 1158 01:23:17.470 --> 01:23:19.370 Eihän tää niinku koskaan varsinaisesti lopu. 1159 01:23:19.370 --> 01:23:23.470 Eli meillä on ikuinen silmukka joka pyörii tuolla taustalla suorittaa sitä 1160 01:23:23.470 --> 01:23:27.500 fysiikkamoottori ja laskee koko ajan meille uusia tähän meidän peliin ja 1161 01:23:27.500 --> 01:23:30.160 näyttää niitä meillä meille tavallaan pelaajana. 1162 01:23:30.160 --> 01:23:33.350 Eli tää meidän peli siinä mielessä on yksi ikuinen silmukka joka siellä 1163 01:23:33.350 --> 01:23:37.430 taustalla etenee ja siihen ja siihen ja siinä silmukasta sitten ikään 1164 01:23:37.430 --> 01:23:41.030 kuin vaihtuvia asioita ovat ne paikkojen sijainnit. 1165 01:23:41.030 --> 01:23:44.980 Näppäimen asennot, hiiren asennot ja niin edelleen. 1166 01:23:44.980 --> 01:23:49.710 Eli me voidaan olla interaktiossa sen ikuisen silmukan kanssa kyllä, mutta että tavallaan 1167 01:23:49.710 --> 01:23:54.890 me ollaan tässä pelien tiimoilta tulleet tulleet käyttäneeksi. 1168 01:23:54.890 --> 01:23:58.010 Ikuisia silmukoita ihan jatkuvasti niitä voi myöskin itse tehdä. 1169 01:23:58.010 --> 01:24:02.720 Tosiaan tälleen joko for tai while silmukalla ei nyt ehditty sitä wilson tapauksessa 1170 01:24:02.720 --> 01:24:06.070 näköjään katsomaan, mutta päätellään tähän tänään. 1171 01:24:06.070 --> 01:24:09.290 Eli nyt tuli käsiteltyä aika paljonkin uutta asiaa. 1172 01:24:09.290 --> 01:24:12.550 Toivottavasti. Ei ei menty liian nopeasti. 1173 01:24:12.550 --> 01:24:18.230 Voitte palata siihen tallennukseen tosi sitten sitten jos jos tarvetta on ei muuta kun mukavaa 1174 01:24:18.230 --> 01:24:21.690 viikon jatkoa kaikille ja ahkerasti vain jälleen kerran demoja tekemään. 1175 01:24:21.690 --> 01:24:25.670 Käykää ohjauksissa ja muistakaa myös harkkatyön aikataulutus ei muuta 1176 01:24:25.670 --> 01:24:28.540 kuin mukavaa viikon jatkoa kaikille nähdään moi moi.