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

Barrinha de cereal: saiba como comprar a mais saudável para sua dieta

iStock/VivaBem
Imagem: iStock/VivaBem

Cintia Baio

Colaboração para o UOL

27/10/2017 17h11

As barras de cereais figuram entre as primeiras posições na lista dos alimentos rotulados de práticos e saudáveis. Quem nunca recorreu a elas na correria do trabalho, entre um compromisso e outro ou até mesmo já transformou a tal barrinha no lanche oficial de toda as tardes? A questão é que nem sempre são tão cheias de qualidades quanto se pensa. Aliás, jamais podem servir como substitutas de uma das refeições principais. Muitas delas são carregadas de carboidratos simples, como o açúcar. E gorduras nem tão boas também.

Para saber se uma barrinha oferece nutrientes em equilíbrio, vá direto às informações nutricionais na embalagem. O ingrediente que aparece em primeiro lugar  é justamente  aquele em maior quantidade no alimento. Portanto, se de cara você lê açúcar ou xarope de glucose, o que dá na mesma, pode desconfiar. Outra coisa: os cereais presentes na formulação devem ser integrais. Se não forem, você estará consumindo mais carboidrato simples e só. Se a ideia é levar para casa uma barrinha mais saudável, lembre-se que, mesmo que não seja orgânica, ela só deveria conter conservantes naturais e nenhum outro aditivo.

Muitas barrinhas têm açúcar adicionado na composição, o que aumenta a quantidade de calorias. Se trazem chocolate, o valor calórico aumenta ainda mais e talvez seja o caso de abrir mão desse ingrediente, preferindo aquelas feitas com frutas secas ou oleaginosas, como nozes e castanhas. Elas também são calóricas, mas no caso a energia vem de gorduras bem-vindas à saúde.

Lembre-se: uma boa barrinha de cereal nunca oferece menos do que 3 gramas de fibras por unidade. Elas deveriam ser destaque em qualquer composição desse tipo de alimento. Que, aliás, faz da presença de fibras para garantir saciedade uma espécie de apelo. Mas, nesse quesito, nem sempre uma barrinha cumpre o que promete.

Especialistas consultados: Letícia Fontes, nutróloga da Clínica MEI - Medicina Integrativa; Marcela Rossini Montenegro, nutricionista da Estima Nutrição.