TIEA341 Funktio-ohjelmointi 1, kevät 2008
|
|
- Akseli Pekka Kahma
- 7 vuotta sitten
- Katselukertoja:
Transkriptio
1 TIEA341 Funktio-ohjelmointi 1, kevät 2008 Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 10. tammikuuta 2008
2 Arvot... ovat laskutoimituksen lopputuloksia... ovat lausekkeita, joihin ei voi soveltaa mitään laskusääntöä... voivat olla atomisia: 42, a... voivat olla rakenteisia: [1,2,3] on lista, johon kuuluvat atomiset arvot 1, 2 ja 3 (tässä järjestyksessä ja mahdolliset duplikaatit säilyttäen) "kissa" on merkkijono, johon kuuluvat atomiset arvot k, i, s, s ja a (tässä järjestyksessä ja mahdolliset duplikaatit säilyttäen) (42, "kissa") on pari, jonka ensimmäinen alkio on atominen arvo 42 ja toinen alkio on merkkijono "kissa"
3 Tyypit jokaisella lausekkeella (ja siten arvolla) on tyyppi, merkitään: lauseke :: tyyppi esimerkiksi: 42 :: Integer a :: Char "kissa":: String 3 * (9 + 5) :: Integer simple :: Integer (2+3, "kissa") :: (Integer, String) huomaa: tyypinnimet alkavat isolla kirjaimella, funktionnimet pienellä!
4 Perustyyppi Integer arvot (matemaattisia) kokonaislukuja ei kiinteätä ala- eikä ylärajaa vain vapaan muistin määrä rajoittaa laskenta hidastuu lukujen suuruuden kasvaessa harjoituskäytössä paras kokonaislukutyyppi tarpeellinen myös monissa sovelluksissa kryptografia laskentatoimi
5 Perustyyppi Int vastaa suunnilleen Javan ym. int-tyyppiä lukualue vähintään (30 bittiä) minbound :: Int maxbound :: Int suhteellisen nopea, nopeus riippumaton luvun suuruudesta kun lukualue riittää ja nopeudella on merkitystä ylivuoto on bugi ohjelmassa, varo!
6 Perustyypit Float ja Double tutut liukulukutyypit Float vähintään IEEE single precision Float vähintään IEEE double precision IEEE-semantiikka ei ole taattua muista liukulukulaskennan vaarat
7 Lukuvakiot kokonaisluvut: 1234 (kymmenjärjestelmä) 0o2322 (kahdeksanjärjestelmä) 0x4d2 (kuusitoistajärjestelmä) liukuluvut: e-9 HUOM!.2 ja 2. ovat kiellettyjä ts. numeroita pitää olla desimaalipisteen molemmin puolin kuormitettuja liukulukuvakio on Float tai Double sen mukaan, mitä käyttöyhteydessä tarvitaan kokonaislukuvakio on mitä tahansa lukutyyppiä sen mukaan, mitä käyttöyhteydessä tarvitaan jos tilanteeseen sopii useampi lukutyyppi, valitaan Integer, jos se sopii, ja muuten Double
8 Aritmetiikka -a vastaluku kaikki lukutyypit a + b yhteenlasku kaikki lukutyypit a * b kertolasku kaikki lukutyypit a / b jakolasku liukulukutyypit a div b jakolasku kokonaislukutyypit a mod b jakojäännös kokonaislukutyypit a quot b jakolasku kokonaislukutyypit a rem b jakojäännös kokonaislukutyypit Huomaa: on takahipsu operandien tulee olla keskenään samaa tyyppiä div pyöristää alaspäin quot pyöristää nollaa kohti m * (n div m) + n mod m == n m * (n quot m) + n rem m == n
9 Lisää aritmetiikkaa abs a 8 a kaikki lukutyypit >< 1 jos a > 0 signum a 0 jos a = 0 kaikki lukutyypit >: 1 jos a < 0 1 recip a liukulukutyypit a pi π liukulukutyyppiä exp a e n liukulukutyypit log a ln a liukulukutyypit sqrt a a liukulukutyypit a ˆ b a b kokonaislukutyypit a ˆˆ b a b a liuku-, b kokonaislukutyyppiä a ** b a b liukulukutyypit logbase a b log a b liukulukutyypit sin a sin a liukulukutyypit cos a cos a liukulukutyypit tan a tan a liukulukutyypit
10 Lukujen tyyppimuunnokset liukuluvusta kokonaisluvuksi: truncate a katkaisemalla round a lähimpään kokonaislukuun (puolikas parilliseen) floor a a eli suurin enintään a:n kokoinen kokonaisluku ceiling a a eli pienin vähintään a:n kokoinen kokonaisluku kokonaisluvusta liukuluvuksi: fromintegral a automaattisia muunnoksia ei ole!
11 Perustyyppi Char merkkien tyyppi (vrt. Javan char) periaatteessa kattaa koko Unicode-merkistön (ISO 10646) käytännössä Unicode-tuki on puutteellinen suomea pystyy toki käyttämään merkkivakiot pitkälti kuten Javassa E \n \32 on sama kuin \o40 on sama kuin \x20 on sama kuin ei ole lukutyyppi! tyyppimuunnokset: fromenum = 32 toenum 32 :: Char = toenum on kuormitettu, kohdetyypin pitää selvitä yhteydestä (kuten edellä)
12 Operaattorit ovat funktioita (+) * 4 (*) mod 4 mod 3 4 Huomaa syntaksi: funktion nimi takahipsuissa tekee siitä operaattorin operaattorin nimi sulkeissa tekee siitä funktion operaattorinimet muodostuvat symboleista funktionimet muodostuvat kirjaimista ja numeroista (ja alkavat kirjaimella)
13 Mikä mahtaa olla funktion tyyppi? Kysytään kääntäjältä: $ ghci _ / _ \ /\ /\/ (_) / /_\// /_/ / / GHC Interactive, version 6.6.1, for Haskell 98. / /_\\/ / / \ /\/ /_/\ / _ Type :? for help. Loading package base... linking... done. Prelude> let simple x y z = x * (y + z) Prelude> :type simple simple :: (Num a) => a -> a -> a -> a Prelude> :type (+) (+) :: (Num a) => a -> a -> a Prelude> :type quot quot :: (Integral a) => a -> a -> a Prelude> :type floor floor :: (RealFrac a, Integral b) => a -> b Prelude> :quit Leaving GHCi. $
14 Tulkintaohje Tyyppi1 -> Tyyppi2 -> Tyyppi3 tarkoittaa funktiota, joka ottaa kaksi parametria (tyypeiltään Tyyppi1 ja Tyyppi2) ja palauttaa tyyppiä Tyyppi3 olevan arvon; (Num a) => tarkoittaa, että funktio on ylikuormitettu siten, että a:n paikalle tyypissä kelpaa mikä tahansa lukutyyppi; (Integral a) => tarkoittaa, että a:n paikalle kelpaa mikä tahansa kokonaislukutyyppi. (Fractional a) =>, (RealFrac a) => ja (Floating a) => tarkoittavat jokainen, että a:n paikalle kelpaa mikä tahansa liukulukutyyppi. Näitä voidaan yhdistellä, esim. (RealFrac a, Integral b) => tarkoittaa, että a:n paikalle käy liukulukutyyppi ja b:n paikalle kokonaislukutyyppi.
15 Kääntäjä laskimena... $ ghci _ / _ \ /\ /\/ (_) / /_\// /_/ / / GHC Interactive, version 6.6.1, for Haskell 98. / /_\\/ / / \ /\/ /_/\ / _ Type :? for help. Loading package base... linking... done. Prelude> let simple x y z = x * (y + z) Prelude> simple Prelude> simple Prelude> 42 div Prelude> :quit Leaving GHCi. $
16 Mitkä ovat ohjelmoinnin kolme tärkeintä käsitettä?
17 Mitkä ovat ohjelmoinnin kolme tärkeintä käsitettä? abstrahoiminen abstrahoiminen abstrahoiminen
18 Abstrahoiminen I: Nimeäminen circumference :: Double -> Double circumference r = 2 * pi * r tässä nimetään funktio tyypin määritteleminen ei ole pakollista mutta se on hyvää tyyliä circumference :: Double -> Double circumference r = let diameter = 2 * r in pi * diameter let ja in ovat avainsanoja diameter on tässä paikallinen nimi diameter näkyy vain let-in-rakenteen sisällä nimi voi olla joko muuttuja tai funktio funktiolla on parametreja muuttujalla ei ole oikeastaan muuttuja on funktio, jolla on nolla parametria!
19 diameter :: Double diameter = 42 circumference :: Double -> Double circumference r = let diameter = 2 * r in pi * diameter Kysymys: Kumpaa diameteriä käytetään lausekkeessa pi * diameter?
20 diameter :: Double diameter = 42 circumference :: Double -> Double circumference r = let diameter = 2 * r in pi * diameter Kysymys: Kumpaa diameteriä käytetään lausekkeessa pi * diameter? Vastaus: Sisempää (siis 2 * r), sillä sisempi määritelmä peittää ulomman määritelmän.
21 Määrittelyt ja lausekkeet Haskellin syntaksi jakaantuu selkeästi määrittelyjoukkoihin ja lausekkeisiin lauseke laskee arvon määrittelyjoukkoon kuuluu yhden tai useamman nimen määrittely, esim. diameter :: Double diameter = 42 circumference :: Double -> Double circumference r = let diameter = 2 * r in pi * diameter näitä ei pidä sekottaa keskenään! lauseke voi sisältää paikallisia määrittelyjoukkoja let-in-rakenteen avulla
22 GHCi:n kehoite haluaa normaalisti lausekkeita, mutta let-avainsanalla voi aloittaa rivin loppuun asti jatkuvan määrittelyjoukon (erota määrittelyt puolipisteellä): $ ghci _ / _ \ /\ /\/ (_) / /_\// /_/ / / GHC Interactive, version 6.6.1, for Haskell 98. / /_\\/ / / \ /\/ /_/\ / _ Type :? for help. Loading package base... linking... done. Prelude> let diameter = 42 ; circumference r = let diameter = 2 * r in pi * diameter Prelude> circumference Prelude> :quit Leaving GHCi. $
23 Abstrahoiminen II: Tietorakenteet Ongelma: Haluan laskea kolmen ympyrän ympärysmitan summan Ratkaisu?: circumference :: Double -> Double circumference r = 2 * pi * r threecirclescircum :: Double -> Double -> Double -> Double threecirclescircum a b c = circumference a + circumference b + circumference c
24 Yleistetään: tehdään funktio, joka laskee niin monen ympyrän ympärysmitan summan kuin halutaan. circumference :: Double -> Double circumference r = 2 * pi * r manycirclescircum ::??? -> Double manycirclescircum xs =???
25 Listat Jos T on tyyppi, niin [T] on T-tyyppisten arvojen lista. Lista luodaan luettelemalla: [1,2,3,4]. Tyhjä lista on []. x : xs tarkoittaa listaa, joka saadaan lisäämällä alkio x listan xs alkuun Lista xs ei tässä muutu.
26 Näin ollen: Funktion tyyppi lienee manycirclescircum :: [Double] -> Double Jos ei ole ympyröitä, ympärysmittojen summa lienee nolla: manycirclescircum [] = 0 Jos on monta ympyrää, summa lienee ekan ympyrän ympärysmitan ja muiden ympyröiden ympärysmitan summan summa: manycirclescircum (x:xs) = circumference x + manycirclescircum xs
27 circumference :: Double -> Double circumference r = 2 * pi * r manycirclescircum :: [Double] -> Double manycirclescircum [] = 0 manycirclescircum (x:xs) = circumference x + manycirclescircum xs
28 Kokeillaanpa. Tallennetaan edellinen tiedostoon many.hs ja sitten: $ ghci many.hs _ / _ \ /\ /\/ (_) / /_\// /_/ / / GHC Interactive, version 6.6.1, for Haskell 98. / /_\\/ / / \ /\/ /_/\ / _ Type :? for help. Loading package base... linking... done. [1 of 1] Compiling Main ( many.hs, interpreted ) Ok, modules loaded: Main. *Main> manycirclescircum [] 0.0 *Main> manycirclescircum [3,4,5] *Main> :quit Leaving GHCi. $
29 Hahmonsovitus funktion parametri voi olla hahmo hahmoksi kelpaa aina vakio hahmonsovitus epäonnistuu, jos argumentin arvo ei ole sama kuin ko. vakion arvo hahmoksi kelpaa aina myös muuttuja sovitus onnistuu aina muuttuja näkyy paikallisena muuttujana ja sen arvo on argumentin arvo listahahmoksi kelpaa myös (hahmo1 : hahmo2) sovitus epäonnistuu, jos argumentti on tyhjä lista listan ekaan alkioon sovitetaan hahmo1:stä listan siihen osaan, joka saadaan poistamalla listasta ensimmäinen alkio, sovitetaan hahmo2:sta funktiolla voi olla useita peräkkäisiä määritelmiä; jos ensimmäisen hahmonsovitus epäonnistuu, niin kokeillaan seuraavaa jne.
30 Kuviomodulin alkua Tarvitaan moduli 1 erilaisten geometristen kuvioiden käsittelemiseen. Aluksi sen tulee kyetä laskemaan pinta-aloja. 1 Uudelleen käytettävissä oleva kokoelma tyyppien, vakioiden ja funktioiden määritelmiä.
31 Modulin rakenne module Shape (...) where... module ja where ovat avainsanoja wheren jälkeen tulee määritelmäjoukko Shape on itse valittu modulin nimi alkaa aina isolla kirjaimella moduli laitetaan aina omaan tiedostoonsa tiedoston nimi on Modulinnimi.hs nyt siis Shape.hs
32 Tyyppejä voitaisiin tehdä areacircle, arearectangle jne onnistuisiko määritellä oma tyyppi Shape ja siitä funktio area :: Shape -> Double?
33 Tyyppejä voitaisiin tehdä areacircle, arearectangle jne onnistuisiko määritellä oma tyyppi Shape ja siitä funktio area :: Shape -> Double? onnistuu: data Shape = Circle Double Square Double Shape on tyypin nimi Circle ja Square ovat muodostimia muodostimet alkavat isolla kirjaimella muodostimia voi käyttää funktioina: Circle :: Double -> Shape Square :: Double -> Shape
34 Hyödyllisempi tyyppi data Shape = Rectangle Double Double Ellipse Double Double RtTriangle Double Double Polygon [(Float, Float)] deriving Show Rectangle s1 s2 on suorakaide, jonka sivujen pituudet ovat s1 ja s2 Ellipse s1 s2 on ellipsi, jonka säteet ovat s1 ja s2 RtTriangle s1 s2 on suorakulmainen kolmio, jonka kateettien pituudet ovat s1 ja s2 Polygon [v1, v2,..., vn] on N-sivuinen monikulmio, jonka kulmat ovat pisteissä vi, jotka ovat (x,y)-pareja. deriving on avainsana; deriving Show mahdollistaa tyypin arvojen muuttamisen merkkijonoiksi haluttaessa
35 Tai ehkäpä data Shape = Rectangle Side Side Ellipse Radius Radius RtTriangle Side Side Polygon [Vertex] deriving Show type Radius= Double type Side = Double type Vertex= (Double, Double) type on avainsana Radius, Side ja Vertex ovat tyypinnimiä Radius ja Side ovat Doublen synonyymejä Vertex on (Double,Double):n synonyymi
Tyyppejä ja vähän muutakin. TIEA341 Funktio ohjelmointi 1 Syksy 2005
Tyyppejä ja vähän muutakin TIEA341 Funktio ohjelmointi 1 Syksy 2005 Viime luennolla... Haskellin alkeita pääasiassa Hello World!... ja muita tutunoloisia ohjelmia Haskellilla Haskellin voima on kuitenkin
LisätiedotTIEA341 Funktio-ohjelmointi 1, kevät 2008
TIEA341 Funktio-ohjelmointi 1, kevät 2008 Luento 11 Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 21. tammikuuta 2008 Listakomprehensio Uusi tapa luoda (ja muokata) listoja: [ lauseke
LisätiedotFunktionimien kuormitus. TIES341 Funktio ohjelmointi 2 Kevät 2006
Funktionimien kuormitus TIES341 Funktio ohjelmointi 2 Kevät 2006 Kertausta ongelma Mikä on (+) operaattorin tyyppi? Num a => a -> a -> a Mikä on (==) operaattorin tyyppi? Eq a => a -> a -> a Mikä on show
LisätiedotLaajennetaan vielä Ydin-Haskellia ymmärtämään vakiomäärittelyt. Määrittely on muotoa
2.6. TIETOKONE LASKIMENA 23 Edellä esitetty Ydin-Haskell on hyvin lähellä sitä kieltä, jota GHCi (Glasgow Haskell Compiler, Interactive) sekä muut Haskell-järjestelmät suostuvat ymmärtämään. Esimerkiksi:
Lisätiedottään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla
2.5. YDIN-HASKELL 19 tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla kirjaimilla. Jos Γ ja ovat tyyppilausekkeita, niin Γ on tyyppilauseke. Nuoli kirjoitetaan koneella
LisätiedotTIEA341 Funktio-ohjelmointi 1, kevät 2008
TIEA341 Funktio-ohjelmointi 1, kevät 2008 Luento 4 Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 17. tammikuuta 2008 Modulin viimeistelyä module Shape ( Shape ( Rectangle, E l l i p
LisätiedotTIEA341 Funktio-ohjelmointi 1, kevät 2008
TIEA341 Funktio-ohjelmointi 1, kevät 2008 Luento 5 Ympärysmitta. Puut. Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 21. tammikuuta 2008 CASE: YMPÄRYSMITTA Lasketaan kuvioiden ympärysmittoja
LisätiedotTIEA341 Funktio-ohjelmointi 1, kevät 2008
TIEA341 Funktio-ohjelmointi 1, kevät 2008 Luento 3 Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 14. tammikuuta 2008 Viittausten läpinäkyvyyden 1 periaatteet 1. Lausekkeen arvo ei riipu
LisätiedotAlgebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005
Algebralliset tietotyypit ym. TIEA341 Funktio ohjelmointi 1 Syksy 2005 Tällä luennolla Algebralliset tietotyypit Hahmonsovitus (pattern matching) Primitiivirekursio Esimerkkinä binäärinen hakupuu Muistattehan...
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ätiedotTIEA341 Funktio-ohjelmointi 1, kevät 2008
TIEA341 Funktio-ohjelmointi 1, kevät 2008 Luento 10 Todistamisesta Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 21. tammikuuta 2008 Samuuden todistaminen usein onnistuu ihan laskemalla
LisätiedotTIEA341 Funktio-ohjelmointi 1, kevät 2008
TIEA34 Funktio-ohjelmointi, kevät 2008 Luento 3 Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 2. tammikuuta 2008 Ydin-Haskell: Syntaksi Lausekkeita (e) ovat: nimettömät funktiot: \x
LisätiedotTIEA341 Funktio-ohjelmointi 1, kevät 2008
TIEA341 Funktio-ohjelmointi 1, kevät 2008 Luento 14: Monadit Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 21. tammikuuta 2008 Tyyppien tyypit eli luonteet engl. kind tyyppinimet, kuten
LisätiedotTähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python
Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python 31. tammikuuta 2009 Ohjelmointi Perusteet Pythonin alkeet Esittely Esimerkkejä Muuttujat Peruskäsitteitä Käsittely
LisätiedotLuku 3. Listankäsittelyä. 3.1 Listat
Luku 3 Listankäsittelyä Funktio-ohjelmoinnin tärkein yksittäinen tietorakenne on lista. Listankäsittely on paitsi käytännöllisesti oleellinen aihe, se myös valaisee funktio-ohjelmoinnin ideaa. 3.1 Listat
LisätiedotPythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python
Pythonin alkeet Syksy 2010 Pythonin perusteet: Ohjelmointi, skriptaus ja Python 8. marraskuuta 2010 Ohjelmointi Perusteet Peruskäsitteitä Olio-ohjelmointi Pythonin alkeet Esittely Esimerkkejä Muuttujat
LisätiedotLisää laskentoa. TIEA341 Funktio ohjelmointi 1 Syksy 2005
Lisää laskentoa TIEA341 Funktio ohjelmointi 1 Syksy 2005 Kertausta: Laajennettu aritmetiikka Lasketaan rationaaliluvuilla vakiot yhteen, vähennys, kerto ja jakolasku Laajennetaan sitä määrittelyillä: vakio
Lisätiedot815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 6 Vastaukset Harjoituksen aiheena on funktionaalinen ohjelmointi Scheme- ja Haskell-kielillä. Voit suorittaa ohjelmat osoitteessa https://ideone.com/
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ätiedotUusi näkökulma. TIEA341 Funktio ohjelmointi 1 Syksy 2005
Uusi näkökulma TIEA341 Funktio ohjelmointi 1 Syksy 2005 Aloitetaan alusta... Otetaan uusi näkökulma Haskelliin ohjelmointi laskentana kertausta toisaalta, uusia käsitteitä toisaalta helpottanee sitten
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ä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ätiedotDemo 7 ( ) Antti-Juhani Kaijanaho. 9. joulukuuta 2005
Demo 7 (14.12.2005) Antti-Juhani Kaijanaho 9. joulukuuta 2005 Liitteenä muutama esimerkki Ydin-Haskell-laskuista. Seuraavassa on enemmän kuin 12 nimellistä tehtävää; ylimääräiset ovat bonustehtäviä, joilla
LisätiedotLaiska laskenta, korekursio ja äärettömyys. TIEA341 Funktio ohjelmointi Syksy 2005
Laiska laskenta, korekursio ja äärettömyys TIEA341 Funktio ohjelmointi Syksy 2005 Muistatko graafinsievennyksen? DAG esitys ja graafinsievennys DAG esitys Lausekkeen rakennepuu, jossa yhteiset alilausekkeet
LisätiedotHarjoitus 1 -- Ratkaisut
Kun teet harjoitustyöselostuksia Mathematicalla, voit luoda selkkariin otsikon (ja mahdollisia alaotsikoita...) määräämällä soluille erilaisia tyylejä. Uuden solun tyyli määrätään painamalla ALT ja jokin
LisätiedotPerusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti
C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) (Erittäin) helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Ei selvää että main funktion pitikin
Lisätiedot5.3 Laskimen muunnelmia 5.3. LASKIMEN MUUNNELMIA 57
5.3. LASKIMEN MUUNNELMIA 57 Samaan sarjaan kuuluu seuraavakin funktio, jonka määritelmä esittelee muutenkin hyödyllisen tavan kirjoittaa ohjelmia: getline :: IO String getline = getchar λc case c of \n
LisätiedotTIEA341 Funktio-ohjelmointi 1, kevät 2008
TIEA341 Funktio-ohjelmointi 1, kevät 2008 Luento 9 Kombinaattoreista Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 21. tammikuuta 2008 Currying Haskell-funktio ottaa aina vain yhden
LisätiedotPerusteet. Pasi Sarolahti Aalto University School of Electrical Engineering. C-ohjelmointi Kevät Pasi Sarolahti
C! Perusteet 19.1.2017 Palautteesta (1. kierros toistaiseksi) Toistaiseksi helppoa Miksi vain puolet pisteistä? Vaikeinta oli ohjelmointiympäristön asennus ja käyttö Vaikeaa eroavuudet Pythonin ja C:n
LisätiedotEsimerkki: Laskin (alkua) TIEA341 Funktio ohjelmointi 1 Syksy 2005
Esimerkki: Laskin (alkua) TIEA341 Funktio ohjelmointi 1 Syksy 2005 Esimerkki: Laskin Liukulukulaskentaa Yhteen, vähennys, kerto ja jakolaskut Syötteenä laskutehtävä, tulosteena tulos tai virheilmoitus
LisätiedotAlgoritmit 1. Demot Timo Männikkö
Algoritmit 1 Demot 1 25.-26.1.2017 Timo Männikkö Tehtävä 1 (a) Algoritmi, joka laskee kahden kokonaisluvun välisen jakojäännöksen käyttämättä lainkaan jakolaskuja Jaettava m, jakaja n Vähennetään luku
Lisätiedot5.1 Tyyppiparametrit. Nyt lisäämme parametrit myös data-määrittelyihin: data Nimi tp 1 tp 2 tp 3... tp k =...
5.1 Tyyppiparametrit Nyt lisäämme parametrit myös data-määrittelyihin: data Nimi tp 1 tp 2 tp 3... tp k =... Lisäämme ne myös type- ja newtype-määrittelyihin. Nämäkin parametrit tp i kirjoitetaan pienellä
LisätiedotOpiskelijan pikaopas STACK-tehtäviin. Lassi Korhonen, Oulun yliopisto
Opiskelijan pikaopas STACK-tehtäviin Lassi Korhonen, Oulun yliopisto 21.3.2016 SISÄLLYSLUETTELO Oppaan käyttäminen... 2 Vastauksen syöttämisen perusteet... 2 Operaatiot... 2 Luvut ja vakiot... 3 Funktiot...
LisätiedotLyhyt kertaus osoittimista
, syksy 2007 Kertausta Luento 10 12.10.2007 Syksy 2007 1 Lyhyt kertaus osoittimista char *p; /* char, int, jne ilmoittavat, minkä tyyppisiä */ Keskusmuisti int *q; /* olioita sisältäviin muistilohkoihin
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ätiedotYdin-Haskell Tiivismoniste
Ydin-Haskell Tiivismoniste Antti-Juhani Kaijanaho 8. joulukuuta 2005 1 Abstrakti syntaksi Päätesymbolit: Muuttujat a, b, c,..., x, y, z,... Tyyppimuuttujat α, β, γ,... Koostimet (data- ja tyyppi-) C, D,...,
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ätiedotKielioppia: toisin kuin Javassa
Object Pascal Pascal kielen oliolaajennus (Inprise/Borland:n oma) luokat Voit uudelleenkäyttää luomiasi objekteja esim. komponentteja Periytyminen Kielioppia: toisin kuin Javassa Ei eroa isojen ja pienien
LisätiedotJäsennys. TIEA341 Funktio ohjelmointi 1 Syksy 2005
Jäsennys TIEA341 Funktio ohjelmointi 1 Syksy 2005 Muistutus: Laskutehtävä ja tulos data Laskutehtava = Luku Double Yhteen Laskutehtava Laskutehtava Vahennys Laskutehtava Laskutehtava Tulo Laskutehtava
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ätiedotAlgoritmit 1. Demot Timo Männikkö
Algoritmit 1 Demot 1 31.1.-1.2.2018 Timo Männikkö Tehtävä 1 (a) Algoritmi, joka tutkii onko kokonaisluku tasan jaollinen jollain toisella kokonaisluvulla siten, että ei käytetä lainkaan jakolaskuja Jaettava
LisätiedotHaskell ohjelmointikielen tyyppijärjestelmä
Haskell ohjelmointikielen tyyppijärjestelmä Sakari Jokinen Helsinki 19. huhtikuuta 2004 Ohjelmointikielten perusteet - seminaarityö HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos 1 Johdanto 1 Tyyppien
Lisätiedot17. 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ä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ätiedotMaatalous-metsätieteellinen tiedekunta Ympäristöekonomia Kansantaloustiede ja matematiikka
1. Selitä mitä tarkoittavat a) M2 b) vaihtoehtoiskustannus. Anna lisäksi esimerkki vaihtoehtoiskustannuksesta. (7 p) Vastaus: a) Lavea raha. (1 p) M1 (Yleisön hallussa olevat lailliset maksuvälineet ja
Lisätiedot20. 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ätiedotSisä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ätiedotMatriiseista. Emmi Koljonen
Matriiseista Emmi Koljonen 3. lokakuuta 22 Usein meillä on monta systeemiä kuvaavaa muuttujaa ja voimme kirjoittaa niiden välille riippuvaisuuksia, esim. piirin silmukoihin voidaan soveltaa silmukkavirtayhtälöitä.
Lisätiedot9. Vektorit. 9.1 Skalaarit ja vektorit. 9.2 Vektorit tasossa
9. Vektorit 9.1 Skalaarit ja vektorit Skalaari on koon tai määrän mitta. Tyypillinen esimerkki skalaarista on massa. Lukumäärä on toinen hyvä esimerkki skalaarista. Vektorilla on taas suuruus ja suunta.
LisätiedotOhjelmoinnin peruskurssi Y1
Ohjelmoinnin peruskurssi Y1 CS-A1111 12.9.2018 CS-A1111 Ohjelmoinnin peruskurssi Y1 12.9.2018 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,
LisätiedotTietotyypit ja operaattorit
Tietotyypit ja operaattorit Luennossa tarkastellaan yksinkertaisten tietotyyppien int, double ja char muunnoksia tyypistä toiseen sekä esitellään uusia operaatioita. Numeeriset tietotyypit ja muunnos Merkkitieto
LisätiedotTyyppiluokat II konstruktoriluokat, funktionaaliset riippuvuudet. TIES341 Funktio-ohjelmointi 2 Kevät 2006
Tyyppiluokat II konstruktoriluokat, funktionaaliset riippuvuudet TIES341 Funktio-ohjelmointi 2 Kevät 2006 Alkuperäislähteitä Philip Wadler & Stephen Blott: How to make ad-hoc polymorphism less ad-hoc,
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ätiedotAlityypitys. TIES542 Ohjelmointikielten periaatteet, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos
Alityypitys TIES542 Ohjelmointikielten periaatteet, kevät 2007 Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 5. maaliskuuta 2007 Muistatko tietueet? {I 1 = E 1,..., I n = E n } : {I
Lisätiedot1. Esittelyt ja vakiot 1.1 Esittelyt (declarations) Ennen nimen, tunnuksen (identifier) käyttöä se on
1. Esittelyt ja vakiot 1.1 Esittelyt (declarations) Ennen nimen, tunnuksen (identifier) käyttöä se on esiteltävä. char ch; int count=1; struct complex float re, im; complex z; complex sqrt( complex );
Lisätiedotn! k!(n k)! n = Binomikerroin voidaan laskea pelkästään yhteenlaskun avulla käyttäen allaolevia ns. palautuskaavoja.
IsoInt Tietokoneiden muisti koostuu yksittäisistä muistisanoista, jotka nykyaikaisissa koneissa ovat 64 bitin pituisia. Muistisanan koko asettaa teknisen rajoituksen sille, kuinka suuria lukuja tietokone
LisätiedotTIEA341 Funktio-ohjelmointi 1, kevät 2008
TIEA341 Funktio-ohjelmointi 1, kevät 2008 Aloitusluento Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 7. tammikuuta 2008 Aikataulu Luennot salissa Ag C231.1: ma klo 10 12, to klo 14-16
LisätiedotPython-ohjelmointi Harjoitus 5
Python-ohjelmointi Harjoitus 5 TAVOITTEET Kerrataan silmukkarakenteen käyttäminen. Kerrataan jos-ehtorakenteen käyttäminen. Opitaan if else- ja if elif else-ehtorakenteet. Matematiikan sisällöt Tehtävät
LisätiedotOlkoon funktion f määrittelyjoukkona reaalilukuväli (erityistapauksena R). Jos kaikilla määrittelyjoukon luvuilla x 1 ja x 2 on voimassa ehto:
4 Reaalifunktiot 4. Funktion monotonisuus Olkoon funktion f määrittelyjoukkona reaalilukuväli (erityistapauksena R). Jos kaikilla määrittelyjoukon luvuilla x ja x on voimassa ehto: "jos x < x, niin f (x
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 20.1.2010 T-106.1208 Ohjelmoinnin perusteet Y 20.1.2010 1 / 40 Arvon pyytäminen käyttäjältä Käyttäjän antaman arvon voi lukea raw_input-käskyllä. Käskyn sulkujen
LisätiedotHarjoitus 1 -- Ratkaisut
Kun teet harjoitustyöselostuksia Mathematicalla, voit luoda selkkariin otsikon (ja mahdollisia alaotsikoita...) määräämällä soluille erilaisia tyylejä. Uuden solun tyyli määrätään painamalla ALT ja jokin
LisätiedotMatemaattisen analyysin tukikurssi
Matemaattisen analyysin tukikurssi 12. Kurssikerta Petrus Mikkola 5.12.2016 Tämän kerran asiat Sini-ja kosifunktio Yksikköympyrä Tangentti- ja kotangenttifunktio Trigonometristen funktioiden ominaisuuksia
LisätiedotGeneeriset tyypit. TIES542 Ohjelmointikielten periaatteet, kevät Antti-Juhani Kaijanaho. Jyväskylän yliopisto Tietotekniikan laitos
Geneeriset tyypit TIES542 Ohjelmointikielten periaatteet, kevät 2007 Antti-Juhani Kaijanaho Jyväskylän yliopisto Tietotekniikan laitos 6. maaliskuuta 2007 Kysymys Mitä yhteistä on seuraavilla funktioilla?
LisätiedotOhjelmoinnin peruskurssi Y1
Ohjelmoinnin peruskurssi Y1 CS-A1111 11.9.2019 CS-A1111 Ohjelmoinnin peruskurssi Y1 11.9.2019 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,
LisätiedotITKP102 Ohjelmointi 1 (6 op)
ITKP102 Ohjelmointi 1 (6 op) Tentaattori: Antti-Jussi Lakanen 7. huhtikuuta 2017 Vastaa kaikkiin tehtäviin. Tee jokainen tehtävä erilliselle konseptiarkille. Kirjoittamasi luokat, funktiot ja aliohjelmat
LisätiedotOhjelmointi 2. Jussi Pohjolainen. TAMK» Tieto- ja viestintäteknologia , Jussi Pohjolainen TAMPEREEN AMMATTIKORKEAKOULU
Ohjelmointi 2 Jussi Pohjolainen TAMK» Tieto- ja viestintäteknologia Tietotyypeistä C++ - kielessä useita tietotyyppejä Kirjaimet: char, wchar_t Kokonaisluvut: short, int, long Liukuluvut: float, double
LisätiedotPreliminäärikoe Tehtävät A-osio Pitkä matematiikka kevät 2016 Sivu 1 / 4
Preliminäärikoe Tehtävät A-osio Pitkä matematiikka kevät 06 Sivu / Laske yhteensä enintään 0 tehtävää. Kaikki tehtävät arvostellaan asteikolla 0-6 pistettä. Osiossa A EI SAA käyttää laskinta. Osiossa A
LisätiedotTämän vuoksi kannattaa ottaa käytännöksi aina kirjoittaa uuden funktion tyyppi näkyviin, ennen kuin alkaa sen määritemää kirjoittamaan.
3.1. LISTAT 35 destaan pisteittäisesti: init :: [α] [α] init (x : []) = [] init (x : xs) = x : init xs Varuskirjastoon kuuluu myös funktiot take ja drop, jotka ottavat tai tiputtavat pois, funktiosta riippuen,
LisätiedotOhjelmoinnin peruskurssi Y1
Ohjelmoinnin peruskurssi Y1 CS-A1111 13.9.2017 CS-A1111 Ohjelmoinnin peruskurssi Y1 13.9.2017 1 / 19 Oppimistavoitteet: tämän luennon jälkeen osaat kirjoittaa Python-ohjelman, joka pyytää käyttäjältä lukuja,
Lisätiedot17. 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ä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 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ä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ätiedot5.5 Jäsenninkombinaattoreista
5.5. JÄSENNINKOMBINAATTOREISTA 67 type Env α = FiniteMap String α data EnvT m α = MkE (Env Integer m (Env Integer, α)) instance Transformer EnvT where promote mp = MkE $ λenv mp λr return $(env, r) instance
LisätiedotKirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.
Tehtävä 63. Kirjoita oma versio funktiosta strcmp(),joka saa parametrinaan kaksi merkkiosoitinta. Tee ohjelma, jossa luetaan kaksi merkkijonoa, joita sitten verrataan ko. funktiolla. Tehtävä 64. Kirjoita
LisätiedotJohdatus matematiikkaan
Johdatus matematiikkaan Luento 6 Mikko Salo 6.9.2017 Sisältö 1. Kompleksitaso 2. Joukko-oppia Kompleksiluvut Edellisellä luennolla huomattiin, että toisen asteen yhtälö ratkeaa aina, jos ratkaisujen annetaan
LisätiedotJavan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi
1 Javan perusteet Ohjelmointi IPO-malli Java lähdekoodista suoritettavaksi ohjelmaksi Vakio Muuttuja Miten Javalla näytetään tietoa käyttäjälle, miten Javalla luetaan käyttäjän antama syöte Miten Javalla
LisätiedotSisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva
Sisällys 6. Muuttujat ja Java Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut. boolean- ja char-tyypit. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi
Lisätiedot6. Muuttujat ja Java 6.1
6. Muuttujat ja Java 6.1 Sisällys Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut. boolean- ja char-tyypit. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi
Lisätiedot15. Ohjelmoinnin tekniikkaa 15.1
15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Geneerinen ohjelmointi. Lueteltu tyyppi enum. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien silmukoimiseen:
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ätiedotJava-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ätiedotMetropolia ammattikorkeakoulu 05.02.2015 TI00AA43-3004: Ohjelmointi Kotitehtävät 3
: http://users.metropolia.fi/~pasitr/2014-2015/ti00aa43-3004/kt/03/ratkaisut/ Tehtävä 1. (1 piste) Tee ohjelma K03T01.cpp, jossa ohjelmalle syötetään kokonaisluku. Jos kokonaisluku on positiivinen, niin
LisätiedotMetropolia ammattikorkeakoulu TI00AA : Ohjelmointi Kotitehtävät 3 opettaja: Pasi Ranne
Seuraavista tehtävistä saatu yhteispistemäärä (max 7 pistettä) jaetaan luvulla 3.5 ja näin saadaan varsinainen kurssipisteisiin laskettava pistemäärä. Bonustehtävien pisteet jaetaan luvulla 4 eli niistä
Lisätiedot811120P Diskreetit rakenteet
811120P Diskreetit rakenteet 2016-2017 2. Lukujen esittäminen ja aritmetiikka 2.1 Kantajärjestelmät ja lukujen esittäminen Käytettävät lukujoukot: Luonnolliset luvut IN = {0,1,2,3,... } Positiiviset kokonaisluvut
Lisätiedot815338A Ohjelmointikielten periaatteet Harjoitus 4 vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 4 vastaukset Harjoituksen aiheena ovat imperatiivisten kielten lauseisiin, lausekkeisiin ja aliohjelmiin liittyvät kysymykset. Tehtävä 1. Mitä
LisätiedotSisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit:
Sisällys 6. Muuttujat ja Java Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut, merkit, totuusarvot. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi
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ätiedot2.4 Normaalimuoto, pohja ja laskentajärjestys 2.4. NORMAALIMUOTO, POHJA JA LASKENTAJÄRJESTYS 13
2.4. NORMAALIMUOTO, POHJA JA LASKENTAJÄRJESTYS 13 Toisinaan voi olla syytä kirjoittaa α- tai β-kirjain yhtäsuuruusmerkin yläpuolelle kertomaan, mitä muunnosta käytetään. Esimerkki 4 1. (λx.x)y β = y 2.
Lisätiedot= 9 = 3 2 = 2( ) = = 2
Ratkaisut 1.1. (a) + 5 +5 5 4 5 15 15 (b) 5 5 5 5 15 16 15 (c) 100 99 5 100 99 5 4 5 5 4 (d) 100 99 5 100 ( ) 5 1 99 100 4 99 5 1.. (a) ( 100 99 5 ) ( ( 4 ( ) ) 4 1 ( ) ) 4 9 4 16 (b) 100 99 ( 5 ) 1 100
LisätiedotAbstraktit tietotyypit. TIEA341 Funktio ohjelmointi 1 Syksy 2005
Abstraktit tietotyypit TIEA341 Funktio ohjelmointi 1 Syksy 2005 Data abstraktio Abstraktio on ohjelmoinnin tärkein väline Data abstraktio abstrahoi dataa Abstrakti tietotyyppi Koostuu kolmesta asiasta:
Lisätiedot4 TOISEN ASTEEN YHTÄLÖ
Huippu Tehtävien ratkaisut Kustannusosakeyhtiö Otava päivitetty 7.4.016 4 TOISEN ASTEEN YHTÄLÖ POHDITTAVAA 1. Merkitään toisen neliön sivun pituutta kirjaimella x. Tällöin toisen neliön sivun pituus on
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ätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 16.3.2009 T-106.1208 Ohjelmoinnin perusteet Y 16.3.2009 1 / 40 Kertausta: tiedostosta lukeminen Aluksi käsiteltävä tiedosto pitää avata: tiedostomuuttuja = open("teksti.txt","r")
LisätiedotTietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla
Tietojen syöttäminen ohjelmalle Tähän mennessä on käsitelty Javan tulostuslauseet System.out.print ja System.out.println sekä ohjelman perusrakenneosat (muuttujat, vakiot, lauseet). Jotta päästään tekemään
LisätiedotPython-ohjelmointi Harjoitus 2
Python-ohjelmointi Harjoitus 2 TAVOITTEET Kerrataan tulostuskomento ja lukumuotoisen muuttujan muuttaminen merkkijonoksi. Opitaan jakojäännös eli modulus, vertailuoperaattorit, ehtorakenne jos, input-komento
LisätiedotPERUSLASKUJA. Kirjoita muuten sama, mutta ota välilyönti 4:n jälkeen 3/4 +5^2
PERUSLASKUJA Matemaattisten lausekkeiden syöttäminen: Kirjoita ilman välilyöntejä /+^2 Kirjoita muuten sama, mutta ota välilyönti :n jälkeen / +^2 Kopioi molemmat matematiikka-alueet ja liiku alueen sisällä
LisätiedotAlgoritmit 2. Luento 3 Ti Timo Männikkö
Algoritmit 2 Luento 3 Ti 21.3.2017 Timo Männikkö Luento 3 Järjestäminen eli lajittelu Kekorakenne Kekolajittelu Hajautus Yhteentörmäysten käsittely Ketjutus Algoritmit 2 Kevät 2017 Luento 3 Ti 21.3.2017
LisätiedotSisällys. 6. Muuttujat ja Java. Muuttujien nimeäminen. Muuttujien nimeäminen. salinovi tai syntymapaiva
Sisällys 6. Muuttujat ja Java Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut, merkit, totuusarvot. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi
Lisätiedot6. Muuttujat ja Java 6.1
6. Muuttujat ja Java 6.1 Sisällys Muuttujien nimeäminen. Muuttujan tyypin määritys. Javan tietotyypit: Kokonais- ja liukuluvut, merkit, totuusarvot. Tyyppien yhteensopivuus. Viitetietotyypit ja merkkijonotietotyyppi
Lisätiedot