LOGO-L> Logo teaching program 
Author Message
 LOGO-L> Logo teaching program

It didn't run in MSWLogo -- any hope of one of you geniuses "transposing" it
for me?

Lori

*****************************
to teach
localmake "globals []
localmake "varposn [-300 -120]
localmake "depthcolors [6 1 4 14 2 8 13 9]
localmake "stepfast "false
clearscreen
wait 60
catch "picture [flagdemo]
clearscreen
catch "picture [treedemo]
end

to treedemo
localmake "varposn [0 -120]
hideturtle
pendown setpencolor 7
tree 5 150
showturtle
catch "demo [user]
demo [tree 1 150]
demo [tree 2 150]
demo [tree 3 150]
end

to flagdemo
hideturtle
pendown setpencolor 7
flags 15 22 1 43 1
showturtle
catch "demo [user]
demo [flag]
demo [fillflag 4]
demo [flags 15 22 1 5 1]
end

to user
if :stepfast [wait 20 stop]
pr [Press spacebar to continue, F to continue Fast (without asking each
step),]
type [D to skip to next Demo, or P for a different Picture:\ ]
localmake "char uppercase readchar
cleartext
if :char = "F [make "stepfast "true]
if :char = "D [throw "demo]
if :char = "P [throw "picture]
end

to demo :command
clearscreen
type "|? |
settextcolor 6 0
print :command
settextcolor 7 0
run :command
display first :command
catch "demo [
 user
 clearscreen
 localmake "linecolors map [(list 0 7)] butfirst text first :command
 localmake "walkdepth 0
 walk :command
]
make "stepfast "false
end

to display :procname
localmake "oldpos pos
localmake "oldheading heading
localmake "text fulltext :procname
localmake "height 180
foreach :text [
  penup   setpos list -300 :height  setheading 0
  make "height :height-18
  pendown   label ?
]
penup   setpos :oldpos   setheading :oldheading   pendown
end

to walk :command [:dpy "true] [:walkdepth :walkdepth+1]
localmake "stepfast :stepfast
localmake "text text first :command
localmake "fulltext fulltext first :command
localmake "oldvalues map [ifelse namep ? [thing ?] ["none]] first :text
localmake "variables first :text
local :variables
(foreach :variables :oldvalues "make)
local "values
run (sentence "make ""values "\( "list butfirst :command "\) )
(foreach :variables :values "make)
if :dpy [display first :command]
showvariables
commands butfirst :text butfirst :fulltext 180-18 :linecolors
end

to commands :text :fulltext :height :somecolors
if empty? :text [stop]
localmake "pos pos
localmake "head heading
localmake "pen pendown?
localmake "pc pencolor
penup  setpos list -300 :height  setheading 0
setpencolor item :walkdepth :depthcolors
pendown  label first :fulltext
.setbf first :somecolors fput pencolor butfirst first :somecolors
penup  setpos :pos  setheading :head
if :pen [pendown]
setpencolor :pc
if equalp first first :text "localmake [
  run sentence first :text []
]
localmake "runresult runresult [commands1]
if emptyp :runresult [user]
make "pos pos
make "head heading
make "pen pendown?
make "pc pencolor
penup  setpos list -300 :height  setheading 0
.setbf first :somecolors butfirst butfirst first :somecolors
setpencolor first butfirst first :somecolors
pendown  label first :fulltext
penup  setpos :pos  setheading :head
if :pen [pendown]
setpencolor :pc
if emptyp :runresult [stop]
if not equalp first :runresult "command-completed-without-stopping ~
   [output first :runresult]
commands butfirst :text butfirst :fulltext :height-18 butfirst :somecolors
end

to commands1
ifelse equalp first first :text first :command ~
  [(walk sentence first :text [] "false)
    if not emptyp butfirst :text [showvariables]] ~
  [run sentence first :text []
   if equalp first first :text "make [walkmake "globals]
   if equalp first first :text "localmake [walkmake "variables]
   user]
output "command-completed-without-stopping
end

to walkmake :varlist
local "makevalues
run (sentence "make ""makevalues "\( "list butfirst first :text "\) )
localmake "varname first :makevalues
if not memberp :varname (sentence :globals :variables) ~
   [make :varlist sentence thing :varlist :varname]
showvariables
end

