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

Esse conteúdo é antigo

Prefeitura de SP vai comprar 465 mil tablets para alunos da rede municipal

Alunos do ensino Médio, Fundamental e EJA vão receber os equipamentos - Rodolfo Santos/Getty Images/iStockphoto
Alunos do ensino Médio, Fundamental e EJA vão receber os equipamentos Imagem: Rodolfo Santos/Getty Images/iStockphoto

Emanuel Colombari, Felipe Pereira e Patrick Mesquita

Do UOL, em São Paulo

21/08/2020 13h56

O prefeito de São Paulo, Bruno Covas (PSDB), disse hoje que a prefeitura vai comprar 465 mil tablets com chip para alunos da rede municipal. O anúncio foi feito em entrevista coletiva concedida hoje no Palácio dos Bandeirantes.

"Além do caderno Trilhas da Aprendizagem, do Cartão Alimentação, também vamos investir em tablets com chips, que serão enviados a 465 mil alunos do ensino Médio, Fundamental e EJA [Educação de Jovens Adultos] do município", disse o prefeito.

De acordo com Bruno Covas, duas consultas devem ser publicadas amanhã para as compras separadas dos equipamentos e dos chips. O investimento será feito com recursos da Secretaria Municipal de Educação.

Apesar de anunciar a compra, Covas negou que a medida tenha sido tomada visando a um retorno às aulas presenciais apenas em 2021.

"São equipamentos que podem ser utilizados não apenas nesse momento de ensino a distância, mas depois dentro da sala de aula. Não é questão de não acreditar no retorno às aulas ainda este ano, é usar uma ferramenta tecnológica que pode ser utilizada tanto agora quanto no retorno às aulas", comentou.

Inquérito sorológico

O governo estadual havia anunciado a retomada de atividades escolares como aulas de reforço e o uso de bibliotecas e laboratórios a partir de setembro nas regiões que estejam na fase amarela do Plano São Paulo durante 28 dias. Mas, na terça-feira (19), o prefeito Bruno Covas disse que as atividades presenciais nas escolas municipais e particulares na capital não devem retornar no mês que vem.

A decisão foi tomada após análise do inquérito sorológico feito com 6.000 alunos da rede municipal, com idade entre 4 e 14 anos. De acordo com os dados, 16,1% dos alunos já contraíram a covid-19, doença causada pelo novo coronavírus. O índice é maior do que o encontrado na população geral de São Paulo, que foi de 10,9% de infectados.

A Prefeitura acredita que a volta das atividades presenciais nas escolas, neste momento, iria causar um aumento nos casos de covid.