C:\MyTemp\ohj1\ohjdemot\k2012\demot\vastaukset\demo11\PP1\TokaPisin.cs 1 using System; 2 using System.Collections.Generic; 3 using System.

Koko: px
Aloita esitys sivulta:

Download "C:\MyTemp\ohj1\ohjdemot\k2012\demot\vastaukset\demo11\PP1\TokaPisin.cs 1 using System; 2 using System.Collections.Generic; 3 using System."

Transkriptio

1 C:\MyTemp\ohj1\ohjdemot\k2012\demot\vastaukset\demo11\PP1\TokaPisin.cs 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; /// <summary> 8 /// Etsitään toiseksi pisintä sanaa. 9 /// </summary> 10 public class TokaPisin 11 { 12 public static void Main(string[] args) 13 { 14 Console.WriteLine("Anna sanoja"); 15 List<string> sanat = new List<string>(); 16 String syote; 17 while (true) 18 { 19 syote = Console.ReadLine(); 20 if (syote == "") break; 21 sanat.add(syote); 22 } String tokapisin = EtsiToiseksiPisin(sanat); 25 } /// <summary> 28 /// Palauttaa listan toiseksi pisimmän alkion. 29 /// </summary> 30 /// <param name="sanat">lista sanoja</param> 31 /// <returns>toka pisin</returns> 32 /// <example> 33 /// <pre name="test"> 34 /// List<string> sanat = new List<string>() { "Antti", "Pekka", "Irmeli" }; 35 /// TokaPisin.EtsiToiseksiPisin(sanat) === "Antti"; 36 /// List<string> sanat2 = new List<string>() { "Irmeli", "Pekka", "Antti" }; 37 /// TokaPisin.EtsiToiseksiPisin(sanat2) === "Pekka"; 38 /// </pre> 39 /// </example> 40 public static string EtsiToiseksiPisin(List<string> sanat) 41 { 42 String pisin = sanat[0]; 43 String tokapisin = sanat[1]; 44 for (int i = 1; i < sanat.count; i++) 45 { 46 if (sanat[i].length > pisin.length) 47 { 48 tokapisin = pisin; 49 pisin = sanat[i]; 50 } 51 else if (sanat[i].length > tokapisin.length) 52 tokapisin = sanat[i]; 53 } 54 return tokapisin; 55 } 56 }

2 C:\MyTemp\ohj1\esimerkit\live\PP11\EkaJaVikaSana\Program.cs 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 /// <summary> 7 /// Etsitään ensimmäinen ja viimeinen sana. 8 /// </summary> 9 public class EkaVika 10 { 11 static void Main(string[] args) 12 { 13 String ekajavika = EkaJaVikaSana("Janne meni kauppaan ja osti maitoa."); 14 } /// <summary> 17 /// Palauttaa annetusta merkkijonosta ensimmäisen ja viimeisen sanan, 18 /// väliin välilyönti. 19 /// </summary> 20 /// <param name="jono">jono, josta eka ja vika sana otetaan.</param> 21 /// <returns>eka ja vika sana.</returns> 22 /// <example> 23 /// <pre name="test"> 24 /// EkaVika.EkaJaVikaSana("Janne meni kauppaan ja osti maitoa.") === "Janne maitoa."; 25 /// EkaVika.EkaJaVikaSana("Janne") === "Janne"; 26 /// EkaVika.EkaJaVikaSana("Janne Kalle") === "Janne Kalle"; 27 /// EkaVika.EkaJaVikaSana("") === ""; 28 /// EkaVika.EkaJaVikaSana(" ") === " "; 29 /// EkaVika.EkaJaVikaSana(" ") === " "; 30 /// EkaVika.EkaJaVikaSana(" ") === " "; 31 /// </pre> 32 /// </example> 33 public static string EkaJaVikaSana(String jono) 34 { 35 String[] sanat = jono.split(' '); 36 if (sanat.length > 1) 37 { 38 String ekajavika = sanat[0] + " " + sanat[sanat.length 1]; 39 return ekajavika; 40 } 41 return jono; 42 } 43 } 44 1

3 C:\MyTemp\ohj1\ohjdemot\k2012\demot\vastaukset\demo11\ToiseksiSuurin\ToiseksiSuurin.cs 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 Antti Jussi Lakanen /// <summary> 10 /// Ohjelma etsii ja tulostaa annetun kokonaislukutaulukon toiseksi 11 /// suurimman alkion. 12 /// </summary> 13 public class ToiseksiSuurinLuku 14 { 15 /// <summary> 16 /// Alustetaan taulukot ja tulostetaan halutut alkiot. 17 /// </summary> 18 /// <param name="args"></param> 19 public static void Main(string[] args) 20 { 21 int[] luvut = { 3, 1, 7, 9, 15, 8 }; 22 int luku = ToiseksiSuurin(luvut); 23 Console.Write("Taulukon "); 24 TulostaTaulukko(luvut); 25 Console.Write(" toiseksi suurin luku on " + luku); 26 Console.ReadKey(); 27 } /// <summary> 31 /// Tulostaa int taulukon. 32 /// </summary> 33 /// <param name="luvut">tulostettava taulukko.</param> 34 public static void TulostaTaulukko(int[] luvut) 35 { 36 foreach (int luku in luvut) 37 Console.Write(luku + " "); 38 } /// <summary> 42 /// Palauttaa kokonaislukutaulukon toiseksi suurimman alkion. 43 /// Alle 2 mittaisille taulukoille paluuarvo on int.minvalue. 44 /// Taulukon ollessa pituudeltaan 1 palautetaan ainoa alkio. 45 /// </summary> 46 /// <param name="luvut">tutkittava taulukko.</param> 47 /// <returns>toiseksi suurin alkio.</returns> /// <pre name="test"> 50 /// int[] luvut1 = {}; 51 /// ToiseksiSuurinLuku.ToiseksiSuurin(luvut1) === int.minvalue; 52 /// int[] luvut2 = {4}; 53 /// ToiseksiSuurinLuku.ToiseksiSuurin(luvut2) === int.minvalue; 54 /// int[] luvut3 = {3, 1, 7, 9, 15, 8}; 55 /// ToiseksiSuurinLuku.ToiseksiSuurin(luvut3) === 9; 56 /// int[] luvut4 = {15, 14, 10, 8, 5}; 57 /// ToiseksiSuurinLuku.ToiseksiSuurin(luvut4) === 14; 58 /// int[] luvut5 = {15, 14, 15, 15, 15}; 59 /// ToiseksiSuurinLuku.ToiseksiSuurin(luvut5) === 15; 60 /// </pre> public static int ToiseksiSuurin(int[] luvut) 63 { 64 if (luvut.length < 2) return int.minvalue; 65 int suurin = int.minvalue; 66 int toiseksisuurin = int.minvalue; 67 for (int i = 0; i < luvut.length; i++) 68 { 69 if (luvut[i] > suurin) 70 { 71 toiseksisuurin = suurin; 72 suurin = luvut[i]; 73 } 1

4 C:\MyTemp\ohj1\ohjdemot\k2012\demot\vastaukset\demo11\ToiseksiSuurin\ToiseksiSuurin.cs 74 else if (luvut[i] > toiseksisuurin) 75 { 76 toiseksisuurin = luvut[i]; 77 } 78 } 79 return toiseksisuurin; 80 } 81 } 2

