dh-Materialien
JavaScript Programme
 

Rechnen mit dem Abakus



0

// Abakus (c)2007 dh

// Initialisierung des Abakus
var pCol = 0;
var pPos = 0;
var number = 0;

var st = new Array(2);
st[0] = new Array(0,5,5,5,5,5,5,5);
st[1] = new Array(0,6,6,6,6,6,6,6);

function mouseUp(pID) {
// wird aufgerufen, wenn die gedrückte Maustaste
// über dem Abakus losgelassen wird
   var r = 0;
   var h = 0;

   pCol = Math.floor(pID/10);
   pPos = pID - 10*pCol;

   if (pPos < 6) {st[0][pCol] = (pPos <= st[0][pCol]) ? (pPos-1) : pPos}
   else {st[1][pCol] = (pPos <= st[1][pCol]) ? (pPos-1) : pPos}

   for (r=0; r<6; r++) {
      h = (st[0][pCol] == r) ? 25 : 1;
      document.getElementById("s"+pCol+r).setAttribute("height", ""+h);
   }
   for (r=6; r<9; r++) {
      h = (st[1][pCol] == r) ? 18 : 1;
      document.getElementById("s"+pCol+r).setAttribute("height", ""+h);
   }
   calculateNumber();
}

function calculateNumber() {
// wertet die Positionen der Abakusperlen aus
// und gibt die im Abakus gespeicherte Zahl aus
   var w = 0;
   number = 0;

   for (w=1; w<8; w++) {
      number = number + (5-st[0][w])*Math.pow(10,w-1);
   }
   for (w=1; w<8; w++) {
      number = number + (st[1][w]-6)*5*Math.pow(10,w-1);
   }

   ausgabe ("numAbak", ""+number);
}

var defaultNode = document.createTextNode("");
function ausgabe (ST, out) {
// gibt den Wert von out an einer bestimmten Stelle im Dokument aus

   with (document.getElementById (ST)) {
      outNode = document.createTextNode("");
      appendChild (defaultNode);
      replaceChild (outNode, document.getElementById(ST).firstChild);
      outNode = document.createTextNode(out);
      appendChild (defaultNode);
      replaceChild (outNode, document.getElementById(ST).firstChild);
   }
}

Rechnen mit dem Abakus