types public PointAvalibility = <Free> | <Occupied> | <Unknown>; public Point ::
X: int
Y: int
instancevariables public points: map Point to PointAvalibility := {|->};
private maxPoint: Point := mk_Point(10E6,10E6);
invforall p insetdom points & IsValidGridPoint(p) --& exists pa in set rng points & points(p)=pa;
operations
public Grid : Point * Point ==> Grid
Grid(startPoint,p) ==
(
points := { startPoint |-> <Free>};
maxPoint := p;
) pre IsValidGridPoint(startPoint) and IsValidGridPoint(p);
public GetPointAvalibility : int * int ==> PointAvalibility
GetPointAvalibility(x, y) == if mk_Point(x,y) insetdom points then return(points(mk_Point(x,y))) else return <Unknown>
pre IsValidGridPoint(mk_Point(x,y));
public SetPointMP : map Point to PointAvalibility ==> ()
SetPointMP(mapping) ==
points := points ++ mapping preforall p insetdom mapping & IsValidGridPoint(p);
pure public IsValidGridPoint : Point ==> bool
IsValidGridPoint(p)== return maxPoint.X >= p.X and p.X >= 0 and maxPoint.Y >= p.Y and p.Y >=0
end Grid
class GridTest issubclassof TestCase values
sta : Grid`Point = mk_Grid`Point(0,0);
max : Grid`Point = mk_Grid`Point(100,100);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.