5 C:\MyTemp\ohj1\ohjdemot\k2012\demot\vastaukset\demo11\NimenPalat\NimenPalat.cs 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 Antti Jussi Lakanen /// <summary> 10 /// Luetaan riveittäin käyttäjän antamaa nimitietoa muodossa 11 /// Ekaetunimi Tokaetunimi Kolmasetunimi Sukunimi 12 /// Sukunimi on aina mukana, etunimiä annetaan vähintään yksi, enintään kolme. 13 /// Syöttö lopetetaan antamalla pelkkä Enter, jolloin ohjelma 14 /// tulostaa nimet aakkostettuna muodossa 15 /// Sukunimi E.T.K. 16 /// </summary> 17 public class NimenPalat 18 { 19 /// <summary> 20 /// Luodaan lista tietorakenne, johon nimia tallennetaan. 21 /// Pyydetaan sitten kayttajan syotteet ja lopuksi tulostetaan 22 /// tulokset. 23 /// </summary> 24 /// <param name="args"></param> 25 public static void Main(string[] args) 26 { 27 Console.WriteLine("Anna nimiä muodossa Etunimet Sukunimi\nYksi nimi rivilleen, pelkkä Enter lopettaa."); 28 List<String> nimet = new List<string>(); 29 while (true) 30 { 31 Console.Write("> "); 32 String syote = Console.ReadLine(); 33 if (syote == "") break; 34 String muokattunimi = MuutaNimi(syote, 3); 35 nimet.add(muokattunimi.tostring()); 36 } nimet.sort(); // Jarjestetaan lista sukunimen ensimmaisen kirjaimen mukaan Console.WriteLine("Annoit nimet:"); 41 foreach (String nimi in nimet) 42 { 43 Console.WriteLine(nimi); 44 } 45 Console.ReadKey(); 46 } /// <summary> 50 /// Muutetaan nimi niin, että sukunimi tulee alkuun ja etunimistä on vain alkukirjaimet ja. 51 /// </summary> 52 /// <param name="nimi">muutettava nimi</param> 53 /// <param name="etunimiaenintaan">kuinka monta etunimeä enintään sallitaan.</param> 54 /// <returns>nimi muodossa sukunimi e.t.</returns> 55 /// <example> 56 /// <pre name="test"> 57 /// NimenPalat.MuutaNimi("", 3) === ""; 58 /// NimenPalat.MuutaNimi("Kaarle", 3) === "Kaarle"; 59 /// NimenPalat.MuutaNimi("Kaarle Kustaa Korkki", 3) === "Korkki K.K."; 60 /// NimenPalat.MuutaNimi("Seppo Pentti Ville Kinnunen", 3) === "Kinnunen S.P.V."; 61 /// NimenPalat.MuutaNimi("Åke Aarnio", 3) === "Aarnio Å."; 62 /// NimenPalat.MuutaNimi(" Åke Aarnio ", 3) === "Aarnio Å."; 63 /// NimenPalat.MuutaNimi("Ulla Maija Wikholm Seppänen", 3) === "Wikholm Seppänen U."; 64 /// </pre> 65 /// </example> 66 public static String MuutaNimi(String syote, int etunimiaenintaan) 67 { 68 string[] osat = syote.split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); 69 int n = osat.length; 70 if (n == 0) return ""; 71 if (n == 1) return osat[0]; // muuten tulee turha välilyönti 72 StringBuilder muokattunimi = new StringBuilder(); 1

6 C:\MyTemp\ohj1\ohjdemot\k2012\demot\vastaukset\demo11\NimenPalat\NimenPalat.cs 73 muokattunimi.append(osat[osat.length 1] + " "); 74 for (int i = 0; i < Math.Min(etunimiaEnintaan, osat.length 1); i++) // Etunimiä ei saa olla määräänsä enempää 75 { 76 muokattunimi.append(osat[i][0] + "."); 77 } 78 return muokattunimi.tostring(); 79 } 80 } 2

7 C:\MyTemp\ohj1\ohjdemot\k2012\demot\vastaukset\demo11\t4.txt 26. maaliskuuta :04 Aliohjelmakutsu =============== Olkoon meillä vaikkapa ohjelmakoodi: StringBuilder jono = new StringBuilder("Matti istuu penkillä."); String vokaalit = "aeiouyåäö"; String kolmeekaavokaalia = SiirraKirjaimet(jono,vokaalit,1+2); ja aliohjelman esittely public static String SiirraKirjaimet(StringBuilder jono, String siirrettavat, int maara) Aliohjelmakutsussa SiirraKirjaimet(jono,vokaalit,1+2); ohjelman suoritus siirtyy aliohjelman SiirraKirjaimet sisälle. Kuitenkin ennen siirtymistä lasketaan kunkin parametrina olevan lausekkeen arvot loppuun saakka. Osa lausekkeista voi olla valmiita sellaisenaan, kuten esimerkissä jono ja vokaalit. Lausekkeen 1+2 arvo lasketaan. Kutsua varten lausekkeiden arvot sijoitetaan aliohjelman vastinmuuttujiin, siis tässä tapauksessa aliohjelman jono = pääohjelman jono siirrettavat = vokaalit maara = 3 On huomattava, että oliomuuttujien tapauksessa (esimerkissä tyypit StringBuilder ja String) sijoitetaan _viite_ siihen olioon, johon pääohjelmankin vastaava viite (esim. vokaalit) osoittaa. Ei siis luoda uutta oliota. Kuitenkin jos kutsussa olisi ollut SiirraKirjaimet(jono,vokaalit+"k",1+2); olisi lausekkeesta vokaalit+"k" syntynyt uusi olio ja tämän olion viite olisi viety aliohjelman siirrettavat muuttujan arvoksi. Tämä tilapäinen olio muuttuisi roskaksi kun aliohjelmasta palataan (ellei aliohjelman sisällä ole jotakin, mistä jää pysyvämpi viite parametrina vietyyn oliooon). -1-

