;(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
Logo Pagbenk Seu dinheiro rende mais
Topo

Brasil entrou em recessão a partir do 1º trimestre de 2020, diz comitê da FGV

Getty Images/iStockphoto/Anastasiia Yanishevska
Imagem: Getty Images/iStockphoto/Anastasiia Yanishevska

Vinicius Neder

Rio

29/06/2020 11h36Atualizada em 29/06/2020 14h16

O Brasil entrou em recessão a partir do primeiro trimestre deste ano, informou hoje o Comitê de Datação de Ciclos Econômicos (Codace) da Fundação Getulio Vargas (FGV), em comunicado. Já sob efeitos da pandemia do novo coronavírus, o Produto Interno Bruto (PIB) brasileiro do primeiro trimestre registrou baixa de 1,5% ante os quatro últimos meses de 2019, conforme os dados das Contas Nacionais Trimestrais, divulgados pelo Instituto Brasileiro de Geografia e Estatística (IBGE) há um mês.

Os economistas que formam o comitê se reuniram na última sexta-feira (26) e concluíram que o ciclo de negócios brasileiro atingiu um pico de expansão no quarto trimestre de 2019, o que "sinaliza a entrada do país em uma recessão a partir do primeiro trimestre de 2020". Com isso, o ciclo de expansão anterior à atual recessão durou 12 trimestres, do primeiro trimestre de 2017 ao quarto trimestre de 2019, ressalta o comunicado do Codace.

O ciclo de expansão encerrado no quarto trimestre de 2019 deu fim à recessão de 2014 a 2016, a mais prolongada da história econômica nacional. Inicialmente, o Codace havia datado esse ciclo de retração entre o segundo trimestre de 2014 e o quarto trimestre de 2016.

Na reunião da última sexta-feira, o comitê também fixou os meses específicos de pico e vale de todos os ciclos analisados pelos economistas, desde o início da década de 1980. Dessa forma, a recessão de 2014 a 2016 durou 33 meses, de abril de 2014 a dezembro de 2016, conforme a datação atualizada pelo Codace.

A datação dos ciclos conforme os meses revela que, na média desde janeiro de 1981, os ciclos de expansão tiveram duração de 32,9 meses. Já os ciclos recessivos tiveram duração média de 17,7 meses.

O Codace foi criado em 2004 com "a finalidade de determinar uma cronologia de referência para os ciclos econômicos brasileiros" - embora tenha sido criado pela FGV e receba apoio operacional do Instituto Brasileiro de Economia (Ibre/FGV), suas decisões são independentes.

Conforme o comunicado, a cronologia dos ciclos econômicos é "estabelecida pela alternância entre datas de picos e vales no nível da atividade econômica". "A fase cíclica marcada pelo declínio na atividade econômica de forma disseminada entre diferentes setores econômicos é denominada recessão. A fase entre um vale e um pico do ciclo é chamada expansão", diz o comunicado do Codace.

Atualmente, o Codace é formado por "oito membros com notório conhecimento em ciclos econômicos". A reunião da última sexta-feira formalizou a entrada de dois novos membros: o professor Fernando Veloso, da FGV, em substituição ao professor Regis Bonelli, falecido em 2017, e o professor Vagner Ardeo, vice-presidente do Ibre/FGV, na condição de membro secretário, sem direito a voto.

Com isso, compõem o Codace Affonso Celso Pastore, coordenador do comitê, diretor da AC Pastore & Associados e ex-presidente do Banco Central (BC); Edmar Bacha, diretor da Casa das Garças e um dos integrantes da equipe que criou o Plano Real; João Victor Issler, professor da FGV; Marcelle Chauvet, professora da Universidade da Califórnia; Marco Bonomo, professor do Insper; e Paulo Picchetti, professor da FGV; além de Veloso e Ardeo.