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.