to showvariables
localmake "oldpos pos
localmake "oldheading heading
localmake "oldpc pencolor
penup   setpos :varposn  setheading 0   pendown
foreach (sentence :globals :variables) ~
  [setpc 7  label (word ? "=)  
   penup right 90 forward 10*(1+count ?) left 90 pendown
   setpc item :walkdepth :depthcolors  label (list thing ? "|   |)
   penup right 90 forward 30  left 90 pendown]
penup   setpos :oldpos   setheading :oldheading   pendown  setpc :oldpc
end

to flag
forward 100
localmake "p pos
back 32
right 90
forward 24
left 90
setpos :p
end

to fillflag :color
flag
penup back 20 right 90 forward 5
setpencolor remainder :color 16
fill
setpencolor 7
back 5 left 90 back 80 pendown
end

to flags :distance :angle :increment :number :fillcolor
if :number=0 [stop]
fillflag :fillcolor
forward :distance
right :angle
flags :distance+:increment :angle :increment :number-1 :fillcolor+1
end

to tree :number :size
if :number=0 [stop]
fd :size/3
lt 20
tree :number-1 :size*0.7
rt 20
fd :size/6
rt 25
tree :number-1 :size*0.55
lt 25
fd :size/2
lt 30
tree :number-1 :size*0.2
rt 50
tree :number-1 :size*0.25
lt 20
bk :size
end

---------------------------------------------------------------





Sat, 09 Jun 2001 03:00:00 GMT  
 LOGO-L> Logo teaching program
This is the core function. The rest of the code apparently displays the code
next to the drawing as it runs using some specific UCBLogo text based commands.
You can easily port it to MSWLogo if you like. Note "Step" and/or "Trace" can do
much of what I think it did.

I could not get it to run properly even in UCBLogo. Wrap problems maybe and
uninitialized variables which I guessed at. I got it partially working in
UCBLogo but one error kept on scrolling off the text window. But I think I
got far enough to get the idea.

to tree :number :size
if :number=0 [stop]
fd :size/3
lt 20
tree :number-1 :size*0.7
rt 20
fd :size/6
rt 25
tree :number-1 :size*0.55
lt 25
fd :size/2
lt 30
tree :number-1 :size*0.2
rt 50
tree :number-1 :size*0.25
lt 20
bk :size
end

to treedemo
tree 5 150
end

Quote:

> It didn't run in MSWLogo -- any hope of one of you geniuses "transposing" it
> for me?

> Lori

> *****************************
> to teach
> localmake "globals []
> localmake "varposn [-300 -120]
> localmake "depthcolors [6 1 4 14 2 8 13 9]
> localmake "stepfast "false
> clearscreen
> wait 60
> catch "picture [flagdemo]
> clearscreen
> catch "picture [treedemo]
> end

> to treedemo
> localmake "varposn [0 -120]
> hideturtle
> pendown setpencolor 7
> tree 5 150
> showturtle
> catch "demo [user]
> demo [tree 1 150]
> demo [tree 2 150]
> demo [tree 3 150]
> end

> to flagdemo
> hideturtle
> pendown setpencolor 7
> flags 15 22 1 43 1
> showturtle
> catch "demo [user]
> demo [flag]
> demo [fillflag 4]
> demo [flags 15 22 1 5 1]
> end

> to user
> if :stepfast [wait 20 stop]
> pr [Press spacebar to continue, F to continue Fast (without asking each
> step),]
> type [D to skip to next Demo, or P for a different Picture:\ ]
> localmake "char uppercase readchar
> cleartext
> if :char = "F [make "stepfast "true]
> if :char = "D [throw "demo]
> if :char = "P [throw "picture]
> end

> to demo :command
> clearscreen
> type "|? |
> settextcolor 6 0
> print :command
> settextcolor 7 0
> run :command
> display first :command
> catch "demo [
>  user
>  clearscreen
>  localmake "linecolors map [(list 0 7)] butfirst text first :command
>  localmake "walkdepth 0
>  walk :command
> ]
> make "stepfast "false
> end

> to display :procname
> localmake "oldpos pos
> localmake "oldheading heading
> localmake "text fulltext :procname
> localmake "height 180
> foreach :text [
>   penup   setpos list -300 :height  setheading 0
>   make "height :height-18
>   pendown   label ?
> ]
> penup   setpos :oldpos   setheading :oldheading   pendown
> end

