Tilbake til startsida 

 

 

Meny:Dokumentasjon

 

Opna LibreLogo
Flytte
Pennen
Fyll
Menyen
Teikneobjekt

Programmering
Løkker og vilkår
Variablar
Funksjonar
Eigendefinerte funksjonar
Tekst
Matematikk
Diagram
Reglar
Kommandooversyn
linjestil

LibreLogo

Plotte diagram

Dette er eit eksempel på korleis LibreLogo kan skrive ut eit diagram. I dette tilfellet sinus til vinklar frå 0 til 90, men det er enkelt å endre vilkåra. Programmet er delt opp i mindre funksjonar for å gjere det meir oversiktleg.

 1 TIL aksar ; Teiknar opp x- og y-aksen
 2   HEIM
 3   PENNFARGE 'grøn'
 4   FOROVER 300 TILBAKE 600 HEIM ; y-aksen
 5   VENSTRE 90 TILBAKE 300 FOROVER 600 HEIM ; x-aksen
 6 SLUTT

 8 TIL nullstill ; Nullstiller programmet og set variablar
 9   HEIM
10   TØMSKJERMEN
11   GLOBAL :vinkel
12   :vinkel = 0 ; Vinkelen som skal plottast. Aukar med 1 for kvart steg.
13   GLOBAL :x_verdi
14   :x_verdi = 0 ; Stega langs x-aksen
15   GLOBAL :høgde
16   :høgde = 50 ; Bestemmer høgda på svingningane (y-aksen)
17   GLOBAL :breidde
18   :breidde = 2 ; Bestemmer breidda på svingningane (x-aksen)
19 SLUTT

21 TIL finn_origo ; Finn x- og y-verdiane for midten av skjermen
22   HEIM
23   GLOBAL :x_null
24   GLOBAL :y_null
25   :p = PLASSERING ; Gir tilbake posisjonen som [x, y]
26   :x_null = :p[0] ; x-posisjonen
27   :y_null = :p[1] ; y-posisjonen
28 SLUTT

30 TIL steg ; Aukar verdien for :vinkel og :x_verdi med 1.
31   GLOBAL :vinkel
32   :vinkel = :vinkel +1
33   GLOBAL :x_verdi
34   :x_verdi = :x_verdi + 1
35 SLUTT

37 TIL plott ; Det er her plottinga går føre seg
38   :y = ((SIN :vinkel )* :høgde) + :y_null ; reknar ut y-posisjonen
39   :x =((:x_verdi * :breidde) + :x_null) ; reknar ut x-posisjonen
40   PLASSERING [:x, :y] ; Flytter skjelpadda til ny possisjon
41 SLUTT

Her kjem sjølve programmet:

43 nullstill
44 aksar
45 finn_origo
46 FOR :n I OMRÅDE 90 [ ; Tel frå 0 til 89, altså 90 steg
47   steg
48   plott
49 ]

Noen merknader til programmet

Funksjonen «aksar» teiknar dei to aksane i funksjonen med kryssingspunktet, origo, midt på skjermen.

I «nullstill» blir skjermen reinsa for teikningar som måtte vere der frå før, og set skjelpadda til utgangspunktet. Dei globale variablane blir sette til null. Varablane :høgde og :breidde blir brukte for å bestemma kor høg grafen skal bli og kor mykje bølgjene skal strekkast i breidda. Du kan gjerne eksperimentere med andre verdiar her. Dette er også plasen å endre verdien for :vinkel om du vil byrja med ein annan vinkel enn 0 grader.

LibreLogo reknar skjermkoordinata med utgangspunkt i øvre, venstre hjørne som har koordinata (0, 0). I ei grafisk framstilling er koordinata (0, 0) skjeringspunktet (origo) mellom aksane. For å få skjelpadda til å oppfatta origo som (0, 0), må eg altså legge x- og y-koordinata for dette punktet til dei utrekna koordinata. I «finn_origo» blir variabelen :x_null sett til avstanden langs x-aksen frå sidekanten til midten av sidbreidda. :y_null blir tilsvarande sett som avstanden langs y-aksen frå toppen av sida til midt på sidehøgda.

Funksjonen «steg» aukar vinkelen og x-verdien med 1. Også her kan du gjere endringar om ønskjeleg.

Det meste av matematikken skjer i funksjonen «plott». I linje 38 blir :y først sett til sinus av vinkelen. Sinusverdien går frå -1 til 1. Difor blir denne verdien multiplisert med ein konstant, :høgde, for å bli litt meir synleg på skjermen. Til slutt blir avstanden frå toppen av sida ned til x-aksen lagt til for å få svingningane rundt x-aksen. I linje 39 blir :x sett til verdien av :x_verdi og deretter multiplisert med breiddekonstanten og deretter lagt til avstanden frå venstre side og ut til y-aksen.

Den siste delen er sjølve programmet. Først blir funksjonen «nullstill» kalla opp, derette blir aksane teikna inn. Etter at data for skjeringspunktet er henta inn, startar teljinga. FOR :n I OMRÅDE 90 i linje 46, er LibreLogo sin måte å skrive FOR n = 1 TO 90 som du kanskje kjenner frå andre program. Første gongen sløyfa blir utført, er verdien av :n = 0. I neste køyring er verdien auka med 1 til 1. Slik held det på så lenge verdien av :n er under 90.

Ein fornuftig tanke er å plotte vinklane mellom 90 og 180. Altså FOR :n I OMRÅDE 90 180. Slik programmet er sett opp, vil vinklane likevel bli talde frå 0. For å få vist vinklane 90 - 180, må vi forandre programmet litt. I funksjonen «steg» må du kommentere ut linjene 31 og 32 ved å setje semikolon framføre kommandoane. Funskjonen blir altså slik:

30 TIL steg ; Aukar verdien for :vinkel og :x_verdi med 1.
31   ; GLOBAL :vinkel ; blir ikkje lese av LibreLogo
32   ; :vinkel = :vinkel +1 ; blir ikkje lese av LibreLogo
33   GLOBAL :x_verdi
34   :x_verdi = :x_verdi + 1
35 SLUTT

Dette gjer at desse kommandoane ikkje blir utførte. Sjølvsagt kan du i staden fjerne desse to linjene. Den neste forandringen skjer i sjølve programmet. Verdien av :vinkel skal setjast til same verdien som :n har gjennom sløyfa. I andre program kunne vi ha gjort dette med :verdi = :n, men ikkje i LibreLogo. Her må vi gå vegen om funksjonen TELJAR. Dessutan må vi fortelje at varabelen :vinkel er global. Difor desse to nye linjene i hovudprogrammet:

43 nullstill
44 aksar
45 finn_origo
46 FOR :n I OMRÅDE 90 180 [ ; Tel frå 90 til 179
47   steg
48   GLOBAL :vinkel
49   :vinkel = TELJAR
50   plott
51 ]

Håper forsøket mitt på å vise at LibreLogo kan meir enn å teikne geometriske figurar har lukkast. Lukke til med eksperimenteringa.


Send melding

© Innhald og design:  Kolbjørn StuestølStuestøl heimesideSist endra 17. februar 2014