2
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
3
"http://www.w3.org/TR/html4/loose.dtd">
5
<head><title>literate code</title>
6
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
7
<meta name="generator" content="TeX4ht (http://www.cis.ohio-state.edu/~gurari/TeX4ht/mn.html)">
9
<meta name="src" content="prgmn.tex">
10
<meta name="date" content="2001-02-28 17:06:00">
11
<link rel="stylesheet" type="text/css" href="prgmn.css">
14
A mini-turtle program.
15
<!--l. 45--><p class="indent"><a
17
class="cmtt-10"><..</span></a><a
18
href="#PrTx2" name="QPrTx1"><span
19
class="cmtt-10">turtle</span></a><a
21
class="cmtt-10">..></span></a>
22
<pre><!--x--> <span
23
class="cmtt-10">import java.applet.*;</span>
25
class="cmtt-10">import java.awt.*;</span>
27
class="cmtt-10">public class turtle extends Applet</span>
29
class="cmtt-10">{</span>
32
class="cmtt-10">Graphics g;</span>
35
class="cmtt-10"><.</span></a><a
37
class="cmtt-10">vars</span></a><a
39
class="cmtt-10">.></span></a>
42
class="cmtt-10"><.</span></a><a
44
class="cmtt-10">turtle functions</span></a><a
46
class="cmtt-10">.></span></a>
48
class="cmtt-10">public void init()</span>
50
class="cmtt-10">{</span>
53
class="cmtt-10"><.</span></a><a
55
class="cmtt-10">initial state</span></a><a
56
name="PrTx9" href="#PrTx33"><span
57
class="cmtt-10">.></span></a>
60
class="cmtt-10"><.</span></a><a
62
class="cmtt-10">draw interface</span></a><a
64
class="cmtt-10">.></span></a>
66
class="cmtt-10">}</span>
68
class="cmtt-10">public void paint(Graphics g) {</span>
70
class="cmtt-10">this.g = g;</span>
73
class="cmtt-10"><.</span></a><a
75
class="cmtt-10">execute commands</span></a><a
77
class="cmtt-10">.></span></a>
79
class="cmtt-10">}</span>
81
class="cmtt-10">public boolean action(Event e,Object o)</span>
83
class="cmtt-10">{</span>
86
class="cmtt-10"><.</span></a><a
88
class="cmtt-10">get command</span></a><a
90
class="cmtt-10">.></span></a>
92
class="cmtt-10">repaint();</span>
94
class="cmtt-10">return true;</span>
96
class="cmtt-10">}</span>
99
class="cmtt-10">}</span>
100
<!--x--> -_-_-</pre>
101
<!--l. 48--><p class="noindent">The turtle can move forward without trace, move forward while tracing its path, and
103
<!--l. 72--><p class="indent"><a
105
class="cmtt-10"><..</span></a><a
106
href="#PrTx6" name="QPrTx2"><span
107
class="cmtt-10">turtle functions</span></a><a
109
class="cmtt-10">..></span></a>
110
<pre><!--x--> <span
111
class="cmtt-10">void Move(int x, int y){ this.x += x; this.y -= y; }</span>
114
class="cmtt-10">void Move(int r){ x += (int) (r * Math.cos(d));</span>
116
class="cmtt-10">y -= (int) (r * Math.sin(d)); }</span>
119
class="cmtt-10">void Line(int x, int y){</span>
121
class="cmtt-10">g.drawLine( this.x, this.y, this.x+x, this.y-y );</span>
123
class="cmtt-10">Move(x,y);</span>
125
class="cmtt-10">}</span>
127
class="cmtt-10">void Line(int r){</span>
129
class="cmtt-10">Line( (new Double(r * Math.cos(d))).intValue(),</span>
132
class="cmtt-10">(new Double( r * Math.sin(d) )).intValue() ); }</span>
135
class="cmtt-10">void Rotate(int d){</span>
137
class="cmtt-10">this.d += d * 3.14 / 180;</span>
139
class="cmtt-10">while( 6.28 < this.d ){ this.d -= 6.28; }</span>
141
class="cmtt-10">while( this.d < 0 ){ this.d += 6.28; }</span>
143
class="cmtt-10">}</span>
145
<!--x--> -_-_-</pre>
146
<!--l. 75--><p class="noindent">The text field may be modified by the users.
147
<!--l. 83--><p class="indent"><a
149
class="cmtt-10"><..</span></a><a
150
href="#PrTx4" name="QPrTx3"><span
151
class="cmtt-10">vars</span></a><a
152
name="PrTx19" href="#PrTx41"><span
153
class="cmtt-10">..></span></a>
154
<pre><!--x--> <span
155
class="cmtt-10">Button moveButton,</span>
157
class="cmtt-10">lineButton,</span>
159
class="cmtt-10">clearButton,</span>
161
class="cmtt-10">rotateButton;</span>
163
class="cmtt-10">TextField in;</span>
164
<!--x--> -_-_-</pre>
165
<!--l. 93--><p class="noindent"><a
167
class="cmtt-10"><..</span></a><a
168
href="#PrTx10" name="QPrTx4"><span
169
class="cmtt-10">draw interface</span></a><a
171
class="cmtt-10">..></span></a>
172
<pre><!--x--> <span
173
class="cmtt-10">clearButton = new Button("Clear"); add(clearButton);</span>
175
class="cmtt-10">moveButton = new Button("Move"); add(moveButton);</span>
177
class="cmtt-10">lineButton = new Button("Line"); add(lineButton);</span>
179
class="cmtt-10">rotateButton = new Button("Rotate"); add(rotateButton);</span>
181
class="cmtt-10">in = new TextField(3); add(in);</span>
183
class="cmtt-10">in.setText( "50" );</span>
184
<!--x--> -_-_-</pre>
185
<!--l. 109--><p class="noindent"><a
187
class="cmtt-10"><..</span></a><a
188
href="#PrTx12" name="QPrTx5"><span
189
class="cmtt-10">execute commands</span></a><a
191
class="cmtt-10">..></span></a>
192
<pre><!--x--> <span
193
class="cmtt-10">int i;</span>
195
class="cmtt-10">x = 150; y = 150; d = 0;</span>
197
class="cmtt-10">for( i=0; i<N; i+=2 ){</span>
200
class="cmtt-10">switch( command[i] ) {</span>
203
class="cmtt-10">case</span> <a
205
class="cmtt-10"><.</span></a><a
207
class="cmtt-10">Line op</span></a><a
208
name="PrTx25" href="#PrTx35"><span
209
class="cmtt-10">.></span></a><span
210
class="cmtt-10">:{ Line( command[i+1] ); break; }</span>
212
class="cmtt-10">case</span> <a
214
class="cmtt-10"><.</span></a><a
216
class="cmtt-10">Move op</span></a><a
217
name="PrTx27" href="#PrTx37"><span
218
class="cmtt-10">.></span></a><span
219
class="cmtt-10">:{ Move( command[i+1] ); break; }</span>
221
class="cmtt-10">case</span> <a
223
class="cmtt-10"><.</span></a><a
225
class="cmtt-10">Rotate op</span></a><a
226
name="PrTx29" href="#PrTx39"><span
227
class="cmtt-10">.></span></a><span
228
class="cmtt-10">:{ Rotate( command[i+1] ); break; }</span>
231
class="cmtt-10">}</span>
233
class="cmtt-10">}</span>
234
<!--x--> -_-_-</pre>
235
<!--l. 125--><p class="noindent"><a
237
class="cmtt-10"><..</span></a><a
238
href="#PrTx14" name="QPrTx6"><span
239
class="cmtt-10">get command</span></a><a
241
class="cmtt-10">..></span></a>
242
<pre><!--x--> <span
243
class="cmtt-10">if("Clear".equals(o)) {</span> <a
244
name="PrTx32" href="#PrTx8"><span
245
class="cmtt-10"><.</span></a><a
247
class="cmtt-10">initial state</span></a><a
249
class="cmtt-10">.></span></a> <span
250
class="cmtt-10">}</span>
252
class="cmtt-10">else{</span>
255
class="cmtt-10">if( "Line".equals(o)){ command[N]=</span><a
256
name="PrTx34" href="#PrTx24"><span
257
class="cmtt-10"><.</span></a><a
259
class="cmtt-10">Line op</span></a><a
261
class="cmtt-10">.></span></a><span
262
class="cmtt-10">; }</span>
265
class="cmtt-10">if( "Move".equals(o)){ command[N]=</span><a
266
name="PrTx36" href="#PrTx26"><span
267
class="cmtt-10"><.</span></a><a
269
class="cmtt-10">Move op</span></a><a
271
class="cmtt-10">.></span></a><span
272
class="cmtt-10">; }</span>
274
class="cmtt-10">if("Rotate".equals(o)){ command[N]=</span><a
275
name="PrTx38" href="#PrTx28"><span
276
class="cmtt-10"><.</span></a><a
278
class="cmtt-10">Rotate op</span></a><a
280
class="cmtt-10">.></span></a><span
281
class="cmtt-10">; }</span>
284
class="cmtt-10">String s = new String( in.getText() );</span>
286
class="cmtt-10">Integer i = new Integer( s );</span>
288
class="cmtt-10">command[N+1]= i.intValue();</span>
290
class="cmtt-10">N+=2;</span>
293
class="cmtt-10">}</span>
294
<!--x--> -_-_-</pre>
295
<!--l. 129--><p class="noindent"><a
296
href="#PrTx18" name="PrTx40"><span
297
class="cmtt-10"><..</span></a><a
298
href="#PrTx4" name="QPrTx7"><span
299
class="cmtt-10">vars</span></a><a
300
name="PrTx41" href="#PrTx51"><span
301
class="cmtt-10">..></span></a><span
302
class="cmtt-10">+</span>
303
<pre><!--x--> <span
304
class="cmtt-10">int command[] = new int[300];</span>
305
<!--x--> -_-_-</pre>
306
<!--l. 133--><p class="noindent"><a
308
class="cmtt-10"><..</span></a><a
309
href="#PrTx24" name="QPrTx8"><span
310
class="cmtt-10">Line op</span></a><a
312
class="cmtt-10">..></span></a>
313
<pre><!--x--> <span
314
class="cmtt-10">1</span>
315
<!--x--> -_-_-</pre>
316
<!--l. 137--><p class="noindent"><a
318
class="cmtt-10"><..</span></a><a
319
href="#PrTx26" name="QPrTx9"><span
320
class="cmtt-10">Move op</span></a><a
322
class="cmtt-10">..></span></a>
323
<pre><!--x--> <span
324
class="cmtt-10">2</span>
325
<!--x--> -_-_-</pre>
326
<!--l. 141--><p class="noindent"><a
328
class="cmtt-10"><..</span></a><a
329
href="#PrTx28" name="QPrTx10"><span
330
class="cmtt-10">Rotate op</span></a><a
332
class="cmtt-10">..></span></a>
333
<pre><!--x--> <span
334
class="cmtt-10">3</span>
335
<!--x--> -_-_-</pre>
336
<!--l. 146--><p class="noindent"><a
338
class="cmtt-10"><..</span></a><a
339
href="#PrTx8" name="QPrTx11"><span
340
class="cmtt-10">initial state</span></a><a
342
class="cmtt-10">..></span></a>
343
<pre><!--x--> <span
344
class="cmtt-10">N = 0;</span>
345
<!--x--> -_-_-</pre>
346
<!--l. 152--><p class="noindent"><a
347
href="#PrTx40" name="PrTx50"><span
348
class="cmtt-10"><..</span></a><a
349
href="#PrTx4" name="QPrTx12"><span
350
class="cmtt-10">vars</span></a><a
352
class="cmtt-10">..></span></a><span
353
class="cmtt-10">+</span>
354
<pre><!--x--> <span
355
class="cmtt-10">int N;</span>
357
class="cmtt-10">int x, y;</span>
359
class="cmtt-10">double d;</span>
360
<!--x--> -_-_-</pre>
361
<!--l. 155--><p class="noindent">”javac turtle.java”