Buscar

Semana 8 - Revisão e Síntese - Pensamento Computacional - COM100_OK_rev

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

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

Outros materiais