Ophavsret © 2004 Cies Breijs
Tilladelse er hermed givet til at kopiere, videregive og/eller ændre dette dokument under betingelserne i GNU's Fri Dokumentation License, Version 1.1 eller en vilkårlig senere version publiceret af Free Software Foundation; uden invariante afsnit, uden tekster før omslaget, og uden tekster efter omslaget. En kopi af licensen er inkluderet i afsnittet ved navn " Medvirkende og licens".
KTurtle er et uddannende programmeringsmiljø der bruger Logo programmeringssproget. Det der entydigt kvalificerer LOGO er at programmeringskommandoer er oversat til 'programmørens' sprog så han/hun kan programmere på sit indfødte sprog.
Indholdsfortegnelse
Tabelliste
KTurtle er et uddannende programmeringsmiljø der bruger Logo programmeringssproget. Formålet for KTurtle er at gøre programmering så nemt og tilgængeligt som muligt. Dette gør KTurtle passende for at lære børn basal matematik, geometri og... programmering. Kommandoerne der bruges til at programmere er i samme stil som Logo programmeringssproget. Den entydige egenskab som Logo-programmeringssproget har er at kommandoerne ofte er oversat til det sprog programmøren taler.
KTurtle er navngivet efter “skildpadden” der spiller en central rolle i programmeringsmiljøet. Brugeren programmerer skildpadden, ved brug af Logo-kommandoer, til at tegne et billede på kanvassen.
Den første udgave af programmeringssproget Logo blev lavet af Seymour Papert fra MIT's laboratorium for kunstig intelligens i 1967 udgående fra programmeringssproget LISP. Derefter er mange udgaver af Logo blevet udgivet. I 1980'erne havde Logo fået fart på, med udgaver for MSX, Commodore, Apple II, Atari og IBM PC-systemer. Disse versioner var hovedsageligt beregnet til uddannelse. LCSI udgav Mac®Logo i 1985 som et værktøj for professionelle programmører, men det blev aldrig populært. MIT vedligeholder stadigvæk en netside for Logo som er på http://el.media.mit.edu/logo-foundation/.
I dag er der flere udgaver af Logo omkring, som nemt kan findes på MIT's Logoside eller med en enkel google-søgning. Denne udgave af Logo (KTurtle) er kun fokuseret på uddannelsesaspekterne af programmeringssproget og forsøger ikke at passe med professionelle programmørers behov.
KTurtle har nogle gode funktioner der gør det nemt at starte med at programmere. Her ser du nogle af de vigtigste af KTurtle's egenskaber:
En integreret Logo-fortolker (ingen ekstra afhængigheder) der bruger XML-filer for kommandooversættelserne, understøtter brugerdefinerede funktioner og dynamisk typeskift.
Udførslen kan gøres langsommere, holde pause eller blive standset når som helst.
En kraftfull editor for Logo-kommandoer med intuitiv syntaksfarvelægning, linjenummerering med mere.
Kanvassen kan gemmes som et billede eller udskrives
Kanvassen har en brydningstilstand (som bruges som standard) så skildpadden ikke så let bliver væk.
Sammenhængshjælp for alle Logo-kommandoer, tryk blot på F2.
Logo-kommandoerne er fuldt ud oversættelige (for øjeblikket er kun brasiliansk portugisisk, hollandsk, fransk, tysk, italiensk, slovensk, serbisk (cyrillisk og latin), spansk og svensk i KDE).
En fejldialog der henviser fejlmeddelelsen til fejlene i programmet.
Simplificeret programmeringsterminologi.
Fuldskærmstilstand.
Mange integrerede internationaliserede eksempel logo-programmer gør det nemt at komme i gang.
Hovedvinduet i KTurtle har to v;sentlige dele, kode-editoren (3) til venstre hvor du skriver Logo-kommandoerne og kanvassen (4) til højre hvor instruktionerne bliver visualiseret. Kanvassen er skildpaddens legeplads, det er på kanvassen at skildpadden rent faktisk flytter sig og tegner. De tre andre steder i hovedvinduet er: menulinjen (1) hvorfra alle handlingerne kan nås, værktøjslinjen (2) der tillader dig hurtigt at vælge de oftest brugte handlinger og statuslinjen (5) hvor du vil få tilbagemeldinger angående KTurtle's tilstand.
I kode-editoren skriver du Logo-kommandoerne. Den har alle de funktioner du ville forvente af en moderne editor. De fleste af dens funktioner findes i menuerne Redigér og Værktøjer. Kode-editoren kan dokkes til hver kant af hovedvinduet eller den kan frigives og placeres hvorsomhelst på din desktop.
Du har flere måder at få noget kode ind i editoren. Den nemmeste måde er at bruge et allerede eksisterende eksempel. Du vælger -> i Filmenuen og klikker på en fil. Filnavnet vil fortælle dig hvad eksemplet er om (for eksempel vil square.logo
tegne et kvadrat). Filen du vælger vil blive åbnet i kodeeditoren, og du kan så bruge -> på koden hvis du har lyst.
Du kan åbne Logo-filer ved at vælge ->.
Den tredje måde er at skrive din kode direkte ind i editoren eller at kopiere/indsætte noget kode fra denne brugerguide.
Markørens position angives i statuslinjen til højre, med linjenummer og søjlenummer.
Kanvassen er området hvor kommandoerne visualiseres, hvor kommandoerne “tegner” et billede. Det er med andre ord skildpaddens legeplads. Efter du har fået noget kode ind i kodeeditoren, og du har kørt den med ->, kan to ting ske: 1) koden kører fint og du vil sandsynligvis se nogle ændringer på kanvassen eller 2) du har en fejl i din kode, der vil være en fejlmeddelelse der fortæller dig hvilken fejl du lavede.
Denne meddelelse skulle hjælpe dig med at løse fejlen.
Billedet der bliver tegnet kan gemmes som et billede (ved brug af ->) eller udskrives (ved brug af ->).
I menulinjen finder du alle handlingerne for KTurtle. De er i følgende grupper: , , , , og . Dette afsnit beskriver dem alle.
Viser mappen med eksempler på Logo-programmer. Eksemplerne skulle være på dit foretrukne sprog som du kan vælge i: ->.
Præsentere en liste af mulige udførselshastigheder, bestående af: Fuld fart, Langsom . Langsommere og Langsomst. Når udførselshastigheden er sat til 'Fuld fart' (standard) kan vi næsten ikke følge med i hvad der sker. Sommetider er denne opførsel ønsket, men sommetider ønsker vi at holde øje med udførslen. I det sidste tilfælde vil du måske ønske at sætte udførslen til 'Langsom', 'Langsommere' eller 'Langsomst'. Når en af de langsomme tilstande er valgt vil den øjeblikkelige position for udførslen blive vist i din editor.
Holder pause i udførslen, denne handling er kun aktiveret n år kommandoerne rent faktisk bliver kørt.
Standser udførslen, denne handling er kun aktiveret n år kommandoerne rent faktisk bliver kørt.
Udskriver enten den nuværende kode i editoren eller den nuværende tegning på kanvasset.
Denne handling åbner for farvevælgeren. Ved brug af farvevælgeren kan du nemt vælge en farvekode og indsætte den i kodeeditoren.
Denne handling “indrykker” (tilføjer blanke tegn i begyndelse af) de linjer der er valgt. Når “indrykning” bruges rigtigt kan det gøre kode meget nemmere at læse. Alle eksempler bruger indrykning, kig bare på dem.
Denne handling “afindrykker” (fjerner blanke tegn i begyndelsen af) de linjer der er valgt.
Denne handling rydder “indrykning” (fjerner alle de blanke tegn i begyndelsen af) de linjer der er valgt.
Denne handling tilføjer kommentar-tegn (#) foran de valgte linjer. Linjer der starter med et kommentar-tegn ignoreres når koden køres. Kommentarer tillder programmøren at forklare en smule om sin kode eller de kan bruges til midlertidigt at forhindre en bestemt del af kode i at blive kørt.
Efter at have aktiveret denne handling vil musenblive ændret til en “pil med spørgsmålstegn”. Når denne pil bruges til at klikke på dele af KTurtle's hovedvindue, vil en beskrivelse af denne bestemte del komme frem.
Dette er en meget nyttig funktion, den sørger for hjælp med koden der hvor markøren i kodeeditoren er. Så hvis du for eksempel har brugt udskriv
-kommandoen i din kode, og du ønsker at læse for at få at vide hvad håndbogen siger om denne kommando skal du blot flytte markøren så den er i udskriv
-kommandoen og så trykke på F2. Håndbogen vil så vise al information om udskriftskommandoen.
Denne funktion er meget vigtig mens programmering bliver lært.
Her kan du hurtigt komme til de oftest brugte handlinger. Som standard vil du her finde alle de nyttigste kommandoer endende med Kør kommandoer- og Stop udførsel-ikonerne.
Du kan indstille værktøjslinjen ved at bruge ->->
På statuslinjen får du tilbagemelding om KTurtle's tilstand. I venstre side vises tilbagemelding angående den sidste handling. I højre side finder du det nuværende sted for markøren (linje- og søjlenumre). I midten af statuslinjen indikeres det sprog der for nuværende bruges til kommandoerne.
Når du starter KTurtle vil du se noget i retning af dette:
Du må have bemærket skildpadden i midten af kanvassen, du er lige ved at skulle lære hvordan du kontrollerer den ved brug af kommandoer i kodeeditoren.
Lad os starte med at få skildpadden til at bevæge sig. Vores skildpadde kan udføre 3 slags bevægelser, (1) den kan gå fremad eller baglæns, (2) den kan dreje til venstre og til højre (3) den kan gå direkte til et sted på skærmen. Prøv dette for eksempel:
forward 100 turnleft 90Skriv eller kopiér-indsæt koden i kodeeditoren og kør den (ved brug af ->) for at se resultatet.
Når du har skrevet og kørt kommandoerne som ovenfor i kodeeditoren bemærker du måske en eller flere af følgende ting:
At — efter kommandoerne er kørt — flytter skildpadden op, tegner en linje og drejer så en kvart omgang til venstre. Det er fordi du har brugt kommandoerne forward
og turnleft
.
At farven på koden ændres mens du skriver den. Denne egenskab kaldes: intuitiv fremhævning — forskellige typer kommandoer bliver fremhævet forskelligt. Dette gør det nemmere at læse store blokke af kode.
At skildpadden tegner en tynd sort linje.
Måske fik du en fejlmeddelelse. Dette kan vetyde en af to ting: du kan have lavet en fejl ved kopieringen af kommandoerne eller du mangler stadig at sætte det rigtige sprog for Logo-kommandoerne (du kan gøre det her: -> i Sprogafsnittet).
Du forstår formodentlig at forward 100
kommanderede skildpadden til at flytte sig fremad efterladende en linje, og at turnleft 90
bad skildpadden om at dreje 90 grader til venstre.
Se venligst følgende link til reference-manualen for en fuldstændig forklaring af de introducerede kommandoer: : forward
, backward
, turnleft
og turnright
.
Det første eksempel var meget simpelt så lad os komme videre.
canvassize 200,200 canvascolor 0,0,0 pencolor 255,0,0 penwidth 5 clear go 20,20 direction 135 forward 200 turnleft 135 forward 100 turnleft 135 forward 141 turnleft 135 forward 100 turnleft 45 go 40, 100Du skal igen skrive eller kopiere-indsætte koden i kodeeditoren, eller åbne
arrow.logo
-filen i -mappen og køre den (ved brug af ->) for at se resultatet. I de næste eksempler forventes du at være klar over dette.Du bemærker nok at dette andet eksempel bruger en masse mere kode. Du har også set et par nye kommandoer. Her er en kort forklaring på alle de nye kommandoer:
canvassize 200,200
sætter kanvassens bredde og højde til 200 pixels. Bredden og højden er ensi længde, hvilket betyder at kanvassen nu skulle være kvadratisk.
canvascolor 0,0,0
gør kanvassen sort. 0,0,0
er en RGB-kombination hvor alle værdier er sat til 0
, hvilket resulterer i sort.
pencolor 255,0,0
sætter pennens farve til rød. 255,0,0
er en RGB-kombination hvor kun den røde værdi er sat til 255
(helt til) mens de andre (grøn og blå) er sat til 0
(helt fra), hvilket resulterer i en lys form for rød.
Hvis du ikke forstår farveværdierne, så sørg for at læse ordforklaringen på RGB-combinations
penwidth 5
sætter bredden (størrelsen) af pennen til 5
pixels. Fra ny af vil hver linje som skildpadden tegner have en tykkelse på 5
, indtil vi ændrer penwidth
til noget andet.
clear
rydder kanvassen, det er alt den gør.
go 20,20
beder skildpadden om at gå til et bestemt sted på kanvassen. Talt fra det øverste venstre hjørne er dette sted 20 pixels fra venstre side, og 20 pixels fra toppen af kanvassen. Bemærk at når go
kommandoen bruge vil skildpadden ikke tegne en linje.
direction 135
sæt skildpaddens retning. turnleft
og turnright
kommandoerne ændrer skildpaddens vinkel startende fra dens nuværende retning. direction
kommandoen ændrer skildpaddens vinkel fra nul, og er således ikke relativ til skildpaddens tidligere retning.
Efter retningskommandoen følger en masse forward
og turnleft
kommandoer. Disse kommandoer udfører den egentlige tegning.
Tilsidst endnu en go
kommando for at flytte skildpadden væk.
Sørg for at du følger link til referencen. Referencen forklarer hver kommando mere udførligt.
Dette er en reference til KTurtles Logo. I dette kapitel næver vi kort alle forskellige instruktionstyper. Derefter forklares alle kommandoer i en af gangen. Herefter følger forklaringer af beholdare, math, spørgsmål og kommandoer til at styre kørslen. Tilsidst vises hvordan du kan oprette dine egne kommandoer med learn.
Som i alle sprog har Logo forskellige typer af ord og symboler. Her forklares kortfattet forskellen mellem typerne.
Ved brug af kommandoerne beder du KTurtle om at gøre noget. Nogle kommandoer har brug for inddata, nogle giver uddata.
# forward er en kommando som behøver inddata, i dette tilfælde tallet 100: forward 100
For en detaljeret oversigt over alle kommandoer som KTurtle understøtter, se her.
Formodentlig ved du allerede en hel del om tal. Måden som tal bruges i KTurtle er ikke særlig anderledes end i sprog eller matematik.
Vi har de såkaldte naturlige tal: 0
, 1
, 2
, 3
, 4
, 5
, osv. De negative tal: -1
, -2
, -3
, osv. Og tal med decimaler eller decimaltal, for eksempel: 0,1
, 3,14
, 33,3333
, -5,05
, -1,0
.
Tal kan bruges i matematiske beregninger og spørgsmål. De kan også placeres i containere.
Tal er fremhævede med blåt i kodeditoren.
Først et eksempel:
skriv "Goddag, jeg er en streng."I dette eksempel er
print
en kommando, mens "Goddag, jeg er en streng."
er en streng. Strenge begynder og slutter med tegnet "
. Det er disse tegn som gør at KTurtle véd at det er en streng.Strenge kan placeres i containere, men de kan ikke bruges i matematiske beregninger eller i spørgsmål.
Strenge fremhæves med mørkerødt i kodeditoren.
Når du bruger programsproget Logo laver du nye ting. Hvis du skriver et program har du ofte brug for containere og sommetider har du brug for learn for at oprette nye kommandoer. Når du laver en container eller en ny kommando med learn skal du angive et navn.
Du kan vælge et hvilket som helst navn, under forudsætning af at det ikke allerede har en betydning. Du kan for eksempel ikke navngive en container forward, eftersom dette navn allerede bruges til en kommando, og allerede har en betydning.
# Her bruges forward som en container, men det har allerede en betydning, # altså forårsager dette et fejl: forward = 20 # Dette virker: forward 20Navne kan kun indeholde bogstaver, tal og understregninger (_), og de skal begynde med et bogstav.
Læs gerne dokumentationen om containere og kommandoen learn for en bedre forklaring og flere eksempler.
Tilknytninger udføres med tegnet =
. I programmeringssprog er det bedre ikke at udtale et enkelt =
som 'er lig med' men som 'bliver'. Udtrykket 'er lig med' er m ere passende for ==
, som er et spørgsmål.
Tilknytninger bruges i almindelighed af to grunde: (1) for at tilføje indhold til containere, og (2) for at ændre indholdet i en beholder. For eksempel:
x = 10 # Containeren x indeholder nu tallet 10. W = "Min alder er: " # Containeren W indeholder nu "Min alder er: ". # Dette udskriver ud containerne 'W' og 'x' på kanvassen print W + x
For flere eksempler, se afsnittet om containere.
KTurtle understøtter alle grundlæggende matematiske symboler: addere (+
), subtrahere (-
), multiplicere (*
), dividere (/
) og parenteser (
og )
.
For en fuldstændig forklaring og flere eksempler, se afsnittet om matematiske beregninger.
Vi kan stille enkle spørgsmål hvor svaret er 'sand' eller 'falsk'.
At bruge spørgsmål beskrives udførligt i afsnittet om spørgsmål.
Spørgsmål kan klistres sammen med såkaldte 'klisterord'. Klisterordene er og
, eller
, og det specielle klisterord ikke
.
Brug af klisterord i spørgsmål forklares i afsnittet om klisterord i spørgsmål.
Kommentarer er linjer som begynder med tegnet #
. For eksempel:
# Dette er en kommentar! print "Dette er ikke en kommentar" # Foregående linje er ikke en kommentar, men den næste linje er det: # print "Dette er ikke en kommentar"Vi kan tilføje kommentarer til koden, som vi selv og andre kan læse. Kommentarer bruges for at: (1) tilføje en kort beskrivelse af programmet, (2) forklare hvordan et kodeafsnit virker hvis det er svært at forstå, og (3) til at 'kommentere væk' kodelinjer som (midlertidigt) skal ignoreres (se sidste linje i eksemplet).
Kommentarlinjer er fremhævede med mørkegult i kodeditoren.
Ved brug af kommandoerne beder du KTurtle om at gøre noget. Nogle kommandoer har brug for inddata, nogle giver uddata. I dette afsnit forklarer vi alle kommandoerne der kan bruges i KTurtle. Bemærk venligst at alle indbyggede kommandoer som vi diskuterer her er fremhævede med mørkegrønt i kodeeditoren. Dette kan hjælpe dig med at se dem.
Der er adskillige kommandoer til at flytte skildpadden rundt på skærmen.
forward X
forward
flytter skildpadden X pixels fremad. Når pennen er nede vil skildpadden efterlade et spor. forward
kan forkortes til fw
backward X
backward
flytter skildpadden X pixels tilbage. Når pennen er nede vil skildpadden efterlade et spor. backward
kan forkortes til bw
turnleft X
turnleft
beder skildpadden om at dreje X grader til venstre. turnleft
kan forkortes til tl
.turnright X
turnright
beder skildpadden om at dreje X grader til højre. turnleft
kan forkortes til tr
.direction X
direction
sætter skildpaddens retning til X grader talt ud fra nul, og således ikke relativ til skildpaddens tidligere retning. direction
kan forkortes til dir
.gox X
gox
brug af denne kommando vil få skildpadden til at flytte til X pixels fra venstre side af kanvassen mens den forbliver på samme højde.goy Y
goy
brug af denne kommando vil få skildpadden til at flytte til X pixels fra toppen af kanvassen mens afstanden til venstre side er uforandret.Skildpadden har en pen, der tegner en linje når skildpadden flyttes. Der er nogle få kommandoer til at kontrollere pennen. I dette afsnit forklarer vi disse kommandoer.
penup
pendown
trykker pennen ned på kanvassen. Når pennen er “down” på kanvassen vil en linje blive tegnet når skildpadden bevæger sig. Se også penup
.pendown
pendown
trykker pennen ned på kanvassen. Når pennen er “down” på kanvassen vil en linje blive tegnet når skildpadden bevæger sig. Se også penup
. pendown
kan forkortes til pd
.penwidth X
penwidth
sætter pennens bredde (linjebredden) til mængden X pixels. penwidth
kan forkortes til pw
.pencolor R,G,B
pencolor
sætter pennens farve. pencolor
tager en RGB kombination som inddata. pencolor
kan forkortes til pc
.Der er adskillige kommandoer til at kontrollere kanvassen.
canvascolor R,G,B
canvascolor
sætter farven for kanvassen. canvascolor
tager en RGB combination som inddata. canvascolor
kan forkortes til cc
.wraponMed kommandoen
wrapon
kan du slå ombrydning “til” for kanvassen. Se venligst ordforklaringen hvis du ønsker at vide hvad ombrydning er.wrapoffMed kommandoen
wrapoff
kan du slå ombrydning “fra” for kanvassen. Dette betyder at skildpadden kan flytte væk fra kanvassen og fare “vild”. Se venligst ordforklaringen hvis du ønsker at vide hvad ombrydning er.Der er to kommandoer til at rydde op på kanvassen efter du har rodet.
clearMed
clear
kan du rydde alle tegninger væk fra kanvassen. Alt andet forbliver: positionen og vinklen for skildpadden, kanvasfarven, skildpaddens synlighed og kanvassens størrelse. clear
kan forkortes til cr
.Først en kort forklaring af hvad en sprite er: en sprite er et lille billede der kan flyttes rundt på skærmen, ligesom vi man ofte ser i computer-spil. For mere info se ordforklaringen om sprite).
Herefter vil du finde et fuldt overblik over alle kommandoer til at arbejde med sprite.
[Denne udgave af KTurtle understøtter endnu ikke brugen af sprite bortset fra skildpadden. I fremtidige udgaver vil du kunne ændre skildpadden til noget du selv har designet.]
show
show
gør skildpadden synlig igen efter den har været skjult. show
kan forkortes til ss
.Svaret er: “ja”. Skildpaddenkan skrive, han skiver næsten alt det du beder den om at skrive.
print X
print
-kommandoen bruges til atbede skildpadden om at skrive noget på kanvassen. print
tager tal og strenge som inddata. Du kan print
forskellige tal og strenge ved at bruge “+”-symbolet. Se et lille eksempel her: year = 2003 author = "Cies" print author + " startede KTurtle-projektet i " + year + " og nyder stadig at arbejde med det!"
fontsize X
fontsize
sætter skriftens størrelse der bruges af print
. fontsize
tager inddata der skal være et tal. Størrelsen sættes i pixels.Der er en kommando som ruller terninger for dig. Den kaldes random
, og er meget nyttig til at få uforudsete resultater.
random X,Y
random
er en kommando der bruger inddata og giver uddata. Som inddata kræves to tal, det første (X) sætter minimum for uddata, det andet (Y) sætter maksimum. Uddata er et tilfældigt valgt tal der er større end eller lig med minimum og mindre end eller lig med maksimum. Her er el lille eksempel: repeat 500 [ x = random 1,20 forward x turnleft 10 - x ]Brug af random-kommandoen kan tilføje lidt kaos til dit program.
En dialog er et lille vindue der giver noget tilbagemelding eller beder om noget input. KTurtle har to kommandoer for dialoger, nemlig: message
og inputwindow
inputwindow X
inputwindow
tager en streng som input. Det viser en dialog der indeholder teksten fra strengen, ligesom message. Men derudover er der også et inddatafelt i dialogen. Gennem dette inddatafelt kan brugeren indtaste et tal eller en streng som kan opbevares i en container. For eksempel in = inputwindow "Hvor gammel er du?" out = 2003 - in print "I 2003 var du " + out + " år gammel på et tidspunkt."Når en bruger annullere dialogen, eller ikke indtaster noget over hovedet, bliver containeren tømt.
Containere er bogstaver eller ord der kan bruges af programmører til at opbevare et tal eller en tekst. Containere der indeholder et tal kaldes variabler, containere der indeholder tekst kaldes streng.
Containere der ikke bruges indeholder ingenting. Et eksempel:
print NDette vil ingenting udskrive. Hvis vi prøver at udføre math med tomme containere vil vi få fejl.
Lad os starte med et eksempel:
x = 3 print xI den første linje gøres bogstavet
x
til en variable (tal-container). Som du ser bliver værdien af den variable x
sat til 3. På den anden linje bliver værdien udskrevet.Bemærk at hvis vi ønskede at udskrive et “x” så skulle vi have skrevet
print "x"
Det var nemt, nu til et lidt sværere eksempel:
A = 2004 B = 25 C = A + B # den næste kommando udskriver "2029" print C backward 30 # den næste kommando udskriver "2004 plus 25" print A + " plus " + B backward 30 # den næste kommando udskriver "1979" print A - BI de første to linjer bliver variablerne
A
og B
sat til 2004 og 25. På den tredje linje bliver variablen C
sat til A + B
, som er 2029. Resten af eksemplet består af 3 print
kommandoer med backward 30
imellem. backward 30
er der for at sørge for at hvert uddata er på en ny linje. I dette eksempel ser du også at variabler kan bruges i matematiske beregninger.I programkode indledes og afsluttes almindelig tekst med citationstegn. Som vi allerede har set:
skriv "Hej, programmør!"Den almindelige tekst afgrænses af citationstegn. Denne almindelige tekst kalder vi en streng.
Strenge kan også opbevares i containere ligesom talStrenge er meget ligesom variabler. Den største forskel er at de indeholder tekst i stedet for tal. Derfor kan strenge ikke bruges i matematiske beregninger og spørgsmål. Et eksempel på brugen af strenge:
x = "Goddag " name = inputwindow "indtast venligst dit navn..." print x + name + ", hvordan går det?"I den første linje sættes strengen
x
til “Goddag”. I den anden linje sættes strengen name
til uddata fra inputwindow
kommandoen. På den tredje linje udskriver programmet en komposition af tre strenge på kanvassen.Dette program beder dig om at indtaste dit navn. Når du for eksempel indtaster navnet “Jesper”, udskriver programmet “Goddag Jesper, hvordan går det?”. Bemærk venligst at plusset (+) er det eneste matematiske symbol du kan bruge med strenge.
Ja, KTurtle kanlave matematik for dig. Du kan lægge sammen (+), trække fra (-), gange (*) og dividere (/). Her er et eksempel hvori vi bruger dem allesammen:
a = 20 - 5 b = 15 * 2 c = 30 / 30 d = 1 + 1 print "a: "+a+", b: "+b+", c: "+c+", d: "+dVed du hvilken værdi a, b, c og d har? Bemærk venligst brugen af tilknytningssymbolet
=
.Hvis du blot ønsker at en simpel beregning skal udføres kan du gøre noget i retning af dette:
print 2004-12
Nu et eksempel med parenteser:
print ( ( 20 - 5 ) * 2 / 30 ) + 1Det der er imellem parenteserne vil blive beregnet først. I dette eksepel, bliver 20-5 beregnet, så ganget med 2, divideret med 30, og derpå adderes 1 (hvilket giver 2).
if
og while
er udførselskontroller som vi vil diskutere i næste afsnit. I dette afsnit bruger vi if
-kommandoen til at forklare spørgsmål.
Et simpelt eksempel på et spørgsmål:
x = 6 if x > 5 [ print hello ]I dette eksempel er spørgsmålet
x > 5
, hvis svaret på dette spørgsmål er 'sand' så vil koden mellem parenteserne blive udført. Spørgsmål er en vigtig del af programmering og bruges ofte sammen med udførselskontroller, såsom if
. Alle tal og variabler (tal-containere) kan sammenlignes med hianden med spørgsmål.Her er alle mulige spørgsmål:
Tabel 4.1. Typer af spørgsmål
a == b | er lig med | svaret er “sand” hvis a er lig med b |
a != b | ikke lig med | svaret er “sand” hvis a ikke er lig med b |
a > b | større end | svaret er “sand” hvis a er større end b |
a < b | mindre end | svaret er “sand” hvis a er mindre end b |
a >= b | større end eller lig med | svaret er “sand” hvis a er større end eller lig med b |
a <= b | mindre end eller lig med | svaret er “sand” hvis a er mindre end eller lig med b |
Spørgsmål er fremhævede med lyseblåt i kodeditoren.
Spørgsmålenes klisterord kan få nogle spørgsmål til at blive til et stort spørgsmål.
a = 1 b = 5 if a < 5 and b == 5 [ print goddag ]I dette eksempel bliver klister-ordet
and
brugt til at klistre 2 spørgsmål (a < 5
, b == 5
) sammen. Hvis en side af and
vil svare 'falsk' så vil hele spørgsmålet svare 'falsk', fordimed klister-ordet and
skal begge sider være 'sand' for at svare 'sand'. Glem endelig ikke parenteser rundt om spørgsmålene!Her er en skematisk oversigt, en mere detaljeret forklaring følger nedenfor:
Tabel 4.2. Spørgsmål klister-ord
and | Begge sider skal være 'sande' for at svaret er 'sand' |
or | Hvis en af siderne er 'sand' så er svaret 'sand' |
not | Specialtilfælde: virker kun for et spørgsmål. Ændrer 'sand' til 'falsk' og 'falsk' til 'sand'. |
Klisterord i spørgsmål er fremhævede med violet i kodeditoren.
Når to spørgsmål klistres sammen med og
skal begge sider af og
være 'sande' for at resultatet skal være 'sandt'. Et eksempel:
a = 1 b = 5 if ((a < 10) and (b == 5)) and (a < b) [ print "Hej" ]I dette eksempel ser du et spørgsmål klistret sammen med et andet spørgsmål.
Hvis et af de to spørgsmål som klistres sammen med eller
er 'sandt' er resultatet 'sandt'. Et eksempel:
a = 1 b = 5 if ((a < 10) or (b == 10)) or (a == 0) [ print "Hej" ]I dette eksempel ser du et spørgsmål klistret sammen med et andet spørgsmål.
not
er et specielt klisterord i spørgsmål eftersom det kun virker med et spørgsmål af gangen. not
ændrer 'sand' til 'falsk' og 'falsk' til 'sand'. Et eksempel:
a = 1 b = 5 if not ((a < 10) and (b == 5)) [ print "Goddag" ] else [ print "Farvel" ]I dette eksempel er det sammenklistrede spørgsmål 'sandt', men
not
ændrer det til 'falsk'. Altså skrives "Farvel"
ud på kanvassen.Udførselskontrol gør dig i stand til — som navnet antyder — at kontrollere udførslen.
Kommandoer til at styre kørslen fremhæves med mørkegrønt og fed type. Kantede parenteser bruges som oftest sammen med kommandoer til at styre kørslen, og de er fremhævet med lysegrønt.
Hvis du har prøvet at programmere noget i KTurtle har du måske bemærket at skildpadden kan være meget hurtig til at tegne. Denne kommando får skildpadden til at vente et givet stykke tid.
wait X
wait
lader skildpadden vente i X sekunder. repeat 36 [ forward 5 turnright 10 wait 0.5 ]Denne kode tegne en cirkel, men skildpadden vil vente et halvt sekund ved hvert skridt. Dette giver indtrykket af en skildpadde der bevæger sig langsomt.
if spørgsmål [ ... ]Koden der er placeret på “...” vil kun blive udført hvis altså
if
svaret på spørgsmålet er “sand”. Læs venligst mere om spørgsmål i spørgsmålsafsnittet. x = 6 if x > 5 [ print "x er større end fem!" ]På første linje sættes
x
til 6. På den anden linje stilles spørgsmålet x > 5
. Da svaret på dette spørgsmål er “sand” vil udførselskontrollen if
tillade koden mellem parenteserne at blive udførtwhile spørgsmål [ ... ]Udførselskontrollen
while
er meget lige som if
. Forskellen er at while
bliver ved med at gentage (gå i løkke) koden mellem parenteserne indtil svaret på spørgsmålet er “falsk”. x = 1 while x < 5 [ forward 10 wait 1 x = x + 1 ]På den første linje sættes
x
til 1. På den anden linje stilles spørgsmålet x < 5
. Da svaret på dette spørgsmål er “sand” starter udførselskontrollen while
udførslen af koden mellem parenteserne indtil svaret på spørgsmålet er “falsk”. I dette tilfælde vil koden mellem parenteserne blive udført 4 gange, fordi hver gang den femte linje udføres bliver x
en større.if spørgsmål [ ... ] else [ ... ]
else
kan yderligere bruges i udførselskontrollen if
. Koden mllem parenteserne efter else
udføres kun hvis svaret på spørgsmålet der stilles er “falsk”. reset x = 4 if x > 5 [ print "x er større end fem!" ] else [ print "x er mindre end seks!" ]Der spørges om
x
er større end 5. Idet x
er sat til 4 på den første linje er svaret på spørgsmålet “falsk”. Dette betyder at koden mellem parenteserne efter else
bliver udført.forstartpunkt
tilslutpunkt
[ ... ]
for
løkken er en “tælleløkke”, den tæller for dig. for x = 1 to 10 [ print x * 7 forward 15 ]Hver gang koden mellem parenteserne udføres bliver
x
et tal større, indtil x når tallet 10. Koden mellem parenteserne udskriver x
ganget med 7. Efter dette program er færdigt vil du se syv-tabellen på kanvassen.learn
er en meget speciel kommando, fordi den bruges til at lave dine egne kommandoer. Kommandoen du laver kan tage inddata og give uddata tilbage. Lad os kigge på hvordan en ny kommando laves.
learn circle x [ repeat 36 [ forward x turnleft 10 ] ]Den nye kommando hedder
circle
. circle
tager en inddata, et tal, til at sætte cirklens størrelse. circle
giver ingen uddata. circle
kommandoen kan nu bruges ligesom en normal kommando i resten af koden. Se dette eksempel: learn circle X [ repeat 36 [ forward X turnleft 10 ] ] go 30,30 circle 20 go 40,40 circle 50
I det næste eksempel vil en kommando med en returværdi blive lavet.
reset learn multiplyBySelf n [ r = n * 1 r = n * n return r ] i = inputwindow "Indtast venligst et tal og tryk på o.k." print i + " ganget med sig selv er: " + multiplyBySelf iI dette eksempel laves en ny kommando der hedder
multiplyBySelf
. Inddata for denne kommando bliver ganget med sig selv og derefter returneret, ved brug af return
kommandoen. return
kommandoen er måden at få uddata fra en hjemmelavet funktion. I dette kapitel vil du finde en forklaring på de fleste af de “ualmindelige” ord der bruges i håndbogen.
Grader er en enhed derbruges til at måle vinkler og drejninger. En fuld omdrejning er 360 grader, det gør en halv omdrejning til 180 grader og en kvart omdrejning til 90 grader. Kommandoerne s turnleft
, turnright
og direction
skal have inddata i grader.
Nogle kommandoer har brug for inddata, nogle kommandoer giver uddata, nogle kommandoer bruger inddata og giver uddata og nogle kommandoer har hverken inddata eller uddata.
Nogle eksempler på kommandoer der kun har inddata er:
forward 50 pencolor 255,0,0 print "goddag!"
forward
kommandoen bruger 50
som inddata, forward
skal bruge denne inddata for at vide hvor mange pixels den skal gå fremad. pencolor
tager en farve som inddata og print
tager en streng som inddata. Bemærk venligst at inddata også kan være en container. Det næste eksempel illustrerer dette: x = 50 print x str = "goddag!" print str
Nu nogle eksempler på kommandoer med uddata:
x = inputwindow "skriv venligst noget og tryk på o.k.... tak!" r = random 1,100
inputwindow
kommandoen tager en streng som inddata, og giver som uddata tallet eller strengen der indtastes. Som du ser bliver uddata fra inputwindow
opbevaret i containeren x
. random
kommandoen giver også uddata. I dette tilfælde er uddata et tal mellem 1 og 100. Uddata fra random bliver igen opbevaret i en container der hedder r
. Bemærk at containerne x
og r
ikke bliver brugt i eksempelkoden ovenfor.Der er også kommandoer der hverken har brug for inddata eller giver uddata. Her er nogle eksempler:
clear penup wrapon hide
Dette er en funktion af KTurtle der gør kodning endnu nemmere. Med intuitiv fremhævning får koden du skriver en farve der indikerer hvilken type kode det er. I den næste liste vil du finde de forskellige typer kode og den farve de får i kodeeditoren.
Tabel 5.1. Forskellige typer kode og deres fremhævningsfarve
regulære kommandoer | mørkegrøn | De regulære kommandoer bliver beskrevet her. |
udførselskontrol | sort (fed) | De specielle kommandoer der kontrollere udførslen, læs mere om dem her. |
kommentarer | mørkegul | Linjer der er kommenteret starter med et kommentar-tegn (#). Disse linjer ignoreres når koden køres. Kommentarer tillader programmøren at forklare en smule om sin kode eller de kan bruges til midlertidigt at forhindre en bestemt del af kode i at blive kørt. |
parenteser [, ] | lysegrøn (fed) | Parenteser bruges til at gruppere dele af kode. Parenteser bruges ofte sammen med udførselskontrol. |
learn kommandoen | lysegrøn (fed) | learn kommandoen bruges til at lave nye kommandoer. |
tal | blå | Tal, ja det er der ikke så meget at sige om. |
strenge | mørkerød | Heller ikke så meget at sige om (tekst)strenge, bortset fra at de altid starter og slutter med dobbeltcitationstegnet ("). |
matematiske tegn | grå | Dette er de matematiske tegn: +, -, *, /, (, and ). Læs mere om dem her. |
spørgsmålstegn | blå (fed) | Læs mere om spørgsmål her. |
spørgsmåls klisterord | lyserød | Læs mere om spørgsmålsklisterord (and, or, not) her. |
regulær tekst | sort |
En pixel er en prik på skærmen, et billedpunkt. Hvis du kigger meget tæt vil du se at din skærm bruger pixels. Alle billeder på skærmen er bygget med disse pixels. En pixel er det mindste der kan tenges på skærmen.
En masse kommandoer behøver en mængde af pixels som inddata, disse kommandoer er: forward
, backward
, go
, gox
, goy
, canvassize
og penwidth
.
RGB -kombinationer bruges til at beskrive farver. “R” står for “rød”, “G” står for “grøn” og “B” står for “blå”. Et eksempel på en RGB kombination er 255,0,0
, den første “røde” værdi er 255 og de andre er 0. Dette giver en lys rød farve. Hver værdi af en RGB kombination skal være i området 0 til 255. Her er en lille liste af nogle ofte brugte farver:
Tabel 5.2. Ofte brugte RGB-kombinationer
0,0,0 | sort |
255,255,255 | hvid |
255,0,0 | rød |
150,0,0 | mørkerød |
0,255,0 | grøn |
0,0,255 | blå |
0,255,255 | lyseblå |
255,0,255 | lyserød |
255,255,0 | gul |
For nemt at finde RGB-kombinationerne for en farve skulle du prøve farvevælgeren! Du kan finde farvevælgeren her: ->.
To kommandoer bruger en RGB-kombination som inddata, disse kommandoer er: canvascolor
og pencolor
.
En sprite er et lille billede der kan flyttes rundt på skærmen. Vores elskede skildpadde er for eksempel en sprite.
Bemærk: I denne udgave af KTurtle kan skildpadden ikke ændres til noget andet. I fremtidige udgaver vil du kunne gøre dette.]
Ombrydning er det der sker når skildpadden tegner noget der er for stort til at passe på kanvassen og wrapping er slået “til”.
Wrapping kan slås til og fra med kommandoerne wrapon
og wrapoff
. Når KTurtle starter er ombrydning (wrapping) slået til som standard.
Som du formodentlig allerede véd, er det entydige kendetegn ved programsproget Logo at Logo-kommandoer ofte oversættes til programmørens sprog. Det fjerner en barriere for at forstå basal programmering for mange elever. Når KTurtle oversættes til et nyt sprog skal yderligere nogle filer oversættes foruden de almindelige strenge og dokumentationen. Dog laves det meste automatisk af Rafael Beccars script. Scripten findes i kdeedu/kturtle/scripts
, og filerne som skal oversættes findes i kdeedu/kturtle/data
. I disse mapper finder du også README-filer som indeholder instruktioner om hvordan de bruges eller oversættes.
Først må du lave en mappe til at opbevare de oversatte filer. Lav en mappe der hedder kde-i18n/
i din KDE CVS-mappe, hvor kode
/data/kdeedu/kturtle/kode
er dit lands kode (2 eller 4 bogstavs ISO-kode)
Kopiér Makefile.am
-filen fra kdeedu/kturtle/data/
til denne mappe. Åbn den ved at bruge din foretrukne teksteditor, erstat alle forekomster af “en_US” i filen med din landekode (den der blev brugt ovenfor), og gem filen.
Kopiér filen logokeywords.en_US.xml
fra kdeedu/kturtle/data/
til den mappe du lige lavede, og omdøb den til logokeywords.
hvor kode
.xmlcode
er dit lands kode (2 eller 4 bogstavs ISO-kode)
Oversæt indholdet af <keyword>
-mærket (dvs. informationen mellem <keyword>
og </keyword>
) til dit sprog når det er muligt. Oversæt også indholdet af <alias>
-mærket, (dvs. informationen mellem <alias>
og </alias>
). Disse bruges som genveje for nøgleordet.
For eksempel oversæt “while” i: <keyword>
while</keyword>
Oversæt venligst ikke nogetsomhelst andet og oversæt ikke engelske ord i <command name="english_word">
. Disse skal forblive på engelsk.
Tilsidst: ændr ikke rækkefølgen i filen, eftersom den behøves af Rafael Beccars script til at oprette automatiske oversættelser.
Gem din fil som utf-8 (i Kate bruges og der skiftes til utf8 i feltet til højre for filnavnet)
Indsend din fil (tilføj dit filnavn til Makefile.am
) eller send den til Anne-Marie.
Hvis du er i tvivl, så kontakt venligst Anne-Marie Mahfouf (annemarie.mahfouf AT free.fr)
for mere information.
At oversætte logohighlightstyle.en_US.xml
er nemt når Rafael Beccars script i kdeedu/kturtle/data/
bruges. Sørg for at du læser README-filen i denne mappe.
For at virke for alle de som ikke vil bruge velsignelsen med perl-scriptet som blev nævnt i foregående paragraf, beskrives den gammeldags måde at gøre dette:
Kopiér filen logohighlightstyle.en_US.xml
fra kdeedu/kturtle/data/
til den mappe du lavede til at opbevare den oversatte nøgleordsfil, og omdøb den til logohighlightstyle.
hvor code
.xmlcode
er dit lands kode (2 eller 4 bogstaver ISO-kode)
I linje 4 i filen, er der et <language name="en_US">
...: her ændrer du “en_US” til dit sprogs ISO kode (2 eller 4 bogstaver).
Oversæt til dit eget sprog indholdet af <item>
mærket (dvs. information mellem <punktet>
og </punktet>
). Dette indhold skal matche logokeyword-filen. For eksempel oversættes “while” i: <punktet>
while </punktet>
og mellemrummene efterlades som de er (et i begyndelsen og et i slutningen). Oversæt venligst ikke noget andet.
Gem din fil som utf-8 (i Kate bruges og der skiftes til utf8 i feltet til højre for filnavnet)
Indsend din fil (tilføj dit filnavn til Makefile.am
) eller send den til Anne-Marie.
Hvis du er i tvivl, så kontakt venligst Anne-Marie Mahfouf (annemarie.mahfouf AT free.fr)
for mere information.
Igen, denne opgave forenkles en hel del af Rafael Beccars script i kdeedu/kturtle/data/
. Sørg for at du læser README-filen i den mappe, eftersom et vist arbejde stadigvæk skal gøres efter Logo-eksempelfilerne er oversat automatisk.
Efter du fulgte instruktionerne som gives i README-filen som er i mappen scripts, er du nu næsten færdig. Glem ikke at teste den oversatte Logo-eksempelkode du oprettede, eftersom det er meget almindeligt at en fejl sniger sig ind. Sørg også for at Makefile.am
i kde-i18n/
opdateres ifølge de nye filer. For hollandsk skal kod
/data/kdeedu/kturtle/Makefile.am
se sådan her ud:
txt_DATA = advertentie.logo driehoeken.logo krullen.logo tafels.logo \ bloem.logo driehoek.logo logohighlightstyle.nl.xml pijl.logo vierkanten.logo \ kleuren.logo logokeywords.nl.xml randomnaam.logo vierkant.logo txtdir = $(kde_datadir)/kturtle/examples/nl xml_DATA = logohighlightstyle.nl.xml xmldir = $(kde_datadir)/katepart/syntax keywords_DATA = logokeywords.nl.xml keywordsdir = $(kde_datadir)/kturtle/data EXTRA_DIST = $(txt_DATA) $(xml_DATA) $(keywords_DATA)
Her er en beskrivelse af hvordan oversættelsen laves UDEN at bruge Rafaels perl-script:
Kopiér de engelske eksempler kdeedu/kturtle/data/
til denne mappe og omdøb filerne med dit sprogs oversættelse. Dette vil tillade brugere nemt og hurtigt at forstå hvad eksemplet drejer sig om.
Oversat nøgleord i eksemplerne, ved at bruge dem i logokeywords.xml
for dit sprog. Nøgleordsfilen skal først være færdig, før eksemplerne oversættes.
Gem din fil som UTF-8 (i Kate, bruges og der skiftes til utf8 i feltet til højre for filnavnet)
Indsend sin mappe (tilføj en Makefile.am
indeni) eller send den til Anne-Marie.
Hvis du er i tvivl, så kontakt venligst Anne-Marie Mahfouf (annemarie.mahfouf AT free.fr)
for mere information.
Endelig kan du, hvis du ønsker det, tilføje dine egne eksempler i denne mappe.
KTurtle
Program ophavsret 2003-2005 Cies Breijs (cies AT kde DOT nl)
Bidragydere:
Kodningshjælp, editor-part: Anne-Marie Mahfouf (annma AT kde.org)
Forfatter til WSBASIC (http://wsbasic.sourceforge.net) som er basis for fortolkeren i KTurtle: Walter Schreppers (Walter DOT Schreppers AT ua DOT ac DOT be)
Tyske datafiler: Matthias Meßmer (bmlmessmer AT web DOT de)
Tyske datafiler: Burkhard Lück (lueck AT hube-lueck DOT de)
Svenske datafiler: Stefan Asserhäll (stefan DOT asserhal AT telia DOT com)
Slovenske datafiler: Jure Repinc (jlp AT holodeck1.com)
Serbiske (cyrilliske og latinske) datafiler: Chusslove Illich (caslav.ilic AT gmx.net)
Italienske datafiler: Pino Toscano (toscano.pino AT tiscali.it)
Engelske GB datafiler: Andy Potter (A.J.Potter AT rhul.ac.uk)
Spanske datafiler: Rafael Beccar (rafael.beccar AT kdemail.net)
Brasiliansk portugisiske datafiler: Riverson Rios (riverson AT ccv.ufc.br)
Norske datafiler, Nynorske og Bokmål: Karl Ove Hufthammer (karl AT huftis.org)
Fortolker for cyrillisk støtte: Albert Astals Cid (astals11 AT terra.es)
Dokumentation ophavsret 2004
Cies Breijs (cies AT kde DOT nl)
Anne-Marie Mahfouf (annma AT kde DOT org)
Nogle korrekturlæsningsændringer ved Philip Rodrigues (phil AT kde.org)
Opdateret oversættelse af hvordan og nogle korrekturlæsninger ved Andrew Coles (andrew_coles AT yahoo DOT co DOT uk)
Dansk oversættelse Erik Kjær Pedersen (erik AT binghamton.edu)
Dokumentation er udgivet under betingelserne i GNU Free Documentation License.
Dette program er udgivet under betingelserne i GNU General Public License.
Indholdsfortegnelse
KTurtle er en del af KDE-projektet http://www.kde.org/.
KTurtle findes i kdeedu-pakken på ftp://ftp.kde.org/pub/kde/, hoved FTP-stedet for KDE-projektet.
For at kompilere og installere KTurtle på dit system, skal du skrive følgende i basismappen for distributionen for KTurtle :
%
./configure
%
make
%
make install
Idet KTurtle bruger autoconf og automake skulle du ikke få problemer med at kompilere den. Hvis du skulle løbe ind i problemer så rapportér dem til KDE's e-post-lister.
Would you like to make a comment or contribute an update to this page?
Send feedback to the KDE Docs Team