;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

Notação posicional - Valor do dígito depende da posição

Roberto Perides Moisés e Luciano Castro Lima, Especial para a Página 3 Pedagogia & Comunicação

O homem começou a trabalhar com as quantidades registrando-as com objetos, pedras e pedaços de galhos, no chão. O nosso primeiro caderno foi a areia, ábaco, em árabe, e os nossos primeiros numerais eram objetos.

Na folha deste caderno o homem que calculava riscava as colunas e nelas manipulava as pedrinhas operando na base escolhida.

No sistema decimal, cada coluna do ábaco a até nove pedrinhas. Uma coluna, nove pedras.

 

 

 

Trata-se de uma correspondência complexa, que dificulta o trabalho mental com as quantidades. Para conceber os movimentos quantitativos, a mente precisa das mãos, do cálculo manipulatório.

Da areia para a mesa

O caderno do chão permanece onde foi escrito. Não dá para levá-lo na canga do camelo. Para superar essa dificuldade os povos apelaram para as folhas das árvores. Os antigos egípcios lançaram mão do papiro.

Esses primeiros algarismos criados pelos povos antigos eram repetitivos: tais como as pedrinhas na coluna do ábaco, poderiam repetir-se até nove. A correspondência - uma coluna, nove algarismos - continuava complicando o cálculo que, assim, não conseguiu subir para a folha, continuando no ábaco. O cálculo mental continuou dependente da manipulação.

 

 

 

Os antigos gregos entendiam que trabalhar no chão era coisa de escravo e trataram de levar o ábaco para a mesa. Aliás a palavra abakos significa, em grego, mesa de madeira (a sua superfície). Como pedras também eram coisas de escravos, foram substituídas por fichas de madeiras que continuaram sendo chamadas de pedras (pséphoi em grego ou calculus em latim). Apesar de se livrarem do chão e das pedras, os nobres e filósofos gregos não superaram a correspondência uma coluna, nove algarismos.

Os romanos criaram uma escrita numérica que, com os seus algarismos semi-repetitivos

IVXLCDM
1510501005001000

diminuía a repetição de nove para três. Os algarismos I, X, C e M poderiam repetir até três vezes: II é dois e IV é quatro; XXX é trinta e XL é quarenta; CCC é trezentos e CM é novecentos.

Com essa escrita o cálculo subiu à mesa, a repetição por coluna diminuiu, mas a correspondência continuou complicada:

 

 

 

 

E o cálculo continuou no ábaco, permaneceu manipulatório.