17/20: Keittokirja IV



Samankaltaiset tiedostot
8/20: Luokat, oliot ja APIt

Ohjelmointi 1 / syksy /20: IDE

13/20: Kierrätys kannattaa koodaamisessakin

19/20: Ikkuna olio-ohjelmoinnin maailmaan

7/20: Paketti kasassa ensimmäistä kertaa

14/20: Keittokirja I

5/20: Algoritmirakenteita III

Digitaalitekniikan matematiikka Luku 10 Sivu 1 (14) Lukujärjestelmämuunnokset. 2 s s

11/20: Konepelti auki

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

Ohjelmoinnin perusteet Y Python

Lukujärjestelmät. Digitaalitekniikan matematiikka Luku 9 Sivu 3 (26) Lukujärjestelmät ja lukujen esittäminen Fe

TIEA341 Funktio-ohjelmointi 1, kevät 2008

6/20: Tietorakenteita

AS C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

9/20: Puhu mun stdinille

Ohjelmoinnin perusteet Y Python

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A Kandidaatintyö ja seminaari

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

4/20: Algoritmirakenteita II

Kesäkurssi Opettaja: Paavo Nieminen Tervetuloa!

TIEA341 Funktio-ohjelmointi 1, kevät 2008

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015

Automaattinen yksikkötestaus

Ohjelmoinnin perusteet Y Python

Tietorakenteet ja algoritmit syksy Laskuharjoitus 1

7. Laskutoimitukset eri lukujärjestelmissä 1 / 31

5. Laskutoimitukset eri lukujärjestelmissä

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin perusteet Y Python

TIE Tietorakenteet ja algoritmit 1. TIE Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit - syksy

1 Aritmeettiset ja geometriset jonot

Osoitin ja viittaus C++:ssa

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

1. Mitä tehdään ensiksi?

Ohjelmoinnin perusteet Y Python

TIEA341 Funktio-ohjelmointi 1, kevät 2008

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS Ti Kandidaatintyö ja seminaari

OHJ-1151 Ohjelmointi IIe

Ohjelmoinnin peruskurssi Y1

T Harjoitustyöluento

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia

Soft QA. Vaatimusten muutostenhallinta. Ongelma

Harjoitustyö. Jukka Larja T Tietokoneverkot

Ohjelmoinnin peruskurssi Y1

Ohjelmoinnin perusteet Y Python

ITKP102 Ohjelmointi 1 (6 op)

Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005

Python-ohjelmointi Harjoitus 5

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

Ongelma(t): Miten jollakin korkeamman tason ohjelmointikielellä esitetty algoritmi saadaan suoritettua mikro-ohjelmoitavalla tietokoneella ja siinä

Laskennan mallit

Solidity älysopimus ohjelmointi. Sopimus suuntautunut ohjelmointi

Ohjelmointi 1 C#, kevät 2014, tentti

TT00AA Ohjelmoinnin jatko (TT10S1ECD)

Ohjelmoinnin peruskurssien laaja oppimäärä

T Harjoitustyöluento

Kurssin sisältö. Kurssilla vähemmän. Johdatus ohjelmistotekniikkaan. Mitä on ohjelmistotekniikka? Miten ohjelmistoja suunnitellaan ja toteutetaan?

Tietokoneverkot. T Tietokoneverkot (4 op) viimeistä kertaa CSE-C2400 Tietokoneverkot (5 op) ensimmäistä kertaa

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

Ohjelmoinnin peruskurssien laaja oppimäärä

Kandidaatintyö Elektroniikan laitoksella

Algoritmit. Ohjelman tekemisen hahmottamisessa käytetään

S11-04 Kompaktikamerat stereokamerajärjestelmässä. Projektisuunnitelma

T harjoitustyö, kevät 2012

Tieto- ja viestintätekniikan opinnot Jyväskylän yliopistossa

Ohjelmoinnin peruskurssi Y1

Algoritmit 1. Luento 3 Ti Timo Männikkö

TAMPEREEN TEKNILLINEN YLIOPISTO

useampi ns. avain (tai vertailuavain) esim. opiskelijaa kuvaavassa alkiossa vaikkapa opintopistemäärä tai opiskelijanumero

ITKP102 Ohjelmointi 1 (6 op)

Luento 5. Timo Savola. 28. huhtikuuta 2006

