{ > Src.Sierpin }program sierpin;const order=5;      size=130; { size:=(2^order-1)*4+2 }      h=7;      {  h:=INT(1000/size)    }      h2=14;    {  h2:=h*2              }   procedure sierpinski(n,x,y:integer);var i,k : integer;begin  if n=0 then     begin plot(4,x-h,y);plot(5,x,y+h);plot(5,x+h,y);           plot(5,x,y-h);plot(5,x-h,y)     end  else     begin         k:=1;         for i:=1 to n do k:=k*2; { k:=2^n*h  }         k:=k*h;         sierpinski(n-1,x-k,y-k);         sierpinski(n-1,x-k,y+k);         sierpinski(n-1,x+k,y+k);         sierpinski(n-1,x+k,y-k);         plot(4,x-h2,y-h);         vdu(18,0,1); plot(0,0,4); plot(1,0,h2-4);         vdu(18,0,0); plot(0,4,4); plot(1,h-4,h-4);         vdu(18,0,1); plot(1,h2,0);         vdu(18,0,0); plot(0,4,-4); plot(1,h-4,4-h);         vdu(18,0,1); plot(1,0,-h2);         vdu(18,0,0); plot(0,-4,-4); plot(1,4-h,4-h);         vdu(18,0,1); plot(1,-h2,0);         vdu(18,0,0); plot(0,-4,4); plot(1,8-h,h-8);         vdu(18,0,1); plot(0,4,4)      endend;begin  mode(1);  vdu(23,1,0,0,0,0,0,0,0,0);  vdu(18,0,1);  sierpinski(order,640,512)end.