> to walk :command [:dpy "true] [:walkdepth :walkdepth+1]
> localmake "stepfast :stepfast
> localmake "text text first :command
> localmake "fulltext fulltext first :command
> localmake "oldvalues map [ifelse namep ? [thing ?] ["none]] first :text
> localmake "variables first :text
> local :variables
> (foreach :variables :oldvalues "make)
> local "values
> run (sentence "make ""values "\( "list butfirst :command "\) )
> (foreach :variables :values "make)
> if :dpy [display first :command]
> showvariables
> commands butfirst :text butfirst :fulltext 180-18 :linecolors
> end

> to commands :text :fulltext :height :somecolors
> if empty? :text [stop]
> localmake "pos pos
> localmake "head heading
> localmake "pen pendown?
> localmake "pc pencolor
> penup  setpos list -300 :height  setheading 0
> setpencolor item :walkdepth :depthcolors
> pendown  label first :fulltext
> .setbf first :somecolors fput pencolor butfirst first :somecolors
> penup  setpos :pos  setheading :head
> if :pen [pendown]
> setpencolor :pc
> if equalp first first :text "localmake [
>   run sentence first :text []
> ]
> localmake "runresult runresult [commands1]
> if emptyp :runresult [user]
> make "pos pos
> make "head heading
> make "pen pendown?
> make "pc pencolor
> penup  setpos list -300 :height  setheading 0
> .setbf first :somecolors butfirst butfirst first :somecolors
> setpencolor first butfirst first :somecolors
> pendown  label first :fulltext
> penup  setpos :pos  setheading :head
> if :pen [pendown]
> setpencolor :pc
> if emptyp :runresult [stop]
> if not equalp first :runresult "command-completed-without-stopping ~
>    [output first :runresult]
> commands butfirst :text butfirst :fulltext :height-18 butfirst :somecolors
> end

> to commands1
> ifelse equalp first first :text first :command ~
>   [(walk sentence first :text [] "false)
>     if not emptyp butfirst :text [showvariables]] ~
>   [run sentence first :text []
>    if equalp first first :text "make [walkmake "globals]
>    if equalp first first :text "localmake [walkmake "variables]
>    user]
> output "command-completed-without-stopping
> end

> to walkmake :varlist
> local "makevalues
> run (sentence "make ""makevalues "\( "list butfirst first :text "\) )
> localmake "varname first :makevalues
> if not memberp :varname (sentence :globals :variables) ~
>    [make :varlist sentence thing :varlist :varname]
> showvariables
> end

> to showvariables
> localmake "oldpos pos
> localmake "oldheading heading
> localmake "oldpc pencolor
> penup   setpos :varposn  setheading 0   pendown
> foreach (sentence :globals :variables) ~
>   [setpc 7  label (word ? "=)
>    penup right 90 forward 10*(1+count ?) left 90 pendown
>    setpc item :walkdepth :depthcolors  label (list thing ? "|   |)
>    penup right 90 forward 30  left 90 pendown]
> penup   setpos :oldpos   setheading :oldheading   pendown  setpc :oldpc
> end

> to flag
> forward 100
> localmake "p pos
> back 32
> right 90
> forward 24
> left 90
> setpos :p
> end

> to fillflag :color
> flag
> penup back 20 right 90 forward 5
> setpencolor remainder :color 16
> fill
> setpencolor 7
> back 5 left 90 back 80 pendown
> end

> to flags :distance :angle :increment :number :fillcolor
> if :number=0 [stop]
> fillflag :fillcolor
> forward :distance
> right :angle
> flags :distance+:increment :angle :increment :number-1 :fillcolor+1
> end

> to tree :number :size
> if :number=0 [stop]
> fd :size/3
> lt 20
> tree :number-1 :size*0.7
> rt 20
> fd :size/6
> rt 25
> tree :number-1 :size*0.55
> lt 25
> fd :size/2
> lt 30
> tree :number-1 :size*0.2
> rt 50
> tree :number-1 :size*0.25
> lt 20
> bk :size
> end

> ---------------------------------------------------------------




--
===============================================================

http://www.softronix.com/
The www page contains some very powerful educational software.
Our single most important investment is our kids.
---------------------------------------------------------------





Sat, 09 Jun 2001 03:00:00 GMT  
 
 [ 2 post ] 

 Relevant Pages 

1. LOGO-L> a teaching program for logo

2. LOGO-L> teaching logo to young kids

3. LOGO-L> teaching logo to young kids

4. LOGO-L> Free Logo Teaching Materials

5. : LOGO-L> LOGO self-taught

6. LOGO-L> Books for teaching kids programming

7. LOGO-L> Programming in Logo

8. LOGO-L> Apple logo/MSW Logo

9. LOGO-L> Reseach Machines Logo (RM LOGO)

10. Teaching Logo, not in English - and Logo Users Ring

11. LOGO-L> Re: LOGO-L> a 6 week curriculum for teaching Logo

12. LOGO-L> Learning/Teaching BOTH was: Calculator

 

 
Powered by phpBB® Forum Software