1. For Each and Iterate loops - Programming syntax
The For Each and Iterate loops look similar - this section shows which should be used when writing programs. The For Each loop is used
with functions that return lists or arrays. The next example uses For Each to loop through the elements of an array:
// TestForEach.cls
Ubercode 1 class TestForEach
type TNameArray[*:*] : array[*:*] of string[20]
function TNameArray(out aNames:TNameArray[*:*])
code
aNames <- {"North", "South", "East", "West"}
end function
public function main()
var
name : string[*]
code
for each name in TNameArray()
call Msgbox("Name", name)
end for
end function
end class
In the program above, the type TNameArray declares an array type for storing strings, and function TNameArray returns an array initialized
with some strings. The function is also known as a constructor function, since it constructs (and returns) a value of TNameArray type. Finally in
function main, the For Each loop reads through each element in the array and prints it out using a message box.
The Iterate loop is used with tables. The next example declares a table type and uses Iterate to loop through all the elements:
// TestIterate.cls
Ubercode 1 class TestIterate
type Tname : record
name : string[20]
address : string[100]
end record
type TNameTable[*] : table[*] of Tname
index 1 (name)
end table
public function main()
var
tabNames : TNameTable[*]
person : Tname
code
call Tabadd({"Mr Smith", "1 Smith St"}, tabNames)
call Tabadd({"Mr Jones", "1 Jones St"}, tabNames)
iterate person through tabNames
call Msgbox("Person", Str(person))
end iterate
end function
end class
In the program above, the type Tname is a record with two fields (name and address), and is used as the components of the table. The type
TNameTable is the actual table type. In function main, the table variable tabNames is declared, two records are added to the table, then
the Iterate loop reads through each element in the table and prints it out using a message box.
The Iterate loop is useful when working with large amounts of data. The records in a table are kept in sorted order as defined by the indexes, and
Iterate is allowed extra elements such as Where and Order By to control the iteration through a large table.
2. How often does Ubercode language syntax change?
Some languages change their syntax every year or two, whenever a new version is released. But it is bad when languages change with every release. It makes
software rapidly become obsolete, it stops code being reused, it makes it hard for developers to keep up to date, and it encourages a culture where software is
considered "bad" if it does not have the latest gizmo, and it puts appearance above reliability.
The only people benefitting from rapid updates are large companies that sell lots of software, and business that run training courses.
The Ubercode philosophy is that language syntax should be changed as infrequently as possible, consistent with keeping in step with mainstream technology.
Therefore most operating system improvements are represented by new functions added to the run time library, and the syntax does not change.
Whenever a new major version of Ubercode is released (v1 to v2 etc) it will include tools to update earlier versions of programs. This is the reason for the
version number at the top of Ubercode programs, to help automatic updates. In general Ubercode syntax will change as infrequently as possible, but no less
infrequently!
3. What is the difference between "its" and "it's"?
"It's" is short for "it is" as in "It's a groovy language". "Its" means "belonging to it" as in "the program read its input".
|