Ohjelmointi 1 C#, kevät 2014, tentti

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

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

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op)

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

Ohjelmointi 1 C#, kevät 2013,

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op)

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

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

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Python-ohjelmointi Harjoitus 2

Ohjelmointi 1 Taulukot ja merkkijonot

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

Ohjelmoinnin perusteet Y Python

Harjoitus 6. Käytä String-luokasta vain charat- ja length-operaatioita.

Ohjelmointi 2 / 2010 Välikoe / 26.3

Harjoitus 5. Esimerkki ohjelman toiminnasta: Lausekielinen ohjelmointi I Kesä 2018 Avoin yliopisto 1 / 5

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Harjoitus 5 (viikko 41)

1. Mitä tehdään ensiksi?

Ohjelmoinnin peruskurssi Y1

Harjoitus 6 (viikko 42)

Ohjelmoinnin jatkokurssi, kurssikoe

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

Harjoitus 3 (viikko 39)

Ohjelmoinnin perusteet Y Python

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1

Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ).

Tietuetyypin määrittely toteutetaan C-kielessä struct-rakenteena seuraavalla tavalla:

Java-kielen perusteet

Harjoitus 4 (viikko 47)

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta Toteuta Pythonilla seuraava ohjelma:

Harjoitus 5 (viikko 48)

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Ohjelmoinnin perusteet Y Python

Java-kielen perusteet

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

ITKP102 Ohjelmointi 1 Tentti

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

20. Javan omat luokat 20.1

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

Harjoitus 6 (viikko 42)

Harjoitus 2 (viikko 45)

Harjoitus 5 (viikko 41)

Ohjelmoinnin perusteet Y Python

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

Luku 6. Dynaaminen ohjelmointi. 6.1 Funktion muisti

Alkuarvot ja tyyppimuunnokset (1/5) Alkuarvot ja tyyppimuunnokset (2/5) Alkuarvot ja tyyppimuunnokset (3/5)

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 )

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

Ohjelmassa on käytettävä funktiota laskeparkkimaksu laskemaan kunkin asiakkaan maksu. Funktio floor pyöristää luvun lähimmäksi kokonaisluvuksi.

17. Javan omat luokat 17.1

815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset

Harjoitustyö: virtuaalikone

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Metropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3 opettaja: Pasi Ranne

T Ohjelmoinnin perusteet Y (Python). Tentti

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin peruskurssi Y1

Ohjelmointi 2 / 2011 Välikoe / 25.3

Ohjelmoinnin peruskurssi Y1

Tietorakenteet (syksy 2013)

Algoritmit 1. Demot Timo Männikkö

Ohjelmoinnin perusteet Y Python

TAMPEREEN TEKNILLINEN YLIOPISTO

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

Java-kielen perusteita

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

ITKP102 Ohjelmointi 1 (6 op), arvosteluraportti

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

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

Ohjelmoinnin perusteet, kurssikoe

Ohjelmoinnin perusteet Y Python

811312A Tietorakenteet ja algoritmit Kertausta kurssin alkuosasta

7/20: Paketti kasassa ensimmäistä kertaa

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

Kielioppia: toisin kuin Javassa

Ohjelmoinnin perusteet Y Python

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

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

Salausmenetelmät. Veikko Keränen, Jouko Teeriaho (RAMK, 2006)

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Ohjelmoinnin perusteet Y Python

TAMPEREEN TEKNILLINEN YLIOPISTO

13. Loogiset operaatiot 13.1

17. Javan omat luokat 17.1

Ohjelmoinnin peruskurssi Y1

TT00AA Ohjelmoinnin jatko (TT10S1ECD)

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

Ohjelmassa muuttujalla on nimi ja arvo. Kääntäjä ja linkkeri varaavat muistilohkon, jonne muuttujan arvo talletetaan.

Transkriptio:

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 oikeus tarvittaessa tarkastaa muistiinpanot (esimerkiksi tilanteessa, jossa tenttijä tekee kerralla enemmän kuin yhden tentin). Valitse neljä tehtävää ja vastaa niihin (bonuksiin ei ole pakko vastata). Kokeesta voi saada enintään 24 pistettä (+ mahdolliset bonuspisteet). Keväällä 2014 kurssin tehneille lasketaan demohyvitykset tenttipisteisiin mukaan. Tee jokainen tehtävä omalle konseptiarkille! (Tämä tarkistuksen nopeuttamiseksi.) Kirjoittamasi luokat ja aliohjelmat pitää dokumentoida, kuten kurssilla on opetettu. Jos vastauksessa tarvitset jotakin funktiota.net-apista (.NET-kirjasto) etkä muista tarkkaan mikä oli funktion/metodin nimi, niin kirjoita funktion esittely parametreineen ja kommentti siitä, mitä sen pitäisi tehdä. Luonnollisesti et saa itse keksiä funktiota, joita ei ole.netissä (jos et sitten itse toteuta niitä). Vinkkejä, joita saatat tarvita tehtävissä, löytyy kokeen loppuosasta.

