Added upstream from http://ftp.icm.edu.pl/pub/loglan/
[loglan.git] / HTML / MicroMan / compound.htm
1 <!doctype html public "-//IETF//DTD HTML//EN">\r
2 <HTML>\r
3 \r
4 <HEAD>\r
5 \r
6 <TITLE>Compound Statements</TITLE>\r
7 \r
8 <META NAME="GENERATOR" CONTENT="Internet Assistant for Word 1.0Z">\r
9 <META NAME="AUTHOR" CONTENT="NOM">\r
10 </HEAD>\r
11 \r
12 <BODY>\r
13 \r
14 <H4><U><I>Loglan 82, A micro-manual of the programming language\r
15 - Basic constructs and facilities</I></U></H4>\r
16 \r
17 <H1><IMG ALIGN=MIDDLE SRC="gifs/logo2.gif"> 2) Compound Statements\r
18 </H1>\r
19 <HR>\r
20 \r
21 <P>\r
22 Compound statements in LOGLAN-82 are built up from simple statements\r
23 (like assignment statement e.g. x:=y+0.5, call statement e.g.\r
24 call P(7,x+5) etc.) by means of conditional, iteration and case\r
25 statements.\r
26 <P>\r
27 The syntax of conditional statement is as follows:\r
28 <P>\r
29 <IMG SRC="gifs/cs01.gif"> \r
30 <P>\r
31 where &quot;<B>else</B> part&quot; may be omitted:\r
32 <P>\r
33 <IMG SRC="gifs/cs02.gif"> \r
34 <P>\r
35 The semantics of conditional statement is standard. The keyword\r
36 <B>fi</B> allows to nest conditional statements without appearence\r
37 of &quot;dangling <B>else</B>&quot; ambiguity.\r
38 <P>\r
39 Example:\r
40 <P>\r
41 <IMG SRC="gifs/cs03.gif"> \r
42 <P>\r
43 The statements in a sequence of statements are separated with\r
44 semicolons (semicolon may end a sequence , and then, the last\r
45 statement in the sequence is the empty statement).\r
46 <P>\r
47 The short circuit control forms are realized in LOGLAN-82 by the\r
48 conditional statements with <B>orif</B> (or <B>andif</B>) list.\r
49 A conditional statement with <B>orif</B> list has the form:\r
50 <P>\r
51 <IMG SRC="gifs/cs04.gif"> \r
52 <P>\r
53 and corresponds somehow to a conditional statement:\r
54 <P>\r
55 <IMG SRC="gifs/cs05.gif"> \r
56 <P>\r
57 The above conditional statement (without orif list) selects for\r
58 execution one of two sequences of statements, depending on the\r
59 truth value of the boolean expression:\r
60 <P>\r
61 <IMG SRC="gifs/cs06.gif"> \r
62 <P>\r
63 which is always evaluated till the end. For the execution of the\r
64 conditional statement with <B>orif</B> list the specified conditons\r
65 wb1,...,wbk are evaluated in succession, until the first one evaluates\r
66 to true. Then the rest of the sequence wb1,...,wbk is abandoned\r
67 and &quot;<B>then</B> part&quot; is executed. If none of the conditions\r
68 wb1,...,wbk evaluates to true &quot;<B>else</B> part&quot; is\r
69 executed (if any).\r
70 <P>\r
71 Conditional statements with <B>orif</B> list facilitate to program\r
72 those conditions, which evaluation to the end may raise a run-time\r
73 error.\r
74 <P>\r
75 Example:\r
76 <P>\r
77 The execution of the statement:\r
78 <P>\r
79 <IMG SRC="gifs/cs07.gif"> \r
80 <P>\r
81 where the value of i is greater than n, and A is an array with\r
82 upper bound n, will raise the run-time error. Then the user can\r
83 write:\r
84 <P>\r
85 <IMG SRC="gifs/cs08.gif"> \r
86 <P>\r
87 what allows to avoid this run-time error and probably agrees with\r
88 his intension.\r
89 <P>\r
90 Conditional statement with andif list has the form:\r
91 <P>\r
92 <IMG SRC="gifs/cs09.gif"> \r
93 <P>\r
94 For the execution of this kind of statements, the conditions wb1,...,wbk\r
95 are evaluated in succession, until the first one evaluates to\r
96 false; then &quot;<B>else</B> part&quot; (if any) is executed.\r
97 Otherwise &quot;<B>then</B> part&quot; is executed.\r
98 <P>\r
99 Iteration statement in LOGLAN-82 has the form:\r
100 <P>\r
101 <IMG SRC="gifs/cs10.gif"> \r
102 <P>\r
103 An iteration statement specifies repeated execution of the sequence\r
104 of statements and terminates with the execution of the simple\r
105 statement <B>exit</B> \r
106 <P>\r
107 Example:\r
108 <P>\r
109 <IMG SRC="gifs/cs11.gif"> \r
110 <P>\r
111 If two iteration statements are nested, then double <B>exit</B>\r
112 in the inner one terminates both of them.\r
113 <P>\r
114 Example:\r
115 <P>\r
116 <IMG SRC="gifs/cs12.gif"> \r
117 <P>\r
118 In the example above simultaneous assignment statements are illustrated\r
119 (e.g. r,x:=0) and comments, which begin with a left parenthesis\r
120 immediately followed by an asterisk and end with an asterisk immediately\r
121 followed by a right parenthesis.\r
122 <P>\r
123 Triple <B>exit</B> terminates three nested iteration statements,\r
124 four <B>exit</B> terminates four nested iteration statements etc.\r
125 <P>\r
126 The iteration statement with <B>while</B> condition:\r
127 <P>\r
128 <IMG SRC="gifs/cs13.gif"> \r
129 <P>\r
130 is equivalent to:\r
131 <P>\r
132 <IMG SRC="gifs/cs14.gif"> \r
133 <P>\r
134 The iteration statements with controlled variables (for statements)\r
135 have the forms:\r
136 <P>\r
137 <IMG SRC="gifs/cs15.gif"> \r
138 <P>\r
139 or\r
140 <P>\r
141 <IMG SRC="gifs/cs16.gif"> \r
142 <P>\r
143 The type of the controlled variable j must be discrete. The value\r
144 of this variable in the case of the for statement with to is increased,\r
145 and in the case of the <B>for</B> statement with <B>downto</B>\r
146 is decreased. The discrete range begins with the value of wa1\r
147 and changes with the step equal to the value of wa2. The execution\r
148 of the <B>for</B> statement with to terminates when the value\r
149 of j for the first time becomes greater than the value of wa3\r
150 (with downto when the value of j for the first time becomes less\r
151 than the value of wa3). After the for statement termination the\r
152 value of its controlled variable is determined and equal to the\r
153 first value exceeding the specified discrete range.\r
154 <P>\r
155 The values of expressions wa1, wa2 and wa3 are evaluated once,\r
156 upon entry to the iteration statement. Default value of wa2 is\r
157 equal 1 (when the keyword step and expression wa2 are omitted).\r
158 <P>\r
159 <B>For</B> or <B>while</B> statements may be combined with exit\r
160 statement.\r
161 <P>\r
162 Example:\r
163 <P>\r
164 <IMG SRC="gifs/cs17.gif"> \r
165 <P>\r
166 The above iteration statement terminates either for the least\r
167 j, 1&lt;=j&lt;=n, such that x=A(j) or for j=n+1 when x=/=A(j),\r
168 j=1,...,n.\r
169 <P>\r
170 To enhance the user's comfort, the simple statement <B>repeat</B>\r
171 is provided. It may appear in an iteration statement and causes\r
172 the current iteration to be finished and the next one to be continued\r
173 (something like jump to CONTINUE in Fortran's DO statements).\r
174 <P>\r
175 Example:\r
176 <P>\r
177 <IMG SRC="gifs/cs18.gif"> \r
178 <P>\r
179 Just as <B>exit</B>, <B>repeat</B> may appear in <B>for</B> statement\r
180 or <B>while</B> statement. Then the next iteration begins with\r
181 either the evaluation of a new value of the controlled variable\r
182 (<B>for</B> statement) or <B>with</B> the evaluation of the condition\r
183 (while statement).\r
184 <P>\r
185 Case statement in LOGLAN-82 has the form:\r
186 <P>\r
187 <IMG SRC="gifs/cs19.gif"> \r
188 <P>\r
189 where WA is an expression , L1,...,Lk are constants and I1,...,\r
190 Ik,I are sequences of statements.\r
191 <P>\r
192 A <B>case</B> statement selects for execution a sequence of statements\r
193 Ij, 1&lt;=j&lt;=k, where the value of WA equals Lj. The choice\r
194 <B>otherwise</B> covers all values (possibly none) not given in\r
195 the previous choices. The execution of a <B>case</B> statement\r
196 chooses one and only one alternative (since the choices are to\r
197 be exhaustive and mutually exclusive). <HR>\r
198 \r
199 <P>\r
200 <hr>\r
201 <A HREF="tableofc.htm"><IMG SRC="gifs/PrevPage.gif"></A> \r
202 <A HREF="homepage.htm"> <IMG SRC="gifs/HomePage.gif"></A> \r
203 <A HREF="modulari.htm"><IMG SRC="gifs/NextPage.gif"></A>\r
204 <HR>\r
205 \r
206 <ADDRESS>\r
207 Last update 02/07/95 \r
208 </ADDRESS>\r
209 \r
210 <ADDRESS>\r
211 Comments, suggestions and critiques are welcome to : <A HREF="mailto:linfo062@crisv2.univ-pau.fr">linfo062@crisv2.univ-pau.fr</A>\r
212 \r
213 </ADDRESS>\r
214 \r
215 </BODY>\r
216 \r
217 </HTML>\r