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

Alunos iniciam período de recuperação escolar na Rede Estadual de São Paulo

Estudantes precisaram fazer aulas de casa durante a pandemia da covid-19 ao longo do ano de 2020 - Glória Maria/UOL
Estudantes precisaram fazer aulas de casa durante a pandemia da covid-19 ao longo do ano de 2020 Imagem: Glória Maria/UOL

Do UOL, em São Paulo

04/01/2021 11h23Atualizada em 04/01/2021 11h27

Após o ano letivo remoto devido à pandemia da covid-19, os estudantes da Rede Estadual de São Paulo que não conseguiram atingir o rendimento mínimo esperado em 2020 terão a chance de avançar de série a partir de hoje. O projeto Recuperação Intensiva vai dar prioridade aos estudantes com menor frequência dos 5º e 9º anos do ensino fundamental e da 3ª série do ensino médio para o atendimento presencial. Alunos que se enquadrarem no grupo de risco poderão ter aulas on-line.

Todos os inscritos devem comparecer a, no mínimo, 75% das aulas do Recuperação Intensiva para conseguir mudar de série. Ao todo, os estudantes terão 25 aulas semanais, distribuídas em cinco por dia, que poderão ser acompanhadas no turno da manhã, da tarde ou da noite.

Para os anos iniciais do ensino fundamental, as aulas terão duração de 50 minutos, enquanto as aulas do ensino médio e dos anos finais do ensino fundamental terão 45 minutos cada.

Os estudantes que desejarem ingressar no programa de recuperação devem entregar atividades para serem aprovados. Os anos de 2020 e 2021 serão considerados como um ciclo contínuo. Por isso, os alunos que entrarem no programa de progressão terão o aprendizado completo avaliado no final deste ano letivo.

Calendário letivo em São Paulo

Com a pandemia, o calendário escolar de São Paulo sofreu alterações. O ano letivo da Rede Estadual começa no dia 1º de fevereiro, após o recesso escolar de 2020, previsto para os dias 18 a 25 de janeiro.

O primeiro bimestre será entre 1º de fevereiro e 16 de abril, com recesso agendado para ter início em 19 de abril. A volta para o 2º bimestre será no dia 26 de abril e se estenderá até o dia 5 de julho.

As férias docentes ficaram agendas entre 6 a 20 de julho, enquanto a retomada para o 3º bimestre de 2021 será entre 21 de julho e 8 de outubro. Um outro recesso está previsto entre 11 a 15 de outubro e o último bimestre escolar do ano será entre 18 de outubro e 21 de dezembro.