-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathExample script.html
More file actions
140 lines (137 loc) · 13.7 KB
/
Example script.html
File metadata and controls
140 lines (137 loc) · 13.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!-- saved from url=(0081)http://backup.se.sjtu.edu.cn/elearning/courseware/sites/382/download/example.html -->
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Example script</title>
<style type="text/css"><!--
pre { font-family: monospace; color: #ffffff; background-color: #0b161d; }
body { font-family: monospace; color: #ffffff; background-color: #0b161d; }
* { font-size: 1em; }
.Number { color: #ff80ff; background-color: #0b161d; padding-bottom: 1px; }
.Statement { color: #ff8800; background-color: #0b161d; padding-bottom: 1px; font-weight: bold; }
.LineNr { color: #ffffff; background-color: #000000; padding-bottom: 1px; }
.Comment { color: #39a6e5; background-color: #0b161d; padding-bottom: 1px; }
.Type { color: #ffff7f; background-color: #0b161d; padding-bottom: 1px; font-weight: bold; }
.Boolean { color: #ffbfff; background-color: #0b161d; padding-bottom: 1px; }
--></style>
</head>
<body>
<pre><span id="L1" class="LineNr"> 1 </span><span class="Statement">program</span> example()
<span id="L2" class="LineNr"> 2 </span> <span class="Comment">// 一个判断 n 是否为奇数的函数</span>
<span id="L3" class="LineNr"> 3 </span> <span class="Statement">function</span> isodd(n)
<span id="L4" class="LineNr"> 4 </span> <span class="Comment">// 定义函数的参数</span>
<span id="L5" class="LineNr"> 5 </span> <span class="Statement">var</span> n <span class="Statement">is</span> <span class="Type">integer</span>;
<span id="L6" class="LineNr"> 6 </span> <span class="Comment">// 定义函数的返回值</span>
<span id="L7" class="LineNr"> 7 </span> <span class="Statement">return</span> <span class="Type">boolean</span>;
<span id="L8" class="LineNr"> 8 </span> <span class="Comment">// 声明部分</span>
<span id="L9" class="LineNr"> 9 </span> <span class="Statement">is</span>
<span id="L10" class="LineNr"> 10 </span> <span class="Comment">// 实现部分</span>
<span id="L11" class="LineNr"> 11 </span> <span class="Statement">begin</span>
<span id="L12" class="LineNr"> 12 </span> <span class="Statement">if</span> n % <span class="Number">2</span> == <span class="Number">0</span> <span class="Statement">then</span>
<span id="L13" class="LineNr"> 13 </span> <span class="Comment">// yes 表示布尔真值</span>
<span id="L14" class="LineNr"> 14 </span> <span class="Statement">return</span> <span class="Boolean">yes</span>;
<span id="L15" class="LineNr"> 15 </span> <span class="Statement">end</span> <span class="Statement">if</span>
<span id="L16" class="LineNr"> 16 </span> <span class="Comment">// no 表示布尔假</span>
<span id="L17" class="LineNr"> 17 </span> <span class="Statement">return</span> <span class="Boolean">no</span>;
<span id="L18" class="LineNr"> 18 </span> <span class="Comment">// 函数结束</span>
<span id="L19" class="LineNr"> 19 </span> <span class="Statement">end</span> <span class="Statement">function</span> isodd;
<span id="L20" class="LineNr"> 20 </span>
<span id="L21" class="LineNr"> 21 </span> <span class="Comment">// ackerman 函数</span>
<span id="L22" class="LineNr"> 22 </span> <span class="Statement">function</span> ackerman(m, n)
<span id="L23" class="LineNr"> 23 </span> <span class="Statement">var</span> m <span class="Statement">is</span> <span class="Type">integer</span>;
<span id="L24" class="LineNr"> 24 </span> <span class="Statement">var</span> n <span class="Statement">is</span> <span class="Type">integer</span>;
<span id="L25" class="LineNr"> 25 </span> <span class="Statement">return</span> <span class="Type">integer</span>;
<span id="L26" class="LineNr"> 26 </span> <span class="Statement">is</span>
<span id="L27" class="LineNr"> 27 </span> <span class="Statement">begin</span>
<span id="L28" class="LineNr"> 28 </span> <span class="Statement">if</span> m == <span class="Number">0</span> <span class="Statement">then</span>
<span id="L29" class="LineNr"> 29 </span> <span class="Statement">return</span> n + <span class="Number">1</span>;
<span id="L30" class="LineNr"> 30 </span> <span class="Statement">elif</span> m > <span class="Number">0</span> and n == <span class="Number">0</span> <span class="Statement">then</span>
<span id="L31" class="LineNr"> 31 </span> <span class="Statement">return</span> ackerman(m - <span class="Number">1</span>, <span class="Number">1</span>);
<span id="L32" class="LineNr"> 32 </span> <span class="Statement">else</span>
<span id="L33" class="LineNr"> 33 </span> <span class="Statement">return</span> ackerman(m - <span class="Number">1</span>, ackerman(m, n - <span class="Number">1</span>));
<span id="L34" class="LineNr"> 34 </span> <span class="Statement">end</span> <span class="Statement">if</span>
<span id="L35" class="LineNr"> 35 </span> <span class="Statement">end</span> <span class="Statement">function</span> ackerman;
<span id="L36" class="LineNr"> 36 </span>
<span id="L37" class="LineNr"> 37 </span> <span class="Comment">// 使用数组</span>
<span id="L38" class="LineNr"> 38 </span> <span class="Statement">type</span> line <span class="Statement">is</span> <span class="Type">array</span> <span class="Type">of</span> <span class="Number">10</span> <span class="Type">integer</span>;
<span id="L39" class="LineNr"> 39 </span> <span class="Comment">// 使用二维数组</span>
<span id="L40" class="LineNr"> 40 </span> <span class="Statement">type</span> grid <span class="Statement">is</span> <span class="Type">array</span> <span class="Type">of</span> <span class="Number">10</span> line;
<span id="L41" class="LineNr"> 41 </span>
<span id="L42" class="LineNr"> 42 </span> <span class="Comment">// 打印一个乘法表</span>
<span id="L43" class="LineNr"> 43 </span> <span class="Statement">function</span> multy(n)
<span id="L44" class="LineNr"> 44 </span> <span class="Statement">var</span> n <span class="Statement">is</span> <span class="Type">integer</span>;
<span id="L45" class="LineNr"> 45 </span> <span class="Comment">// 没有返回值</span>
<span id="L46" class="LineNr"> 46 </span> <span class="Statement">is</span>
<span id="L47" class="LineNr"> 47 </span> <span class="Comment">// 声明部分可以声明函数中用到的局部变量</span>
<span id="L48" class="LineNr"> 48 </span> <span class="Statement">var</span> i <span class="Statement">is</span> <span class="Type">integer</span>;
<span id="L49" class="LineNr"> 49 </span> <span class="Statement">var</span> j <span class="Statement">is</span> <span class="Type">integer</span>;
<span id="L50" class="LineNr"> 50 </span> <span class="Statement">var</span> g <span class="Statement">is</span> grid;
<span id="L51" class="LineNr"> 51 </span> <span class="Statement">var</span> l <span class="Statement">is</span> line;
<span id="L52" class="LineNr"> 52 </span> <span class="Statement">begin</span>
<span id="L53" class="LineNr"> 53 </span> i := <span class="Number">0</span>;
<span id="L54" class="LineNr"> 54 </span> <span class="Comment">// 如果 i < 10 成立则进入循环体</span>
<span id="L55" class="LineNr"> 55 </span> <span class="Statement">while</span> i < <span class="Number">10</span> <span class="Statement">do</span>
<span id="L56" class="LineNr"> 56 </span> j := <span class="Number">0</span>;
<span id="L57" class="LineNr"> 57 </span> <span class="Comment">// 无论何种条件,进入循环体</span>
<span id="L58" class="LineNr"> 58 </span> <span class="Statement">repeat</span>
<span id="L59" class="LineNr"> 59 </span> g[i][j] := i * j;
<span id="L60" class="LineNr"> 60 </span> <span class="Comment">// 如果 j >= 10 成立则退出循环,否则回到循环开始</span>
<span id="L61" class="LineNr"> 61 </span> <span class="Statement">until</span> j >= <span class="Number">10</span>;
<span id="L62" class="LineNr"> 62 </span> i := i + <span class="Number">1</span>;
<span id="L63" class="LineNr"> 63 </span> <span class="Comment">// 此时回到循环的条件判断处</span>
<span id="L64" class="LineNr"> 64 </span> <span class="Statement">end</span> <span class="Statement">while</span>
<span id="L65" class="LineNr"> 65 </span> <span class="Comment">// 遍历 g 中的每个元素</span>
<span id="L66" class="LineNr"> 66 </span> <span class="Statement">foreach</span> l in g <span class="Statement">do</span>
<span id="L67" class="LineNr"> 67 </span> <span class="Statement">foreach</span> i in l <span class="Statement">do</span>
<span id="L68" class="LineNr"> 68 </span> <span class="Statement">print</span> i;
<span id="L69" class="LineNr"> 69 </span> <span class="Statement">end</span> <span class="Statement">foreach</span>
<span id="L70" class="LineNr"> 70 </span> <span class="Statement">end</span> <span class="Statement">foreach</span>
<span id="L71" class="LineNr"> 71 </span> <span class="Statement">end</span> <span class="Statement">function</span> multy;
<span id="L72" class="LineNr"> 72 </span>
<span id="L73" class="LineNr"> 73 </span> <span class="Comment">// 可以定义一个类</span>
<span id="L74" class="LineNr"> 74 </span> <span class="Statement">type</span> a <span class="Statement">is</span> <span class="Type">class</span>
<span id="L75" class="LineNr"> 75 </span> <span class="Comment">// 类中的所有内容都是可以公开访问的</span>
<span id="L76" class="LineNr"> 76 </span> <span class="Comment">// 类的成员变量</span>
<span id="L77" class="LineNr"> 77 </span> <span class="Statement">var</span> v <span class="Statement">is</span> <span class="Type">integer</span>;
<span id="L78" class="LineNr"> 78 </span> <span class="Comment">// 类的函数</span>
<span id="L79" class="LineNr"> 79 </span> <span class="Statement">function</span> f(x)
<span id="L80" class="LineNr"> 80 </span> <span class="Statement">var</span> x <span class="Statement">is</span> <span class="Type">integer</span>;
<span id="L81" class="LineNr"> 81 </span> <span class="Statement">return</span> <span class="Type">integer</span>;
<span id="L82" class="LineNr"> 82 </span> <span class="Statement">is</span>
<span id="L83" class="LineNr"> 83 </span> <span class="Statement">var</span> t <span class="Statement">is</span> <span class="Type">integer</span>;
<span id="L84" class="LineNr"> 84 </span> <span class="Statement">begin</span>
<span id="L85" class="LineNr"> 85 </span> t := x + v;
<span id="L86" class="LineNr"> 86 </span> v := x;
<span id="L87" class="LineNr"> 87 </span> <span class="Statement">return</span> t;
<span id="L88" class="LineNr"> 88 </span> <span class="Statement">end</span> <span class="Statement">function</span> f;
<span id="L89" class="LineNr"> 89 </span> <span class="Statement">end</span> <span class="Type">class</span>;
<span id="L90" class="LineNr"> 90 </span>
<span id="L91" class="LineNr"> 91 </span> <span class="Comment">// 类可以被继承</span>
<span id="L92" class="LineNr"> 92 </span> <span class="Statement">type</span> b <span class="Statement">is</span> <span class="Type">class</span> <span class="Type">extends</span> c
<span id="L93" class="LineNr"> 93 </span> <span class="Comment">// 函数可以被覆盖</span>
<span id="L94" class="LineNr"> 94 </span> <span class="Statement">function</span> f(x)
<span id="L95" class="LineNr"> 95 </span> <span class="Statement">var</span> x <span class="Statement">is</span> <span class="Type">integer</span>;
<span id="L96" class="LineNr"> 96 </span> <span class="Statement">return</span> <span class="Type">integer</span>;
<span id="L97" class="LineNr"> 97 </span> <span class="Statement">is</span>
<span id="L98" class="LineNr"> 98 </span> <span class="Statement">begin</span>
<span id="L99" class="LineNr"> 99 </span> v := v + x;
<span id="L100" class="LineNr">100 </span> <span class="Statement">return</span> v;
<span id="L101" class="LineNr">101 </span> <span class="Statement">end</span> <span class="Statement">function</span> f;
<span id="L102" class="LineNr">102 </span> <span class="Statement">end</span> <span class="Type">class</span>;
<span id="L103" class="LineNr">103 </span><span class="Comment">// 主程序的声明</span>
<span id="L104" class="LineNr">104 </span><span class="Statement">is</span>
<span id="L105" class="LineNr">105 </span> <span class="Statement">var</span> p <span class="Statement">is</span> a;
<span id="L106" class="LineNr">106 </span> <span class="Statement">var</span> q <span class="Statement">is</span> b;
<span id="L107" class="LineNr">107 </span><span class="Comment">// 主程序</span>
<span id="L108" class="LineNr">108 </span><span class="Statement">begin</span>
<span id="L109" class="LineNr">109 </span> <span class="Statement">print</span> p.f(<span class="Number">5</span>);
<span id="L110" class="LineNr">110 </span> <span class="Statement">print</span> q.f(<span class="Number">4</span>);
<span id="L111" class="LineNr">111 </span> p.v := <span class="Number">3</span>;
<span id="L112" class="LineNr">112 </span> <span class="Statement">print</span> p.f(<span class="Number">3</span>);
<span id="L113" class="LineNr">113 </span> multy();
<span id="L114" class="LineNr">114 </span> <span class="Statement">print</span> ackerman(<span class="Number">3</span>, <span class="Number">4</span>);
<span id="L115" class="LineNr">115 </span> <span class="Statement">if</span> isodd(<span class="Number">3</span>) <span class="Statement">then</span>
<span id="L116" class="LineNr">116 </span> <span class="Statement">print</span> <span class="Number">3</span>;
<span id="L117" class="LineNr">117 </span> <span class="Statement">end</span> <span class="Statement">if</span>
<span id="L118" class="LineNr">118 </span><span class="Statement">end</span>
</pre>
</body></html>