WEBVTT Kind: captions; Language: fi 1 00:00:01.540 --> 00:00:03.820 OK hyvää huomenta ja tervetuloa luonne. 2 00:00:03.820 --> 00:00:07.350 Olen numero 13 mutta yksi kurssikevät 2 4. 3 00:00:07.350 --> 00:00:11.680 Meillä on pari aihetta tänään mistä ajattelin puhua ensimmäisenä, niistä 4 00:00:11.680 --> 00:00:16.260 käydään läpi tämmöinen muokattavien merkkijonojen käsite eli niin sanottu 5 00:00:16.260 --> 00:00:20.810 string bilder tyyppiseen sharpeissa. 6 00:00:20.810 --> 00:00:25.030 Mistä on kysymys muokattavissa merkkijononoissa eli sharp kielessä? 7 00:00:25.030 --> 00:00:28.530 Me ollaan tutustuttu nyt tähän mennessä näihin string merkkiin jonoihin 8 00:00:28.530 --> 00:00:31.730 ja ne ovat niin sanottuja muuttumattomia merkkijonoja. 9 00:00:31.730 --> 00:00:36.790 Eli kun meillä on tavoite tehdä merkkijono, jota ei muokata siinä ohjelman suorituksen aikana, 10 00:00:36.790 --> 00:00:41.450 niin siihen tämmöiset stream tyyppiset oliot kelpaavat erinomaisen hyvin. 11 00:00:41.450 --> 00:00:43.290 Se tarjoaa sinne. 12 00:00:43.290 --> 00:00:47.100 Tavallaan siellä toteutustasolla siellä kielen toteutuksen tasolla 13 00:00:47.100 --> 00:00:49.870 sellaisen mekanismin, joka takaa sen että se oli jo. 14 00:00:49.870 --> 00:00:53.270 Ei siellä tietokoneen keskusmuisti pääse muuttumaan ja 15 00:00:53.270 --> 00:00:57.030 se tarjoaa sitten tietynlaisia nopeusetuja. 16 00:00:57.030 --> 00:01:01.710 Kuitenkin jos me muokataan tätä merkkijonoja esimerkiksi lisätään sinne merkkijonon 17 00:01:01.710 --> 00:01:05.450 perään jokin toinen merkkijonon pätkä niin se tarkoittaa sitä, että jokaisella 18 00:01:05.450 --> 00:01:11.410 muokkauksella syntyy uusi olio ja tää on sitten aika hidas operaatio mikäli 19 00:01:11.410 --> 00:01:14.160 merkkijonoa on tarpeen muokata toistuvasti. 20 00:01:14.160 --> 00:01:19.850 Esimerkiksi liittää merkkijonona yksi tai tai tehdä muita operaatioita. 21 00:01:19.850 --> 00:01:24.760 Sille merkki on ole poistaa sieltä välistä tai korvata jotain merkkejä. 22 00:01:24.760 --> 00:01:29.920 Niin se on silloin laskennallisesti eli tietokoneen kannalta tehokkaampaa käyttää 23 00:01:29.920 --> 00:01:34.690 tällaista muokattavaa tai muuttuvaa merkkijonoa ja näitä kutsutaan ohjelmointiteja 24 00:01:34.690 --> 00:01:42.000 käyttää niin imo table table tyypiksi ja nyt tää string tyyppinen asia string 25 00:01:42.000 --> 00:01:44.590 tyyppinen on nimenomaan sitten tää. 26 00:01:44.590 --> 00:01:48.550 String ciller on tällainen muuttuva eli youtube. 27 00:01:48.550 --> 00:01:52.230 Ja kuten sanoin, niin hesarissa tän muuttuvan merkkijonon tyyppi on on 28 00:01:52.230 --> 00:01:57.710 string bilder ja joissakin ohjelmointikieli ei erikseen ole muuttuvia 29 00:01:57.710 --> 00:02:01.170 ja mua muuttuvia ja muuttumattomia merkkijonoja. 30 00:02:01.170 --> 00:02:03.060 Mutta että nyt tää string. 31 00:02:03.060 --> 00:02:08.060 Billund sitten tässä sharpissa tällainen muuttuva jono. 32 00:02:08.060 --> 00:02:12.380 Ja nää soveltuu tiettyihin hieman erilaisiin tilanteisiin ja ja nimenomaan. 33 00:02:12.380 --> 00:02:18.810 Kuten sanoin, niin ton muuttuvan tavallaan, että jos meillä täytyy muokata sitä merkkiä, niin 34 00:02:18.810 --> 00:02:23.350 silloin se käyttö on huomattavasti nopeampaa nopeampaa kuin string tyypin käyttö. 35 00:02:23.350 --> 00:02:26.730 Ja otetaan tästä nyt sitten esimerkki tuolla raiderin puolella. 36 00:02:26.730 --> 00:02:29.560 Eli tässä mulla nyt on alustettu. 37 00:02:29.560 --> 00:02:33.650 Ensinnäkin projekti ja sitten tänne string bilder tyyppinen olio jolle mä oon antanut nimen 38 00:02:33.650 --> 00:02:39.340 SB ja nyt raiderissa uikuttaa niin että missing referenssi blaa blaa blaa ja punakynä heiluu 39 00:02:39.340 --> 00:02:43.760 painetaan tuolta lampun kuvasta ja klikataan että import. 40 00:02:43.760 --> 00:02:50.610 Missing referenssi sinful, joka sitten tänne ylös meille liittää tarvittavan you using 41 00:02:50.610 --> 00:02:55.430 lauseen mä sen ihan tarkoituksella otin tuosta pois aikaisemmin, mutta mutta se käsittääkseni 42 00:02:55.430 --> 00:03:00.390 siellä konsolin mayn tyyppisissä projekteissa kyllä oletuksena toi using lause on, mutta 43 00:03:00.390 --> 00:03:05.130 että me tultiin sen pois jotta nähdään niin että tää aiheuttaa käännösvirhe eli se vaatii 44 00:03:05.130 --> 00:03:11.250 sen sen yksi import tai tajusinkin tuonne tuonne ylös, mutta hyvä elikkä nyt lähdetään 45 00:03:11.250 --> 00:03:13.530 tekemään sitten sitä. 46 00:03:13.530 --> 00:03:18.050 String piller oli on lisäystä eli eli eli no oikeastaan niinku tehdä mitään niin mä 47 00:03:18.050 --> 00:03:23.050 voisin laittaa tuosta deckerin päälle ja katsoa että miltä toi näyttää siellä debug 48 00:03:23.050 --> 00:03:27.670 eli kun mä olen tuommoisen olio siellä luonut niin se on tyhjä sisällöltään ja siellä 49 00:03:27.670 --> 00:03:33.980 vaan näkyy niin että SB on tämmöinen stream killer tyyppinen kapistus, sen kapasiteet 50 00:03:33.980 --> 00:03:37.570 ja legot on jotakin ja täällä on hirveästi kaikenlaisia ominaisuuksia joita tommoisella 51 00:03:37.570 --> 00:03:40.750 tavan omaisella stringoilla ei olekaan. 52 00:03:40.750 --> 00:03:44.880 Katsotaan hieman myöhemmin että mitä nää nyt sitten tarkoittaa. 53 00:03:44.880 --> 00:03:49.270 Mutta joka tapauksessa niin nyt lähdetään tätä string selleriä tähän nyt 54 00:03:49.270 --> 00:03:53.290 sitten ikään kuin täyttämään eli lisäämään sinne loppuun asioita ja mä lisään 55 00:03:53.290 --> 00:03:58.720 sinne loppuun nyt ensimmäisenä ihan vaan antti jussi eli append metodia käyttäen 56 00:03:58.720 --> 00:04:00.990 lisätään sinne merkkijonon loppuun. 57 00:04:00.990 --> 00:04:02.790 Tommoinen merkkijonon pätkä. 58 00:04:02.790 --> 00:04:07.540 Eli nyt tässä siis huomio että jos mä yrittäisin tällä tavalla plus on. 59 00:04:07.540 --> 00:04:10.880 Operaattoria käyttämällä lisätä niin tämä ei onnistu. 60 00:04:10.880 --> 00:04:14.250 Eli tää SP vaatii erityisen. 61 00:04:14.250 --> 00:04:18.150 Appendmetodin kutsu jos sinne loppuun halutaan jotakin laittaa. 62 00:04:18.150 --> 00:04:21.650 OK no nyt sinne on laitettu antti jussi loppuun ja katsotaan 63 00:04:21.650 --> 00:04:23.870 nyt miltä debugerissä näyttää. 64 00:04:23.870 --> 00:04:27.610 Eli nyt siellä on sitten sisältönä myöskin antti jussi tää näyttää vähän erilaiselta. 65 00:04:27.610 --> 00:04:30.320 Kuin mitä string olio näyttäisi. 66 00:04:30.320 --> 00:04:35.570 Laitetaanpa siihen nyt vertailun vuoksi ihan perus string. 67 00:04:35.570 --> 00:04:38.810 Vaikkapa niminen ja. 68 00:04:38.810 --> 00:04:42.260 Sinne samanmoinen sisältö ja katsotaan että miten. 69 00:04:42.260 --> 00:04:44.300 Nyt tuolta debugkerin näkökulmasta. 70 00:04:44.300 --> 00:04:47.820 Näiden eroavaisuudet on eli ei siinä nyt hirveästi eroa muuta kuin vaan 71 00:04:47.820 --> 00:04:52.400 se, että tyyppi on siinä eri ja sitten tässä SPN tapauksessa sitä sisältöä 72 00:04:52.400 --> 00:04:54.480 ei näytetäkään noissa lainausmerkkien sisällä. 73 00:04:54.480 --> 00:05:01.040 Eli tää lainausmerkeillä varustettu arvon näyttäminen on varattu tässä sharp niinku tässä 74 00:05:01.040 --> 00:05:07.110 näyttimessa siis deckerin näkökulmasta näille stream tyyppisille kapistuksia. 75 00:05:07.110 --> 00:05:08.910 Mutta hyvä. 76 00:05:08.910 --> 00:05:11.230 Elikkä nyt sitten mietitään, että mitä me nyt voidaan tällä SB, llä oikeastaan tehdä. 77 00:05:11.230 --> 00:05:16.230 No totta kai me voidaan se perinteiseen tapaan ensinnäkin tulostaa tuonne. 78 00:05:16.230 --> 00:05:20.560 Konsoli ikkunaan ja mä nyt laitan ihan tuolla tavanomaisella konsolin fridolin sen sinne 79 00:05:20.560 --> 00:05:25.630 näkyviin eli tää consolen fridolin pystyy ottamaan vastaan myöskin SB olion ja tulostamaan 80 00:05:25.630 --> 00:05:31.640 sitten sen SB olin sisältämän no merkkijonon elikkä string strengin. 81 00:05:31.640 --> 00:05:35.250 Se mitä siellä pellin alla tapahtuu, niin se itse asiassa muuttaa ton ton sitten 82 00:05:35.250 --> 00:05:39.180 loppujen lopuksi nimenomaan stream olioksi joka voidaan sitten siellä franklin 83 00:05:39.180 --> 00:05:43.780 näyttää, mutta se on nyt tavallaan vähän vähän sivuseikka. 84 00:05:43.780 --> 00:05:47.080 Mutta tosissaan mulla nyt jos nyt otetaan tuo vielä tuolta esille toi 85 00:05:47.080 --> 00:05:51.240 string tässä laitetaanpas tuohon seuraavalle riville. 86 00:05:51.240 --> 00:05:55.880 Noin elikkä se se mitä tässä nyt tapahtuu. 87 00:05:55.880 --> 00:06:03.070 Kun mä näin sanon, että lisätäänpä sinne SM perään lakanen niin itse asiassa on asia joka synnyttää 88 00:06:03.070 --> 00:06:07.610 uuden olio niin sitä on pikkuisen ehkä vaikean nyt tässä demonstroida, että mitä siinä itse 89 00:06:07.610 --> 00:06:11.750 asiassa niinku pelialalla tapahtuu, mutta jos me nyt yritetään. 90 00:06:11.750 --> 00:06:15.980 Ja niin edes elikkä elikkä laitetaanpas tuohon pointtiin. 91 00:06:15.980 --> 00:06:21.660 Eli eli tota 14 riville, joka tarkoittaa sitä, että tämä 14 92 00:06:21.660 --> 00:06:24.100 rivi on tulossa seuraavaksi suoritusvuoron. 93 00:06:24.100 --> 00:06:26.380 Niin mä nyt yritän katsoa että mitä. 94 00:06:26.380 --> 00:06:29.670 Miten se näkyisi täällä debugerissä ja tässä on 2 tapaa miten sitä voidaan 95 00:06:29.670 --> 00:06:32.820 tarkastella elikkä ensinnäkin tässäsoli on päällä. 96 00:06:32.820 --> 00:06:37.880 Mä voin klikata hiiren oikea ja laittaa tätä marko object jolloinka tälle tulee tämmöinen 97 00:06:37.880 --> 00:06:41.400 ikkuna josta mä voin niinku merkata sen tämmöisellä erityisellä värillä. 98 00:06:41.400 --> 00:06:44.120 Elikkä nyt siellä on sitten punainen tuommoinen tässä kirjain joka 99 00:06:44.120 --> 00:06:47.380 merkkaa sitä, että hei, tämä olio on nyt merkattu SL. 100 00:06:47.380 --> 00:06:49.470 OK no mitä se nyt tarkoittaa? 101 00:06:49.470 --> 00:06:54.600 Tässä se tarkoittaa sitä, että kun mä klikkaan kymppiä, elikkä laitan step. 102 00:06:54.600 --> 00:06:56.870 Ou. 103 00:06:56.870 --> 00:07:01.850 No sitten power joo elikkä step over tossa eli vieri tämän tämän 104 00:07:01.850 --> 00:07:05.430 eteenpäin siten, että toi rivi 14 tulee suoritetuksi, niin nyt se 105 00:07:05.430 --> 00:07:07.890 punainen mikä siellä oli itse asiassa hävisi. 106 00:07:07.890 --> 00:07:13.930 Eli tää tarkoittaa nytten sitä niin että se oli jo antti jussi sisällöllä niin tää 107 00:07:13.930 --> 00:07:19.150 ässä ei enää osatakaan siihen antti jussi olioon vaan syntyi uusi olio ja tää ässä 108 00:07:19.150 --> 00:07:23.280 osoittaa nytten siihen ja nyt jos mä merkkaan sen taas tän objektin niin se on itse 109 00:07:23.280 --> 00:07:26.790 asiassa eri kuin se alkuperäinen SL merkattu oli. 110 00:07:26.790 --> 00:07:28.780 Ehkä mä olisin voinut nimetä tän markkerin. 111 00:07:28.780 --> 00:07:32.410 Tässä nyt jollain muulla, kun se nyt on täysin samaa kuin toi tai 112 00:07:32.410 --> 00:07:35.890 oli täysin sama kuin toi oli jo muuttujan nimi. 113 00:07:35.890 --> 00:07:40.670 Mutta että tästä nyt on tietysti ehkä vähän vaikea sitä tulkita, mutta siellä pellin alla siitä 114 00:07:40.670 --> 00:07:45.870 on syntynyt uusi oli ja katsotaan toinen tapa miten sitä voidaan tarkastella eli klikataan 115 00:07:45.870 --> 00:07:51.150 uudestaan ohjelmakäyntiin ja täällä on tällainen näkymä kuin memory. 116 00:07:51.150 --> 00:07:54.630 Ja jos mä klikkaan tuosta lord klassista niin mä saan näkyville 117 00:07:54.630 --> 00:07:57.830 sen, että kuinka monta erilaista. 118 00:07:57.830 --> 00:08:01.690 Systeemi stringejä mulla siellä on ja siellä pellin alla sesarpissa. 119 00:08:01.690 --> 00:08:04.610 Itse asiassa syntyy aika paljon erilaisia string olioita. 120 00:08:04.610 --> 00:08:08.680 Jos mä tuosta klikkaan niin mä näen että mitä kaikkia string olioita sinne on syntynyt 121 00:08:08.680 --> 00:08:13.630 ja näitä käytetään tässä tavallaan sarin ajon aikaisessa ympäristössä sitten erilaisiin 122 00:08:13.630 --> 00:08:17.070 tilanteisiin, kuten esimerkiksi näyttämään kuukausien nimiä. 123 00:08:17.070 --> 00:08:19.610 Eli täällä on ehkä nyt semmoisia asioita mitä nyt ei 124 00:08:19.610 --> 00:08:21.570 tarvitse tarvitse todellakaan tietää. 125 00:08:21.570 --> 00:08:24.030 Mutta että tämmöisiä asioita sieltä muistista itse asiassa on jo varattu 126 00:08:24.030 --> 00:08:26.970 valmiiksi kun me tää cesar ohjelma käynnistetään. 127 00:08:26.970 --> 00:08:29.220 Jos me viedään viedään, tää on ihan loppuun. 128 00:08:29.220 --> 00:08:34.100 Niin siellä show more painikkeesta me saadaan saadaan se antti jussi näkyville 129 00:08:34.100 --> 00:08:36.790 elikkä siellä on itse asiassa 2 kertaan varattu toi. 130 00:08:36.790 --> 00:08:40.010 Antti jussi sanna mä en ole aivan sataprosenttisen varma että miksi se 131 00:08:40.010 --> 00:08:45.080 nyt on 2 kertaan varattu, mutta nyt jos mä klikkaan tuosta. 132 00:08:45.080 --> 00:08:48.090 Klikkaan tosta tota noin niin sen step överin. 133 00:08:48.090 --> 00:08:52.690 Noin niin tää näkymä tässä hieman. 134 00:08:52.690 --> 00:08:56.410 Tota päivittyy ja sen takia sitä ei oletuksena näytetä kun sitä 135 00:08:56.410 --> 00:08:58.290 ei haluta niinku tässä dekkarissa oletuksena. 136 00:08:58.290 --> 00:09:00.780 Mutta jos mä klikkaan siitä niin täältä tulee että diff 137 00:09:00.780 --> 00:09:03.370 plus 2 eli se tarkoittaa sitä että. 138 00:09:03.370 --> 00:09:05.980 Otetaan päästä pois, niin näkyykin jotain. 139 00:09:05.980 --> 00:09:09.560 Eli siellä diff plus 2 tarkoittaa sitä, että tän ohjelman suorituksen aikana 140 00:09:09.560 --> 00:09:15.300 varattiin 2 tavallaan 2 muistipaikkaa sieltä muistista lisää ja nyt jos me käytäisi 141 00:09:15.300 --> 00:09:19.620 uudestaan katsomassa että mitä täällä system stringeissä nyt on tuplaklikkaamalla 142 00:09:19.620 --> 00:09:22.310 sitä ja viedään taas tää tänne ihan alas. 143 00:09:22.310 --> 00:09:25.250 Ihan ihan alas, niin siellä on antti jussi antti jussi 144 00:09:25.250 --> 00:09:28.150 edelleen sitten on antti jussi lakanen. 145 00:09:28.150 --> 00:09:34.660 Ja mulle ehkä aavistuksen hämäräksi nyt jää se, että miksi sitä lakanen. 146 00:09:34.660 --> 00:09:37.360 Lakanen sisältöistä merkkijonoa ei tässä näy. 147 00:09:37.360 --> 00:09:39.620 Mä en osaa nyt sitä itse suoraan selittää. 148 00:09:39.620 --> 00:09:43.640 Se varmaan liittyy siihen niin, että miten tää CSRI ajonaikainen ympäristö 149 00:09:43.640 --> 00:09:48.000 nyt jotenkin tekee tekee pieniä optimointeja siellä taustalla, mutta pointti 150 00:09:48.000 --> 00:09:50.320 on nyt se, että siellä on nyt useampi olio. 151 00:09:50.320 --> 00:09:55.120 Vaikka itse asiassa mulla on tuossa tasan tarkkaan ajatuksena ja toiveena niin 152 00:09:55.120 --> 00:09:59.420 että mulla olisi yksi merkki, jonka sisältö on anttijalkainen. 153 00:09:59.420 --> 00:10:05.010 Ja näin toimimalla sitten näin muuttamalla, että string oli, jota tässä me muutettiin 154 00:10:05.010 --> 00:10:09.120 sitä yksi kertaa, mutta jos me muutettaisiin sitä useamman kerran, niin me tulemme synnyttääneeksi 155 00:10:09.120 --> 00:10:11.980 uusia olijoita, jotka itse asiassa ovat täysin turhia. 156 00:10:11.980 --> 00:10:17.290 Tehdäänpä nyt tää vielä vähän ilmeisemmäksi, eli laitetaan sinne toi– erikseen ja sitten 157 00:10:17.290 --> 00:10:21.840 laitetaan vielä jussikin erikseen ja ja sitten me voitaisiin tietysti laittaa vaikka sen 158 00:10:21.840 --> 00:10:26.680 välilyöntikin sinne erikseen ja ja sitten vielä kertaalleen toi sukunimi, että tavallaan 159 00:10:26.680 --> 00:10:30.380 tuollaisista palikoista sen mun nimi loppujen lopuksi rakentuu ja. 160 00:10:30.380 --> 00:10:36.380 Jossakin jossakin järjestelmässä voisi ajatella niin, että tuommoiset. 161 00:10:36.380 --> 00:10:40.460 Pikku merkkijonon palaset loppujen lopuksi kuitenkin olisi tarpeen synnyttää 162 00:10:40.460 --> 00:10:43.320 niin katsotaanpa nytten miltä toi memory näkymä näyttää. 163 00:10:43.320 --> 00:10:48.930 Mä hyppäsin tai menin suoraan tuonne riville 18 tässä katsotaan että. 164 00:10:48.930 --> 00:10:53.350 Toimiiko tää mun demonstraatio nyt sitten kun olin ajatellut mennäänpäs nyt taas sinne 165 00:10:53.350 --> 00:10:58.870 loppuun elikkä nyt siellä näkyy taas niinku tosi monta erilaista merkkiä nyt jostain syystä 166 00:10:58.870 --> 00:11:04.500 ehkä se-– saattaa olla niinku valmiina siellä cesarin syövereissä jossain vaan olemassa 167 00:11:04.500 --> 00:11:10.210 niin se käyttää tavallaan sitä eikä niinku uudestaan luo sitä minun tässä rivillä 14 tekemään 168 00:11:10.210 --> 00:11:15.630 niin miinusmerkkijonoon samoin välilyöntiä niinku ei uudestaan luoda tänne, mutta tuossa 169 00:11:15.630 --> 00:11:19.420 näkyy oikein hyvin että mulla on antti jussi ja sitten antti jussi välilyönti sisältyy 170 00:11:19.420 --> 00:11:21.220 sitten merkkijonot ja. 171 00:11:21.220 --> 00:11:23.800 Täysin turhaan käytetty tietokoneen keskusmuisti ja 172 00:11:23.800 --> 00:11:29.140 kuudenkymmenenneljän paljon tuossa 50. Hetkinen sinun vitsi. 173 00:11:29.140 --> 00:11:32.740 Neljäkymmentäkahdeksan. Neljäkymmentäkahdeksan. 174 00:11:32.740 --> 00:11:35.180 Tavua nähtävästi. 175 00:11:35.180 --> 00:11:38.080 Hetkinen nyt en osaakaan äkkiseltään laskea. 176 00:11:38.080 --> 00:11:42.570 Tää on heksa. Onko tää hexa lukuna? 177 00:11:42.570 --> 00:11:46.040 Enpä lähde arvailemaan niin että paljonko tuossa on sieltä muistista kapasiteettia. 178 00:11:46.040 --> 00:11:49.730 Nyt loppujen lopuksi lähdetty lähdetty ottamaan. 179 00:11:49.730 --> 00:11:54.610 Se saattaa olla kuusikymmentäneljä bittiä kuitenkin joka tapauksessa paljon 180 00:11:54.610 --> 00:11:57.930 ylimääräistä työtä tehty, minkä tekeminen ei ole tarpeen. 181 00:11:57.930 --> 00:12:02.770 No tää nyt on tietysti tämmöinen hyvin synteettinen ja ikään kuin teennäinen esimerkki, 182 00:12:02.770 --> 00:12:06.750 mutta katsotaan sitten jos saataisiin tähän vähän jotain ikään kuin näkyvämpää vielä 183 00:12:06.750 --> 00:12:10.390 ja mielekkäämpää sillä tavalla, että päästäisiin tekemään semmoista vertailua, että 184 00:12:10.390 --> 00:12:13.620 paljon mitä mitä mitä eroa näissä loppujen lopuksi on. 185 00:12:13.620 --> 00:12:18.940 Eli teidän 2 jonoa tehdään jonoa jonka sisältöön ja tän tyyppi on nyt 186 00:12:18.940 --> 00:12:23.410 ihan se perinteinen string tyyppi ja sitten string bilder. 187 00:12:23.410 --> 00:12:28.520 String bilder annetaan sille nimeksi jono kakkonen ja samanmoinen sisältö 188 00:12:28.520 --> 00:12:33.360 sinille kuitenkin siten, että alustetaan se tällä string millerille tyypillisellä 189 00:12:33.360 --> 00:12:36.720 tavalla tai oikeastaan ominaisella tavalla. 190 00:12:36.720 --> 00:12:40.410 Mutta joka tapauksessa merkki on sinnekin sisällöksi. 191 00:12:40.410 --> 00:12:43.960 Ja nyt ruvetaan pyörittämään sitten vähän useampia kertoja näitä mutaatioita 192 00:12:43.960 --> 00:12:49.900 eli muuttumisia ja tehdään tähän yksi yksi tämmöinen vakio, joka nyt määrittelee 193 00:12:49.900 --> 00:12:54.080 sitä, että kuinka monta kertaa näitä pyörittelyä kautta muuttumisia tehdään 194 00:12:54.080 --> 00:12:56.980 ja asetetaan se nyt aluksi arvo on nolla. 195 00:12:56.980 --> 00:13:01.460 Ja se mitä mä haluan toistaa. Montako kertaa? 196 00:13:01.460 --> 00:13:06.200 Montako muuttujan osoittamaa kertaa on se, että mä lisään siihen jono ykköseen 197 00:13:06.200 --> 00:13:10.020 nytten jotakin ja se voisi olla nyt vaikkapa ihan yksinkertaisesti merkki 198 00:13:10.020 --> 00:13:12.880 ja sitten vaikkapa toi i muuttuen osoittama määrä. 199 00:13:12.880 --> 00:13:17.630 Eli tavallaan se kierrosluku mitä mitä ollaan menossa eli ensimmäisen 200 00:13:17.630 --> 00:13:20.240 kierroksen jälkeen mulla olisi siinä. 201 00:13:20.240 --> 00:13:25.660 Jono ykkösen sisältönä a, nolla ja sitten toisen kierroksen päätteeksi. 202 00:13:25.660 --> 00:13:30.840 Se olisi a, nolla yksi ja sitten seuraavan kierroksen päätteeksi 203 00:13:30.840 --> 00:13:33.460 se taas kasvaisi sinne loppuun päin. 204 00:13:33.460 --> 00:13:39.220 Näin elikkä sinne tulisi aina ja sitten se kierroksen luku sinne perään. 205 00:13:39.220 --> 00:13:42.200 Eli laitetaan tuohon nytten vähän pidempi selitys eli ekan kierroksen 206 00:13:42.200 --> 00:13:44.350 suorittamisen jälkeen tokan kierroksen ja niin edelleen. 207 00:13:44.350 --> 00:13:48.260 Ja nyt sitten ajatus olisi niin, että katsotaan kauanko tähän menee aikaa ja 208 00:13:48.260 --> 00:13:52.110 tätä ajastusta varten niin mä tein tämmöisen pienen ajastin. 209 00:13:52.110 --> 00:13:54.180 Olion tänne. 210 00:13:54.180 --> 00:13:56.240 Eli se sarvista löytyy tämmöinen valmis stop watch. 211 00:13:56.240 --> 00:14:03.240 Vähän niinku kello olio, jota jota voi ottaa käyttöön ja laittaa ajastimen päälle, jotta voi jotta 212 00:14:03.240 --> 00:14:08.060 saadaan selville, että kuinka kauan tähän 1000 kierroksen operaatioon menee. 213 00:14:08.060 --> 00:14:10.000 Mä nyt kopin päästään tuosta ajan voittamiseksi. 214 00:14:10.000 --> 00:14:15.500 Tota vaan valmista mallikoodi eli laitetaan kello pois päältä lopuksi ja sitten katsotaan 215 00:14:15.500 --> 00:14:20.760 että kuinka kauan millisekunteina eli tuhannesosa sekunteina tähän operaatioon nyt loppujen 216 00:14:20.760 --> 00:14:24.450 lopuksi meni ja sitten tulostettava string olioita käyttäessä. 217 00:14:24.450 --> 00:14:27.030 Tähän meni näin monta millisekuntia aikaa. 218 00:14:27.030 --> 00:14:31.650 Eli mulla on siinä nyt 1000 mutaatiota ja katsotaan kauanko tähän menee ja mä laitan tän 219 00:14:31.650 --> 00:14:36.810 nyt vitosella käyntiin eli tässä niin sanotussa debug moodissa se on periaatteessa aavistuksen 220 00:14:36.810 --> 00:14:38.990 verran hitaampi kuin semmoinen niin sanottu realismi mod. 221 00:14:38.990 --> 00:14:44.290 Katsotaan sitten myöhemmin että onko tarvetta käyttää siinä realism mutta OK 1000 mutaatiolla 222 00:14:44.290 --> 00:14:49.070 nyt ei vielä kovin paljon mennyt eli yksi millisekuntia joka on yksi tuhannesosa sekuntia 223 00:14:49.070 --> 00:14:53.030 mutta laitetaan vähän kierroksia lisää vaikka kymmenentuhatta kertaa. 224 00:14:53.030 --> 00:14:55.710 Eli nyt voisi niinku yrittää arvata. 225 00:14:55.710 --> 00:15:01.610 Että kauanko tuohon menee että meneekö kenties kymmenentuhatta millisekuntia? 226 00:15:01.610 --> 00:15:04.330 Ja katsotaanpas kuinka paljon. 227 00:15:04.330 --> 00:15:09.230 On no OK siinä nyt ei vielä mennyt loppujen lopuksi. 228 00:15:09.230 --> 00:15:13.230 Ei kun sori niin elikkä mä kymmenkertaisen tän aineiston koon tai mutaatioiden 229 00:15:13.230 --> 00:15:19.320 määrän, niin mun aika kasvoi nelin kymmenkertaiseksi. 230 00:15:19.320 --> 00:15:24.040 No entäs jos mä vielä laitan tuohon yksi nolla lisää niin arvaus voisi olla niin että meneekö 231 00:15:24.040 --> 00:15:28.000 string olijoilla sitten aikaa tähän niin neljäsataakaksikymmentä millisekuntia. 232 00:15:28.000 --> 00:15:32.870 Eikö se olisi aika luonteva harvaus, että toi aikakin silloin kymmenkertaistuu, mutta jos 233 00:15:32.870 --> 00:15:37.490 mä nyt laitan tuosta tuon pelin käyntiin ja lähden katsomaan, että kuinka kauan sataantuhanteen 234 00:15:37.490 --> 00:15:42.620 kierrokseen nyt itse asiassa tätä aikaa kuluu, niin näyttäisi siltä, että sitä kuluu enemmän 235 00:15:42.620 --> 00:15:44.570 kuin se neljäsataakaksikymmentä millisekuntia. 236 00:15:44.570 --> 00:15:47.760 Itse asiassa aikaa meni 8 sekuntia, vaikka mulla on nyt 237 00:15:47.760 --> 00:15:50.170 suhteellisen tehokas tietokone tässä onkin. 238 00:15:50.170 --> 00:15:53.680 Otetaan vähän noita kierroksia pois niin tää mun kone ei jää ihan jumiin. 239 00:15:53.680 --> 00:15:57.130 Voi tulla striimiäkin siitä vähän kärsii ja. 240 00:15:57.130 --> 00:16:03.080 Ja lähdetään sitten tekemään tätä toisella tavalla, eli niillä string bilder olijoille ja selostetaan 241 00:16:03.080 --> 00:16:07.620 sitten vähän lopuksi lisää, että mitä tuossa itse asiassa tapahtuu. 242 00:16:07.620 --> 00:16:10.410 Mä alustan tai käynnistän uuden. 243 00:16:10.410 --> 00:16:14.610 Kellon siitä ja laitan uuden silmukan pyörähtämään jälleen 244 00:16:14.610 --> 00:16:17.740 kerran sen montako luvun osoittaman. 245 00:16:17.740 --> 00:16:22.200 Määrän verran ja sitten käytetään nyt tällä kertaa sitä jono kakkosta eli appendetaan 246 00:16:22.200 --> 00:16:28.040 sinne tavaraa ja sinne laitetaan nytten a merkki ja sen lisäksi kuten tuossa äskenkin 247 00:16:28.040 --> 00:16:33.210 niin laitetaan sinne sei muuttujan osoittamaan luku niin saadaan synnytettyä täsmälleen 248 00:16:33.210 --> 00:16:36.170 samanlainen tilanne kuin mitä tuossa. 249 00:16:36.170 --> 00:16:42.550 Edellisessäkin versiossa oli sitten laitetaan kello pois päältä ja otetaan millisekunnin talteen 250 00:16:42.550 --> 00:16:46.780 ja tulostetaan, että kuinka kauan string bilder oli jolla tähän meni aikaa. 251 00:16:46.780 --> 00:16:50.560 Hyvä elikkä nyt meillä on siellä kierroksia menossa se kymmenentuhatta 252 00:16:50.560 --> 00:16:55.120 kertaa ja katsotaan mitä f vitosella sieltä näkyy. 253 00:16:55.120 --> 00:16:57.560 Eli string olijoilla meni neljäkymmentäyksi millisekuntia 254 00:16:57.560 --> 00:16:59.740 string builder olijoilla on nolla. 255 00:16:59.740 --> 00:17:03.500 Yksi eli jo tässä havaitsemme aika ison eron, mutta jos me nyt uskalletaan 256 00:17:03.500 --> 00:17:05.920 tuonne, laittaa se yks nolla vielä lisää. 257 00:17:05.920 --> 00:17:10.520 Äsken siihen mini string oli jolla 8 sekuntia ja stringer olijoilla. 258 00:17:10.520 --> 00:17:13.880 Nyt varmaan tietysti kaikki arvaa että siihen menee vähemmän aikaa. 259 00:17:13.880 --> 00:17:21.580 Katsotaan kuinka paljon vähemmän. Yksi. 260 00:17:21.580 --> 00:17:26.630 4 millisekuntia tässä näköjään tämmöistä satunnaisvaihtelun jonkun verran on. 261 00:17:26.630 --> 00:17:29.980 String olijoilla siihen nyt tällä kertaa meni 9 sekuntia ja OK tietysti 262 00:17:29.980 --> 00:17:33.850 nyt sitten joku saattaa sanoa että no hei sä et ajanut tätä siinä moodissa 263 00:17:33.850 --> 00:17:37.760 mikä on se nopeampi modi missä ei ikään kuin. 264 00:17:37.760 --> 00:17:39.910 Tutkita niitä. 265 00:17:39.910 --> 00:17:44.330 Dubbaustietoja sieltä koodin ajon aikana ja laitetaan run toiminnolla tämä 266 00:17:44.330 --> 00:17:47.630 käyntiin niin ne on niinku teoreettisella tasolla ainakin. 267 00:17:47.630 --> 00:17:50.480 Tilanteen pitäisi olla nopeampi. 268 00:17:50.480 --> 00:17:55.110 Mutta eipä se niillä stringoilla kovin paljon nopeampi ole. 269 00:17:55.110 --> 00:18:01.540 Katsotaan paljonko siihen menee jopa enemmän aikaa melkein 10 sekuntia. 270 00:18:01.540 --> 00:18:05.680 Eli näyttäisi siltä niin, että jos nyt on vähän, yritän thertaa tuhahtaa 271 00:18:05.680 --> 00:18:10.360 tätä asiaa, että jos meidän niin kun aineiston koko kasvaa. 272 00:18:10.360 --> 00:18:13.330 Eli jos sanotaan että meillä on vaikka yksi. 273 00:18:13.330 --> 00:18:17.180 Aineiston osanne niin sitten meillä on 10 aineiston osasta 274 00:18:17.180 --> 00:18:20.050 ja sitten meillä on 100 aineiston pituus. 275 00:18:20.050 --> 00:18:25.120 Tavallaan nyt tässä tää kierrosten määrä ikään kuin kymmenkertaistuisi. 276 00:18:25.120 --> 00:18:30.280 Niin se aika mikä näitä stringoilla käytettäessä tähän ohjelman suoritukseen menee. 277 00:18:30.280 --> 00:18:34.520 Ei ole lineaarinen, vaan se on jotakin tän tapaista. 278 00:18:34.520 --> 00:18:38.260 Eli mitä enemmän mulla se aineiston koko siellä kasvaa. 279 00:18:38.260 --> 00:18:41.280 Toisin sanoen kuinka paljon niitä kierroksia tulee lisää, niin 280 00:18:41.280 --> 00:18:44.040 tää aika vaativuus ei kasva samassa suhteessa. 281 00:18:44.040 --> 00:18:47.480 Eli jos tää akseli nyt kuvaisi sitä aikaa, kuinka paljon tää ohjelman 282 00:18:47.480 --> 00:18:50.280 suorittamiseen menee niin se räjähtää käsiin. 283 00:18:50.280 --> 00:18:54.850 Sen sijaan tuolla stream pilleriä käytettäessä niin se aika vaativuus elikkä. 284 00:18:54.850 --> 00:18:56.870 Tietokoneen. 285 00:18:56.870 --> 00:18:59.320 Suorittamisen ohjelman suorittamisen vaativa aika olisi jotakin. 286 00:18:59.320 --> 00:19:02.390 Käyrät on ehkä tuon näköistä, eli mitä enemmän aineistoa 287 00:19:02.390 --> 00:19:05.020 on, niin sitä vähemmän se kasvaa. 288 00:19:05.020 --> 00:19:09.600 Mutta noista aika vaativuusasioista puhutaan algoritmit yksi kurssilla enemmän ja ohjelmointi 289 00:19:09.600 --> 00:19:15.180 kakkosella sivutaan aihetta vähän myöskin, että ehkä tämän karkean tason esimerkin idea 290 00:19:15.180 --> 00:19:19.760 nyt on teille hahmottaa vaan sitä niin, että jos tarvitsee merkkijonoja muokata niin 291 00:19:19.760 --> 00:19:26.240 älä käytä stringejä vaan käytä string pilleriä. 292 00:19:26.240 --> 00:19:30.460 Ja kuten tuossa sanoin jo aikaisemmin, niin joissakin ohjelmointikieli tämmöisiä 293 00:19:30.460 --> 00:19:35.280 ei ole erikseen määritelty, että on vain yksi merkkijono olijoita käytetään ja 294 00:19:35.280 --> 00:19:41.820 ja ja ja sitten jos tarvitsee erikseen erityistä muuttumatonta merkki on olioita, 295 00:19:41.820 --> 00:19:46.280 niin sitten sille saattaa olla olla tota joko tehtävä itse itse se tietorakenne 296 00:19:46.280 --> 00:19:49.040 tai sitten käytettävä jotakin kirjastoa. 297 00:19:49.040 --> 00:19:51.520 Tää on aika tyypillistä nykyään että. 298 00:19:51.520 --> 00:19:55.620 Että että tota että jos tarvitsee tarvitsee erikseen muuttumatonta 299 00:19:55.620 --> 00:19:57.860 tai muuttuvaa jotakin juttua. 300 00:19:57.860 --> 00:20:01.520 Oli se sitten merkkijono tai joku muu tietorakenne tai tyyppi niin siihen sitten 301 00:20:01.520 --> 00:20:06.740 tarvii niitä kirjastoja käyttää, mutta CR on valmiiksi määritelty tänne arkikielen 302 00:20:06.740 --> 00:20:14.570 mukaan nää 2 tyyppiä monesti hyödyllisiä ovat kyllä. 303 00:20:14.570 --> 00:20:18.170 No niin. 304 00:20:18.170 --> 00:20:22.210 No siinä oli lyhyt esimerkki nyt näistä muuttuvista merkki on noissa ja näiden 305 00:20:22.210 --> 00:20:26.790 käyttöä nyt sitten harjoitellaan tuossa tän viikon demoissa. 306 00:20:26.790 --> 00:20:32.990 Mennään seuraavaan asiaan ja puhutaan moniulotteista taulukoista. 307 00:20:32.990 --> 00:20:34.890 Eli mitä ovat moniulotteiset taulukot? 308 00:20:34.890 --> 00:20:37.950 No ensinnäkin taulukolla voi olla useita ulottuvuuksia. 309 00:20:37.950 --> 00:20:41.300 Nythän me ollaan tähän asti käsitelty vaan taulukoita, jossa on ikään kuin 310 00:20:41.300 --> 00:20:45.440 yksi rivi niin sanotusti eli tilanteita jossa meillä on. 311 00:20:45.440 --> 00:20:59.390 Tavallaan 312 00:20:59.390 --> 00:21:03.140 yksi dimensiossa vaan asioita. 313 00:21:03.140 --> 00:21:12.660 Meillä alkaa joku tietorakenne ja 314 00:21:12.660 --> 00:21:15.760 sitten sitä ikään kuin järjestyksessä ollaan pystytty käymään läpi alusta loppuun 315 00:21:15.760 --> 00:21:15.960 ja ja suunta on aina vasemmalta oikealle ollut. Ja tässä nyt on yksi esimerkki 316 00:21:15.960 --> 00:21:15.960 tällaisesta yksiulotteista tietorakenteesta, jossa on meillä 317 00:21:15.960 --> 00:21:15.960 se selkeästi nyt kokonaislukuja ja nythän näitä voidaan ikään kuin indeksoida 318 00:21:15.960 --> 00:21:15.960 tuolta vasemmalta oikealle päin siten, että se aivan vasemman puolimmainen 319 00:21:15.960 --> 00:21:15.960 alkion indeksissä nolla sitten 1, 320 00:21:15.960 --> 00:21:16.400 2 3 ja niin edelleen ja se vihoviimeinen tässä nyt on. 321 00:21:16.400 --> 00:21:18.920 Paikassa 3 jotenka tän. 322 00:21:18.920 --> 00:21:23.100 Taulukon pituus on nyt 4 mutta mikään ei estä tekemästä näitä näitä niinku useampaan. 323 00:21:23.100 --> 00:21:28.240 Dimension ja tässä on nyt esimerkki sitten kaksiulotteista taulukosta. 324 00:21:28.240 --> 00:21:30.580 Tässä meillä on rivejä ja meillä on sarakkeita. 325 00:21:30.580 --> 00:21:35.880 Aika tommoisen tyypillisen excel sheetin näköinen taulukko eli tässä meillä 326 00:21:35.880 --> 00:21:40.680 on rivejä rivit 0 1, 2 3 ja sitten meillä on sarakkeita sarakkeet nolla yksi 327 00:21:40.680 --> 00:21:44.340 ja tästä niinku voidaan nyt hahmottaa, että vaikkapa riville 2 sarakkeessa 328 00:21:44.340 --> 00:21:47.740 yksin niin meillä on tuolla tuolla luku 6. 329 00:21:47.740 --> 00:21:50.240 Eli siinä mielessä nyt mitään kovin spesiaalia. 330 00:21:50.240 --> 00:21:54.020 Ei tässä ole verrattuna tuohon yksiselitteiseen taulukon tapaukseen, mutta toki meillä 331 00:21:54.020 --> 00:21:59.280 on sekä rivejä että sarakkeita, kun siinä edellisessä yksiulotteisia tapauksessa meillä 332 00:21:59.280 --> 00:22:03.490 oli tavallaan vähän niinku vain sarakkeita, mutta joo. 333 00:22:03.490 --> 00:22:07.650 No siinä on nyt sitten koordinoi tuo sama esimerkki, eli me voidaan alustaa 334 00:22:07.650 --> 00:22:11.850 tommoinen kaksiulotteinen taulukko sanomalla int. 335 00:22:11.850 --> 00:22:15.120 Nimenomaan kokonaislukutaulukko sanomalla ithaca, mutta 336 00:22:15.120 --> 00:22:17.510 sinne haka sulkeiden väliin tuleekin, ja. 337 00:22:17.510 --> 00:22:21.610 Se, tarkoittaa sitä, että tässä meillä 2 ulottuvaisuutta ja sitten se pilkko tavallaan 338 00:22:21.610 --> 00:22:26.110 tarkoittaa että että että sen pilkon vasemmalle puolelle tulee jotakin ja oikealle 339 00:22:26.110 --> 00:22:30.650 puolelle tulee jotakin ja tuossa on nyt esimerkki sitten siitä, että miten se siellä 340 00:22:30.650 --> 00:22:35.670 koodissa on tosissaan kirjoitettaisiin auki tuo kyseinen kyseinen taulukko ja kuten 341 00:22:35.670 --> 00:22:40.250 tuossa äsken jo sanoin niin sieltä se riviltä 2 ja sarakkeesta yksi toi kuutonen 342 00:22:40.250 --> 00:22:42.980 voitaisiin nyt sitten ottaa ulos. 343 00:22:42.980 --> 00:22:47.040 Periaatteessa hyvin samanlainen syntaksi kuin mitä yksiulotteista taulukoiden 344 00:22:47.040 --> 00:22:52.880 tapauksessa, mutta siinä nyt sitten käsitellään vaan vaan 2 2 dimensiota ja 345 00:22:52.880 --> 00:22:55.860 katsotaan nyt tuo tuolla ihan raiderissa konkreettisesti. 346 00:22:55.860 --> 00:23:01.460 Eli siinä mulla on nytten tehty toi kaksiulotteinen taulukko nyt tuonne raiderin ja ne 347 00:23:01.460 --> 00:23:06.350 on kyseiset luvut on nyt sinne palautettu menemään ja ja tässä niinku jokainen rivi aina 348 00:23:06.350 --> 00:23:12.580 laitetaan tämmöisen aalto sulkeiden sisään ja sitten sarakkeet. 349 00:23:12.580 --> 00:23:15.420 Niin elikkä tässä on niinku ensimmäisen rivin ensimmäinen 350 00:23:15.420 --> 00:23:18.570 alkio ja sitten ensimmäisen rivin. 351 00:23:18.570 --> 00:23:22.760 Toinen alkio mikä on siinä sarakkeessa numero yksi? 352 00:23:22.760 --> 00:23:31.130 Hyvä ja sitten riviä rivejä erottelee nää pilkut näin elikkä tässä mulla on 4 riviä. 353 00:23:31.130 --> 00:23:34.320 Rivi indeksi nollariviindeksi ykkönen, rivi indeksi kakkonen 354 00:23:34.320 --> 00:23:40.030 ja rivi indeksi kolmonen ja sitten sieltä. Riviin indeksissä 2. 355 00:23:40.030 --> 00:23:43.540 Ja sarakkeessa. 356 00:23:43.540 --> 00:23:46.980 Yksi niin otetaan se alkio, joka nyt olisi sitten tässä se 357 00:23:46.980 --> 00:23:52.560 kutonen ja katsotaan mitä se nyt tulostelee. 358 00:23:52.560 --> 00:23:54.740 No kotona sieltä tietysti pamahti ulos. 359 00:23:54.740 --> 00:23:58.600 No sitten me voidaan käydä muokkaamaan ihan niin kun yksiulotteista 360 00:23:58.600 --> 00:24:03.380 taulukoiden tapauksessa niin voidaan voidaan tuota näitä alkioita 361 00:24:03.380 --> 00:24:06.320 muokata ja siellä rivillä 3 paikassa nolla. 362 00:24:06.320 --> 00:24:11.050 Jos nyt katsotaan tuolta isosta kuvasta vielä niin rivillä rivillä 3. 363 00:24:11.050 --> 00:24:15.930 Sarakkeessa nolla meillä oli siellä luku nolla niinku tuolla tuolla näkyy. 364 00:24:15.930 --> 00:24:19.550 Mut jos me heitetään sinne ysi ysi. 365 00:24:19.550 --> 00:24:24.680 Niin me tulemme muokanneetksi sitä taulukon sisältöä ja ja voitaisi 366 00:24:24.680 --> 00:24:29.070 tietysti paitsi tulostaa se nyt tuossa. 367 00:24:29.070 --> 00:24:34.960 Niin katsoa kohta myöskin debugerissä, mutta tuloksetta nyt ensin eli taulukko 2 rivi 368 00:24:34.960 --> 00:24:40.410 rivi 3 sarake nolla ja rivi indeksi laitetaan aina ensimmäisenä ja sitten vasta toi 369 00:24:40.410 --> 00:24:46.400 sarake indeksi sen perään noin elikkä sieltä saatiin saatiin sitä muokattua ja katsotaan 370 00:24:46.400 --> 00:24:51.070 seuraavaksi tuolla ebookers eli laitetaan tuohon riville kaksikymmentäkaksi nytten breakpoint 371 00:24:51.070 --> 00:24:53.740 ja katsotaan että miltä tuommoinen 2. 372 00:24:53.740 --> 00:24:59.270 Ulotteinen matriisi nyt sitten näyttää täällä debugerin näkökulmasta. 373 00:24:59.270 --> 00:25:03.270 Väriä plus armotta weber ja mulla jäi näköjään tääilis moodi päälle 374 00:25:03.270 --> 00:25:06.670 niin täytyy tää depok konfiguraatio laittaa päälle. 375 00:25:06.670 --> 00:25:11.130 Oletuksena tää debug konfiguraatio on aina päälle ja jos sitä ei ole päällä 376 00:25:11.130 --> 00:25:14.940 niin silloin näiden eivät täällä ikään kuin laukea. 377 00:25:14.940 --> 00:25:18.790 Mutta nyt mulla on debugkaus moodi päällä ja saadaan tää auki 378 00:25:18.790 --> 00:25:20.640 eli siellä mulla on kaksiulotteinen taulukko. 379 00:25:20.640 --> 00:25:25.770 Jos mä kolmiosta klikkaan sen auki niin nähdään niin että mulla on siellä 4 kappaletta ikään kuin 380 00:25:25.770 --> 00:25:33.030 alkioita niin sanotusti ja kukin näistä alkioista nyt ovat niitä rivejä rivit 0 1 2 3 ovat siinä 381 00:25:33.030 --> 00:25:38.000 ja rivit saadaan auki tutulla tavalla tuosta kolmiosta avaamalla ja. 382 00:25:38.000 --> 00:25:42.300 Tässä nyt ei periaatteessa mitään sen ihmeempää ole, että samanlainen 383 00:25:42.300 --> 00:25:44.360 tietorakenne kuin yksi ulotteinen taulukko. 384 00:25:44.360 --> 00:25:52.590 Mutta nyt mulla on vaan siinä vähän enemmän tuota tilaa tilaa toimia. 385 00:25:52.590 --> 00:25:56.190 OK no mitä olisi taulukko? 386 00:25:56.190 --> 00:26:02.650 Taulukko 2 riviltä 3 sarakkeesta 2 jos nyt vielä tota samaa taulukkoa tuossa on pistellään 387 00:26:02.650 --> 00:26:07.050 niin silloinhan me yritettäisiin tässä päästä sellaiseen sarake indeksiin jota ei ole 388 00:26:07.050 --> 00:26:13.090 olemassa ja tällaisen toiminnan tuloksena on ajonaikainen virhe ja ohjelma siitä ei tietenkään 389 00:26:13.090 --> 00:26:18.610 tykkää vaan kaatua pamahtaa menemään ja voihan se nyt näyttää tuossa raiderissa vielä 390 00:26:18.610 --> 00:26:21.620 elikkä jos yritettäisiin vaikkapa. 391 00:26:21.620 --> 00:26:23.680 Asettaa sinne jokin arvoin. 392 00:26:23.680 --> 00:26:26.240 Olisi tässä tietysti argumentoida niin, että mitä jos 393 00:26:26.240 --> 00:26:30.890 me sinne haluttaisiin laittaa tuollainen? Ikään kuin lisätä. 394 00:26:30.890 --> 00:26:33.750 Lisätä uusi alkio. 395 00:26:33.750 --> 00:26:39.390 Mutta kuten tuossa jo sanoin, niin ahdistus koittaa siinä ja system. 396 00:26:39.390 --> 00:26:41.780 Index out of french section. 397 00:26:41.780 --> 00:26:46.380 Sinänsä aika aika looginen ja havainnollinen on tämä virheilmoitus, 398 00:26:46.380 --> 00:26:47.920 mikä tästä ajon aikana tulee. 399 00:26:47.920 --> 00:26:49.910 Eli eli nythän nythän niinku tavallaan. 400 00:26:49.910 --> 00:26:54.480 Sivuhuomautuksena sanon niin, että nythän kun me tässä kirjoitamme virheellistä koodia, 401 00:26:54.480 --> 00:26:59.440 niin me saamme täällä raiderissa nää poikkeukset kiinni tälleen nätisti ajon aikaiset 402 00:26:59.440 --> 00:27:04.790 virheet siis ja ja voimme niitä lähteä käsittelemään, mutta jos meille tosielämän 403 00:27:04.790 --> 00:27:08.570 tilanteessa oikeassa ohjelmassa tällainen virhe tulisi, niin sen käyttäjän 404 00:27:08.570 --> 00:27:10.780 näkökulmasta tapahtuisi ikään kuin kaatuminen. 405 00:27:10.780 --> 00:27:12.710 Eli tää ohjelma hajoaisi. 406 00:27:12.710 --> 00:27:17.500 Hajoaisi ja ja mä voin sen niin kun sillä tavalla tässä nyt havainnoida, että. 407 00:27:17.500 --> 00:27:23.560 Että jos mä klikkaan tän ohjelman tästä auki auki ja tota hetkinen katsotaanpas tää. 408 00:27:23.560 --> 00:27:27.400 Nyt tuli puolittain extemporeena tässä, mutta katsotaan nyt miltä se näyttää. 409 00:27:27.400 --> 00:27:31.910 Eli jos mä avaan tän tästä. 410 00:27:31.910 --> 00:27:35.220 Terminaalissa tää on mun sovelluksen. 411 00:27:35.220 --> 00:27:39.240 Eli nyt mulla on tuossa se alkuperäinen sovellus ja mä oon sen kääntänyt tuonne 412 00:27:39.240 --> 00:27:45.580 bin kansioon ja sieltä löytyy debug kansiosta se excel tiedosto. 413 00:27:45.580 --> 00:27:48.740 Eli muokattavat merkkijonot. X. Se löytyy tuolta. 414 00:27:48.740 --> 00:27:51.660 Tää on se ajettava windows ohjelma eri käyttöjärjestelmissä. 415 00:27:51.660 --> 00:27:55.100 Se ajettava ohjelma saattaa näyttää aavistuksen erilaiselta, mutta nyt 416 00:27:55.100 --> 00:27:57.540 laitetaan tää käyntiin ihan täältä niinku windowsista. 417 00:27:57.540 --> 00:28:02.120 Nythän mulla on tää terminaali toki tässä tässä raiderissa auki, 418 00:28:02.120 --> 00:28:05.910 mutta että jos nyt mulla olisi olisi tota. 419 00:28:05.910 --> 00:28:10.210 Ihan windowsin terminaali niin niin se jaha eihän se 420 00:28:10.210 --> 00:28:16.070 ollut se muokattu ovat merkkijonot kun. 421 00:28:16.070 --> 00:28:18.810 Minä tietysti avasin väärän projektin, elikkä matriisit. 422 00:28:18.810 --> 00:28:20.750 Projekti piti tietenkin avata. 423 00:28:20.750 --> 00:28:23.180 Tää on nyt on taas taas tuota. 424 00:28:23.180 --> 00:28:27.030 Pientä demo efektistä tässä. Noin elikkä matriisit. 425 00:28:27.030 --> 00:28:34.000 Excel laitetaan siitä käyntiin sanomalla pistekena– matriisit ja näin toimimalla käynnistämme 426 00:28:34.000 --> 00:28:39.300 tämän ohjelman ja sieltä sitten saamme tietysti sen saman poikkeus näkymän aikaiseksi eli 427 00:28:39.300 --> 00:28:43.860 systeemistä indeksissä auto friends sepon ja jos nyt ajattelet itseäsi käyttäjänä ja saisit 428 00:28:43.860 --> 00:28:48.620 tuollaisen virheilmoituksen niin kyllähän siinä tulisi aika pelottava olo, että mistä ihmeestä 429 00:28:48.620 --> 00:28:52.910 on kysymys että indeksit outside pounds of harainen. 430 00:28:52.910 --> 00:28:56.620 Ja jos vaikka pankkitilille yrittää tehdä siirtoa ja tuommoinen virhe tulee, niin kyllähän 431 00:28:56.620 --> 00:29:03.610 siinä siinä paniikki voi iskeä eli tämmöiset virhetilanteet tietysti täytyy siellä tavallaan 432 00:29:03.610 --> 00:29:08.690 niinku kokeilla ja testata ja tutkia hyvin siellä ohjelmaa kehittäessä, että tällaista 433 00:29:08.690 --> 00:29:11.320 ei missään tapauksessa sitten pääsisi tapahtumaan. 434 00:29:11.320 --> 00:29:13.120 Elikkä nythän harmillista. 435 00:29:13.120 --> 00:29:19.190 On se niin että tästä ei tästä ei tule käännöslaista virhettä vaan. 436 00:29:19.190 --> 00:29:26.500 Vaan vaan kyseessä. On ajonaikainen virhe. 437 00:29:26.500 --> 00:29:31.900 Joka ikään kuin löytyy vasta käytettäessä ohjelmaa. 438 00:29:31.900 --> 00:29:34.380 Näin. 439 00:29:34.380 --> 00:29:39.100 Hyvä käännösvirheet tietysti näkyy punakynällä täällä raiderissa. 440 00:29:39.100 --> 00:29:46.860 No joo kysykää vaan jos tulee tästä kysyttäviä mutta mennään eteenpäin. 441 00:29:46.860 --> 00:29:52.360 No meidän ei tarvitse mitenkään jäädä jäädä niinku vielä niinku kaksiulotteistauuteen. 442 00:29:52.360 --> 00:29:57.310 Me voidaan tehdä kuinka moniulotteisia vaan tällaisten tosi moniulotteisten 443 00:29:57.310 --> 00:30:02.120 taulukoiden visualisointi alkaa olla haasteellista, mutta että jos meillä nyt 444 00:30:02.120 --> 00:30:04.700 jos nyt yrittäisin tehdä jotakin, sen tapaa sitä tehdä. 445 00:30:04.700 --> 00:30:09.000 Eli jos meillä nyt olisi tuossa tämmöinen. 3 kertaa 2. 446 00:30:09.000 --> 00:30:13.660 Taulukko, jonka kussakin solussa olisi sitten vielä. 447 00:30:13.660 --> 00:30:15.720 2 kertaa 2 matriiseja. 448 00:30:15.720 --> 00:30:20.200 Nythän meillä olisi tässä ikään kuin neliö ulotteinen taulukko eli jokaisessa 449 00:30:20.200 --> 00:30:25.820 tämmöisen 2 kertaa 3 kertaa 2 matriisin sisällä olisi vielä 2 kertaa 2 matriisia 450 00:30:25.820 --> 00:30:28.450 niin sehän tarkoittaisi sitä että mulla on. 451 00:30:28.450 --> 00:30:34.810 Riviindeksi sarake indeksi ja sitten mulla on vielä rivi ja sarake eli tavallaan 4 452 00:30:34.810 --> 00:30:39.310 ulottuvuutta jolla mä pääsen sitten käsiksi yksittäiseen tällaiseen. 453 00:30:39.310 --> 00:30:42.830 Lukuun, joita täällä nyt on näitä kokonaislukuja. 454 00:30:42.830 --> 00:30:48.330 Jos nyt ajatellaan vaikka tuosta tuon luvun 3 että mikä mikä olisi tämän alkion indeksi, 455 00:30:48.330 --> 00:30:51.140 niin meidän täytyisi lähteä täältä ulkoa täältä päin liikkeelle. 456 00:30:51.140 --> 00:30:56.230 Eli meillä on täällä uloimmassa. Taulukossa nyt rivejä. 457 00:30:56.230 --> 00:30:58.460 Ja sitten meillä on sarakkeita. 458 00:30:58.460 --> 00:31:01.330 No sitten meillä on vielä täällä. 459 00:31:01.330 --> 00:31:08.030 Rivejä ja sarakkeita elikkä nytten tämän ison taulukon rivillä 2 sarakkeessa nolla ollaan 460 00:31:08.030 --> 00:31:13.470 menossa ja sitten tän pienemmän taulukon rivillä nolla ja sarakkeessa yksi elikkä silloin 461 00:31:13.470 --> 00:31:19.370 tarkoittaa sitä, että tämän kolmosen indeksi olisi 2 0 0 1. 462 00:31:19.370 --> 00:31:21.630 Ja se olisi se. 463 00:31:21.630 --> 00:31:25.670 Tavallaan pääsy pääsy sitten tuonne yksittäiseen alkioon ja sitten voitaisiin 464 00:31:25.670 --> 00:31:31.060 sieltä tulostaa tai tarvittaessa muokata kyseisen indeksin arvoa. 465 00:31:31.060 --> 00:31:35.280 Moniulotteisia taulukoita käytetään tosi paljon dataa analyysissa. 466 00:31:35.280 --> 00:31:38.860 Eli nyt tässä meidän tarpeissa ja meidän käyttötilanteissa puhutaan 467 00:31:38.860 --> 00:31:43.030 hyvin usein täällä ohjelmatyökurssi vain yksi tai kaksiulotteista taulukosta, 468 00:31:43.030 --> 00:31:46.040 mutta on hyvin tyypillistä niin, että. 469 00:31:46.040 --> 00:31:49.680 Että, että kun me käsitellään moni mutkaista dataa, niin me 470 00:31:49.680 --> 00:31:52.760 tarvitaan myöskin moniulotteisia taulukoita. 471 00:31:52.760 --> 00:31:55.190 Sanotaan vaikkapa niin, että. 472 00:31:55.190 --> 00:31:59.580 Otetaan nyt vielä ehkä yksinkertainen analogia tähän, että jos me haluttaisiin 473 00:31:59.580 --> 00:32:05.060 rakentaa tietorakenne tai tietojärjestelmää kaikista jyväskyläläistä kirjastoista 474 00:32:05.060 --> 00:32:09.640 ja niitten kirjastojen sisältämistä kirjoista, niin mehän voitaisiin ajatella, 475 00:32:09.640 --> 00:32:13.800 että yksi yksittäinen kirja on taulukko, eikö vaan? 476 00:32:13.800 --> 00:32:17.220 Eli siellä on merkkijono, joka on taulukko ei itsessään. 477 00:32:17.220 --> 00:32:21.700 No sitten siellä kirjastossa on olisi tietysti monta kirjaa, jotenka 478 00:32:21.700 --> 00:32:26.430 meillä voisi olla taulukko, jossa kukin taulukon solu. 479 00:32:26.430 --> 00:32:32.830 On aina yksi kirja. Eikö vaan ja kukin näistä taulukoista. 480 00:32:32.830 --> 00:32:38.550 Sitten sisältäisi kirjan kirja, nolla kirja, yksi kirja 2 kirja 3 ja niin edelleen. 481 00:32:38.550 --> 00:32:58.550 Mutta tää kirja 482 00:33:00.630 --> 00:33:01.970 nolla nyt oli jo taulukko itsessään, eli eli meillä olisi tässä jo nyt kaksiulotteinen taulukko kukin meistä taulukon soluista olisi kirja. 483 00:33:01.970 --> 00:33:01.970 No mitenkäs sitten, kun meillä on monta kirjastoa Jyväskylässä, niin 484 00:33:01.970 --> 00:33:01.970 totta kai näitä kirjastoja sitten pitäisi pitäisi ryhmitellä ja nyt voisivat 485 00:33:01.970 --> 00:33:01.970 sitten taas olla osaltaan riveä tällaisessa 486 00:33:01.970 --> 00:33:04.030 taulukossa, elikkä meillä olisi rivit 0 1 2 jossa kussakin. 487 00:33:04.030 --> 00:33:25.600 Kussakin alkio, jossa on sitten aina yksi kirjaston sisältämät kirjat. 488 00:33:28.850 --> 00:33:30.970 Eli nyt meillä olisi kolmio ulottuvaisuutta tässä taulukossa. 489 00:33:30.970 --> 00:33:33.710 No entä jos me haluttaisiin koko keskisuomen kaikki kirjastot tähän samaan tietoon rakenteeseen, 490 00:33:33.710 --> 00:33:33.710 niin sitten meillä olisi Jyväskylän taulukot tai Jyväskylän kirjat. 491 00:33:33.710 --> 00:33:33.710 Yksi taulukossa yksi solussa ja sitten Jämsän kirjasta. Niitäkin voisi 492 00:33:33.710 --> 00:33:33.710 olla monta voisi taas olla yksi rivi tällaisessa. 493 00:33:33.710 --> 00:33:33.710 Eli eli kyllä tässä niinku päästään hyvin äkkiä tavallaan siihen 494 00:33:33.710 --> 00:33:35.510 ajatukseen niin että me tarvitaan, tarvitaan meidän. 495 00:33:35.510 --> 00:33:40.460 Tietojen tallentamista varten monimutkaisempia tieto rakenteita kuin vain sellaisen 496 00:33:40.460 --> 00:33:47.300 ikään kuin yksi ulotteinen, missä meillä on jotakin lukuja ja tai tai tai merkkejä 497 00:33:47.300 --> 00:33:53.500 tai totuusarvoja eli ikään kuin oikean maailman ongelmiin tarvitaan kuitenkin 498 00:33:53.500 --> 00:33:55.360 monimutkaisempia tietorakenteita. 499 00:33:55.360 --> 00:33:59.680 Ja tää data analyysi nyt on sitten hyvä esimerkki siitä. 500 00:33:59.680 --> 00:34:02.780 Mutta joo, palataan näihin kaksiulotteisia nyt ja ja niitä 501 00:34:02.780 --> 00:34:07.710 tällä kurssilla enimmälti käsitellään. Ja kaksiulotteisia. 502 00:34:07.710 --> 00:34:09.590 Taulukoita kutsutaan tyypillisesti matriisi. 503 00:34:09.590 --> 00:34:12.510 Se tulee matematiikasta se termi, mutta että ohjelmoinnissakin 504 00:34:12.510 --> 00:34:15.350 monesti puhutaan matriisista. 505 00:34:15.350 --> 00:34:18.810 No sitten vielä yksi tekninen huomio, elikkä kuten yksiulotteisia 506 00:34:18.810 --> 00:34:23.310 taulukoissa, niin myöskin näissä kaksiulotteisia taulukoissa matriisissa 507 00:34:23.310 --> 00:34:31.500 voi olla vain yksi 508 00:34:31.500 --> 00:34:36.370 tyyppisiä alkioita. 509 00:34:36.370 --> 00:34:44.030 Eli jos me nyt haluaisin tänne taulukko 2 hen heittää vaikkapa nyt riville yksi sarakkeeseen 510 00:34:44.030 --> 00:34:45.330 2 vaikkapa nyt sanotaan merkkijonon, niin tämähän ei onnistu. 511 00:34:45.330 --> 00:34:45.330 Eli tästä tulee. Tästä tulee sitten käännös alaikäinen virhe eli eli problems huutaa 512 00:34:45.330 --> 00:34:45.820 täällä punaista ja cannot convert tai stringit. 513 00:34:45.820 --> 00:34:47.690 Target tai pint. 514 00:34:47.690 --> 00:34:51.490 Eli me ollaan täällä määritelty niin, että meidän alkioiden tyyppi on intia. 515 00:34:51.490 --> 00:34:55.370 Sitä ei voi tietysti nyt tässä kesken pelin muuttaa. 516 00:34:55.370 --> 00:34:58.280 Eli eli eli sinne taulukkoon ei voi. 517 00:34:58.280 --> 00:35:04.210 Monen tyyppisiä kaveruksia tallentaa. 518 00:35:04.210 --> 00:35:08.810 Lunttaan tuossa, että mitä pitikään tehdä seuraavaksi OK elikkä lähdetään sitten 519 00:35:08.810 --> 00:35:14.090 tekemään vielä vielä useampia taulukoita tähän näin ja katsotaan että miten näitä 520 00:35:14.090 --> 00:35:17.190 taulukoita voidaan sitten samalla myöskin myöskin käsitellä. 521 00:35:17.190 --> 00:35:21.510 Tehdään vaihtelun vuoksi nyt tähän merkkijono taulukko. 522 00:35:21.510 --> 00:35:24.770 Eli tää on nyt ihan tämmöinen tavanomainen yksiselitteinen taulukko, 523 00:35:24.770 --> 00:35:28.770 johon lisätään ikään kuin peräkkäin niitä. 524 00:35:28.770 --> 00:35:34.480 Sitä sitä tavaraa eli siellä mulla nyt on 3 paikkainen tai 3 alkiolainen merkkijonot 525 00:35:34.480 --> 00:35:38.730 taulukko, jossa ensimmäisessä alkossa on tommoinen nimi ja toisessa alkossa on tommoinen 526 00:35:38.730 --> 00:35:43.030 ja sitten kolmannessa alkossa on vielä tommoinen mutta. 527 00:35:43.030 --> 00:35:45.610 Tämähän nyt voisi olla vähän monimutkaisempikin ja 528 00:35:45.610 --> 00:35:48.930 joskus voisi olla tarvetta tallentaa. 529 00:35:48.930 --> 00:35:53.710 Asiat kaksiulotteisen taulukkoon sen takia, että ensimmäisessä sarakkeessa voisi 530 00:35:53.710 --> 00:35:57.200 olla sen henkilön etunimi ja toisessa sarakkeessa sukunimi. 531 00:35:57.200 --> 00:35:59.170 Tai itse se voisi olla ehkä toisin päin. 532 00:35:59.170 --> 00:36:02.930 Laitetaan sukunimiä toisessa sarakkeessa, sitten etunimi tai etunimet. 533 00:36:02.930 --> 00:36:08.150 Noin. 534 00:36:08.150 --> 00:36:14.250 Ja tehdään näin, elikkä tehdään kaksiulotteinen taulukko, kaverit 2 ja nyt kun mä tiedän 535 00:36:14.250 --> 00:36:19.590 niin että mulla on tässä 3 kaverusta käsittelyssä niin tehdään siihen 3 riviä. 536 00:36:19.590 --> 00:36:27.010 Eli jokaiselle riville tulee aina yksi kaveri ja kullakin kaverilla on sekä sukunimi että sitten 537 00:36:27.010 --> 00:36:31.400 etunimet jotenka 2 saraketta tehdään tähän mun hienoin tietorakenteeseen. 538 00:36:31.400 --> 00:36:33.800 Lähdetään laittamaan sinne sisältöön. 539 00:36:33.800 --> 00:36:36.950 Ja laitetaan se nyt tuosta noin eli. 540 00:36:36.950 --> 00:36:41.530 Riville nolla sarakkeeseen nolla vitsi mä nyt käännän 541 00:36:41.530 --> 00:36:44.350 tämän niin laitan se sukunimi sinne ensin. 542 00:36:44.350 --> 00:36:48.090 Noin joo sori mä nyt tässä vähän modaan tätä lennosta eli 543 00:36:48.090 --> 00:36:50.950 siinä on ensimmäisen rivin kaverin tiedot. 544 00:36:50.950 --> 00:36:56.170 No sitten toisen rivin kaverin tiedot löytyy siitä eli. 545 00:36:56.170 --> 00:37:01.620 Rivillä yksi sarakkeessa nolla on lappalainen ja sitten rivillä yksi sarakkeissa. 546 00:37:01.620 --> 00:37:05.710 Yksi on etunimi ja näin jatketaan loppuun asti. 547 00:37:05.710 --> 00:37:09.120 Eli siinä nyt tulen manuaalisesti sen sisällön sinne asettaneeksi. 548 00:37:09.120 --> 00:37:12.190 Katsotaan debugerissä miltä tuo näyttää. 549 00:37:12.190 --> 00:37:17.600 F ysillä break point sinne ja vitosella debugkeri käyntiin eli kaverittaulukko 550 00:37:17.600 --> 00:37:22.970 sisälsi nyt yksiulotteisesti kaikki mutta kaverit 2 niin siellä on 2 riviä 551 00:37:22.970 --> 00:37:26.960 ja sitten on ehkä vähän ikään kuin voisiko sanoa? 552 00:37:26.960 --> 00:37:31.960 Järjestetyn nämä asiat, että sukunimi on erillään etunimestä 553 00:37:31.960 --> 00:37:34.200 monesti kuitenkin erilaisissa sovelluksissa. 554 00:37:34.200 --> 00:37:39.720 Se sukunimi on on on syytä ottaa erilleen ja käsitellä näitä nimiä. 555 00:37:39.720 --> 00:37:41.920 Omanaan. 556 00:37:41.920 --> 00:37:47.420 No laitetaan siihen nyt vaikka seuraavaksi ihan että että miten nää saadaan käsiteltyä 557 00:37:47.420 --> 00:37:52.440 ihan ihan perustulostamiselle ja käytetään siihen nyt for each silmukkaan. 558 00:37:52.440 --> 00:37:58.420 For silmukkaan oli hyvä siihen, että me käydään koko tietorakenne läpi ja tässä meillä nyt 559 00:37:58.420 --> 00:38:03.660 on tää kaverit 2 tietorakenne jota halutaan käydä läpi ja mä käyn sieltä kaikki alkiot läpi 560 00:38:03.660 --> 00:38:08.290 ja tulossa tänne kaikki alkiot tohon ruudulle tähän kelpaa meille. 561 00:38:08.290 --> 00:38:12.330 Tää forza silmukan rakenne oikein erinomaisen hyvin eli 562 00:38:12.330 --> 00:38:15.010 sieltä nyt tulee kaikki omalle rivilleen. 563 00:38:15.010 --> 00:38:19.430 No tietysti nyt kivaa olisi se. Ja tämä voisin. 564 00:38:19.430 --> 00:38:26.610 Voisin tota tulostaa sen sen yksi henkilön aina yksi riville eli ensin sukunimen 565 00:38:26.610 --> 00:38:31.260 ja sitten etunimen ja vasta sen jälkeen laittaa tän kyseisen. 566 00:38:31.260 --> 00:38:36.290 Tota noin niin nimen perään sitten rivin vaihdon. 567 00:38:36.290 --> 00:38:54.790 Ennen kuin mennään siihen niin. Niin tuota pikkuhetki. 568 00:38:54.790 --> 00:39:00.560 Tästäkin on multa puuttuu tuolta mallikoodi. 569 00:39:00.560 --> 00:39:03.350 No joo tehdään näin elikkä. 570 00:39:03.350 --> 00:39:06.910 Me saadaan muutamia informaation palasia nyt talteen tuosta kaverit 571 00:39:06.910 --> 00:39:11.090 2 taulukosta eli ensinnäkin alkioiden lukumäärä. 572 00:39:11.090 --> 00:39:15.390 Me saadaan kysymällä kaverit 2 delta että paljonko sun pituus on eli 573 00:39:15.390 --> 00:39:20.430 tää on tietysti jo ennestään tuttu tää lent ominaisuus, mutta se toimii 574 00:39:20.430 --> 00:39:23.450 ihan kaiken dimensioisille taulukolle. 575 00:39:23.450 --> 00:39:27.310 Tässä matriisin tapauksessa se antaa sitten. 576 00:39:27.310 --> 00:39:30.230 Sieltä sen 6 eikö vaan? 577 00:39:30.230 --> 00:39:36.390 Eli mulla on 3 kertaa 2 3 riviä ja 2 saraketta jotenka se on 6 tulostetaan se. 578 00:39:36.390 --> 00:39:41.250 Eli kaverit. 2 taulukossa on. 579 00:39:41.250 --> 00:39:46.410 Noin monta alkiota. Siitä peli käyntiin. 580 00:39:46.410 --> 00:39:51.490 Ja tää on monesti hyödyllinen informaatio kun kun tuota käydään taulukkoa 581 00:39:51.490 --> 00:39:55.780 läpi, mutta me saadaan sieltä muutakin eli pystysuuntainen. 582 00:39:55.780 --> 00:40:00.550 Pystysuuntainen pituus voidaan kysyä. 583 00:40:00.550 --> 00:40:06.310 Tältä 2 taulukosta tämmöisellä metodilla kun get lent ja sinne annetaan. 584 00:40:06.310 --> 00:40:09.650 Sitten argumentiksi ja dimension luku. 585 00:40:09.650 --> 00:40:14.140 Tää saattaa kuulostaa nyt vähän oudolta, mutta. 586 00:40:14.140 --> 00:40:18.760 Mutta näin se näin se menee elikkä kaverit 2 kettler gt ja sitten 587 00:40:18.760 --> 00:40:26.060 olla ja se nolla tässä tosiaan tarkoittaa sitä dimensiolukua ja erityisesti 588 00:40:26.060 --> 00:40:29.030 tää nolla tarkoittaa nyt niitä rivejä. 589 00:40:29.030 --> 00:40:33.160 Ja kun me puhutaan moniulotteista taulukoista, niin aina aina lähdetään silleen, 590 00:40:33.160 --> 00:40:37.070 että ensin puhutaan riveistä ja sitten puhutaan sarakkeista ja sitten jos 591 00:40:37.070 --> 00:40:41.090 meillä on 3 taulukko niin sitten mennään tavallaan sinne vielä niinku syvemmälle 592 00:40:41.090 --> 00:40:44.880 sitä siinä dimensioiden luvussa. 593 00:40:44.880 --> 00:40:51.350 Mutta yksi kaikki kepler nolla antaa rivien määrän ja tulostetaan se sieltä. 594 00:40:51.350 --> 00:40:54.020 Otan tuosta nyt ajan voittamiseksi vähän kovempaa eli kaverit 595 00:40:54.020 --> 00:40:56.760 2 matriisissa on noin monta henkilöä. 596 00:40:56.760 --> 00:41:01.180 Sehän on se luonteva ilmaisu nytten niille rivien määrälle 597 00:41:01.180 --> 00:41:03.680 noin elikkä siellä on noin monta henkilöä. 598 00:41:03.680 --> 00:41:09.220 No tietysti vaakasuuntaisen rivit tai vaakasuuntaisen niinku. 599 00:41:09.220 --> 00:41:12.530 Sarakkeet sitten voidaan kysyä kysyä myöskin ja se tapahtuu 600 00:41:12.530 --> 00:41:14.820 sitten kysymällä get lenkit yks. 601 00:41:14.820 --> 00:41:22.670 Eli sarakkeiden määrä kaverit 2 yksi ja näin voidaan sitten tulostaa että kaverit 2 602 00:41:22.670 --> 00:41:28.460 matriisissa on tallennettuna kullekin henkilölle noin monta nimeä elikkä elikkä sieltä 603 00:41:28.460 --> 00:41:32.300 se kakkonen pitäisi tietysti pullahtaa pihalle, mikä tarkoittaa että jokaisella henkilöllä 604 00:41:32.300 --> 00:41:38.000 on on sekä sukunimi että myöskin sitten etunimitieto. 605 00:41:38.000 --> 00:41:42.760 Noin laitetaan siihen nyt yksi tuommoinen– väli ja lähdetään sitten. 606 00:41:42.760 --> 00:41:45.270 Sitten tota. 607 00:41:45.270 --> 00:41:51.400 Tekemään sitä taulukon käsittelyä eikä tulostetaan halkiot siten, että sekä sukunimi. 608 00:41:51.400 --> 00:41:56.190 Sukunimi ja etunimi kautta etunimet on samalla rivillä. 609 00:41:56.190 --> 00:42:01.120 Tämä ei onnistu. Valitettavasti for each silmukan avulla. 610 00:42:01.120 --> 00:42:05.330 Ja tehdään se ihan omassa aliohjelmassa eli tulosta taulukko ja 611 00:42:05.330 --> 00:42:09.500 argumenttina heitetään sinne se kaverit 2 noin. 612 00:42:09.500 --> 00:42:13.420 Ja nyt tässä periaatteessa on ihan ihan tuttua tavaraa ennestään jo eli lähdetään 613 00:42:13.420 --> 00:42:19.610 public static tekemään uutta saliohjelmaa siihen ja mikä tää tulostaulukkaalle 614 00:42:19.610 --> 00:42:23.570 ohjelman tyyppi nyt on eli mikä on sen paluuarvon tyyppi niin se on tässä tapauksessa 615 00:42:23.570 --> 00:42:25.910 nyt voit me me ei itse asiassa. 616 00:42:25.910 --> 00:42:29.820 Palautetta sieltä mitään arvoa vaan me yksinkertaisesti vaan tulostetaan 617 00:42:29.820 --> 00:42:34.030 se sisältö ja kun tuossa nimessäkin tuo tulosta sana on, niin se nyt 618 00:42:34.030 --> 00:42:37.540 meille kertoo niin, että tämä tämä on tämmöinen. 619 00:42:37.540 --> 00:42:42.930 Aliohjelma, joka ei palauta mitään. Kaverit 2 on. 620 00:42:42.930 --> 00:42:47.940 String matriisi eli string kaksiulotteinen taulukko ja laitetaan sinne. 621 00:42:47.940 --> 00:42:53.830 Siellä on parametrin tyypiksi myöskin tää kaksiulotteista taulukkoa indikoivat. 622 00:42:53.830 --> 00:42:57.680 Tyyppi. Annetaan sille myöskin asianmukainen nimi. 623 00:42:57.680 --> 00:43:01.450 Tässä sen voisi olla esimerkiksi taulukko. 624 00:43:01.450 --> 00:43:05.260 Ja ja ja laitetaan sinne nyt jonkunlainen dokumentaatio myöskin 625 00:43:05.260 --> 00:43:07.230 mukaan niin nähdään mitä ollaan tekemässä. 626 00:43:07.230 --> 00:43:14.630 Eli tulostetaan halkiot, sukunimi ja etunimi. 627 00:43:14.630 --> 00:43:18.770 Ja miksi tämä ei onnistu for its silmukan avulla, niin me emme tiedä for 628 00:43:18.770 --> 00:43:22.830 each silmukasta sitä, että missä kohtaa me olemme menossa. 629 00:43:22.830 --> 00:43:28.490 Siinä silmukat tää ford silmukka täy vaan ikään kuin kaikki vaan läpi ja sieltä tulee 630 00:43:28.490 --> 00:43:32.380 niitä alkioita ja tulee ja tulee tulee mutta emme me tiedä ikään kuin että olemmeko 631 00:43:32.380 --> 00:43:35.670 meidän jotenkin rivin päässä alussa keskellä vai missä? 632 00:43:35.670 --> 00:43:40.670 Ja niinpä tämä ford silmukka rakenne niinku nyt 1000 kerran sen jo sanoin niin soveltuu 633 00:43:40.670 --> 00:43:44.510 siihen tilanteeseen kun me tiedetään me käydään kaikki läpi, mutta meille ei ole välttämättä 634 00:43:44.510 --> 00:43:48.780 tietoa eikä ole tietoa siitä että missä kohtaa me sitä. 635 00:43:48.780 --> 00:43:52.660 Taulukkoa tai tietorakennetta ollaan menossa ja sanon tähän väliin. 636 00:43:52.660 --> 00:43:56.840 Nyt tavallaan sivuhuomiona kautta puolittain perustellun, että miksi? 637 00:43:56.840 --> 00:44:01.170 Miksi tämmöinen for its rakenne edes on mielekäs? 638 00:44:01.170 --> 00:44:04.700 Jos me emme tiedä, missä kohtaa me olemme menossa, niin jos me ajatellaan vähän 639 00:44:04.700 --> 00:44:08.930 monimutkaisempia tieto rakenteita, kuten vaikkapa puurakennetta, jota käydään tarkemmin 640 00:44:08.930 --> 00:44:13.530 sitten läpi ihan noilla muilla kursseilla, algoritmeissa ja muissa, mutta puurakennehan 641 00:44:13.530 --> 00:44:17.840 voi olla sellainen niin, että meillä on tämmöinen niin kun juuri solmu ja sitten 642 00:44:17.840 --> 00:44:20.070 meillä on sen juuri solmun alla. 643 00:44:20.070 --> 00:44:23.830 Nolla tai useampia solmuja vaikka 3 ikään kuin lapsi solmua. 644 00:44:23.830 --> 00:44:30.290 Ja sitten näiden 3 lapsissamun alaisuudessa voi taas olla nolla tai useampia lapsissaoluja, 645 00:44:30.290 --> 00:44:36.550 niin tavallaan tämmöinen puurakenne joka leviää leviää sinne syvemmälle syvyyksiin, niin 646 00:44:36.550 --> 00:44:41.700 siinä ei ole oikeasti kovin paljon merkitystä sillä, että missä. 647 00:44:41.700 --> 00:44:45.360 Niinku indeksissä tai missä numerossa tai missä järjestyksessä 648 00:44:45.360 --> 00:44:47.720 me ollaan niitä alkioita käymässä läpi. 649 00:44:47.720 --> 00:44:51.200 Pointtihan on se niin, että meidän tarvitsee käydä ne kaikki läpi, 650 00:44:51.200 --> 00:44:55.340 jos me vaikka halutaan laskea lapsi solujen sum. 651 00:44:55.340 --> 00:45:00.620 Ja tällä tavalla kun näitä monimutkaisempia tietorakenteita sitten myöhemmillä kursseilla 652 00:45:00.620 --> 00:45:07.270 tietojenkäsittelytieteessä, niin käytte mahdollisesti niin niin tuota siinä tulette 653 00:45:07.270 --> 00:45:11.200 niinku törmäämään siihen niin että siellä järjestyksellä ei saa olekaan niin välttämättä 654 00:45:11.200 --> 00:45:15.320 väliä tai sen järjestys ei ole ollenkaan yksi käsitteinä tässä meidän tilanteessa on 655 00:45:15.320 --> 00:45:18.990 ollut yksi kurssilla, kun me käsitellään näitä hyvin simppeleitä tietorakenteita, niin 656 00:45:18.990 --> 00:45:23.980 tietysti on niinku ilmeistä, että joku asia on ennen toista, mutta ei tietenkään välttämättä 657 00:45:23.980 --> 00:45:26.260 aina niin ole. 658 00:45:26.260 --> 00:45:29.710 Mutta OK se se oli nyt vähän niinku perusteluna pohjustuksena sillä, että 659 00:45:29.710 --> 00:45:33.440 miksi ylipäätään on forza, mutta rakenne on keksitty, mutta nyt me käytetään 660 00:45:33.440 --> 00:45:38.240 tätä for rakennetta sen takia, että tässä for rakenteen avulla me päästään 661 00:45:38.240 --> 00:45:43.470 käsittelemään asiaa sillä tavalla, että. 662 00:45:43.470 --> 00:45:45.870 Me tiedetään, että missä kohtaa me ollaan menossa. 663 00:45:45.870 --> 00:45:50.280 Sen takia me alustetaan tämmöinen i muuttuja tänne, joka ensinnäkin 664 00:45:50.280 --> 00:45:55.660 selvittää selvittää meille että että tota. 665 00:45:55.660 --> 00:45:59.420 Että kuinka monta riviä meillä on, itseämme voitaisi ottaa tuo niinku ihan omaan 666 00:45:59.420 --> 00:46:04.640 muuttujaan tänne tehdäänpä näin rivejä noin elikkä taulukko kepler nolla kertoo 667 00:46:04.640 --> 00:46:08.580 meille sen, että kuinka monta riviä tässä meillä taulukossa on ja pyörähdetään 668 00:46:08.580 --> 00:46:12.380 tässä silmukasta niin kauan kun taulukossa on rivejä. 669 00:46:12.380 --> 00:46:15.660 Eli kuinka monta henkilöä meillä siinä onkaan niin kauan tässä silmun kanssa pyöritään. 670 00:46:15.660 --> 00:46:22.070 No mitä me tässä silmukasta tehdään, niin me tulostetaan sieltä jokaiselta. 671 00:46:22.070 --> 00:46:27.680 Jokaiselta riviltä. Kumpikin sarake. 672 00:46:27.680 --> 00:46:30.980 Noin elikkä tulostetaan. 673 00:46:30.980 --> 00:46:37.200 Taulukko taulukon ihmeestä rivistä nollasi sarake ja oikeastaan ennen kuin 674 00:46:37.200 --> 00:46:41.440 tehdään yhtään tän enempää niin tulostetaan ja ja ja laitetaan nyt tää peli 675 00:46:41.440 --> 00:46:45.230 jo käyntiin ja katsotaan että miten tässä käypi. 676 00:46:45.230 --> 00:46:48.870 Eli nyt sieltä tulostuu vaan ne nollanneet sarakkeet eli tietenkin 677 00:46:48.870 --> 00:46:52.510 vain ne sukunimet, mutta sehän ei meille ihan riitä. 678 00:46:52.510 --> 00:46:57.540 Eli me halutaan tulostaa siihen vaikkapa välilyöntiperän ja sitten lisäksi myöskin 679 00:46:57.540 --> 00:47:05.630 se taulukon sarakkeen ykkösaamu ykkös ennen rivin ykkösrata. 680 00:47:05.630 --> 00:47:09.040 Sarake nyt menee ihan jo sanatkin tässä aivan sekaisin. 681 00:47:09.040 --> 00:47:12.790 Eli nyt sieltä saadaan saadaan ne kaikki nimet. 682 00:47:12.790 --> 00:47:17.370 Eli tää nyt meille tietää ja ja niinku informoi meitä koko ajan siinä niin että missä 683 00:47:17.370 --> 00:47:22.210 kohtaa me ollaan sitä taulukkoa menossa ikään kuin auta auttaa meitä läpi käymään sitä 684 00:47:22.210 --> 00:47:27.750 sitä taulukkoa nyt tässä meidän tilanteessa oikealla tavalla. 685 00:47:27.750 --> 00:47:29.820 OK. 686 00:47:29.820 --> 00:47:34.380 Ja nyt jos vielä hetkeksi pysähdytään tähän ja mietitään, että mitä tässä nyt on oikeastaan 687 00:47:34.380 --> 00:47:39.360 tapahtui, me voidaan laittaa tonne tonne ihan breakpointin ja katsoo katsoo että miten 688 00:47:39.360 --> 00:47:42.520 tää silmukka nyt siellä taustalla oikeastaan toimii. 689 00:47:42.520 --> 00:47:45.250 Meillä on nyt ohjelma tässä käynnissä ja. 690 00:47:45.250 --> 00:47:49.280 Ollaan siellä rivillä seitsemänkymmentäneljä ja mä heitän nyt tuossa yksi kerran steph 691 00:47:49.280 --> 00:47:52.870 over, niin me nähdään niin, että me saadaan sinne rivejä muuttujan arvoksi. 692 00:47:52.870 --> 00:47:57.070 Nyt se 3 eli nyt tää ohjelma tietää niin tää ohjelman tila on siinä siinä 693 00:47:57.070 --> 00:48:00.230 semmoisessa olotilassa, että siellä se rivejä muuttui. 694 00:48:00.230 --> 00:48:05.190 Ja nyt tietää tässä on 3 riviä ja sen takia kun tää lähtee arvosta nolla 695 00:48:05.190 --> 00:48:09.670 ja rivejä on kolmonen nyt tää silmukka muuttuu ja tässä ja silmukka tietää 696 00:48:09.670 --> 00:48:11.990 että kuinka monta kertaa tässä täytyy pyörähtää. 697 00:48:11.990 --> 00:48:13.980 No hyvä. 698 00:48:13.980 --> 00:48:18.100 Jos mä nyt laitan tuossa step into, niin me päästään toteuttamaan tätä silmukkaa. 699 00:48:18.100 --> 00:48:22.190 Eli nyt ollaan IN arvossa nolla ja sieltä nyt step powerilla. 700 00:48:22.190 --> 00:48:28.410 Sitten tulostan tuon asian eli siellä riviltä nolla sarakkeesta nolla tulostettiin 701 00:48:28.410 --> 00:48:32.180 se lakanen ja sitten riviltä nolla sarakkeesta. 702 00:48:32.180 --> 00:48:36.400 Yksi tulostettiin se antti jussi eli silmukan az seurauksena 703 00:48:36.400 --> 00:48:42.340 pellin alla siellä tapahtuu tulostus. 704 00:48:42.340 --> 00:48:47.040 Tommoinen tulostus eli taulukko nolla nolla plus taulukko nolla yks hyvä mennään 705 00:48:47.040 --> 00:48:53.840 eteenpäin eli stepintulla käydään kasvattamassa muuttujan arvo im muuttuja saa 706 00:48:53.840 --> 00:48:57.320 arvon yksi kuten näemme täällä debugerissä on nyt yksi. 707 00:48:57.320 --> 00:49:03.540 No se on pienempää kuin 3 jotenka tätä silmukan toteutusta jatketaan ja mennäänpä stepin 708 00:49:03.540 --> 00:49:09.580 tulla tuohon kohtaan ja mä nyt step powerilla tulostan tämän taulukon. 709 00:49:09.580 --> 00:49:14.850 Seuraavan rivin ja katsotaan vaikka tuolta debug output hetkinen konsoleista, että 710 00:49:14.850 --> 00:49:20.080 mitä siellä nyt tulostanut siellä tulostus lappalainen ja palataan. 711 00:49:20.080 --> 00:49:24.400 Hetkinen nyt mun pitää palata frezza variables tuolta. 712 00:49:24.400 --> 00:49:27.120 OK eli eli tota on edelleen arvossa. 713 00:49:27.120 --> 00:49:30.600 Yksi ollaan rivillä käsiviisi ja silmukan seuraavaksi 714 00:49:30.600 --> 00:49:36.320 sanaa pelin alla tapahtuu seuraavaksi. 715 00:49:36.320 --> 00:49:41.380 Tommoinen tulostus eli taulukko 1,0 plus taulukko 1,1 716 00:49:41.380 --> 00:49:43.920 noin ja näin jatkettaisiin eteenpäin. 717 00:49:43.920 --> 00:49:47.740 Mä en nyt tuosta meidän ajan voittamiseksi aika nopeasti tän eteenpäin, eli se powerilla 718 00:49:47.740 --> 00:49:53.690 tulostetaan ne loputkin jutut ja kuni saavuttaa arvon 3 nyt nähdään niin että ion arvossa 719 00:49:53.690 --> 00:49:58.730 3 niin sehän ei ole pienempää kuin rivejä, jolloinka tän taulukon. 720 00:49:58.730 --> 00:50:04.010 Anteeksi silmu, kun silmukan suorittaminen päättyy siihen ja saavutetaan tää ohjelman viimeinen 721 00:50:04.010 --> 00:50:09.250 sulkurivi ja vielä kerran sitten poweria klikkaamalla niin tuota päästään. 722 00:50:09.250 --> 00:50:14.530 Takaisin sinne meininkiin ja ohjelman suoritus sitten sitten siinä päättyy. 723 00:50:14.530 --> 00:50:18.570 Noin eli 6 5 6 5 rivi on saavutettu ja peli on ohi 724 00:50:18.570 --> 00:50:21.350 eli laitan tuonne vielä sen viimeisen. 725 00:50:21.350 --> 00:50:23.570 Viimeisenkin tulostuksen. 726 00:50:23.570 --> 00:50:27.230 Eli tää tää silmukka rakennehan nyt meille toimii tasan niin 727 00:50:27.230 --> 00:50:30.390 kauan kun meillä on 2 kappaletta sarakkeita. 728 00:50:30.390 --> 00:50:32.430 Tässä meidän taulukossa. 729 00:50:32.430 --> 00:50:37.810 Eli jos me nyt oltaisiin sen verran sen verran tuota ikäviä tai tai muokattiin 730 00:50:37.810 --> 00:50:41.950 tätä meidän ohjelmaa siten niin että tää kaverit 2 olisikin sellainen niin 731 00:50:41.950 --> 00:50:45.000 että kaikki kaikki nimet ikään kuin laitetaan. 732 00:50:45.000 --> 00:50:49.240 Omiin sarakkeisiinsa tehdäänpä nyt kaverit 2 kakkonen siihen mä nyt otan. 733 00:50:49.240 --> 00:50:54.470 Otan tuossa ajan voittamiseksi. Vähän tuosta noin niin. 734 00:50:54.470 --> 00:50:59.270 Tolleen copypasteet mä teen evo kakkosen tähän ja. 735 00:50:59.270 --> 00:51:04.650 Evo kakkonen sinne ja tehdäänkin siihen 3 saraketta eli lakanen antti jussi 736 00:51:04.650 --> 00:51:08.010 mutta mulla ei valitettavasti toista niin meidän ole ollenkaan niin silloin 737 00:51:08.010 --> 00:51:10.510 tähän mun ikään kuin kakkossarjankkeeseen. 738 00:51:10.510 --> 00:51:14.990 Ehkä nyt sitten tulisi tyhjä merkkijono se nyt on vähän määrittelykysymys tai 739 00:51:14.990 --> 00:51:19.140 sopimuskysymys että mitä tommoisessa tilanteessa nyt sitten. 740 00:51:19.140 --> 00:51:21.860 Tonne laitettaisiin, mutta vesala nyt toinen nimi on niin 741 00:51:21.860 --> 00:51:24.260 laitetaan tuo tapaan niin sitten sinne. 742 00:51:24.260 --> 00:51:33.300 Kaverit 2 kaverit 2 DV kakkosen rivin yks sarake kakkosen sisällöksi noin. 743 00:51:33.300 --> 00:51:38.000 No nyt en jonnen toista nimeä tiedä, jotenka laitan laitetaanpa siihen nyt vaan sitten 744 00:51:38.000 --> 00:51:43.810 tyhjä tyhjä jono elikkä nyt tässä on meillä tilanne, että osa niistä kakkos kakkos sarakkeen 745 00:51:43.810 --> 00:51:46.960 soluista on tyhjiä ja sitten osalla on niitä nimiä siellä. 746 00:51:46.960 --> 00:51:51.580 Mutta mitä jos me nytten tulostettiin tämä tulosta taulukko 747 00:51:51.580 --> 00:51:54.770 oliohjelmaa käyttämällä tää kaverit. 748 00:51:54.770 --> 00:51:59.600 2 volyymi kakkonen noin? 749 00:51:59.600 --> 00:52:03.650 Ja nähdään niin, että eipä sieltä eipä sieltä se vesan 750 00:52:03.650 --> 00:52:05.900 toinen nimi nyt ollenkaan tullutkaan. 751 00:52:05.900 --> 00:52:10.640 Eli tää meidän tulosta taulukko nyt on ikään kuin hardcoreattu sillä tavalla niin että sieltä 752 00:52:10.640 --> 00:52:15.160 tulostuu tasan ja vain ainoastaan se ensimmäinen sarake ja toinen sarake. 753 00:52:15.160 --> 00:52:18.200 No OK, nyt voisi joku ajatella näitä lisätään tänne, nyt 754 00:52:18.200 --> 00:52:24.030 sitten lisätään tänne nytten taulukko. Taulukko. 755 00:52:24.030 --> 00:52:27.990 I, kakkonen niin saadaan sieltä se seuraavakin sarake esille. 756 00:52:27.990 --> 00:52:29.950 No mitäs tää uikuttaa täällä tuolla? 757 00:52:29.950 --> 00:52:35.050 Mulla ylimääräinen sulku taataan se pois ja laitan sulkeutua OK ei ainakaan käännösvirheitä, 758 00:52:35.050 --> 00:52:41.530 siitä tulee ohjelma käyntiin mutta indeksi out right out of friends blaa blaa blaa eli kun 759 00:52:41.530 --> 00:52:45.970 me oltiin tätä ensimmäistä taulukkoa tulostamassa niin siinähän meillä nyt ei sitten ollutkaan 760 00:52:45.970 --> 00:52:51.810 kuinka 3 riviä ja 2 saraketta jotenkaan emme me voi voi sitä aliohjelma tällä tavalla ******** 761 00:52:51.810 --> 00:52:55.730 eli palataan nyt takaisinpäin controlz alla. 762 00:52:55.730 --> 00:52:59.050 Ja mietitään, että miten me saataisiin tehtyä tää silleen, että olipa siinä meidän 763 00:52:59.050 --> 00:53:05.330 taulukossa niin monta saraketta kuin vain on, niin kaikki ne tulosteettaisiin 764 00:53:05.330 --> 00:53:10.720 ja tehdään sitä varten hieman parempi versio tästä. 765 00:53:10.720 --> 00:53:17.750 Aliohjelmasta? Pikkuhetki. 766 00:53:17.750 --> 00:53:21.250 Tehdään sille ihan oma aliohjelma, niin nähdään vähän niinku 767 00:53:21.250 --> 00:53:23.500 se kehitys kehitys tuohon edelliseen tulosta. 768 00:53:23.500 --> 00:53:34.590 Taulukko kakkonen. Se ottaa nytten merkkijono matriisin. 769 00:53:34.590 --> 00:53:38.620 Annetaan sille nimeksi taulukko ja ja nyt meillä olisi tietysti. 770 00:53:38.620 --> 00:53:41.480 Se on tulosta taulukko 2 noin. 771 00:53:41.480 --> 00:53:44.820 Tavoite, että ne kaikki mahdolliset sarakkeet oli niitä sitten 0, 1, 772 00:53:44.820 --> 00:53:48.140 2 tai miljoona saraketta niin kaikki tulo ostettaisiin. 773 00:53:48.140 --> 00:53:52.130 Hyvä tehdään pienet apumuuttojat tähän otetaan talteen, että kuinka monta riviä 774 00:53:52.130 --> 00:53:59.340 meillä on, sehän saatiin sillä taulukko nolla taulukko nolla otetaan myöskin tietoon, 775 00:53:59.340 --> 00:54:05.010 että kuinka monta saraketta meillä on saint sarakkeita. 776 00:54:05.010 --> 00:54:07.910 Ja tän jälkeen pohditaan ihan hetki, että mitäs me näillä 777 00:54:07.910 --> 00:54:10.510 tiedoilla nyt oikeastaan tehdään. 778 00:54:10.510 --> 00:54:13.950 Se mitä me näillä tiedoilla tehdään on se, että meidän täytyisi 779 00:54:13.950 --> 00:54:17.500 siitä taulukkoa käydä ikään kuin alaspäin. 780 00:54:17.500 --> 00:54:22.020 Jos tää on tämmöistä jonkunlaista ascii grafiikkaa yritän yritän niin meidän täytyisi 781 00:54:22.020 --> 00:54:34.860 käydä sitä taulukkoa ylhäältä alaspäin niin kauan kun meillä rivejä on. 782 00:54:34.860 --> 00:54:41.080 Niin kauan kuin rivejä on? Ja jokaisella rivillä. 783 00:54:41.080 --> 00:54:44.670 Käydä läpi jokainen sarake. 784 00:54:44.670 --> 00:54:48.370 Niin kauan kuin sarakkeita on? 785 00:54:48.370 --> 00:54:54.250 Eli tavallaan sinne oikealle päin sitten tota noin niin jokaisen rivin kohdalla. 786 00:54:54.250 --> 00:54:57.960 Miten tää onnistuu niin tässä me tarvitaan tämmöinen jekku kun. 787 00:54:57.960 --> 00:55:00.390 Kaksikertainen. 788 00:55:00.390 --> 00:55:05.150 Kaksinkertainen silmukka rakenne eli esimerkiksi forsell 789 00:55:05.150 --> 00:55:07.610 tän voi tehdä vwillakin, mutta ei. 790 00:55:07.610 --> 00:55:14.570 Ei kuitenkaan sillä for ezillä niin jokaisella rivillä käydään läpi joka ikinen sarake. 791 00:55:14.570 --> 00:55:16.550 Eli nyt tän tiedän. 792 00:55:16.550 --> 00:55:19.220 Tiedän niin että tää näyttää varmastikin hieman oudolta, mutta 793 00:55:19.220 --> 00:55:21.570 meillä on tässä 2 sisäkkäisten for silmukkaa. 794 00:55:21.570 --> 00:55:25.720 Ensimmäinen niistä pitää huolen siitä, että tää muuttuja. 795 00:55:25.720 --> 00:55:30.260 Käy läpi kaikki rivit ja sitten sisempi silmukka käy 796 00:55:30.260 --> 00:55:33.210 muuttujan avulla läpi kaikki sarakkeet. 797 00:55:33.210 --> 00:55:40.560 OK no mitä me nyt tällä tehdään niin me halutaan sieltä tulostaa jokaiselta riviltä. 798 00:55:40.560 --> 00:55:46.900 Jokaiselta riviltä eli taulukon inneelta riviltä joka ikinen sarake eli elikkä 799 00:55:46.900 --> 00:55:52.890 varmasti nyt vähän semmoisen kryptisen näköinen rivi, mutta taulukko i, tällä 800 00:55:52.890 --> 00:55:56.220 tavalla voidaan jokaikinen alkio sieltä tulostaa. 801 00:55:56.220 --> 00:55:58.360 Laitetaanpa tässä kohtaa ohjelma käyntiin. 802 00:55:58.360 --> 00:56:08.530 Laitan tuonne vielä yksi yksi tulostuksen. 803 00:56:08.530 --> 00:56:14.130 Haluamme kuitenkaan. Kiinni tulostaa. 804 00:56:14.130 --> 00:56:19.080 Kaikki nimet ei pelkästään ensimmäistä etunimeä. 805 00:56:19.080 --> 00:56:21.280 Noin. 806 00:56:21.280 --> 00:56:24.970 Niin nähdään tuolla konsoli ikkunassa sitten että missä mennään. 807 00:56:24.970 --> 00:56:30.230 OK, mutta nyt me saatiin oikeastaan sama tilanne tässä kuin mitä meillä siinä. 808 00:56:30.230 --> 00:56:34.910 Tota noin niin for its silmukasta tehtiin ja sinänsä nyt tilanne ei ole kovin kummoinen eli siellä 809 00:56:34.910 --> 00:56:40.090 on kukin alkio omalla rivillään ja perässä on Ja tuolla kaiken lisäksi tuommoinen ruma tyhjä rivi 810 00:56:40.090 --> 00:56:44.170 kun antti jussin kohdalla ei sitä toista niin mä siellä ollutkaan. 811 00:56:44.170 --> 00:56:48.900 Eli tää ei nyt ihan vielä meille auttanut auttanut tässä etenemään, mutta entä jos 812 00:56:48.900 --> 00:56:54.500 me teemmekin niin että otamme tän lainin tästä pois ja tulostamme vaan konsoli aina 813 00:56:54.500 --> 00:56:58.760 sen allekin ja katsotaan mikä lopputulema tässä nyt olisi. 814 00:56:58.760 --> 00:57:02.710 No oho lopputulema on se, että kaikki tulee peräjälkeen eli tuohon kohtaan 815 00:57:02.710 --> 00:57:06.460 pitäisi laittaa breikki tuohon kohtaan pitäisi laittaa breikki ja tietysti 816 00:57:06.460 --> 00:57:11.040 jonnekin perään Vielä, mutta nythän me tiedetään niin, että kun me on tämä 817 00:57:11.040 --> 00:57:18.250 silmukka käyty läpi te niin juuri tuossa kohtaa. 818 00:57:18.250 --> 00:57:22.540 Olemme käyneet läpi yksi rivin. Kaikki sarakkeet. 819 00:57:22.540 --> 00:57:26.440 Ja näin ollen olemme valmiina laittamaan rivinvaihdon eli sanoman konsolipiste 820 00:57:26.440 --> 00:57:32.220 fridolin, mikä tulostaa pelkästään rivinvaihdon eikä mitään muuta. 821 00:57:32.220 --> 00:57:36.320 No nyt meillä on vielä siinä noin kauneusvirhe, että että sinne voisi laittaa tietysti 822 00:57:36.320 --> 00:57:43.260 aina solun tai alkion perään yksi välilyönnin niin tulee noi. 823 00:57:43.260 --> 00:57:47.260 Nimet sitten erilleen välilyönnillä erotettuina niin laitetaan sinne yksi 824 00:57:47.260 --> 00:57:51.130 välilyöntiperän eli tämmöisen suht kovan työn jälkeen. 825 00:57:51.130 --> 00:57:56.060 Nyt saatiin saatiin sitten kaikki kaikki nimet nyt omille riveille ja nythän meillä tässä 826 00:57:56.060 --> 00:58:01.290 voisi olla olla tietysti se tilanne, että tää taulukko voisi olla kuinka pitkä vaan sekä 827 00:58:01.290 --> 00:58:07.040 rivissä suunnassa, mutta myöskin sarakeuunnassa kuinka kuinka suuri vaan ja tää tulostaulukko 828 00:58:07.040 --> 00:58:10.820 kakkonen pitäisi huolta siitä että kaikki rivit ja kaikki sarakkeet tulee käytyä eli 829 00:58:10.820 --> 00:58:15.230 siinä mielessä suhteellisen lyhyt koodi. Ja jos tää nyt. 830 00:58:15.230 --> 00:58:17.350 Joku ei näistä soluista tykkää. 831 00:58:17.350 --> 00:58:20.410 Suosittele niitä käyttämään, mutta että tuolla tavalla niitä voisi vielä vielä 832 00:58:20.410 --> 00:58:25.190 jopa tuosta vähän karsia ja saisi saisi koodia lyhkäisiäisemmaksi. 833 00:58:25.190 --> 00:58:28.770 En suosittele jää hetkinen. 834 00:58:28.770 --> 00:58:32.490 Enpäs muuten otanpa otanpa takaisin sanani elikkä kyllä siinä 835 00:58:32.490 --> 00:58:39.260 ne sulut itse asiassa tarvitaan koska toi. Friteline tosissaan. 836 00:58:39.260 --> 00:58:42.460 Joo elikkä tämähän itse asiassa meneekin muuten tonne vasempaan reunaan. 837 00:58:42.460 --> 00:58:46.240 Nythän sen tajusinkin, eli tuosta jos uudelleen muotoillaan tämä, niin 838 00:58:46.240 --> 00:58:48.660 tähän ei itse asiassa mennytkään ihan niin niin helposti. 839 00:58:48.660 --> 00:58:51.780 Antaapa niitten sulkuja ollut. No niin. 840 00:58:51.780 --> 00:58:53.680 Hyvä. 841 00:58:53.680 --> 00:58:57.140 Siinä ollaan käytetty nytten i muuttujaa ilmaisemaan rivejä 842 00:58:57.140 --> 00:58:59.860 ja muuttujaa ilmaisemaan saraketta. Tää on semmoinen aika. 843 00:58:59.860 --> 00:59:05.800 Tyypillinen tapa näiden matriisien tapauksessa toimia ohjelmoijat monesti haluavat ilmaista 844 00:59:05.800 --> 00:59:09.960 nimenomaan sitä rivi indeksiä tällä i, llä ja sarake indeksiä jilla. 845 00:59:09.960 --> 00:59:14.130 Joskus voi olla mielekästä esimerkiksi pelien tapauksessa käyttää riviindeksinä 846 00:59:14.130 --> 00:59:19.290 tä ja sitten sarake indeksin x koska koordinaatti kasvaa. 847 00:59:19.290 --> 00:59:22.750 Tavallaan ylös alas suunnassa ja sitten vastaavasti vaakasuunnassa, 848 00:59:22.750 --> 00:59:29.930 mutta antaa nyt niitten olla tuolleen ja j. 849 00:59:29.930 --> 00:59:33.360 Ja kello näyttää 11 14. Me voitaisiin. 850 00:59:33.360 --> 00:59:48.460 Pieni hetki. Mä tarkistan tuosta. 851 00:59:48.460 --> 00:59:51.120 Joo elikkä me voitaisiin katsoa vähän nyt sitten seuraavaksi, että 852 00:59:51.120 --> 00:59:55.420 miten näitä matriiseja nyt loppujen lopuksi tuolla. 853 00:59:55.420 --> 00:59:59.420 Juttelin puolella hyödynnetään, eli tässähän nyt tietysti tää esimerkki on tämmöinen, 854 00:59:59.420 --> 01:00:04.860 hyvin synteettinen ja te voisi sanoa jopa teennäinen, mutta että siellä jypin järjestelmissä 855 01:00:04.860 --> 01:00:09.760 niin niin tuolla matriisilla on aika isokin isokin merkitys niinku tuolla pelimaailmassa 856 01:00:09.760 --> 01:00:16.760 tietysti muutenkin kun. Kun tuota tehdään tehdään 2 d. 857 01:00:16.760 --> 01:00:21.290 Maailmoja missä liikutaan ylösalas ja sivuille suunnassa, niin tietysti meillä 858 01:00:21.290 --> 01:00:25.170 on aina aina nää ja komponentit, eli voidaan ajatella niin että semmoiset 859 01:00:25.170 --> 01:00:28.690 matriisit ovat varsin keskeisessä roolissa. 860 01:00:28.690 --> 01:00:32.510 Ja lähdetään nyt tämmöistä pientä tasohyppelypeliä. 861 01:00:32.510 --> 01:00:37.190 Tai no pientä peliä kuitenkin tähän hahmottelemaan ja ehkä mä voisin nyt näyttää näyttää 862 01:00:37.190 --> 01:00:41.150 tuossa, että minkälaista minkälaista oli niin kun ajatellut tähän tehdä. 863 01:00:41.150 --> 01:00:52.210 Mä voisin sen valmiin pelimallin tuohon ottaa ihan pieni hetki. 864 01:00:52.210 --> 01:00:57.980 Olikohan se tuossa joo. Tää on tarkoituksena nyt olisi vähän. 865 01:00:57.980 --> 01:01:02.230 Vähän demonstroida sitä, että minkälaisia? 866 01:01:02.230 --> 01:01:04.970 Pelillisiä ominaisuuksia tuonne voi tehdä, mutta ehkä sitten 867 01:01:04.970 --> 01:01:10.090 tuoda myöskin vähän kontekstia tähän itse. Kaksiulotteisen. 868 01:01:10.090 --> 01:01:19.260 Maailmaan jaha käännöt runo OK mikäs toi? Voi voi. 869 01:01:19.260 --> 01:01:25.980 Tässä siellä uikuttaa. 870 01:01:25.980 --> 01:01:32.600 Bild, selected products, another buildings in progress. 871 01:01:32.600 --> 01:01:38.960 Joo. Koitetaan. 872 01:01:38.960 --> 01:01:42.000 Eli tässä olisi tämmöinen pieni peli, jossa voi liikkua ja pelaaja 873 01:01:42.000 --> 01:01:46.720 voi heittää jotakin ja ja tota panokset. 874 01:01:46.720 --> 01:01:48.980 Voi voi tuhota noita pelaajia. 875 01:01:48.980 --> 01:01:52.900 Näköjään noi vihutkin tuolta voi innokkaasti sitten ampujilla sieltä menemään. 876 01:01:52.900 --> 01:01:56.380 Otetaan tuosta vähän isommaksi eli tässä mulla on pelaajahahmo joka voi liikkua 877 01:01:56.380 --> 01:02:01.200 ja näköjään sieltä ääniäkin tulee että ehkä että niitä nyt kuule, mutta sitten pelaaja 878 01:02:01.200 --> 01:02:06.510 voi näköjään aikamoisella sarjatulella laittaa menemään omia omia heitettäviä möhkäleitä 879 01:02:06.510 --> 01:02:09.560 sieltä ja jos mä nyt tästä sitten noita. 880 01:02:09.560 --> 01:02:13.350 Heitä noita möhkäleitä niin sitten noi vihut sieltä tuhoutuu. 881 01:02:13.350 --> 01:02:16.580 Eli, kuten huomaatte, että on tosi pelottava peli ja noi vihut ovat aika pelottavan 882 01:02:16.580 --> 01:02:19.630 näköisiä sen takia, että pelin nimi on pelottava peli. 883 01:02:19.630 --> 01:02:24.030 Tässä pystyy keräämään noita kappaleita ja näköjään jos riittävän monta kertaa on nuo vihut 884 01:02:24.030 --> 01:02:28.830 minuun osuvat, niin sitten peli päättyy siihen ja vihut jatkavat tuossa hieman elämäänsä 885 01:02:28.830 --> 01:02:33.090 vielä eteenpäin ja niillä näköjään vähän tommoista tekoälyn poikastaan siinä tehtynä, että 886 01:02:33.090 --> 01:02:35.930 ne osaavat tuossa tason päällä tulleen mukavasti liikkua. 887 01:02:35.930 --> 01:02:40.750 Eli tässä nytten vähän kokeillaan noita eri ominaisuuksia jypistä, mutta 888 01:02:40.750 --> 01:02:44.480 sitten hyödynnetään myöskin noita kaksiulotteisia taulukoita. 889 01:02:44.480 --> 01:02:47.720 Niin koitetaan, että saadaanko tehtyä jotakin tuon tapaista ja 890 01:02:47.720 --> 01:02:51.020 ja lähdetään sinne hahmottelemaan pelottavaa peliä. 891 01:02:51.020 --> 01:02:52.870 Eli ensinnäkin niin. 892 01:02:52.870 --> 01:02:57.720 Lähdetään lähdetään silleen liikkeelle, että meillä voisi olla siellä. 893 01:02:57.720 --> 01:02:59.520 Siellä tota noin. 894 01:02:59.520 --> 01:03:03.310 Itse asiassa mä tein tän nyt väärään projektin malliin. 895 01:03:03.310 --> 01:03:07.130 Ehkä mä voisin, voisin tehdä sen loppujen lopuksi siihen tasohyppelymalliin. 896 01:03:07.130 --> 01:03:11.490 Minäpä teen nyt niin, että minä poistan tämän ihan delete painiketta painamalla. 897 01:03:11.490 --> 01:03:15.590 Poistan tämän projektin ja täällä on tämmöinen kun dit product folder niin se poistaa kaikki 898 01:03:15.590 --> 01:03:21.790 tiedostotkin mitä tuossa tuli tehtyä ja tehdään uusi at new product ja tasohyppelypeli senhän 899 01:03:21.790 --> 01:03:28.210 täältä jypistä valmiina löytyy, löytyy tämmöinen, siinä on pikkuisen valmista valmista koodia 900 01:03:28.210 --> 01:03:32.780 niin siinä mielessä helpottaa vähän sitä tekemistä. 901 01:03:32.780 --> 01:03:37.020 Noin ja se on aktivoitu eli täällä content kansion sisällä. 902 01:03:37.020 --> 01:03:41.160 Meillä on muutama valmis tiedosto eli siellä on kenttä maalin nuorisotähti. 903 01:03:41.160 --> 01:03:44.020 Jos me vaikkapa nyt tuota norsua katsotaan sieltä, niin silloin pelaajan 904 01:03:44.020 --> 01:03:48.500 kuva ja sitten tuommoisen kerättävien esineiden kuva. 905 01:03:48.500 --> 01:03:52.600 Mutta sitten tässä kenttä tiedostossa meillä on valmis tämmöinen kenttämatriisi 906 01:03:52.600 --> 01:03:57.280 ja jos mä nyt pikkuisen laitan tässä näitä muita tiedostoja kiinni, niin me 907 01:03:57.280 --> 01:04:00.960 päästään tuonne pelikoodin ja laitetaan se käyntiin. 908 01:04:00.960 --> 01:04:05.860 Niin me nähdään, että miten se kenttä matriisi sitten aiheuttaa meille tän ikään kuin tän näkyvän 909 01:04:05.860 --> 01:04:10.870 pelialueen tänne ja me päästään näitä peliala ja sitten täältä keräilemään. 910 01:04:10.870 --> 01:04:13.130 Ja nyt tätä matriisia muokkaamalla. 911 01:04:13.130 --> 01:04:15.770 Sitten me periaatteessa pystytään sitä kenttää oli jotakin 912 01:04:15.770 --> 01:04:17.640 tai näkyvää kenttää muokkaamaan. 913 01:04:17.640 --> 01:04:21.370 Jos mä nyt laittaisin tuonne vaikka pari tähteä lisää niin silloin niitä 914 01:04:21.370 --> 01:04:26.250 kerättäviä kapistuksia pitäisi siellä olla enemmän. 915 01:04:26.250 --> 01:04:29.890 Ja tätä matriisia nyt ei tietysti tai matriisin käsittelyä ei tarvitse itse tehdä. 916 01:04:29.890 --> 01:04:33.110 Se tehdään siellä jypin taustalla, mutta se semmoinen 917 01:04:33.110 --> 01:04:37.820 car matriisi siinä kuitenkin nyt on. 918 01:04:37.820 --> 01:04:40.000 Jostain syystä mä en pysty tätä. 919 01:04:40.000 --> 01:04:44.150 Tuolta pystyn pienentämään tuota paneelia. No niin. 920 01:04:44.150 --> 01:04:47.830 Mutta lähdetään nyt tekemään tähän peliin vähän sisältöä ja ja ja 921 01:04:47.830 --> 01:04:51.670 ja katsotaan mitä sieltä nyt ensimmäisenä tehtäisiin. 922 01:04:51.670 --> 01:05:03.250 Ehkä mä voisin nyt ihan aluksi. Aluksi tota noin niin. 923 01:05:03.250 --> 01:05:08.360 Mitähän mä olin tähän ajatellut jo 2. 924 01:05:08.360 --> 01:05:12.000 Tehdä sinne nyt vaikka ihan ekana ne kuvat lähdetään nyt vaikka tästä. 925 01:05:12.000 --> 01:05:14.980 Visuaalisesta puolesta liikkeelle eli visuaalisen puolen 926 01:05:14.980 --> 01:05:17.090 ominaisuudet ja kuvat laitetaan. 927 01:05:17.090 --> 01:05:19.840 Laitetaan tänne content kansioon. 928 01:05:19.840 --> 01:05:23.160 Ja mulla on nyt oli sinne valmiiksi. 929 01:05:23.160 --> 01:05:27.780 Tehtynä 1000 tunnin työn seurauksena tosi monta hienoa kuvaa, 930 01:05:27.780 --> 01:05:29.620 niin mä voisin ne kaikki nyt tänne raahata. 931 01:05:29.620 --> 01:05:33.640 Mä nyt raahaan ne tuolta resurssienhallinnasta. 932 01:05:33.640 --> 01:05:38.380 Noi tiedostot vaan tähän content kansioon päälle ja silloin tää raideri ilmoittaa 933 01:05:38.380 --> 01:05:42.020 että europ out more bla bla bla files niin sitten mä itse asiassa mä en halua 934 01:05:42.020 --> 01:05:44.380 niitä muuten muovata vaan mä haluan niin siihen lisätä. 935 01:05:44.380 --> 01:05:47.830 Mitenkäs muuten se lisääminen tapahtuu? Voi ei. 936 01:05:47.830 --> 01:05:53.550 Pitääkö mun copypastea ja tuolla resurssienhallinnassa katsotaan. 937 01:05:53.550 --> 01:05:56.630 Tää ei mennytkään nyt ihan niin yksinkertaisesti kun mä kuvittelin. 938 01:05:56.630 --> 01:05:59.600 Mun pitää varmaan sanoa että. 939 01:05:59.600 --> 01:06:04.830 Add existing item, niin sillä tavalla mä saan saan lisättyä tiedoston jo joka 940 01:06:04.830 --> 01:06:09.960 mulla jo tuolla mun järjestelmässä oon ja mä nyt laitan tuosta. 941 01:06:09.960 --> 01:06:13.520 Näytön piiloon, koska mä en nyt välitä näyttää kaikkia mun tiedostojani, 942 01:06:13.520 --> 01:06:17.610 mutta mä olen joka tapauksessa siinä nyt niitä tehnyt ja. 943 01:06:17.610 --> 01:06:20.950 Mä nyt haen tässä ne täällä mun tiedostojärjestelmässä. 944 01:06:20.950 --> 01:06:25.850 Klikkailen tuolta bla bla blaa esimerkit joo luento 4. 945 01:06:25.850 --> 01:06:27.740 13. 946 01:06:27.740 --> 01:06:33.080 Tuolta ja sitten content kansio ja valitsen nyt tässä vaan raahaamalla kaikki ne tiedostot 947 01:06:33.080 --> 01:06:37.250 jotka jotka haluan ehkä nyt voin laittaa tuosta näkyville elikkä tuossa mulla nyt on 948 01:06:37.250 --> 01:06:41.900 monta tiedostoa ja tota kenttää mä en vielä sinne ota mutta nää muut mitä mulla nyt 949 01:06:41.900 --> 01:06:46.590 on tehtynä siinä niin ne mä klikkaan tuosta näkyville. 950 01:06:46.590 --> 01:06:52.850 Tai tai lisää ne ja nyt ne sanoo sanoo toi raideri että Haluatko lisätä siirtää ja 951 01:06:52.850 --> 01:06:57.710 mä haluan nyt tota noin niin kopioida nämä tiedostot eli ne oli mulla jossain piirrettynä 952 01:06:57.710 --> 01:07:01.850 jo ison työn tuloksena jonnekin paikkaan siellä mun tietokoneella ja nyt mä kopioin 953 01:07:01.850 --> 01:07:06.540 ne tänne kontenttii eli tässä nyt sun täytyy olla sitten tarkka että kun sä kopioit 954 01:07:06.540 --> 01:07:11.330 ne tänne content kansioon niin siellä ne kopioversiot ovat nyt niitä joita käsitellään 955 01:07:11.330 --> 01:07:13.130 sitten siitä eteenpäin. 956 01:07:13.130 --> 01:07:17.480 Eli jos sä muokkaat sitä kuvaa tai teet siihen contentti tiedostoon jotain muutoksia. 957 01:07:17.480 --> 01:07:19.780 Niin sun pitää tehdä sen nimenomaan täällä content kansiossa. 958 01:07:19.780 --> 01:07:24.640 Hyvä no nyt ad. Ja sitten sitten sitten. 959 01:07:24.640 --> 01:07:28.370 Nyt mä katson että miten elikkä täällä on mulla. 960 01:07:28.370 --> 01:07:32.250 Nyt useampi nimi OK? 961 01:07:32.250 --> 01:07:37.640 Vitsi kun olisi ollut nyt vähän huonoa valmistautumista tässä elikkä laitetaan. 962 01:07:37.640 --> 01:07:43.290 Otetaan nuo naniitit se sieltä pois. 963 01:07:43.290 --> 01:07:45.130 Otetaan ne kuitenkin sieltä pois elikkä nyt. 964 01:07:45.130 --> 01:07:47.990 Mulla on täällä useampi tiedosto ja nää pitää vielä lisätä 965 01:07:47.990 --> 01:07:50.400 sinne kannettavien tiedostojen joukkoon. 966 01:07:50.400 --> 01:07:56.310 Sanomalla bild accopit output directory ja copy always elikkä vielä kerran valituille 967 01:07:56.310 --> 01:08:00.880 tiedostoille hiiren oikea properties ja sen jälkeen kopioitu output directory ja copy 968 01:08:00.880 --> 01:08:05.370 alves, niin sillä tavalla ne menee sinne myöskin sinne bin kansioon, jossa se käännettävä 969 01:08:05.370 --> 01:08:07.470 excel tiedosto sitten loppujen lopuksi on. 970 01:08:07.470 --> 01:08:10.180 Muuten tää peli ei toimi. 971 01:08:10.180 --> 01:08:12.300 Kenttämaakriisin oletuskoko. 972 01:08:12.300 --> 01:08:17.300 Siis sillä varmaan on jokin oletuskoko, mutta se voidaan määritellä sillä tavalla, 973 01:08:17.300 --> 01:08:23.490 että kun se peli pelitiedostotaa TXT kenttämaa kriisi sitten tehdään. 974 01:08:23.490 --> 01:08:30.000 Niin täällä pelikodissa sitten sanotaan noille peliruudun jokin koko ja sitten 975 01:08:30.000 --> 01:08:35.010 täällä dilemmaopin execute kohdassa sanotaan, että kuinka iso se. 976 01:08:35.010 --> 01:08:38.530 Ruudun niin sitten loppujen lopuksi on siinä meidän peli näkymässä ja 977 01:08:38.530 --> 01:08:42.420 sen seurauksena automaattisesti määrittyy myöskin tän. 978 01:08:42.420 --> 01:08:48.410 Levelin koko eli tän koko pelialueen reunojen sijainnit. 979 01:08:48.410 --> 01:08:54.970 Eli jos mä tekisin isomman tästä mun pelialueesta täällä TXT tiedostossa. 980 01:08:54.970 --> 01:08:57.890 Laittaisin sinne vaikka vähän enemmän tyhjää vielä tai enemmän näitä 981 01:08:57.890 --> 01:09:03.450 tasoja niin silloin tää execute koodi komento kyllä automaattisesti 982 01:09:03.450 --> 01:09:06.000 osaisi siitä pelistä tehdä sitten oikean kokoisen. 983 01:09:06.000 --> 01:09:09.990 Eli nyt se vaan niinku kasvaa tuonne ylöspäin että saa tehdä tästä vähän liian vaikea. 984 01:09:09.990 --> 01:09:13.030 Mä en pääse pääse mun mun tuota skilla. 985 01:09:13.030 --> 01:09:18.630 Varmaan tässä nyt nousemaan ylöspäin, mutta joo se niinku kasvaisi tuonne ylöspäin ja ikkunaan 986 01:09:18.630 --> 01:09:22.410 venyttämällä mä saisin sen myöskin näkymään tuonne, mutta tällä tavalla voi niinku tehdä 987 01:09:22.410 --> 01:09:25.850 sitten jos haluaa niin sellaisia pelejä jotka ikään kuin kasvaa. 988 01:09:25.850 --> 01:09:28.290 Ne ylöspäin ja pelaajien pitäisi vaikka pomppia sinne ylöspäin 989 01:09:28.290 --> 01:09:31.970 ilman että hän näkee koko kenttää oletuksena. 990 01:09:31.970 --> 01:09:35.970 Että silleen niitä semmoisia jumperpelejä me meillä monesti onkin 991 01:09:35.970 --> 01:09:39.270 tehty, missä pitää sinne ylöspäin päästä pomppimaan. 992 01:09:39.270 --> 01:09:42.630 Mutta mä poistan tuosta nyt muutaman rivin niin saadaan se saadaan se vähän 993 01:09:42.630 --> 01:09:46.410 pienemmäksi tehtyä, että silleen silleen toi execute toiminto tekee sen 994 01:09:46.410 --> 01:09:50.840 automaattisesti tämän kentän koon asettelun hyvä. 995 01:09:50.840 --> 01:09:54.160 No joo, mutta mulla oli nyt itse asiassa tehty vähän vähän hienompi 996 01:09:54.160 --> 01:09:57.860 kenttä sinne, niin minäpä otan nyt tän kenttäviestien auki ja mä 997 01:09:57.860 --> 01:10:03.470 vielä kerran avaan sen mun valmiiksi tehdyn. 998 01:10:03.470 --> 01:10:17.460 Tiedostoon. Meni hetki. 999 01:10:17.460 --> 01:10:24.680 Mä avaan sen nyt tuohon isoon studiokoodeja. 1000 01:10:24.680 --> 01:10:26.480 Noin no niin, elikkä siinä. 1001 01:10:26.480 --> 01:10:31.940 Mulla on kenttä TXT ja täällä on nyt ensinnäkin pelaajan paikka tai pelaajan aloituspisteverkot 1002 01:10:31.940 --> 01:10:36.740 tämmöisellä kirjaimella ja sitten mulla on muutama kerättävä esine tuolla tähtimerkinnoilla 1003 01:10:36.740 --> 01:10:42.180 kirjoitettuna ja sitten on tämmöisiä merkintöjä 5 4 3 palataan niihin kohta, mutta 1004 01:10:42.180 --> 01:10:44.630 ne ovat niitten vihujen sijainteja. 1005 01:10:44.630 --> 01:10:48.330 Ja sitten mulla on joka on maali eli nyt mä otan tän tästä kopiona ja vien sen 1006 01:10:48.330 --> 01:10:53.680 sinne luennon kenttätoimittaja tehdä ja päästen sen tähän sanomalla kontrollo control 1007 01:10:53.680 --> 01:10:59.460 v tai macilla command command v eli nytten se tuli paljastettua se tiedosto siihen 1008 01:10:59.460 --> 01:11:06.340 ja tallennetaan ja katsotaan että toimiiko tää. 1009 01:11:06.340 --> 01:11:10.120 Ja periaatteessa toimii, mutta mun. 1010 01:11:10.120 --> 01:11:14.670 Tasot ja pelaaja ei vielä näy siellä eli nyt mä muutin sitä pelaajan koodia. 1011 01:11:14.670 --> 01:11:19.080 Sehän oli siinä jotakin muuta siinä alku alkuperäisessä tekstitiedosto, mutta nyt mulla 1012 01:11:19.080 --> 01:11:23.440 on täällä, ja sitten nää tasot on t kirjaimella on merkitty eli nyt mun täytyy palata 1013 01:11:23.440 --> 01:11:28.750 sinne pelin puolelle ja sitten sanoa että minkälaisia nää. 1014 01:11:28.750 --> 01:11:30.810 Minkälaisia nää kirjaimet on? 1015 01:11:30.810 --> 01:11:33.750 Mihin niitä olioiden luontitoimintoja sitten kytketään? 1016 01:11:33.750 --> 01:11:38.550 Eli mä en nyt turhan tarkasti käy läpi että mitä tää teknisesti tarkoittaa tää dilemma hässäkkä 1017 01:11:38.550 --> 01:11:43.260 tässä, mutta tän avulla voidaan tämmöisiä kaksiulotteisia valmiita kenttiä. 1018 01:11:43.260 --> 01:11:48.550 Tiedostoja sitten käyttää siten, että siinä kenttä tiedostossa oleva tietty merkki 1019 01:11:48.550 --> 01:11:52.850 tarkoittaa jonkin tietyn aliohjelman kutsumista ja mulla siinä nyt ne merkinnät 1020 01:11:52.850 --> 01:11:58.050 tarkoitti pienet pienet teet tarkoitti niitä tasojen lisäämistä eli me ollaan täytyy 1021 01:11:58.050 --> 01:12:00.270 sitten tässä mun ohjelmassa olla tällainen. 1022 01:12:00.270 --> 01:12:07.310 Sä taso ja se löytyykin täältä ja tässä on 3 parametria, vektoripaikka korkeus ja nämä 1023 01:12:07.310 --> 01:12:11.980 ovat sitten tavallaan sieltä jpeg kirjaston puolelta tulevia vaatimuksia, että tämmöisellä 1024 01:12:11.980 --> 01:12:16.380 luonti metodilla täytyy olla paikallisissa korkeus eli sen sen avulla se voidaan laittaa 1025 01:12:16.380 --> 01:12:19.160 se palikka oikeaan sijaintiin ja oikean kokoiseksi. 1026 01:12:19.160 --> 01:12:21.520 No siinä tehdään nyt vaan perus fysiikka oli jo, laitetaan 1027 01:12:21.520 --> 01:12:25.380 se paikalleen ja ja tuota väriksi vihreä. 1028 01:12:25.380 --> 01:12:28.520 Ja sitten mulla oli se pelaaja lisääminen oli sillä b, llä ja tähden lisääminen 1029 01:12:28.520 --> 01:12:31.520 tähdellä ja maalikin siellä oli, mutta ei tehdä sitä vielä. 1030 01:12:31.520 --> 01:12:36.280 Laitetaan tuosta nytten peli käyntiin, katsotaan saadaanko se nyt lisätty elikkä nyt 1031 01:12:36.280 --> 01:12:40.370 se kenttä pitäisi näyttää siltä kuin mitä siinä meidän kenttä tiedostossa oli ja tää 1032 01:12:40.370 --> 01:12:45.370 kaiketi pitäisi olla sellainen, että pääsee oikeastikin liikkumaan. Taitaa päästä. 1033 01:12:45.370 --> 01:12:47.590 Tää on ehkä vähän vaikeampi kun se alkuperäinen noin. 1034 01:12:47.590 --> 01:12:50.650 No tuonne tuonne ei kyllä taida päästä vai pääseekö? 1035 01:12:50.650 --> 01:12:56.170 Ei tohon tarvitsee jonkun lisää rampin vielä millä päästään hyppäämään tuonne. 1036 01:12:56.170 --> 01:12:59.060 Tuonne tota ylös. 1037 01:12:59.060 --> 01:13:02.090 Onko jossain määritelty noiden kuvion koot tuonne contactkansioon 1038 01:13:02.090 --> 01:13:04.680 voi tuoda ja se on ihan hyvä pointti. 1039 01:13:04.680 --> 01:13:09.480 Eli nytten mä olen tässä määritellyt nää kuvat sillä tavalla, että vaikkapa tää taso. 1040 01:13:09.480 --> 01:13:12.340 BNG on tällainen neliön muotoinen. 1041 01:13:12.340 --> 01:13:17.420 Eli nythän on niinku tosi tärkeä huomata niin että tää mun ruudun koko on jotakin ja sitten mä 1042 01:13:17.420 --> 01:13:23.680 täällä execute sanon että paljonko sitä myöskin yksittäisen tiilen koko on leveydessä ja korkeudessa 1043 01:13:23.680 --> 01:13:29.810 ja huom nyt se on 40 40 eli eli kuvasuhteellataan yksi suhde yksi. 1044 01:13:29.810 --> 01:13:34.110 Ja sen takia tää on mun kuvan jonka mä tai tekstuurin jonka mä isken siihen 1045 01:13:34.110 --> 01:13:37.060 aina sille kullekin tasolle niin sen täytyy olla sitten. 1046 01:13:37.060 --> 01:13:39.520 Vastaavan kuvasuhteen muotoinen. 1047 01:13:39.520 --> 01:13:45.220 Eli jos me nyt tästä tekisin semmoisen venytetyn suorakaiteen niin toi sitten toi 1048 01:13:45.220 --> 01:13:49.130 execute kommentoi niinku tumppaa sen kuitenkin neliön muotoiseksi. 1049 01:13:49.130 --> 01:13:50.940 Eli siinä pitää olla sitten tarkka. 1050 01:13:50.940 --> 01:13:55.380 No se taso ei vielä tullut tekstuurit niin laitetaan se taso. 1051 01:13:55.380 --> 01:13:59.380 Image on load imageja siellä mulla nyt on se taso. 1052 01:13:59.380 --> 01:14:06.800 BNG niin laitetaan siihen lainausmerkkien sisään taso ilman vai pitikö se PNG 1053 01:14:06.800 --> 01:14:09.920 muuten laittaa se nyt mä en itse asiassa muista, no ei näköjään tarvinnut elikkä 1054 01:14:09.920 --> 01:14:13.520 ilman ankeita se menee eli tällä tavalla niistä ei sitten tule litistetty ja 1055 01:14:13.520 --> 01:14:17.160 niistä kuvista kun se kuvasuhde matchaa siihen. 1056 01:14:17.160 --> 01:14:19.860 Ehkä kannattaa ajatella niin, että tekee kaikista neliöitä. 1057 01:14:19.860 --> 01:14:24.580 Niin se on varmaan se kaikkein helpoin helpoin tapa edetä. 1058 01:14:24.580 --> 01:14:28.720 Ja ja ja ja ja mulla oli sille ukkelillekin muuten joku hieno tuossa. 1059 01:14:28.720 --> 01:14:33.400 Joo tää on tosi hieno ukkeli laitetaan laitetaan pelaajalle vähän parempi kuva 1060 01:14:33.400 --> 01:14:37.340 pelaajan kuva eli täällä mulla on pelaaja ykkösen image näköjään määritelty tuolta 1061 01:14:37.340 --> 01:14:42.440 muuttujan kautta eli mennään tuonne pelaaja yks kuva muuttujaan ja painon tuossa 1062 01:14:42.440 --> 01:14:47.760 12 niin mä pääsen hyppäämään suoraan sinne missä se pelaajan kuva on määritelty 1063 01:14:47.760 --> 01:14:52.740 ja laitetaan siihen nyt se ukkeli.png. 1064 01:14:52.740 --> 01:14:55.870 Se näköjään toimii ilman ilman PNG, tä ja PN kanssa. 1065 01:14:55.870 --> 01:14:58.080 Niin olkoon nyt sitten PN kanssa noin. 1066 01:14:58.080 --> 01:15:03.410 Nyt siellä on tosi hieno kuva, mutta nyt tästä päästään eteenpäin. 1067 01:15:03.410 --> 01:15:07.190 Meillä on pikkuisen vielä aikaa, niin ehkä me voitaisiin tähän nyt laittaa. 1068 01:15:07.190 --> 01:15:18.070 Laittaa vähän lisää ominaisuuksia. Eli eli. 1069 01:15:18.070 --> 01:15:20.210 Katson, että mitä me kerettäisiin tässä tekemään. 1070 01:15:20.210 --> 01:15:22.500 Ehkä me ei keretä tuota. 1071 01:15:22.500 --> 01:15:26.370 Mulla oli ajatuksena nyt tässä jatkaa tätä sillä tavalla niin että että tehdään 1072 01:15:26.370 --> 01:15:33.430 tuohon siihen tasoon nyt tai tähän kenttäkuvion viitatakseni, niin nyt nää vihut 1073 01:15:33.430 --> 01:15:36.550 sillä tavalla niin että ne liikkuvat täällä tason päällä. 1074 01:15:36.550 --> 01:15:41.060 Me tarvitaan siihen hieman, että semmoista hyvin alkeellista tekoälyä ja tämmöistä. 1075 01:15:41.060 --> 01:15:45.960 Reitti logiikkaa tai reitin kulku logiikkaa, mutta ehkä me jätetään kuitenkin se huomiselle, 1076 01:15:45.960 --> 01:15:49.580 koska on sen verran vähän aikaa tuossa niin ei ei mennä siihen. 1077 01:15:49.580 --> 01:15:51.580 Eli nyt mä kommentoin tämän projektin tässä. 1078 01:15:51.580 --> 01:15:53.570 Mulla on siellä useampi kuva. 1079 01:15:53.570 --> 01:15:58.760 Myöskin musiikkitiedostoja tai ääniefektit ja sitten tää kenttiin on muokattu 1080 01:15:58.760 --> 01:16:03.100 niin mä kommentoin tän tän sinne luennon 13 koodeihin ja itse asiassa tehdään 1081 01:16:03.100 --> 01:16:07.020 niin että päätellään tällä kertaa tää luento tähän jatketaan pelottavan pelin 1082 01:16:07.020 --> 01:16:10.520 tekemistä huomenna niin ei säilytetä teitä vielä tänään liikaa kiitoksia mukaan 1083 01:16:10.520 --> 01:16:13.880 alusta nähdään huomenna luonnolla 10 15 moikka.