Arrays: Difference between revisions
Content added Content deleted
Line 4,963: | Line 4,963: | ||
STATIC AT 4: 10 |
STATIC AT 4: 10 |
||
DYNAMIC AT 4: 10 |
DYNAMIC AT 4: 10 |
||
</pre> |
|||
=={{header|Simula}}== |
|||
<lang simula>BEGIN |
|||
CLASS ITEM;; |
|||
CLASS ITEMARRAY(N); INTEGER N; |
|||
BEGIN |
|||
REF(ITEM) ARRAY DATA(1:N); |
|||
OUTTEXT("NEW ITEMARRAY WITH "); OUTINT(N, 0); OUTTEXT(" ELEMENTS"); |
|||
OUTIMAGE; |
|||
END; |
|||
CLASS ARRAYLIST; |
|||
BEGIN |
|||
PROCEDURE EXPAND(N); INTEGER N; |
|||
BEGIN |
|||
INTEGER I; |
|||
REF(ITEMARRAY) TEMP; |
|||
OUTTEXT("EXPAND TO CAPACITY "); OUTINT(N, 0); OUTIMAGE; |
|||
TEMP :- NEW ITEMARRAY(N); |
|||
FOR I := 1 STEP 1 UNTIL SIZE DO |
|||
TEMP.DATA(I) :- ITEMS.DATA(I); |
|||
ITEMS :- TEMP; |
|||
END; |
|||
PROCEDURE ADD(T); REF(ITEM) T; |
|||
BEGIN |
|||
IF SIZE + 1 > CAPACITY THEN |
|||
BEGIN |
|||
CAPACITY := 2 * CAPACITY; |
|||
EXPAND(CAPACITY); |
|||
END; |
|||
SIZE := SIZE + 1; |
|||
ITEMS.DATA(SIZE) :- T; |
|||
OUTTEXT("SIZE IS "); OUTINT(SIZE, 0); OUTIMAGE; |
|||
END; |
|||
PROCEDURE REMOVE(I); INTEGER I; |
|||
BEGIN |
|||
INTEGER J; |
|||
IF I < 1 OR I > SIZE THEN ERROR("REMOVE: INDEX OUT OF BOUNDS"); |
|||
FOR J := I STEP 1 UNTIL SIZE - 1 DO |
|||
ITEMS.DATA(J) :- ITEMS.DATA(J + 1); |
|||
ITEMS.DATA(SIZE) :- NONE; |
|||
SIZE := SIZE - 1; |
|||
END; |
|||
REF(ITEM) PROCEDURE GET(I); INTEGER I; |
|||
BEGIN |
|||
IF I < 1 OR I > SIZE THEN ERROR("GET: INDEX OUT OF BOUNDS"); |
|||
GET :- ITEMS.DATA(I); |
|||
END; |
|||
INTEGER CAPACITY; |
|||
INTEGER SIZE; |
|||
REF(ITEMARRAY) ITEMS; |
|||
CAPACITY := 20; |
|||
SIZE := 0; |
|||
EXPAND(CAPACITY); |
|||
END; |
|||
ITEM CLASS TEXTITEM(TXT); TEXT TXT;; |
|||
ARRAYLIST CLASS TEXTARRAYLIST; |
|||
BEGIN |
|||
PROCEDURE ADD(T); TEXT T; |
|||
THIS TEXTARRAYLIST QUA ARRAYLIST.ADD(NEW TEXTITEM(T)); |
|||
TEXT PROCEDURE GET(I); INTEGER I; |
|||
GET :- THIS TEXTARRAYLIST QUA ARRAYLIST.GET(I) QUA TEXTITEM.TXT; |
|||
END; |
|||
ITEM CLASS REALITEM(X); REAL X;; |
|||
ARRAYLIST CLASS REALARRAYLIST; |
|||
BEGIN |
|||
PROCEDURE ADD(X); REAL X; |
|||
THIS REALARRAYLIST QUA ARRAYLIST.ADD(NEW REALITEM(X)); |
|||
REAL PROCEDURE GET(I); INTEGER I; |
|||
GET := THIS REALARRAYLIST QUA ARRAYLIST.GET(I) QUA REALITEM.X; |
|||
END; |
|||
REF(TEXTARRAYLIST) LINES; |
|||
REF(REALARRAYLIST) REALS; |
|||
INTEGER I; |
|||
LINES :- NEW TEXTARRAYLIST; |
|||
LINES.ADD("WE"); |
|||
LINES.ADD("HAVE"); |
|||
LINES.ADD("SEEN"); |
|||
LINES.ADD("THAT"); |
|||
LINES.ADD("ARRAYS"); |
|||
LINES.ADD("ARE"); |
|||
LINES.ADD("A"); |
|||
LINES.ADD("VERY"); |
|||
LINES.ADD("CONVENIENT"); |
|||
LINES.ADD("WAY"); |
|||
LINES.ADD("OF"); |
|||
LINES.ADD("STORING"); |
|||
LINES.ADD("SIMPLE"); |
|||
LINES.ADD("VALUES"); |
|||
LINES.ADD("AND"); |
|||
LINES.ADD("REFERENCES"); |
|||
LINES.ADD("TO"); |
|||
LINES.ADD("MORE"); |
|||
LINES.ADD("COMPLEX"); |
|||
LINES.ADD("CLASS"); |
|||
LINES.ADD("OBJECTS"); |
|||
LINES.ADD("IN"); |
|||
LINES.ADD("AN"); |
|||
LINES.ADD("ORDERED"); |
|||
LINES.ADD("LIST"); |
|||
LINES.ADD("."); |
|||
FOR I := 1 STEP 1 UNTIL LINES.SIZE DO |
|||
BEGIN |
|||
OUTINT(I, 0); OUTTEXT(": "); |
|||
OUTTEXT(LINES.GET(I)); OUTIMAGE; |
|||
END; |
|||
REALS :- NEW REALARRAYLIST; |
|||
FOR I := 1 STEP 1 UNTIL 10 DO |
|||
REALS.ADD(I * I); |
|||
FOR I := 1 STEP 1 UNTIL REALS.SIZE DO |
|||
BEGIN |
|||
OUTINT(I, 4); OUTTEXT(": "); |
|||
OUTFIX(REALS.GET(I),2,10); OUTIMAGE; |
|||
END; |
|||
FOR I := REALS.SIZE STEP - 2 UNTIL 1 DO |
|||
REALS.REMOVE(I); |
|||
FOR I := 1 STEP 1 UNTIL REALS.SIZE DO |
|||
BEGIN |
|||
OUTINT(I, 4); OUTTEXT(": "); |
|||
OUTFIX(REALS.GET(I),2,10); OUTIMAGE; |
|||
END; |
|||
END; |
|||
</lang> |
|||
{{out}} |
|||
<pre>EXPAND TO CAPACITY 20 |
|||
NEW ITEMARRAY WITH 20 ELEMENTS |
|||
SIZE IS 1 |
|||
SIZE IS 2 |
|||
SIZE IS 3 |
|||
SIZE IS 4 |
|||
SIZE IS 5 |
|||
SIZE IS 6 |
|||
SIZE IS 7 |
|||
SIZE IS 8 |
|||
SIZE IS 9 |
|||
SIZE IS 10 |
|||
SIZE IS 11 |
|||
SIZE IS 12 |
|||
SIZE IS 13 |
|||
SIZE IS 14 |
|||
SIZE IS 15 |
|||
SIZE IS 16 |
|||
SIZE IS 17 |
|||
SIZE IS 18 |
|||
SIZE IS 19 |
|||
SIZE IS 20 |
|||
EXPAND TO CAPACITY 40 |
|||
NEW ITEMARRAY WITH 40 ELEMENTS |
|||
SIZE IS 21 |
|||
SIZE IS 22 |
|||
SIZE IS 23 |
|||
SIZE IS 24 |
|||
SIZE IS 25 |
|||
SIZE IS 26 |
|||
1: WE |
|||
2: HAVE |
|||
3: SEEN |
|||
4: THAT |
|||
5: ARRAYS |
|||
6: ARE |
|||
7: A |
|||
8: VERY |
|||
9: CONVENIENT |
|||
10: WAY |
|||
11: OF |
|||
12: STORING |
|||
13: SIMPLE |
|||
14: VALUES |
|||
15: AND |
|||
16: REFERENCES |
|||
17: TO |
|||
18: MORE |
|||
19: COMPLEX |
|||
20: CLASS |
|||
21: OBJECTS |
|||
22: IN |
|||
23: AN |
|||
24: ORDERED |
|||
25: LIST |
|||
26: . |
|||
EXPAND TO CAPACITY 20 |
|||
NEW ITEMARRAY WITH 20 ELEMENTS |
|||
SIZE IS 1 |
|||
SIZE IS 2 |
|||
SIZE IS 3 |
|||
SIZE IS 4 |
|||
SIZE IS 5 |
|||
SIZE IS 6 |
|||
SIZE IS 7 |
|||
SIZE IS 8 |
|||
SIZE IS 9 |
|||
SIZE IS 10 |
|||
1: 1.00 |
|||
2: 4.00 |
|||
3: 9.00 |
|||
4: 16.00 |
|||
5: 25.00 |
|||
6: 36.00 |
|||
7: 49.00 |
|||
8: 64.00 |
|||
9: 81.00 |
|||
10: 100.00 |
|||
1: 1.00 |
|||
2: 9.00 |
|||
3: 25.00 |
|||
4: 49.00 |
|||
5: 81.00 |
|||
</pre> |
</pre> |
||