Chapel. TIE Ryhmä 91. Joonas Eloranta Lari Valtonen

Ohjelmoinnin peruskurssien laaja oppimäärä

Satunnaisalgoritmit. Topi Paavilainen. Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Tietoyhteiskunnan perustaidot. Kesäkuu 2014

Käyttöliittymä ja tuotantokäsikirjoitus. Heini Puuska

Sisältö. Työn idea Protokollat. Harjoitustyön käytäntöjä. Työn demoaminen. Etäisyysvektori Linkkitila. Palvelin Moodle SSH-tunnelit

15. Ohjelmoinnin tekniikkaa 15.1

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

Kuka on arvokas? Liite: EE2015_kuka on arvokas_tulosteet.pdf tulosta oppilaiden lomakkeet tehtäviin 1 ja 2.

KTKO104. Luento

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

ANSI/IEEE Std

C = P Q S = P Q + P Q = P Q. Laskutoimitukset binaariluvuilla P -- Q = P + (-Q) (-Q) P Q C in. C out

Ohjelmoinnin perusteet Y Python

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012

Ohjelmoinnin jatkokurssi, kurssikoe

4. Lausekielinen ohjelmointi 4.1

Ohjelmoinnin perusteet Y Python

Ohjelmoinnin perusteet Y Python

Tapani Ahola. Lyhytterapiainstituutti Oy

KESKI-SUOMEN MAAKUNNAN JA LÄHIKUNTIEN LUKIOIDEN TIETOTEKNIIKAN II KILPAILU

Opiskelumotivaatio Tiina Kerola

7.4 Sormenjälkitekniikka

Ohjelmoinnin perusteet Y Python

Transkriptio:

Ohjelmointi 1 / syksy 2007 17/20: Keittokirja IV Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/10

Tavoitteita ennen kurssin loppua Demovastausten hutkiminen: oikaistaan yleisiä virheitä ja väärinymmärryksiä. Kantapää on hyvä oppimisväline. Tärkeimpien asioiden kertaamista: Viimeisillä luennoilla ehtii käymään uudelleen läpi asioita, jotka tuottavat vaikeuksia. Ehdotuksia kannattaa esittää! Eniten ehdotetut toteutuvat. Koodauskäytänteissä loppuun asti: sano mitä tarkoitat (Eli tehdään saman tien hyvää koodia eikä ruttuista spagettia) Ohjelmointi 1 / syksy 2007 p.2/10

Tämän luennon rakenne Eka sessio: Viime viikon keittokirjasta jäi reseptejä tekemättä; jatketaan sen minkä ehtii. Toka sessio: Välipala: Käytännön taitona binääri/heksa/oktaali -muunnokset etumerkittömille kokonaisluvuille Välipala: Käytännön taitona yksinkertaisen syntaksin määritteleminen; syntaksikäsitteen sovelluksia. Alustavasti Oppikirja-algoritmeja : yksinkertainen lajittelu, sanojen esiintymistiheyden analysointi Ohjelmointi 1 / syksy 2007 p.3/10

Tehtäväkuvauksesta ohjelmaksi 6 Tehdään alusta alkaen kirjoitusnopeustesti. Tehtäväkuvauksen saaminen, domain analysis Algoritmin miettiminen; rajapintojen miettiminen Jakaminen alialgoritmeiksi; näiden rajapinnat Algoritmien toteuttaminen yksi kerrallaan. Koetetaanpa ympätä tähän keissiin tuollainen aihe: Dynaamisen eli vaihtuvakokoisen tietorakenteen idea: ArrayList<AlkioidenTyyppi> Ohjelmointi 1 / syksy 2007 p.4/10

Tehtäväkuvauksesta ohjelmaksi 7 Katsotaan, miten tehtäisiin Mandelbrotin joukon visualisointi. Tässä joutui sen verran pähkäilemään, ettei ihan luennon aikana onnistu toistamaan, mutta todetaan samat vaiheet kuin aina ja katsotaan koodi kehitysvaiheineen läpi. Tehtäväkuvauksen saaminen, domain analysis Algoritmin miettiminen; rajapintojen miettiminen Jakaminen alialgoritmeiksi Algoritmien toteuttaminen yksi kerrallaan. Ohjelmointi 1 / syksy 2007 p.5/10

