Lektion 4 - Scheme (29/11)
Bullar e gott!
Denna lektion ägnade vi åt att programmera
i det funktionella språket Scheme.
När vi programmerar scheme är det viktigt
att på första raden i programmet skriva:
#!/usr/bin/env /usr/local/bin/pmscheme
Denna rad säger till skalet (Bash) vem som
ska tolka filen. I detta fall vill vi att
Scheme ska tolka våran kod. Gör dina
scheme program i vanliga textfiler och gör
sedan textfilen körbar med chmod +x.
Ett enkelt Schemeprogram ser ut såhär:
#!/usr/bin/env /usr/local/bin/pmscheme
(display (+ 1 2))
Detta program skriver ut det som (+ 1 2)
returnerar, vilket är 3. Ett lite mer
avancerat exempel kan du se här:
#!/usr/bin/env /usr/local/bin/pmscheme
(define (cirkelArea radie)
(define pi 3.14)
(define (kvadrat x)
(* x x))
(* pi (kvadrat radie)))
(display "Arean på en cirkel med radien 4 är: ")
(display (cirkelArea 4))
I det här programmet definerar vi en
funktion som heter cirkelArea som tar ett
argument. Detta argument får namnet
radie. I funktionen defineras först en
intern variabel, pi. Denna variabel vill
funktionen ha för att lättare utföra sitt
uppdrag (att räkna ut arean på en
cirkel). Sedan defineras en intern
funktion som får namnet kvadrat. Denna
interna funktion tar ett argument och
returnerar argumentet * argumentet
(kvadraten). Funktionen avslutas sedan med
raden: (* pi (kvadrat radie)) I denna rad
används den interna variabeln pi, den
interna funktionen kvadrat och argumentet
radie.
Vi pratade också om rekursion under
lektionen. Rekursion är när en funktion
kallar på sig själv. Ett bra exempel som
vi nämnde på föreläsningen är när man
beräknar fakultet. Fakultet brukar
betecknas med "!" ex: 5! och är när man
tar och multiplicerar ett tal med alla de
talen som är mindre. 5! = 5*4*3*2*1
Fakultet kan man beskriva så här:
Ta talet som du vill beräkna fakulteten av
(i detta fall 5) och multiplicera det med
fakulteten av talet minus 1.
Fakulteten av 5 är: 5 * fakulteten av
4. Fakulteten av 4 är i sin tur: 4 *
fakulteten av 3. Fakulteten av 3 är 3 *
fakulteten av 2 och fakulteten av 2 är 2 *
fakulteten av 1. Nu vill vi sluta, så vi
bestämmer oss för att inte fortsätta när
vi kommit ned till 1.
Detta är precis så som rekursion fungerar,
för att den inte ska fortsätta hur länge
som helst måste vi ha ett avbrottsvillkor.
I Scheme kan man skriva en
fakultetsfunktion såhär:
(define (fakultet tal)
(if (<= 1 tal)
1
(* tal (fakultet (- tal 1))))
)
)
Vi definerar en funktion med namnet
fakultet. Funktionen tar ett argument,
kallat tal. Om tal är mindre eller lika
med 1 returneras 1. Annars returneras:
talet * fakulteten av talet-1.
Kom ihåg, rekursion har en förmåga att
vända ut och in på hjärnor!
Presentationen vi hade kan ni se
här.
|
Ceiling cat iz watching
U programmingz
|
|
Tacka högre makter för laptops
|
|
Laptops åt alla!
|
|
Marco tar en laptop och springer
|
|
Snabb programmering
|
|
eXtreme Programming
|
|