Moderneissa grafiikkakorteissa hyödynnetään myös samanlaista toimintamallia
|
|
- Siiri Helena Kinnunen
- 9 vuotta sitten
- Katselukertoja:
Transkriptio
1 1
2 Datan rinnakkaistamisessa siis eri prosessointiyksiköt suorittavat saman operaation annetulle datalle, joka pilkotaan prosessointiyksikköjen kesken. Pointti on siis se, että kyseessä ei ole tehtävien rinnakkaistaminen (kuten usein puhuttaessa rinnakkaisuudessa), vaan jokainen prosessointiyksikkö suorittaa saman koodin samanaikaisesti, jolloin datan käsittelyyn saadaan huomattava nopeuslisä. Varsinainen ohjelma voi siis olla yksisäikeinen ja saada silti huomattavan nopeuslisän. Moderneissa grafiikkakorteissa hyödynnetään myös samanlaista toimintamallia 2
3 3DNow!:n tuki on nykyään lähes loppunut -> ei välttämättä enää löydy tulevaisuuden suorittimista esim. SSE4.2 tuo operaatiot CRC32-summan laskemiseen. SSE4A on AMD:n oma laajennos ja ei ole saatavilla Intelin suorittimissa SSE:n käytössä on olennaista huomioida, että uusin päivitys ei välttämättä ratkaise kaikkia ongelmia. Ei siis kannata ajatella, että otetaan SSE4 käyttöön ja ongelma ratkeaa, koska kaikki SSE2:n jälkeen tulleet versiot ovat suurimmaksi osin käskylaajennoksia ja moni ongelma voi silti olla sellainen, että sen ratkaisemiseen ei tarvitse (tai edes pysty) käyttämään SSE tai SSE2:ta uudempaa tekniikkaa. AVX (Advanced Vector Extensions) on uusi tekniikka ja tulee korvaamaan nykyiset SSEtekniikat, eli SSE tekniikkana on kehityksen/yleistymisen puolesta enemmänkin kallistumassa ehtoopuolelle. AVX:ssä on kuitenki tuki vanhoille SSE-operaatioille, jota toimivat AVX:n rekisterien alemmassa 128 bitissä. AVX Vaatii suhteellisen uuden käyttöjärjestelmän toimiakseen, esim. Windows 7 SP1. AVX:n tarjoama uusi ohjelmointitapa mahdollistaa mm. kahdelle rekisterille tehtävän operaation tuloksen tallentamisen kolmanteen rekisteriin, mikä ei ole ollut aiemmissa tekniikoissa mahdollista. Etuna tässä on, että operaation tulos ei ylikirjoita toisen parametri rekisterin alkuarvoa, kuten aiemmissa tekniikoissa tapahtuu (esim. ennen a = a+b, mutta uudessa c = a+b). 3
4 Vaikea löytää mitään kunnollista mainospuhetta, koska tekniikka (SIMD/SSE) jo tavallaan mainostaa itse itseään Erityistä hyötyä on kuitenkin mahdollista saada sovelluksissa, jotka käsittelevät suuria datamääriä. Yksittäisten lukujen tapauksessa SSE:n käyttö ei maksa vaivaa, koska tekniikan ajatuksena on nimenomaan ladata paljon dataa ja tehdä sille operaatioita Ohjelman nopeutumiseen SSE:n avulla vaikuttaa tietenkin myös moni muu tekijä, esimerkiksi miten ohjelma on yleisesti ottaen rakennettu ja millainen algoritmi on kyseessä Sovelluskohteet on otettu Intelin näkemyksen perusteella. Näissä kaikissa on nähtävissä samankaltaisuus siinä mielessä, että tiettyä operaatiota tehdään isolle datajoukolle. 4
5 Tässä siis joitain esimerkkejä, joissa on käytetty SSE-optimointeja Peleissä yleisesti, mutta tässä esimerkkinä Doom3, koska sen lähdekoodit ovat saatavilla ja niistä näkee, että esim. vektori- ja matriisilaskuissa sekä äänen prosessoinnissa on käytetty SSE:tä MS:n DirectX/Direct3D tunnistaa ajonaikaisesti onko SSE:tä mahdollista käyttää Qt:ssa käytetään SSE:tä piirtorutiinien optimointiin ja ainakin on tehty tutkimusta merkkijono-operaatioiden nopeuttamisen osalta VLC-soittimessa SSE:tä käytetään ainakin puskurien kopioinnin nopeuttamiseen Yleisesti ottaen voidaan todeta, että SSE:tä käytetään paljon erilaisissa multimediasovelluksissa ja sovellusalueissa 5
6 MXCSR rekisteri sisältää tietoa liukulukuoperaatioista, mm. poikkeukset ja pyöristysten kontrollointi Jokaista SSE:n rekisteriä (XMMn) voi käsitellä erikseen 32 bittiset luvut pakataan 128 bittiseen rekisteriin omiin lokeroihinsa. Kaikkien neljän skalaarin käsittely tapahtuu PS-päätteisillä käskyillä (Packed Scalar) SSE:ssä on myös käskyjä (SS-päätteiset Single Scalar), joilla voidaan käsitellä yksittäisiä skalaareja. Tällöin käsitellään XMMn-rekisterin 32 alinta bittiä ja operaatio ei vaikuta kolmeen ylempään skalaariin. 6
7 SSE2:n tuomissa käskyissä rekisteri voi sisältää 2 64bit kokonaislukua, 4 32bit kokonaislukua, 8 16bit kokonaislukua, 16 8bit kokonaislukua tai 2 64bit liukulukua. SSE:n tuoma tuki 32bit liukuluvuille on toki edelleen voimassa. Kaikille datatyypeille (kokonaisluku/liukuluku) on omat erilliset käskynsä. SSE2:n myötä päästiin eroon SSE:n ja MMX:n sekakäytöstä. Myöhemmät SSE-versiot eivät tuoneet muuta, kuin joukon uusia käskyjä, joten SSE2:n esittelemä datankäsittelymalli on edelleen voimassa. Loppukommenttina mainitaan, että SSE tarvitsee tuen käyttöjärjestelmältä. Tuki vaaditaan, jotta prosessorin tila osataan tallentaa oikein esimerkiksi ohjelmasta toiseen siirryttäessä, millä vältetään mm. datan korruptoituminen ja hukkuminen. Käytännössä tuki SSE:lle on kaikissa moderneissa käyttöjärjestelmissä, mutta esimerkiksi aiemmin mainitun AVX:n tapauksessa tuki on vasta Windows 7 SP1:stä alkaen. 7
8 Assemblyllä ohjelmoidessa voi lähdemateriaaliksi ottaa esimerkiksi Intelin SSE-speksin, jossa kaikki käskyt on kerrottu. Ongelmana kuitenkin on, että esim. visual studio ei salli inline assemblyn käyttöä 64bit ohjelmissa. Suositellumpi tapa on käyttää kääntäjän intrinsic-funktioita, jotka on yleensä kuvattu kääntäjän dokumentaatiossa. Ongelmana voi kuitenkin olla eroavaisuudet eri kääntäjien välillä. Kääntäjän vektorointitoiminnoilla vältytään itse kirjoittamasta SSE-koodia. Ajatuksena on, että kääntäjä pyrkii tuottamaan tavallisesta koodista SIMD-periaatteita noudattavaa koodia. Vektorointitoiminnon saa moderneista kääntäjistä käyttöön tietyillä vivuilla, jotka on kuvattu kääntäjän dokumentaatiossa. Ongelma kuitenkin on, että lopputuloksen laatu on täysin kääntäjän päätettävissä ja erityisesti tässä on suuria eroja kääntäjien välillä. Intelin oma kääntäjä tekee useimmiten parasta jälkeä. Joka tapauksessa kääntäjän valmiilla toiminnoilla voi kuitenkin saada pientä nopeuslisää ohjelmaan. 8
9 Muuttujat näkyvät käyttäjälle ikään kuin unionina, eli 128bit muuttujan eri kohtiin on mahdollisuus päästä käsiksi. Tätä ei kuitenkaan suositella. Kääntäjän tarjoamat intrinsic-funktiot löytyvät parhaiten kääntäjän dokumentaatiosta Esimerkissä (_mm_mul_ps) ps tarkoittaa packed scalar, eli operaatio suoritetaan 128bit muuttujille, joihin on pakattu neljä 32bit liukulukua, ts. saadaan laskettua neljän floatin yhtäaikainen kertolasku Useat liukulukuja käsittelevistä intrinsic-funktioista on nimetty suoraan assemblykäskyjen perusteella, mutta tämä ei päde esim. joidenkin vertailufunktioiden osalta. Kokonaislukujen osalta assembly-käskyt eivät täysin vastaa intrinsic-funktioiden nimeämistä (esim. PADDD -> _mm_add_epi32) Tässäkin ohjelmointitavassa toimitaan hyvin lähellä laitteistotasoa, koska intrinsicfunktiot on mapattu suoraan vastaaviin assembly-käskyihin. Ohjelmointi muistuttaa aika paljon assembly-ohjelmointia, eli annetaan käsky ja operandit, jonka jälkeen saadaan tulos tiettyyn paikkaan. Lisäksi tarvitaan osaamista bittien pyörittelystä, koska monet käskyt ottavat myös bittimaskin, jonka perusteella asioita tehdään. Tästä tulee esimerkkiä myöhemmin. 9
10 Tässä siis yksinkertainen esimerkki kokonaislukutaulukon nollaamisesta. Ensimmäiseksi ihan tavallinen C++-toteutus vertailun vuoksi. Jälkimmäisessä SSE-toteutus, jossa ensimmäiseksi castataan uusi SSE-tyyppinen kokonaislukuosoitin alkuperäiseen int-taulukkoon Koska int on 32 bittinen ja SSE:n rekisterit ovat 128 bittisiä, voidaan silmukassa käsitellä neljä 32bit kokonaislukua samaan aikaan _mm_setzero_si128-funktio luo uuden m128i muuttujan, jonka kaikki komponentit ovat nollia. _mm_store_si128- funktio sijoittaa muuttujan taulukkoon buf-osoittimen määräämään paikkaan. 10
11 Tässä siis yksinkertainen esimerkki, miten pistetulo voidaan laskea yhdellä käskyllä - _mm_dp_ps. Vaatii siis SSE4.1-tuen. _mm_dp_ps on 32 bittisille liukuluvuille, _mm_dp_pd on 64 bittisille _mm_set_ps-käskyllä saadaan luotua uusi 128bit muuttuja, joka sisältää neljä 32bit liukulukua. Jos haluttaisiin luoda vektori, jonka kaikilla komponenteilla on sama arvo, voitaisiin käyttää _mm_set1_ps-käskyä. _mm_dp_ps:n viimeisenä parametrina oleva vakio on maski, joka kuvaa mitkä komponentit laskettavista vektoreista ovat mukana laskussa ja mihin komponentteihin laskun tulos sijoitetaan tulosvektorissa. Maskin bitit 0-3 kuvaavat mihin komponentteihin tulosvektorissa pistetulon arvo laitetaan (sama arvo sijoitetaan kaikkiin valittuihin) Bitit 4-7 kuvaavat mitkä komponentit lähdevektoreista ovat laskussa mukana. 0xE1 = , eli lähdevektoreista valitaan komponentit 2, 3 ja 4 laskettavaksi ja pistetulon tulos sijoitetaan tulosvektorin ensimmäiseen komponenttiin 11
12 AltiVec on siis PowerPC:n vastaava SIMD-tekniikka. AltiVec tuo bittistä rekisteriä ja tekniikka tukee kokonaislukujen (8-32bit) sekä 32bit liukulukujen laskemista. AltiVec:n RGB-tietotyyppi on erityinen tietotyyppi pikselien käsittelyyn. Yksi tietotyyppi sisältää 8 16bit pikseliä muodossa 1/5/5/5. Vastaavaa tietotyyppiä ei ole SSE:ssä. AltiVec:ssä ei voida siirtää dataa tavallisten CPU-rekisterien ja vektorirekisterien välillä, ts. kaikki näiden välillä liikuteltava data on kierrätettävä muistin kautta. SSE:ssä tällaista rajoitusta ei ole, mutta asia on myös x86:sta tuttu x87:n (FPU) käsittelyn osalta. Ohjelmoitaessa C/C++:lla AltiVec tarjoaa erityisen vector-avainsanan, jolla voidaan muodostaa helposti uusia vektorimuuttujia. Esim vector int i; luo uuden 128bit muuttujan, joka sisältää 4 32bit kokonaislukua. Vastaavaa mahdollisuutta ei ole SSE:ssä. Toisaalta vector-avainsanan käyttö aiheuttaa ongelmia STL:n vectorin kanssa, vaikka tähän tosin on esim. GCC:ssä olemassa kiertotie. Edelleen vector-avainsana mahdollistaa normaalien aritmeettisten ja binäärioperaatioiden tekemisen C/C++-koodissa, mikä on luonnollisesti mielekkäämpää ohjelmoijan kannalta. SSE ei tällaista toimintaa tue, joten aina on käytettävä kääntäjän intrinsic-funktioita. Lopussa on linkki eräässä yliopistossa tehtyyn tutkimukseen SSE:n ja AltiVec:n välillä lähinnä nopeuden osalta. Yhteenvedossa todetaan, että vaikka AltiVec on huomattavasti kypsempi ja ohjelmoijaystävällisempi, SSE on kuitenkin mennyt nopeudessa selkeästi ohi. 12
13 Tässä siis joitain huomioonotettavia asioita ja jopa haasteita SSE:n käytössä Luonnollisestikaan tekniikka ei sovellu kaikkeen mahdolliseen käyttöön. Esimerkiksi jonkin järjestelyalgoritmin toteuttaminen voi olla haastavaa, vaikka joitain toteutuksia näiltä osin on tehty. Kääntäjissä on eroja luonnollisesi tuotetun koodin laadun osalta (Intelin kääntäjä on yleensä paras), mutta myös kääntäjän tarjoaman tuen osalta. Esimerkiksi GCC:ssä on tavallisten SSE intrinsic-funktioiden lisäksi omat ja hieman erilaiset toteutukset SSE:n käyttöön, joten tällaisia toteutuksia käytettäessä tehdään helposti kääntäjäriippuvaista koodia. Tuotettu koodi on tietenkin x86/x64 riippuvaista, joten muille arkkitehtuureille joudutaan tekemään omat vastaavat toteutukset tai muut ratkaisut. Lisäksi on huomioitava, että kaikkia SSE-versioita ei ole välttämättä saatavilla kaikissa koneissa, joten tällaiseenkin tilanteeseen on varauduttava. Monet SSE:n käskyt vaativat, että käsiteltävä data on jaksotettu 16 tavun pätkiin. Yhtenä esimerkkinä tästä on tavallisen taulukon käsittely SSE:n avulla. Koska SSE lataa muistista käsiteltäväksi aina 16 tavua kerrallaan, on huolehdittava, että alkuperäisen taulukon koko menee tavumäärällisesti tasan 16:lla jaettuna. Tämä vaatimus voi luonnollisesti aiheuttaa lisätyötä, jos käsiteltävä data ei luonnostaan ole halutunlaisesti jaksotettua. Kaikissa SSE:n käskyissä tätä vaatimusta ei ole, mutta yleensä suoritus on nopeampaa, jos data on 16 tavun jaksoissa. SSE:n tehokas hyödyntäminen vaatii usein manuaalista työtä ja välttämättä koodin muuttaminen SSE-käskykannalle ei ole järin yksinkertaista, joten voi olla syytä miettiä, 13
14 maksaako optimointi vaivan. Kääntäjien vektorointiominaisuuksia kannattaa tietenkin hyödyntää, mutta tuloksen laadussa on suuria eroja kääntäjien välillä ja usein tulos ei kuitenkaan ole niin tehokas kuin ohjelmoijan kirjoittamana (ainakaan taitavan ohjelmoijan). Viimeisenä seikkana on liukulukulaskujen tarkkuuserot x87:n ja SSE:n välillä. Pointti on siinä, että x87 pitää liukulukulaskujen välitulokset 80 bittisinä, mutta SSE:n tarkin liukulukutarkkuus on 64 bittiä. Tästä voi aiheutua tarkkuuseroja tuloksissa SSEoptimointien jälkeen, millä voi olla merkitystä esimerkiksi jossain tieteellisessä laskennassa. 13
15 Tässä joitain hyödyllisiä linkkejä, jos aihe alkaa kiinnostamaan. Luonnollisesti Google tarjoaa lisää. 14
Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla
Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla ohjelmoida useita komponenteiltaan ja rakenteeltaan
LisätiedotTIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli Tietokoneen ja ohjelmiston rakenne Loogisilla piireillä ja komponenteilla rakennetaan prosessori ja muistit Prosessorin rakenne
LisätiedotTIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op. Assembly ja konekieli
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembly ja konekieli Tietokoneen ja ohjelmiston rakenne Loogisilla piireillä ja komponenteilla rakennetaan prosessori ja muistit Prosessorin rakenne
LisätiedotSulautettujen järjestelmien skaala on niin laaja, että on erittäin vaikea antaa yleispätevää kuvausta siitä millainen on sulautettu järjestelmä.
Sulautettujen järjestelmien skaala on niin laaja, että on erittäin vaikea antaa yleispätevää kuvausta siitä millainen on sulautettu järjestelmä. On arvioitu, että maailmassa on tällä hetkellä enemmän sulautettuja
LisätiedotOngelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten,
Ongelma(t): Miten tietokoneen komponentteja voi ohjata siten, että ne tekevät yhdessä jotakin järkevää? Voiko tietokonetta ohjata (ohjelmoida) siten, että se pystyy suorittamaan kaikki mahdolliset algoritmit?
LisätiedotIntel Pentium Pro -prosessori. tietokonearkkitehtuurit, syksy -96 Ari Rantanen
Intel Pentium Pro -prosessori tietokonearkkitehtuurit, syksy -96 Ari Rantanen Tarkasteltavat aiheet Katsaus Pentium Pro:n ominaisuuksiin Käskyn suoritus Pentium Pro:n liukuhihnalla Pentium Pro:n suorituskyky
LisätiedotRinnakkaistietokoneet luento S
Rinnakkaistietokoneet luento 5 521475S Silmukalliset ohjelmat Silmukat joissa ei ole riippuvuussyklejä voidaan vektoroida eli suorittaa silmukan vektorointi Jokainen yksittäinen käsky silmukan rungossa
LisätiedotYhtälöryhmät 1/6 Sisältö ESITIEDOT: yhtälöt
Yhtälöryhmät 1/6 Sisältö Yhtälöryhmä Yhtälöryhmässä on useita yhtälöitä ja yleensä myös useita tuntemattomia. Tavoitteena on löytää tuntemattomille sellaiset arvot, että kaikki yhtälöt toteutuvat samanaikaisesti.
LisätiedotConcurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo
Concurrency - Rinnakkaisuus Group: 9 Joni Laine Juho Vähätalo Sisällysluettelo 1. Johdanto... 3 2. C++ thread... 4 3. Python multiprocessing... 6 4. Java ExecutorService... 8 5. Yhteenveto... 9 6. Lähteet...
LisätiedotCUDA. Moniydinohjelmointi 17.4.2012 Mikko Honkonen
CUDA Moniydinohjelmointi 17.4.2012 Mikko Honkonen Yleisesti Compute Unified Device Architecture Ideana GPGPU eli grafiikkaprosessorin käyttö yleiseen laskentaan. Nvidian täysin suljetusti kehittämä. Vuoden
LisätiedotMatriisit ovat matlabin perustietotyyppejä. Yksinkertaisimmillaan voimme esitellä ja tallentaa 1x1 vektorin seuraavasti: >> a = 9.81 a = 9.
Python linkit: Python tutoriaali: http://docs.python.org/2/tutorial/ Numpy&Scipy ohjeet: http://docs.scipy.org/doc/ Matlabin alkeet (Pääasiassa Deni Seitzin tekstiä) Matriisit ovat matlabin perustietotyyppejä.
LisätiedotOhjelmointiharjoituksia Arduino-ympäristössä
Ohjelmointiharjoituksia Arduino-ympäristössä Yleistä Arduino-sovelluksen rakenne Syntaksi ja käytännöt Esimerkki ohjelman rakenteesta Muuttujat ja tietotyypit Tietotyypit Esimerkkejä tietotyypeistä Ehtolauseet
LisätiedotTiedon esitysmuodot. Luento 6 (verkkoluento 6) Lukujärjestelmät Kokonaisluvut, liukuluvut Merkit, merkkijonot Äänet, kuvat, muu tieto
Luento 6 (verkkoluento 6) Tiedon esitysmuodot Lukujärjestelmät Kokonaisluvut, liukuluvut Merkit, merkkijonot Äänet, kuvat, muu tieto Ohjelman esitysmuoto Rakenteellinen tieto 1 Tiedon tyypit Kommunikointi
LisätiedotLOAD R1, =2 Sijoitetaan rekisteriin R1 arvo 2. LOAD R1, 100
Tiedonsiirtokäskyt LOAD LOAD-käsky toimii jälkimmäisestä operandista ensimmäiseen. Ensimmäisen operandin pitää olla rekisteri, toinen voi olla rekisteri, vakio tai muistiosoite (myös muuttujat ovat muistiosoitteita).
LisätiedotRinnakkaisuuden hyväksikäyttö peleissä. Paula Kemppi
Rinnakkaisuuden hyväksikäyttö peleissä Paula Kemppi 24.4.2008 Esityksen rakenne Johdantoa Rinnakkaisuus Pelimoottorien rinnakkaisuuden mallit Funktionaalisen rinnakkaisuuden malli Rinnakkaisen tiedon malli
Lisätiedottään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla
2.5. YDIN-HASKELL 19 tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla kirjaimilla. Jos Γ ja ovat tyyppilausekkeita, niin Γ on tyyppilauseke. Nuoli kirjoitetaan koneella
LisätiedotSisällys. 16. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. Aritmetiikkaa toisin merkiten
Sisällys 16. Ohjelmoinnin tekniikkaa Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. For-lause lyhemmin. If-else-lause vaihtoehtoisesti
LisätiedotOhjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia.
Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-ympäristö Java-ohjelma ja ohjelmaluokka
Lisätiedot16. Ohjelmoinnin tekniikkaa 16.1
16. Ohjelmoinnin tekniikkaa 16.1 Sisällys Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. For-lause lyhemmin. If-else-lause vaihtoehtoisesti
LisätiedotOsoitin ja viittaus C++:ssa
Osoitin ja viittaus C++:ssa Osoitin yksinkertaiseen tietotyyppiin Osoitin on muuttuja, joka sisältää jonkin toisen samantyyppisen muuttujan osoitteen. Ohessa on esimerkkiohjelma, jossa määritellään kokonaislukumuuttuja
LisätiedotAlgoritmit 1. Luento 3 Ti Timo Männikkö
Algoritmit 1 Luento 3 Ti 17.1.2017 Timo Männikkö Luento 3 Algoritmin analysointi Rekursio Lomituslajittelu Aikavaativuus Tietorakenteet Pino Algoritmit 1 Kevät 2017 Luento 3 Ti 17.1.2017 2/27 Algoritmien
LisätiedotELM GROUP 04. Teemu Laakso Henrik Talarmo
ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................
LisätiedotTIES325 Tietokonejärjestelmä. Jani Kurhinen Jyväskylän yliopisto Tietotekniikan laitos
TIES325 Tietokonejärjestelmä Jani Kurhinen Jyväskylän yliopisto Tietotekniikan laitos Kevät 2008 Luku 1 Tietokone abstraktina yksikkönä Tietokoneen asbtratiotasoa sen muotoisena kuin me sen tällä hetkellä
LisätiedotLiukulukulaskenta. Pekka Hotokka
Liukulukulaskenta Pekka Hotokka pejuhoto@cc.jyu.fi 10.11.2004 Tiivistelmä Liukulukuja tarvitaan, kun joudutaan esittämään reaalilukuja tietokoneella. Niiden esittämistavasta johtuen syntyy laskennassa
Lisätiedot16. Ohjelmoinnin tekniikkaa 16.1
16. Ohjelmoinnin tekniikkaa 16.1 Sisällys For-lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. If-else-lause vaihtoehtoisesti
LisätiedotSisällys. 17. Ohjelmoinnin tekniikkaa. Aritmetiikkaa toisin merkiten. for-lause lyhemmin
Sisällys 17. Ohjelmoinnin tekniikkaa for-lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely ja alustaminen yhdellä lauseella. if-else-lause vaihtoehtoisesti
LisätiedotOngelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön?
Ongelma(t): Miten tietokoneen käyttöjärjestelmä toimii sisäisesti, jotta resurssit saadaan tehokkaaseen käyttöön? 2013-2014 Lasse Lensu 2 Systeemiohjelmat ovat tietokoneen laitteistoa lähellä olevia ohjelmia,
LisätiedotLuento 3 (verkkoluento 3) Ttk-91 konekielinen ohjelmointi. Ohjelman esitysmuoto Konekielinen ohjelmointi ttk-91:llä (Titokone, TitoTrainer)
Luento 3 (verkkoluento 3) Ttk-91 konekielinen ohjelmointi Ohjelman esitysmuoto Konekielinen ohjelmointi ttk-91:llä (Titokone, TitoTrainer) 1 Suorituksenaikainen suorittimen ja muistin sisältö muisti suoritin
LisätiedotJava-kielen perusteet
Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, literaalivakio, nimetty vakio Tiedon merkkipohjainen tulostaminen 1 Tunnus Java tunnus Java-kirjain Java-numero
LisätiedotJavan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi
1 Javan perusteet Ohjelmointi IPO-malli Java lähdekoodista suoritettavaksi ohjelmaksi Vakio Muuttuja Miten Javalla näytetään tietoa käyttäjälle, miten Javalla luetaan käyttäjän antama syöte Miten Javalla
LisätiedotAS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin
AS-0.1103 C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin Raimo Nikkilä Aalto-yliopiston sähkötekniikan korkeakoulu - Automaation tietotekniikan tutkimusryhmä 17. tammikuuta 2013
LisätiedotChapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen
Chapel TIE-20306 Ryhmä 91 Joonas Eloranta Lari Valtonen Johdanto Chapel on Amerikkalaisen Cray Inc. yrityksen kehittämä avoimen lähdekoodin ohjelmointikieli. Chapel on rinnakkainen ohjelmointikieli, joka
LisätiedotTeemun juustokakku Rekisterien, välimuistin, muistin, levymuistin ja magneettinauhan nopeudet suhteutettuna juuston hakuaikaan juustokakkua tehdessä?
Tietokonejärjestelmän rakenne ttk-91 ja sillä ohjelmointi 27.1.2011 Tietokone suoritin (CPU) väylä tai väylät laiteohjaimet muiden koneiden kanssa Ethernet, modeemi,... laitteiden kanssa Levy, DVD, CD,
LisätiedotPythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python
Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python 8. marraskuuta 2010 Ohjelmointi Perusteet Peruskäsitteitä Olio-ohjelmointi Pythonin alkeet Esittely Esimerkkejä Muuttujat
LisätiedotImageRecognition toteutus
ImageRecognition toteutus Simo Korkolainen 27 kesäkuuta 2016 Projektin tarkoituksena on tehdä ohjelma, joka opettaa neuroverkon tunnistamaan kuvia backpropagation-algoritmin avulla Neuroverkon opetuksessa
Lisätiedot815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 4 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten lauseisiin, lausekkeisiin ja aliohjelmiin liittyvät kysymykset. Tehtävä 1. Mitä
Lisätiedot4. Lausekielinen ohjelmointi 4.1
4. Lausekielinen ohjelmointi 4.1 Sisällys Konekieli, symbolinen konekieli ja lausekieli. Hyvä ohjelmointitapa. Lausekielestä konekieleksi: - Lähdekoodi, tekstitiedosto ja tekstieditorit. - Kääntäminen
LisätiedotAlgoritmit 2. Luento 10 To Timo Männikkö
Algoritmit 2 Luento 10 To 11.4.2019 Timo Männikkö Luento 10 Merkkitiedon tiivistäminen LZW-menetelmä Taulukointi Editointietäisyys Peruutusmenetelmä Osajoukon summa Algoritmit 2 Kevät 2019 Luento 10 To
LisätiedotTähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python
Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python 31. tammikuuta 2009 Ohjelmointi Perusteet Pythonin alkeet Esittely Esimerkkejä Muuttujat Peruskäsitteitä Käsittely
LisätiedotPRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER
PRINCIPLES OF PROGRAMMING LANGUAGES - DEBUGGER Group 16 Ville Laatu Henri Myllyoja - i SISÄLLYSLUETTELO 1. DEBUGGERI YLEISESTI... II 1.1 Debuggerin käyttämien... ii 1.2 Debuggerin käynnistäminen... ii
LisätiedotKombinatorisen logiikan laitteet
Kombinatorisen logiikan laitteet Kombinatorinen logiikka tarkoittaa logiikkaa, jossa signaali kulkee suoraan sisääntuloista ulostuloon Sekventiaalisessa logiikassa myös aiemmat syötteet vaikuttavat ulostuloon
LisätiedotTAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2
TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos TKT-3200 Tietokonetekniikka I Harjoitustyö 4: Cache, osa 2.. 2010 Ryhmä Nimi Op.num. 1 Valmistautuminen Cache-työn toisessa osassa
LisätiedotJava-kielen perusteet
Java-kielen perusteet Tunnus, varattu sana, kommentti Muuttuja, alkeistietotyyppi, merkkijono, Vakio Tiedon merkkipohjainen tulostaminen Ohjelmointi (ict1tx006) Tunnus (5.3) Javan tunnus Java-kirjain Java-numero
LisätiedotKertausluento luennoista 1-3 1
Kertausluento 1 (lu01, lu02, lu03) Tietokonejärjestelmän rakenne ttk-91 ja sillä ohjelmointi Järjestelmän eri tasot Laitteiston nopeus ttk-91 rakenne ja käskykantaarkkitehtuuri Konekielinen ohjelmointi
LisätiedotJouni Huotari OLAP-ohjetekstit kopioitu Microsoftin ohjatun OLAP-kuution teko-ohjeesta. Esimerkin kuvaus ja OLAP-määritelmä
OLAP-kuution teko Jouni Huotari OLAP-ohjetekstit kopioitu Microsoftin ohjatun OLAP-kuution teko-ohjeesta Esimerkin kuvaus ja OLAP-määritelmä Tavoitteena on luoda OLAP-kuutio Northwind-tietokannan tilaustiedoista
LisätiedotTIETOJEN TUONTI TIETOKANNASTA + PIVOT-TAULUKON JA OLAP-KUUTION TEKO
TIETOJEN TUONTI TIETOKANNASTA + PIVOT-TAULUKON JA OLAP-KUUTION TEKO JOUNI HUOTARI 2005-2010 OLAP-OHJETEKSTIT KOPIOITU MICROSOFTIN OHJATUN OLAP-KUUTION TEKO-OHJEESTA ESIMERKIN KUVAUS JA OLAP-MÄÄRITELMÄ
LisätiedotMatematiikan tukikurssi, kurssikerta 3
Matematiikan tukikurssi, kurssikerta 3 1 Epäyhtälöitä Aivan aluksi lienee syytä esittää luvun itseisarvon määritelmä: { x kun x 0 x = x kun x < 0 Siispä esimerkiksi 10 = 10 ja 10 = 10. Seuraavaksi listaus
LisätiedotAlgebra I, harjoitus 5,
Algebra I, harjoitus 5, 7.-8.10.2014. 1. 2 Osoita väitteet oikeiksi tai vääriksi. a) (R, ) on ryhmä, kun asetetaan a b = 2(a + b) aina, kun a, b R. (Tässä + on reaalilukujen tavallinen yhteenlasku.) b)
Lisätiedot811120P Diskreetit rakenteet
811120P Diskreetit rakenteet 2016-2017 2. Lukujen esittäminen ja aritmetiikka 2.1 Kantajärjestelmät ja lukujen esittäminen Käytettävät lukujoukot: Luonnolliset luvut IN = {0,1,2,3,... } Positiiviset kokonaisluvut
Lisätiedot58131 Tietorakenteet ja algoritmit (syksy 2015)
58131 Tietorakenteet ja algoritmit (syksy 2015) Harjoitus 2 (14. 18.9.2015) Huom. Sinun on tehtävä vähintään kaksi tehtävää, jotta voit jatkaa kurssilla. 1. Erään algoritmin suoritus vie 1 ms, kun syötteen
Lisätiedot1. Algoritmi 1.1 Sisällys Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. Muuttujat ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi. 1.2 Algoritmin määritelmä Ohjelmointi
LisätiedotHarjoitus 3 (3.4.2014)
Harjoitus 3 (3..) Tehtävä Olkoon kaaren paino c ij suurin sallittu korkeus tieosuudella (i, j). Etsitään reitti solmusta s solmuun t siten, että reitin suurin sallittu korkeus pienimmillään olisi mahdollisimman
Lisätiedot815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 3 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten muuttujiin liittyvät kysymykset. Tehtävä 1. Määritä muuttujien max_num, lista,
LisätiedotTyyppejä ja vähän muutakin. TIEA341 Funktio ohjelmointi 1 Syksy 2005
Tyyppejä ja vähän muutakin TIEA341 Funktio ohjelmointi 1 Syksy 2005 Viime luennolla... Haskellin alkeita pääasiassa Hello World!... ja muita tutunoloisia ohjelmia Haskellilla Haskellin voima on kuitenkin
LisätiedotMonipuolinen esimerkki
Monipuolinen esimerkki Lopuksi monipuolinen esimerkki, jossa ohjelmisto koostuu pääohjelmasta ja kahdesta aliohjelmasta, joista toinen on proseduuri ja toinen funktio. Funktio Sqrt(int n): int Sqrt(int
LisätiedotHarjoitus 3 (viikko 39)
Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja sisentää koodisi. Vältä liian pitkiä rivejä. Ohjelmointitehtävien
LisätiedotOhjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen
Ohjelmointitaito (ict1td002, 12 op) Kevät 2009 Raine Kauppinen raine.kauppinen@haaga-helia.fi 1. Java-ohjelmoinnin alkeita Tietokoneohjelma Java-kieli ja Eclipse-kehitysympäristö Java-ohjelma ja luokka
LisätiedotLuku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti
Luku 6 Dynaaminen ohjelmointi Dynaamisessa ohjelmoinnissa on ideana jakaa ongelman ratkaisu pienempiin osaongelmiin, jotka voidaan ratkaista toisistaan riippumattomasti. Jokaisen osaongelman ratkaisu tallennetaan
LisätiedotLumejärjestelmä Xen. Reino Miettinen
Lumejärjestelmä Xen Reino Miettinen Miksi lumepalvelin Jos jokaiselle sovellukselle tarvitaan oma palvelimensa, niin tämä johtaa helposti raudan hukkakäyttöön. Taloudellisempaa on rakentaa lumepalvelimista
Lisätiedotetunimi, sukunimi ja opiskelijanumero ja näillä
Sisällys 1. Algoritmi Algoritmin määritelmä. Aiheen pariin johdatteleva esimerkki. ja operaatiot (sijoitus, aritmetiikka ja vertailu). Algoritmista ohjelmaksi. 1.1 1.2 Algoritmin määritelmä Ohjelmointi
LisätiedotITKP102 Ohjelmointi 1 (6 op)
ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 7. huhtikuuta 2017 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille. Kirjoittamasi luokat, funktiot ja aliohjelmat
Lisätiedot7. Näytölle tulostaminen 7.1
7. Näytölle tulostaminen 7.1 Sisällys System.out.println- ja System.out.print-operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden muotoilua. 7.2 Tulostusoperaatiot System.out.println-operaatio
LisätiedotPerusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti
C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) (Erittäin) helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Ei selvää että main funktion pitikin
Lisätiedot7.4 Sormenjälkitekniikka
7.4 Sormenjälkitekniikka Tarkastellaan ensimmäisenä esimerkkinä pitkien merkkijonojen vertailua. Ongelma: Ajatellaan, että kaksi n-bittistä (n 1) tiedostoa x ja y sijaitsee eri tietokoneilla. Halutaan
Lisätiedot15. Ohjelmoinnin tekniikkaa 15.1
15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Lueteltu tyyppi enum. Override-annotaatio. Geneerinen ohjelmointi. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien
LisätiedotTaitaja semifinaali 2010, Iisalmi Jääkaapin ovihälytin
Taitaja semifinaali 2010, Iisalmi Jääkaapin ovihälytin Ohjelmointitehtävänä on laatia ohjelma jääkaapin ovihälyttimelle. Hälytin toimii 3 V litium paristolla ja se sijoitetaan jääkaapin sisälle. Hälyttimen
LisätiedotLuku 8. Aluekyselyt. 8.1 Summataulukko
Luku 8 Aluekyselyt Aluekysely on tiettyä taulukon väliä koskeva kysely. Tyypillisiä aluekyselyitä ovat, mikä on taulukon välin lukujen summa tai pienin luku välillä. Esimerkiksi seuraavassa taulukossa
LisätiedotLuento 1 Tietokonejärjestelmän rakenne
Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä Tietokonelaitteisto Oheislaitteet (peripheral or I/O devices) Tietokone (computer) 2 Tietokone
LisätiedotLuento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus
Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä Tietokonelaitteisto Oheislaitteet (peripheral or I/O devices) Tietokone (computer) 2 Tietokone
LisätiedotAlgoritmit 1. Luento 11 Ti Timo Männikkö
Algoritmit 1 Luento 11 Ti 14.2.2017 Timo Männikkö Luento 11 Algoritminen ongelmanratkaisu Osittaminen Lomituslajittelu Lomituslajittelun vaativuus Rekursioyhtälöt Pikalajittelu Algoritmit 1 Kevät 2017
LisätiedotLuento 1 Tietokonejärjestelmän rakenne
Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä Tietokonelaitteisto Oheislaitteet (peripheral or I/O devices) Tietokone (computer) 2 Luento
LisätiedotKertausluento 1 (lu01, lu02, lu03) Tietokonejärjestelmän rakenne ttk-91 ja sillä ohjelmointi
Kertausluento 1 (lu01, lu02, lu03) Tietokonejärjestelmän rakenne ttk-91 ja sillä ohjelmointi Järjestelmän eri tasot Laitteiston nopeus ttk-91 rakenne ja käskykantaarkkitehtuuri Konekielinen ohjelmointi
LisätiedotTietokoneen toiminta, Kevät Copyright Teemu Kerola Järjestelmän eri tasot Laitteiston nopeus
Kertausluento 1 (lu01, lu02, lu03) Tietokonejärjestelmän rakenne ttk-91 ja sillä ohjelmointi Järjestelmän eri tasot Laitteiston nopeus ttk-91 rakenne ja käskykantaarkkitehtuuri Konekielinen ohjelmointi
LisätiedotOhjelmoinnin peruskurssi Y1
Ohjelmoinnin peruskurssi Y1 CSE-A1111 21.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 21.9.2015 1 / 25 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 15.3.2010 T-106.1208 Ohjelmoinnin perusteet Y 15.3.2010 1 / 56 Tiedostoista: tietojen tallentaminen ohjelman suorituskertojen välillä Monissa sovelluksissa ohjelman
LisätiedotVALO-ohjelmat ja LTSP kouluissa. Elias Aarnio Innopark, AVO-hanke elias.aarnio@innopark.fi 040-8204614
VALO-ohjelmat ja LTSP kouluissa Elias Aarnio Innopark, AVO-hanke elias.aarnio@innopark.fi 040-8204614 Mikä ihmeen VALO? VALO = Vapaat ja avoimen lähdekoodin ohjelmat Kyse on siis Open Sourcesta eli avoimesta
LisätiedotLuento 1 Tietokonejärjestelmän rakenne. Järjestelmän eri tasot Laitteiston nopeus
Luento 1 Tietokonejärjestelmän rakenne Järjestelmän eri tasot Laitteiston nopeus 1 Tietokonejärjestelmä Käyttäjä Tietokonelaitteisto Oheislaitteet (peripheral or I/O devices) Tietokone (computer) 2 Tietokone
LisätiedotLuku 7. Verkkoalgoritmit. 7.1 Määritelmiä
Luku 7 Verkkoalgoritmit Verkot soveltuvat monenlaisten ohjelmointiongelmien mallintamiseen. Tyypillinen esimerkki verkosta on tieverkosto, jonka rakenne muistuttaa luonnostaan verkkoa. Joskus taas verkko
Lisätiedotn! k!(n k)! n = Binomikerroin voidaan laskea pelkästään yhteenlaskun avulla käyttäen allaolevia ns. palautuskaavoja.
IsoInt Tietokoneiden muisti koostuu yksittäisistä muistisanoista, jotka nykyaikaisissa koneissa ovat 64 bitin pituisia. Muistisanan koko asettaa teknisen rajoituksen sille, kuinka suuria lukuja tietokone
LisätiedotTietotyypit ja operaattorit
Tietotyypit ja operaattorit Luennossa tarkastellaan yksinkertaisten tietotyyppien int, double ja char muunnoksia tyypistä toiseen sekä esitellään uusia operaatioita. Numeeriset tietotyypit ja muunnos Merkkitieto
LisätiedotMatriiseista. Emmi Koljonen
Matriiseista Emmi Koljonen 3. lokakuuta 22 Usein meillä on monta systeemiä kuvaavaa muuttujaa ja voimme kirjoittaa niiden välille riippuvaisuuksia, esim. piirin silmukoihin voidaan soveltaa silmukkavirtayhtälöitä.
LisätiedotA B = (1, q, q 2 ) (2, 0, 2) = 2 2q q 2 = 0 q 2 = 1 q = ±1 A(±1) = (1, ±1, 1) A(1) A( 1) = (1, 1, 1) (1, 1, 1) = A( 1) A(1) A( 1) = 1
Mapu I Viikko 4 tehtävä malli Millä q:n arvoilla vektori A(q) (, q, q ) on kohtisuora vektorin B (, 0, ) kanssa? Ovatko A:n eri ratkaisut keskenään kohtisuoria? Jos eivät, määrää niiden välinen kulma!
LisätiedotHarjoitustyö: virtuaalikone
Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 1.4.2009 T-106.1208 Ohjelmoinnin perusteet Y 1.4.2009 1 / 56 Tentti Ensimmäinen tenttimahdollisuus on pe 8.5. klo 13:00 17:00 päärakennuksessa. Tämän jälkeen
LisätiedotTietokoneen rakenne: Harjoitustyö. Motorola MC68030 -prosessori
kevät 2004 TP02S-D Tietokoneen rakenne: Harjoitustyö Motorola MC68030 -prosessori Työn valvojat: Seppo Haltsonen Pasi Lankinen RAPORTTI 13.5.2004 Sisällysluettelo sivu Tiivistelmä... 1 Lohkokaavio... 2
LisätiedotOhjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.
Osoittimet Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan. Muistilohkon koko riippuu muuttujan tyypistä, eli kuinka suuria arvoja muuttujan
LisätiedotNumeeriset menetelmät
Numeeriset menetelmät Luento 2 To 8.9.2011 Timo Männikkö Numeeriset menetelmät Syksy 2011 Luento 2 To 8.9.2011 p. 1/33 p. 1/33 Lukujen tallennus Kiintoluvut (integer) tarkka esitys aritmeettiset operaatiot
Lisätiedot3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä
3 Lineaariset yhtälöryhmät ja Gaussin eliminointimenetelmä Lineaarinen m:n yhtälön yhtälöryhmä, jossa on n tuntematonta x 1,, x n on joukko yhtälöitä, jotka ovat muotoa a 11 x 1 + + a 1n x n = b 1 a 21
LisätiedotGraafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria
Graafit ja verkot Suuntamaton graafi: eli haaroja Joukko solmuja ja joukko järjestämättömiä solmupareja Suunnattu graafi: Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria Haaran päätesolmut:
LisätiedotDXL Library ja DXL-kielen olemus. Pekka Mäkinen Pekka.Makinen@softqa.fi SoftQA Oy http/www.softqa.fi/
DXL Library ja DXL-kielen olemus Pekka Mäkinen Pekka.Makinen@softqa.fi SoftQA Oy http/www.softqa.fi/ DOORS extension Language DXL on DOORSin laajennuskieli, jolla voidaan kehittää lisätoiminnallisuutta.
LisätiedotMATEMATIIKKA. Matematiikkaa pintakäsittelijöille. Ongelmanratkaisu. Isto Jokinen 2017
MATEMATIIKKA Matematiikkaa pintakäsittelijöille Ongelmanratkaisu Isto Jokinen 2017 SISÄLTÖ 1. Matemaattisten ongelmien ratkaisu laskukaavoilla 2. Tekijäyhtälöt 3. Laskukaavojen yhdistäminen 4. Yhtälöiden
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 2.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 2.3.2009 1 / 28 Puhelinluettelo, koodi def lue_puhelinnumerot(): print "Anna lisattavat nimet ja numerot." print
Lisätiedot2. Lisää Java-ohjelmoinnin alkeita. Muuttuja ja viittausmuuttuja (1/4) Muuttuja ja viittausmuuttuja (2/4)
2. Lisää Java-ohjelmoinnin alkeita Muuttuja ja viittausmuuttuja Vakio ja literaalivakio Sijoituslause Syötteen lukeminen ja Scanner-luokka 1 Muuttuja ja viittausmuuttuja (1/4) Edellä mainittiin, että String-tietotyyppi
LisätiedotTietorakenteet ja algoritmit
Tietorakenteet ja algoritmit Kurssin sisältö pääpiirteittäin Tarvittavat pohjatiedot Avainsanat Abstraktio Esimerkkiohjelman tehtäväkuvaus Abstraktion käyttö tehtävässä Abstrakti tietotyyppi Hyötyjä ADT:n
Lisätiedot4. Lausekielinen ohjelmointi 4.1
4. Lausekielinen ohjelmointi 4.1 Sisällys Konekieli, symbolinen konekieli ja lausekieli. Lausekielestä konekieleksi: - Lähdekoodi, tekstitiedosto ja tekstieditorit. - Kääntäminen ja tulkinta. - Kääntäminen,
Lisätiedot811312A Tietorakenteet ja algoritmit, , Harjoitus 3, Ratkaisu
811312A Tietorakenteet ja algoritmit, 2018-2019, Harjoitus 3, Ratkaisu Harjoituksessa käsitellään algoritmien aikakompleksisuutta. Tehtävä 3.1 Kuvitteelliset algoritmit A ja B lajittelevat syötteenään
LisätiedotSystem.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);
Mikäli tehtävissä on jotain epäselvää, laita sähköpostia vastuuopettajalle (jorma.laurikkala@uta.fi). Muista nimetä muuttujat hyvin sekä kommentoida ja sisentää koodisi. Ohjelmointitehtävien osalta palautetaan
LisätiedotAlgoritmit 1. Luento 1 Ti Timo Männikkö
Algoritmit 1 Luento 1 Ti 10.1.2017 Timo Männikkö Luento 1 Algoritmi Algoritmin toteutus Ongelman ratkaiseminen Algoritmin tehokkuus Algoritmin suoritusaika Algoritmin analysointi Algoritmit 1 Kevät 2017
LisätiedotLaitteistonläheinen ohjelmointi
Laitteistonläheinen ohjelmointi 4 op Luennoija: Pertti Lehtinen Luennot: Perjantai 12-14 TB104 Esitiedot: Mikroprosessorit Perusohjelmointikurssi Kurssin osat: luennot, harjoitustyö, tentti Materiaali:
LisätiedotSisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva
Sisällys 6. Muuttujat ja Java Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut. boolean- ja char-tyypit. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi
Lisätiedot