Binääriluvusta heksaksi tai oktaaliksi helppo homma! Keksitään etumerkitön binääriluku, ja muutetaan se heksaluvuksi Muutetaan se oktaaliluvuksi Toisin päin: Keksitään heksa- ja oktaaliluvut, ja muutetaan ne etumerkittömäksi binääriluvuksi. Etumerkillisten binäärilukujen esitysmuoto (ns. kahden komplementtiesitys) tulee jatkokursseilla tai itseopiskellen! Ohjelmointi 1 / syksy 2007 p.6/10

Syntaksin määritteleminen: miten ja erityisesti miksi? Määritellään syntaksi merkkijonolle, jolla voi kertoa säätilan (sataa/paistaa aurinko/on pilvipouta) seuraavissa paikoissa: Agora, Jyväskylä, Vaajakoski. Semanttisia tarkistuksia ei tarvitse miettiä, siis Agorassa voi sekä sataa että paistaa; esim: Agorassa sataa; Jyvaskylassa on pilvipouta; Jyvaskylassa paistaa aurinko; Agorassa paistaa aurinko Miksi syntaksiasioita mietitään ohj1:llä (vain pari esimerkkiä): 1. Kyky määritellä syntaksi implikoi kykyä ymmärtää jonkun toisen kirjoittama syntaksi esimerkiksi ohjelmointikieli 2. Esim. kätevän printf-tulostuksen ensimmäinen parametri on tietyn syntaksin mukainen merkkijono ( katsotaan dokumentaatiosta kohta, jossa syntaksi on määritelty). 3. Esim. kätevien Regular Expression -työkalujen käyttäminen on olennaisesti yksinkertaisen syntaksin määrittelyä. 4. Tietokoneessa esitetään monesti kaikenlaista tietoa jonkun syntaksin mukaisena merkkijonona. Syntaksin määrittely (tai olemassaolevan syntaksin valitseminen) voi olla osa sovellusohjelman tekemistä. Esim. HTML-tiedostot, erilaiset XML-formaatit,... (Ohjelmointi 1 on pohja monille jatkokursseille, joissa asiaan syvennytään; kannattaa siis jo alustavasti miettiä.) Ohjelmointi 1 / syksy 2007 p.7/10

Oppikirja-algoritmeja Jokohan voimme palata ensimmäisen luennon esitysmuotoon: kalvot leikkimielisenä Java-koodina? luento = WorldOfAgora.getCurrentLecture(); try{ luento.teachsubject("yksinkertainen lajittelu"); luento.teachsubject("sanojen esiintymistiheys" + " - avuksi luokka HashMap"); } catch (LectureOutOfTimeException e) { luento.postponeremaininguntiltomorrow(); } finally { everybody.tolunch(); }... Siis yritetään käydä jotain läpi, mutta jos yllättävästi aika loppuu kesken, siirretään käsittely huomiseen. Ohjelmointi 1 / syksy 2007 p.8/10

Alkioiden lajittelu (Tehtäväkuvauksesta ohjelmaksi 8) Toteuta kokonaislukutaulukon lajittelu. Tehtäväkuvauksen saaminen, domain analysis Algoritmin miettiminen; rajapintojen miettiminen Jakaminen alialgoritmeiksi Algoritmien toteuttaminen yksi kerrallaan. Tehdään nyt tosi yksinkertainen lajittelu kunhan saadaan joku ratkaisu. Esim. oppikirjassamme on esitelty useita vaihtoehtoisia lajittelualgoritmeja luvussa 10 Kokoelmat. Ohjelmointi 1 / syksy 2007 p.9/10

Sanojen esiintymistiheys tekstissä (Tehtäväkuvauksesta ohjelmaksi 9) Laske sanojen esiintymistiheys merkkijonossa. Tehtäväkuvauksen saaminen, domain analysis Algoritmin miettiminen; rajapintojen miettiminen Jakaminen alialgoritmeiksi Algoritmien toteuttaminen yksi kerrallaan. (Java-alusta tarjoaa ruohonjuuritason välineet tähän ja moneen muuhun! Sovellus itse on kuitenkin karkean tason algoritmi, ja sen tekeminen edellyttää tietoa välineiden olemassaolosta ja taitoa käyttää niitä) Ohjelmointi 1 / syksy 2007 p.10/10