ITKP102 Ohjelmointi 1 Tentti
|
|
- Juuso Aro
- 7 vuotta sitten
- Katselukertoja:
Transkriptio
1 ITKP102 Ohjelmointi 1 Tentti 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 palautetaan eri pinoihin! Muista täyttää Korpissa kurssin kohdalta "lomake": "kuinka opiskelin" sekä vastata kurssin palautekyselyyn sekä Ohjelmointikäsityksiä-kyselyyn. Jos tenttivastauksessa tarvitset jotakin funktiota API-kirjastosta (C#:n kirjasto) ja et muista tarkkaan mikä oli funktion/metodin nimi, niin kirjoita funktion esittely (parametreineen) ja kommentti siitä, mitä sen pitäisi tehdä. Et saa itse keksiä funktioita, joita ei ole olemassa (ellet itse myös toteuta niitä). Tehtävä 1. Merkkijonojen käsittelyä using System; using System.Text; public class KerroVuodenaika public static void Main(string[] args) // Kysymys: Mitä tähän pitäisi tulla? string nimi = Console.ReadLine(); // Käyttäjä antaa syötteenä kuukauden, esimerkiksi "Helmikuu nimi = MikaVuodenaika(nimi); Console.WriteLine(nimi); // Tulostaa "Talvi" // Kysymys: Oikeaoopiset kommentit tähän, myös parametrin nimet kuntoon public static string MikaVuodenaika(string tahankunnonnimiparametrille) // Kysmymys: Tähän aliohjelman toteutus return ""; a) Täydennä ylläoleva koodi toimivaksi. Käyttäjältä tulee syöte kuukauden nimestä ja sen perusteella pitäisi päättää, mikä vuodenaika on kyseessä. Vuodenajat alkavat niin, että joulukuu on talvikuukausi ja jokaiseen vuodenaikaan kuuluu kolme kuukautta, eikä ohjelma saa kaatua virheellisestä syötteestä. Syötteeseen ei tule ylimääräisiä merkkejä esim. HelmikuuxXX, mutta syöte voi olla muodossa helmikuu (3 p) b) Tee kommentit ja ComTest-testit ohjelmalle. Katso tehtävä 2:n Summa-aliohjelmasta mallia ComTestien kirjoittamiseen. (3 p) Bonus 1p: Tee tehtävän toteutus käyttäen taulukkoa tai dictionarya. 1/7
2 Tehtävä 2. Muuttujat ja aliohjelmat /// Luokka joka laskee yhteen- ja kertolaskuja public class SummatJaTulot public static void Main(string[] args) int a = 5; int b = 3; int c = a * b++; // Kysymys: a) minkä arvon c saa nyt (1/3 p) Console.WriteLine(a + " * " + b + " = " + c); // Kysymys: b) mitä edellinenrivi tulostaa (1/3 p) int b; // Kysymys: c) mikä on b:n arvo tällä rivillä? (1/3 p) int summa = Summa(4, 9, 1, 8); Console.WriteLine(summa); // Kysymys: d) mitä tulostuu? (1/3 p) Summa(); Console.WriteLine(summa); // Kysymys: e) mitä tulostuu? (0,5 p) // Kysymys: f) Kutsu Tulo aliohjelmaa kahdella eri tavalla. (2 p) /// Laskee summan kolmelle ennalta määritetylle luvulle /// <returns> 3:n, 5:n ja 7:n summa </returns> public static int Summa() return ( ); /// Laskee neljän luvun summan. /// <returns>annettujen lukujen summan</returns> /// <example> /// <pre name="test"> /// Program.Summa(3, 5, 1, 1) === 10; /// Program.Summa(1, 1, 1, 1) === 4; /// Program.Summa(2, -1, -2, 1) === 0; /// Program.Summa(-2, -5, -4, -3) === -14; /// Program.Summa(0, 0, 0, 0) === 0; /// </pre> /// </example> public static int Summa(???) // Kysymys: g) Täydennä aliohjelman // vastinparametrit (0,5 p) // Kysymys: h) Täydennä aliohjelma toimivaksi (1 p) 2/7
3 /// Kertoo kolme lukua ja tulostaa niiden tulon. /// <param name="kertoja">kertoja</param> /// <param name="kerrottava">kerrottava</param> /// <param name="lisakerroin">lisä kerroin</param> public static void Tulo(double kertoja, double kerrottava, double lisakerroin = 5.0) double tulo = kertoja * kerrottava; tulo *= lisakerroin; // Kysymys: i) Mikä on muuttujan tulo arvo // tämän rivin jälkeen? (1/3 p) Console.WriteLine(tulo); Console.WriteLine(tulo * 2); // Kysymys: j) Mitä tulostuu (1/3 p) Tehtävä 3. Taulukko Seuraava osa on Taunolla tuotettua koodia. int[] t = 56, 78, 59, 1, 82, 40; int apu; apu = t[0]; t[0] = t[5]; t[5] = apu; apu = t[1]; t[1] = t[4]; t[4] = apu; apu = t[2]; t[2] = t[3]; t[3] = apu; a) Mitä koodi tekee taulukolle tja miltä taulukko tnäyttää koodin suorittamisen jälkeen? (2p) b) Kirjoita yllä olevaa Tauno-koodia avuksi käyttäen aliohjelma, joka tekee saman kuin yllä. Käytä aliohjelmassa silmukkaa. Aliohjelman on toimittava erikokoisilla taulukoilla! Mieti mitä parametreja aliohjelma tarvitsee. Kommentoi aliohjelma kuten on opetettu. b)-kohdassa ei tarvitse kirjoittaa testejä. (4p) Bonus 1p: Kirjoita tarvittavat eri testitapaukset ComTest testeinä. Tehtävä 4. Toiston poisto Poista alla olevasta koodista toisto hyödyntämällä listoja tai taulukoita, silmukoita ja toteuttamalla aliohjelma LaskeMerkit, joka palauttaa, kuinka monta tiettyä merkkiä annetussa merkkijonossa on. Dokumentoi kyseinen aliohjelma. (6p) Bonus 1p: Aliohjelman testit public static void Main() 3/7
4 Console.WriteLine("Anna 1. merkkijono:"); string tutkittava1 = Console.ReadLine(); Console.WriteLine("Anna 2. merkkijono:"); string tutkittava2 = Console.ReadLine(); Console.WriteLine("Anna 3. merkkijono:"); string tutkittava3 = Console.ReadLine(); int lkm1 = 0; for (int i = 0; i < tutkittava1.length; i++) if (tutkittava1[i] == 'a') lkm1++; Console.WriteLine("Merkkijonossa 0 on 1 kpl 2-kirjaimia.", 1, lkm1, 'a'); int lkm2 = 0; for (int i = 0; i < tutkittava2.length; i++) if (tutkittava2[i] == 'e') lkm2++; Console.WriteLine("Merkkijonossa 0 on 1 kpl 2-kirjaimia.", 2, lkm2, 'e'); int lkm3 = 0; for (int i = 0; i < tutkittava3.length; i++) if (tutkittava3[i] == 'i') lkm3++; Console.WriteLine("Merkkijonossa 0 on 1 kpl 2-kirjaimia.", 3, lkm3, 'i'); Tehtävä 5. Teoriaa a) Mitä alla oleva koodirivi tulostaa ja miksi? (1p) System.Console.WriteLine((17 % 5) - 3); b) Onko alla olevassa C#-koodissa ongelmaa? Jos on, niin mikä? (1p) /// Tulostaa onnittelun konsoliin, mikäli parametrina annettu ikä on 20. Muussa /// tapauksessa tulostaa toteamuksen, että henkilö ei ole vielä 20, tai että hän /// ei enää ole 20-vuotias /// <param name="ika">henkilön ikä vuosina</param> public static void OnnitteleKaksikymppista(int ika) if (ika > 20) System.Console.WriteLine("Et ole enää 20-vuotias..."); else if (ika = 20) System.Console.WriteLine("Onneksi olkoon 20-vuotiaalle!"); else System.Console.WriteLine("Et ole vielä 20-vuotias."); 4/7
5 c) Miten vakiomuuttuja (constant) eroaa C#:ssa tavallisesta muuttujasta? (1p) d) Mitä ohjelmalle usein tapahtuu, mikäli poikkeusta ei oteta try-catch -rakenteessa kiinni? (1p) e) Mikä on ehdollinen keskeytyskohta (conditional breakpoint)? (1p) f) Mikä on ikuinen silmukka? Mitä täytyy ottaa huomioon, mikäli haluaa tehdä hallitun ikuisen silmukan (sellaisen, jossa silmukan ehto on aina tosi)? (1p) Tehtävä 6. Olioviitteet Vastaa kommenteissa oleviin neljään (4) kysymykseen. public static void Main(string[] args) List<int> lista1 = new List<int> 1, 2, 3, 4 ; List<int> lista2 = new List<int> 1, 2, 3, 4 ; // Kysymys: a) Tulostuuko seuraava ruutuun? Perustele. 2p if (lista1 == lista2) Console.WriteLine("Listat ovat samoja"); List<int> muokattulista = muokkaalistaa(lista1); string erotin = ""; // Kysymys: b) Mitä alla olevat 2 silmukkaa tulostavat? 2p foreach (int alkio in lista1) Console.Write(erotin + alkio); erotin = ","; Console.WriteLine(); erotin = ""; foreach (int alkio in muokattulista) Console.Write(erotin + alkio); erotin = ","; lista2 = muokattulista; muokattulista = new List<int> 0, 0, 0, 0 ; // Kysymys: c) Mihin olioviitteet lista1, lista2 sekä muokattulista // viittaavat tässä vaiheessa ohjelman ajoa. 1.5p // Kysymys: d) Selitä lyhyesti: "automaattinen roskienkeruu"? 0.5p /// Lisää parametrina tuodun listan viimeiseksi alkioksi luvun 8. /// <param name="lista">kokonaisluku lista, jonka perään lisätään luku 8</param> 5/7
6 /// <returns>lista, jonka perään on lisätty luku 8</returns> public static List<int> muokkaalistaa(list<int> lista) lista.add(8); return lista; Tehtävä 7. Laajempi ohjelmointitehtävä, 24p Jos teet tämän, älä tee muita tehtäviä! Tee ohjelma, joka luo sokkelon kaksiulotteiseen taulukkoon. Sokkelotaulukon luova aliohjelma saa parametreikseen sokkelon leveyden ja korkeuden. Taulukon alkiot tulkitaan joko seinäksi tai käytäväksi. Sokkelon käytävät ovat yhden ruudun paksuisia, samoin seinät. Sokkelon reunoilla tulee olla 2 uloskäyntiä. Esimerkiksi ohjelmalla tehty 15*15 -sokkelo voisi näyttää vaikka tältä: X XXXXXXXXXXXXX X X X XXX XXXXXXX XXX X X X X X XXXXXXX XXX X X X X X X X X X X XXX X X X X X X X X X XXX X X XXX X X X X X X X XXX X XXXXX X X X X X X X X XXXXXXX X X X X X XXXXXXXXXXXXXXX Rakenna sokkelo seuraavalla algoritmilla: 1. Alusta 2-ulotteinen taulukko siten, että taulukon kaikki alkiot ovat seiniä. 2. Valitse aloitusruutu. 3. Muuta ruutusi käytäväksi. 4. Tee lista ruutusi kaikista naapuriruuduista. 5. Valitse satunnaisesti jokin sellainen naapuriruutu, jossa ei ole vielä käyty ja poista seinä sen ja ruutusi välistä. 6. Siirry valitsemaasi naapuriruutuun ja jatka kohdasta Jos päädyt umpikujaan, palaa takaisin niin pitkälle, että vastaan tulee naapuriruutuja, joissa ei vielä ole käyty. 8. Tee lopuksi sisäänkäynnit sokkeloon. Täydennä alla olevaan koodiin puuttuvat aliohjelmat. public class Sokkelomatriisi private static Random rnd = new Random(); //käytetään sekoituksessa. 6/7
7 /// Pääohjelma, jossa luodaan 25 x 25 sokkelo. public static void Main() bool[,] sokkelo = LuoSokkelo(25, 25); TulostaSokkelo(sokkelo); /// Sekoittaa annetun listan. /// <typeparam name="t">listan alkioiden tyyppi</typeparam> /// <param name="lista">lista, joka sekoitetaan</param> public static void Sekoita<T>(List<T> lista) int n = lista.count; while (n > 1) n--; int k = rnd.next(n + 1); T value = lista[k]; lista[k] = lista[n]; lista[n] = value; /// Luokka koordinaateille. Tätä luokkaa voi käyttää apuna /// naapurialkioiden etsimisessä. public class Koordinaatti public int X get; set; public int Y get; set; /// Luo uuden (x,y)-koordinaatin /// <param name="x">x-koordinaatti</param> /// <param name="y">y-koordinaatti</param> public Koordinaatti(int x, int y) X = x; Y = y; 7/7
8 Mallivastaukset 1. Merkkijonojen käsittelyä (Tero) a) 3p ohjelma tulostaa jokaisella kuukaudella jonkun vuoden ajan, niin että 3 kuukautta on per vuodenaika 2p Ohjelman toiminnallisuudessa on puutteita, ei esimerkiksi oteta huomioon isoja kirjaimia tai ohjelma kaatuu huonolla syötteellä, kuitenkin ohjelmasta on saatavissa ulos 3 kuukautta per vuodenaika 1p Ohjelman idea tai toiminnallisuus on ymmärretty, mutta kaikkia vuodenaikoja ei saa vastauksena, tai kaikille kuukausille ei ole vastinetta. b) Kommentit kuvaavat, mitä aliohjelma tekee. Parametrien ja paluuarvot ovat kommentoitu(1 p) ½ pistettä, jos toinen edellämainituista ½ jos kommenteissa syntaktisia ongelmia, kuten <summary> ja </summary> eivät ole oikein ComTest-testit toimivat ja ne menevät läpi oikein toimivan ohjelman kanssa (2p) 1p ½ ComTesteissä pieniä syntaksivirheitä, kuten luokannimeä unohdettu kutsua 1p Joku ComTesteista ei mene läpi, mutta ohjelman toteutus toimii 2. Muuttujat ja aliohjelmat (Anna) a) 15 // b++ kasvattaa b:n arvoa vasta seuraavalla rivillä. b) 5 * 4 = 15 c) 4 //b:tä ei voi määritellä uudelleen, tämä tuottaa virheen käännettäessä. Ei vaikuta mitenkään b:n arvoon. Jos selitti tämän sai myös pisteet. d) 22 e) 22 //Summa() ei muuta summan arvoa, koska Summa()-aliohjelman palauttamaa arvoa ei oteta vastaan. f) Tulo(1.0,2.0,3.0 ); //Saa tietysti myös pisteet, jos esitteli muuttujat ensin tai jos laittoi int lukuja Tulo(1.0, 2.0); g) (int a, int b, int c, int d) h) return(a + b + c + d); i) kertoja * kerrottava * lisakerroin //myös numeroilla esim. 3 * 4 * 5 eli 60 j) tulo * 2 // tai Taulukko a) Ohjelma kääntää taulukon ympäri (1p), taulukko t=40,82,1,59,78,56(1p) b) /// Aliohjelma kääntää taulukon ympäri 8/7
9 /// <param name="t">käytettävä taulukko</param> public static void KaannaTaulukko(int[] t) int apu, j; for(int i = 0; i < t.length/2; i++) j = t.length-i-1; apu = t[i]; t[i] = t[j]; t[j] = apu; 4. Toiston poisto (Mika) public static void Main() List<string> merkkijonot = new List<string>(); //voi käyttää myös taulukkoa for (int i = 1; i <= 3; i++) Console.WriteLine("Anna 0. merkkijono:", i); merkkijonot.add(console.readline()); char[] kirjaimet = 'a', 'e', 'i'; for (int i = 0; i < 3; i++) int kirjaintenlkm = LaskeMerkit(merkkijonot[i], kirjaimet[i]); Console.WriteLine("Merkkijonossa 0 on 1 kpl 2-kirjaimia.", i + 1, kirjaintenlkm, kirjaimet[i]); /// Laskee, kuinka monta tiettyä merkkiä annetussa merkkijonossa on. /// <param name= merkkijono >merkkijono, jonka merkkejä lasketaan</param> /// <param name= merkki >merkki, jonka esiintymiä lasketaan</param> /// <returns>annetun merkin esiintymien lukumäärä merkkijonossa</returns> /// <example> /// <pre name="test"> /// Program.LaskeMerkit("", 'a') === 0; /// Program.LaskeMerkit("kissa", 'a') === 1; /// Program.LaskeMerkit("kissa", 's') === 2; /// Program.LaskeMerkit("kissa", 'r') === 0; /// </pre> /// </example> public static int LaskeMerkit(string merkkijono, char merkki) int lkm = 0; for (int i = 0; i < merkkijono.length; i++) 9/7
10 if (merkkijono[i] == merkki) lkm++; return lkm; Arviointikriteerit: Ensimmäinen silmukka: 2p Aliohjelma + dokumentaatio: 2p Aliohjelman kutsuminen silmukassa: 2p Aliohjelman testit: + 1p Miinukset (verrattuna täyteen pistemäärään): Silmukat: Silmukan rajat väärin (silmukka suoritetaan liian monta/vähän kertaa): -1p Silmukan rajat huonosti kuvaavia, esim: for (int i = 1; i < 4; i++): -0.5p For-silmukassa ylimääräinen "i++" (tai while-silmukassa unohtunut kokonaan): -1p Taulukko esitellään silmukan sisällä: -1p Aliohjelman esittelyrivi: Aliohjelman static-avainsana puuttuu: -0.5p Aliohjelman paluuarvon tyyppi väärin: -1p Aliohjelma saa liian vähän parametreja: -1p Aliohjelman parametreista puuttuu tyypit: -1p Aliohjelman parametrien nimet eivät ole kuvaavia (esim. "x" ja "y"): -0.5p Muita mahdollisia virheitä: Puolipiste(itä) puuttuu: -0.5p Aliohjelman loppusulku puuttuu: -0.5p Aliohjelman lokaalin muuttujan esittely puuttuu: -1p Aliohjelman lokaalin muuttujan alustus puuttuu: -1p Aliohjelma tulostaa eikä palauta arvoa: -1p Aliohjelman kommenteissa puutteita: -0.5p Aliohjelman kommentit puuttuvat kokonaan: -1p Silmukan ehdossa "i < merkkijono": -1p Pääohjelmasta puuttuu esittelyrivi: -0.5p Kirjaimia a, e ja i ei ole laitettu taulukkoon/listaan, vaan silmukan sisälle on tehty if-hässäkkä: -1p Joitakin erikoistapauksia: Ohjelma ei toimi samalla tavalla kuin alkuperäinen, esim. pääohjelmassa vain yksi silmukka, jossa kysytään merkkijono ja samalla ilmoitetaan merkkien lukumäärä: 2p pääohjelmasta Aliohjelmaa ei ole kutsuttu silmukassa, vaan 3 kertaa ilman silmukkaa: 0.5p kutsuista Aliohjelmalle viedään lista merkkijonoista eikä yhtä: 0p aliohjelmasta 10/7
11 5. Teoriaa (Matias) Yleisesti tämän tehtävän asiat oli osattu hyvin. Alla mainittu yleisimpiä virheitä/kommentteja, mitä vastauksissa oli. a) -1 (1p) % on jakojäännös-operaattori, jonka tuloksena tulee 2. Siitä vähennetään / -0.5 pistettä, jos tiedettiin operaattori, mutta lasku väärin b) ika = 20 on sijoitusoperaatio. Vertailun kanssa tulisi käyttää vertailuoperaattoria == (1p) Monella oli toteamus, että if - else if - else ei toimisi tässä tapauksessa. Jos else if -lauseesta ottaisi elsen pois, niin silloin esim. arvolla 21 tulostuisia kaksi riviä. Kannattaa kokeilla itse Visual Studiolla, mitä tapahtuisi. c) Vakiomuuttujien arvoa ei voi muuttaa niiden määrittelyn jälkeen. (1p) Monella oli maininta siitä, että vakiot voidaan määritellä vain luokan alkuun. Toki näin usein tehdään, mutta mikään pakko tähän ei ole. Pieni miinus (-0.25p), jos muuten tiesi, mistä oli kyse. Myös normaaleja muuttujia voidaan määritellä luokan alkuun ja käyttää samalla tavalla aliohjelmien sisällä, toki se on eri asia, onko tämä kuinka järkevää. Asiasta lisää kevään jatkokurssilla... d) Ohjelman suoritus yleensä päättyy, mikäli poikkeusta (esim. NullPointerException) ei oteta kiinni (1p) Käyttöjärjestelmän antama virheilmoitus riippuu hieman missä sovellusta ajetaan. Konsoliin tulostuu virheilmoitus, mutta esimerkiksi Windowsin työpöytäohjelma ilmoittaa vain Ohjelma has stopped working ja Windows Phone-ohjelma taitaa palata alkuvalikkoon. Täysiin pisteisiin riitti, jos tiesi kaatumisen. Hieman miinuksia, jos oli mainittu esim. tapahtuu kauheita, mutta ei yksilöity tarkemmin, mitä tapahtuu. e) Ehdollinen keskeytyskohta on kohta, mihin suoritus debuggauksessa keskeytetään, mikäli keskeytykselle määrätty ehto täyttyy (1p) Pieni miinus (-0.25p), jos ei ollut debuggerista mainittu mitään. Monilla oli mainittu, että ajon aikana pysähdytään, mutta normaalin ajon aikana ei toki keskeytyskohta vaikuta mitenkään mikäli ei ollut mainittu ehdon täyttymisestä. f) Ikuinen silmukka on silmukka, jonka lopetusehto ei koskaan päde eli esimerkiksi whilen totuusarvo on aina true. (0.5p) Niitä käyttäessä tulee olla poistumisehto, jolla silmukasta poistutaan breakin tai returnin avulla. (0.5p) -0.25p, jos mainittu, että jollain keinolla pitää silmukasta poistua, mutta oli jäänyt mainitsematta ehto poistumiselle tai break/return keinona 6. Olioviitteet (Hannu) Kysymys 1. Ei tulostu. (1p) 11/7
12 Kyseisellä operaatiolla vertaillaan viitteitä, jotka osoittavat eri muistipaikkoihin. Vertailussa ei oteta kantaa listojen alkioiden arvoihin (1p) Kysymys 2. 1,2,3,4,8 - (1p) 1,2,3,4,8 - (1p) Kysymys 3. lista1 viittaa alkuperäiseen lista1:seen. Muistipaikassa on lista 1,2,3,4,8 (0.5p) lista2 viittaa samaan muistipaikkaan kuin lista1 1,2,3,4,8(0.5p) muokattavalista viittaa uuteen muistipaikkaan, jossa on lista 0,0,0,0(0.5p) Kysymys 4. Mikäli yksikään muuttuja ei viittaa johonkin muistipaikaan, muistipaikka muuttuu roskaksi. Automaattinen roskienkeruu vapauttaa muistipaikan muuhun käyttöön.(0.5p) 7. Yksi isompi ohjelmointitehtävä, 24p using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using Sokkelomatriisi; namespace Sokkelomatriisi /// Rakennetaan sokkelomatriisi. Matriisin alkiot ovat joko seinää tai käytävää. /// Toteutus booleaneilla, eli käytävät saavat arvon true (eli ruutuun saa mennä) /// ja seinät arvon false (eli ruutuun ei saa mennä). /// /// Sokkelo myöskin tulostetaan. public class Sokkelomatriisi private static Random rng = new Random(); //käytetään sekoituksessa. /// Pääohjelma, jossa luodaan 25 x 25 sokkelo. static void Main() bool[,] sokkelo = LuoSokkelo(25, 25); tulostasokkelo(sokkelo); /// Luo uuden korkeus * leveys -sokkelon. Jos korkeus tai leveys /// ovat parillisia, niihin lisätään 1, jotta sokkelo toimii. 12/7
13 /// <param name="korkeus">sokkelon korkeus</param> /// <param name="leveys">sokkelon leveys</param> /// <returns>vastarakennettu sokkelo.</returns> public static bool[,] LuoSokkelo(int korkeus, int leveys) //Sokkelon leveyden ja korkeuden on oltava parittomia, jotta vältytään //tuplareunoilta. Sokkelossa on siis käytäviä parittomissa //(x,y) -koordinaateissa ja seinää parillisissa. if (korkeus % 2 == 0) korkeus++; if (leveys % 2 == 0) leveys++; bool[,] sokkelo = new bool[korkeus, leveys]; KaivaKaytavat(sokkelo, 1, 1); //Luodaan sokkeloon 2 uloskäyntiä. sokkelo[0, 1] = true; sokkelo[korkeus - 2, leveys - 1] = true; return sokkelo; /// Kaivetaan parametrina tuotuun sokkeloon käytävät rekursiivisesti. /// <param name="sokkelo">sokkelo, johon käytävät kaivetaan</param> /// <param name="x">kohdan, jossa ollaan menossa x-koordinaatti</param> /// <param name="y">kohdan, jossa ollaan menossa y-koordinaatti</param> private static void KaivaKaytavat(bool[,] sokkelo, int x, int y) //Kaivetaan aloitusruutuun käytävä. sokkelo[x, y] = true; //Haetaan ruudun sokkelo[x,y] naapurit ja sekoitetaan naapurilista. List<Koordinaatti> naapurit = HaeNaapurit(sokkelo, x, y); Sekoita(naapurit); foreach (Koordinaatti naapuri in naapurit) if (!sokkelo[naapuri.x, naapuri.y]) PoistaSeina(sokkelo, x, y, naapuri.x, naapuri.y); //rekursiivinen kaivuu uudesta lähtöpisteestä. KaivaKaytavat(sokkelo, naapuri.x, naapuri.y); /// Poistetaan seinä kahden ruudun välistä 13/7
14 /// <param name="sokkelo">sokkelo, jossa ruudut ovat</param> /// <param name="x">ensimmäisen ruudun x</param> /// <param name="y">ensimmäisen ruudun y</param> /// <param name="x2">toisen ruudun x</param> /// <param name="y2">toisen ruudun y</param> private static void PoistaSeina(bool[,] sokkelo, int x, int y, int x2, int y2) //Tarkistetaan, ettei anneta "tyhmiä" parametreja. Liikutaan siis vain //sivu- tai pystysuunnassa. if (x!= x2 && y!= y2) return; //seinä oikealla: if (x2 - x == 2) sokkelo[x + 1, y] = true; //seinä alhaalla: else if (y2 - y == 2) sokkelo[x, y + 1] = true; //seinä vasemmalla: else if (x - x2 == 2) sokkelo[x - 1, y] = true; //seinä ylhäällä: else sokkelo[x, y - 1] = true; /// Haetaan sokkelon[x,y] naapuriruudut. /// Ruutujen koordinaatit palautetaan listana. /// <param name="sokkelo">sokkelo, jossa ruudut ovat</param> /// <param name="x">ruudun x-koordinaatti</param> /// <param name="y">ruudun y-koordinaatti</param> /// <returns>lista naapureita</returns> private static List<Koordinaatti> HaeNaapurit(bool[,] sokkelo, int x, int y) List<Koordinaatti> naapurit = new List<Koordinaatti>(); //Naapurit löytyy liikkumalla 2 ruutua oikealle, alas, vasemmalle tai //ylös, kunhan ei liikuta sokkelon ulkopuolelle. if (x + 2 < sokkelo.getlength(0)) naapurit.add(new Koordinaatti(x + 2, y)); if (y + 2 < sokkelo.getlength(1)) naapurit.add(new Koordinaatti(x, y + 2)); if (x - 2 > 0) naapurit.add(new Koordinaatti(x - 2, y)); if (y - 2 > 0) naapurit.add(new Koordinaatti(x, y - 2)); return naapurit; /// Aliohjelma sokkelon tulostamiseen. truen kohdalla tulostetaan välilyönti, /// falsen kohdalla X /// <param name="sokkelo">tulostettava sokkelo</param> public static void tulostasokkelo(bool[,] sokkelo) 14/7
15 for (int i = 0; i < sokkelo.getlength(0); i++) for (int j = 0; j < sokkelo.getlength(1); j++) if (sokkelo[i, j]) Console.Write(' '); else Console.Write('X'); Console.Write("\n"); /// Sekoittaa annetun listan. /// <typeparam name="t">listan alkioiden tyyppi</typeparam> /// <param name="lista">lista, joka sekoitetaan</param> public static void Sekoita<T>(List<T> lista) int n = lista.count; while (n > 1) n--; int k = rng.next(n + 1); T value = lista[k]; lista[k] = lista[n]; lista[n] = value; /// Luokka koordinaateille. public class Koordinaatti public int X get; set; public int Y get; set; /// Luo uuden (x,y)-koordinaatin /// <param name="x">x-koordinaatti</param> /// <param name="y">y-koordinaatti</param> public Koordinaatti(int x, int y) X = x; Y = y; 15/7
16 16/7
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ätiedotITKP102 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ätiedotOhjelmointi 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ätiedotITKP102 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ätiedotITKP102 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ätiedotITKP102 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ätiedotITKP102 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ätiedotITKP102 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ätiedotITKP102 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ätiedotC:\MyTemp\ohj1\ohjdemot\k2012\demot\vastaukset\demo11\PP1\TokaPisin.cs 1 using System; 2 using System.Collections.Generic; 3 using System.
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; 5 6 7 /// 8 /// Etsitään toiseksi
LisätiedotITKP102 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ätiedot1. 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ätiedotOhjelmointi 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ätiedotITKP102 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ätiedotOhjelmointi 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ä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ätiedotMetodien 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ätiedotOhjelmointi 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ätiedotOhjelmointi 1 C#, kevät 2014, tentti
ITKP102 Ohjelmointi 1 C# 11.4.2014 1 / 7 Ohjelmointi 1 C#, kevät 2014, tentti Tentaattori Antti-Jussi Lakanen Tässä tentissä saa olla mukana omia muistiinpanoja yksi A4-arkillinen. Tentin valvojalla on
LisätiedotITKP102 Ohjelmointi 1 (6 op), arvosteluraportti
ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti Tentaattori: Antti-Jussi Lakanen 21. huhtikuuta 2017 Yleistä Tentti 1 oli pistekeskiarvon (14.0) perusteella vaikeudeltaan keskitasoa. Omasta tehtäväpaperista
LisätiedotMetodit. 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ätiedot12. Javan toistorakenteet 12.1
12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu
Lisätiedot11. Javan toistorakenteet 11.1
11. Javan toistorakenteet 11.1 Sisällys Laskuri- ja lippumuuttujat. Sisäkkäiset silmukat. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin
Lisätiedot12. Javan toistorakenteet 12.1
12. Javan toistorakenteet 12.1 Sisällys Yleistä toistorakenteista. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirheitä. Silmukan rajat asetettu
LisätiedotITKP102 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ätiedotPisteytys: 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ä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ätiedotOhjelmoinnin 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ätiedotOhjelmointi 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ätiedotOhjelmointi 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ätiedotYleistä. 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ätiedotOhjelmointi 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ätiedotOhjelmoinnin perusteet, syksy 2006
Ohjelmoinnin perusteet, syksy 2006 Esimerkkivastaukset 1. harjoituksiin. Alkuperäiset esimerkkivastaukset laati Jari Suominen. Vastauksia muokkasi Jukka Stenlund. 1. Esitä seuraavan algoritmin tila jokaisen
LisätiedotOperaattoreiden 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ätiedotHarjoitus 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ätiedot1. 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ätiedotSisä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ätiedotOlio-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ä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ätiedotTietorakenteet ja algoritmit syksy Laskuharjoitus 1
Tietorakenteet ja algoritmit syksy 2012 Laskuharjoitus 1 1. Tietojenkäsittelijä voi ajatella logaritmia usein seuraavasti: a-kantainen logaritmi log a n kertoo, kuinka monta kertaa luku n pitää jakaa a:lla,
LisätiedotSisä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ätiedotOhjelmoinnin peruskurssi Y1
Ohjelmoinnin peruskurssi Y1 CSE-A1111 30.9.2015 CSE-A1111 Ohjelmoinnin peruskurssi Y1 30.9.2015 1 / 27 Mahdollisuus antaa luentopalautetta Goblinissa vasemmassa reunassa olevassa valikossa on valinta Luentopalaute.
LisätiedotPong-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ätiedotApuja ohjelmointiin» Yleisiä virheitä
Apuja ohjelmointiin» Yleisiä virheitä Ohjelmaa kirjoittaessasi saattaa Visual Studio ilmoittaa monenlaisista virheistä "punakynällä". Usein tämä johtuu vain siitä, että virheitä näytetään vaikket olisi
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ätiedotOlio-ohjelmointi Syntaksikokoelma
C++-kielen uusia ominaisuuksia Olio-ohjelmointi Syntaksikokoelma 31.10.2008 Bool-tietotyyppi: Totuusarvo true (1), jos ehto on tosi ja false (0) jos ehto epätosi. Dynaaminen muistinvaraus: Yhden muuttuja
LisätiedotITKP102 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ätiedotJava-kielen perusteita
Java-kielen perusteita valintalauseet 1 Johdantoa kontrollirakenteisiin Tähän saakka ohjelmissa on ollut vain peräkkäisyyttä eli lauseet on suoritettu peräkkäin yksi kerrallaan Tarvitsemme myös valintaa
LisätiedotSisä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ätiedotOhjelmointi 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ätiedot13. Loogiset operaatiot 13.1
13. Loogiset operaatiot 13.1 Sisällys Loogiset operaatiot AND, OR, XOR ja NOT. Operaatioiden ehdollisuus. Bittioperaatiot. Loogiset operaatiot ohjausrakenteissa. Loogiset operaatiot ja laskentajärjestys.
LisätiedotPong-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ätiedot815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.
LisätiedotSisä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ätiedot8. 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ätiedotTutoriaaliläsnäoloista
Tutoriaaliläsnäoloista Tutoriaaliläsnäolokierroksella voi nyt täyttää anomuksen läsnäolon merkitsemisestä Esim. tagi ei toiminut, korvavaltimon leikkaus, yms. Hyväksyn näitä omaa harkintaa käyttäen Tarkoitus
LisätiedotLuokka 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ätiedot7. 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ätiedot14. 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ätiedotVertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004
Vertailulauseet Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra == yhtäsuuruus!= erisuuruus < pienempi suurempi >= suurempi tai yhtäsuuri Esimerkkejä: int i=7; int j=10;
LisätiedotPong-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ä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ätiedotListarakenne (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ätiedotTässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ).
Tehtävä 1: Metodit, listat, alkuluvut (4p) Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ). Alkuluvut ovat lukuja, jotka ovat suurempia kuin yksi ja jotka ovat jaollisia
LisätiedotTietorakenteet (syksy 2013)
Tietorakenteet (syksy 2013) Harjoitus 1 (6.9.2013) Huom. Sinun on osallistuttava perjantain laskuharjoitustilaisuuteen ja tehtävä vähintään kaksi tehtävää, jotta voit jatkaa kurssilla. Näiden laskuharjoitusten
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ätiedotSisällys. 12. Javan toistorakenteet. Yleistä. Laskurimuuttujat
Sisällys 12. Javan toistorakenteet Ylstä toistorakentsta. Laskurimuuttujat. While-, do-while- ja for-lauseet. Laskuri- ja lippumuuttujat. Tyypillisiä ohjelmointivirhtä. Silmukan rajat asetettu kierroksen
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 7.2.2011 T-106.1208 Ohjelmoinnin perusteet Y 7.2.2011 1 / 39 Kännykkäpalautetteen antajia kaivataan edelleen! Ilmoittaudu mukaan lähettämällä ilmainen tekstiviesti
Lisätiedot14. Poikkeukset 14.1
14. Poikkeukset 14.1 Sisällys Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Miten varautua poikkeukseen metodissa? Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla
LisätiedotSisällys. 14. Poikkeukset. Johdanto. Johdanto
Sisällys 14. Poikkeukset Johdanto. Tarkistettavat ja tarkistamattomat poikkeukset. Poikkeusten tunnistaminen ja sieppaaminen try-catchlauseella. Mitä tehdä siepatulla poikkeuksella? Poikkeusten heittäminen.
LisätiedotJava 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ätiedotKoottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet suoritetaan peräkkäin.
2. Ohjausrakenteet Ohjausrakenteiden avulla ohjataan ohjelman suoritusta. peräkkäisyys valinta toisto Koottu lause; { ja } -merkkien väliin kirjoitetut lauseet muodostavat lohkon, jonka sisällä lauseet
LisätiedotSisällys. 11. Javan toistorakenteet. Laskurimuuttujat. Yleistä
Sisällys 11. Javan toistorakenteet Laskuri- ja lippumuuttujat.. Tyypillisiä ohjelmointivirheitä: Silmukan rajat asetettu kierroksen verran väärin. Ikuinen silmukka. Silmukoinnin lopettaminen break-lauseella.
LisätiedotOhjelmointi 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ätiedotOlion 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ätiedot7/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ätiedot815338A 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ätiedot1 Tehtävän kuvaus ja analysointi
Olio-ohjelmoinnin harjoitustyön dokumentti Jyri Lehtonen (72039) Taneli Tuovinen (67160) 1 Tehtävän kuvaus ja analysointi 1.1 Tehtävänanto Tee luokka, jolla mallinnetaan sarjaan kytkettyjä kondensaattoreita.
LisätiedotC# olio-ohjelmointi perusopas
Paavo Räisänen C# olio-ohjelmointi perusopas www.ohjelmoimaan.net Tätä opasta saa vapaasti kopioida, tulostaa ja levittää ei kaupallisissa tarkoituksissa. Kuitenkaan omille nettisivuille opasta ei saa
LisätiedotITKP102 Ohjelmointi 1, syksy 2007
Tenttirunko 6.11.2007: koodit, koodattava toiminnallisuus, syntaksikysymys, lukuarvot lukujärjestelmäkysymyksissä ovat eri tenttikerroilla aina erilaiset, mutta kysymysten aihepiirit ja muotoilu ovat samat.
Lisätiedot// 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ätiedotJypelin 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ätiedot11. Javan valintarakenteet 11.1
11. Javan valintarakenteet 11.1 Sisällys If- ja if--lauseet. Orpo. Valintaa toisin: switch-lause. 11.2 Valintarakenteet Valintarakenteilla ilmaistaan formaalisti, kuinka algoritmin suoritus voi haarautua
LisätiedotRajapinta (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ätiedot8. 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ä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ätiedot5/20: Algoritmirakenteita III
Ohjelmointi 1 / syksy 2007 5/20: Algoritmirakenteita III Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/17 Tämän
LisätiedotLohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3
15. Lohkot 15.1 Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat operaation alussa vai myöhemmin? 15.2 Lohkot Aaltosulkeet
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ätiedot// 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ätiedotSisä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ätiedotAlkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)
Alkuarvot ja tyyppimuunnokset (1/5) Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int luku = 123; Alkuarvon on oltava muuttujan tietotyypin mukainen, esimerkiksi int-muuttujilla kokonaisluku,
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 21.1.2009 T-106.1208 Ohjelmoinnin perusteet Y 21.1.2009 1 / 32 Tyypeistä Monissa muissa ohjelmointikielissä (esim. Java ja C) muuttujat on määriteltävä ennen
Lisätiedot12. 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ätiedotSe 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ätiedotOhjelmoinnin 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ä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ätiedotHarjoitustyö: virtuaalikone
Harjoitustyö: virtuaalikone Toteuta alla kuvattu virtuaalikone yksinkertaiselle olio-orientoituneelle skriptauskielelle. Paketissa on testaamista varten mukana kaksi lyhyttä ohjelmaa. Ohjeita Noudata ohjelman
Lisätiedot815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset
815338A Ohjelmointikielten periaatteet 2014-2015. Harjoitus 7 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/
LisätiedotLuokan 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