ITKP102 Ohjelmointi 1 C# 11.4.2014 2 / 7 Tehtävä 1 (6 p.) Vastaa kaikkiin kohtiin. a) Mitä on kommentointi ja mitä eri tapoja kommentoinnille on? Miksi koodia kannattaa kommentoida? (2 p.) b) Kirjoita dokumentaatio seuraavalle funktiolle. Asiaankuuluvien ComTest-testien kirjoittamisesta saa yhden bonuspisteen. (2 p. + 1 bonusp.) publicstaticintsummaapituudet(string[] sanat) intsumma=0; for(inti=0; i<sanat.length; i++) intpituus=sanat[i].length; summa+=pituus; returnsumma; c) Esittele vähintään kaksi loogista operaattoria ja kerro mitä kukin tekee. (1 p.) d) Luku 23 binäärilukuna? Entä 00101010 muutettuna 10-järjestelmään? (1 p.) arvio omasta pistemäärästä (1-6 + bonus): Tehtävä 2 (6 p.) Jos listaamme kaikki ne lukua 10 pienemmät (nollaa suuremmat) luonnolliset luvut, jotka ovat jaollisia 3:lla tai 5:llä, saamme luvut 3, 5, 6, ja 9. Näiden lukujen summa on 23. Tee ohjelma (siis luokka ja pääohjelma, aliohjelmia/funktioita ei tässä tarvitse tehdä), joka laskee kaikkien 1000:a pienempien, 3:lla tai 5:llä jaollisten lukujen summan. Ohjelma tulostaa lopuksi tämän summan. Muista dokumentaatio.

ITKP102 Ohjelmointi 1 C# 11.4.2014 3 / 7 arvio omasta pistemäärästä (1-6): Tehtävä 3 (6 p.) a) Alla on pääohjelma, jossa lasketaan taulukon ei-negatiivisten lukujen summa, ja jos luku sattuu olemaan negatiivinen, niin summaan lisätään jotain muuta - päättele alla olevasta koodista, mitä. Ohjelmassa on turhaa toistoa. Poista turha toisto käyttäen silmukkaa. (3 p.) publicstaticvoidmain() int[]luvut=2,4,-6,3,1; intsumma=0; if(luvut[0] >=0) summa+=luvut[0]; elsesumma+=10; if(luvut[1] >=0) summa+=luvut[1]; elsesumma+=11; if(luvut[2] >=0) summa+=luvut[2]; elsesumma+=12; if(luvut[3] >=0) summa+=luvut[3]; elsesumma+=13; if(luvut[4] >=0) summa+=luvut[4]; elsesumma+=14; Console.WriteLine(summa); b) Refaktoroi alla oleva koodi siten, että arvotun kentän tiedot tulostetaan omassa aliohjelmassa, jolle annetaan parametrina arvottu kenttänumero (kokonaisluku), ja toinen kokonaisluku sekä siihen liittyvä kentän "esittelyteksti" merkkijonona. Kutsu sitten tekemääsi aliohjelmaa pääohjelmasta käsin. publicstaticvoidmain() Randomr=newRandom(); intarvottukentta=r.next(1, 4);// antaasatunnaisluvunväliltä1-3. if(arvottukentta==1) Console.WriteLine("Tervetuloapeliin, oletkentässänumero1."); Console.WriteLine("Edessäsionovi.");

ITKP102 Ohjelmointi 1 C# 11.4.2014 4 / 7 if(arvottukentta==2) Console.WriteLine("Tervetuloapeliin, oletkentässänumero2."); Console.WriteLine("Edessäsionjärvi."); if(arvottukentta==3) Console.WriteLine("Tervetuloapeliin, oletkentässänumero3."); Console.WriteLine("Oletmetsässä. Onpimeää."); Main-pääohjelmaan ei saa muutosten jälkeen jäädä yhtään if-lausetta. arvio omasta pistemäärästä (1-6): Tehtävä 4 (6 p.) Tee funktio, joka ottaa parametrina kokonaislukutaulukon. Funktio palauttaa true, jos taulukosta löytyy sama alkio kaksi kertaa tai useammin. Vastaavasti false, jos kukin alkio esiintyy vain kerran. Ohje/vinkki: Voit muuttaa taulukossa olevien alkioiden järjestystä. Bonus (+ 2 p.) Tee toinen funktio, jossa teet saman asian koskematta alkioiden järjestykseen. Kirjoita lyhyt analyysi siitä, kumpi funktioista on nopeampi ja miksi. arvio omasta pistemäärästä (1-6 + bonus): Tehtävä 5 (6 p.) Tee funktio SuurinViidenOsajono, joka antaa merkkijonon suurimman viiden perättäisen numeron (välillä 0-9) summan. Esimerkiksi alla oleva pääohjelma...