8 C:\MyTemp\ohj1\ohjdemot\k2012\demot\vastaukset\demo11\t4.txt 26. maaliskuuta :04 Kun sijoitukset on tehty, lähdetään suorittamaan aliohjelmaa. Suorituksen loppuessa tai return lauseen tullessa vastaan, aliohjelmasta palataan siihen kohti, josta sitä kutsuttiin. Jos aliohjelman tyyppinä on muuta kuin void, tulee aliohjelman paluuarvo kutsuneeseen ohjelman osaan ja siitä se otetaan jatkokäyttöön. Esimerkin tapauksessa muuttuja kolmeekaavokaalia saa aliohjelman palauttaman arvon. Tässä tapauksessa arvona on aliohjelman (oletettavasti) luoman olion viite, nyt siis merkkijonoon, johon poistettavat merkit on kopioitu. Esimerkin maara ja jono muuttujien välillä on sellainen ratkaiseva ero, että vaikka aliohjelman sisällä sijoitettaisiin maara muuttujaan, niin vaikutus ei näy kutsuvaan ohjelman osaan. Jos aliohjelmassa tehdään jokin muutos jono muuttujan sisältöön (ei siis luoda uutta oliota), niin silloin yhteisen viitteen takia myös kutsuneen ohjelmanosan vastaava olio (siis se sama yhteinen olio) on muuttunut. Sen sijaan jos aliohjelmassa tehtäisiin jono = new StringBuilder("kissa"); niin tämä on uusi olio, josta kutsunut ohjelmanosa ei saa tietää mitään. Tämä vastaisi täysin sijoitusta maara = 7; mikä ei tietenkään voisi muuttaa lasekkeen 2+1 arvoa mitenkään. C#:ssa aliohjelmien parametrien välitys on siis arvopohjaista ja viitteet ovat arvoja. Toki viitteitä pitkin voidaan muuttaa olioiden sisältöä. Jotkin luokat ovat arvopohjaisia (imnmutable), mikä tarkoittaa sitä, että vaikka olioita käsitelläänkin, niin silti niiden sisältöä ei voi muuttaa. Esimerkin tapauksessa C#:n String luokka on tällainen. Eli vokaalit olion sisältö on ennen ja jälkeen aliohjelman kutsun täsmälleen samanlainen, tehtiin aliohjelmassa mitä tahansa. -2-

9 C:\MyTemp\ohj1\ohjdemot\k2012\demot\vastaukset\demo11\PoistaKirjaimia\PoistaKirjain.cs 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 6 Antti Jussi Lakanen /// <summary> 10 /// Ohjelmassa poistetaan merkkeja merkkijonosta. 11 /// </summary> 12 public class PoistaKirjain 13 { 14 /// <summary> 15 /// Esimerkkeja. Tulostetaan tulokset. 16 /// </summary> 17 /// <param name="args">ei kaytossa.</param> 18 public static void Main(string[] args) 19 { 20 StringBuilder jono = new StringBuilder("putos ku talonmies liukkaalta katolta"); 21 Poista(jono, 't'); 22 Console.WriteLine(jono.ToString()); 23 Poista(jono, 'k'); 24 Console.WriteLine(jono.ToString()); 25 Poista(jono, 'a'); 26 Console.WriteLine(jono.ToString()); 27 Poista(jono, 'l'); 28 Console.WriteLine(jono.ToString()); 29 Poista(jono, 's'); 30 Console.WriteLine(jono.ToString()); 31 Poista(jono, 'x'); 32 Console.WriteLine(jono.ToString()); 33 Poista(jono, ' '); 34 Console.WriteLine(jono.ToString()); 35 Console.ReadKey(); 36 } /// <summary> 40 /// Aliohjelma poistaa merkkijonosta kaikki 41 /// annetun merkin esiintymat. 42 /// </summary> 43 /// <param name="jono">merkkijono, josta merkkeja poistetaan.</param> 44 /// <param name="poistettava">poistettava merkki.</param> 45 /// <returns>montako poistettavaa merkkia loytyi/poistettiin.</returns> /// <pre name="test"> 48 /// StringBuilder jono = new StringBuilder("kissa istuu puussa"); // alustetaan jono 49 /// PoistaKirjain.Poista(jono, ' ') === 2; jono.tostring() === "kissaistuupuussa"; 50 /// PoistaKirjain.Poista(jono, 'u') === 4; jono.tostring() === "kissaistpssa"; 51 /// PoistaKirjain.Poista(jono, 'k') === 1; jono.tostring() === "issaistpssa"; 52 /// PoistaKirjain.Poista(jono, 'a') === 2; jono.tostring() === "issistpss"; 53 /// PoistaKirjain.Poista(jono, 's') === 5; jono.tostring() === "iitp"; 54 /// PoistaKirjain.Poista(jono, 'x') === 0; jono.tostring() === "iitp"; 55 /// </pre> public static int Poista(StringBuilder jono, char poistettava) 58 { 59 int i = 0; 60 int loydetty = 0; 61 while (i < jono.length) 62 { 63 if (jono[i] == poistettava) 64 { 65 jono.remove(i, 1); 66 loydetty++; 67 } 68 else i++; 69 } 70 return loydetty; 71 } 72 } 1

10 C:\MyTemp\ohj1\ohjdemot\k2012\demot\vastaukset\demo11\t6.txt 26. maaliskuuta :04 Tehtävä 6 a) Miten C# ohjelma käännetään ja ajetaan komentoriviltä? Entä jos ohjelma tarvitsee jonkin kirjaston avukseen? (2 p) csc Lumiukko.cs /reference:kirjasto.dll;kirjasto2.dll b) Laske (laskutoimitukset mukaan) seuraavien binäärilukujen arvo 10 järjestelmän lukuna. Mitä oletuksia teit? (2 p): oletus: käsitellään positiivisia kokonaislukuja (i) = 2^6 + 2^2 + 2^0 = = 69 (ii) = 2^5 + 2^4 + 2^3 + 2^2 + 2^1 + 2^0 = = 63 (iii) = = 129 c) Oletetaan 8 bittisille negatiivisille kokonaisluvuille 2 komplementtiesitys. Mikä olisi luvun miinus viisi ( 5) bittiesitys tällaisessa järjestelmässä. (1 p) 5 = (+5) => (1 komplementti) => (+1 bitti eli 5) d) Binäärinen desimaaliluku järjestelmän lukuna. (1 p) _2, kokonaisosa 2^3 + 2^0 = 8+1 = 9 desimaaliosa 2^( 1) + 2^( 2) + 2^( 3) = = => 9.875_10 e) Pohdi missä mielessä List on parempi kuin tavallinen taulukko. Missä mielessä huonompi? (2 p) parempi: Tietorakenne on "dynaaminen", eli koko muuttuu automaattisesti kun alkioita poistetaan / lisätään => kokoa ei tarvitse tietää etukäteen. Muistitilan rajoissa voidaan siis lisätä aina uusia alkioita. huonompi: koon automaattisessa muuttumisessa on myös haittapuolensa, eli jossain tapauksessa saatetaan varata turhan paljon tilaa listalle, jolloin muistia menee "hukkaan". samoja ominaisuuksia: Sekä Listia etta taulukkoa voidaan mennä läpi indeksoidusti (lista[0], lista[1],..., vastaavasti taulukko[0], -1-

