;(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

Dedução e indução - Noções elementares de lógica

Maria Ângela de Camargo, Especial para a Página 3 Pedagogia & Comunicação

O raciocínio chega de uma premissa a uma conclusão, ando por várias outras premissas intermediárias. Nesse sentido, podemos dizer que o raciocínio é um conhecimento mediato ou indireto, isto é, intermediado por vários outros. Assim, é o contrário da intuição, que é o conhecimento imediato.

Raciocinamos ou argumentamos, portanto, quando colocamos premissas que contenham evidências em uma ordem tal que, necessariamente, nos levam a uma conclusão. Essa sistemática se compõe de processos racionais que ligam o que se conhece ao que ainda é desconhecido, ou seja, são processos que permitem obter novos conhecimentos a partir de conhecimentos já adquiridos. Basicamente, há dois processos segundo os quais organizamos os nossos raciocínios: a dedução e a indução.

Deduzir

A dedução consiste em se chegar a uma verdade particular e/ou específica a partir de outra mais geral ou abrangente. Portanto, ao incluirmos um fato específico em outro mais geral, estamos raciocinando por dedução, como se vê no exemplo que segue:

1) A é sempre igual a B (fato geral, também chamada de premissa maior);
2) existe um X que é igual a A (caso particular ou premissa menor);
3) logo, este X é igual a B (conclusão).
Vejamos agora um exemplo aplicado a uma questão de caráter mais especificamente matemático:

1)Todo número ímpar pode ser escrito como 2n + 1, para qualquer n inteiro;
2) 325 é um número ímpar;
3) logo, 325 pode ser escrito como 2n + 1, se n for igual a 162.

Ou seja, 2 X 162 + 1 = 365.

Induzir

Na indução, percorremos o caminho contrário: observando casos particulares, isolados, procuramos neles um padrão, ou uma lei geral que os explica e se aplica a todos os casos isolados análogos aos observados.

1)Todos os As observados são iguais a B (observação de dados ou fatos isolados);
2)Logo, todo A é igual a B (indução).
Agora, um exemplo numérico:

1) Todo número que apresenta o algarismo das unidades igual a 4 é um número par;
2) Logo, 64 é um número par.

A indução na matemática
A indução é o processo natural de obtenção de respostas nas ciências experimentais, como a biologia e a química. Apesar de não ser o caso da matemática - que é uma ciência cujos fatos fundamentais não estão alicerçados na experiência -, alguns de seus ramos em desenvolvimento procuram respostas iniciais através de indução.

Resultados obtidos dessa maneira devem ser colocados à prova, posteriormente, por outros critérios independentes, pois o método indutivo pode nos levar a conclusões falsas: premissas verdadeiras não implicam necessariamente conclusões verdadeiras!

Vejamos dois exemplos:

1) O número 64 é par;
2) logo, todo número que tem dois algarismos é par.

Aqui, a generalização da premissa verdadeira resultou em uma conclusão falsa ou incorreta.

Vamos a um outro exemplo:

1) A expressão f(n) = n2 - n + 41 produz, para n = 1, um resultado primo (verdadeiro: f(1) = 41);
2) a expressão f(n) = n2 - n + 41 produz, para n = 2, um resultado primo (verdadeiro: f(2) = 43);
3) a expressão f(n) = n2 - n + 41 produz, para n = 3, um resultado primo (verdadeiro: f(2) = 47);
4) logo, a expressão f(n) = n2 - n + 41, n ?? N, produz números primos.

Nesse caso, poderíamos encontrar respostas verdadeiras para n 40; no entanto, f(41) = 412 - 41 + 41 = 412, que não é primo! Então, a generalização de 41 premissas verdadeiras resultou em uma conclusão falsa.

Garantia de validade

O exemplo abordado nos leva a outras questões muito importantes. Até onde devemos testar uma hipótese? E como garantir a validade das conclusões a que chegamos?

Existem duas abordagens para esses problemas. Na abordagem experimental, um cientista tentaria resolver o problema através da experimentação e, depois de testar algumas possibilidades, vai descobrir que a fórmula fracassa para n = 41. Mas poderia ser diferente: se a sua hipótese caísse apenas em um n muito grande, seria muito mais difícil descobrir. Poderia, inclusive, ocorrer de a fórmula ser verdadeira!

Depois de algumas centenas de testes, o cientista chegaria à conclusão de que existem evidências suficientes de que a expressão realmente gera todos os primos maiores que 40. Contudo, o cientista jamais teria certeza de que isto é verdade, porque pode existir algum n ainda não testado que derruba a sua tese. Existem infinitos n naturais e só é possível explorar uma pequena fração deles. Assim, o cientista teria que conviver com a hipótese de que sua teoria poderia ser derrubada algum dia.

Na abordagem matemática, o matemático tenta resolver o problema desenvolvendo um raciocínio lógico, o qual produziria uma conclusão que seria, ao mesmo tempo, indubitavelmente correta e permaneceria assim para sempre.

Raciocínio dedutivoRaciocínio indutivo
Na dedução, a conclusão apenas explicita ou ratifica o que já havia sido dado a conhecer pelas premissas.A conclusão enuncia uma verdade que ultraa o conhecimento dado pelas premissas.
Se todas as premissas são verdadeiras, então as conclusões são verdadeiras.Se todas as premissas são verdadeiras, então a conclusão é provavelmente (mas não necessariamente) verdadeira.