25
Racket 1. JAKSO

Racket MOOC - jakso 1

Embed Size (px)

Citation preview

Page 1: Racket MOOC - jakso 1

Racket 1. JAKSO

Page 2: Racket MOOC - jakso 1

2

Racket-lauseke

KOODIAAPINEN MOOC – KEVÄT 2016

(+ 2 3)

funktio argumentit

Page 3: Racket MOOC - jakso 1

KOODIAAPINEN MOOC – KEVÄT 2016 3

Lausekkeen sisällä voi olla lausekkeita

(/ (+ 2 3) (- 6 4))

funktio argumentit

Page 4: Racket MOOC - jakso 1

KOODIAAPINEN MOOC – KEVÄT 2016 4

Funktio palauttaa arvon

circle(funktio)

100

”solid”

”red”

+(funktio)

ARGUMENTIT

100

30

PALUUARVO

130

Page 5: Racket MOOC - jakso 1

KOODIAAPINEN MOOC – KEVÄT 2016 5

Racket BSL – kieli Funktioiden käyttöohjeet löytyvät Koodarin käsikirjasta.

argumenttien tyypit

esimerkit

funktion nimi paluuarvon tyyppi

Page 6: Racket MOOC - jakso 1

KOODIAAPINEN MOOC – KEVÄT 2016 6

Kirjastojen avulla saat lisää funktioita

Otamme käyttöön kuvienpiirtokirjaston. Sen funktiot on kuvattu Koodarin käsikirjassa.

Kirjaston käyttöönotto (DrRacket):

Kirjoita tämä määrittelyikkunaan ja paina ”run”HUOM!

WeSchemessä et tarvitsetätä vaihetta. Image-kirjasto on käytössä automaattisesti.

Page 7: Racket MOOC - jakso 1

KOODIAAPINEN MOOC – KEVÄT 2016 7

Peruskuvioiden piirtofunktiot

Ohjeet peruskuvioiden piirtämiseen sekä kuvioiden yhdistämiseen löydät Koodarin käsikirjasta.

saat lisätietoa linkin kautta

Page 8: Racket MOOC - jakso 1

KOODIAAPINEN MOOC – KEVÄT 2016 8

Muuttujat Tallenna muuttujaan arvoja, joita käytät useamman kerran. Käyttämällä muuttujia koodista tulee selkeämpää.

(define YMPYRÄ (circle 100 ”solid” ”red”))

muuttuja arvo

Page 10: Racket MOOC - jakso 1

KOODIAAPINEN MOOC – KEVÄT 2016 10

Pikanäppäimet nopeuttavat koodaamistaToiminto DrRacket

(Win)DrRacket (MacOS)

WeScheme

Suorita ”run” Ctrl + r Cmd + r F5

Palauta edellinen koodirivi (interaktioikkunassa)

Crtl + ↑ Cmd + Crtl + ↑ Crtl + P

Palauta seuraava koodirivi (interaktioikkunassa)

Crtl + ↓ Cmd + Crtl + ↓ Crtl + N

Tallenna ”save” Crtl + s Cmd + s Crtl + s

Sisennä koodirivi TAB TAB TAB

Korjaa sisennys koko tiedostossa

Crtl + i Cmd + i Crtl + i

Page 11: Racket MOOC - jakso 1

KOODIAAPINEN MOOC – KEVÄT 2016 11

Vinkki viikon palautustehtävään

Jaa ongelma ensin osaongelmiin◦ Mistä pienemmistä osista valitsemasi kuva koostuu?

Piirrä osat, anna osille selkeät nimet (define)

Yhdistä osat, tarvittaessa välivaiheiden kautta.

Esim. Pikseliukko koostuu riveistä, jotka koostuvat neliöistä...

Page 12: Racket MOOC - jakso 1

Racket DEBUGGAUS

Palaa tähän kohtaan, kun törmäät virheilmoituksiin!

Page 13: Racket MOOC - jakso 1

KOODIAAPINEN MOOC – KEVÄT 2016 13