11 C:\MyTemp\ohj1\ohjdemot\k2012\demot\vastaukset\demo11\t6.txt 26. maaliskuuta :04 taulukko[1]), ja molempia voidaan iteroida (foreach silmukka). f) Mikä ero on String ja StringBuilder luokilla? (1 p) String on muuttamaton (immutable), StringBuilder oliota (sisältöä) voidaan muuttaa vielä olion luomisen jälkeenkin. Mitä hyötyä Stringin muuttamattomuudesta on? Sen ansiosta merkkijonojen kopiointi saadaan nopeaksi, koska itse asiassa kopiontia ei tarvita, vaan riittää laittaa toinen viite samaan olioon. Muuttumattomuuden ansiosta kaikki viitteen omistajat voivat olla varmoja, että sisältö ei muutu esimerkiksi aliohjelmakutsun aikana. Vastaavasti jos itse sisältöä pitää muuttaa, tarvitaan StringBuilder luokan olioita. Jos jonoon tulee paljon muutoksia, kannattaa ensin muutokset tehdä StringBuilder luokan olioon ja sitten jos tarvitaan String olio, lopuksi pyydetään sellainen StringBuilder luokan oliolta ToString() metodilla. g) Paljonko on 34/7 C#:ssa. Paljonko on 34%7 C#:ssa. (1 p) 34/7 = 4, sillä molemmat luvut (34 ja 7) ovat int tyyppisiä, ja niinpä laskutoimituksen tuloskin on int tyyppiä ja "oikeasta" tuloksesta otettu mukaan vain kokonaisosa. 34%7 = 6 (jakojäännösoperaattori % palauttaa jakolaskun jakojäännöksen) h) Mitä tarkoittaa että olio "muuttuu roskaksi"? (1 p) Kun olioon ei ole enää yhtään viitettä, ei olioon päästä mistään kautta käsiksi. Tällöin olio muuttuu "roskaksi", ja kielen automaattinen roskienkeruu mahdollisesti aikanaan vapauttaa olion viemän muistitilan muiden olioiden käyttöön. Olion viite voi kadota esimerkiksi, kun viitteelle annetaan uusi arvo: StringBuilder jono = new StringBuilder("kissa");... jono = new StringBuilder("koira"); // nyt ei kukaan enää osoita ensin luotuun "kissa" jonoon // joten sitä edustava olio muuttuu roskaksi. -2-

12 C:\MyTemp\ohj1\ohjdemot\k2012\demot\vastaukset\demo11\t6.txt 26. maaliskuuta :04-3-

13 C:\MyTemp\ohj1\ohjdemot\k2012\demot\vastaukset\demo11\Salakirjoita\Salakirjoita\Salakirjoita.cs 1 using System; 2 using System.Collections.Generic; 3 using Jypeli; 4 using Jypeli.Assets; 5 using Jypeli.Controls; 6 using Jypeli.Effects; 7 using Jypeli.Widgets; 8 9 Vesa Lappalainen 10 syksy Antti Jussi Lakanen /// <summary> 15 /// Salakirjoitetaan teksti kuvaan 16 /// </summary> 17 public class Salakirjoita : PhysicsGame 18 { 19 /// <summary> 20 /// Ominaisuus johon voi valmiiksi sijoittaa nimen jota käytetään 21 /// </summary> 22 public string Nimi { get; set; } /// <summary> 25 /// Luodaan kaksi kuvaa joista toiseen salakirjoitetaan teksti 26 /// </summary> 27 public override void Begin() 28 { 29 string kuvannimi = "viivat"; Image kuva = LoadImage(kuvannimi); 32 AddKuva(kuva, 0, 0); string nimi = "Antti Jussi Lakanen"; // Nimi pitäisi oikeassa elämässä kysyä dialogilla, tässä tehty näin yksinkertaisuuden vuoksi 35 if (Nimi!= null) nimi = Nimi; Image kuva2 = kuva.clone(); 38 uint[,] bmp2 = kuva2.getdatauint(); 39 SalakirjoitaKuvaan(bmp2, nimi, 20, 0); kuva2.setdata(bmp2); 42 AddKuva(kuva2, 1, 0); 43 } /// <summary> 47 /// Lisää kuvan näyttöön valittuun "ruutuun" 48 /// </summary> 49 /// <param name="kuva">lisättävä kuva</param> 50 /// <param name="nx">ruudun x paikka</param> 51 /// <param name="ny">ruudun y paikka</param> 52 private void AddKuva(Image kuva, int nx = 0, int ny = 0) 53 { 54 GameObject k = new GameObject(kuva); 55 k.position = new Vector(Level.Left + k.width / 2 + k.width * nx, Level.Top k.height / 2 k. Height * ny); 56 Add(k); 57 } /// <summary> 61 /// "Salakirjoitetaan" nimi kuvaan sijoittamalla nimen kirjainten ASCII koodi 62 /// paikasta aix,aiy alkaen sinisen värin tilalle. Jos "teksti" menee 63 /// kuvan laitaan, aloitetaan seuravaalta riviltä. Jos rivit tulee täyteen, 64 /// jatketaan paikasta 0,0 65 /// </summary> 66 /// <param name="kuva">bittimatriisi, johon nimi sijoitetaan</param> 67 /// <param name="nimi">joka "salakirjoitetaan"</param> 68 /// <param name="aiy">aloitusindeksi y koordinaatille</param> 69 /// <param name="aix">aloitusindeksi x koordinaatille</param> 70 /// <example> 71 /// <pre name="test"> 1

14 C:\MyTemp\ohj1\ohjdemot\k2012\demot\vastaukset\demo11\Salakirjoita\Salakirjoita\Salakirjoita.cs 72 /// uint[,] kuva = { { 0x010101,0x020202,0x030303,0x }, 73 /// { 0x010101,0x020202,0x030803,0x }, 74 /// { 0x010101,0x090909,0x030303,0x } }; 75 /// Salakirjoita.SalakirjoitaKuvaan(kuva,"Kissa",0,0); 76 /// kuva[0,0].tostring("x") === "1014B"; 77 /// kuva[0,1].tostring("x") === "20269"; 78 /// kuva[0,2].tostring("x") === "30373"; 79 /// kuva[0,3].tostring("x") === "40473"; 80 /// kuva[1,0].tostring("x") === "10161"; 81 /// kuva[1,1].tostring("x") === "20202"; 82 /// 83 /// Salakirjoita.SalakirjoitaKuvaan(kuva,"Kissa",2,2); 84 /// kuva[2,2].tostring("x") === "3034B"; 85 /// kuva[2,3].tostring("x") === "60669"; 86 /// kuva[0,0].tostring("x") === "10173"; 87 /// </pre> 88 /// </example> 89 public static void SalakirjoitaKuvaan(uint[,] kuva, String nimi, int aiy, int aix) 90 { 91 int ix = aix, iy = aiy; 92 for (int i = 0; i < nimi.length; i++) 93 { 94 if (iy >= kuva.getlength(0)) iy = 0; 95 if (ix >= kuva.getlength(1)) { iy++; ix = 0; if (iy >= kuva.getlength(0)) iy = 0; } 96 uint pxl = kuva[iy, ix]; 97 pxl = Color.PackRGB(Color.GetRed(pxl), Color.GetGreen(pxl), (byte)nimi[i], Color.GetAlpha (pxl)); 98 kuva[iy, ix++] = pxl; 99 } 100 } 101 } 102 2

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 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ätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 22. huhtikuuta 2016 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille! Kirjoittamasi luokat, funktiot ja aliohjelmat

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti Tentaattori: Antti-Jussi Lakanen 8. kesäkuuta 2018 Yleistä Tentti 1 meni pistekeskiarvon (11.2) perusteella välttävästi. Omasta tehtäväpaperista saa kopion

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 12. huhtikuuta 2019 Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä. Yksi A4-kokoinen lunttilappu

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti Tentaattori: Antti-Jussi Lakanen 20. toukokuuta 2016 Yleistä Tentti 1 oli pistekeskiarvon (11.6) perusteella vaikea. Omasta tehtäväpaperista saa kopion Antti-Jussilta,