ITKP102 Ohjelmointi 1 C# 11.4.2014 5 / 7 publicstaticvoidmain() Stringjono="7316717653"; intsuurinsumma=suurinviidenosajono(jono); Console.WriteLine(suurinSumma); tulostaisi luvun 27, sillä 6 + 7 + 1 + 7 + 6 = 27. Oletetaan, että merkkijono sisältää vain numeroita, joten mitään poikkeuksia ei tarvitse ottaa huomioon. Alla ComTest-testit, jotka funktion pitää läpäistä. BONUS (+ 1 p.) Jos kaksi alintakin testiä menee läpi, niin saat yhden lisäpisteen. /// Teht1.SuurinViidenOsajono("7316717653") ===27; /// Teht1.SuurinViidenOsajono("012345") ===15; /// Teht1.SuurinViidenOsajono("43210123") ===10; /// Teht1.SuurinViidenOsajono("43210") ===10; /// Teht1.SuurinViidenOsajono("4321") ===10;// BONUS /// Teht1.SuurinViidenOsajono("") ===0;// BONUS arvio omasta pistemäärästä (1-6 + bonus): Huomautus Muistithan, että tässä tentissä piti tehdä enintään neljä tehtävää. Jos jostain syystä kuitenkin palautat viisi tehtävää, niin tarkastajalla ei ole muuta vaihtoehtoa kuin hylätä se tehtävä, josta olet saanut korkeimman pistemäärän. Palauta lunttilappu tutkimustarkoituksiin Ystävällisesti pyydän, että palauttaisit valvojalle myös lunttilapun jättäessäsi tenttipaperit. Jos palautat lunttilapun, niin suostut että sitä voidaan käyttää tutkimustarkoituksiin -- luonnollisesti nimettömänä ja ilman tunnistetietoja. Voit jättää myös lapun palauttamatta ja ottaa sen mukaasi tenttisalista.

ITKP102 Ohjelmointi 1 C# 11.4.2014 6 / 7 Vinkit Merkkijonosta yhden merkin ottaminen Voit lukea String-merkkijonosta yhden merkin, esimerkiksi ensimmäisen, seuraavasti. Stringjono="Ville"; charekakirjain=jono[0]; Samasta jonosta viimeisen merkin saat näin. charvikakirjain=jono[jono.length-1]; Substring Substring antaa merkkijonon osan. Metodista on mm. kaksi seuraavaa versiota. Substring(Int32): Palauttaa jonon alkaen annetusta indeksistä. Stringhenkilo="VilleVirtanen"; Stringsukunimi=henkilo.Substring(6); Console.WriteLine(sukunimi);//"Virtanen" Substring(Int32,Int32): Ensimmäinen parametri on palautettavan merkkijonon ensimmäisen merkin indeksi ja toinen parametri palautettavien merkkien määrä. Stringhenkilo="VilleVirtanen"; Stringetunimi=henkilo.Substring(0, 5);// firstname StringsukunimenOsa=henkilo.Substring(6, 5);// partofthelastname Console.WriteLine(etunimi+sukunimenOsa);//"VilleVirta" Numero kirjaimeksi Yhden numeron (joka on char-merkki) saa muutettua kokonaisluvuksi joko seuraavasti (helpompi ja koneen näkökulmasta tehokkaampi tapa). charmerkki='9'; intluku=merkki-'0'; tai int.parse-metodin avulla. Stringk1="9"; intluku=int.parse(k1); // nyt: luku==9

ITKP102 Ohjelmointi 1 C# 11.4.2014 7 / 7 Huom! int.parseottaa parametrinaan String-merkkijonon. Jos haluat muuttaa yhden char-merkin, esimerkiksi '9', merkkijonoksi, voit tehdä sen kirjoittamalla esimerkiksi näin. charmerkki='9'; intluku=int.parse("" +merkki); Array.Sort Järjestää taulukon. Alla esimerkki. int[]luvut=5,3,4,1; Array.Sort(luvut);// luvut-taulukkonyt: 1, 3, 4, 5. % (jakojäännös) -operaattori Jakojäännösoperaattori % laskee jakojäännöksen, joka saadaan kun merkin vasemmalla puolella oleva luku jaetaan oikealla puolella olevalla luvulla. Alla esimerkki. publicclasstentti publicstaticvoidmain(string[] args) Console.WriteLine(5% 2); // tulostaa: 1, koska5/2on2, jää1 Console.WriteLine(4% 2); // tulostaa: 0 Console.WriteLine(11% 7); // tulostaa: 4 Console.WriteLine(11% 11);// tulostaa: 0