Baixe o app para aproveitar ainda mais
Prévia do material em texto
Pensamento Computacional 2022: Revisão & Síntese Maria da Graça Campos Pimentel Este texto apresenta uma síntese dos principais conceitos tratados no curso: pilares do pensamento computacional, navegação e colaboração, aspectos de dispositivos computacionais, estratégias de busca e de ordenação, algoritmos relacionados a tarefas, rotas e busca, e encerramos com construção de narrativas com programação em blocos. SEMANA 1: PILARES E ALGORITMOS DO DIA A DIA Observamos um aspirador de pó robô em ação, identificamos as ações que ele realiza para resolver o problema de aspirar a sala, e fizemos vários detalhamentos dessas ações, como ilustrado a seguir: O tempo todo: varre e aspira Às vezes: desvia de obstáculos O tempo todo: varre, aspira às vezes, desvia de obstáculos O tempo todo: varre aspira em caso de batida ou abismo: dá marcha à ré vira para a direita A área da Computação desenvolveu fundamentos teóricos e técnicas sólidos para oferecer respostas com precisão, “Dado um problema, o difícil é resolvê-lo e a melhor forma de resolvê-lo?”, conhecer alguns desses conceitos permite reformular um problema aparentemente difícil em um problema que se sabe resolver. Para isso, estudamos Pensamento Computacional. Adaptando a definição de Wing (2014), definimos Pensamento Computacional como o processo de pensamento envolvido na formulação de um problema e na expressão de sua solução de tal forma que um agente, humano ou computacional, possa efetivamente resolvê-lo. O processo de pensamento computacional nos orienta a resolver problemas utilizando as quatro estratégias que utilizamos para entender e detalhar o que o robô aspirador faz. Essas estratégias são conhecidas como os pilares do pensamento computacional. 1. Decompor o problema: dividir o problema em problemas menores, obtendo a solução do problema combinando as soluções dos problemas menores. 2. Reconhecer padrões recorrentes: identificar padrões encontrados em mais de uma parte do problema, ou padrões encontrados em outros problemas que se sabe resolver. 3. Abstrair tarefas e seus dados de entrada e saída: listar as tarefas necessárias para resolver o problema, os dados de entrada necessários para cada tarefa, e os resultados produzidos por cada tarefa. 4. Explicitar algoritmo que resolve o problema: construir uma sequência de instruções não ambíguas para resolver um problema de forma a produzir, em um período finito, a saída correspondente para qualquer entrada legítima (LEVITIN, 2003). Interagimos com um conjunto de animações: Joaninha Robô Aspirador Desenhar Casa Montar Pizza e Redigir e-mail. Observamos que seus são compostos por três tipos de construções: sequência de comandos, repetição de comandos, e execução condicional de comandos. Discutimos que, por mais complexo que seja um programa, ele pode ser decomposto e detalhado até chegar em conjunto de instruções que são de um desses tipos. SEMANA 2: NAVEGAÇÃO, COLABORAÇÃO & CIA WEB E INTERNET Em 1945, Vannevar Bush concebeu o sistema Memex para armazenar documentos e as relações entre eles, e inventou o conceito de hipertexto. Em 1989, Tim Berners-Lee inventou a Web. Uma página Web está relacionada a outras páginas por meio de ligações (“links”). A Web utiliza a infraestrutura de comunicação da Internet. Criada em 1969, a Internet é um conglomerado mundial de redes computadores, ou seja, computadores que se encontram em redes diferentes podem se conectar por meio de protocolos pré-definidos. Os protocolos utilizados na Internet são criados pela Internet Engineering Task Force, uma organização internacional sem fins lucrativos responsável pelos protocolos técnicos que compõem o conjunto de protocolos da Internet. Quando computadores podem se conectar, aplicações executadas nesses computadores também podem se comunicar. Com isso, a Internet permite que aplicações sejam implementadas seguindo um modelo cliente-servidor. Exemplos de aplicações são um navegador Web, um servidor Web, uma aplicação de correio eletrônico, e uma aplicação de comunicação instantânea. NAVEGAÇÃO Navegadores Web são programas que utilizam as regras definidas para documentos Web para apresentar o conteúdo preparado pelos autores (texto, tabelas, menus, imagens, vídeo, links etc.) e para interpretar as operações de navegação realizadas pelos usuários. No caso de link externos, quando o usuário seleciona o link ele é direcionado para uma nova página, como ilustrado na animação Abstração de Navegação. Navegadores apoiam a navegação de usuários de várias maneiras, por exemplo usando uma lista de favoritos: marcamos explicitamente sites que nos interessam, e o navegador cria atalhos para eles na barra de navegação. Outro exemplo é manter, automaticamente, uma lista com todos os links utilizados pelo usuário em sua navegação: isso permite que utilizemos a operação de voltar quantas vezes seja necessário. Para isso, os navegadores guardam os endereços utilizados na navegação em uma estrutura que tem o comportamento de uma pilha, como ilustrado na animação interativa Abstração de Navegação com Pilha: quando o usuário clica em um link para navegar para uma nova página, o navegador guarda o novo endereço como último elemento da pilha; quando o usuário executa uma operação de voltar, o navegador remove o último endereço da pilha e direciona o usuário para ele. SERVIÇOS DE BUSCA E ÍNDICES A Web tem mais de 3 bilhões de páginas e utilizamos serviços de busca. Um serviço de busca pode utilizar o padrão empregado pelo usuário e navegar em todas as páginas da Web. Para isso, o serviço de busca tem que: i) registrar todos os links disponíveis em cada página, e ii) controlar que todos os links sejam visitados na navegação. Como resultado da navegação, um serviço de busca constrói uma estrutura similar a um índice remissivo. Essa tarefa é sumarizada como segue: construir uma tabela com termos, inicialmente vazia repetir, para cada página da Web identificar os termos relevantes repetir para cada termo relevante se o termo não existir no índice, inserir o termo relevante no índice inserir no índice a informação de que o termo está contido na página COLABORAÇÃO VIA INTERNET Atividades colaborativas via Internet podem acontecer de modo síncrono (e.g. comunicador instantâneo), ou assíncrono (e.g. por correio eletrônico). Essas aplicações implementam o modelo cliente-servidor: parte da aplicação tem a função de cliente do serviço, e parte da aplicação tem função de servidora do serviço. Uma abstração das conjunto de operações é: Interagir(clienteA, clienteB): (1) mensagem(clienteA, servidor, conteudoA) (2) mensagem(servidor, clienteB, conteudoA) (3) mensagem(clienteB, servidor, conteudoB) (4) mensagem(servidor, clienteA, conteudoB) SEMANA 3: DISPOSITIVOS COMPUTACIONAIS & CIA Um computador pode reconhecer a ausência ou a presença de energia em um determinado circuito. A presença é indicada por 1 e a ausência por 0. Todas as informações necessárias a um programa, sejam instruções ou dados, são representadas utilizando 0 e 1. Chamamos uma unidade de representação 0 ou 1 de bit, ou dígito binário (binary digit, em inglês). Dado que com um bit podemos representar apenas dois valores diferentes (0 e 1), um computador utiliza um conjunto de bits para representar um conjunto maior de valores. Assim, com dois bits podemos representar 4 valores (00, 01, 10, 11) e com três bits 8 valores (000, 001, 010, 011, 100, 101, 110, 111). Com 4, 5, 6, 7 e 8 podemos representar, respectivamente, 16, 32, 128 e 246 valores, e assim por diante. Portanto, a cada bit acrescentado, multiplicamos por 2 o número de representações possíveis: em outras palavras, o número de representações possíveis com n bits é 2n. Informações que empregam dois símbolos, como 0 e 1, estão representadas na base binária, do mesmo modoque representações que empregam dez símbolos (0 a 9) utilizam a base decimal. Representações nessas bases são posicionais: o valor representado por cada símbolo depende da posição do símbolo, calculado como nos exemplos: ● base 10: 12345 é calculado como 1 x 104 + 2 x 103 + 3 x 102 + 4 x 101 + 5 x 100 ● base 2: 10101 é calculado como 1 x 24 + 0 x 23 + 1 x 22 + 0 x 21 + 1 x 20 O processo para somar dois valores na base 2 também é similar ao que utilizamos na base 10: alinhamos os valores de acordo com a notação posicional e os somamos os um a um: se o valor da soma não exceder o valor da base, fazemos “vai-um” ser zero, caso contrário, um. ● base 10: 5 + 4 resulta em 9 e o vai-um é zero, e 5 + 7 resulta em 2 e o vai-um é um ● base 2: 0 + 1 resulta em 1 e o vai-um é zero, e 2: 1 + 1 resulta em 0 e o vai-um é um George Boole observou que fatos que podem ser representados como verdadeiro ou falso, ou 0 e 1, podem ser manipulados por meio de operações algébricas. As operações lógicas baseadas na álgebra de Boole são essenciais para a construção de soluções executadas em dispositivos computacionais: nas operações condicionais dos algoritmos. As três operações básicas são: A NÃO A B OU A B E 0 1 0 0 0 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 0 0 1 1 1 1 1 1 A Unidade Central de Processamento de um computador (UCP ou CPU) possui três componentes principais: uma Unidade de Controle, um Caminho de Dados e uma Unidade Lógica e Aritmética (ULA). Uma CPU está conectada à memória principal do computador, na qual são armazenados os programas e os dados por eles manipulados. Toda instrução de um programa é copiada da memória do computador para a CPU para ser interpretada pela Unidade de Controle. Quando a instrução faz uso de uma operação aritmética (e.g. soma), lógica (e.g. NÃO) ou de comparação (e.g. maior que) envolvendo operandos, os valores dos operandos são copiados da memória para a ULA. SEMANA 4: ESTRATÉGIAS DE BUSCA EM LISTA DIAGRAMA DE FLUXO Um diagrama de fluxo é uma notação gráfica que podemos utilizar para representar nossos algoritmos. Os símbolos mais comuns são: entrada de dados, de execução de um comando (processo), de um comando condicional (decisão), e de saída de dados, como ilustrado a seguir: PASSEIO POR UMA LISTA A memória de um computador é uma sequência de posições que armazenam valores binários, cada uma com seu endereço. Cada endereço pode armazenar valores que correspondem a instruções de um programa ou a dados manipulados por programas. A Unidade de Controle da CPU tem acesso a uma posição de cada vez. Para passear por uma lista de posições de memória, podemos utilizar: faça i apontar para o primeiro elemento da lista enquanto i não apontar o último elemento da lista faça i apontar para o próximo elemento BUSCA SEQUENCIAL Para procurar por valores em um conjunto de posições de memória, é necessário acessar o endereço de cada posição de memória, trazer para seu conteúdo para a CPU, e comparar com o valor desejado. Podemos utilizar: obtenha chave a ser buscada faça pont apontar para o primeiro elemento da lista repita até pont apontar para o último da lista se elemento apontado por pont é igual ao valor da chave: interrompa a repetição senão: faça pont apontar para o próximo elemento se elemento apontado por pont é igual ao valor da chave: “chave encontrada na posição i” senão: “chave não encontrada na lista” BUSCA PELO MAIOR/MENOR Para procurar pelo maior (ou pelo menor) valor de uma lista, temos que percorrer a lista toda. No início, consideramos o primeiro elemento como sendo o maior elemento, fazendo pmaior apontar para ele. A seguir, percorremos a lista toda e, quando encontramos um valor maior, atualizamos pmaior. Podemos utilizar: faça pont apontar para o primeiro elemento da lista faça pmaior apontar para o valor apontado por pont repita até pont apontar para o último da lista faça pont apontar para o próximo elemento se elemento apontado por pont é maior que o elemento apontado por pmaior: faça pmaior apontar o elemento apontado por pont BUSCA BINÁRIA Quando temos que buscar uma chave em uma lista e os valores armazenados na lista estão ordenados, podemos tirar vantagem dessa ordenação, como fazemos ao buscar uma palavra em um dicionário. Comparamos a chave buscada com o valor do meio da lista: ou a chave é igual a esse valor, ou é menor, ou é maior. Se for maior, podemos descartar a metade anterior; se for menor, podemos descartar a metade posterior. Repetindo esse processo, chegamos a uma decisão em poucos passos, em comparação com o tamanho da lista. Podemos utilizar: obtenha chave a ser buscada faça pesq apontar o primeiro elemento faça pdir apontar o último elemento enquanto pesq <= pdir faça pmeio receber o valor do meio entre pesq e pdir se valor apontado por pmeio é igual ao valor da chave: interrompa a repetição senão se valor apontado por pmeio é maior que chave então pdir = pmeio - 1 senão pesq = pmeio + 1 SEMANA 5: ESTRATÉGIAS DE ORDENAÇÃO EM LISTA ORDENAÇÃO POR SELEÇÃO Quando temos que ordenar os elementos de uma lista, podemos utilizar repetidamente o algoritmo de busca pelo menor. Na primeira vez, colocamos o menor na primeira posição da lista, e avançamos uma posição na lista. Na segunda vez, colocamos o segundo menor na segunda posição da lista, e assim sucessivamente. Podemos utilizar: faça pexterno apontar o primeiro elemento da lista repita até pexterno apontar o último elemento da lista faça pmenor apontar para onde pexterno aponta faça pinterno apontar para o elemento seguinte ao qual pexterno aponta repita até pinterno apontar para o último elemento da lista se elemento apontado por pinterno é menor que elemento apontado por pmenor faça pmenor apontar para elemento apontado por pinterno se elemento apontado por pexterno for diferente do elemento apontado por pmenor troque os elementos apontados por pexterno e pmenor ORDENAÇÃO POR INSERÇÃO Quando os elementos iniciais de uma lista formam uma sublista ordenada, precisamos colocar na posição correta o elemento seguinte à sublista ordenada. Para isso, comparamos o valor desse elemento com o valor do último elemento da sublista ordenada. Se o elemento for menor, continuamos a comparar, de marcha à ré, até encontrarmos na sublista um elemento cujo valor seja maior do que o valor do elemento que queremos posicionar, ou ultrapassemos o início da lista. Se acharmos um elemento de vamos maior na sublista, sabemos que é nessa posição que temos que inserir o elemento a posicionar. Para isso, precisamos deslocar para a direita, em uma posição, todos os elementos da sublista ordenada. Ao terminarmos, o último elemento da sublista ordenada ocupou a posição do elemento que estava fora do lugar, e o elemento que foi identificado como maior foi deslocado para uma posição à direita, abrindo uma vaga para colocarmos o elemento que queríamos posicionar. Ao colocarmos o elemento que precisávamos posicionar nessa vaga, ela passa a fazer parte da sublista ordenada, que agora aumentou de tamanho em uma unidade. Ao realizarmos esse processo para todos os elementos da lista, do primeiro ao último, ao final a lista está ordenada. Podemos utilizar: faça pinterno apontar para o primeiro da lista faça aux ser uma variável auxiliar repita até pinterno apontar o último da lista copie o valor apontado por pinterno para a posição apontar por aux faça pinterno apontar para a posição anterior à atual enquanto pinterno aponta para um elemento da lista e o elemento apontado por pinterno for maior que o apontado por aux copie o valor apontado por pinterno para a posição seguinte faça pinterno apontar para a posição anterior à atual avance pinterno uma posição copie o valor apontado por aux para a posição da lista apontada por pinterno ORDENAÇÃOPOR MESCLAGEM O algoritmo de ordenação por mesclagem utiliza uma estratégia recursiva que, a cada chamada, divide a lista em metades, até que cada lista tenha um elemento. A seguir, ele retorna das chamadas recursivas fazendo a mesclagem ordenada das sublistas, de modo que, a cada retorno da chamada recursiva, a sublista ordenada tenha o dobro do tamanho das duas metades anteriores. mergesort(lista): se lista tem um elemento, retorne para quem chamou divida a lista em duas metades listaesq e listadir, deixando uma com um elemento a mais em caso de tamanho ímpar execute o mergesort para a listaesq, deixando o resultado em listaesq execute o mergesort para a listadir, deixando o resultado em listadir retorne o resultado da mesclagem ordenada de listaesq e listadir mesclar(listaesq, listadir): se listaesq tem um elemento retorne listadir se listadir tem um elemento retorne listaesq faça a mesclagem ordenada dos elementos de listaesq com os elementos de listadir return a mesclagem ordenada SEMANA 6: TAREFAS, ROTAS E BUSCA NA WEB PLANEJAMENTO DE TAREFAS Quando duas máquinas processam o mesmo objeto, uma máquina depois da outra, o tempo em cada máquina depende do objeto: qual é a melhor ordem para alocar um conjunto de objetos? dadas máquinas M1 e M2 que operam em sequência M1 → M2 dada uma lista de objetos e o tempo que utiliza de cada máquina selecione o objeto que utiliza o menor tempo possível independentemente da máquina se o tempo for na M1: alocar esse objeto primeiro se o tempo for na M2: alocar esse objeto por último … e repetir o processo Quando uma pessoa tem um conjunto de tarefas para realizar, cada tarefa com seu tempo, a ordem não importa, pois o tempo total é o mesmo independentemente da ordem. Para minimizar o atraso máximo, podemos utilizar a estratégia Data Devida Mais Próxima. ordene a lista em ordem crescente de data devida realize as tarefas de acordo com a ordem definida No caso de algum item ter que ser descartado porque sabemos ser possível realizar todas as tarefas dentro do prazo máximo de cada uma, usamos a Estratégia de Moore. inicie com a Data Devida Mais Próxima ao identificar que não é possível cumprir todos os prazos: elimine da lista a tarefa que demora mais tempo Para minimizar o tempo de espera dos clientes, minimizamos a soma de seus tempos de conclusão. ordene a lista em ordem crescente do tempo que cada tarefa realize as tarefas de acordo com a ordem definida Para minimizar o tempo de espera dos clientes, minimizamos a soma de seus tempos de conclusão. ordene a lista em ordem crescente do tempo que cada tarefa realize as tarefas de acordo com a ordem definida Quando as tarefas têm peso e tempo, minimizamos a soma dos tempos ponderados. gere lista ponderada de tarefas: tempo x peso ordene a lista ponderada em ordem crescente do tempo ponderado das tarefas realize as tarefas de acordo com a ordem definida DESCOBERTA DE ROTAS Um grafo dirigido pode representar a dependência entre tarefas realizadas por um grupo de pessoas: os nós representam as pessoas e as arestas indicam que o resultado da tarefa realizada por uma pessoa é encaminhado para outra. Um algoritmo de ordenação topológica identifica uma lista na qual os nós que são dependentes de outros são alocados depois deles na lista. Em um grafo, realizamos uma busca em profundidade a partir de um nó avançando o tanto quanto possível cada em um dos seus ramos, antes de dar marcha à ré pelo mesmo caminho. Podemos utilizar o algoritmo de busca em profundidade para identificar uma árvore geradora mínima em um grafo. Escolhemos um nó, e realizamos a busca em largura a partir dele. Em um grafo, realizamos uma busca em largura a partir de um nó explorando, a partir dele, todos os seus vértices vizinhos mais próximos. Repetimos: para cada um dos vértices mais próximos, exploramos os seus vértices vizinhos inexplorados, e assim por diante, até encontrarmos o nó-alvo. Podemos utilizar o algoritmo de busca em largura para identificar a menor distância entre dois nós em grafo não ponderado. A partir do nó inicial, realizamos a busca em largura até alcançar o nó destino: a distância equivale ao número de arestas percorridas. O algoritmo de Dijkstra é utilizado para encontrar o menor caminho entre dois nós em um grafo cujas arestas têm peso positivo. O algoritmo constrói um conjunto S de menores caminhos, iniciado com um vértice inicial I. A cada passo do algoritmo, identificamos nas adjacências dos vértices que pertencem a S qual é o vértice V que tem menor distância relativa a I, e adiciona-se V a S. Repetimos esses passos até que todos os vértices alcançáveis por I estejam em S. Desconsideramos arestas associadas a vértices que já pertencem a S. UM SERVIÇO DE BUSCA NA WEB O algoritmo PageRank deu origem ao serviço de busca Google. Esse algoritmo considera todos os nós do grafo, e as relações entre eles, para computar o valor de ranqueamento. O valor de ranqueamento é proporcional à probabilidade de uma página ser alcançada. Para uma página qualquer, essa probabilidade é a soma das probabilidades dos vértices que apontam para ela. Além disso, aplica-se um fator de amortecimento para todas as páginas, de modo que todas tenham uma probabilidade maior que zero de serem alcançadas mesmo que não haja nós que apontem para elas. O grafo da figura representa um conjunto de páginas Web cujo um valor de ranque, calculado pelo PageRank, é expresso em porcentagem. Ao analisarmos os pesos atribuídos a cada um dos nós, observamos que: ● todos os nós têm uma porcentagem proporcional ao número de nós que apontam para eles ● os nós x1 a x5 não têm arestas chegando até eles e têm a menor porcentagem entre todos ● os nós D e F têm uma porcentagem maior que os nós x1-x5 porque o nó E aponta para eles ● o nó A tem uma porcentagem maior que os nós x1-x5 porque o nó D aponta para ele ● o nó B tem a maior porcentagem porque tem o maior número de nós apontando para ele ● o nó C tem uma porcentagem alta mesmo tendo só um nó apontado para ele, porque o nó que aponta para ele tem uma porcentagem alta SEMANA 7: CONSTRUÇÃO DE NARRATIVAS VIA PROGRAMAÇÃO EM BLOCOS Focamos no ambiente Scratch de programação em blocos, que vimos ser um exemplo de programação visual. Scratch permite a construção de narrativas, animações e jogos interativos. Animações e narrativas Scratch fazem parte do material didático de todo o curso. Um programa Scratch é baseado na execução de códigos associados a atores e ao palco. O ambiente Scratch possui áreas para atores e palco, para comandos e para códigos que podemos associar a atores e palco, e uma área em que podemos ativar a execução do programa e visualizar sua execução. A área de comandos apresenta os blocos de comandos organizados por categorias (e.g. Aparência e Controle). Utilizamos blocos de comandos no código de atores e do palco, código esse que pode conter sequências de um mais bloco de comando. A categoria Controle oferece blocos de comandos condicionais e de repetição como os que utilizamos nos algoritmos estudados no curso. Blocos da categoria Eventos permitem que uma sequência de comandos seja executada a partir da ocorrência de eventos (e.g. “bandeira verde clicada” e “ator clicado”), e permite que atores e palco se comuniquem por meio da troca de mensagens: quando um deles manda uma mensagem (“transmita [mensagem]”), a mensagem é enviada para todos os demais; os que tiverem interesse naquela mensagem utilizam o bloco “quando eu receber [mensagem]” associado a uma sequência de comandos. A categoria Sensores oferece opções para um ator interagir com o usuário, com blocos para fazer perguntas na forma de texto, para perceber se o ator toca em algo (outro ator, cor ou borda), ou se alguma tecla foi pressionada, entre outros. A categoria Operadores agrega os operadores aritméticos, lógicos e de comparaçãoque utilizamos em nossos algoritmos, bem como operadores para tratamento de sequências de caracteres (e.g. concatenação), e funções matemáticas como exponencial, logaritmo, arredondamento e funções trigonométricas. A categoria Movimento inclui blocos que permitem a um ator se movimentar pelo palco. A categoria Aparência permite a troca de aparência por atores (fantasia) e palco (cenário), e que atores executem outras ações úteis para animações como aparecer, desaparecer, mudar de tamanho e, utilizando balões típicos de quadrinhos para “pensar” e “falar” com o usuário. A categoria Variáveis agrega os blocos para criar variáveis que podem assumir valores diferentes durante o programa. A categoria Meus Blocos oferece um bloco “Criar um bloco” e o associa a uma sequência de blocos comandos: para cada bloco criado pelo programador, um bloco de comando correspondente é disponibilizado para permitir que o novo bloco seja utilizado no código do ator. Além dos blocos que são oferecidos por padrão na plataforma Scratch, uma extensão útil é a categoria Caneta, que inclui comandos como “apagar tudo”, “usar” e “levantar” a caneta, e mudar os atributos de espessura e cor. Uma vez incluída uma extensão no ambiente do programa, seus blocos de comando estão disponíveis para todos os atores do programa. Na Videoaula 19 detalhamos o programa da animação Joaninha Robô Aspirador que emprega duas atrizes: a atriz “Caneta” desenha o ambiente e a atriz “Joaninha” avança pelo ambiente até sua bateria acabar, e o código das atrizes emprega comandos das categorias Variável, Controle, Eventos, Movimento e Caneta, entre outros. Na Videoaula 20, a animação Joaninha Verde e o uso de listas pela animação Abstração de Navegação com Pilha. Na Videoaula 21 tivemos um exemplo de busca por programas de outros autores, e o programa “Reflexão sobre opções” que ilustra alternativas para facilitar interações em nosso dia a dia. CONCLUSÃO Dado que raciocínio lógico utilizado na construção de algoritmos é útil em atividades do dia a dia, ao estudar conceitos do Pensamento Computacional conhecemos personalidades importantes, aprendemos conceitos importantes a web e dobre dispositivos computacionais, e estudamos algoritmos importantes para tarefas busca e ordenação, de planejamento de tarefas e de rotas, e sobre um serviço de busca na web. Fechamos o texto aspectos essenciais da construção de narrativas com programação em blocos. BIBLIOGRAFIA BROOKSHEAR, J. G. Ciência da Computação. Porto Alegre: Grupo A, 2013. Disponível em: Minha Biblioteca. CARVALHO, A. C.; LORENA, A. C. Introdução à Computação: hardware, software e dados. Barueri: Grupo GEN, 2016. Disponível em: Minha Biblioteca. DALE, N.; LEWIS, J. Ciência da Computação. 4. ed. Barueri: Grupo GEN, 2010. Disponível em: Minha Biblioteca. LAGE JUNIOR, M. L. Planejamento e Controle da Produção: teoria e prática. Barueri: Grupo GEN, 2019. ISBN 9788521636304. cap. 6. MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Estudo Dirigido de Algoritmos. São Paulo: Editora Saraiva, 1997. MUELLER, J.; MASSARON, L. Algoritmos para Leigos. Rio de Janeiro: Editora Alta Books, 2018. Disponível em: Minha Biblioteca. PIMENTEL, M. G. Pensamento Computacional: pilares e algoritmos do dia a dia. Univesp, [S. I.], [2022]. PIMENTEL, M. G. Navegação, pesquisa, filtragem, interação, colaboração e compartilhamento: canais digitais e abstrações. Univesp, [S. I.], [2022]. PIMENTEL, M. G. Animações Scratch. Schatch, 2021. Disponível em: https://scratch.mit.edu/users/mgpimentel/. Acesso em: 22 set. 2022. PIMENTEL, M. G. Programas Python. Replit, [2022]. Disponível em: https://replit.com/@mgpimentel?path=folder/COM100. Acesso em: 22 set. 2022. WAZLAWICK, R. História da Computação. Barueri: Grupo GEN, 2016. Disponível em: Minha Biblioteca. https://scratch.mit.edu/users/mgpimentel/ https://replit.com/@mgpimentel?path=folder/COM100 SEMANA 1: PILARES E ALGORITMOS DO DIA A DIA SEMANA 2: NAVEGAÇÃO, COLABORAÇÃO & CIA WEB E INTERNET NAVEGAÇÃO SERVIÇOS DE BUSCA E ÍNDICES COLABORAÇÃO VIA INTERNET SEMANA 3: DISPOSITIVOS COMPUTACIONAIS & CIA SEMANA 4: ESTRATÉGIAS DE BUSCA EM LISTA DIAGRAMA DE FLUXO PASSEIO POR UMA LISTA BUSCA SEQUENCIAL BUSCA PELO MAIOR/MENOR BUSCA BINÁRIA SEMANA 5: ESTRATÉGIAS DE ORDENAÇÃO EM LISTA ORDENAÇÃO POR SELEÇÃO ORDENAÇÃO POR INSERÇÃO ORDENAÇÃO POR MESCLAGEM SEMANA 6: TAREFAS, ROTAS E BUSCA NA WEB PLANEJAMENTO DE TAREFAS DESCOBERTA DE ROTAS UM SERVIÇO DE BUSCA NA WEB SEMANA 7: CONSTRUÇÃO DE NARRATIVAS VIA PROGRAMAÇÃO EM BLOCOS CONCLUSÃO BIBLIOGRAFIA
Compartilhar