Mistä virheilmoitukset voivat johtuvat?Virheilmoitus Syitäexpected a `)´ to close `(´ esimerkkiexpected a funtion call but there is no open parenthesis... esimerkki

this function is not defined esimerkki 1 esimerkki 2

this variable is not defined esimerkki 1 esimerkki 2 esimerkki 3

expects 3 arguments, but found only 2 esimerkkiexpects <...> as second argument esimerkki1

esimerkki2funktion call: expected a function after the open parenthesis... esimerkkidefine: expected only one expression after the variable name… esimerkki

Page 14: Racket MOOC - jakso 1

KOODIAAPINEN MOOC – KEVÄT 2016 14

Debuggaus:expected a `)´ to close `(´

Tarkista sulut. Sinulta puuttuu sulkukiinni-merkki ´)´, joka sulkee pinkiksi väritetyn sulkuauki-merkin ´(´.

Lisää puuttuva sulku: (circle 100 ”solid” ”red”)

ja paina ”run”.

Page 15: Racket MOOC - jakso 1

KOODIAAPINEN MOOC – KEVÄT 2016 15

Debuggaus:expected a function call but there is no open parenthesis...

Tarkista sulut. Funktiokutsu ja sen argumentit pitää laittaa sulkumerkkien sisään.

Lisää puuttuvat sulut: (circle 100 ”solid” ”red”)

ja paina ”run”.

Page 16: Racket MOOC - jakso 1

KOODIAAPINEN MOOC – KEVÄT 2016 16

Debuggaus:this function is not defined (1)

Tarkista puuttuuko sinulta kuvien piirtokirjasto (circle-funktio on määritelty siinä).

Jos puuttui, lisää määrittelyikkunaan ensimmäiseksi riviksi:

(require 2htdp/image)

(circle 100 ”solid” ”red”)

ja paina ”run”

Page 17: Racket MOOC - jakso 1

KOODIAAPINEN MOOC – KEVÄT 2016 17

Debuggaus:this function is not defined (2)

Tarkista kirjoititko funktion nimen oikein. Funktion nimessä ei saa olla välilyöntejä, myös isoilla ja pienillä kirjaimilla on merkitystä.

Korjaa funktion kirjoitusasu oikeaksi:

(circle 100 ”solid” ”red”)

Ja paina ”run”.

Page 18: Racket MOOC - jakso 1

KOODIAAPINEN MOOC – KEVÄT 2016 18

Debuggaus:this variable is not defined (1)

Tarkista unohditko lainausmerkit: ”” merkkijonon ympäriltä (solid vs. ”solid”)?

Lisää puuttuvat lainausmerkit:

(circle 100 ”solid” ”red”))

ja paina ”run”

Page 19: Racket MOOC - jakso 1

KOODIAAPINEN MOOC – KEVÄT 2016 19

Debuggaus:this variable is not defined (2)

Oliko tarkoituksesi tallentaa kuva muuttujaan ympyrä? Jotta voit viitata muuttujaan ympyrä lisää määrittelyikkunaan:

(define ympyrä

(circle 100 ”solid” ”red”))

ja paina ”run”

Page 20: Racket MOOC - jakso 1

KOODIAAPINEN MOOC – KEVÄT 2016 20

Debuggaus:this variable is not defined (3)

Tarkista kirjoititko muuttujan nimen oikein. Muuttujan nimessä ei saa olla välilyöntejä, myös isoilla ja pienillä kirjaimilla on merkitystä.

Korjaa kirjoitusasu samaksi kuin definessä:

(beside ympyrä ympyrä)

ja paina ”run”

Page 21: Racket MOOC - jakso 1

KOODIAAPINEN MOOC – KEVÄT 2016 21

Debuggaus:expects 3 arguments, but found 2

Olet antanut vain 2 argumenttia funktiolle, joka vaatii 3 argumenttia.

Lisää puuttuva argumentti (tarkista argumenttien määrä Koodarin käsikirjasta):

(circle 100 ”solid” ”red”)

ja paina ”run”

Page 22: Racket MOOC - jakso 1

KOODIAAPINEN MOOC – KEVÄT 2016 22

Debuggaus:expects <...> as second argument (1)

Tarkista oletko antanut argumentit oikeassa järjestyksessä (tässä ”solid” ja ”red” ovat väärinpäin).

Vaihda argumentit oikeaan järjestykseen (tarkista argumenttien järjestys Koodarin käsikirjasta):

(define ympyrä

(circle 100 ”solid” ”red”))

Page 23: Racket MOOC - jakso 1

KOODIAAPINEN MOOC – KEVÄT 2016 23

Debuggaus:expects <...> as second argument (2)

Tarkista, että olet antanut funktiolle oikean tyyppisiä argumentteja. Jos annat argumenttina muuttujan, muuttujan nimeä ei kirjoiteta lainausmerkkeihin (siitä tulee silloin merkkijono, ei kuva).

Poista lainausmerkit muuttujan nimen ympäriltä.

(beside ympyrä ympyrä)

Page 24: Racket MOOC - jakso 1

KOODIAAPINEN MOOC – KEVÄT 2016 24

Debuggaus:funktion call: expected a function after the open parenthesis...

Olet ehkä laittanut sulut muuttujan nimen ympärille. Muuttujaan viitataan ilman sulkuja, koska muuten se tulkitaan funktiokutsuksi, jota se ei ole.

Poista sulut muuttujan nimen ympäriltä:

(beside ympyrä ympyrä)

ja paina ”run”

Page 25: Racket MOOC - jakso 1

KOODIAAPINEN MOOC – KEVÄT 2016 25

Debuggaus:define: expected only one expression after the variable name

Tarkista, että muuttujanimessäsi ei ole välilyöntiä.

Korjaa muuttujanimi yhtenäiseksi esim. lisäämällä nimeen väliviiva tai poistamalla välilyönti:

(define pun-ympyrä

(circle 100 ”solid” ”red”))

ja paina ”run”