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

65% dos alimentos industrializados brasileiros recebem adição de açúcar

iStock
Imagem: iStock

Da Agência Bori

27/03/2021 04h00

A adição de açúcar em alimentos industrializados no Brasil ainda não é informada nos rótulos destes produtos. Motivados por essa falta de informações, pesquisadores da UFSC (Universidade Federal de Santa Catarina), desenvolveram um método para estimar a quantidade de açúcar adicionado a alimentos industrializados no país e estimaram que 65% dos produtos analisados têm adição de açúcar.

A pesquisa foi realizada em parceria com pesquisadores do The George Institute for Global Health, na Austrália, e da Universidade de Hong Kong e divulgada em artigo publicado na revista Food Research International.

Para chegar a esse resultado, os pesquisadores do Núcleo de Pesquisas de Nutrição em Produção de Refeições (NUPPRE) analisaram os rótulos de quase 5.000 alimentos embalados, abrangendo todos os alimentos disponíveis para compra no momento da coleta de dados, como biscoitos, pães, sucos, produtos lácteos, entre outros.

"Encontramos uma frequência alta de uso de açúcar também em alimentos salgados, como hambúrgueres, salsichas e carnes processadas", analisa Tailane Scapin, doutoranda em nutrição da UFSC e principal autora do estudo.

O método proposto é organizado em uma sequência de oito etapas e envolve a análise da lista de ingredientes do produto e do teor de carboidratos dos alimentos. Quando os critérios da etapa anterior não são atendidos, parte-se para a etapa seguinte.

Se a embalagem de um produto indica a quantidade total de açúcares (informação ainda voluntária no Brasil), por exemplo, e não contém alimentos que naturalmente possuem açúcar, como frutas ou leite, atribui-se que 100% dos açúcares totais indicados na embalagem são açúcares adicionados.

No caso dos produtos sem indicação de açúcares totais, o cálculo pode ser feito baseado na comparação com variedades não adoçadas do mesmo produto.

Para validar a metodologia, os pesquisadores usaram rótulos de alimentos dos Estados Unidos, único país, até o momento, a declarar açúcares totais e adicionados. Eles compararam o valor de açúcar encontrado nos seus cálculos com o valor real indicado nestes rótulos.

"As taxas de acerto mostraram que o método é preciso e confiável para estimar os açúcares de adição quando esta informação não está notificada no rótulo do alimento", conta Tailane.

Saber quais são as categorias de alimentos industrializados que possuem açúcar de adição pode ajudar na elaboração de políticas públicas para que a indústria reformule seus produtos e para que as informações em a constar nos rótulos.

Hoje, no Brasil, apesar de se conhecer os efeitos negativos do consumo excessivo de açúcar para a saúde humana, as informações quanto ao total de açúcar adicionado em produtos industrializados ainda não são obrigatórias nos rótulos dos alimentos, não cumprindo com o dever de direito à informação ao consumidor.

A nova legislação de rotulagem nutricional de alimentos aprovada pela Anvisa em outubro de 2020 prevê esta informação nos rótulos de alimentos brasileiros a partir de outubro de 2022.