Seven errors game
Pascal Cuoq - 11th Jan 2011If you have seen the basic presentation of the value analysis, you may remember the following function.
void abs(int y)
{
if (y >= 0)
{
r = y;
return;
}
else
{
r = -y;
return;
}
}
\Why the two ugly return; statements in a function that needs none?" I almost hear you ask. Here is why: without these spurious return; statements you may need to explain where the {2; 3; } set comes from in the screenshot below.

In the screenshot the user has clicked on variable r in the then branch of the if. The bottom panel displays information about the value of r before the assignment and also the possible values of r at the beginning of the successor of the assignment. The intention is to let the user see the effect the statement has on x but in this case this only produces confusion.
Behold the new graphical user interface that Boris and I have spent the afternoon on (pay attention: the difference is subtle):