Lisätiedot

Ohjelmointi 2 / 2010 Välikoe / 26.3

Ohjelmointi 2 / 2010 Välikoe / 26.3 Ohjelmointi 2 / 2010 Välikoe / 26.3 Välikoe / 26.3 Vastaa neljään (4) tehtävään ja halutessa bonustehtäviin B1 ja/tai B2, (tuovat lisäpisteitä). Bonustehtävät saa tehdä vaikkei olisi tehnyt siihen tehtävään

Lisätiedot

Listarakenne (ArrayList-luokka)

Listarakenne (ArrayList-luokka) Listarakenne (ArrayList-luokka) Mikä on lista? Listan määrittely ArrayList-luokan metodeita Listan läpikäynti Listan läpikäynti indeksin avulla Listan läpikäynti iteraattorin avulla Listaan lisääminen

Lisätiedot

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

Ohjelmointi 1 / 2009 syksy Tentti / 18.12 Tentti / 18.12 Vastaa yhteensä neljään tehtävään (huomaa että tehtävissä voi olla useita alakohtia), joista yksi on tehtävä 5. Voit siis valita kolme tehtävistä 1 4 ja tehtävä 5 on pakollinen. Vastaa JOKAISEN

Lisätiedot

1. Mitä tehdään ensiksi?

1. Mitä tehdään ensiksi? 1. Mitä tehdään ensiksi? Antti Jussi i Lakanen Ohjelmointi 1, kevät 2010/ Jyväskylän yliopisto a) Etsitään Googlesta valmis algoritmi b) Mietitään miten itse tehtäisiin sama homma kynällä ja paperilla

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op) ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 20. huhtikuuta 2018 Vastaa kaikkiin tehtäviin. Tee kukin tehtävä omalle konseptiarkille. Noudata ohjelmointitehtävissä kurssin koodauskäytänteitä.

Lisätiedot

Metodien tekeminen Javalla

Metodien tekeminen Javalla 1 Metodien tekeminen Javalla Mikä metodi on? Metodin syntaksi Metodi ja sen kutsuminen Parametreista Merkkijonot ja metodi Taulukot ja metodi 1 Mikä metodi on? Metodilla toteutetaan luokkaan toiminnallisuutta.

Lisätiedot

ITKP102 Ohjelmointi 1 Tentti

ITKP102 Ohjelmointi 1 Tentti ITKP102 Ohjelmointi 1 Tentti 4.12.2013 Vastaa neljään tehtävään tehtävistä 1-6 tai yhteen tehtävään 7 (yhteensä enintään 24p + mahd bonus pisteet). HUOM! Jokaisen tehtävän vastaus omalle paperilleen. Paperit

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti ITKP2 Ohjelmointi 1 (6 op), arvosteluraportti Tentaattori: Antti-Jussi Lakanen 17. toukokuuta 219 Yleistä Tentti 1 oli pistekeskiarvon (14,6) perusteella hieman tavanomaista helpompi. Omasta tehtäväpaperista

Lisätiedot

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Harjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: Harjoitus 7 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: class Lintu //Kentät private int _siivenpituus; protected double _aivojenkoko; private bool _osaakolentaa; //Ominaisuudet public int

Lisätiedot

Mikä yhteyssuhde on?

Mikä yhteyssuhde on? 1 Yhteyssuhde Mikä yhteyssuhde on? Yhteyssuhde Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Mikä yhteyssuhde on? Tili - : String - : double * 1 Asiakas - hetu: String - : String

Lisätiedot

7. Oliot ja viitteet 7.1

7. Oliot ja viitteet 7.1 7. Oliot ja viitteet 7.1 Sisällys Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden sijoitus. Viitteiden vertailu. Varautuminen null-arvoon. Viite metodin paluuarvona. Viite metodin

Lisätiedot

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen Metodit Metodien määrittely Metodin parametrit ja paluuarvo Metodien suorittaminen eli kutsuminen Metodien kuormittaminen 1 Mikä on metodi? Metodi on luokan sisällä oleva yhteenkuuluvien toimintojen kokonaisuus

Lisätiedot

4. Luokan testaus ja käyttö olion kautta 4.1

4. Luokan testaus ja käyttö olion kautta 4.1 4. Luokan testaus ja käyttö olion kautta 4.1 Olion luominen luokasta Java-kielessä olio määritellään joko luokan edustajaksi tai taulukoksi. Olio on joukko keskusmuistissa olevia tietoja. Oliota käsitellään

Lisätiedot

Sisältö. 22. Taulukot. Yleistä. Yleistä

Sisältö. 22. Taulukot. Yleistä. Yleistä Sisältö 22. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko metodin parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 22.1 22.2 Yleistä

Lisätiedot

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma. Välikoe / 20.3 Vastaa neljään (4) tehtävään. Jos vastaat 5:een, 4 huonointa arvostellaan. Kunkin tehtävän vastaus eri konseptille. 1. Pöytätesti Pöytätestaa seuraava ohjelma. Tutki ohjelman toimintaa pöytätestillä

Lisätiedot

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Kompositio Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Mikä kompositio on? Tili - : String - : double 1 1 Kayttoraja

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti Tentaattori: Antti-Jussi Lakanen 7. huhtikuuta 2017 Yleistä Tentti 1 oli pistekeskiarvon (12.9) perusteella vaikeudeltaan tavallista vaikeampi. Omasta tehtäväpaperista

Lisätiedot

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma. 2. Taulukot 2.1 Sisältö Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.2 Yleistä

Lisätiedot

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa();

Olion elinikä. Olion luominen. Olion tuhoutuminen. Olion tuhoutuminen. Kissa rontti = null; rontti = new Kissa(); Sisällys 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen. Viitteiden käsittelyä: sijoitus, vertailu ja varautuminen null-arvoon. Viite metodin paluuarvona.. 7.1 7.2 Olio

Lisätiedot

Ohjelmointi 2, välikoe

Ohjelmointi 2, välikoe Ohjelmointi 2, välikoe 21.3.2014 Vastaa neljään tehtävään kuudesta siten, että jokainen tehtävä tulee omalle konseptilleen. Mikäli vastaat useampaan kuin neljään tehtävään, pisteiden laskussa huomioidaan

Lisätiedot

Pong-peli, vaihe Aliohjelmakutsu laskureita varten. 2. Laskurin luominen. Muilla kielillä: English Suomi

Pong-peli, vaihe Aliohjelmakutsu laskureita varten. 2. Laskurin luominen. Muilla kielillä: English Suomi Muilla kielillä: English Suomi Pong-peli, vaihe 7 Tässä vaiheessa lisäämme peliin pistelaskun. Pong-pelissä pelaaja saa pisteen kun pallo ohittaa toisen pelaajan mailan. 1. Aliohjelmakutsu laskureita varten

Lisätiedot

1. Miten tehdään peliin toinen maila?

1. Miten tehdään peliin toinen maila? Muilla kielillä: English Suomi Pong-peli, vaihe 4 Tässä oppaassa teemme toisenkin mailan. 1. Miten tehdään peliin toinen maila? Maila tehtiin edellisessä vaiheessa, aliohjelmassa LuoKentta, seuraavasti:

Lisätiedot

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014

Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.

Lisätiedot

Ohjelmointitaito (ict1td002, 12 op) Kevät 2008. 1. Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen raine.kauppinen@haaga-helia.

Ohjelmointitaito (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ätiedot

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti: 1 (7) Tiedon lukeminen näppäimistöltä Scanner-luokan avulla Miten ohjelma saa käyttöönsä käyttäjän kirjoittamaa tekstiä? Järjestelmässä on olemassa ns. syöttöpuskuri näppäimistöä varten. Syöttöpuskuri

Lisätiedot

Ohjelmointi 1 C#, kevät 2014, 2. uusintatentti NIMI:

Ohjelmointi 1 C#, kevät 2014, 2. uusintatentti NIMI: ITKP102 Ohjelmointi 1 C# 13.6.2014 1 / 5 Ohjelmointi 1 C#, kevät 2014, 2. uusintatentti Tentaattori Antti-Jussi Lakanen Valitse neljä tehtävää ja vastaa niihin. Keväällä 2014 kurssin tehneille lasketaan

Lisätiedot

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä

Sisällys. 7. Oliot ja viitteet. Olion luominen. Olio Java-kielessä Sisälls 7. Oliot ja viitteet Olio Java-kielessä. Olion luominen, elinikä ja tuhoutuminen.. Viitteiden vertailu. Varautuminen null-arvoon. Viite metodin paluuarvona.. Muuttumattomat ja muuttuvat merkkijonot.

Lisätiedot

1. Omat operaatiot 1.1

1. Omat operaatiot 1.1 1. Omat operaatiot 1.1 Sisällys Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

Sisältö. 2. Taulukot. Yleistä. Yleistä

Sisältö. 2. Taulukot. Yleistä. Yleistä Sisältö 2. Taulukot Yleistä. Esittely ja luominen. Alkioiden käsittely. Kaksiulotteinen taulukko. Taulukko operaation parametrina. Taulukko ja HelloWorld-ohjelma. Taulukko paluuarvona. 2.1 2.2 Yleistä

Lisätiedot

Olio-ohjelmointi Javalla

Olio-ohjelmointi Javalla 1 Olio-ohjelmointi Javalla Olio-ohjelmointi Luokka Attribuutit Konstruktori Olion luominen Metodit Olion kopiointi Staattinen attribuutti ja metodi Yksinkertainen ohjelmaluokka Ohjelmaluokka 1 Olio-ohjelmointi

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti Tentaattori: Antti-Jussi Lakanen 18. toukokuuta 2018 Yleistä Tentti 1 oli pistekeskiarvon (12.7) perusteella vaikeudeltaan kohtuullinen. Omasta tehtäväpaperista

Lisätiedot

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista Sisällys 1. Omat operaatiot Yleistä operaatioista. Mihin operaatioita tarvitaan? Oman operaation määrittely. Yleisesti, nimeäminen ja hyvä ohjelmointitapa, määreet, parametrit ja näkyvyys. HelloWorld-ohjelma

Lisätiedot

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo 15.2.2006 TURUN YLIOPISTO DEMO III Informaatioteknologian laitos tehtävät Olio-ohjelmoinnin perusteet / Salo 15.2.2006 1. Tässä tehtävässä tarkastellaan erääntyviä laskuja. Lasku muodostaa oman luokkansa. Laskussa

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset 815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 2 vastaukset Harjoituksen aiheena on BNF-merkinnän käyttö ja yhteys rekursiivisesti etenevään jäsentäjään. Tehtävä 1. Mitkä ilmaukset seuraava

Lisätiedot

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. 1 Luokka Murtoluku uudelleen Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista. Sievennettäessä tarvitaan osoittajan ja nimittäjän suurin yhteinen tekijä (syt).

Lisätiedot

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana Muilla kielillä: English Suomi Pong-peli, vaihe 3 Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana Jaetaan ohjelma pienempiin palasiin (aliohjelmiin) Lisätään peliin maila (jota ei voi vielä

Lisätiedot

Taulukoiden käsittely Javalla

Taulukoiden käsittely Javalla 1 Taulukoiden käsittely Javalla Mikä taulukko on? Taulukon syntaksi Merkkijonotaulukko Lukutaulukko Taulukon kopiointi 1 Mikä taulukko on? Taulukko on rakenne, minne saadaan talteen usea saman tyyppinen

Lisätiedot

Java-kielen perusteet

Java-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ätiedot

Pisteytys: Eri kommentointitavat tiedetty: 0,5 pistettä, jos puuttuu niin ei voinut saada täysiä pisteitä.

Pisteytys: Eri kommentointitavat tiedetty: 0,5 pistettä, jos puuttuu niin ei voinut saada täysiä pisteitä. Ohjelmointi 1, tentti 11.4.2014. Tentaattori Antti-Jussi Lakanen. Arviointiraportti Yleistä Tentti (http://users.jyu.fi/~anlakane/ohjelmointi1/tentit/2014-04-11-tentti1.pdf) oli pistekeskiarvon (16.2)

Lisätiedot

17. Javan omat luokat 17.1

17. Javan omat luokat 17.1 17. Javan omat luokat 17.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 17.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

1. Taustatietoa näppäimistönkuuntelusta

1. Taustatietoa näppäimistönkuuntelusta Muilla kielillä: English Suomi Pong-peli, vaihe 5 Tämä on Pong-pelin tutoriaalin osa 5/7. Tämän vaiheen aikana Lisäämme peliin näppäimet Laitetaan mailat liikkumaan pelaajien ohjaamina Näin ohjelmaamme

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Taulukot: Array Taulukko Javassa pitää aina perustaa (new) Yksinkertaisessa tilanteessa taulukon koko tiedetään etukäteen ja

Lisätiedot

Rajapinta (interface)

Rajapinta (interface) 1 Rajapinta (interface) Mikä rajapinta on? Rajapinta ja siitä toteutettu luokka Monimuotoisuus ja dynaaminen sidonta Rajapinta vs periytyminen 1 Mikä rajapinta on? Rajapintoja käytetään, kun halutaan määritellä

Lisätiedot

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen 1 List-luokan soveltamista List-luokan metodeja Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen 1 List-luokan metodeja List-luokan

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti ITKP2 Ohjelmointi 1 (6 op), arvosteluraportti Tentaattori: Antti-Jussi Lakanen 12. huhtikuuta 219 Yleistä Tentti 1 oli pistekeskiarvon (13.3) perusteella vaikeudeltaan keskitasoa. Omasta tehtäväpaperista

Lisätiedot

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

Ohjelmointitaito (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ätiedot

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public) Tietorakenteet JAVA-OHJELMOINTI Osa 5: Tietorakenteita Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto Olioita ja tietoja voidaan organisoida määrämuotoisiksi tietorakenteiksi Hyödyllisiä

Lisätiedot

20. Javan omat luokat 20.1

20. Javan omat luokat 20.1 20. Javan omat luokat 20.1 Sisällys Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang Sisällys 20. Javan omat luokat Application Programming Interface (API). Pakkaukset. Merkkijonoluokka String. Math-luokka. Kääreluokat. 20.1 20.2 Java API Java-kielen Application Programming Interface (API)

Lisätiedot

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++? JAVA-OHJELMOINTI 3op A274615 JAVAN PERUSTEET LYHYT KERTAUS Teemu Saarelainen teemu.saarelainen@kyamk.fi Lähteet: http://java.sun.com/docs/books/tutorial/index.html Vesterholm, Kyppö: Java-ohjelmointi,

Lisätiedot

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä 12.1 12.2 12.3 12.4 Sisällys 12. Näppäimistöltä lukeminen Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä.. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit. Scanner-luokka.

Lisätiedot

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu Taulukot Taulukon määrittely ja käyttö Taulukko metodin parametrina Taulukon sisällön kopiointi toiseen taulukkoon Taulukon lajittelu esimerkki 2-ulottoisesta taulukosta 1 Mikä on taulukko? Taulukko on

Lisätiedot

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä muuttujia ja vakioita. Esittely

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti Tentaattori: Antti-Jussi Lakanen 22. huhtikuuta 2016 Yleistä Tentti 1 oli pistekeskiarvon (15.1) perusteella vaikeudeltaan keskitasoa, ehkä hitusen viime

Lisätiedot

1. Kun käyttäjä antaa nollan, niin ei tulosteta enää tuloa 2. Hyväksy käyttäjältä luku vain joltain tietyltä väliltä (esim tai )

1. Kun käyttäjä antaa nollan, niin ei tulosteta enää tuloa 2. Hyväksy käyttäjältä luku vain joltain tietyltä väliltä (esim tai ) Tehtävä do while + Viikko 1 Tehtävä 27. Salasana (MOOC) Viikko 1 Tehtävä 28. Lämpötilat (MOOC) Tehdään ohjelma, joka kysyy käyttäjältä lukua. Luku kerrotaan aina seuraavalla käyttäjän antamalla luvulla

Lisätiedot

Ohjelmointi 1 C#, kevät 2013, 2. tentti

Ohjelmointi 1 C#, kevät 2013, 2. tentti ITKP102 Ohjelmointi 1 C# 15.5.2013 1 / 6 Ohjelmointi 1 C#, kevät 2013, 2. tentti Tentaattori Antti-Jussi Lakanen Tässä tentissä saa olla mukana omia muistiinpanoja yhden arkin verran. Tentin valvojalla

Lisätiedot

8. Näppäimistöltä lukeminen 8.1

8. Näppäimistöltä lukeminen 8.1 8. Näppäimistöltä lukeminen 8.1 Sisällys Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. In-luokka, käännös ja tulkinta Scanner-luokka. 8.2 Yleistä Näppäimistöltä annettujen arvojen (syötteiden)

Lisätiedot

Java kahdessa tunnissa. Jyry Suvilehto

Java kahdessa tunnissa. Jyry Suvilehto Java kahdessa tunnissa Jyry Suvilehto Ohjelma Ohjelmointiasioita alkeista nippelitietoon n. 45 min Tauko 10 min Oliot, luokat ja muut kummajaiset n. 45 min Kysykää Sisältöä ei oikeasti ole 2x45 min täytteeksi,

Lisätiedot

8. Näppäimistöltä lukeminen 8.1

8. Näppäimistöltä lukeminen 8.1 8. Näppäimistöltä lukeminen 8.1 Sisällys Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. In-luokka, käännös ja tulkinta Scanner-luokka. 8.2 Yleistä Näppäimistöltä annettujen arvojen (syötteiden)

Lisätiedot

Javan perusteita. Janne Käki

Javan perusteita. Janne Käki Javan perusteita Janne Käki 20.9.2006 Muutama perusasia Tietokone tekee juuri (ja vain) sen, mitä käsketään. Tietokone ymmärtää vain syntaksia (sanojen kirjoitusasua), ei semantiikkaa (sanojen merkitystä).

Lisätiedot

Ohjelmointi 2 / 2011 Välikoe / 25.3

Ohjelmointi 2 / 2011 Välikoe / 25.3 Välikoe / 25.3 Vastaa neljään (4) tehtävään ja halutessa bonustehtäviin B1 ja/tai B2, (tuovat lisäpisteitä). Bonustehtävät saa tehdä vaikkei olisi tehnyt siihen tehtävään liittyvää tehtävää. Aikaa 4 tuntia.

Lisätiedot

Lista luokan sisällä

Lista luokan sisällä Lista luokan sisällä Luokan sisällä on lista Joukkue-luokka, joka sisältää listän joukkueen pelaajista Pelaaja Joukkueen metodit, jotka käyttävät listaa Ohjelmaluokka Luokan sisällä on lista Tarkoitta

Lisätiedot

Ohjelmoinnin perusteet, kurssikoe

Ohjelmoinnin perusteet, kurssikoe Ohjelmoinnin perusteet, kurssikoe 18.6.2014 Kirjoita jokaiseen konseptiin kurssin nimi, kokeen päivämäärä, nimi, TMC-tunnus ja opiskelijanumero tai henkilötunnus. Vastaukset palautetaan tehtäväkohtaisiin

Lisätiedot

Periytyminen (inheritance)

Periytyminen (inheritance) 1 Periytyminen (inheritance) Mitä periytyminen on? Yli- ja aliluokka Konstruktorit Get- ja set-metodi Muut metodit tostring Yksinkertainen pääohjelma 1 Mitä periytyminen on? Periytymisen avulla olemassa

Lisätiedot

Luokan sisällä on lista

Luokan sisällä on lista 1 Luokan sisällä on lista Luokan sisällä lista Listan sisältävä luokka Konstruktorit get-metodi Lista muissa metodeissa addxx-metodi Yksinkertainen pääohjelma Kertauksen List-luokan metodeja 1 Luokan sisällä

Lisätiedot

12. Näppäimistöltä lukeminen 12.1

12. Näppäimistöltä lukeminen 12.1 12. Näppäimistöltä lukeminen 12.1 Sisällys Arvojen lukeminen näppäimistöltä yleisesti. Arvojen lukeminen näppäimistöltä Java-kielessä. In-luokka. Luetun arvon tarkistaminen. Tietovirrat ja ohjausmerkit.

Lisätiedot

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta C++ - perusteet Java-osaajille luento 5/7: operaattoreiden ylikuormitus, oliotaulukko, parametrien oletusarvot, komentoriviparametrit, constant, inline, Operaattoreiden ylikuormitus Operaattoreiden kuormitus

Lisätiedot

Pong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana

Pong-peli, vaihe Koordinaatistosta. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana Muilla kielillä: English Suomi Pong-peli, vaihe 2 Tämä on Pong-pelin tutoriaalin osa 2/7. Tämän vaiheen aikana Laitetaan pallo liikkeelle Tehdään kentälle reunat Vaihdetaan kentän taustaväri Zoomataan

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 16.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 16.2.2010 1 / 41 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti

Lisätiedot

7/20: Paketti kasassa ensimmäistä kertaa

7/20: Paketti kasassa ensimmäistä kertaa Ohjelmointi 1 / syksy 2007 7/20: Paketti kasassa ensimmäistä kertaa Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin 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ätiedot

Ohjelmointi 1 Taulukot ja merkkijonot

Ohjelmointi 1 Taulukot ja merkkijonot Ohjelmointi 1 Taulukot ja merkkijonot Jussi Pohjolainen TAMK Tieto- ja viestintäteknologia Johdanto taulukkoon Jos ohjelmassa käytössä ainoastaan perinteisiä (yksinkertaisia) muuttujia, ohjelmien teko

Lisätiedot

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A. Tehtävä. Tämä tehtävä on aineistotehtävä, jossa esitetään ensin tehtävän teoria. Sen jälkeen esitetään neljä kysymystä, joissa tätä teoriaa pitää soveltaa. Mitään aikaisempaa tehtävän aihepiirin tuntemusta

Lisätiedot

YHTEYSSUHDE (assosiation)

YHTEYSSUHDE (assosiation) YHTEYSSUHDE (assosiation) -Mikä on yhteyssuhde? -Miten toteutan yhteyssuhteen? 1 Mikä on yhteyssuhde? Yhteyssuhde kuvaa kahden olion välistä suhdetta: Esim. Auto Henkilö, omistussuhde Tili Asiakas, omistussuhde

Lisätiedot

Java-kielen perusteet

Java-kielen perusteet Java-kielen perusteet String-merkkijonoluokka 1 Ohjelmointikielten merkkijonot Merkkijonot ja niiden käsittely on välttämätöntä ohjelmoinnissa Valitettavasti ohjelmointikielten tekijät eivät tätä ole ottaneet

Lisätiedot

Jypelin käyttöohjeet» Ruutukentän luominen

Jypelin käyttöohjeet» Ruutukentän luominen Jypelin käyttöohjeet» Ruutukentän luominen Pelissä kentän (Level) voi luoda tekstitiedostoon "piirretyn" mallin mukaisesti. Tällöin puhutaan, että tehdään ns. ruutukenttä, sillä tekstitiedostossa jokainen

Lisätiedot

Tehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki

Tehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki Tehtävä 1 Koherentti selitys Koherentti esimerkki ½p ½p Tehtävä 2 Täysiin pisteisiin edellytetään pelaajien tulostamista esimerkin järjestyksessä. Jos ohjelmasi tulostaa pelaajat jossain muussa järjestyksessä,

Lisätiedot

Java-kielen perusteita

Java-kielen perusteita Java-kielen perusteita Käyttäjän kanssa keskusteleva ohjelma 1 Kirjoittaminen konsolinäkymään //Java ohjelma, joka tulostaa konsoli-ikkunaan public class HeiMaailma { public void aja() { // kirjoitus ja

Lisätiedot

Jypelin käyttöohjeet» Miten saan peliin pistelaskurin?

Jypelin käyttöohjeet» Miten saan peliin pistelaskurin? Jypelin käyttöohjeet» Miten saan peliin pistelaskurin? Pistelaskurin saamiseksi tarvitaan kaksi osaa: Laskuri, joka laskee pisteitä Olio, joka näyttää pisteet ruudulla Laskuri voi olla esimerkiksi tyyppiä

Lisätiedot

7. Näytölle tulostaminen 7.1

7. 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ätiedot

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 4. Attribuutit 4.1 Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2 Yleistä Luokan lohkossa, mutta metodien ulkopuolella esiteltyjä

Lisätiedot

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti Tentaattori: Antti-Jussi Lakanen 20. huhtikuuta 2018 Yleistä Tentti 1 oli pistekeskiarvon (13.8) perusteella vaikeudeltaan keskitasoa. Omasta tehtäväpaperista

Lisätiedot

Ohjelmointi 1 C#, kevät 2013,

Ohjelmointi 1 C#, kevät 2013, Ohjelmointi 1 C#, kevät 2013, 19.4.2013 (English versions of the questions can be requested from the supervisor. Englanninkieliset kysymykset saa pyytämällä tentin valvojalta.) Tentti (yliopisto opiskelijat)

Lisätiedot

Luokat ja oliot. Ville Sundberg

Luokat ja oliot. Ville Sundberg Luokat ja oliot Ville Sundberg 12.9.2007 Maailma on täynnä olioita Myös tietokoneohjelmat koostuvat olioista Σ Ο ω Μ ς υ φ Ϊ Φ Θ ψ Љ Є Ύ χ Й Mikä on olio? Tietokoneohjelman rakennuspalikka Oliolla on kaksi

Lisätiedot

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

815338A 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ätiedot

14. Poikkeukset 14.1

14. Poikkeukset 14.1 14. Poikkeukset 14.1 Sisällys Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla poikkeuksella? Poikkeusten heittäminen.

Lisätiedot

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

// Tulostetaan double-tyyppiseen muuttujaan hinta tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf(%.1f euros. Lue kukin tehtävänanto huolellisesti ja kokonaisuudessaan ennen kuin aloitat vastaamisen. Kustakin tehtävästä voi saada 0 6 pistettä. Tentin läpipääsyraja on 12 / 24 pistettä. Ratkaisut palautetaan WETO-järjestelmään

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 9.2.2009 T-106.1208 Ohjelmoinnin perusteet Y 9.2.2009 1 / 35 Listat Esimerkki: halutaan kirjoittaa ohjelma, joka lukee käyttäjältä 30 lämpötilaa. Kun lämpötilat

Lisätiedot

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes) Kääreluokista Javan alkeistietotyypit ja vastaavat kääreluokat Autoboxing Integer-luokka Double-luokka Kääreluokista Alkeistietotyyppiset muuttujat (esimerkiksi

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin 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ätiedot

Interaktiivinen tarinankerronta

Interaktiivinen tarinankerronta Interaktiivinen tarinankerronta Tehtävä 1: Tarinan alku pääohjelmaan Main. java ei tehdä muutoksia tulostusrivit tiedostoon Kayttoliittyma.java tulostus lyhyesti sout + tab komennolla Tiedoston Kayttoliittyma.java

Lisätiedot

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python Ohjelmoinnin perusteet Y Python T-106.1208 17.2.2010 T-106.1208 Ohjelmoinnin perusteet Y 17.2.2010 1 / 41 Sanakirja Monissa sovelluksissa on tallennettava rakenteeseen avain arvo-pareja. Myöhemmin rakenteesta

Lisätiedot

TIETORAKENTEET JA ALGORITMIT

TIETORAKENTEET JA ALGORITMIT TIETORAKENTEET JA ALGORITMIT Timo Harju 1999-2004 1 typedef link List; /* Vaihtoehtoisia nimiä */ typedef link Stack; /* nodepointterille */ typedef link Queue typedef struct node Node; /* itse nodelle

Lisätiedot

Sisällys. 14. Poikkeukset. Johdanto. Johdanto

Sisällys. 14. Poikkeukset. Johdanto. Johdanto Sisällys 14. Poikkeukset Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Miten varautua poikkeukseen metodissa? Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla

Lisätiedot

Metodien tekeminen Javalla

Metodien tekeminen Javalla 1 Metodien tekeminen Javalla Mikä metodi on? Metodin syntaksi Metodi ja sen kutsuminen Parametreista Merkkijonot ja metodi Taulukot ja metodi 1 Mikä metodi on? Metodilla toteutetaan luokkaan toiminnallisuutta.

Lisätiedot