Ensinando Ciência da Computação
    sem o uso do computador




               Criado por
 Tim Bell, Ian H. Witten e Mike Fellows




 Adaptado para uso em sala de aula por
    Robyn Adams e Jane McKenzie

        Ilustrado por Matt Powell


Tradução coordenada por Luciano Porto Barreto

                                        Fevereiro de 2011
2      Cópia autorizada somente para uso em sala de aula.
    © 2011 Computer Science Unplugged (csunplugged.org)
Prefácio à edição brasileira
       Em um mundo cercado por tecnologia, torna-se cada vez mais raro encontrar material
       educacional lúdico e de fácil aplicação em escolas. O livro “Computer Science
       Unplugged” consiste em uma coleção de atividades desenvolvidas com o objetivo de
       ensinar os fundamentos da Ciência da Computação sem a necessidade de computadores.
       Uma grande vantagem dessa abordagem reside na sua independência de recursos de
       hardware ou software. Assim, as “atividades desplugadas” são passíveis de aplicação em
       localidades remotas com acesso precário de infraestrutura (i.e., sem energia elétrica ou
       computadores disponíveis) e podem até ser ministradas por não especialistas em
       computação.

       Os conteúdos abordados nas atividades repousam sobre conceitos fundamentais da
       Ciência da Computação, o que torna seu uso abrangente e evita a defasagem do conteúdo
       no tempo. Tais atividades têm sido aplicadas e revisadas por diversos pesquisadores e
       professores ao redor do mundo dentro de salas de aulas e fora delas. O site do projeto do
       projeto Unplugged (www.csunplugged.org) disponibiliza o livro gratuitamente em
       diversos idiomas e provê atividades extras e vídeos demonstrativos.

       O livro está estruturado em três partes: “Representando as Informações”, “Algoritmos” e
       “Representando Procedimentos”. A primeira parte apresenta atividades que ilustram as
       formas utilizadas pelos computadores na representação dos dados tratando de temas como
       armazenamento e representação da informação (números binários, texto e imagens) e
       compressão de dados. A parte sobre “Algoritmos” aborda métodos computacionais de uso
       freqüente no cotidiano tais como os algoritmos de ordenação e de busca de informação. A
       última parte “Representação de Procedimentos” apresenta conceitos mais avançados, a
       exemplo dos autômatos de estados finitos, grafos e das linguagens de programação.

       O livro abarca um rol importante de conceitos e respectivas atividades lúdicas relativas à
       computação, a exemplo da representação da informação (números binários e alfabetos),
       ordenação e busca de dados, autômatos de estados finitos, grafos e ocorrência e situações
       de impasse (deadlocks). Tais atividades podem ser executadas sem o uso do computador;
       algumas delas podem ser realizadas ao ar livre, o que representa diferencial importante
       em relação aos processos de aprendizagem convencionais.

       Portanto, deixe seu computador um pouquinho de lado, junte sua turma e divirta-se !



       Luciano Porto Barreto

       Professor Adjunto - Universidade Federal da Bahia




       A 1ª versão deste livro contou com o apoio parcial da Fundação de Amparo à Pesquisa
       do Estado da Bahia (FAPESB).


Cópia autorizada somente para uso em sala de aula.                                              i
© 2011 Computer Science Unplugged (csunplugged.org)
Introdução
     Os computadores estão por toda parte. Todos nós precisamos aprender como usá-los e
     muitos de nós os utilizam todos os dias. Mas como eles funcionam ? Como eles pensam ?
     E como podem funcionar mais rápido e melhor ? A Ciência da Computação é uma área
     fascinante que explora tais perguntas. As atividades simples e divertidas deste livro,
     projetadas para crianças de várias idades, apresentarão como os computadores funcionam
     em alguns aspectos - sem que as crianças precisem usar um computador!

     Este livro pode ser efetivamente utilizado em programas de extensão e aprimoramento, ou
     mesmo em aulas regulares. Você não precisa ser um especialista em computação para
     aproveitar os conteúdos apresentados com seus filhos. O livro contém uma série de
     atividades que expõem as informações de maneira simples. Todos os problemas
     propostos possuem respostas e cada atividade termina com uma seção entitulada “De que
     se trata tudo isso ?”, que explica os elementos relevantes abordados nas atividades.

     Muitas das atividades são baseadas em conceitos matemáticos como, por exemplo, o
     entendimento dos números binários, uso de mapas e grafos, problemas envolvendo
     padrões e ordenamento, e criptografia. Outras atividades estão mais relacionadas aos
     currículos da área de tecnologia, bem como o conhecimento e a compreensão sobre como
     funcionam os computadores. As crianças desenvolvem ativamente habilidades de
     comunicação, resolução de problemas, criatividade, e cognição num contexto
     significativo.

     Este livro foi escrito por três professores de Ciência da Computação e dois professores de
     escolas, e está baseado em nossa experiência em sala de aula. Descobrimos que muitos
     conceitos importantes podem ser ensinados sem usar um computador. Na realidade, por
     vezes, o computador torna-se apenas uma distração no processo de aprendizagem.
     Portanto, desligue o computador e prepare-se para saber realmente o que é a Ciência da
     Computação !




     Este livro está disponível para download gratuito para uso pessoal e educativo,
     graças ao generoso patrocínio da Google, Inc. Este livro é distribuído sob a licença
     Creative Commons Attribution-NonCommercial-NoDerivs, o que significa que você
     é livre para copiar, distribuir e exibir este livro, desde que não faça alterações ao
     conteúdo (incluindo a atribuição aos autores e estes termos de licença). Você não
     pode usar este livro para fins comerciais e não pode alterar, transformar ou adaptar
     o seu conteúdo. Encorajamos o uso deste material em ambientes educativos, e você
     está convidado a imprimir o seu próprio exemplar do livro e distribui-lo aos alunos.
     Agradecemos o envio de perguntas e sugestões, as quais podem ser encaminhadas
     diretamente aos autores (ver csunplugged.org).

     Este livro está sendo traduzido para vários outros idiomas. Favor verificar o site
     para obter informações sobre as traduções disponíveis.



ii                                                 Cópia autorizada somente para uso em sala de aula.
                                                © 2011 Computer Science Unplugged (csunplugged.org)
Cópia autorizada somente para uso em sala de aula.    iii
© 2011 Computer Science Unplugged (csunplugged.org)
Agradecimentos
     Muitas crianças e professores têm ajudado a aperfeiçoar nossas idéias. As crianças e os
     professores da South Park School (Victoria, BC), Shirley Primary School, Ilam Primary
     School e Westburn Primary School (Christchurch, Nova Zelândia) serviram de cobaias
     para muitas atividades. Somos especialmente gratos a Linda Picciotto, Karen Capaz,
     Bryon Porteous, Paul Cathro, Tracy Harrold, Simone Tanoa, Lorena Woodfield, Lynn e
     Atkinson por nos acolher em suas salas de aula e dar sugestões importantes para melhoria
     das atividades. Gwenda Bensemann experimentou várias das atividades e sugeriu
     modificações. Richard Lynders e Sumant Murugesh ajudaram a testá-las em sala de aula.
     Parte das atividades de criptografia foram desenvolvidas por Ken Noblitz. Algumas das
     atividades foram executadas sob a égide do grupo “Mathmania” de Victoria, com a ajuda
     de Kathy Beveridge. Versões anteriores das ilustrações foram feitas por Malcolm
     Robinson e Gail Williams, e também fomos agraciados com os conselhos de Hans
     Knutson. Matt Powell também prestou valiosa assistência durante o desenvolvimento do
     projeto “Unplugged”. Somos gratos ao Brian Mason Scientific and Technical Trust pelo
     generoso patrocínio nas fases iniciais do desenvolvimento deste livro.

     Nossos agradecimentos especiais para Paul e Ellen Ruth Howard, que testaram muitas
     das atividades e ajudaram com uma série de sugestões úteis. Peter Henderson, Bruce
     McKenzie, Joan Mitchell, Nancy Walker-Mitchell, Gwen Stark, Tony Smith, Tim A. H.
     Bell1, Mike Hallett, e Harold Thimbleby forneceram igualmente inúmeros comentários
     proveitosos.

     Temos uma enorme dívida para com as nossas famílias: Bruce, Fran, Grant, Judith, e
     Pam, por seu apoio, e Andrew, Anna, Hannah, Max, Michael, e Nikki, que inspiraram
     grande parte deste trabalho2, e foram quase sempre as primeiras crianças a testar uma
     atividade.

     Estamos especialmente agradecidos a Google Inc. por patrocinar o projeto Unplugged e
     possibilitar que esta edição esteja disponível para download gratuito.

     Comentários e sugestões sobre as atividades são apreciados e podem ser encaminhados
     para o endereço eletrônico lportoba@ufba.br.




     1
         Nenhuma relação com o primeiro autor.
     2
         De fato, a atividade de compressão de texto foi inventada por Michael.


iv                                                       Cópia autorizada somente para uso em sala de aula.
                                                      © 2011 Computer Science Unplugged (csunplugged.org)
Sumário
       Prefácio à edição brasileira .................................................................................................. i

       Introdução ........................................................................................................................... ii

       Agradecimentos ................................................................................................................. iv

Dados: A Matéria-prima—Representando a informação......................................................... 1

       Contando os Pontos—Números Binários ........................................................................... 3

       Colorindo com Números—Representação de Imagens.................................................... 14

       Você pode repetir ?—Compressão de Texto..................................................................... 23

       A Mágica de virar as cartas—Detecção e Correção de Erros.......................................... 31

       Vinte Palpites—Teoria da Informação............................................................................. 37

Colocando os Computadores para Trabalhar—Algoritmos.................................................. 43

       Batalha Naval — Algoritmos de Busca............................................................................. 45

       O mais leve e o mais pesado—Algoritmos de Ordenação................................................ 64

       Seja o mais rápido !—Redes de Ordenação ..................................................................... 71

       A Cidade Enlameada—Árvores Geradoras Mínimas....................................................... 76

       O Jogo da Laranja— Roteamento e Bloqueios nas Redes ................................................ 81

Dizendo aos Computadores o que fazer — Representando Procedimentos .......................... 84

       Caça ao Tesouro—Autômatos de Estados Finitos ............................................................ 86

       Seguindo Instruções—Linguagens de Programação...................................................... 101




Cópia autorizada somente para uso em sala de aula.                                                                                           v
© 2011 Computer Science Unplugged (csunplugged.org)
vi      Cópia autorizada somente para uso em sala de aula.
     © 2011 Computer Science Unplugged (csunplugged.org)
Parte I
  Dados: A Matéria-prima—
Representando a informação
Dados: A Matéria-prima
    Como podemos armazenar informações nos computadores ?

    A palavra computador tem origem no latim computare, que significa calcular ou
    adicionar, mas os computadores são hoje mais do que apenas uma gigante calculadora.
    Eles podem ser uma biblioteca, ajudar-nos a escrever, encontrar informações, até mesmo
    reproduzir músicas e filmes. Então, como eles armazenam toda essa informação ?
    Acredite ou não, o computador usa apenas dois elementos: zeros e uns!

    Quais são as diferenças entre dados e informações ?

    Dados são a matéria-prima, os números com os quais os computadores trabalham. Um
    computador transforma seus dados em informações (palavras, números e fotos) que você
    e eu podemos compreender.

    Como números, letras, palavras e imagens podem ser convertidos em zeros
    e uns ?

    Nesta seção, aprenderemos sobre os números binários, como os computadores desenham
    imagens, como funcionam os aparelhos de fax, qual a forma mais eficaz de armazenar
    grandes quantidades de dados, como evitar erros e como mensurar o volume de
    informações que desejamos armazenar.




2                                               Cópia autorizada somente para uso em sala de aula.
                                             © 2011 Computer Science Unplugged (csunplugged.org)
Atividade 1
       Contando os Pontos—Números Binários
       Sumário
       Os dados são armazenados em computadores e transmitidos como uma série de zeros e
       uns. Como podemos representar palavras e números usando apenas estes dois símbolos ?

       Matérias correlacionadas
          Matemática: Representação de números em outras bases além da base decimal.
          Representação de números na base dois.
          Matemática: Sequências e padrões sequenciais; descrição de uma regra para um
          padrão. Padrões e relacionamentos com as potências na base dois.
       Habilidades
          Contar
          Correlacionar
          Ordenar
       Idade
          A partir de 7 anos
       Material
           Será necessário confeccionar um conjunto de cinco cartões com números binários
           (ver página 4) para a demonstração.
           Cartões A4 com caras sorridentes são igualmente adequados.
       Cada criança precisará de:
           Um conjunto de cinco cartões.
           Faça uma cópia da folha “Original para Fotocópia: Formar Números Binários”
           (página 6) em cartolina e recorte os cartões.
           Folha de Atividade: Números Binários (página 5)
       Existem atividades de extensão adicionais, para as quais cada criança precisará de:
           Folha de Atividade: Trabalhar com Números Binários (página 7)
           Folha de Atividade: Enviar Mensagens Secretas (página 8)
           Folha de Atividade: Correio Eletrônico e Modems (página 9)
           Folha de Atividade: Contar acima de 31 (página 10)
           Folha de Atividade: Mais sobre números binários (página 11)




Cópia autorizada somente para uso em sala de aula.                                           3
© 2011 Computer Science Unplugged (csunplugged.org)
Números Binários
    Introdução
    Antes de iniciar a atividade da página 5, pode ser útil demonstrar os fundamentos ao
    grupo.

    Para esta atividade, são necessários cinco cartões, conforme mostrado abaixo, com pontos
    marcados de um lado e nada sobre o verso. Escolha cinco crianças para segurar os cartões
    de demonstração na frente da turma. Os cartões devem estar na seguinte ordem:




    Discussão
    O que você percebeu sobre o número de pontos nos cartões ? (Cada cartão tem duas vezes
    mais pontos que o cartão à sua direita.)

    Quantos pontos teria o próximo cartão colocado à esquerda ? (32) E o próximo ...?

    Podemos usar estes cartões para representar números virando alguns deles para baixo e
    adicionando os pontos dos cartões com a face para cima. Peça às crianças para
    representarem os números 6 (cartões com 4 e 2 pontos), 15 (cartões com 8 , 4 , 2 e 1
    pontos e, em seguida, 21 (cartões com 16, 4 e 1 ponto) ...

    Agora tente contar de zero em diante.

    O resto da turma deve prestar atenção sobre como os cartões são virados para tentar
    reconhecer um padrão (cada cartão é virado metade das vezes do que as vezes do cartão a
    sua direita). Talvez você queira experimentar isso com mais de um grupo.

    Quando um cartão está com a face para baixo, sem mostrar os pontos, este cartão é
    representado por um zero. Quando os pontos são exibidos, o cartão é representado por
    um. Este é o sistema numérico binário.




    Peça às crianças para formarem o número 01001. Qual o seu número equivalente em
    decimal ? (9) Como seria o número 17 em binário ? (10001)

    Faça alguns exemplos até que as crianças compreendam o conceito. Há cinco opções de
    atividades de extensão que podem ser utilizadas como reforço. As crianças devem fazer o
    maior número de atividades possível.


4                                                 Cópia autorizada somente para uso em sala de aula.
                                               © 2011 Computer Science Unplugged (csunplugged.org)
Folha de Atividade: Números Binários

Aprendendo a Contar
    Então, você achava que sabia contar ? Bem, aqui está uma nova forma de fazer
    isso ! Sabia que os computadores utilizam apenas zeros e uns ? Tudo o que você
    vê ou ouve no computador - palavras, imagens, números, filmes e até mesmo o
    som - são armazenados usando apenas estes dois numerais ! Estas atividades
    ensinarão como enviar mensagens secretas aos seus amigos usando exatamente o
    mesmo método que um computador.


Instruções
       Recorte os cartões da sua folha de atividades e arrume-os com o cartão com 16
       pontos ao lado esquerdo dos demais, como mostrado aqui:




    Certifique-se de que os cartões são colocados exatamente na ordem acima.

    Agora, vire os cartões para mostrar exatamente cinco pontos. Mantenha as cartas
    sempre na mesma posição !




Em seguida, descubra como obter os números 3, 12 e 19. Há mais de uma maneira de
se obter determinado número? Qual é o maior número que você pode formar ? Qual é
o menor ? Existe algum número que não se pode formar entre o menor e o maior
número ?


Para os mais espertos: Tente formar os números 1, 2, 3, 4, nessa ordem. Depois
disso, você consegue descobrir um método de virar as cartas que permita formar
qualquer número ?


Cópia autorizada somente para uso em sala de aula.                                    5
© 2011 Computer Science Unplugged (csunplugged.org)
Original para fotocópia: Formar Números Binários




6                              Cópia autorizada somente para uso em sala de aula.
                            © 2011 Computer Science Unplugged (csunplugged.org)
Folha de Atividade: Trabalhar com Números
Binários
       O sistema binário utiliza o zero e o um para representar se um cartão está
       virado para cima ou não. O 0 indica que os pontos do cartão estão escondidos, e
       o 1 significa que os pontos do cartão são visíveis. Por exemplo:




       Vocês podem descobrir o número representado por 10101 ? E que tal 11111 ?


       Em qual dia do mês você nasceu ? Escreva-o em formato binário. Descubra os
       aniversários dos seus amigos em formato binário.


Tente decifrar os seguintes números codificados:




 Para os mais espertos: Usando um conjunto de varas de comprimento 1, 2, 4, 8 e
 16 centímetros, mostre como é possível medir qualquer objeto de até 31 centímetros.
  Ou então, surpreenda um adulto mostrando-lhe como você consegue pesar objetos
    pesados, tais como malas ou caixas, com apenas uma balança e alguns pesos.




Cópia autorizada somente para uso em sala de aula.                                  7
© 2011 Computer Science Unplugged (csunplugged.org)
Folha de Atividade: Enviar Mensagens Secretas
    Tom está preso no último andar de uma loja. É noite de Natal e ele quer ir para
    casa com seus presentes. O que ele pode fazer ? Ele tentou chamar alguém, até
    mesmo gritar, mas não há ninguém por perto. Do outro lado da rua ele pode ver
    uma pessoa ainda trabalhando em seu computador até tarde da noite. Como ele
    poderia atrair sua atenção ? Tom olha em volta para ver o que poderia usar.
    Então, ele tem uma brilhante idéia: utilizar as lâmpadas da árvore de Natal para
    enviar uma mensagem ! Ele coletou todas as lâmpadas disponíveis e as conectou
    aos bocais de forma que pudesse acendê-las ou apagá-las. Ele usou um código
    binário simples, que ele sabia ser de conhecimento da
    mulher do outro lado da rua. Você pode identificar a
    mensagem enviada por Tom ?




      1     2    3     4     5    6     7       8      9     10     11     12      13
      a     b    c     d    e     f     g      h       i      j      k       l     m
      14   15    16   17    18    19   20      21     22     23     24     25      26
      n     o    p     q     r    s     t       u      v     w       x      y      z



8                                              Cópia autorizada somente para uso em sala de aula.
                                            © 2011 Computer Science Unplugged (csunplugged.org)
Folha de Atividade: Correio Eletrônico e
Modems
       Os computadores conectados à Internet através de um equipamento conhecido
       por modem também utilizam o sistema binário para enviar mensagens. A única
       diferença é que eles usam um sinal sonoro ou bip. Um bip agudo é utilizado para
       o um e um bip grave é utilizado para o zero. Estes sinais são transmitidos
       rapidamente. Tão rápido, na verdade, que apenas ouvimos um horrível zumbido
       contínuo. Se você nunca o ouviu, ouça um modem conectar-se à Internet ou
       tente ligar para uma máquina de fax – as máquinas de fax também usam
       modems para enviar informação.




       Usando o mesmo código que Tom utilizou na loja, tente enviar uma mensagem
       de correio eletrônico ao seu amigo. Mas facilite as coisas para você e seu amigo,
       pois vocês não precisam ser tão rápidos quanto um modem de verdade !




Cópia autorizada somente para uso em sala de aula.                                     9
© 2011 Computer Science Unplugged (csunplugged.org)
Folha de Atividade: Contar acima de 31
     Veja os cartões binários novamente. Quantos pontos teria o próximo cartão na
     sequência ? E o cartão seguinte ? Qual regra você pode seguir para fazer seus
     novos cartões ? Como você pode perceber, são necessários somente alguns
     poucos cartões para contar até números muito grandes.

     Observando atenciosamente a sequência, notamos uma relação muito
     interessante:

          1, 2, 4, 8, 16…
     Calcule 1 + 2 + 4 = ? Qual é o resultado ?

     Agora, some 1 + 2 + 4 + 8 = ?

     O que acontece se você somar todos os números desde o início ?

     Você já colocou todos os seus dedos para trabalhar ? Pois agora seus dedos
     podem contar e ir muito além do número dez. Não, você não precisa ser de outro
     planeta ! Se utilizar o sistema binário e deixar que cada dedo de uma mão
     represente um dos cartões com pontos, então pode contar de zero a 31. Ao
     total, temos 32 números. (Não se esqueça de que o zero também é um número!)

     Tente contar sequencialmente utilizando seus dedos. Se o dedo estiver para
     cima, é um, e, se estiver para baixo, é zero. Você pode contar de 0 a 1023 se
     usar as duas mãos ! São 1024 números !

     Se os dedos dos seus pés forem realmente flexíveis (se você fosse de outro
     planeta), seria possível obter números ainda maiores. Se uma mão pode contar
     até 32 e duas mãos podem contar até 32 × 32 = 1024, qual o maior número que
     a senhorita “Flex” abaixo pode contar ?




10                                            Cópia autorizada somente para uso em sala de aula.
                                           © 2011 Computer Science Unplugged (csunplugged.org)
Folha de Atividade: Mais Sobre Números
Binários
  1. Outra situação interessante dos números binários acontece quando um zero é
     colocado ao lado direito de um número. Se estivermos trabalhando na base 10
     (decimal), ao colocarmos um zero ao lado direito de um número, este é
     multiplicado por 10. Por exemplo, 9 torna-se 90, 30 torna-se 300.

      Mas o que acontece quando você coloca um 0 à direita de um número binário ?
      Tente isto:


                     1001 → 10010
                                (9)              (?)

       Tente com outros números para testar sua hipótese. Qual é a regra ? Por que
       você acha que isso acontece ?

  2. Cada um dos cartões que utilizamos até agora representa um bit no computador
     (bit é a abreviação do termo inglês binary digit - dígito binário). Dessa forma, o
     código alfabético que utilizamos até então pode ser representando usando
     apenas cinco cartões, ou bits. Entretanto, um computador deve saber se as letras
     são maiúsculas ou não, e deve também reconhecer dígitos, sinais de pontuação e
     símbolos especiais como $ ou ~.

      Procure um teclado e veja quantos caracteres um computador tem que
      representar. Então, quantos bits são necessários para um computador armazenar
      todos os caracteres ?

       A maioria dos computadores atualmente utiliza uma representação chamada
       ASCII (American Standard Code for Information Interchange - Código Padrão
       Americano para Intercâmbio de Informação), que utiliza essa quantidade de bits
       para representar os caracteres, mas alguns países em que se falam outros
       idiomas precisam utilizar códigos maiores.




Cópia autorizada somente para uso em sala de aula.                                   11
© 2011 Computer Science Unplugged (csunplugged.org)
De que se trata tudo isso ?
     Os computadores atualmente utilizam o sistema binário para representar informações.
     Chama-se binário porque utiliza dois dígitos distintos. Também é conhecido como base
     dois (as pessoas utilizam no dia-a-dia a base 10). Cada zero ou um é chamado de bit
     (dígito binário). Um bit é normalmente representado na memória principal do computador
     por um transistor, que pode estar ligado ou desligado, ou um capacitor, que pode estar
     carregado ou descarregado.




     Quando os dados devem ser transmitidos por uma linha telefônica ou enlace de rádio,
     tons de alta e baixa freqüência são utilizados para os zeros e uns. Em discos magnéticos
     (disquetes e discos rígidos) e fitas, os bits são representados pela direção de um campo
     magnético sobre uma superfície revestida, podendo ser norte-sul ou sul-norte.




     CDs de áudio, CD-ROMs e DVDs armazenam bits de forma ótica — a parte da superfície
     correspondente a um bit reflete ou não a luz.




     Um único bit não consegue representar muito. Por isso, os bits são utilizados geralmente
     em grupos de oito, podendo representar números de 0 a 255. Um grupo de oito bits é
     chamado de byte. A velocidade de um computador depende do número de bits que este
     pode processar de uma só vez. Por exemplo, um computador de 32 bits pode processar
     números de 32 bits em uma única operação, ao passo que um computador de 16 bits
     divide os números de 32 bits em partes menores, o que o torna mais lento.

     Em suma, bits e bytes são tudo que um computador utiliza para armazenar e transmitir
     números, texto e todas as outras informações. Em algumas das atividades seguintes
     veremos como outros tipos de informações podem ser representados em um computador.




12                                                 Cópia autorizada somente para uso em sala de aula.
                                                © 2011 Computer Science Unplugged (csunplugged.org)
Soluções e dicas
       Números Binários             (página 5)

       3 requer os cartões 2 e 1
       12 requer os cartões 8 e 4
       19 requer os cartões 16, 2 e 1

       Existe somente uma maneira de formar um determinado número.

       O maior número que você pode representar é 31. O menor é 0. Você pode formar
       qualquer número dentro dessa faixa e cada um deles tem uma única representação.

       Para os mais espertos: Para incrementar qualquer número em uma unidade, vire os
       cartões indo da direita para a esquerda até que você deixe um cartão com a face para cima
       (número um).

       Trabalhando com binários (página 7)
       10101 = 21 ; 11111 = 31

       Números codificados (figuras da esquerda para direita): 01001 = 9; 1010 = 10; 101 = 5;
       1101 = 13; 00000 = 0; 10001 = 17; 10 = 2; 10100 = 20; 0 = 0; 11111 = 31.

       Enviando mensagens secretas (página 8)
       Mensagem codificada: AJUDE ESTOU PRESO

       Contando acima de 31 (página 10)
       Se você adicionar os números desde o início, o total será sempre o número seguinte da
       sequência subtraído de um.

       A senhorita Dedos Flexíveis pode contar até 1024 × 1024 = 1.048.576 — de 0 a
       1.048.575 !

       Mais sobre Números Binários (página 11)
       Quando você coloca um zero à direita de um número binário, esse número é dobrado.

       Todos os locais contendo um “1” valem agora duas vezes seu valor anterior, e assim o
       número total é duplicado. (Na base 10, acrescentando um zero à direita do número
       multiplica-o por 10.)

       Um computador precisa de 7 bits para armazenar todos os caracteres. Isto permite
       representar até 128 caracteres. Geralmente os 7 bits são armazenados em um byte (8 bits),
       com um bit não utilizado.




Cópia autorizada somente para uso em sala de aula.                                             13
© 2011 Computer Science Unplugged (csunplugged.org)
Atividade 2
     Colorindo com Números—Representação de
     Imagens
     Sumário
     Os computadores armazenam desenhos, fotografias e outras imagens usando apenas
     números. A atividade seguinte demonstra como eles podem fazer isso.

     Matérias correlacionadas
        Matemática: Exploração de Formas e Espaços.
     Habilidades
        Contagem
        Desenho
     Idades
        A partir de 7 anos
     Material
        Transparência feita a partir da folha “Transparência: Colorindo com números”
        (página 16)
     Cada criança precisará de:
        Folha de Atividade: Mini Fax (página 17)
        Folha de Atividade: Crie sua própria imagem (página 18)




14                                               Cópia autorizada somente para uso em sala de aula.
                                              © 2011 Computer Science Unplugged (csunplugged.org)
Colorindo com Números
       Introdução
      Questões para discussão
      1. O que as máquinas de fac-símile (fax) fazem ?

      2. Em quais situações os computadores precisam armazenar imagens ? (Um programa
         para desenhar, um jogo com gráficos ou um sistema multimídia.)

      3. Como os computadores armazenam fotos, se estes só podem utilizar números?

       (Você pode organizar as crianças para enviar e / ou receber um fax como preparação para
       esta atividade)

       Demonstração utilizando um projetor de transparências




       As telas dos computadores são divididas em uma grade de pequenos pontos chamados
       pixels (do inglês, picture elements - elementos de imagem). Em uma foto em preto e
       branco, cada pixel ou é preto ou é branco.

       Na imagem acima, a letra “a” foi ampliada para mostrar os pixels. Quando um
       computador armazena uma imagem, basta armazenar quais pontos são pretos e quais
       pontos são brancos.

                                                          1, 3, 1
                                                          4, 1
                                                          1, 4
                                                          0, 1, 3, 1
                                                          0, 1, 3, 1
                                                          1, 4

       A figura acima nos mostra como uma imagem pode ser representada por números. A
       primeira linha consiste de um pixel branco, seguido de três pixels pretos e, por fim, de um
       pixel branco. Assim, a primeira linha é representada por 1, 3, 1.

       O primeiro número sempre se refere ao número de pixels brancos. Se o primeiro pixel for
       preto, a linha começará com um zero.

       A folha de atividade na página 22 apresenta algumas imagens que as crianças podem
       decodificar utilizando este método.


Cópia autorizada somente para uso em sala de aula.                                             15
© 2011 Computer Science Unplugged (csunplugged.org)
Transparência: Colorindo com números




       A letra “a” a partir da tela de um computador e uma visão ampliada
                  mostrando os pixels que compõem a imagem


                                                 1, 3, 1
                                                 4, 1
                                                 1, 4
                                                 0, 1, 3, 1
                                                 0, 1, 3, 1
                                                 1, 4

                   A mesma imagem codificada com números




                     Grade em branco (para fins didáticos)




16                                      Cópia autorizada somente para uso em sala de aula.
                                     © 2011 Computer Science Unplugged (csunplugged.org)
Folha de Atividade: Mini Fax
       A primeira imagem é a mais fácil e a última é a mais complexa. É fácil cometer
       erros. Portanto, procure usar um lápis para colorir e uma borracha !

                                                            4, 11, 3
                                                            4, 9, 2, 1, 2
                                                            4, 9, 2, 1, 2
                                                            4, 11, 3
                                                            4, 9, 5
                                                            4, 9, 5
                                                            5, 7, 6
                                                            0, 17, 1
                                                            1, 15, 2



                                                            6, 5, 2, 3,2
                                                            4, 2, 5, 2, 3, 1, 1
                                                            3, 1, 9, 1, 2, 1, 1
                                                            3, 1, 9, 1, 1, 1, 2
                                                            2, 1, 11, 1, 3
                                                            2, 1, 10, 2, 3
                                                            2, 1, 9, 1, 1, 1, 3
                                                            2, 1, 8, 1, 2, 1, 3
                                                            2, 1, 7, 1, 3, 1, 3
                                                            1, 1, 1, 1, 4, 2, 3, 1, 4
                                                            0, 1, 2, 1, 2, 2, 5, 1, 4
                                                            0, 1, 3, 2, 5, 2, 5
                                                            1, 3, 2, 5, 7

                                                            6, 6, 6
                                                            5, 1, 2, 2, 2, 1, 5
                                                            6, 6, 6
                                                            4, 2, 6, 2, 4
                                                            3, 1, 10, 1, 3
                                                            2, 1, 12, 1, 2
                                                            2, 1, 3, 1, 4, 1, 3, 1, 2
                                                            1, 2, 12, 2, 1
                                                            0, 1, 16, 1
                                                            0, 1, 6, 1, 2, 1, 6, 1
                                                            0, 1, 7, 2, 7, 1
                                                            1, 1, 14, 1, 1
                                                            2, 1, 12, 1, 2
                                                            2, 1, 5, 2, 5, 1, 2
                                                            3, 1, 10, 1, 3
                                                            4, 2, 6, 2, 4
                                                            6, 6, 6




Cópia autorizada somente para uso em sala de aula.                                      17
© 2011 Computer Science Unplugged (csunplugged.org)
Folha de Atividade: Crie Sua Própria Imagem
     Agora que você sabe como os números podem representar imagens, por que não
     tentar fazer sua própria imagem codificada para um amigo ? Desenhe sua
     imagem na grade superior e, ao terminar, escreva os números de código ao lado
     da grade inferior. Recorte ao longo da linha pontilhada e dê o papel com a grade
     inferior para um amigo colorir. (Nota: se preferir, você não precisa usar toda a
     grade, basta deixar algumas linhas em branco no final, caso sua imagem não
     ocupe toda a grade.)




18                                            Cópia autorizada somente para uso em sala de aula.
                                           © 2011 Computer Science Unplugged (csunplugged.org)
Folha de Atividade: Crie Sua Própria Imagem
       Para os mais espertos: Se quiser produzir imagens coloridas, você pode usar
       um número para representar a cor (por exemplo, 0 para preto, 1 para vermelho,
       2 para verde etc.) Dois números são agora usados para representar um grupo de
       pixels: o primeiro representa o tamanho do conjunto, e o segundo especifica a
       cor. Tente fazer uma imagem colorida para um amigo. Não se esqueça de dizer
       ao seu amigo o número correspondente a cada cor.




Cópia autorizada somente para uso em sala de aula.                               19
© 2011 Computer Science Unplugged (csunplugged.org)
Variações e Extensões
     1. Tente desenhar com uma folha de papel sobre a grade, de modo que a imagem final
        possa ser vista sem a grade. A imagem será mais clara.

     2. Ao invés de colorir a grade, as crianças podem utilizar quadrados de papel colante ou
        colocar objetos em uma grade maior.

     Ponto para Discussão
     Geralmente há um limite para o tamanho de um grupo de pixels porque o tamanho é
     representado por um número binário. Como você representaria um grupo de doze pixels
     pretos se pudesse somente usar números até sete ? (Uma boa maneira de fazê-lo seria
     codificar um conjunto de sete pixels pretos seguido de um conjunto de zero pixels brancos
     e de um conjunto de cinco pixels pretos.)




20                                                 Cópia autorizada somente para uso em sala de aula.
                                                © 2011 Computer Science Unplugged (csunplugged.org)
De que se trata tudo isso ?
       Uma máquina de fax é basicamente um computador simples que efetua uma varredura
       sobre uma página em preto e branco, armazena-a em, aproximadamente, 1000 × 2000
       pixels, que são transmitidos através de um modem para outra máquina de fax. Esta última,
       por sua vez, imprime os pixels em uma página. Imagens impressas por fax geralmente
       têm grandes blocos de pixels brancos (por exemplo, as margens) ou pretos (por exemplo,
       uma linha horizontal). Imagens coloridas também possuem áreas repetidas. A fim de
       economizar o espaço de armazenamento necessário para guardar essas imagens, os
       programadores podem usar diversas técnicas de compressão. O método utilizado nesta
       atividade é chamado de ‘run-length coding’, uma maneira eficaz de compressão de
       imagens. Se as imagens não fossem comprimidas, estas levariam muito mais tempo para
       serem transmitidas e exigiriam muito mais espaço para armazenamento. Isto tornaria
       inviável enviar páginas de fax ou colocar fotos em uma página da Internet. Por exemplo,
       imagens de fax são geralmente comprimidas para aproximadamente um sétimo do seu
       tamanho original. Sem a compressão, estas demorariam sete vezes mais para serem
       transmitidas !

       Fotografias e imagens são freqüentemente comprimidas para um décimo ou até mesmo
       um centésimo do seu tamanho original (utilizando uma técnica diferente). Isto permite
       que um número bem maior de imagens seja armazenado em um disco e significa que vê-
       las na Internet levará bem menos tempo.

       Um programador pode escolher a técnica mais adequada à compressão das imagens que
       está transmitindo.




Cópia autorizada somente para uso em sala de aula.                                          21
© 2011 Computer Science Unplugged (csunplugged.org)
Soluções e dicas
     Respostas da Atividade do Mini Fax




22                                  Cópia autorizada somente para uso em sala de aula.
                                 © 2011 Computer Science Unplugged (csunplugged.org)
Atividade 3
       Você pode repetir ? —Compressão de Texto
       Sumário
       Desde que os computadores possuíam apenas uma quantidade reduzida de espaço para
       armazenar informações, estes precisavam armazená-las da forma mais eficiente possível.
       Isso é chamado compressão. Codificar os dados antes de armazená-los e decodificá-los,
       assim que estiverem sendo recuperados, permite ao computador armazenar mais dados ou
       enviá-los mais rapidamente através da Internet.

       Matérias correlacionadas
          Português: Reconhecimento de padrões em palavras e texto.
          Tecnologia: Conhecimento sobre o funcionamento dos computadores.
       Habilidades
          Cópia de textos escritos
       Idades
          A partir de 9 anos
       Material
          Transparência feita a partir da folha “Transparência: Você pode repetir ?” (página 25)
       Cada criança precisará de:
          Folha de Atividade: Você pode repetir ? ! (página 26)
          Folha de Atividade: Para os mais espertos (página 27)
          Folha de Atividade: Curto e grosso (página 28)
          Folha de Atividade: Para os realmente espertos (página 29)




Cópia autorizada somente para uso em sala de aula.                                           23
© 2011 Computer Science Unplugged (csunplugged.org)
Você pode repetir ?
     Introdução
     Os computadores devem preservar e transmitir diversos dados. Para não usar muito
     espaço de armazenamento, ou levar muito tempo para enviar informações através de uma
     conexão via modem, eles comprimem o texto como explicado resumidamente a seguir.

     Demonstração e discussão
     Mostre o poema “A Aranha e a Jarra” (folha de transparência da página 25). Identifique
     padrões de letras neste poema. Você consegue encontrar grupos de duas ou mais letras
     repetidas, ou mesmo palavras ou frases inteiras? (Substitua esses padrões por caixas em
     branco conforme mostrado no diagrama abaixo.)




                  Aranha arranha

                  Aranha arranha




24                                                 Cópia autorizada somente para uso em sala de aula.
                                                © 2011 Computer Science Unplugged (csunplugged.org)
Transparência: Você pode repetir ?




       A Aranha e a Jarra
       (Nelma Sampaio)
       Debaixo da cama tem uma jarra,

       Dentro da jarra tem uma aranha.

       Tanto a aranha arranha a jarra,

       Como a jarra arranha a aranha.




Cópia autorizada somente para uso em sala de aula.    25
© 2011 Computer Science Unplugged (csunplugged.org)
Folha de Atividade: Você pode repetir ?
     Muitas palavras e letras estão faltando no trecho deste lindo poema do ilustre
     poeta português Luís Vaz de Camões (1524?-1580). Você pode preencher as
     letras e palavras que faltam para completá-lo corretamente? Você as encontrará
     nos retângulos apontados pela seta.




         Amor é fogo que arde sem se ver,
         É ferida que dói e não se sente,
         É um contentamento descontente,
         É dor que desatina sem doer .



     Agora escolha um poema ou versinho infantil e construa seu próprio enigma.
     Certifique-se de que as setas apontem sempre para uma parte anterior do texto.
     O seu poema deve ser capaz de ser decodificado da esquerda para a direita e de
     cima para baixo, da mesma forma que lemos um texto.

     Desafio: Veja quão poucas palavras do texto original você precisa conservar!

     Aqui vão algumas sugestões: “A Casa” e “O Pato” de Vinícius de Moraes.

     Dica: Tente evitar o uso demasiado de setas. Deixe bastante espaço livre em
     volta das letras e palavras ao escrever de modo que você tenha espaço para os
     retângulos e as setas que apontam para estes.

     É mais fácil construir o enigma se, primeiro, você escrever o poema por extenso
     e depois decidir onde ficarão os retângulos.




26                                            Cópia autorizada somente para uso em sala de aula.
                                           © 2011 Computer Science Unplugged (csunplugged.org)
Folha de Atividade: Para os mais espertos
       Como resolver este enigma ?



             Ban
                             ---
       Às vezes, textos incompletos apontam para parte dele mesmo. Neste caso, o
       texto pode ser decodificado corretamente se as letras forem copiadas da
       esquerda para a direita. Assim, cada letra está disponível para ser copiada antes
       de ser necessária. Isso é útil em computadores nos quais existe uma cadeia
       grande de caracteres ou padrões específicos.


       Tente desenhar alguns de seus próprios padrões.

       Em computadores as caixas e flechas são representadas por números. Por
       exemplo,


             Banana
       pode ser escrita como Ban (2,3). "2" significa contar dois caracteres para trás
       para encontrar o ponto de partida para a cópia,

             Ban---
       e "3" significa copiar três caracteres consecutivos:

             Bana--
             Banan-
             Banana-
       Visto que dois números são usados para codificar estas palavras, normalmente,
       apenas grupos de duas ou mais letras valem a pena ser comprimidas, caso
       contrário, não há economia de espaço. O tamanho do arquivo poderia até
       mesmo aumentar se dois números fossem usados para codificar uma letra.

Elabore algumas palavras e as escreva como um computador as escreveria se estas
fossem comprimidas. Seus amigos conseguem decodificá-las ?




Cópia autorizada somente para uso em sala de aula.                                    27
© 2011 Computer Science Unplugged (csunplugged.org)
Folha de Atividade: Curto e Grosso
     De quantas palavras você realmente precisa ?

     Finja que você é um computador tentando armazenar a maior quantidade de
     informações em seu disco rígido. Descarte todos os grupos de duas ou mais
     letras que já tenham ocorrido. Estes são desnecessários porque podem ser
     substituídos por uma referência anterior. Seu objetivo é conseguir marcar a
     maior quantidade possível de letras.




                                                                                                                                                                                                                                                                                                 Em quantidade que é pra dar e pra vender.
                                                                                                                                    Pra ver quem chega lá no topo pra comer
                                                                                         E sai correndo dando pulos, dando saltos



                                                                                                                                                                                Na bananeira tem um cacho bem maduro



                                                                                                                                                                                                                                                           A bananada que é um doce bem escuro
                                                                                                                                                                                                                       E Vovó colhe as bananas pra fazer
                                                      A macacada se alvoroça quando vê
                        Banana, bananeira, bananada
      (Nelma Sampaio)
     Banana




28                                                                                                                                                                               Cópia autorizada somente para uso em sala de aula.
                                                                                                                                                                              © 2011 Computer Science Unplugged (csunplugged.org)
Folha de Atividade: Para os realmente espertos
       Prontos para uma compressão realmente difícil ?

       Quantas letras você consegue marcar para compressão na história dos Três
       Porquinhos ? Lembrem-se: apenas grupos de dois ou mais caracteres repetidos
       podem ser eliminados. Boa sorte!




       E   ra uma vez, três porquinhos que viviam com a sua mãe. Um dia ela disse-lhes:
           - Queridos filhos, penso que já são grandinhos para viverem sozinhos e poderem
           trabalhar. Têm braços fortes e não lhes falta inteligência para pensar o que é melhor
       para cada um. Primeiro têm que construir suas próprias casas perto uns dos outros e se
       prepararem para todos os perigos que possam surgir.

       Os porquinhos puseram-se a caminho. De todos os três o pequeno era o mais trabalhador, o
       do meio era trapalhão e o maior era preguiçoso. Como o maior era preguiçoso, fez a casa de
       palha para ser mais rápido. O do meio fez a casa de madeira, pois também não gostava
       muito de trabalhar. Mas, o mais novo, o mais trabalhador, fez a sua com cimento e tijolos. Um
       dia, apareceu o lobo que, com um sopro, derrubou a casa do mais velho e que, com outro sopro,
       deitou abaixo a casa do porquinho do meio. Os porquinhos muito amedrontados correram para a
       casa do irmão mais novo com o lobo correndo atrás deles. O porquinho abriu-lhes a porta
       rapidamente e, os irmãos, entraram muito admirados por verem uma casa tão forte e tão
       bonita. O lobo pensava que a derrubaria, soprava e dizia:

       - Soprarei, soprarei e a sua casa derrubarei!

       Mas a casa era forte e ele não conseguiu derrubá-la. Por isso, muito envergonhado, fugiu e não
       voltou mais. Os três porquinhos continuaram morando na casa de tijolos e viveram felizes para
       sempre.




Cópia autorizada somente para uso em sala de aula.                                                29
© 2011 Computer Science Unplugged (csunplugged.org)
De que se trata tudo isso ?
     A capacidade de armazenamento dos computadores cresce num ritmo incrível— nos
     últimos 25 anos, esta quantidade de armazenamento em um computador típico cresceu
     cerca de um milhão de vezes — mas ainda encontramos mais coisas para colocarmos em
     nossos computadores. Os computadores podem armazenar livros ou até mesmo
     bibliotecas e, agora, música e filmes também, se houver espaço. Arquivos grandes são
     igualmente um problema na Internet porque demoram muito tempo para serem baixados.
     Além disso, tentamos reduzir os computadores cada vez mais — até mesmo um relógio
     de pulso ou celular pode armazenar grandes quantidades de informação !

     Entretanto, existe uma solução para este problema. Ao invés de comprar mais espaço de
     armazenamento ou um modem mais rápido, podemos comprimir os dados para que estes
     ocupem menos espaço. Tal processo de compressão e descompressão de dados é
     geralmente feito automaticamente pelo computador. Assim, notamos que o disco possui
     mais espaço disponível ou que as páginas da Internet são exibidas mais rapidamente,
     porém, o computador está, na verdade, realizando mais processamento.

     Vários métodos de compressão foram inventados. O método utilizado nesta atividade,
     baseado no princípio de apontar para ocorrências anteriores de blocos de texto, é muitas
     vezes referido como “codificação Ziv-Lempel” ou “codificação LZ”, e foi inventado por
     dois professores israelenses na década de 1970. Este método pode ser usado para
     qualquer idioma e pode facilmente reduzir à metade o tamanho dos dados a serem
     compactados. É, por vezes, referido como “zip” em computadores pessoais, é também
     utilizado em imagens do tipo “GIF”, bem como em modems de alta velocidade. No caso
     dos modems, este método reduz a quantidade de dados que precisam ser transmitidos
     através da linha telefônica, sendo assim bem mais rápido.

     Alguns outros métodos são baseados na idéia de que as letras usadas mais freqüentemente
     deveriam ter códigos menores do que as outras. O Código Morse utilizou esta idéia.



     Soluções e dicas
     Você pode repetir ? (página 26)

              Amor é fogo que arde sem se ver,
              É ferida que dói e não se sente,
              É um contentamento descontente,
              É dor que desatina sem doer.

                                                          Luís Vaz de Camões
                                              (Poeta português, 1524?-1580)



30                                                 Cópia autorizada somente para uso em sala de aula.
                                                © 2011 Computer Science Unplugged (csunplugged.org)
Atividade 4
       A Mágica de virar as cartas—Detecção e
       Correção de Erros
       Sumário
       Quando os dados são armazenados num disco ou transmitidos de um computador para
       outro, costumamos supor que estes não tenham sofrido alterações no processo. Mas, às
       vezes, problemas acontecem e os dados são alterados acidentalmente. Esta atividade
       utiliza um truque de mágica para mostrar como detectar quando os dados foram
       corrompidos e como podemos corrigi-los.

       Matérias correlacionadas
          Matemática: Cálculo e estimativa.
          Álgebra: Padrões e relacionamentos.
       Habilidades
          Contagem
          Reconhecimento de números pares e ímpares
       Idades
          A partir de 9 anos
       Material
          Um conjunto de 36 cartas do tipo “ímã de geladeira”, coloridas em um dos lados.
          Um quadro de metal (um quadro branco funciona bem) para a demonstração.
       Cada par de crianças vai precisar de:
          36 cartas idênticas, coloridas em apenas um lado.




Cópia autorizada somente para uso em sala de aula.                                            31
© 2011 Computer Science Unplugged (csunplugged.org)
O “Truque de Mágica”
     Demonstração
     Esta é a sua chance de se tornar um mágico !

     Você precisará de um conjunto de cartas iguais de duas faces. (Para fazer suas próprias
     cartas, corte uma folha grande e colorida apenas de um lado). Para a demonstração, é
     mais fácil usar cartas magnéticas e planas com uma cor diferente em cada lado—ímãs de
     geladeira são ideais.

           1.    Escolha uma criança para dispor as cartas aleatoriamente em um quadrado de
                 dimensões 5 × 5.




     Casualmente adicione outra linha e coluna, “apenas para dificultar o truque”.




     Essas cartas são a chave para o truque. Você deve escolher as cartas adicionais para
     assegurar que haja um número par de cartas coloridas em cada linha e coluna.

           2.    Peça a uma criança para virar apenas uma carta enquanto você cobre seus
                 olhos. A linha e coluna que contém a carta modificada agora terão um
                 número ímpar de cartas coloridas, e isto identificará a carta modificada.

     As crianças conseguem adivinhar como o truque é feito ?




32                                                 Cópia autorizada somente para uso em sala de aula.
                                                © 2011 Computer Science Unplugged (csunplugged.org)
Ensine o truque para as crianças:


1.    Trabalhando em pares, as crianças distribuem suas cartas em um quadrado 5 × 5.

2.     Quantas cartas coloridas estão em cada linha e coluna ? Trata-se de um número par ou
       ímpar ? Lembre-se, 0 é um número par.

3.     Agora, adicione uma sexta carta a cada linha, certificando-se de que o número de cartas
       coloridas seja sempre ímpar. Esta carta extra é chamada de carta de “paridade”.

4.     Adicione uma sexta linha de cartas na parte de baixo, fazendo com que o número de
       cartas em cada coluna seja um número par.

5.     Agora, vire uma carta. O que você nota sobre a linha e coluna dessa carta ? (Elas terão
       um número ímpar de cartas coloridas.) Cartas de paridade são usadas para lhe mostrar a
       ocorrência de um erro.

6.     Agora, faça revezamentos para realizar o “truque”.

       Atividades de Extensão:


1.    Tente usar outros objetos. Tudo o que tem dois “estados” é apropriado. Por exemplo, você
      poderia utilizar cartas de baralho, moedas (cara ou coroa) ou cartões impressos com 0 ou
      1 (para referir-se ao sistema binário).

2.    O que acontece quando duas ou mais cartas são viradas ? (Nem sempre é possível saber
      exatamente quais duas cartas foram viradas, embora seja possível dizer que alguma coisa
      foi modificada. Normalmente, é possível restringir a um dos dois pares de cartas. Após 4
      viradas, é possível que todos os bits de paridade estejam corretos e, por isso, o erro
      poderia passar despercebido.)

3.    Outro exercício interessante é considerar a carta do lado inferior direito. Se você a escolhe
      como correta para a coluna logo acima, então ela estará correta para a fila à sua esquerda?
      (A resposta é sim, sempre.)

4.    Neste exercício de cartas empregamos a paridade par—usando um número par de cartas
      coloridas. Podemos fazê-lo com paridade ímpar ? (Isso é possível, porém a carta do lado
      direito somente funciona para a sua linha e coluna se os números de linhas e colunas são
      ambos pares ou ímpares. Por exemplo, isso funciona bem para um quadrado 5 × 9 ou 4 ×
      6, mas não para um quadrado 3 × 4.)




Cópia autorizada somente para uso em sala de aula.                                             33
© 2011 Computer Science Unplugged (csunplugged.org)
Um exemplo prático para os mais espertos !
     Esta mesma técnica de verificação é utilizada em códigos de livro. Livros
     publicados possuem um código de dez dígitos normalmente encontrados na
     contracapa. O décimo dígito é um dígito verificador, tal qual os bits de paridade
     do exercício.

     Isto significa que se você encomendar um livro usando o seu ISBN (International
     Standard Book Number – Padrão Internacional de Número de Livro), o editor
     pode verificar se você cometeu um erro. Eles simplesmente testam a soma
     verificadora. Assim, você não acaba esperando o livro errado !

     Veja como calcular a soma verificadora: multiplique por dez o primeiro dígito, o
     segundo por nove, o terceiro por oito, e assim por diante, até o nono dígito
     multiplicado por dois. Some esses valores.

     Por exemplo, o ISBN 0-13-911991-4 fornece o seguinte valor

                (0 × 10) + (1 × 9) + (3 × 8) + (9 × 7) + (1 × 6)
              + (1 × 5) + (9 × 4) + (9 × 3) + (1 × 2)
              = 172

     Em seguida, divida o resultado por onze. Qual é o resto ?

         172 ÷ 11 = 15 resto 7

     Se o resto for igual a zero, então a soma verificadora é zero. Caso contrário,
     subtraia 11 do resto para obter a soma verificadora.

            11 – 7 = 4

     Olhe novamente. Este é o último dígito do ISBN acima ? Sim ! Se o último dígito
     do ISBN não fosse quatro, então saberíamos que houve um erro.

     Também é possível obter uma soma verificadora de valor 10, o que demandaria
     mais de um dígito. Quando isso acontece, utilizamos a letra X.




                   Código de barras de uma caixa da empresa Weet-Bix ™

     Outro exemplo de uso do dígito verificador são os códigos de barra de produtos,
     os quais usam uma fórmula diferente. Se o código de barras não é lido
     corretamente, então o dígito final será diferente do valor calculado. Quando isso
     acontece, o equipamento de leitura emite um sinal sonoro para que o operador
     do equipamento refaça a leitura do código de barras.


34                                              Cópia autorizada somente para uso em sala de aula.
                                             © 2011 Computer Science Unplugged (csunplugged.org)
Verifique esse livro!
                                 Detetive Faro-fino
       Serviço de Rastreamento de Livros, Ltda.




    Encontramos e verificamos dígitos de ISBN por preços imbatíveis.

            Procure-nos! Pesquise e verifique códigos reais de ISBN
                     em sua sala de aula ou na biblioteca.


      As somas verificadoras estão corretas ?
       Às vezes, cometemos erros. Alguns exemplos de erros comuns são:

               Um dígito teve seu valor alterado;
               Dois dígitos adjacentes foram trocados entre si;
               Foi inserido um dígito no número; e
               Um dígito foi retirado do número

       Você pode encontrar um código ISBN de livro com a letra X para uma soma
       verificadora de valor 10 ? Não deverá ser difícil encontrá-lo — um dentre 11
       livros devem ter esta soma.

       Quais tipos de erros aconteceriam e não seriam detectados ? Você pode alterar
       um dígito e ainda obter a soma verificadora correta ? E se dois dígitos forem
       trocados (um erro de digitação comum) ?




Cópia autorizada somente para uso em sala de aula.                                    35
© 2011 Computer Science Unplugged (csunplugged.org)
De que se trata tudo isso ?
     Imagine que você está depositando R$ 10,00 em dinheiro na sua conta bancária. O caixa
     digita o valor do depósito e o envia para um computador central. Contudo, suponha que
     alguma interferência ocorre na linha enquanto o montante está sendo enviado e o código
     de R$ 10,00 é alterado para R$ 1.000,00. Não há problema se você for o cliente, mas,
     obviamente, há claramente um problema para o banco !

     É importante detectar erros nos dados transmitidos. Portanto, um computador precisa
     verificar que os dados recebidos não foram corrompidos por algum tipo de interferência
     elétrica na linha de transmissão. Às vezes, os dados originais podem ser reenviados se um
     erro foi transmitido, mas existem situações nas quais isso é inviável, por exemplo, caso
     um disco ou fita seja corrompido pela exposição a radiações magnéticas ou elétricas, pelo
     calor ou por danos físicos. Se os dados fossem recebidos de uma sonda espacial profunda,
     seria muito tedioso esperar pela retransmissão em caso de erro ! (Demora pouco mais de
     meia hora para conseguir um sinal de rádio para Júpiter quando este se encontra na sua
     posição mais próxima à Terra !)

     Precisamos ser capazes de reconhecer quando os dados foram corrompidos (detecção de
     erro) e de reconstruir os dados originais (correção de erro).

     A mesma técnica que foi utilizada no jogo de “virar as cartas” é usada em computadores.
     Colocando bits em linhas e colunas imaginárias, e acrescentando bits de paridade para
     cada linha e coluna, podemos não somente detectar se ocorreu um erro, mas quando este
     erro aconteceu. O valor do bit incorreto é modificado e, com isso, realizamos sua
     correção.

     Obviamente, os computadores usam freqüentemente sistemas de controle de erros mais
     complexos capazes de detectar e corrigir erros múltiplos. O disco rígido em um
     computador tem uma grande quantidade de espaço alocado para corrigir erros para que
     este funcione de forma confiável ainda que partes do disco falhem. Os sistemas utilizados
     para esse fim são bastante próximos ao esquema de paridade.




     Soluções e dicas
     Erros que não seriam detectados são aqueles nos quais um dígito é incrementado e outro é
     decrementado. Neste caso, o valor da soma permanece inalterada.




36                                                 Cópia autorizada somente para uso em sala de aula.
                                                © 2011 Computer Science Unplugged (csunplugged.org)
Atividade 5
       Vinte Palpites—Teoria da Informação
       Sumário
       Quanta informação existe em 1.000 páginas de livro ? Existe mais informação em 1.000
       páginas de uma lista telefônica, ou em uma resma de 1.000 folhas de papel em branco, ou
       no livro Senhor dos Anéis de Tolkien ? Se podemos mensurar isto, podemos estimar
       quanto espaço é necessário para armazenar a informação. Por exemplo, você consegue ler
       a seguinte frase ?

             Vc cnsg lr td ?

       Você consegue, provavelmente, porque não há muitas “informações” nas vogais. Esta
       atividade introduz uma forma de mensurar o conteúdo da informação.

       Matérias correlacionadas
          Matemática: Números. Faixas de valores, funções maior que e menor que
          Álgebra. Padrões e sequências
          Português
       Habilidades
          Comparando números e trabalhando com faixas de valores
          Dedução
          Formulação de perguntas
       Idades
          A partir de 10 anos
       Material
          Não são necessários quaisquer materiais para a primeira atividade
       Há uma atividade de extensão para a qual cada criança precisará de:
          Folha de Atividade: Árvores de Decisão (página 40)




Cópia autorizada somente para uso em sala de aula.                                         37
© 2011 Computer Science Unplugged (csunplugged.org)
Vinte Palpites
     Discussão
1.   Discuta com as crianças o que elas acham que é informação.

2.   Como podemos medir a quantidade de informação que haveria em um livro ? O
     importante é o número de páginas ou de palavras ? Um livro pode ter mais informações
     do que outro ? E se o livro for muito chato ou for particularmente interessante ? Será que
     400 páginas de um livro com a frase “blá, blá, blá” tem mais ou menos informação do
     que, por exemplo, a lista telefônica ?

     Explique que os cientistas da computação mensuram a informação por quão
     surpreendente a mensagem (ou livro !) é. Falar para você algo que você já sabe—por
     exemplo, quando um amigo que sempre caminha para a escola diz “Hoje caminhei para a
     escola”—não lhe fornece qualquer informação, pois não é surpreendente. Se, ao invés
     disso, seu amigo disser “Hoje peguei uma carona para a escola em um helicóptero”, isso
     seria surpreendente e, portanto, nos traria uma grande quantidade de informação.

     Como o valor de surpresa de uma mensagem pode ser mensurado ?

     Uma maneira consiste em ver quanto é difícil adivinhar a informação. Se seu amigo diz
     “Adivinhe como fui à escola hoje”, e ele tivesse caminhado, você provavelmente
     acertaria na primeira tentativa. Poderia levar mais algumas tentativas antes de você
     chegar ao helicóptero, e ainda mais se eles tivessem viajado em uma nave espacial.

     A quantidade de informação contida nas mensagens é mensurada pela dificuldade em
     adivinhá-las. O jogo seguinte nos fornece uma idéia disso.




38                                                  Cópia autorizada somente para uso em sala de aula.
                                                 © 2011 Computer Science Unplugged (csunplugged.org)
Atividade das Vinte Perguntas
       Esta é uma adaptação do jogo das 20 perguntas. As crianças podem fazer perguntas a uma
       criança escolhida, a qual responde somente sim ou não até que se advinhe a resposta.
       Qualquer pergunta pode ser feita, contanto que a resposta seja estritamente 'sim' ou 'não'.

       Sugestões:
       Estou pensando em:
           um número entre 1 e 100
           um número entre 1 e 1000
           um número entre 1 e 1.000.000.
           qualquer número inteiro
           uma sequência de 6 números que sigam um padrão (adequado ao grupo). Adivinhe na
           ordem do primeiro ao último. (por exemplo, 2, 4, 6, 8, 10)

       Conte o número de perguntas feitas. Esta é a medida do valor da “Informação”.

       Discussão
       Quais estratégias você usou ? Quais foram as melhores ?

       Ressalte que é preciso apenas 7 palpites para advinhar um número entre 1 e 100 se você
       reduzir à metade o intervalo de busca a cada vez. Por exemplo:

              É menor que   50   ?   Sim.
              É menor que   25   ?   Não.
              É menor que   37   ?   Não.
              É menor que   43   ?   Sim.
              É menor que   40   ?   Não.
              É menor que   41   ?   Não.
              Deve ser 42   !        Sim !

       Curiosamente, se o intervalo é aumentado para até 1000 não se requer um esforço 10
       vezes maior—são necessárias apenas três perguntas adicionais. Cada vez que o intervalo
       dobra, somente é necessário uma pergunta a mais para encontrar a resposta. Uma maneira
       de continuar a atividade seria deixar as crianças jogarem “Senha” (Mastermind).

       Extensão: Quanta informação existe em uma mensagem ?
       Cientistas da computação não usam somente advinhações com números— também pode-
       se adivinhar qual a próxima letra mais provável de ocorrer em uma palavra ou frase.

       Faça um jogo de adivinhação com uma frase curta de 4 a 6 palavras. As letras devem ser
       descobertas na ordem correta, da primeira à última letra. Arranje alguém para escrever as
       letras encontradas e conte quantas perguntas foram necessárias para encontrar cada letra.
       Qualquer pergunta cuja resposta seja sim/não pode ser utilizada. Alguns exemplos são:
       “É um t ?”, “Trata-se de uma vogal ?”, “Precede m no alfabeto ?”. Um espaço entre
       palavras também conta como uma “letra” e deve ser adivinhada. Faça um revezamento e
       veja se você consegue descobrir quais partes das mensagens são mais fáceis de adivinhar.


Cópia autorizada somente para uso em sala de aula.                                            39
© 2011 Computer Science Unplugged (csunplugged.org)
Folha de Atividade: Árvores de Decisão
     Se você já sabe a estratégia para fazer as perguntas, você pode transmitir uma
     mensagem sem ter que perguntar nada.

     A seguir temos um esquema chamado de “árvore de decisão” que permite
     adivinhar um número entre 0 e 7:




     Quais são as decisões/escolhas da forma sim/não necessárias para "adivinhar" o
     número 5 ?

     Quantas decisões da forma sim/não você deve tomar para descobrir um número
     qualquer ?

     Agora veja algo extremamente fascinante. Abaixo dos números 0, 1, 2, 3 ..., na
     última linha da árvore, escreva o número em binário (veja a Atividade 1).

     Olhe cuidadosamente para a árvore. Se não = 0 e sim = 1, o que você nota ?

     No jogo de adivinhar números, procuramos escolher as perguntas de tal forma
     que a sequência de respostas sirva para representar o número exatamente dessa
     maneira.

     Projete sua própria árvore de decisão para adivinhar números entre 0 e 15.

Para os mais espertos: Qual tipo de árvore você usaria para adivinhar a idade de
alguém ? E para adivinhar a próxima letra em uma frase ?




40                                            Cópia autorizada somente para uso em sala de aula.
                                           © 2011 Computer Science Unplugged (csunplugged.org)
De que se trata tudo isso ?
       Um célebre matemático americano (e malabarista, e
       monociclista) chamado Claude Shannon fez uma série de
       experimentos com este jogo. Ele mensurou a quantidade de
       informação em bits—cada resposta sim/não equivale a um
       bit 1/0. Ele descobriu que a quantidade de “informação”
       contida numa mensagem depende do que você já sabe. Às
       vezes, perguntamos algo que evita fazer diversas perguntas.
       Neste caso, o conteúdo da informação é baixo. Por exemplo,
       a informação no lançamento de uma moeda é normalmente
       de um bit: cara ou coroa. Entretanto, se a moeda for
       tendenciosa para mostrar cara nove em cada dez vezes, então a
       informação deixa de ser um bit—acredite se quiser, é menos do que
       um bit. Como você pode descobrir como a moeda caiu com menos
       de uma pergunta do tipo sim ou não ? Simples—basta fazer
       perguntas como “As próximas duas moedas atiradas serão cara ?”.
       Para uma sequência de lançamentos com uma moeda viciada, a
       resposta será “sim” cerca de 80% das vezes. Nas outras 20% das
       vezes, em que a resposta é “não”, você deve fazer duas perguntas
       adicionais. Porém, em média, você fará menos de uma pergunta por
       lançamento !

       Shannon chamou as informações relativas ao conteúdo de uma mensagem de “entropia”.
       A entropia depende não apenas do número de resultados possíveis—dois, no caso do
       lançamento de uma moeda— mas também na probabilidade disso acontecer.
       Acontecimentos improváveis ou informações surpreendentes requerem mais perguntas
       para adivinhar a mensagem porque estes nos fornecem mais informações além das quais
       já sabíamos, como no caso de ir em um helicóptero para a escola.

       A entropia de uma mensagem é muito importante para os cientistas da computação. Você
       não pode comprimir uma mensagem de tal forma que esta ocupe menos espaço do que
       sua entropia, e os melhores sistemas de compressão são equivalentes a um jogo de
       adivinhação. Dado que um programa de computador faz os “palpites”, a lista de perguntas
       pode ser reproduzida posteriormente. Assim, contanto que as respostas (bits) sejam
       armazenadas, podemos reconstruir a informação ! Os melhores sistemas de compressão
       podem reduzir um arquivo texto até um quarto do seu tamanho original—uma grande
       economia de espaço de armazenamento !

       O método de adivinhação também pode ser usado para construir uma interface de
       computador que prediz a próxima letra que o usuário digitará ! Isto pode ser muito útil
       para pessoas com problemas físicos que tenham dificuldade em escrever. O computador
       pode sugerir o que será digitado na sequência e o usuário apenas indica se essa opção é a
       que ele deseja. Um bom sistema precisa, em média, de apenas duas respostas do tipo
       sim/não por letra e pode ser de grande ajuda para alguém com dificuldade em realizar os
       movimentos delicados necessários para controlar um mouse ou teclado. Este tipo de
       sistema, em uma forma diferente, também é utilizado para “digitar” texto em alguns
       telefones celulares.



Cópia autorizada somente para uso em sala de aula.                                            41
© 2011 Computer Science Unplugged (csunplugged.org)
Soluções e dicas
     A resposta para uma pergunta da forma sim/não corresponde a exatamente um bit de
     informação—seja uma pergunta simples como “É maior do que 50 ?” ou uma pergunta
     mais complexa como “Está entre 20 e 60 ?”

     No jogo de adivinhar o número, se as perguntas são escolhidas de certa maneira, a
     sequência das respostas é simplesmente a representação binária do número. O número
     três é 011 em binário e é representado pela resposta “Não, sim, sim” na árvore de decisão,
     o que equivale a escrevermos não para 0 e sim para 1.

     Uma árvore que você usaria para advinhar a idade de alguém poderia estar melhor
     dirigida a advinhar os números menores.

     A decisão sobre as letras em uma frase podem se basear sobre qual era a letra anterior.




42                                                 Cópia autorizada somente para uso em sala de aula.
                                                © 2011 Computer Science Unplugged (csunplugged.org)
Parte II
Colocando os Computadores para
  Trabalhar—Algoritmos
Colocando os computadores para trabalhar
     Os computadores operam seguindo uma lista de instruções estabelecida para eles. Essas
     instruções os permitem ordenar, pesquisar e enviar informações. Para fazer essas coisas, o
     mais rápido possível, você precisa de bons métodos para pesquisar coisas em grandes
     coleções de dados e para enviar informações através das redes.

     Um algoritmo é um conjunto de instruções para completar uma tarefa. A idéia de
     algoritmo é central para a ciência da computação. Através dos algoritmos utilizamos os
     computadores para resolver problemas. Alguns algoritmos são mais rápidos do que
     outros, e muitos dos algoritmos que foram descobertos tornaram possível resolver
     problemas que anteriormente levavam um tempo inaceitável—por exemplo, encontrar
     milhões de dígitos do número Pi, todas as páginas da Internet que contém o seu nome, a
     melhor maneira de se acomodar pacotes num contêiner ou verificar se números muito
     grandes (100 dígitos) são primos.

     A palavra “algoritmo” é derivada do nome de Mohammed ibn Musa Al-Khowarizmi—
     Mohammed, filho de Moisés, de Khowarizm—que fez parte de um centro acadêmico
     conhecido como a Casa da Sabedoria, em Bagdá, por volta de 800 d.C. Seus trabalhos
     transmitiram a arte hindu de calcular aos árabes e, a partir daí, ao resto da Europa.
     Quando estes trabalhos foram traduzidos para o latim em 1120 d.C., as primeiras palavras
     eram “Dixit Algorismi” —“assim disse Algorismi”.




44                                                 Cópia autorizada somente para uso em sala de aula.
                                                © 2011 Computer Science Unplugged (csunplugged.org)
Atividade 6
       Batalha Naval — Algoritmos de Busca
       Sumário
       Computadores são freqüentemente requisitados a encontrar informação em grandes
       coleções de dados. Estes precisam desenvolver métodos rápidos e eficientes de fazer isso.
       Essa atividade demonstra três diferentes métodos de pesquisa: busca linear, busca binária
       e busca por dispersão/espalhamento (“hashing”).

       Matérias correlacionadas
          Matemática: Números: maior que, menor que, iguais a.

           Geometria: Plano e espaço: coordenadas.

       Habilidades
          Raciocínio Lógico
       Idades
           De 9 anos em diante
       Material
       Cada criança precisará de:
          Cópia dos jogos Batalha Naval
               1A e 1B para o jogo 1
               2A e 2B para o jogo 2
               3A e 3B para o jogo 3

           Você precisará também de algumas cópias das folhas de jogos suplementares 1A',
           1B', 2A', 2B', 3A' e 3B'.




Cópia autorizada somente para uso em sala de aula.                                          45
© 2011 Computer Science Unplugged (csunplugged.org)
Batalha Naval
     Atividade Introdutória
1.   Escolha em torno de 15 crianças para formar uma fileira na frente da classe. Dê a cada
     criança um cartão com um número (em ordem aleatória). Mantenha os números
     escondidos do resto da classe.

2.   Dê a outra criança quatro ou cinco doces. O trabalho dela é descobrir um determinado
     número. Ela pode “pagar” para olhar um cartão específico. Se encontrar o número correto
     antes de usar todos os seus doces, ela fica com o restante dos doces.

3.   Repita a atividade, se quiser.

4.   Agora embaralhe as cartas e as distribua novamente. Desta vez, as crianças devem se
     organizar em ordem crescente. Repita o processo de busca.

     Se os números estão ordenados, uma estratégia sensata é usar somente um “pagamento“
     para eliminar metade das crianças, escolhendo a criança do meio para revelar o seu
     cartão. Repetindo esse procedimento, é possível encontrar o número usando somente três
     doces. O ganho de eficiência será óbvio.

     Atividade
     As crianças podem ter uma idéia de como um computador faz pesquisas jogando Batalha
     Naval. A utilização do jogo faz com que elas pensem acerca das estratégias que estão
     usando para localizar os navios.




46                                                 Cópia autorizada somente para uso em sala de aula.
                                                © 2011 Computer Science Unplugged (csunplugged.org)
Batalha Naval—Um jogo de busca linear
       Leia as seguintes instruções para as crianças
1.     Formem duplas. Um de vocês pega a folha 1A, e o outro a folha 1B. Não mostrem sua
       folha para o seu parceiro !

2.     Ambos circulam um navio de guerra na linha superior da folha do jogo e informam o
       número do navio ao seu parceiro.

3.     Agora, revezem-se para adivinhar onde está o navio do seu parceiro. (Você diz a letra de
       um navio e o seu parceiro lhe diz o navio correspondente a essa letra).

4.     Quantos tiros são necessários para localizar o navio do seu parceiro ? Essa é a sua
       pontuação no jogo.

       (As folhas 1A' e 1B' são extras para crianças que gostariam de jogar mais vezes ou que
       “inadvertidamente” viram a folha do seu parceiro. As folhas 2A', 2B' e 3A', 3B' são para
       os jogos seguintes).

       Discussão
1.     Quais foram as pontuações ?

2.     Quais seriam as pontuações máxima e mínima possíveis ? (São 1 e 26, respectivamente,
       assumindo que as crianças não atiram no mesmo navio duas vezes. Esse método é
       chamado de ‘busca linear’ porque envolve passar por todas as posições, uma a uma).




Cópia autorizada somente para uso em sala de aula.                                           47
© 2011 Computer Science Unplugged (csunplugged.org)
Batalha Naval—Um jogo de busca binária
     Instruções:
     As instruções para essa versão do jogo são as mesmas do jogo anterior, mas os números
     dos navios estão em ordem crescente. Explique isso às crianças antes de começarem.

1.   Formem duplas. Um de vocês pega a folha 2A, o outro a folha 2B. Não mostrem sua
     folha ao seu parceiro !

2.   Ambos circulam um navio da linha superior de sua folha de jogo e dizem o número do
     navio ao seu parceiro.

3.   Agora, revezem-se para adivinhar onde está o navio do seu parceiro. (Você diz a letra de
     um navio e o seu parceiro lhe diz o navio correspondente a essa letra).

4.   Quantos tiros são necessários para localizar o navio do seu parceiro ? Essa é a sua
     pontuação no jogo.

     Discussão
1.   Quais foram as pontuações ?

2.   Qual foi a estratégia usada pelos jogadores que tiveram baixa pontuação ?

3.   Qual o navio você deveria escolher primeiro ? (O navio do meio lhe informa em qual
     metade da linha o navio escolhido deve estar). Qual posição você deve escolher em
     seguida ? (Novamente, a melhor estratégia é escolher sempre o navio que está na metade
     da seção que deve conter o navio escolhido.)

4.   Se esta estratégia é aplicada, quantos tiros são necessários para encontrar um navio ?
     (Cinco, no máximo).

     Esse método é chamado de ‘busca binária’ porque divide o problema em duas partes.




48                                                  Cópia autorizada somente para uso em sala de aula.
                                                 © 2011 Computer Science Unplugged (csunplugged.org)
Batalha Naval— Um jogo de busca usando Hashing
     Instruções
1.   Cada criança escolhe uma folha, como no jogo anterior, e diz ao seu parceiro o número
     do navio escolhido.

2.   Nesse jogo você pode descobrir em qual a coluna (0 a 9) o navio está. Basta somar os
     dígitos do número do navio. O último dígito da soma é a coluna em que o navio está. Por
     exemplo, para localizar o navio de número 2345, some os dígitos 2+3+4+5, totalizando
     14. O último dígito da soma é 4. Portanto, o navio tem que estar na coluna 4. Ao conhecer
     a coluna, você deve adivinhar qual dos navios naquela coluna é o desejado. Essa técnica é
     chamada “hashing” porque os dígitos são “espremidos” (do inglês, “hashed”) uns contra
     os outros.

3.   Agora jogue usando esta nova estratégia de busca. Você pode jogar mais de um jogo
     usando a mesma folha – basta escolher colunas diferentes.

     (Note que, diferentemente de outros jogos, as folhas reservas 3A' e 3B' devem ser usadas
     em pares, porque o padrão dos navios nas colunas deve ser correspondente).

     Discussão
1.   Colete e discuta as pontuações como antes.

2.   Quais navios foram achados mais rapidamente ? (Aqueles que estão sós em suas colunas).
     Quais foram mais difíceis de serem encontrados ? (Aqueles em colunas que continham
     muitos outros navios.)

3.   Qual dos três algoritmos de busca é o mais rápido ? Por quê ?

     Quais são as vantagens de cada um dos três diferentes modos de busca? (A segunda
     estratégia é mais rápida do que a primeira, mas a primeira não requer que os navios
     estejam ordenados. A terceira estratégia é geralmente mais rápida que as demais, mas, é
     possível que seja bastante lenta em algumas situações. (No pior caso, se todos os navios
     estiverem na mesma coluna, esta será tão lenta quanto a primeira estratégia.)
Atividades de Extensão

1.   Faça com que as crianças construam seus próprios jogos usando os três formatos. Para o
     segundo jogo, elas devem colocar os números em ordem crescente. Pergunte como elas
     dificultariam ainda mais o jogo de busca baseado em hashing. (O jogo torna-se mais
     difícil quando todos os navios estão na mesma coluna.) Como você faria para torná-lo o
     mais fácil possível ? (Você deve tentar colocar o mesmo número de navios em cada
     coluna.)

2.   O que aconteceria se o navio procurado não existisse? (No jogo de busca linear seriam
     necessários 26 tiros para mostrar isso. Com a busca binária seriam necessários 5 tiros.
     Quando se utiliza o sistema de hashing, isso depende de quantos navios presentes na
     coluna em questão.)

3.   Usando a estratégia de busca binária, quantos tiros seriam necessários se houvessem cem
     posições (cerca de 6 tiros), mil posições (cerca de 9 tiros), ou um milhão (cerca de 19
     tiros) ? (Note que o número de tiros aumenta muito lentamente se comparado ao número
     de navios. Um tiro extra é necessário cada vez que o número de navios dobra. Assim, diz-
     se que o número de tiros é proporcional ao logaritmo do número de navios.)




50                                                Cópia autorizada somente para uso em sala de aula.
                                               © 2011 Computer Science Unplugged (csunplugged.org)
Meus Ships
                                                      My navios                                 Número de disparos:
                                                                                                 Number of Shots Used:
                                                      9058   7169   3214   5891   4917   2767   4715   674    8088   1790   8949   13     3014
                                                      A      B      C      D      E      F      G      H       I      J     K      L      M
                                                      8311   7621   3542   9264   450    8562   4191   4932   9462   8423   5063   6221   2244
                                                      N      O      P      Q      R      S      T      U      V      W      X      Y      Z




Cópia autorizada somente para uso em sala de aula.
© 2011 Computer Science Unplugged (csunplugged.org)
                                                      Seus navios
                                                      Your Ships                                Número de disparos:
                                                                                                Number of Shots Used:

                                                      A      B      C      D      E      F      G      H       I      J     K      L      M

                                                      N      O      P      Q      R      S      T      U      V      W      X      Y      Z




                           51
                                                                                                                                   1A
Número de disparos:




                               Número de disparos:
      Meus navios




                                Seus navios




52                            Cópia autorizada somente para uso em sala de aula.
                           © 2011 Computer Science Unplugged (csunplugged.org)
Número de disparos:




                                                      Número de disparos:
          Meus navios




                                                       Seus navios




Cópia autorizada somente para uso em sala de aula.                          53
© 2011 Computer Science Unplugged (csunplugged.org)
Meus navios   Número de disparos:




Seus navios   Número de disparos:
Meus navios
My Ships                                  Number of Shots Used:
                                          Número de disparos:
    0       1       2       3        4      5        6        7        8       9
                                 H 8051                   R 9891           W 1062
                        E 5125            L 7116 O 6000
A 9047 C 3080                    I 1481             S 1989        X 2106
                        F 1480 J      M 8944 P 7432        V 4392
                                 4712               T 2050        Y 5842
B 1829 D 9994
                        G 8212 K 6422 N 4128 Q 4110 U
                                                      8199        Z 7057


Seus navios
Your Ships                                Numberde disparos:
                                          Número of Shots Used:
    0       1       2       3        4      5        6        7        8       9
A                                                         R
        E       H                L              O                  V
B                                                         S                Y
        F       I       K        M               P                 W
C                                                         T                Z
        G       J                N              Q                  X
D                                                         U




                                                                           3A
Meus navios   Número de disparos:




Seus navios   Número de disparos:
Meus navios   Número de disparos:




Seus navios   Número de disparos:
Número de disparos:




                               Número de disparos:
      Meus navios




                               Seus navios




58                            Cópia autorizada somente para uso em sala de aula.
                           © 2011 Computer Science Unplugged (csunplugged.org)
Número de disparos:




                                                      Número de disparos:
         Meus navios




                                                      Seus navios




Cópia autorizada somente para uso em sala de aula.                          59
© 2011 Computer Science Unplugged (csunplugged.org)
Número de disparos:
     Número de disparos:
      Meus navios




                               Seus navios




60                            Cópia autorizada somente para uso em sala de aula.
                           © 2011 Computer Science Unplugged (csunplugged.org)
Número de disparos:
         Número de disparos:
          Meus navios




                                                      Seus navios




Cópia autorizada somente para uso em sala de aula.                           61
© 2011 Computer Science Unplugged (csunplugged.org)
Número de disparos:
     Número de disparos:
     Meus navios




                             Seus navios




62                            Cópia autorizada somente para uso em sala de aula.
                           © 2011 Computer Science Unplugged (csunplugged.org)
De que se trata tudo isso ?
       Computadores armazenam grandes quantidades de informação e precisam ser capazes de
       vasculhar essas informações rapidamente. Um dos maiores problemas de busca do mundo
       é tratado pelos motores de busca da internet, os quais devem pesquisar bilhões de páginas
       em uma fração de segundo. O dado informado ao computador para a pesquisa, tal como
       uma palavra, um número de código de barras ou o nome de um autor, é chamado de
       chave de busca.

       Computadores podem processar informações muito rapidamente e você poderia pensar
       que para encontrar algo eles deveriam simplesmente começar no início de onde os dados
       estão armazenados e procurar até a informação desejada ser encontrada. Isto é o que
       fizemos no jogo de busca linear. Entretanto, esse método é muito lento – até mesmo para
       os computadores. Por exemplo, suponha um supermercado que tenha 10 mil produtos
       diferentes em suas prateleiras. Quando um código de barras é lido numa compra, o
       computador deve procurar entre 10 mil números para encontrar o nome e o preço do
       produto. Mesmo que leve apenas um milésimo de segundo para checar cada código,
       seriam necessários 10 segundos para vasculhar toda a lista. Imagine a demora para
       processar as compras de uma família !

       Uma estratégia melhor é a busca binária. Nesse método, os números estão ordenados.
       Verificando o item do meio da lista identificará em qual metade a chave de busca está. O
       processo é repetido até o item ser encontrado. Retornando ao exemplo do supermercado,
       os 10 mil itens podem ser pesquisados em quatorze sondagens, levando em torno de
       duzentos milissegundos, quase imperceptível.

       Uma terceira estratégia para encontrar os dados se chama hashing. Nesta abordagem, a
       chave é manipulada para indicar exatamente onde encontrar a informação. Por exemplo,
       se a chave de busca for um número de telefone, você poderia somar todos os dígitos do
       número e pegar o resto da divisão da soma por 11. Nesse aspecto, uma chave de hash é
       parecida com os dígitos verificadores discutidos na Atividade 4 - porções de dados cujo
       valor depende do outro dado sendo processado. Em geral, o computador encontrará o que
       procura rapidamente. Há uma pequena chance de que diversas chaves levem ao mesmo
       local e, neste caso, o computador precisará procurar nestes locais até encontrar a
       informação pesquisada.

       Programas de computador geralmente usam alguma variante da estratégia de hashing para
       a busca, a menos que seja necessário que os dados estejam ordenados ou se não for
       possível aceitar respostas lentas em algumas circunstâncias.




Cópia autorizada somente para uso em sala de aula.                                           63
© 2011 Computer Science Unplugged (csunplugged.org)
Atividade 7
     O mais leve e o mais pesado—Algoritmos de
     Ordenação
     Sumário
     Os computadores são muitas vezes utilizados para colocar listas em algum tipo de ordem,
     por exemplo, nomes em ordem alfabética, compromissos ou e-mails por data, ou itens em
     ordem numérica. Classificar listas nos ajuda a encontrar as coisas rapidamente, e também
     facilita a identificação dos valores extremos. Se você classificar as notas de uma prova
     em ordem numérica, a nota mais baixa e a mais alta tornam-se evidentes.

     Se você usar o método errado, pode demorar muito tempo para ordenar uma lista grande,
     mesmo em um computador rápido. Felizmente, vários métodos rápidos de ordenação são
     conhecidos. Nesta atividade, as crianças descobrirão métodos diferentes para ordenação e
     verão como um método inteligente pode executar a tarefa muito mais rapidamente do que
     um método simples.

     Matérias correlacionadas

        Matemática: realização de pesagem.
     Habilidades
        Usar uma balança
        Ordenar
        Comparar
     Idades
        De 8 anos em diante
     Material
     Cada grupo de crianças precisará de:
        Conjuntos de 8 contêineres do mesmo tamanho, mas de pesos diferentes (ex: caixas
        de leite ou rolos de filme cheios de areia )
        Uma balança
        Folha de Atividade: Ordenando pesos (página 66)
        Folha de Atividade: Dividir e conquistar (página 67)




64                                                Cópia autorizada somente para uso em sala de aula.
                                               © 2011 Computer Science Unplugged (csunplugged.org)
O mais leve e o mais pesado
       Discussão
       Freqüentemente, os computadores devem ordenar listas de coisas. Pense em todas as
       situações nas quais colocar as coisas em ordem seja importante. O que aconteceria se
       estas coisas não estivessem em ordem ?

       Os computadores geralmente comparam apenas dois valores por vez. A atividade na
       próxima página usa essa restrição para dar as crianças uma idéia do que se trata.

       Atividade
1.     Divida as crianças em grupos.

2.     Cada grupo precisará de uma cópia da folha de atividade da página 66 e os seus próprios
       pesos e balanças.

3.     Peça às crianças para fazerem a atividade e, depois, discuta o resultado.




Cópia autorizada somente para uso em sala de aula.                                            65
© 2011 Computer Science Unplugged (csunplugged.org)
Folha de Atividade: Ordenando pesos
     Objetivo: Encontrar o melhor método para ordenação de um grupo de pesos
     desconhecidos

     Você precisará de: Areia ou água, 8 recipientes idênticos e um conjunto de
     balanças

     O que fazer:

     1.   Encher cada recipiente com uma quantidade diferente de areia ou água. Sele-o
          firmemente.

     2.   Misture-os de modo que você já não saiba a ordem dos pesos.

     3.   Encontre o menor peso. Qual é a maneira mais fácil de fazer isso ?

          Nota: Você só está autorizado a utilizar a balança para descobrir quanto pesa cada
          recipiente. Apenas dois pesos podem ser comparados ao mesmo tempo.

     4.   Escolha 3 pesos aleatoriamente e coloque-os na ordem do mais leve para o mais
          pesado usando somente a balança. Como você fez isso ? Qual é o número mínimo
          de comparações que você pode fazer ? Por quê ?

     5.   Agora coloque todos os objetos na ordem do mais leve ao mais pesado.

     Quando você achar que terminou, verifique sua ordenação pesando novamente
     cada par de objetos.

     Ordenação por Seleção

     Um método que o computador pode utilizar é chamado de ordenação por
     seleção, que funciona da seguinte forma. Primeiro, encontre o peso mais leve no
     conjunto e o coloque de lado. Em seguida, encontre o mais leve dos pesos
     restantes e o retire. Repita esse procedimento até que todos os pesos sejam
     removidos.




     Conte quantas comparações você fez.

Para os mais espertos: Mostre como você pode calcular matematicamente o número
    de comparações necessárias para ordenar 8 objetos. E para 9 objetos? E 20?




66                                               Cópia autorizada somente para uso em sala de aula.
                                              © 2011 Computer Science Unplugged (csunplugged.org)
Folha de Atividade: Dividir e Conquistar
       Quicksort
       O quicksort é muito mais rápido do que a ordenação por seleção, especialmente
       para listas grandes. De fato, é um dos melhores métodos conhecidos. Esta é a
       forma como o quicksort funciona.

       Escolha um dos objetos de forma aleatória, e coloque-o em um dos lados da
       balança. Agora compare cada um dos objetos restantes com ele. Coloque
       aqueles que são mais leves do lado esquerdo, o objeto escolhido no meio, e os
       mais pesados na direita. (Por acaso, você pode acabar com mais objetos de um
       lado do que do outro.) Escolha um dos grupos de objetos e repita esse
       procedimento. Faça o mesmo para o outro grupo. Lembre-se de manter aquele
       que você escolheu no centro.

       Continue repetindo este procedimento em relação aos grupos restantes até que
       nenhum grupo tenha mais do que um objeto. Assim que todos os grupos
       estiverem divididos e reduzidos a um único objeto, os objetos estarão, por fim,
       ordenados do mais leve ao mais pesado.




       Quantas comparações são efetuadas por este procedimento?

       Você deve achar que o quicksort é um método mais eficiente do que a ordenação
       por seleção a não ser que você tenha escolhido o peso mais leve ou o mais
       pesado para começar. Se você teve a sorte de ter escolhido o peso médio, você
       deve ter feito apenas 14 comparações, ao passo que são feitas 28 comparações
       na ordenação por seleção. De qualquer forma, o método quicksort nunca será
       pior do que qualquer ordenação por seleção e pode ser muito melhor !

Para os mais espertos: Se o quicksort acidentalmente sempre escolher o peso mais
leve, quantas comparações serão feitas ?

Cópia autorizada somente para uso em sala de aula.                                   67
© 2011 Computer Science Unplugged (csunplugged.org)
Variações e extensões
     Existem diversos métodos de ordenação. Você pode tentar ordenar os pesos através dos
     seguintes métodos.

     A ordenação por inserção remove cada objeto de um grupo desordenado e o insere na
     sua posição correta em numa lista crescente (veja a figura abaixo). A cada inserção, o
     grupo de objetos desordenados diminui e a lista ordenada aumenta até que, finalmente,
     toda a lista esteja ordenada. Jogadores de cartas muitas vezes usam esse método para
     ordenar as cartas em suas mãos.




     A ordenação por borbulhamento ou método da bolha (Bubble sort) percorre a lista
     diversas vezes trocando quaisquer objetos adjacentes que não estejam na ordem correta.
     A lista está ordenada assim que não ocorre mais nenhuma troca durante uma passagem
     pela lista. Este método não é muito eficiente, mas algumas pessoas o consideram mais
     fácil de compreender do que os outros métodos.




     O método de fusão (Mergesort) utiliza a técnica de “dividir e conquistar” para ordenar
     uma lista de elementos. Primeiro, divide-se a lista aleatoriamente em duas listas de
     tamanhos iguais (ou quase iguais, se houver um número ímpar de elementos). Cada uma
     das duas listas é ordenada e, em seguida, as listas são intercaladas entre si. É fácil mesclar
     duas listas ordenadas: basta retirar repetidamente o menor dos dois elementos que estão
     no início das duas listas. Na figura abaixo, os pesos de 40 e 60 gramas estão no início das
     listas. Portanto, o próximo elemento a ser adicionado é o peso de 40 gramas. Como
     devemos ordenar as listas menores ? Simples, basta usar o método de fusão ! Todas as
     listas serão finalmente divididas em elementos individuais. Portanto, não é preciso se
     perguntar quando parar.




68                                                   Cópia autorizada somente para uso em sala de aula.
                                                  © 2011 Computer Science Unplugged (csunplugged.org)
De que se trata tudo isso ?
       É muito mais fácil encontrar uma informação em uma lista ordenada. Listas telefônicas,
       dicionários e índices de livros utilizam a ordem alfabética, e a vida seria muito mais
       difícil se eles não o fizessem. Se uma lista de números (como uma lista de despesas) for
       ordenada, os pontos extremos são fáceis de ver porque eles estão no começo e no fim da
       lista. As duplicatas também são fáceis de encontrar porque acabam ficando juntas.

       Os computadores gastam muito tempo ordenando as coisas. Portanto, os cientistas da
       computação devem descobrir métodos rápidos e eficientes para fazer isto. Alguns dos
       métodos mais lentos tais como a ordenação por inserção, ordenação por seleção e método
       da bolha podem ser úteis em situações especiais, porém os métodos mais rápidos, a
       exemplo do quicksort, são geralmente utilizados.

       O método quicksort usa um conceito chamado recursão. Isso significa que você
       permanece dividindo uma lista em partes menores e, em seguida, realiza o mesmo tipo de
       ordenação em cada uma das partes da lista. Esta abordagem, em particular, é chamada de
       dividir e conquistar. A lista é dividida repetidamente até que se torne pequena o
       suficiente para resolver o problema (conquistar). No quicksort, as listas são divididas até
       que contenham apenas um elemento. É trivial ordenar um elemento ! Embora isto pareça
       muito demorado, na prática, é drasticamente mais rápido do que os outros métodos.




Cópia autorizada somente para uso em sala de aula.                                             69
© 2011 Computer Science Unplugged (csunplugged.org)
Soluções e dicas
4.   A melhor maneira de encontrar o peso mais leve é ir, de objeto em objeto, marcando qual
     o mais leve até aquele ponto. Ou seja, comparar dois objetos e ficar com o mais leve.
     Então, compare com outro, ficando com o mais leve da comparação. Repita esse
     procedimento até ter utilizado todos os objetos.

5.   Compare os pesos na balança. Isso pode ser facilmente realizado com três comparações e,
     às vezes, duas bastam—se as crianças perceberem que a operação de comparação é
     transitiva (Isto é, se A é mais leve que B e B é mais leve que C, então A tem de ser mais
     leve que C).

     Especialistas:
     Esse é um atalho para totalizar o número de comparações da ordenação por seleção.

     Para encontrar o menor entre dois objetos, você precisa de uma comparação, três objetos
     precisam de duas, quatro precisam de três e assim por diante. Ordenar oito objetos com a
     ordenação por seleção requer sete comparações para encontrar o primeiro, seis para
     encontrar o próximo, cinco para o próximo e assim sucessivamente. Isso nos fornece:

     7 + 6 + 5 + 4 + 3 + 2 + 1 = 28 comparações.

     n objetos precisariam de 1 + 2 + 3 + 4 +… + n – 1 comparações para serem ordenados.

     Totalizar esses números é fácil se os reagruparmos.

     Por exemplo, para somar os números 1 + 2 + 3 + … + 20, os reagrupamos como

     (1 + 20) + (2 + 19) + (3 + 18) + (4 + 17) + (5 + 16) +

     (6 + 15) + (7 + 14) + (8 + 13) + (9 + 12) + (10 + 11)

     = 21 × 10

     = 210

     Em geral, a soma 1 + 2 + 3 + 4 … + n – 1 = n(n – 1)/2.




70                                                  Cópia autorizada somente para uso em sala de aula.
                                                 © 2011 Computer Science Unplugged (csunplugged.org)
Atividade 8
       Seja o mais rápido !—Redes de Ordenação
       Sumário
       Mesmo os computadores sendo rápidos, há um limite na sua velocidade de resolução de
       problemas. Uma forma de acelerar as coisas é usar vários computadores para solucionar
       diferentes partes de um problema. Nesta atividade, usamos as redes de ordenação, as
       quais efetuam várias comparações de ordenação ao mesmo tempo.

       Matérias correlacionadas
          Matemática: Números: maior que, menor que.
       Habilidades
          Comparar
          Ordenar
          Desenvolver algoritmos
          Cooperação para resolução de problemas
       Idades
          De 7 anos em diante
       Material
       Esta é uma atividade de campo em grupo.
           Giz
           Dois conjuntos de seis cartões
           Faça uma cópia da folha “Original para fotocópia: Redes de ordenação” (página 73)
           em um cartão e recorte
           Cronômetro




Cópia autorizada somente para uso em sala de aula.                                        71
© 2011 Computer Science Unplugged (csunplugged.org)
Redes de Ordenação
     Antes dessa atividade, utilize giz para desenhar essa rede em uma área externa.




     Instruções para as crianças
     Esta atividade lhe mostrará como os computadores colocam números aleatórios em ordem
     utilizando o que se chama de rede de ordenação.

1.   Organizem-se em grupos de seis. Apenas uma equipe de cada vez pode utilizar a rede.

2.   Cada membro da equipe pega um cartão numerado.

3.   Cada membro fica em um quadrado no lado esquerdo (Entrada) da rede. Seus números
     devem estar embaralhados.

4.   Você se move ao longo das linhas marcadas e, ao chegar em um círculo, você deve
     esperar outra pessoa chegar.

5.   Quando outro membro da equipe chegar ao círculo no qual você está, vocês comparam
     suas cartas. A pessoa com o menor número segue o caminho da esquerda. Se você tiver o
     maior número na sua carta, tome o caminho à direita.

6.   Você estará na ordem correta quando chegar ao outro extremo da rede.

     Se uma equipe cometer um erro, as crianças devem recomeçar. Verifique se você
     compreendeu o funcionamento de um nó (círculo) da rede, no qual o menor valor vai para
     a esquerda e o outro valor vai para a direita. Por exemplo:




72                                                 Cópia autorizada somente para uso em sala de aula.
                                                © 2011 Computer Science Unplugged (csunplugged.org)
Original para fotocópia – Redes de Ordenação



                             1                        2
                             3                        4
                             5                        6

                      156                             221
                      289                             314
                      422                             499


Cópia autorizada somente para uso em sala de aula.          73
© 2011 Computer Science Unplugged (csunplugged.org)
Variações
1.   Quando as crianças estiverem familiarizadas com a atividade, use um cronômetro para
     determinar quanto tempo cada equipe leva para chegar ao final da rede.

2.   Use cartões com números maiores (por exemplo, os cartões de três dígitos da fotocópia-
     mestre).

3.   Elabore cartões com números maiores, os quais necessitarão de maior esforço para serem
     comparados, ou use palavras e as compare por ordem alfabética.

     Atividades de Extensão
1.   O que acontece se o menor for para a direita ao invés de ir para a esquerda e vice-versa ?
     (Os números são ordenados em ordem inversa).

     Será que a rede funciona se for utilizada ao contrário ? (Ela não funcionará
     necessariamente e as crianças devem ser capazes de encontrar um exemplo de uma
     entrada que saia na ordem errada.)

2.   Tente desenhar redes maiores ou menores. Por exemplo, aqui está uma rede que ordena
     apenas três números. As crianças devem tentar chegar a esta
     rede por conta própria.

3.   Abaixo estão duas redes diferentes que ordenam quatro
     entradas. Qual é a mais rápida ? (A segunda. Porque a
     primeira exige que todas as comparações sejam realizadas,
     uma após a outra. A segunda tem algumas comparações sendo realizadas ao mesmo
     tempo. A primeira rede é um exemplo de processamento em série enquanto que a segunda
     utiliza processamento paralelo para executar mais rápido.




4.   Tente fazer uma rede de ordenação maior.

5.   As redes também podem ser usadas para encontrar o
     valor mínimo ou máximo das entradas. Por exemplo,
     aqui está uma rede com oito entradas e a única saída
     conterá o menor dos fatores da entrada (Os outros
     valores serão bloqueados na rede).

6.   Quais procedimentos do cotidiano podem ou não ser
     acelerados utilizando paralelismo ? Por exemplo,
     cozinhar uma refeição seria muito mais lento
     utilizando apenas uma panela para cozinhar porque os
     itens teriam de ser cozidos um após o outro. Quais
     tarefas podem ser completadas mais rapidamente empregando mais pessoas? Quais
     tarefas não podem ?
De que se trata tudo isso ?
       Quanto mais usamos os computadores, queremos que estes processem as informações o
       mais rápido possível.

       Um jeito de aumentar a velocidade de um computador é escrever programas que usam
       menos passos de computação (como mostrado nas Atividades 6 e 7).

       Outra maneira de resolver problemas mais rapidamente é ter alguns computadores
       trabalhando em diferentes partes de uma mesma tarefa ao mesmo tempo. Por exemplo, na
       rede de ordenação de seis números, apesar de haver um total de 12 comparações para
       ordenar os números, até 3 comparações são feitas simultaneamente. Isso significa que o
       tempo requerido será o mesmo necessário para apenas 5 passos de comparação. Esta rede
       paralela ordena a lista mais que duas vezes mais rápido do que um sistema que realiza
       apenas uma comparação por vez.

       Nem todas as tarefas podem ser completadas mais rapidamente utilizando computação
       paralela. Fazendo uma analogia, imagine uma pessoa cavando uma vala de 10 metros de
       comprimento. Se 10 pessoas cavarem um metro da vala cada uma, a tarefa seria
       completada muito mais rapidamente. Por outro lado, a mesma estratégia não poderia ser
       utilizada para um buraco de 10 metros de profundidade - o segundo metro não é acessível
       até que o primeiro metro tenha sido cavado. Os cientistas da computação continuam
       ativamente tentando encontrar os melhores métodos para dividir problemas de forma que
       estes possam ser resolvidos por computadores trabalhando em paralelo.




Cópia autorizada somente para uso em sala de aula.                                         75
© 2011 Computer Science Unplugged (csunplugged.org)
Atividade 9
     A Cidade Enlameada—Árvores Geradoras
     Mínimas
     Sumário
     Nossa sociedade é conectada por muitas redes: redes telefônicas, redes de abastecimento,
     redes de computadores e redes rodoviárias. Para uma determinada rede, há geralmente
     algumas escolhas sobre onde estradas, cabos ou ligações de rádio podem ser colocados.
     Temos de encontrar formas eficientes de conectar esses objetos a uma rede.

     Matérias correlacionadas
        Matemática: Formas e espaço: Encontrar os caminhos mais curtos em um mapa.
     Idades
        De 9 anos em diante.
     Habilidades
        Resolução de problemas
     Material
     Cada criança precisará de:
        Folha de Atividade: O problema da Cidade Enlameada (página 78).
        Fichas ou quadrados de cartolina (cerca de 40 fichas por criança).




76                                                Cópia autorizada somente para uso em sala de aula.
                                               © 2011 Computer Science Unplugged (csunplugged.org)
A Cidade Enlameada
       Introdução
       Esta atividade lhe mostrará como os computadores são usados para encontrar as melhores
       soluções para os problemas da vida real tais como conectar linhas elétricas entre casas. As
       crianças devem usar a planilha da página 78, que explica o problema da “Cidade
       Enlameada”.

       Discussão
       Compartilhe as soluções encontradas pelas crianças. Quais estratégias foram utilizadas ?

       Uma boa estratégia para encontrar a melhor solução é começar com um mapa vazio e,
       gradualmente, adicionar os pavimentos até que todas as casas estejam conectadas,
       acrescentando os caminhos em ordem crescente de comprimento, sem conectar casas que
       já estejam ligadas. Diferentes soluções podem ser encontradas se você mudar a ordem na
       qual os caminhos de mesmo comprimento são adicionados. Duas soluções possíveis são
       mostradas abaixo.




       Outra estratégia consiste em iniciar com todos os caminhos pavimentados e, depois,
       remover os caminhos que você não precisa. No entanto, isso requer muito mais esforço.

       Onde você encontraria redes na vida real ?

       Os cientistas da computação chamam as representações dessas redes de “grafos”. Redes
       reais podem ser representadas por um grafo para resolver problemas, como projetar a
       melhor rede de estradas entre cidades ou rotas de vôos no país.

       Há também muitos outros algoritmos que podem ser aplicados aos grafos, tais como
       encontrar a distância mais curta entre dois pontos, ou o percurso mais curto que passa por
       todos os pontos.




Cópia autorizada somente para uso em sala de aula.                                            77
© 2011 Computer Science Unplugged (csunplugged.org)
Folha de Atividade: O problema da cidade
enlameada
     Era uma vez uma cidade que não tinha estradas. Andar pela cidade era
     particularmente difícil depois de chuva intensa porque a terra se tornava muito
     enlameada, o que fazia com que carros ficassem presos na lama e as pessoas
     sujassem suas botas. O prefeito da cidade decidiu que algumas das ruas
     deveriam ser pavimentadas, mas ele não queria gastar mais dinheiro do que o
     necessário, pois a cidade também precisava construir uma piscina. Portanto, o
     prefeito especificou duas condições:

     1.   Um número suficiente de ruas devem ser pavimentadas de modo que seja
          possível para qualquer pessoa ir de sua casa para a casa de qualquer
          pessoa utilizando apenas estradas pavimentadas, e

     2.   A pavimentação deve custar o mais barato possível.

     Aqui está o desenho da cidade. O número de pedras de pavimentação entre cada
     casa representa o custo de pavimentação dessa via. Encontre o melhor percurso
     que ligue todas as casas, mas utilize a menor quantidade possível de pedras de
     pavimentação.

     Quais estratégias você usou para resolver o problema ?




78                                             Cópia autorizada somente para uso em sala de aula.
                                            © 2011 Computer Science Unplugged (csunplugged.org)
Variações e extensões
       Está é outra forma de representar as cidades e as estradas:




       As casas são representadas por círculos, as estradas enlameadas por linhas, e o
       comprimento de uma estrada é dado pelo número ao lado da linha.

       Os cientistas da computação e matemáticos usam freqüentemente este tipo de diagrama
       para representar esses problemas. Eles o chamam de grafo.

       Elabore alguns de seus próprios problemas do tipo Cidade Enlameada e teste-os com seus
       amigos.

       Você pode descobrir uma regra para descrever quantas estradas ou conexões são
       necessárias para obter a melhor solução ? Isso depende de quantas casas existem na
       cidade ?




Cópia autorizada somente para uso em sala de aula.                                          79
© 2011 Computer Science Unplugged (csunplugged.org)
De que se trata tudo isso ?
     Suponha que você esteja projetando a forma como um serviço tal como eletricidade, gás
     ou água deva ser entregue a uma nova comunidade. Uma rede de fios ou canos é
     necessária para conectar todas as casas à companhia prestadora do serviço. Toda casa
     precisa estar conectada à rede em algum ponto, mas a rota utilizada pela companhia para
     chegar até a casa não interessa realmente; apenas importa que essa rota exista.

     A tarefa de projetar uma rede com um comprimento total mínimo é chamado de problema
     da Árvore Geradora Mínima (do inglês, minimal spanning tree).

     Árvores geradoras mínimas não são úteis apenas em redes de gás e eletricidade; elas
     também nos ajudam a resolver problemas em redes de computadores, redes telefônicas,
     de oleodutos, e de rotas aéreas. No entanto, ao decidir as melhores rotas para as pessoas
     viajarem, você tem de levar em conta a forma que tornará a viagem mais conveniente
     para o viajante, bem como quanto irá custar. Ninguém quer passar horas em um avião
     utilizando a maior rota para chegar a outro país apenas porque é a mais barata. O
     algoritmo da cidade enlameada pode não ser muito útil para essas redes, porque ele
     simplesmente minimiza o comprimento total das estradas ou rotas de vôo.

     Árvores geradoras mínimas também são úteis para resolução de outros problemas
     envolvendo grafos, tais como o “Problema do Caixeiro Viajante”, que tenta encontrar a
     rota mais curta que visita todos os pontos da rede.

     Existem algoritmos eficientes (métodos) para resolver problemas de árvore geradora
     mínima. Um método simples, que fornece uma solução ótima, consiste em começar sem
     conexões, e adicioná-las em ordem crescente de tamanho, acrescentando apenas as
     conexões que juntem partes da rede que ainda não foram conectadas. Esse método é
     chamado de algoritmo de Kruskal, em referência a J.B. Kruskal, que o publicou em 1956.

     Para muitos problemas em grafos, incluindo o “Problema do Caixeiro Viajante”, os
     cientistas da computação ainda procuram encontrar métodos que achem a melhor solução
     possível.


     Soluções e dicas
     Variações e extensões (página 79)
     Quantas estradas ou conexões são necessárias se houver n casas na cidade ? Acontece que
     uma solução ótima terá sempre exatamente n-1 conexões, pois isso é sempre suficiente
     para conectar n casas, e acrescentando uma casa a mais seria criar rotas alternativas
     desnecessárias entre as casas.




80                                                Cópia autorizada somente para uso em sala de aula.
                                               © 2011 Computer Science Unplugged (csunplugged.org)
Atividade 10
       O Jogo da Laranja— Roteamento e Bloqueios
       nas Redes




       Sumário
       Quando muitas pessoas usam um recurso (carros usando estradas, ou mensagens
       chegando pela internet), existe a possibilidade de bloqueio (deadlock). Um jeito de
       trabalhar cooperativamente é necessário para evitar que isso aconteça.

       Matérias correlacionadas
          Matemática: Desenvolvimento de raciocínio e lógica
       Habilidades
          Resolução cooperativa de problemas
          Raciocínio lógico
       Idades
          De 9 anos em diante
       Material
       Cada criança precisará de :
          Duas laranjas ou bolas de tênis
          Etiqueta com letra




Cópia autorizada somente para uso em sala de aula.                                           81
© 2011 Computer Science Unplugged (csunplugged.org)
O Jogo da Laranja
       Introdução
       Esse é um jogo de resolução cooperativa de problemas. O objetivo é cada pessoa terminar
       segurando as laranjas etiquetadas com sua própria letra.
1. Grupos de cinco ou mais crianças sentam formando um círculo.

2. A cada criança associa-se uma letra do alfabeto. Há duas laranjas com a letra de cada
   criança etiquetada nelas, à exceção de uma criança, que tem apenas uma laranja
   correspondente à sua letra para assegurar que haverá sempre uma mão vazia.

3. Distribua as laranjas aleatoriamente para as crianças no círculo. Cada criança fica com duas
   laranjas, exceto a criança que tem apenas uma com sua letra. (Nenhuma criança deve ficar
   com uma laranja com sua letra).

4. As crianças passam as laranjas entre si até alguém pegar a laranja etiquetada com
     sua letra do alfabeto. Você deve seguir duas regras:

     a) Apenas uma laranja deve estar em cada mão.

     b) Apenas uma laranja pode ser passada para uma mão vazia de um vizinho imediato no
        círculo (Uma criança pode passar uma das duas laranjas ao seu vizinho).

       As crianças rapidamente descobrirão que, se elas forem “avarentas” (ficarem com suas
       próprias laranjas assim que passarem por suas mãos), o grupo não será capaz de atingir
       sua meta. Isso pode ser necessário para enfatizar que indivíduos não “ganham” o jogo, e
       que o quebra-cabeças é resolvido quando todos estão com suas laranjas.

       Discussão
       Quais estratégias as crianças usaram para resolver o problema ?

       Onde na vida real você experimentou uma situação de bloqueio (deadlock) ? Existem
       alguns exemplos como engarrafamento ou tentar passar com muita gente por uma porta
       ao mesmo tempo.

       Atividades de Extensão
       Tente realizar as atividades seguintes com um círculo
       maior ou menor.

         •   Faça as crianças criarem novas regras.

         •   Conduza a atividade sem falar nada.

         •   Tente configurações diferentes como sentar em
             linha ou ter mais que dois vizinhos para algumas
             crianças. Algumas sugestões são mostradas aqui.



82                                                    Cópia autorizada somente para uso em sala de aula.
                                                   © 2011 Computer Science Unplugged (csunplugged.org)
De que se trata tudo isso ?
       Roteamento e bloqueios são problemas existentes em diversas redes tais como em redes
       de estradas, telefonia e computação. Os engenheiros gastam muito tempo tentando
       descobrir como resolver esses problemas – e como projetar redes que tornam esses
       problemas mais fáceis de serem resolvidos.

       Roteamento, congestionamento e bloqueios podem provocar sérios problemas em
       diversas redes. Pense no trânsito no horário de pico (rush) ! Em Nova Iorque, por
       diversas vezes, o tráfego nas ruas tornou-se tão congestionado que causou um bloqueio:
       ninguém consegue mover seu carro. Certas vezes, quando os computadores de empresas
       (como bancos) estão “fora do ar”, o problema é causado por um bloqueio na rede de
       comunicação. O projeto de redes com roteamento facilitado e congestão minimizada é um
       problema difícil enfrentado por diversos tipos de engenheiros.

       Por vezes, mais de uma pessoa requer o mesmo dado ao mesmo tempo. Se um dado
       (como o saldo bancário de um usuário) está sendo atualizado, é importante “trancá-lo”
       durante a atualização. Se ele não for trancado, outra pessoa poderia atualizá-lo ao mesmo
       tempo e o saldo poderia ser gravado incorretamente. Entretanto, se o trancamento sofrer
       interferência do trancamento de outro item, pode ocorrer um bloqueio.

       Um dos avanços mais excitantes no projeto de computadores é o advento da computação
       paralela, na qual centenas ou milhares de processadores de computadores pessoais são
       combinados (em uma rede) para formar um único e poderoso computador. Muitos
       problemas, como o Jogo da Laranja, devem ser jogados continuamente nessas redes
       (porém, bem mais rápido) para que esses computadores paralelos trabalhem.




Cópia autorizada somente para uso em sala de aula.                                          83
© 2011 Computer Science Unplugged (csunplugged.org)
Parte III
Dizendo aos Computadores o que
     fazer — Representando
         Procedimentos
Dizendo aos Computadores o Que
       Fazer
       Computadores seguem instruções — milhões de instruções por segundo. Para dizer a um
       computador o que fazer, tudo que você precisa é dar as instruções corretas. Mas isso não
       é tão fácil quanto parece !

       Quando recebemos instruções usamos o senso comum para interpretar os seus
       significados. Se alguém diz “atravesse a porta”, ele não quer dizer que você tenha que se
       atirar contra a porta— quer dizer que você deve ir até a porta e, se necessário, abri-la
       antes de passar ! Os computadores são diferentes. Em verdade, quando eles estão
       conectados a robôs móveis, você precisa tomar precauções de segurança para evitar que
       eles causem danos e perigo por interpretar as instruções literalmente— como tentar
       atravessar portas. Lidar com algo que obedece instruções literalmente, sem “pensar”,
       requer prática.

       As duas atividades nesta seção nos fornecem uma idéia de como é se comunicar com
       máquinas que obedecem literalmente, usando um conjunto fixo de instruções.

       A primeira atividade nos ensinará sobre uma “máquina” que os computadores usam para
       reconhecer palavras, números ou conjuntos de símbolos com os quais o computador
       trabalha. Tais “máquinas” são chamadas de Autômatos de Estados Finitos.

       A segunda atividade nos mostra como podemos nos comunicar com computadores. Um
       bom programador deve aprender como dizer a um computador o que fazer usando um
       conjunto fixo de instruções que são interpretadas literalmente. A lista de instruções é o
       programa. Existem várias liguagens de programação diferentes que um programador pode
       escolher para escrever essas instruções, mas usaremos uma linguagem simples que pode
       ser usada sem um computador.




Cópia autorizada somente para uso em sala de aula.                                            85
© 2011 Computer Science Unplugged (csunplugged.org)
Atividade 11
Caça ao Tesouro—Autômatos de Estados
Finitos
Sumário
Freqüentemente programas de computador precisam processar uma sequência de
símbolos como letras ou palavras em um documento, ou até mesmo o texto de outro
programa. Cientistas da computação freqüentemente usam autômatos de estados finitos
para isso. Um Autômato de Estados Finitos (AEF) segue um conjuto de instruções para
verificar se o computador reconhecerá a palavra ou conjunto de símbolos. Trabalharemos
com algo equivalente a um AEF—mapas do tesouro!

Matérias correlacionadas
   Matemática: Desenvolvimento lógico e raciocínio—usar palavras e símbolos para
   descrever e seguir padrões
   Estudos sociais
   Português
Habilidades
   Leitura de mapas simples
   Reconhecimento de padrões
   Lógica
   Seguir instruções
Idades
   A partir de 9 anos
Material
Você precisará de:
    Um conjunto de cartas de ilha (as instruções devem ficar escondidas de quem estiver
    tentando desenhar o mapa!)
    Faça uma cópia das Cartas da Ilha (página 92 em diante) e recorte-as.
    Dobre na linha pontilhada e cole, de modo que, a frente das cartas tenha o nome da
    ilha, e o fundo tenha as instruções.
Cada criança precisará de:
    Folha de Atividade: Encontre o Caminho para as Riquezas da Ilha do Tesouro (pág.
    91)
    Caneta ou lápis
Existem atividades opcionais de extensão para as quais as crianças precisarão de:
    Folha de Atividade: Ilhas do Tesouro (pág. 97)
    Folha de Atividade: O Misterioso Jogo da Moeda (pág. 98)
Ilha do Tesouro
       Introdução
       Seu objetivo é encontrar a Ilha do Tesouro. Navios piratas amigos navegam por um
       conjunto fixo de rotas entre as ilhas em uma parte do mundo, oferecendo carona aos
       viajantes. Cada ilha possui dois navios de partida, A e B, que você pode escolher para
       viajar. Você precisa encontrar o melhor caminho para a Ilha do Tesouro. Em cada ilha na
       qual chegar, você pode escolher um dos navios A ou B (não ambos). A pessoa na ilha lhe
       dirá para onde vai o navio, mas os piratas não têm um mapa de todas as ilhas disponíveis.
       Use seu mapa para saber onde você está indo e em quais navios você já viajou.

       Demonstração
       (Nota: A atividade usará um mapa diferente.)

       Usando um quadro ou projetor, desenhe o diagrama das três ilhas como abaixo:




       Copie as três cartas das próximas duas páginas e dê uma carta a cada criança. Note que as
       rotas nessas cartas são diferentes daquelas na atividade principal.

       Começando da Ilha dos Piratas, escolha o navio A. A criança deve direcioná-lo para a
       Baía do Naufrágio. Anote a rota no mapa. Na Baía do Naufrágio, escolha o navio A
       novamente. Você voltará a Ilha dos Piratas. Anote isso no mapa. Agora escolha o navio
       B. Anote isso no mapa. Essa rota vai para a Ilha dos Mortos, onde você ficará preso !

       Seu mapa final deverá estar assim:




Cópia autorizada somente para uso em sala de aula.                                           87
© 2011 Computer Science Unplugged (csunplugged.org)
Cartas para a atividade de demonstração




                                       A
     A →
                                       →

                                       B
     B →
                                       →




88                              Cópia autorizada somente para uso em sala de aula.
                             © 2011 Computer Science Unplugged (csunplugged.org)
Cartas para a atividade de demonstração




       Nenhum navio deixa a
         Ilha dos Mortos




Cópia autorizada somente para uso em sala de aula.    89
© 2011 Computer Science Unplugged (csunplugged.org)
Atividade
     Escolha sete crianças para serem as “ilhas”. As crianças segurarão as cartas identificando
     suas ilhas, com as instruções secretas no verso. Posicione-as aleatoriamente pela sala. O
     restante das crianças ficará com mapas em branco e terão que navegar da Ilha dos Piratas
     para a Ilha do Tesouro, marcando isso cuidadosamente em seus mapas. (Uma boa prática
     é enviar uma criança por vez para que elas não consigam ouvir as rotas de antemão.)

     Os primeiros a terminar devem tentar encontrar mais de uma rota.

     O mapa completo é o seguinte:




     Discussão
     Qual é a rota mais rápida ? Qual seria uma rota muito lenta ? Algumas rotas podem ter
     laços (loops). Você pode encontrar um exemplo disso ? (Por exemplo, BBBABAB e
     BBBABBABAB, ambos chegam a Ilha do Tesouro.)




90                                                 Cópia autorizada somente para uso em sala de aula.
                                                © 2011 Computer Science Unplugged (csunplugged.org)
Folha de Atividade: Encontre o caminho para as
riquezas da Ilha do Tesouro




Cópia autorizada somente para uso em sala de aula.    91
© 2011 Computer Science Unplugged (csunplugged.org)
Cartas das Ilhas (1/4)




     A →                                A →

     B →                                B →




92                          Cópia autorizada somente para uso em sala de aula.
                         © 2011 Computer Science Unplugged (csunplugged.org)
Cartas das Ilhas (2/4)




             A →                                      A →

             B →                                      B →




Cópia autorizada somente para uso em sala de aula.          93
© 2011 Computer Science Unplugged (csunplugged.org)
Cartas das Ilhas (3/4)




     A →                                A →

      B →                               B →




94                          Cópia autorizada somente para uso em sala de aula.
                         © 2011 Computer Science Unplugged (csunplugged.org)
Cartas das Ilhas (4/4)




        Parabéns!!!




Cópia autorizada somente para uso em sala de aula.    95
© 2011 Computer Science Unplugged (csunplugged.org)
Autômatos de Estados Finitos
     Outra maneira de desenhar um mapa seria:




     As ilhas são representadas por círculos numerados, e a ilha final (com o tesouro) tem dois
     círculos. Quais rotas podemos usar para chegar a última ilha ?

     Nota: o mapa (a) termina no círculo duplo (ilha 2) somente se a sequência tem um
     numero ímpar de As (por exemplo, AB, BABAA, ou AAABABA).

     O mapa (b) só alcança o círculo duplo com uma sequência alternada de As e Bs (AB,
     ABAB, ABABAB, ...).

     O mapa (c) requer que a sequência contenha no mínimo um B (as únicas sequências que
     não servem são A, AA, AAA, AAAA, ...).




96                                                 Cópia autorizada somente para uso em sala de aula.
                                                © 2011 Computer Science Unplugged (csunplugged.org)
Folha de Atividade: Ilhas do Tesouro
Você é capaz de esconder bem o seu tesouro ? Você pode fazer um mapa do tesouro
bem difícil ? É a hora de fazer seu próprio mapa !

1.    Esta atividade é uma versão mais complicada da idéia anterior para
      representação de um mapa. De fato, esse mapa é igual ao usado no exercício
      anterior. Cientistas da computação usam esse método simples e rápido para
      projetar rotas que sigam um determinado padrão.




       Seguindo esse exemplo, desenhe seu próprio mapa para visualizar facilmente as
       rotas de viagem dos navios piratas. Depois, crie os mapas a serem completados
       e as cartas de ilha. Qual é a sequência mais eficiente de rotas para alcançar a
       sua Ilha do Tesouro ?

2.    Seus amigos conseguem seguir seu mapa sem problemas ? Dê a eles uma
      sequência de As e Bs e verifique se eles conseguem chegar à ilha correta. Você
      pode criar diversos jogos e quebra-cabeças baseados na idéia de autômatos de
      estados finitos.

3.    Aqui temos uma maneira de construir frases através da escolha de caminhos
      aleatórios do mapa, anotando as palavras encontradas.




       Agora, tente fazer o mesmo. Quem sabe você cria uma história bem engraçada !


Cópia autorizada somente para uso em sala de aula.                                  97
© 2011 Computer Science Unplugged (csunplugged.org)
Folha de Atividade: O Misterioso Jogo da
Moeda
   Alguns amigos baixaram um jogo na Internet no qual um robô jogava uma
   moeda e eles deveriam adivinhar se sairia cara ou coroa. No começo o jogo
   parecia muito fácil. Eles tinham, no mínimo, 50% de chances de ganhar—ou
   melhor, eles achavam que tinham ! Após certo tempo, eles começaram a
   desconfiar. Parecia haver um padrão nos resultados das moedas. O jogo foi
   manipulado ? Certamente não ! Eles decidiram investigar. João anotou os
   resultados de suas próximas tentativas no jogo e eles encontraram o seguinte:
   (c = cara, o = coroa)

   c   c   o   c   c   o   c   c   c o o c c c c o o c o o o c c c c c o c c c
   o   o   o   c   c   c   o   o   o c c c c c c o o c o o o o o c o o c o o o
   c   c   c   o   o   c   c   c   o c c c c c c c c c o o c c c o o o o c c c
   c   c   o   o   o   o   o   o   o

   Você consegue identificar um padrão previsível ?

   Existe um ‘mapa’ bem simples que descreve a sequência dos resultados das
   moedas. Veja se você consegue descobri-lo. (Dica: esse mapa tem somente
   quatro ‘ilhas’)
De que se trata tudo isso ?
       Autômatos de estados finitos são usados na Ciência da Computação para ajudar um
       computador a processar uma sequência de caracteres ou de eventos.

       Um exemplo simples é quando você liga para algum lugar e escuta a mensagem “Tecle 1
       para isso... Tecle 2 para aquilo… Tecle 3 para falar com um dos atendentes.” As teclas
       pressionadas são entradas para um autômato de estados finitos do outro lado do telefone.
       O diálogo pode ser bem simples ou muito complicado. Algumas vezes, você fica andando
       em círculos porque existe um laço específico no autômato. Se isso ocorre, então é um erro
       no projeto do sistema — e isso pode ser extremamente frustrante para quem liga!

       Outro exemplo é quando você saca dinheiro no caixa eletrônico do banco. O programa no
       computador do caixa guia você através de uma sequência de eventos. Dentro do
       programa, todas as possíveis sequências estão guardadas como um autômato de estados
       finitos. Toda tecla pressionada leva o autômato a um novo estado. Alguns dos estados
       têm instruções para o computador como “libere R$100,00 em dinheiro” ou “Imprima um
       extrato” ou “Ejete o cartão”.

       Alguns programas de computador lidam realmente com frases em português usando
       mapas como os da página 97. Eles podem tanto gerar quanto processar frases digitadas
       pelos usuários. Nos anos sessenta, um cientista da computação escreveu um programa
       famoso chamado “Eliza” (em referência à Eliza Dolittle) que conversava com pessoas. O
       programa fingia ser um psicoterapeuta e fazia perguntas do tipo : “Fale sobre a sua
       família” e “Prossiga”. Embora o programa não “entendesse” nada, era suficientemente
       convincente—e seus usuários humanos eram suficientemente ingênuos—para que certas
       pessoas acreditassem estar conversando com um psicoterapeuta humano.

       Embora os computadores não entendam muito bem a linguagem natural, eles podem
       rapidamente processar linguagens artificiais. Um tipo importante de linguagem artificial é
       a linguagem de programação. Os computadores usam autômatos de estados finitos para
       ler programas e traduzi-los para a forma elementar de instruções do computador, as quais
       podem ser “executadas” diretamente pelo computador.




Cópia autorizada somente para uso em sala de aula.                                            99
© 2011 Computer Science Unplugged (csunplugged.org)
Soluções e dicas
      O Misterioso Jogo da Moeda (pág. 98)
      O misterioso jogo da moeda usa o seguinte mapa para jogar as moedas:




      Se você seguir esse mapa, verá que as duas primeiras de cada três moedas jogadas
      produzem o mesmo resultado.




100                                                Cópia autorizada somente para uso em sala de aula.
                                                © 2011 Computer Science Unplugged (csunplugged.org)
Atividade 12
Seguindo Instruções—Linguagens de Programação
       Sumário
       Os computadores são geralmente programados através de uma “linguagem”, que é um
       vocabulário limitado de instruções que devem ser obedecidas. Uma das coisas mais
       frustrantes sobre programar é que os computadores sempre obedecem às instruções ao pé
       da letra, mesmo se estas produzirem um resultado louco. Essa atividade fornece às
       crianças alguma experiência sobre esse aspecto da programação.

       Matérias correlacionadas
          Português: comunicação
       Habilidades
          Dar e seguir instruções.
       Idades
          A partir de 7 anos.
       Material
       Você precisará de:
          Cartas com figuras, como as mostradas na próxima página.
       Cada criança precisará de:
          Papel, caneta e régua




Cópia autorizada somente para uso em sala de aula.                                      101
© 2011 Computer Science Unplugged (csunplugged.org)
102      Cópia autorizada somente para uso em sala de aula.
      © 2011 Computer Science Unplugged (csunplugged.org)
Seguindo Instruções
       Introdução
       Discuta se é adequado que as pessoas sigam instruções à risca. Por exemplo, o que
       aconteceria se você apontasse para uma porta fechada e dissesse “Atravesse a porta” ?

       Os computadores funcionam seguindo listas de instruções, e eles fazem exatamente o que
       as instruções dizem—mesmo se estas não fizerem o menor sentido !

       Exemplo de Demonstração
       Veja se as crianças conseguem desenhar a figura a partir dessas instruções.

1.     Desenhe um ponto no centro da sua página.

2.     Começando da ponta superior esquerda da página, trace uma linha reta passando pelo
       ponto até a ponta inferior direita.

3.     Começando da ponta inferior esquerda da página, trace uma linha reta passando pelo
       ponto até a ponta superior direita.

4.     Escreva seu nome no triângulo no centro do lado esquerdo da página.



       O resultado deve ser algo do tipo:




Cópia autorizada somente para uso em sala de aula.                                          103
© 2011 Computer Science Unplugged (csunplugged.org)
Atividades
      Escolha uma criança e dê a ela uma figura (como os exemplos da página 102). A criança
      descreve a figura para a classe reproduzir. As crianças podem fazer perguntas para
      esclarecer as instruções. O objetivo é ver o quão rápido e fielmente o exercício pode ser
      completado.

      Repita o exercício, mas, dessa vez, as crianças não poderão fazer perguntas. É melhor
      usar uma figura mais simples para esse exercício, pois as crianças podem se perder muito
      rápido.

      Agora, esconda a criança que fornece as instruções através de uma tela e tente o
      exercício, sem permitir perguntas, de tal forma que a comunicação seja feita somente
      através das instruções.

      Comente que essa forma de comunicação é a mais parecida com a qual os programadores
      de computador utilizam quando escrevem programas. Eles fornecem um conjunto de
      instruções ao computador e, somente depois, descobrem o efeito das instruções.

      Faça as crianças desenharem as figuras e escreverem suas instruções. Coloque-os em
      pares ou utilize a classe inteira.

      Variações
1.    Escreva instruções para construir um avião de papel.

2.    Escreva instruções sobre como chegar a um lugar misterioso próximo à escola, usando
      instruções como “Ande x metros para frente”, “Vire à esquerda”(90 graus), e “Vire à
      direita”(90 graus).

3.    As crianças devem testar e refinar suas instruções até que elas tenham o efeito desejado.

4.    Cabra Cega. Vende os olhos de uma criança e faça as outras guiarem a criança vendada
      pela sala.




104                                                 Cópia autorizada somente para uso em sala de aula.
                                                 © 2011 Computer Science Unplugged (csunplugged.org)
De que se trata tudo isso ?
       Os computadores operam seguindo um conjunto de instruções, chamado de programa, o
       qual foi escrito para cumprir uma determinada tarefa. Programas são escritos em
       linguagens que foram especialmente projetadas com um conjunto limitado de instruções
       para dizer aos computadores o que fazer. Certas linguagens são mais adequadas para
       alguns propósitos do que outras.

       Deixando de lado a linguagem que eles usam, os programadores devem ser capazes de
       especificar exatamente o que desejam que o computador faça. Diferentemente dos seres
       humanos, um computador realizará as instruções literalmente, ainda
       que elas sejam totalmente ridículas.

       É importante que os programas sejam bem escritos. Um pequeno erro
       pode causar vários problemas. Imagine as consequências de um erro num
       programa de computador numa plataforma de lançamento, usina
       nuclear, ou torre de controle de aviões ! Erros são comumente
       chamados de “bugs” (insetos, em inglês), em homenagem a uma
       mariposa que uma vez foi removida (“debugged”) de um relé elétrico de
       uma máquina de calcular no início de 1940.

       Quanto mais complexo o programa, maior a possibilidade de erros. Isso se tornou um
       grande problema quando os Estados Unidos trabalhavam no programa da Iniciativa
       Estratégica de Defesa (“Star Wars” ou “Guerra nas Estrelas”) , um sistema controlado por
       computador que pretendia formar uma defesa impenetrável contra ataques nucleares.
       Alguns cientistas da computação afirmaram que isso nunca funcionaria devido à
       complexidade e a inerente incerteza que o programa requeria. Programas precisam ser
       testados cuidadosamente para encontrar o máximo de erros possível e, não seria factível,
       testar esses sistemas já que alguém teria que atirar mísseis contra os Estados Unidos para
       ter certeza de que o sistema funciona !




Cópia autorizada somente para uso em sala de aula.                                          105
© 2011 Computer Science Unplugged (csunplugged.org)

Ensinando computacao sem_computador

  • 1.
    Ensinando Ciência daComputação sem o uso do computador Criado por Tim Bell, Ian H. Witten e Mike Fellows Adaptado para uso em sala de aula por Robyn Adams e Jane McKenzie Ilustrado por Matt Powell Tradução coordenada por Luciano Porto Barreto Fevereiro de 2011
  • 2.
    2 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 3.
    Prefácio à ediçãobrasileira Em um mundo cercado por tecnologia, torna-se cada vez mais raro encontrar material educacional lúdico e de fácil aplicação em escolas. O livro “Computer Science Unplugged” consiste em uma coleção de atividades desenvolvidas com o objetivo de ensinar os fundamentos da Ciência da Computação sem a necessidade de computadores. Uma grande vantagem dessa abordagem reside na sua independência de recursos de hardware ou software. Assim, as “atividades desplugadas” são passíveis de aplicação em localidades remotas com acesso precário de infraestrutura (i.e., sem energia elétrica ou computadores disponíveis) e podem até ser ministradas por não especialistas em computação. Os conteúdos abordados nas atividades repousam sobre conceitos fundamentais da Ciência da Computação, o que torna seu uso abrangente e evita a defasagem do conteúdo no tempo. Tais atividades têm sido aplicadas e revisadas por diversos pesquisadores e professores ao redor do mundo dentro de salas de aulas e fora delas. O site do projeto do projeto Unplugged (www.csunplugged.org) disponibiliza o livro gratuitamente em diversos idiomas e provê atividades extras e vídeos demonstrativos. O livro está estruturado em três partes: “Representando as Informações”, “Algoritmos” e “Representando Procedimentos”. A primeira parte apresenta atividades que ilustram as formas utilizadas pelos computadores na representação dos dados tratando de temas como armazenamento e representação da informação (números binários, texto e imagens) e compressão de dados. A parte sobre “Algoritmos” aborda métodos computacionais de uso freqüente no cotidiano tais como os algoritmos de ordenação e de busca de informação. A última parte “Representação de Procedimentos” apresenta conceitos mais avançados, a exemplo dos autômatos de estados finitos, grafos e das linguagens de programação. O livro abarca um rol importante de conceitos e respectivas atividades lúdicas relativas à computação, a exemplo da representação da informação (números binários e alfabetos), ordenação e busca de dados, autômatos de estados finitos, grafos e ocorrência e situações de impasse (deadlocks). Tais atividades podem ser executadas sem o uso do computador; algumas delas podem ser realizadas ao ar livre, o que representa diferencial importante em relação aos processos de aprendizagem convencionais. Portanto, deixe seu computador um pouquinho de lado, junte sua turma e divirta-se ! Luciano Porto Barreto Professor Adjunto - Universidade Federal da Bahia A 1ª versão deste livro contou com o apoio parcial da Fundação de Amparo à Pesquisa do Estado da Bahia (FAPESB). Cópia autorizada somente para uso em sala de aula. i © 2011 Computer Science Unplugged (csunplugged.org)
  • 4.
    Introdução Os computadores estão por toda parte. Todos nós precisamos aprender como usá-los e muitos de nós os utilizam todos os dias. Mas como eles funcionam ? Como eles pensam ? E como podem funcionar mais rápido e melhor ? A Ciência da Computação é uma área fascinante que explora tais perguntas. As atividades simples e divertidas deste livro, projetadas para crianças de várias idades, apresentarão como os computadores funcionam em alguns aspectos - sem que as crianças precisem usar um computador! Este livro pode ser efetivamente utilizado em programas de extensão e aprimoramento, ou mesmo em aulas regulares. Você não precisa ser um especialista em computação para aproveitar os conteúdos apresentados com seus filhos. O livro contém uma série de atividades que expõem as informações de maneira simples. Todos os problemas propostos possuem respostas e cada atividade termina com uma seção entitulada “De que se trata tudo isso ?”, que explica os elementos relevantes abordados nas atividades. Muitas das atividades são baseadas em conceitos matemáticos como, por exemplo, o entendimento dos números binários, uso de mapas e grafos, problemas envolvendo padrões e ordenamento, e criptografia. Outras atividades estão mais relacionadas aos currículos da área de tecnologia, bem como o conhecimento e a compreensão sobre como funcionam os computadores. As crianças desenvolvem ativamente habilidades de comunicação, resolução de problemas, criatividade, e cognição num contexto significativo. Este livro foi escrito por três professores de Ciência da Computação e dois professores de escolas, e está baseado em nossa experiência em sala de aula. Descobrimos que muitos conceitos importantes podem ser ensinados sem usar um computador. Na realidade, por vezes, o computador torna-se apenas uma distração no processo de aprendizagem. Portanto, desligue o computador e prepare-se para saber realmente o que é a Ciência da Computação ! Este livro está disponível para download gratuito para uso pessoal e educativo, graças ao generoso patrocínio da Google, Inc. Este livro é distribuído sob a licença Creative Commons Attribution-NonCommercial-NoDerivs, o que significa que você é livre para copiar, distribuir e exibir este livro, desde que não faça alterações ao conteúdo (incluindo a atribuição aos autores e estes termos de licença). Você não pode usar este livro para fins comerciais e não pode alterar, transformar ou adaptar o seu conteúdo. Encorajamos o uso deste material em ambientes educativos, e você está convidado a imprimir o seu próprio exemplar do livro e distribui-lo aos alunos. Agradecemos o envio de perguntas e sugestões, as quais podem ser encaminhadas diretamente aos autores (ver csunplugged.org). Este livro está sendo traduzido para vários outros idiomas. Favor verificar o site para obter informações sobre as traduções disponíveis. ii Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 5.
    Cópia autorizada somentepara uso em sala de aula. iii © 2011 Computer Science Unplugged (csunplugged.org)
  • 6.
    Agradecimentos Muitas crianças e professores têm ajudado a aperfeiçoar nossas idéias. As crianças e os professores da South Park School (Victoria, BC), Shirley Primary School, Ilam Primary School e Westburn Primary School (Christchurch, Nova Zelândia) serviram de cobaias para muitas atividades. Somos especialmente gratos a Linda Picciotto, Karen Capaz, Bryon Porteous, Paul Cathro, Tracy Harrold, Simone Tanoa, Lorena Woodfield, Lynn e Atkinson por nos acolher em suas salas de aula e dar sugestões importantes para melhoria das atividades. Gwenda Bensemann experimentou várias das atividades e sugeriu modificações. Richard Lynders e Sumant Murugesh ajudaram a testá-las em sala de aula. Parte das atividades de criptografia foram desenvolvidas por Ken Noblitz. Algumas das atividades foram executadas sob a égide do grupo “Mathmania” de Victoria, com a ajuda de Kathy Beveridge. Versões anteriores das ilustrações foram feitas por Malcolm Robinson e Gail Williams, e também fomos agraciados com os conselhos de Hans Knutson. Matt Powell também prestou valiosa assistência durante o desenvolvimento do projeto “Unplugged”. Somos gratos ao Brian Mason Scientific and Technical Trust pelo generoso patrocínio nas fases iniciais do desenvolvimento deste livro. Nossos agradecimentos especiais para Paul e Ellen Ruth Howard, que testaram muitas das atividades e ajudaram com uma série de sugestões úteis. Peter Henderson, Bruce McKenzie, Joan Mitchell, Nancy Walker-Mitchell, Gwen Stark, Tony Smith, Tim A. H. Bell1, Mike Hallett, e Harold Thimbleby forneceram igualmente inúmeros comentários proveitosos. Temos uma enorme dívida para com as nossas famílias: Bruce, Fran, Grant, Judith, e Pam, por seu apoio, e Andrew, Anna, Hannah, Max, Michael, e Nikki, que inspiraram grande parte deste trabalho2, e foram quase sempre as primeiras crianças a testar uma atividade. Estamos especialmente agradecidos a Google Inc. por patrocinar o projeto Unplugged e possibilitar que esta edição esteja disponível para download gratuito. Comentários e sugestões sobre as atividades são apreciados e podem ser encaminhados para o endereço eletrônico [email protected]. 1 Nenhuma relação com o primeiro autor. 2 De fato, a atividade de compressão de texto foi inventada por Michael. iv Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 7.
    Sumário Prefácio à edição brasileira .................................................................................................. i Introdução ........................................................................................................................... ii Agradecimentos ................................................................................................................. iv Dados: A Matéria-prima—Representando a informação......................................................... 1 Contando os Pontos—Números Binários ........................................................................... 3 Colorindo com Números—Representação de Imagens.................................................... 14 Você pode repetir ?—Compressão de Texto..................................................................... 23 A Mágica de virar as cartas—Detecção e Correção de Erros.......................................... 31 Vinte Palpites—Teoria da Informação............................................................................. 37 Colocando os Computadores para Trabalhar—Algoritmos.................................................. 43 Batalha Naval — Algoritmos de Busca............................................................................. 45 O mais leve e o mais pesado—Algoritmos de Ordenação................................................ 64 Seja o mais rápido !—Redes de Ordenação ..................................................................... 71 A Cidade Enlameada—Árvores Geradoras Mínimas....................................................... 76 O Jogo da Laranja— Roteamento e Bloqueios nas Redes ................................................ 81 Dizendo aos Computadores o que fazer — Representando Procedimentos .......................... 84 Caça ao Tesouro—Autômatos de Estados Finitos ............................................................ 86 Seguindo Instruções—Linguagens de Programação...................................................... 101 Cópia autorizada somente para uso em sala de aula. v © 2011 Computer Science Unplugged (csunplugged.org)
  • 8.
    vi Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 9.
    Parte I Dados: A Matéria-prima— Representando a informação
  • 10.
    Dados: A Matéria-prima Como podemos armazenar informações nos computadores ? A palavra computador tem origem no latim computare, que significa calcular ou adicionar, mas os computadores são hoje mais do que apenas uma gigante calculadora. Eles podem ser uma biblioteca, ajudar-nos a escrever, encontrar informações, até mesmo reproduzir músicas e filmes. Então, como eles armazenam toda essa informação ? Acredite ou não, o computador usa apenas dois elementos: zeros e uns! Quais são as diferenças entre dados e informações ? Dados são a matéria-prima, os números com os quais os computadores trabalham. Um computador transforma seus dados em informações (palavras, números e fotos) que você e eu podemos compreender. Como números, letras, palavras e imagens podem ser convertidos em zeros e uns ? Nesta seção, aprenderemos sobre os números binários, como os computadores desenham imagens, como funcionam os aparelhos de fax, qual a forma mais eficaz de armazenar grandes quantidades de dados, como evitar erros e como mensurar o volume de informações que desejamos armazenar. 2 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 11.
    Atividade 1 Contando os Pontos—Números Binários Sumário Os dados são armazenados em computadores e transmitidos como uma série de zeros e uns. Como podemos representar palavras e números usando apenas estes dois símbolos ? Matérias correlacionadas Matemática: Representação de números em outras bases além da base decimal. Representação de números na base dois. Matemática: Sequências e padrões sequenciais; descrição de uma regra para um padrão. Padrões e relacionamentos com as potências na base dois. Habilidades Contar Correlacionar Ordenar Idade A partir de 7 anos Material Será necessário confeccionar um conjunto de cinco cartões com números binários (ver página 4) para a demonstração. Cartões A4 com caras sorridentes são igualmente adequados. Cada criança precisará de: Um conjunto de cinco cartões. Faça uma cópia da folha “Original para Fotocópia: Formar Números Binários” (página 6) em cartolina e recorte os cartões. Folha de Atividade: Números Binários (página 5) Existem atividades de extensão adicionais, para as quais cada criança precisará de: Folha de Atividade: Trabalhar com Números Binários (página 7) Folha de Atividade: Enviar Mensagens Secretas (página 8) Folha de Atividade: Correio Eletrônico e Modems (página 9) Folha de Atividade: Contar acima de 31 (página 10) Folha de Atividade: Mais sobre números binários (página 11) Cópia autorizada somente para uso em sala de aula. 3 © 2011 Computer Science Unplugged (csunplugged.org)
  • 12.
    Números Binários Introdução Antes de iniciar a atividade da página 5, pode ser útil demonstrar os fundamentos ao grupo. Para esta atividade, são necessários cinco cartões, conforme mostrado abaixo, com pontos marcados de um lado e nada sobre o verso. Escolha cinco crianças para segurar os cartões de demonstração na frente da turma. Os cartões devem estar na seguinte ordem: Discussão O que você percebeu sobre o número de pontos nos cartões ? (Cada cartão tem duas vezes mais pontos que o cartão à sua direita.) Quantos pontos teria o próximo cartão colocado à esquerda ? (32) E o próximo ...? Podemos usar estes cartões para representar números virando alguns deles para baixo e adicionando os pontos dos cartões com a face para cima. Peça às crianças para representarem os números 6 (cartões com 4 e 2 pontos), 15 (cartões com 8 , 4 , 2 e 1 pontos e, em seguida, 21 (cartões com 16, 4 e 1 ponto) ... Agora tente contar de zero em diante. O resto da turma deve prestar atenção sobre como os cartões são virados para tentar reconhecer um padrão (cada cartão é virado metade das vezes do que as vezes do cartão a sua direita). Talvez você queira experimentar isso com mais de um grupo. Quando um cartão está com a face para baixo, sem mostrar os pontos, este cartão é representado por um zero. Quando os pontos são exibidos, o cartão é representado por um. Este é o sistema numérico binário. Peça às crianças para formarem o número 01001. Qual o seu número equivalente em decimal ? (9) Como seria o número 17 em binário ? (10001) Faça alguns exemplos até que as crianças compreendam o conceito. Há cinco opções de atividades de extensão que podem ser utilizadas como reforço. As crianças devem fazer o maior número de atividades possível. 4 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 13.
    Folha de Atividade:Números Binários Aprendendo a Contar Então, você achava que sabia contar ? Bem, aqui está uma nova forma de fazer isso ! Sabia que os computadores utilizam apenas zeros e uns ? Tudo o que você vê ou ouve no computador - palavras, imagens, números, filmes e até mesmo o som - são armazenados usando apenas estes dois numerais ! Estas atividades ensinarão como enviar mensagens secretas aos seus amigos usando exatamente o mesmo método que um computador. Instruções Recorte os cartões da sua folha de atividades e arrume-os com o cartão com 16 pontos ao lado esquerdo dos demais, como mostrado aqui: Certifique-se de que os cartões são colocados exatamente na ordem acima. Agora, vire os cartões para mostrar exatamente cinco pontos. Mantenha as cartas sempre na mesma posição ! Em seguida, descubra como obter os números 3, 12 e 19. Há mais de uma maneira de se obter determinado número? Qual é o maior número que você pode formar ? Qual é o menor ? Existe algum número que não se pode formar entre o menor e o maior número ? Para os mais espertos: Tente formar os números 1, 2, 3, 4, nessa ordem. Depois disso, você consegue descobrir um método de virar as cartas que permita formar qualquer número ? Cópia autorizada somente para uso em sala de aula. 5 © 2011 Computer Science Unplugged (csunplugged.org)
  • 14.
    Original para fotocópia:Formar Números Binários 6 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 15.
    Folha de Atividade:Trabalhar com Números Binários O sistema binário utiliza o zero e o um para representar se um cartão está virado para cima ou não. O 0 indica que os pontos do cartão estão escondidos, e o 1 significa que os pontos do cartão são visíveis. Por exemplo: Vocês podem descobrir o número representado por 10101 ? E que tal 11111 ? Em qual dia do mês você nasceu ? Escreva-o em formato binário. Descubra os aniversários dos seus amigos em formato binário. Tente decifrar os seguintes números codificados: Para os mais espertos: Usando um conjunto de varas de comprimento 1, 2, 4, 8 e 16 centímetros, mostre como é possível medir qualquer objeto de até 31 centímetros. Ou então, surpreenda um adulto mostrando-lhe como você consegue pesar objetos pesados, tais como malas ou caixas, com apenas uma balança e alguns pesos. Cópia autorizada somente para uso em sala de aula. 7 © 2011 Computer Science Unplugged (csunplugged.org)
  • 16.
    Folha de Atividade:Enviar Mensagens Secretas Tom está preso no último andar de uma loja. É noite de Natal e ele quer ir para casa com seus presentes. O que ele pode fazer ? Ele tentou chamar alguém, até mesmo gritar, mas não há ninguém por perto. Do outro lado da rua ele pode ver uma pessoa ainda trabalhando em seu computador até tarde da noite. Como ele poderia atrair sua atenção ? Tom olha em volta para ver o que poderia usar. Então, ele tem uma brilhante idéia: utilizar as lâmpadas da árvore de Natal para enviar uma mensagem ! Ele coletou todas as lâmpadas disponíveis e as conectou aos bocais de forma que pudesse acendê-las ou apagá-las. Ele usou um código binário simples, que ele sabia ser de conhecimento da mulher do outro lado da rua. Você pode identificar a mensagem enviada por Tom ? 1 2 3 4 5 6 7 8 9 10 11 12 13 a b c d e f g h i j k l m 14 15 16 17 18 19 20 21 22 23 24 25 26 n o p q r s t u v w x y z 8 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 17.
    Folha de Atividade:Correio Eletrônico e Modems Os computadores conectados à Internet através de um equipamento conhecido por modem também utilizam o sistema binário para enviar mensagens. A única diferença é que eles usam um sinal sonoro ou bip. Um bip agudo é utilizado para o um e um bip grave é utilizado para o zero. Estes sinais são transmitidos rapidamente. Tão rápido, na verdade, que apenas ouvimos um horrível zumbido contínuo. Se você nunca o ouviu, ouça um modem conectar-se à Internet ou tente ligar para uma máquina de fax – as máquinas de fax também usam modems para enviar informação. Usando o mesmo código que Tom utilizou na loja, tente enviar uma mensagem de correio eletrônico ao seu amigo. Mas facilite as coisas para você e seu amigo, pois vocês não precisam ser tão rápidos quanto um modem de verdade ! Cópia autorizada somente para uso em sala de aula. 9 © 2011 Computer Science Unplugged (csunplugged.org)
  • 18.
    Folha de Atividade:Contar acima de 31 Veja os cartões binários novamente. Quantos pontos teria o próximo cartão na sequência ? E o cartão seguinte ? Qual regra você pode seguir para fazer seus novos cartões ? Como você pode perceber, são necessários somente alguns poucos cartões para contar até números muito grandes. Observando atenciosamente a sequência, notamos uma relação muito interessante: 1, 2, 4, 8, 16… Calcule 1 + 2 + 4 = ? Qual é o resultado ? Agora, some 1 + 2 + 4 + 8 = ? O que acontece se você somar todos os números desde o início ? Você já colocou todos os seus dedos para trabalhar ? Pois agora seus dedos podem contar e ir muito além do número dez. Não, você não precisa ser de outro planeta ! Se utilizar o sistema binário e deixar que cada dedo de uma mão represente um dos cartões com pontos, então pode contar de zero a 31. Ao total, temos 32 números. (Não se esqueça de que o zero também é um número!) Tente contar sequencialmente utilizando seus dedos. Se o dedo estiver para cima, é um, e, se estiver para baixo, é zero. Você pode contar de 0 a 1023 se usar as duas mãos ! São 1024 números ! Se os dedos dos seus pés forem realmente flexíveis (se você fosse de outro planeta), seria possível obter números ainda maiores. Se uma mão pode contar até 32 e duas mãos podem contar até 32 × 32 = 1024, qual o maior número que a senhorita “Flex” abaixo pode contar ? 10 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 19.
    Folha de Atividade:Mais Sobre Números Binários 1. Outra situação interessante dos números binários acontece quando um zero é colocado ao lado direito de um número. Se estivermos trabalhando na base 10 (decimal), ao colocarmos um zero ao lado direito de um número, este é multiplicado por 10. Por exemplo, 9 torna-se 90, 30 torna-se 300. Mas o que acontece quando você coloca um 0 à direita de um número binário ? Tente isto: 1001 → 10010 (9) (?) Tente com outros números para testar sua hipótese. Qual é a regra ? Por que você acha que isso acontece ? 2. Cada um dos cartões que utilizamos até agora representa um bit no computador (bit é a abreviação do termo inglês binary digit - dígito binário). Dessa forma, o código alfabético que utilizamos até então pode ser representando usando apenas cinco cartões, ou bits. Entretanto, um computador deve saber se as letras são maiúsculas ou não, e deve também reconhecer dígitos, sinais de pontuação e símbolos especiais como $ ou ~. Procure um teclado e veja quantos caracteres um computador tem que representar. Então, quantos bits são necessários para um computador armazenar todos os caracteres ? A maioria dos computadores atualmente utiliza uma representação chamada ASCII (American Standard Code for Information Interchange - Código Padrão Americano para Intercâmbio de Informação), que utiliza essa quantidade de bits para representar os caracteres, mas alguns países em que se falam outros idiomas precisam utilizar códigos maiores. Cópia autorizada somente para uso em sala de aula. 11 © 2011 Computer Science Unplugged (csunplugged.org)
  • 20.
    De que setrata tudo isso ? Os computadores atualmente utilizam o sistema binário para representar informações. Chama-se binário porque utiliza dois dígitos distintos. Também é conhecido como base dois (as pessoas utilizam no dia-a-dia a base 10). Cada zero ou um é chamado de bit (dígito binário). Um bit é normalmente representado na memória principal do computador por um transistor, que pode estar ligado ou desligado, ou um capacitor, que pode estar carregado ou descarregado. Quando os dados devem ser transmitidos por uma linha telefônica ou enlace de rádio, tons de alta e baixa freqüência são utilizados para os zeros e uns. Em discos magnéticos (disquetes e discos rígidos) e fitas, os bits são representados pela direção de um campo magnético sobre uma superfície revestida, podendo ser norte-sul ou sul-norte. CDs de áudio, CD-ROMs e DVDs armazenam bits de forma ótica — a parte da superfície correspondente a um bit reflete ou não a luz. Um único bit não consegue representar muito. Por isso, os bits são utilizados geralmente em grupos de oito, podendo representar números de 0 a 255. Um grupo de oito bits é chamado de byte. A velocidade de um computador depende do número de bits que este pode processar de uma só vez. Por exemplo, um computador de 32 bits pode processar números de 32 bits em uma única operação, ao passo que um computador de 16 bits divide os números de 32 bits em partes menores, o que o torna mais lento. Em suma, bits e bytes são tudo que um computador utiliza para armazenar e transmitir números, texto e todas as outras informações. Em algumas das atividades seguintes veremos como outros tipos de informações podem ser representados em um computador. 12 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 21.
    Soluções e dicas Números Binários (página 5) 3 requer os cartões 2 e 1 12 requer os cartões 8 e 4 19 requer os cartões 16, 2 e 1 Existe somente uma maneira de formar um determinado número. O maior número que você pode representar é 31. O menor é 0. Você pode formar qualquer número dentro dessa faixa e cada um deles tem uma única representação. Para os mais espertos: Para incrementar qualquer número em uma unidade, vire os cartões indo da direita para a esquerda até que você deixe um cartão com a face para cima (número um). Trabalhando com binários (página 7) 10101 = 21 ; 11111 = 31 Números codificados (figuras da esquerda para direita): 01001 = 9; 1010 = 10; 101 = 5; 1101 = 13; 00000 = 0; 10001 = 17; 10 = 2; 10100 = 20; 0 = 0; 11111 = 31. Enviando mensagens secretas (página 8) Mensagem codificada: AJUDE ESTOU PRESO Contando acima de 31 (página 10) Se você adicionar os números desde o início, o total será sempre o número seguinte da sequência subtraído de um. A senhorita Dedos Flexíveis pode contar até 1024 × 1024 = 1.048.576 — de 0 a 1.048.575 ! Mais sobre Números Binários (página 11) Quando você coloca um zero à direita de um número binário, esse número é dobrado. Todos os locais contendo um “1” valem agora duas vezes seu valor anterior, e assim o número total é duplicado. (Na base 10, acrescentando um zero à direita do número multiplica-o por 10.) Um computador precisa de 7 bits para armazenar todos os caracteres. Isto permite representar até 128 caracteres. Geralmente os 7 bits são armazenados em um byte (8 bits), com um bit não utilizado. Cópia autorizada somente para uso em sala de aula. 13 © 2011 Computer Science Unplugged (csunplugged.org)
  • 22.
    Atividade 2 Colorindo com Números—Representação de Imagens Sumário Os computadores armazenam desenhos, fotografias e outras imagens usando apenas números. A atividade seguinte demonstra como eles podem fazer isso. Matérias correlacionadas Matemática: Exploração de Formas e Espaços. Habilidades Contagem Desenho Idades A partir de 7 anos Material Transparência feita a partir da folha “Transparência: Colorindo com números” (página 16) Cada criança precisará de: Folha de Atividade: Mini Fax (página 17) Folha de Atividade: Crie sua própria imagem (página 18) 14 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 23.
    Colorindo com Números Introdução Questões para discussão 1. O que as máquinas de fac-símile (fax) fazem ? 2. Em quais situações os computadores precisam armazenar imagens ? (Um programa para desenhar, um jogo com gráficos ou um sistema multimídia.) 3. Como os computadores armazenam fotos, se estes só podem utilizar números? (Você pode organizar as crianças para enviar e / ou receber um fax como preparação para esta atividade) Demonstração utilizando um projetor de transparências As telas dos computadores são divididas em uma grade de pequenos pontos chamados pixels (do inglês, picture elements - elementos de imagem). Em uma foto em preto e branco, cada pixel ou é preto ou é branco. Na imagem acima, a letra “a” foi ampliada para mostrar os pixels. Quando um computador armazena uma imagem, basta armazenar quais pontos são pretos e quais pontos são brancos. 1, 3, 1 4, 1 1, 4 0, 1, 3, 1 0, 1, 3, 1 1, 4 A figura acima nos mostra como uma imagem pode ser representada por números. A primeira linha consiste de um pixel branco, seguido de três pixels pretos e, por fim, de um pixel branco. Assim, a primeira linha é representada por 1, 3, 1. O primeiro número sempre se refere ao número de pixels brancos. Se o primeiro pixel for preto, a linha começará com um zero. A folha de atividade na página 22 apresenta algumas imagens que as crianças podem decodificar utilizando este método. Cópia autorizada somente para uso em sala de aula. 15 © 2011 Computer Science Unplugged (csunplugged.org)
  • 24.
    Transparência: Colorindo comnúmeros A letra “a” a partir da tela de um computador e uma visão ampliada mostrando os pixels que compõem a imagem 1, 3, 1 4, 1 1, 4 0, 1, 3, 1 0, 1, 3, 1 1, 4 A mesma imagem codificada com números Grade em branco (para fins didáticos) 16 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 25.
    Folha de Atividade:Mini Fax A primeira imagem é a mais fácil e a última é a mais complexa. É fácil cometer erros. Portanto, procure usar um lápis para colorir e uma borracha ! 4, 11, 3 4, 9, 2, 1, 2 4, 9, 2, 1, 2 4, 11, 3 4, 9, 5 4, 9, 5 5, 7, 6 0, 17, 1 1, 15, 2 6, 5, 2, 3,2 4, 2, 5, 2, 3, 1, 1 3, 1, 9, 1, 2, 1, 1 3, 1, 9, 1, 1, 1, 2 2, 1, 11, 1, 3 2, 1, 10, 2, 3 2, 1, 9, 1, 1, 1, 3 2, 1, 8, 1, 2, 1, 3 2, 1, 7, 1, 3, 1, 3 1, 1, 1, 1, 4, 2, 3, 1, 4 0, 1, 2, 1, 2, 2, 5, 1, 4 0, 1, 3, 2, 5, 2, 5 1, 3, 2, 5, 7 6, 6, 6 5, 1, 2, 2, 2, 1, 5 6, 6, 6 4, 2, 6, 2, 4 3, 1, 10, 1, 3 2, 1, 12, 1, 2 2, 1, 3, 1, 4, 1, 3, 1, 2 1, 2, 12, 2, 1 0, 1, 16, 1 0, 1, 6, 1, 2, 1, 6, 1 0, 1, 7, 2, 7, 1 1, 1, 14, 1, 1 2, 1, 12, 1, 2 2, 1, 5, 2, 5, 1, 2 3, 1, 10, 1, 3 4, 2, 6, 2, 4 6, 6, 6 Cópia autorizada somente para uso em sala de aula. 17 © 2011 Computer Science Unplugged (csunplugged.org)
  • 26.
    Folha de Atividade:Crie Sua Própria Imagem Agora que você sabe como os números podem representar imagens, por que não tentar fazer sua própria imagem codificada para um amigo ? Desenhe sua imagem na grade superior e, ao terminar, escreva os números de código ao lado da grade inferior. Recorte ao longo da linha pontilhada e dê o papel com a grade inferior para um amigo colorir. (Nota: se preferir, você não precisa usar toda a grade, basta deixar algumas linhas em branco no final, caso sua imagem não ocupe toda a grade.) 18 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 27.
    Folha de Atividade:Crie Sua Própria Imagem Para os mais espertos: Se quiser produzir imagens coloridas, você pode usar um número para representar a cor (por exemplo, 0 para preto, 1 para vermelho, 2 para verde etc.) Dois números são agora usados para representar um grupo de pixels: o primeiro representa o tamanho do conjunto, e o segundo especifica a cor. Tente fazer uma imagem colorida para um amigo. Não se esqueça de dizer ao seu amigo o número correspondente a cada cor. Cópia autorizada somente para uso em sala de aula. 19 © 2011 Computer Science Unplugged (csunplugged.org)
  • 28.
    Variações e Extensões 1. Tente desenhar com uma folha de papel sobre a grade, de modo que a imagem final possa ser vista sem a grade. A imagem será mais clara. 2. Ao invés de colorir a grade, as crianças podem utilizar quadrados de papel colante ou colocar objetos em uma grade maior. Ponto para Discussão Geralmente há um limite para o tamanho de um grupo de pixels porque o tamanho é representado por um número binário. Como você representaria um grupo de doze pixels pretos se pudesse somente usar números até sete ? (Uma boa maneira de fazê-lo seria codificar um conjunto de sete pixels pretos seguido de um conjunto de zero pixels brancos e de um conjunto de cinco pixels pretos.) 20 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 29.
    De que setrata tudo isso ? Uma máquina de fax é basicamente um computador simples que efetua uma varredura sobre uma página em preto e branco, armazena-a em, aproximadamente, 1000 × 2000 pixels, que são transmitidos através de um modem para outra máquina de fax. Esta última, por sua vez, imprime os pixels em uma página. Imagens impressas por fax geralmente têm grandes blocos de pixels brancos (por exemplo, as margens) ou pretos (por exemplo, uma linha horizontal). Imagens coloridas também possuem áreas repetidas. A fim de economizar o espaço de armazenamento necessário para guardar essas imagens, os programadores podem usar diversas técnicas de compressão. O método utilizado nesta atividade é chamado de ‘run-length coding’, uma maneira eficaz de compressão de imagens. Se as imagens não fossem comprimidas, estas levariam muito mais tempo para serem transmitidas e exigiriam muito mais espaço para armazenamento. Isto tornaria inviável enviar páginas de fax ou colocar fotos em uma página da Internet. Por exemplo, imagens de fax são geralmente comprimidas para aproximadamente um sétimo do seu tamanho original. Sem a compressão, estas demorariam sete vezes mais para serem transmitidas ! Fotografias e imagens são freqüentemente comprimidas para um décimo ou até mesmo um centésimo do seu tamanho original (utilizando uma técnica diferente). Isto permite que um número bem maior de imagens seja armazenado em um disco e significa que vê- las na Internet levará bem menos tempo. Um programador pode escolher a técnica mais adequada à compressão das imagens que está transmitindo. Cópia autorizada somente para uso em sala de aula. 21 © 2011 Computer Science Unplugged (csunplugged.org)
  • 30.
    Soluções e dicas Respostas da Atividade do Mini Fax 22 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 31.
    Atividade 3 Você pode repetir ? —Compressão de Texto Sumário Desde que os computadores possuíam apenas uma quantidade reduzida de espaço para armazenar informações, estes precisavam armazená-las da forma mais eficiente possível. Isso é chamado compressão. Codificar os dados antes de armazená-los e decodificá-los, assim que estiverem sendo recuperados, permite ao computador armazenar mais dados ou enviá-los mais rapidamente através da Internet. Matérias correlacionadas Português: Reconhecimento de padrões em palavras e texto. Tecnologia: Conhecimento sobre o funcionamento dos computadores. Habilidades Cópia de textos escritos Idades A partir de 9 anos Material Transparência feita a partir da folha “Transparência: Você pode repetir ?” (página 25) Cada criança precisará de: Folha de Atividade: Você pode repetir ? ! (página 26) Folha de Atividade: Para os mais espertos (página 27) Folha de Atividade: Curto e grosso (página 28) Folha de Atividade: Para os realmente espertos (página 29) Cópia autorizada somente para uso em sala de aula. 23 © 2011 Computer Science Unplugged (csunplugged.org)
  • 32.
    Você pode repetir? Introdução Os computadores devem preservar e transmitir diversos dados. Para não usar muito espaço de armazenamento, ou levar muito tempo para enviar informações através de uma conexão via modem, eles comprimem o texto como explicado resumidamente a seguir. Demonstração e discussão Mostre o poema “A Aranha e a Jarra” (folha de transparência da página 25). Identifique padrões de letras neste poema. Você consegue encontrar grupos de duas ou mais letras repetidas, ou mesmo palavras ou frases inteiras? (Substitua esses padrões por caixas em branco conforme mostrado no diagrama abaixo.) Aranha arranha Aranha arranha 24 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 33.
    Transparência: Você poderepetir ? A Aranha e a Jarra (Nelma Sampaio) Debaixo da cama tem uma jarra, Dentro da jarra tem uma aranha. Tanto a aranha arranha a jarra, Como a jarra arranha a aranha. Cópia autorizada somente para uso em sala de aula. 25 © 2011 Computer Science Unplugged (csunplugged.org)
  • 34.
    Folha de Atividade:Você pode repetir ? Muitas palavras e letras estão faltando no trecho deste lindo poema do ilustre poeta português Luís Vaz de Camões (1524?-1580). Você pode preencher as letras e palavras que faltam para completá-lo corretamente? Você as encontrará nos retângulos apontados pela seta. Amor é fogo que arde sem se ver, É ferida que dói e não se sente, É um contentamento descontente, É dor que desatina sem doer . Agora escolha um poema ou versinho infantil e construa seu próprio enigma. Certifique-se de que as setas apontem sempre para uma parte anterior do texto. O seu poema deve ser capaz de ser decodificado da esquerda para a direita e de cima para baixo, da mesma forma que lemos um texto. Desafio: Veja quão poucas palavras do texto original você precisa conservar! Aqui vão algumas sugestões: “A Casa” e “O Pato” de Vinícius de Moraes. Dica: Tente evitar o uso demasiado de setas. Deixe bastante espaço livre em volta das letras e palavras ao escrever de modo que você tenha espaço para os retângulos e as setas que apontam para estes. É mais fácil construir o enigma se, primeiro, você escrever o poema por extenso e depois decidir onde ficarão os retângulos. 26 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 35.
    Folha de Atividade:Para os mais espertos Como resolver este enigma ? Ban --- Às vezes, textos incompletos apontam para parte dele mesmo. Neste caso, o texto pode ser decodificado corretamente se as letras forem copiadas da esquerda para a direita. Assim, cada letra está disponível para ser copiada antes de ser necessária. Isso é útil em computadores nos quais existe uma cadeia grande de caracteres ou padrões específicos. Tente desenhar alguns de seus próprios padrões. Em computadores as caixas e flechas são representadas por números. Por exemplo, Banana pode ser escrita como Ban (2,3). "2" significa contar dois caracteres para trás para encontrar o ponto de partida para a cópia, Ban--- e "3" significa copiar três caracteres consecutivos: Bana-- Banan- Banana- Visto que dois números são usados para codificar estas palavras, normalmente, apenas grupos de duas ou mais letras valem a pena ser comprimidas, caso contrário, não há economia de espaço. O tamanho do arquivo poderia até mesmo aumentar se dois números fossem usados para codificar uma letra. Elabore algumas palavras e as escreva como um computador as escreveria se estas fossem comprimidas. Seus amigos conseguem decodificá-las ? Cópia autorizada somente para uso em sala de aula. 27 © 2011 Computer Science Unplugged (csunplugged.org)
  • 36.
    Folha de Atividade:Curto e Grosso De quantas palavras você realmente precisa ? Finja que você é um computador tentando armazenar a maior quantidade de informações em seu disco rígido. Descarte todos os grupos de duas ou mais letras que já tenham ocorrido. Estes são desnecessários porque podem ser substituídos por uma referência anterior. Seu objetivo é conseguir marcar a maior quantidade possível de letras. Em quantidade que é pra dar e pra vender. Pra ver quem chega lá no topo pra comer E sai correndo dando pulos, dando saltos Na bananeira tem um cacho bem maduro A bananada que é um doce bem escuro E Vovó colhe as bananas pra fazer A macacada se alvoroça quando vê Banana, bananeira, bananada (Nelma Sampaio) Banana 28 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 37.
    Folha de Atividade:Para os realmente espertos Prontos para uma compressão realmente difícil ? Quantas letras você consegue marcar para compressão na história dos Três Porquinhos ? Lembrem-se: apenas grupos de dois ou mais caracteres repetidos podem ser eliminados. Boa sorte! E ra uma vez, três porquinhos que viviam com a sua mãe. Um dia ela disse-lhes: - Queridos filhos, penso que já são grandinhos para viverem sozinhos e poderem trabalhar. Têm braços fortes e não lhes falta inteligência para pensar o que é melhor para cada um. Primeiro têm que construir suas próprias casas perto uns dos outros e se prepararem para todos os perigos que possam surgir. Os porquinhos puseram-se a caminho. De todos os três o pequeno era o mais trabalhador, o do meio era trapalhão e o maior era preguiçoso. Como o maior era preguiçoso, fez a casa de palha para ser mais rápido. O do meio fez a casa de madeira, pois também não gostava muito de trabalhar. Mas, o mais novo, o mais trabalhador, fez a sua com cimento e tijolos. Um dia, apareceu o lobo que, com um sopro, derrubou a casa do mais velho e que, com outro sopro, deitou abaixo a casa do porquinho do meio. Os porquinhos muito amedrontados correram para a casa do irmão mais novo com o lobo correndo atrás deles. O porquinho abriu-lhes a porta rapidamente e, os irmãos, entraram muito admirados por verem uma casa tão forte e tão bonita. O lobo pensava que a derrubaria, soprava e dizia: - Soprarei, soprarei e a sua casa derrubarei! Mas a casa era forte e ele não conseguiu derrubá-la. Por isso, muito envergonhado, fugiu e não voltou mais. Os três porquinhos continuaram morando na casa de tijolos e viveram felizes para sempre. Cópia autorizada somente para uso em sala de aula. 29 © 2011 Computer Science Unplugged (csunplugged.org)
  • 38.
    De que setrata tudo isso ? A capacidade de armazenamento dos computadores cresce num ritmo incrível— nos últimos 25 anos, esta quantidade de armazenamento em um computador típico cresceu cerca de um milhão de vezes — mas ainda encontramos mais coisas para colocarmos em nossos computadores. Os computadores podem armazenar livros ou até mesmo bibliotecas e, agora, música e filmes também, se houver espaço. Arquivos grandes são igualmente um problema na Internet porque demoram muito tempo para serem baixados. Além disso, tentamos reduzir os computadores cada vez mais — até mesmo um relógio de pulso ou celular pode armazenar grandes quantidades de informação ! Entretanto, existe uma solução para este problema. Ao invés de comprar mais espaço de armazenamento ou um modem mais rápido, podemos comprimir os dados para que estes ocupem menos espaço. Tal processo de compressão e descompressão de dados é geralmente feito automaticamente pelo computador. Assim, notamos que o disco possui mais espaço disponível ou que as páginas da Internet são exibidas mais rapidamente, porém, o computador está, na verdade, realizando mais processamento. Vários métodos de compressão foram inventados. O método utilizado nesta atividade, baseado no princípio de apontar para ocorrências anteriores de blocos de texto, é muitas vezes referido como “codificação Ziv-Lempel” ou “codificação LZ”, e foi inventado por dois professores israelenses na década de 1970. Este método pode ser usado para qualquer idioma e pode facilmente reduzir à metade o tamanho dos dados a serem compactados. É, por vezes, referido como “zip” em computadores pessoais, é também utilizado em imagens do tipo “GIF”, bem como em modems de alta velocidade. No caso dos modems, este método reduz a quantidade de dados que precisam ser transmitidos através da linha telefônica, sendo assim bem mais rápido. Alguns outros métodos são baseados na idéia de que as letras usadas mais freqüentemente deveriam ter códigos menores do que as outras. O Código Morse utilizou esta idéia. Soluções e dicas Você pode repetir ? (página 26) Amor é fogo que arde sem se ver, É ferida que dói e não se sente, É um contentamento descontente, É dor que desatina sem doer. Luís Vaz de Camões (Poeta português, 1524?-1580) 30 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 39.
    Atividade 4 A Mágica de virar as cartas—Detecção e Correção de Erros Sumário Quando os dados são armazenados num disco ou transmitidos de um computador para outro, costumamos supor que estes não tenham sofrido alterações no processo. Mas, às vezes, problemas acontecem e os dados são alterados acidentalmente. Esta atividade utiliza um truque de mágica para mostrar como detectar quando os dados foram corrompidos e como podemos corrigi-los. Matérias correlacionadas Matemática: Cálculo e estimativa. Álgebra: Padrões e relacionamentos. Habilidades Contagem Reconhecimento de números pares e ímpares Idades A partir de 9 anos Material Um conjunto de 36 cartas do tipo “ímã de geladeira”, coloridas em um dos lados. Um quadro de metal (um quadro branco funciona bem) para a demonstração. Cada par de crianças vai precisar de: 36 cartas idênticas, coloridas em apenas um lado. Cópia autorizada somente para uso em sala de aula. 31 © 2011 Computer Science Unplugged (csunplugged.org)
  • 40.
    O “Truque deMágica” Demonstração Esta é a sua chance de se tornar um mágico ! Você precisará de um conjunto de cartas iguais de duas faces. (Para fazer suas próprias cartas, corte uma folha grande e colorida apenas de um lado). Para a demonstração, é mais fácil usar cartas magnéticas e planas com uma cor diferente em cada lado—ímãs de geladeira são ideais. 1. Escolha uma criança para dispor as cartas aleatoriamente em um quadrado de dimensões 5 × 5. Casualmente adicione outra linha e coluna, “apenas para dificultar o truque”. Essas cartas são a chave para o truque. Você deve escolher as cartas adicionais para assegurar que haja um número par de cartas coloridas em cada linha e coluna. 2. Peça a uma criança para virar apenas uma carta enquanto você cobre seus olhos. A linha e coluna que contém a carta modificada agora terão um número ímpar de cartas coloridas, e isto identificará a carta modificada. As crianças conseguem adivinhar como o truque é feito ? 32 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 41.
    Ensine o truquepara as crianças: 1. Trabalhando em pares, as crianças distribuem suas cartas em um quadrado 5 × 5. 2. Quantas cartas coloridas estão em cada linha e coluna ? Trata-se de um número par ou ímpar ? Lembre-se, 0 é um número par. 3. Agora, adicione uma sexta carta a cada linha, certificando-se de que o número de cartas coloridas seja sempre ímpar. Esta carta extra é chamada de carta de “paridade”. 4. Adicione uma sexta linha de cartas na parte de baixo, fazendo com que o número de cartas em cada coluna seja um número par. 5. Agora, vire uma carta. O que você nota sobre a linha e coluna dessa carta ? (Elas terão um número ímpar de cartas coloridas.) Cartas de paridade são usadas para lhe mostrar a ocorrência de um erro. 6. Agora, faça revezamentos para realizar o “truque”. Atividades de Extensão: 1. Tente usar outros objetos. Tudo o que tem dois “estados” é apropriado. Por exemplo, você poderia utilizar cartas de baralho, moedas (cara ou coroa) ou cartões impressos com 0 ou 1 (para referir-se ao sistema binário). 2. O que acontece quando duas ou mais cartas são viradas ? (Nem sempre é possível saber exatamente quais duas cartas foram viradas, embora seja possível dizer que alguma coisa foi modificada. Normalmente, é possível restringir a um dos dois pares de cartas. Após 4 viradas, é possível que todos os bits de paridade estejam corretos e, por isso, o erro poderia passar despercebido.) 3. Outro exercício interessante é considerar a carta do lado inferior direito. Se você a escolhe como correta para a coluna logo acima, então ela estará correta para a fila à sua esquerda? (A resposta é sim, sempre.) 4. Neste exercício de cartas empregamos a paridade par—usando um número par de cartas coloridas. Podemos fazê-lo com paridade ímpar ? (Isso é possível, porém a carta do lado direito somente funciona para a sua linha e coluna se os números de linhas e colunas são ambos pares ou ímpares. Por exemplo, isso funciona bem para um quadrado 5 × 9 ou 4 × 6, mas não para um quadrado 3 × 4.) Cópia autorizada somente para uso em sala de aula. 33 © 2011 Computer Science Unplugged (csunplugged.org)
  • 42.
    Um exemplo práticopara os mais espertos ! Esta mesma técnica de verificação é utilizada em códigos de livro. Livros publicados possuem um código de dez dígitos normalmente encontrados na contracapa. O décimo dígito é um dígito verificador, tal qual os bits de paridade do exercício. Isto significa que se você encomendar um livro usando o seu ISBN (International Standard Book Number – Padrão Internacional de Número de Livro), o editor pode verificar se você cometeu um erro. Eles simplesmente testam a soma verificadora. Assim, você não acaba esperando o livro errado ! Veja como calcular a soma verificadora: multiplique por dez o primeiro dígito, o segundo por nove, o terceiro por oito, e assim por diante, até o nono dígito multiplicado por dois. Some esses valores. Por exemplo, o ISBN 0-13-911991-4 fornece o seguinte valor (0 × 10) + (1 × 9) + (3 × 8) + (9 × 7) + (1 × 6) + (1 × 5) + (9 × 4) + (9 × 3) + (1 × 2) = 172 Em seguida, divida o resultado por onze. Qual é o resto ? 172 ÷ 11 = 15 resto 7 Se o resto for igual a zero, então a soma verificadora é zero. Caso contrário, subtraia 11 do resto para obter a soma verificadora. 11 – 7 = 4 Olhe novamente. Este é o último dígito do ISBN acima ? Sim ! Se o último dígito do ISBN não fosse quatro, então saberíamos que houve um erro. Também é possível obter uma soma verificadora de valor 10, o que demandaria mais de um dígito. Quando isso acontece, utilizamos a letra X. Código de barras de uma caixa da empresa Weet-Bix ™ Outro exemplo de uso do dígito verificador são os códigos de barra de produtos, os quais usam uma fórmula diferente. Se o código de barras não é lido corretamente, então o dígito final será diferente do valor calculado. Quando isso acontece, o equipamento de leitura emite um sinal sonoro para que o operador do equipamento refaça a leitura do código de barras. 34 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 43.
    Verifique esse livro! Detetive Faro-fino Serviço de Rastreamento de Livros, Ltda. Encontramos e verificamos dígitos de ISBN por preços imbatíveis. Procure-nos! Pesquise e verifique códigos reais de ISBN em sua sala de aula ou na biblioteca. As somas verificadoras estão corretas ? Às vezes, cometemos erros. Alguns exemplos de erros comuns são: Um dígito teve seu valor alterado; Dois dígitos adjacentes foram trocados entre si; Foi inserido um dígito no número; e Um dígito foi retirado do número Você pode encontrar um código ISBN de livro com a letra X para uma soma verificadora de valor 10 ? Não deverá ser difícil encontrá-lo — um dentre 11 livros devem ter esta soma. Quais tipos de erros aconteceriam e não seriam detectados ? Você pode alterar um dígito e ainda obter a soma verificadora correta ? E se dois dígitos forem trocados (um erro de digitação comum) ? Cópia autorizada somente para uso em sala de aula. 35 © 2011 Computer Science Unplugged (csunplugged.org)
  • 44.
    De que setrata tudo isso ? Imagine que você está depositando R$ 10,00 em dinheiro na sua conta bancária. O caixa digita o valor do depósito e o envia para um computador central. Contudo, suponha que alguma interferência ocorre na linha enquanto o montante está sendo enviado e o código de R$ 10,00 é alterado para R$ 1.000,00. Não há problema se você for o cliente, mas, obviamente, há claramente um problema para o banco ! É importante detectar erros nos dados transmitidos. Portanto, um computador precisa verificar que os dados recebidos não foram corrompidos por algum tipo de interferência elétrica na linha de transmissão. Às vezes, os dados originais podem ser reenviados se um erro foi transmitido, mas existem situações nas quais isso é inviável, por exemplo, caso um disco ou fita seja corrompido pela exposição a radiações magnéticas ou elétricas, pelo calor ou por danos físicos. Se os dados fossem recebidos de uma sonda espacial profunda, seria muito tedioso esperar pela retransmissão em caso de erro ! (Demora pouco mais de meia hora para conseguir um sinal de rádio para Júpiter quando este se encontra na sua posição mais próxima à Terra !) Precisamos ser capazes de reconhecer quando os dados foram corrompidos (detecção de erro) e de reconstruir os dados originais (correção de erro). A mesma técnica que foi utilizada no jogo de “virar as cartas” é usada em computadores. Colocando bits em linhas e colunas imaginárias, e acrescentando bits de paridade para cada linha e coluna, podemos não somente detectar se ocorreu um erro, mas quando este erro aconteceu. O valor do bit incorreto é modificado e, com isso, realizamos sua correção. Obviamente, os computadores usam freqüentemente sistemas de controle de erros mais complexos capazes de detectar e corrigir erros múltiplos. O disco rígido em um computador tem uma grande quantidade de espaço alocado para corrigir erros para que este funcione de forma confiável ainda que partes do disco falhem. Os sistemas utilizados para esse fim são bastante próximos ao esquema de paridade. Soluções e dicas Erros que não seriam detectados são aqueles nos quais um dígito é incrementado e outro é decrementado. Neste caso, o valor da soma permanece inalterada. 36 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 45.
    Atividade 5 Vinte Palpites—Teoria da Informação Sumário Quanta informação existe em 1.000 páginas de livro ? Existe mais informação em 1.000 páginas de uma lista telefônica, ou em uma resma de 1.000 folhas de papel em branco, ou no livro Senhor dos Anéis de Tolkien ? Se podemos mensurar isto, podemos estimar quanto espaço é necessário para armazenar a informação. Por exemplo, você consegue ler a seguinte frase ? Vc cnsg lr td ? Você consegue, provavelmente, porque não há muitas “informações” nas vogais. Esta atividade introduz uma forma de mensurar o conteúdo da informação. Matérias correlacionadas Matemática: Números. Faixas de valores, funções maior que e menor que Álgebra. Padrões e sequências Português Habilidades Comparando números e trabalhando com faixas de valores Dedução Formulação de perguntas Idades A partir de 10 anos Material Não são necessários quaisquer materiais para a primeira atividade Há uma atividade de extensão para a qual cada criança precisará de: Folha de Atividade: Árvores de Decisão (página 40) Cópia autorizada somente para uso em sala de aula. 37 © 2011 Computer Science Unplugged (csunplugged.org)
  • 46.
    Vinte Palpites Discussão 1. Discuta com as crianças o que elas acham que é informação. 2. Como podemos medir a quantidade de informação que haveria em um livro ? O importante é o número de páginas ou de palavras ? Um livro pode ter mais informações do que outro ? E se o livro for muito chato ou for particularmente interessante ? Será que 400 páginas de um livro com a frase “blá, blá, blá” tem mais ou menos informação do que, por exemplo, a lista telefônica ? Explique que os cientistas da computação mensuram a informação por quão surpreendente a mensagem (ou livro !) é. Falar para você algo que você já sabe—por exemplo, quando um amigo que sempre caminha para a escola diz “Hoje caminhei para a escola”—não lhe fornece qualquer informação, pois não é surpreendente. Se, ao invés disso, seu amigo disser “Hoje peguei uma carona para a escola em um helicóptero”, isso seria surpreendente e, portanto, nos traria uma grande quantidade de informação. Como o valor de surpresa de uma mensagem pode ser mensurado ? Uma maneira consiste em ver quanto é difícil adivinhar a informação. Se seu amigo diz “Adivinhe como fui à escola hoje”, e ele tivesse caminhado, você provavelmente acertaria na primeira tentativa. Poderia levar mais algumas tentativas antes de você chegar ao helicóptero, e ainda mais se eles tivessem viajado em uma nave espacial. A quantidade de informação contida nas mensagens é mensurada pela dificuldade em adivinhá-las. O jogo seguinte nos fornece uma idéia disso. 38 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 47.
    Atividade das VintePerguntas Esta é uma adaptação do jogo das 20 perguntas. As crianças podem fazer perguntas a uma criança escolhida, a qual responde somente sim ou não até que se advinhe a resposta. Qualquer pergunta pode ser feita, contanto que a resposta seja estritamente 'sim' ou 'não'. Sugestões: Estou pensando em: um número entre 1 e 100 um número entre 1 e 1000 um número entre 1 e 1.000.000. qualquer número inteiro uma sequência de 6 números que sigam um padrão (adequado ao grupo). Adivinhe na ordem do primeiro ao último. (por exemplo, 2, 4, 6, 8, 10) Conte o número de perguntas feitas. Esta é a medida do valor da “Informação”. Discussão Quais estratégias você usou ? Quais foram as melhores ? Ressalte que é preciso apenas 7 palpites para advinhar um número entre 1 e 100 se você reduzir à metade o intervalo de busca a cada vez. Por exemplo: É menor que 50 ? Sim. É menor que 25 ? Não. É menor que 37 ? Não. É menor que 43 ? Sim. É menor que 40 ? Não. É menor que 41 ? Não. Deve ser 42 ! Sim ! Curiosamente, se o intervalo é aumentado para até 1000 não se requer um esforço 10 vezes maior—são necessárias apenas três perguntas adicionais. Cada vez que o intervalo dobra, somente é necessário uma pergunta a mais para encontrar a resposta. Uma maneira de continuar a atividade seria deixar as crianças jogarem “Senha” (Mastermind). Extensão: Quanta informação existe em uma mensagem ? Cientistas da computação não usam somente advinhações com números— também pode- se adivinhar qual a próxima letra mais provável de ocorrer em uma palavra ou frase. Faça um jogo de adivinhação com uma frase curta de 4 a 6 palavras. As letras devem ser descobertas na ordem correta, da primeira à última letra. Arranje alguém para escrever as letras encontradas e conte quantas perguntas foram necessárias para encontrar cada letra. Qualquer pergunta cuja resposta seja sim/não pode ser utilizada. Alguns exemplos são: “É um t ?”, “Trata-se de uma vogal ?”, “Precede m no alfabeto ?”. Um espaço entre palavras também conta como uma “letra” e deve ser adivinhada. Faça um revezamento e veja se você consegue descobrir quais partes das mensagens são mais fáceis de adivinhar. Cópia autorizada somente para uso em sala de aula. 39 © 2011 Computer Science Unplugged (csunplugged.org)
  • 48.
    Folha de Atividade:Árvores de Decisão Se você já sabe a estratégia para fazer as perguntas, você pode transmitir uma mensagem sem ter que perguntar nada. A seguir temos um esquema chamado de “árvore de decisão” que permite adivinhar um número entre 0 e 7: Quais são as decisões/escolhas da forma sim/não necessárias para "adivinhar" o número 5 ? Quantas decisões da forma sim/não você deve tomar para descobrir um número qualquer ? Agora veja algo extremamente fascinante. Abaixo dos números 0, 1, 2, 3 ..., na última linha da árvore, escreva o número em binário (veja a Atividade 1). Olhe cuidadosamente para a árvore. Se não = 0 e sim = 1, o que você nota ? No jogo de adivinhar números, procuramos escolher as perguntas de tal forma que a sequência de respostas sirva para representar o número exatamente dessa maneira. Projete sua própria árvore de decisão para adivinhar números entre 0 e 15. Para os mais espertos: Qual tipo de árvore você usaria para adivinhar a idade de alguém ? E para adivinhar a próxima letra em uma frase ? 40 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 49.
    De que setrata tudo isso ? Um célebre matemático americano (e malabarista, e monociclista) chamado Claude Shannon fez uma série de experimentos com este jogo. Ele mensurou a quantidade de informação em bits—cada resposta sim/não equivale a um bit 1/0. Ele descobriu que a quantidade de “informação” contida numa mensagem depende do que você já sabe. Às vezes, perguntamos algo que evita fazer diversas perguntas. Neste caso, o conteúdo da informação é baixo. Por exemplo, a informação no lançamento de uma moeda é normalmente de um bit: cara ou coroa. Entretanto, se a moeda for tendenciosa para mostrar cara nove em cada dez vezes, então a informação deixa de ser um bit—acredite se quiser, é menos do que um bit. Como você pode descobrir como a moeda caiu com menos de uma pergunta do tipo sim ou não ? Simples—basta fazer perguntas como “As próximas duas moedas atiradas serão cara ?”. Para uma sequência de lançamentos com uma moeda viciada, a resposta será “sim” cerca de 80% das vezes. Nas outras 20% das vezes, em que a resposta é “não”, você deve fazer duas perguntas adicionais. Porém, em média, você fará menos de uma pergunta por lançamento ! Shannon chamou as informações relativas ao conteúdo de uma mensagem de “entropia”. A entropia depende não apenas do número de resultados possíveis—dois, no caso do lançamento de uma moeda— mas também na probabilidade disso acontecer. Acontecimentos improváveis ou informações surpreendentes requerem mais perguntas para adivinhar a mensagem porque estes nos fornecem mais informações além das quais já sabíamos, como no caso de ir em um helicóptero para a escola. A entropia de uma mensagem é muito importante para os cientistas da computação. Você não pode comprimir uma mensagem de tal forma que esta ocupe menos espaço do que sua entropia, e os melhores sistemas de compressão são equivalentes a um jogo de adivinhação. Dado que um programa de computador faz os “palpites”, a lista de perguntas pode ser reproduzida posteriormente. Assim, contanto que as respostas (bits) sejam armazenadas, podemos reconstruir a informação ! Os melhores sistemas de compressão podem reduzir um arquivo texto até um quarto do seu tamanho original—uma grande economia de espaço de armazenamento ! O método de adivinhação também pode ser usado para construir uma interface de computador que prediz a próxima letra que o usuário digitará ! Isto pode ser muito útil para pessoas com problemas físicos que tenham dificuldade em escrever. O computador pode sugerir o que será digitado na sequência e o usuário apenas indica se essa opção é a que ele deseja. Um bom sistema precisa, em média, de apenas duas respostas do tipo sim/não por letra e pode ser de grande ajuda para alguém com dificuldade em realizar os movimentos delicados necessários para controlar um mouse ou teclado. Este tipo de sistema, em uma forma diferente, também é utilizado para “digitar” texto em alguns telefones celulares. Cópia autorizada somente para uso em sala de aula. 41 © 2011 Computer Science Unplugged (csunplugged.org)
  • 50.
    Soluções e dicas A resposta para uma pergunta da forma sim/não corresponde a exatamente um bit de informação—seja uma pergunta simples como “É maior do que 50 ?” ou uma pergunta mais complexa como “Está entre 20 e 60 ?” No jogo de adivinhar o número, se as perguntas são escolhidas de certa maneira, a sequência das respostas é simplesmente a representação binária do número. O número três é 011 em binário e é representado pela resposta “Não, sim, sim” na árvore de decisão, o que equivale a escrevermos não para 0 e sim para 1. Uma árvore que você usaria para advinhar a idade de alguém poderia estar melhor dirigida a advinhar os números menores. A decisão sobre as letras em uma frase podem se basear sobre qual era a letra anterior. 42 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 51.
    Parte II Colocando osComputadores para Trabalhar—Algoritmos
  • 52.
    Colocando os computadorespara trabalhar Os computadores operam seguindo uma lista de instruções estabelecida para eles. Essas instruções os permitem ordenar, pesquisar e enviar informações. Para fazer essas coisas, o mais rápido possível, você precisa de bons métodos para pesquisar coisas em grandes coleções de dados e para enviar informações através das redes. Um algoritmo é um conjunto de instruções para completar uma tarefa. A idéia de algoritmo é central para a ciência da computação. Através dos algoritmos utilizamos os computadores para resolver problemas. Alguns algoritmos são mais rápidos do que outros, e muitos dos algoritmos que foram descobertos tornaram possível resolver problemas que anteriormente levavam um tempo inaceitável—por exemplo, encontrar milhões de dígitos do número Pi, todas as páginas da Internet que contém o seu nome, a melhor maneira de se acomodar pacotes num contêiner ou verificar se números muito grandes (100 dígitos) são primos. A palavra “algoritmo” é derivada do nome de Mohammed ibn Musa Al-Khowarizmi— Mohammed, filho de Moisés, de Khowarizm—que fez parte de um centro acadêmico conhecido como a Casa da Sabedoria, em Bagdá, por volta de 800 d.C. Seus trabalhos transmitiram a arte hindu de calcular aos árabes e, a partir daí, ao resto da Europa. Quando estes trabalhos foram traduzidos para o latim em 1120 d.C., as primeiras palavras eram “Dixit Algorismi” —“assim disse Algorismi”. 44 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 53.
    Atividade 6 Batalha Naval — Algoritmos de Busca Sumário Computadores são freqüentemente requisitados a encontrar informação em grandes coleções de dados. Estes precisam desenvolver métodos rápidos e eficientes de fazer isso. Essa atividade demonstra três diferentes métodos de pesquisa: busca linear, busca binária e busca por dispersão/espalhamento (“hashing”). Matérias correlacionadas Matemática: Números: maior que, menor que, iguais a. Geometria: Plano e espaço: coordenadas. Habilidades Raciocínio Lógico Idades De 9 anos em diante Material Cada criança precisará de: Cópia dos jogos Batalha Naval 1A e 1B para o jogo 1 2A e 2B para o jogo 2 3A e 3B para o jogo 3 Você precisará também de algumas cópias das folhas de jogos suplementares 1A', 1B', 2A', 2B', 3A' e 3B'. Cópia autorizada somente para uso em sala de aula. 45 © 2011 Computer Science Unplugged (csunplugged.org)
  • 54.
    Batalha Naval Atividade Introdutória 1. Escolha em torno de 15 crianças para formar uma fileira na frente da classe. Dê a cada criança um cartão com um número (em ordem aleatória). Mantenha os números escondidos do resto da classe. 2. Dê a outra criança quatro ou cinco doces. O trabalho dela é descobrir um determinado número. Ela pode “pagar” para olhar um cartão específico. Se encontrar o número correto antes de usar todos os seus doces, ela fica com o restante dos doces. 3. Repita a atividade, se quiser. 4. Agora embaralhe as cartas e as distribua novamente. Desta vez, as crianças devem se organizar em ordem crescente. Repita o processo de busca. Se os números estão ordenados, uma estratégia sensata é usar somente um “pagamento“ para eliminar metade das crianças, escolhendo a criança do meio para revelar o seu cartão. Repetindo esse procedimento, é possível encontrar o número usando somente três doces. O ganho de eficiência será óbvio. Atividade As crianças podem ter uma idéia de como um computador faz pesquisas jogando Batalha Naval. A utilização do jogo faz com que elas pensem acerca das estratégias que estão usando para localizar os navios. 46 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 55.
    Batalha Naval—Um jogode busca linear Leia as seguintes instruções para as crianças 1. Formem duplas. Um de vocês pega a folha 1A, e o outro a folha 1B. Não mostrem sua folha para o seu parceiro ! 2. Ambos circulam um navio de guerra na linha superior da folha do jogo e informam o número do navio ao seu parceiro. 3. Agora, revezem-se para adivinhar onde está o navio do seu parceiro. (Você diz a letra de um navio e o seu parceiro lhe diz o navio correspondente a essa letra). 4. Quantos tiros são necessários para localizar o navio do seu parceiro ? Essa é a sua pontuação no jogo. (As folhas 1A' e 1B' são extras para crianças que gostariam de jogar mais vezes ou que “inadvertidamente” viram a folha do seu parceiro. As folhas 2A', 2B' e 3A', 3B' são para os jogos seguintes). Discussão 1. Quais foram as pontuações ? 2. Quais seriam as pontuações máxima e mínima possíveis ? (São 1 e 26, respectivamente, assumindo que as crianças não atiram no mesmo navio duas vezes. Esse método é chamado de ‘busca linear’ porque envolve passar por todas as posições, uma a uma). Cópia autorizada somente para uso em sala de aula. 47 © 2011 Computer Science Unplugged (csunplugged.org)
  • 56.
    Batalha Naval—Um jogode busca binária Instruções: As instruções para essa versão do jogo são as mesmas do jogo anterior, mas os números dos navios estão em ordem crescente. Explique isso às crianças antes de começarem. 1. Formem duplas. Um de vocês pega a folha 2A, o outro a folha 2B. Não mostrem sua folha ao seu parceiro ! 2. Ambos circulam um navio da linha superior de sua folha de jogo e dizem o número do navio ao seu parceiro. 3. Agora, revezem-se para adivinhar onde está o navio do seu parceiro. (Você diz a letra de um navio e o seu parceiro lhe diz o navio correspondente a essa letra). 4. Quantos tiros são necessários para localizar o navio do seu parceiro ? Essa é a sua pontuação no jogo. Discussão 1. Quais foram as pontuações ? 2. Qual foi a estratégia usada pelos jogadores que tiveram baixa pontuação ? 3. Qual o navio você deveria escolher primeiro ? (O navio do meio lhe informa em qual metade da linha o navio escolhido deve estar). Qual posição você deve escolher em seguida ? (Novamente, a melhor estratégia é escolher sempre o navio que está na metade da seção que deve conter o navio escolhido.) 4. Se esta estratégia é aplicada, quantos tiros são necessários para encontrar um navio ? (Cinco, no máximo). Esse método é chamado de ‘busca binária’ porque divide o problema em duas partes. 48 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 57.
    Batalha Naval— Umjogo de busca usando Hashing Instruções 1. Cada criança escolhe uma folha, como no jogo anterior, e diz ao seu parceiro o número do navio escolhido. 2. Nesse jogo você pode descobrir em qual a coluna (0 a 9) o navio está. Basta somar os dígitos do número do navio. O último dígito da soma é a coluna em que o navio está. Por exemplo, para localizar o navio de número 2345, some os dígitos 2+3+4+5, totalizando 14. O último dígito da soma é 4. Portanto, o navio tem que estar na coluna 4. Ao conhecer a coluna, você deve adivinhar qual dos navios naquela coluna é o desejado. Essa técnica é chamada “hashing” porque os dígitos são “espremidos” (do inglês, “hashed”) uns contra os outros. 3. Agora jogue usando esta nova estratégia de busca. Você pode jogar mais de um jogo usando a mesma folha – basta escolher colunas diferentes. (Note que, diferentemente de outros jogos, as folhas reservas 3A' e 3B' devem ser usadas em pares, porque o padrão dos navios nas colunas deve ser correspondente). Discussão 1. Colete e discuta as pontuações como antes. 2. Quais navios foram achados mais rapidamente ? (Aqueles que estão sós em suas colunas). Quais foram mais difíceis de serem encontrados ? (Aqueles em colunas que continham muitos outros navios.) 3. Qual dos três algoritmos de busca é o mais rápido ? Por quê ? Quais são as vantagens de cada um dos três diferentes modos de busca? (A segunda estratégia é mais rápida do que a primeira, mas a primeira não requer que os navios estejam ordenados. A terceira estratégia é geralmente mais rápida que as demais, mas, é possível que seja bastante lenta em algumas situações. (No pior caso, se todos os navios estiverem na mesma coluna, esta será tão lenta quanto a primeira estratégia.)
  • 58.
    Atividades de Extensão 1. Faça com que as crianças construam seus próprios jogos usando os três formatos. Para o segundo jogo, elas devem colocar os números em ordem crescente. Pergunte como elas dificultariam ainda mais o jogo de busca baseado em hashing. (O jogo torna-se mais difícil quando todos os navios estão na mesma coluna.) Como você faria para torná-lo o mais fácil possível ? (Você deve tentar colocar o mesmo número de navios em cada coluna.) 2. O que aconteceria se o navio procurado não existisse? (No jogo de busca linear seriam necessários 26 tiros para mostrar isso. Com a busca binária seriam necessários 5 tiros. Quando se utiliza o sistema de hashing, isso depende de quantos navios presentes na coluna em questão.) 3. Usando a estratégia de busca binária, quantos tiros seriam necessários se houvessem cem posições (cerca de 6 tiros), mil posições (cerca de 9 tiros), ou um milhão (cerca de 19 tiros) ? (Note que o número de tiros aumenta muito lentamente se comparado ao número de navios. Um tiro extra é necessário cada vez que o número de navios dobra. Assim, diz- se que o número de tiros é proporcional ao logaritmo do número de navios.) 50 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 59.
    Meus Ships My navios Número de disparos: Number of Shots Used: 9058 7169 3214 5891 4917 2767 4715 674 8088 1790 8949 13 3014 A B C D E F G H I J K L M 8311 7621 3542 9264 450 8562 4191 4932 9462 8423 5063 6221 2244 N O P Q R S T U V W X Y Z Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org) Seus navios Your Ships Número de disparos: Number of Shots Used: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 51 1A
  • 60.
    Número de disparos: Número de disparos: Meus navios Seus navios 52 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 61.
    Número de disparos: Número de disparos: Meus navios Seus navios Cópia autorizada somente para uso em sala de aula. 53 © 2011 Computer Science Unplugged (csunplugged.org)
  • 62.
    Meus navios Número de disparos: Seus navios Número de disparos:
  • 63.
    Meus navios My Ships Number of Shots Used: Número de disparos: 0 1 2 3 4 5 6 7 8 9 H 8051 R 9891 W 1062 E 5125 L 7116 O 6000 A 9047 C 3080 I 1481 S 1989 X 2106 F 1480 J M 8944 P 7432 V 4392 4712 T 2050 Y 5842 B 1829 D 9994 G 8212 K 6422 N 4128 Q 4110 U 8199 Z 7057 Seus navios Your Ships Numberde disparos: Número of Shots Used: 0 1 2 3 4 5 6 7 8 9 A R E H L O V B S Y F I K M P W C T Z G J N Q X D U 3A
  • 64.
    Meus navios Número de disparos: Seus navios Número de disparos:
  • 65.
    Meus navios Número de disparos: Seus navios Número de disparos:
  • 66.
    Número de disparos: Número de disparos: Meus navios Seus navios 58 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 67.
    Número de disparos: Número de disparos: Meus navios Seus navios Cópia autorizada somente para uso em sala de aula. 59 © 2011 Computer Science Unplugged (csunplugged.org)
  • 68.
    Número de disparos: Número de disparos: Meus navios Seus navios 60 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 69.
    Número de disparos: Número de disparos: Meus navios Seus navios Cópia autorizada somente para uso em sala de aula. 61 © 2011 Computer Science Unplugged (csunplugged.org)
  • 70.
    Número de disparos: Número de disparos: Meus navios Seus navios 62 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 71.
    De que setrata tudo isso ? Computadores armazenam grandes quantidades de informação e precisam ser capazes de vasculhar essas informações rapidamente. Um dos maiores problemas de busca do mundo é tratado pelos motores de busca da internet, os quais devem pesquisar bilhões de páginas em uma fração de segundo. O dado informado ao computador para a pesquisa, tal como uma palavra, um número de código de barras ou o nome de um autor, é chamado de chave de busca. Computadores podem processar informações muito rapidamente e você poderia pensar que para encontrar algo eles deveriam simplesmente começar no início de onde os dados estão armazenados e procurar até a informação desejada ser encontrada. Isto é o que fizemos no jogo de busca linear. Entretanto, esse método é muito lento – até mesmo para os computadores. Por exemplo, suponha um supermercado que tenha 10 mil produtos diferentes em suas prateleiras. Quando um código de barras é lido numa compra, o computador deve procurar entre 10 mil números para encontrar o nome e o preço do produto. Mesmo que leve apenas um milésimo de segundo para checar cada código, seriam necessários 10 segundos para vasculhar toda a lista. Imagine a demora para processar as compras de uma família ! Uma estratégia melhor é a busca binária. Nesse método, os números estão ordenados. Verificando o item do meio da lista identificará em qual metade a chave de busca está. O processo é repetido até o item ser encontrado. Retornando ao exemplo do supermercado, os 10 mil itens podem ser pesquisados em quatorze sondagens, levando em torno de duzentos milissegundos, quase imperceptível. Uma terceira estratégia para encontrar os dados se chama hashing. Nesta abordagem, a chave é manipulada para indicar exatamente onde encontrar a informação. Por exemplo, se a chave de busca for um número de telefone, você poderia somar todos os dígitos do número e pegar o resto da divisão da soma por 11. Nesse aspecto, uma chave de hash é parecida com os dígitos verificadores discutidos na Atividade 4 - porções de dados cujo valor depende do outro dado sendo processado. Em geral, o computador encontrará o que procura rapidamente. Há uma pequena chance de que diversas chaves levem ao mesmo local e, neste caso, o computador precisará procurar nestes locais até encontrar a informação pesquisada. Programas de computador geralmente usam alguma variante da estratégia de hashing para a busca, a menos que seja necessário que os dados estejam ordenados ou se não for possível aceitar respostas lentas em algumas circunstâncias. Cópia autorizada somente para uso em sala de aula. 63 © 2011 Computer Science Unplugged (csunplugged.org)
  • 72.
    Atividade 7 O mais leve e o mais pesado—Algoritmos de Ordenação Sumário Os computadores são muitas vezes utilizados para colocar listas em algum tipo de ordem, por exemplo, nomes em ordem alfabética, compromissos ou e-mails por data, ou itens em ordem numérica. Classificar listas nos ajuda a encontrar as coisas rapidamente, e também facilita a identificação dos valores extremos. Se você classificar as notas de uma prova em ordem numérica, a nota mais baixa e a mais alta tornam-se evidentes. Se você usar o método errado, pode demorar muito tempo para ordenar uma lista grande, mesmo em um computador rápido. Felizmente, vários métodos rápidos de ordenação são conhecidos. Nesta atividade, as crianças descobrirão métodos diferentes para ordenação e verão como um método inteligente pode executar a tarefa muito mais rapidamente do que um método simples. Matérias correlacionadas Matemática: realização de pesagem. Habilidades Usar uma balança Ordenar Comparar Idades De 8 anos em diante Material Cada grupo de crianças precisará de: Conjuntos de 8 contêineres do mesmo tamanho, mas de pesos diferentes (ex: caixas de leite ou rolos de filme cheios de areia ) Uma balança Folha de Atividade: Ordenando pesos (página 66) Folha de Atividade: Dividir e conquistar (página 67) 64 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 73.
    O mais levee o mais pesado Discussão Freqüentemente, os computadores devem ordenar listas de coisas. Pense em todas as situações nas quais colocar as coisas em ordem seja importante. O que aconteceria se estas coisas não estivessem em ordem ? Os computadores geralmente comparam apenas dois valores por vez. A atividade na próxima página usa essa restrição para dar as crianças uma idéia do que se trata. Atividade 1. Divida as crianças em grupos. 2. Cada grupo precisará de uma cópia da folha de atividade da página 66 e os seus próprios pesos e balanças. 3. Peça às crianças para fazerem a atividade e, depois, discuta o resultado. Cópia autorizada somente para uso em sala de aula. 65 © 2011 Computer Science Unplugged (csunplugged.org)
  • 74.
    Folha de Atividade:Ordenando pesos Objetivo: Encontrar o melhor método para ordenação de um grupo de pesos desconhecidos Você precisará de: Areia ou água, 8 recipientes idênticos e um conjunto de balanças O que fazer: 1. Encher cada recipiente com uma quantidade diferente de areia ou água. Sele-o firmemente. 2. Misture-os de modo que você já não saiba a ordem dos pesos. 3. Encontre o menor peso. Qual é a maneira mais fácil de fazer isso ? Nota: Você só está autorizado a utilizar a balança para descobrir quanto pesa cada recipiente. Apenas dois pesos podem ser comparados ao mesmo tempo. 4. Escolha 3 pesos aleatoriamente e coloque-os na ordem do mais leve para o mais pesado usando somente a balança. Como você fez isso ? Qual é o número mínimo de comparações que você pode fazer ? Por quê ? 5. Agora coloque todos os objetos na ordem do mais leve ao mais pesado. Quando você achar que terminou, verifique sua ordenação pesando novamente cada par de objetos. Ordenação por Seleção Um método que o computador pode utilizar é chamado de ordenação por seleção, que funciona da seguinte forma. Primeiro, encontre o peso mais leve no conjunto e o coloque de lado. Em seguida, encontre o mais leve dos pesos restantes e o retire. Repita esse procedimento até que todos os pesos sejam removidos. Conte quantas comparações você fez. Para os mais espertos: Mostre como você pode calcular matematicamente o número de comparações necessárias para ordenar 8 objetos. E para 9 objetos? E 20? 66 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 75.
    Folha de Atividade:Dividir e Conquistar Quicksort O quicksort é muito mais rápido do que a ordenação por seleção, especialmente para listas grandes. De fato, é um dos melhores métodos conhecidos. Esta é a forma como o quicksort funciona. Escolha um dos objetos de forma aleatória, e coloque-o em um dos lados da balança. Agora compare cada um dos objetos restantes com ele. Coloque aqueles que são mais leves do lado esquerdo, o objeto escolhido no meio, e os mais pesados na direita. (Por acaso, você pode acabar com mais objetos de um lado do que do outro.) Escolha um dos grupos de objetos e repita esse procedimento. Faça o mesmo para o outro grupo. Lembre-se de manter aquele que você escolheu no centro. Continue repetindo este procedimento em relação aos grupos restantes até que nenhum grupo tenha mais do que um objeto. Assim que todos os grupos estiverem divididos e reduzidos a um único objeto, os objetos estarão, por fim, ordenados do mais leve ao mais pesado. Quantas comparações são efetuadas por este procedimento? Você deve achar que o quicksort é um método mais eficiente do que a ordenação por seleção a não ser que você tenha escolhido o peso mais leve ou o mais pesado para começar. Se você teve a sorte de ter escolhido o peso médio, você deve ter feito apenas 14 comparações, ao passo que são feitas 28 comparações na ordenação por seleção. De qualquer forma, o método quicksort nunca será pior do que qualquer ordenação por seleção e pode ser muito melhor ! Para os mais espertos: Se o quicksort acidentalmente sempre escolher o peso mais leve, quantas comparações serão feitas ? Cópia autorizada somente para uso em sala de aula. 67 © 2011 Computer Science Unplugged (csunplugged.org)
  • 76.
    Variações e extensões Existem diversos métodos de ordenação. Você pode tentar ordenar os pesos através dos seguintes métodos. A ordenação por inserção remove cada objeto de um grupo desordenado e o insere na sua posição correta em numa lista crescente (veja a figura abaixo). A cada inserção, o grupo de objetos desordenados diminui e a lista ordenada aumenta até que, finalmente, toda a lista esteja ordenada. Jogadores de cartas muitas vezes usam esse método para ordenar as cartas em suas mãos. A ordenação por borbulhamento ou método da bolha (Bubble sort) percorre a lista diversas vezes trocando quaisquer objetos adjacentes que não estejam na ordem correta. A lista está ordenada assim que não ocorre mais nenhuma troca durante uma passagem pela lista. Este método não é muito eficiente, mas algumas pessoas o consideram mais fácil de compreender do que os outros métodos. O método de fusão (Mergesort) utiliza a técnica de “dividir e conquistar” para ordenar uma lista de elementos. Primeiro, divide-se a lista aleatoriamente em duas listas de tamanhos iguais (ou quase iguais, se houver um número ímpar de elementos). Cada uma das duas listas é ordenada e, em seguida, as listas são intercaladas entre si. É fácil mesclar duas listas ordenadas: basta retirar repetidamente o menor dos dois elementos que estão no início das duas listas. Na figura abaixo, os pesos de 40 e 60 gramas estão no início das listas. Portanto, o próximo elemento a ser adicionado é o peso de 40 gramas. Como devemos ordenar as listas menores ? Simples, basta usar o método de fusão ! Todas as listas serão finalmente divididas em elementos individuais. Portanto, não é preciso se perguntar quando parar. 68 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 77.
    De que setrata tudo isso ? É muito mais fácil encontrar uma informação em uma lista ordenada. Listas telefônicas, dicionários e índices de livros utilizam a ordem alfabética, e a vida seria muito mais difícil se eles não o fizessem. Se uma lista de números (como uma lista de despesas) for ordenada, os pontos extremos são fáceis de ver porque eles estão no começo e no fim da lista. As duplicatas também são fáceis de encontrar porque acabam ficando juntas. Os computadores gastam muito tempo ordenando as coisas. Portanto, os cientistas da computação devem descobrir métodos rápidos e eficientes para fazer isto. Alguns dos métodos mais lentos tais como a ordenação por inserção, ordenação por seleção e método da bolha podem ser úteis em situações especiais, porém os métodos mais rápidos, a exemplo do quicksort, são geralmente utilizados. O método quicksort usa um conceito chamado recursão. Isso significa que você permanece dividindo uma lista em partes menores e, em seguida, realiza o mesmo tipo de ordenação em cada uma das partes da lista. Esta abordagem, em particular, é chamada de dividir e conquistar. A lista é dividida repetidamente até que se torne pequena o suficiente para resolver o problema (conquistar). No quicksort, as listas são divididas até que contenham apenas um elemento. É trivial ordenar um elemento ! Embora isto pareça muito demorado, na prática, é drasticamente mais rápido do que os outros métodos. Cópia autorizada somente para uso em sala de aula. 69 © 2011 Computer Science Unplugged (csunplugged.org)
  • 78.
    Soluções e dicas 4. A melhor maneira de encontrar o peso mais leve é ir, de objeto em objeto, marcando qual o mais leve até aquele ponto. Ou seja, comparar dois objetos e ficar com o mais leve. Então, compare com outro, ficando com o mais leve da comparação. Repita esse procedimento até ter utilizado todos os objetos. 5. Compare os pesos na balança. Isso pode ser facilmente realizado com três comparações e, às vezes, duas bastam—se as crianças perceberem que a operação de comparação é transitiva (Isto é, se A é mais leve que B e B é mais leve que C, então A tem de ser mais leve que C). Especialistas: Esse é um atalho para totalizar o número de comparações da ordenação por seleção. Para encontrar o menor entre dois objetos, você precisa de uma comparação, três objetos precisam de duas, quatro precisam de três e assim por diante. Ordenar oito objetos com a ordenação por seleção requer sete comparações para encontrar o primeiro, seis para encontrar o próximo, cinco para o próximo e assim sucessivamente. Isso nos fornece: 7 + 6 + 5 + 4 + 3 + 2 + 1 = 28 comparações. n objetos precisariam de 1 + 2 + 3 + 4 +… + n – 1 comparações para serem ordenados. Totalizar esses números é fácil se os reagruparmos. Por exemplo, para somar os números 1 + 2 + 3 + … + 20, os reagrupamos como (1 + 20) + (2 + 19) + (3 + 18) + (4 + 17) + (5 + 16) + (6 + 15) + (7 + 14) + (8 + 13) + (9 + 12) + (10 + 11) = 21 × 10 = 210 Em geral, a soma 1 + 2 + 3 + 4 … + n – 1 = n(n – 1)/2. 70 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 79.
    Atividade 8 Seja o mais rápido !—Redes de Ordenação Sumário Mesmo os computadores sendo rápidos, há um limite na sua velocidade de resolução de problemas. Uma forma de acelerar as coisas é usar vários computadores para solucionar diferentes partes de um problema. Nesta atividade, usamos as redes de ordenação, as quais efetuam várias comparações de ordenação ao mesmo tempo. Matérias correlacionadas Matemática: Números: maior que, menor que. Habilidades Comparar Ordenar Desenvolver algoritmos Cooperação para resolução de problemas Idades De 7 anos em diante Material Esta é uma atividade de campo em grupo. Giz Dois conjuntos de seis cartões Faça uma cópia da folha “Original para fotocópia: Redes de ordenação” (página 73) em um cartão e recorte Cronômetro Cópia autorizada somente para uso em sala de aula. 71 © 2011 Computer Science Unplugged (csunplugged.org)
  • 80.
    Redes de Ordenação Antes dessa atividade, utilize giz para desenhar essa rede em uma área externa. Instruções para as crianças Esta atividade lhe mostrará como os computadores colocam números aleatórios em ordem utilizando o que se chama de rede de ordenação. 1. Organizem-se em grupos de seis. Apenas uma equipe de cada vez pode utilizar a rede. 2. Cada membro da equipe pega um cartão numerado. 3. Cada membro fica em um quadrado no lado esquerdo (Entrada) da rede. Seus números devem estar embaralhados. 4. Você se move ao longo das linhas marcadas e, ao chegar em um círculo, você deve esperar outra pessoa chegar. 5. Quando outro membro da equipe chegar ao círculo no qual você está, vocês comparam suas cartas. A pessoa com o menor número segue o caminho da esquerda. Se você tiver o maior número na sua carta, tome o caminho à direita. 6. Você estará na ordem correta quando chegar ao outro extremo da rede. Se uma equipe cometer um erro, as crianças devem recomeçar. Verifique se você compreendeu o funcionamento de um nó (círculo) da rede, no qual o menor valor vai para a esquerda e o outro valor vai para a direita. Por exemplo: 72 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 81.
    Original para fotocópia– Redes de Ordenação 1 2 3 4 5 6 156 221 289 314 422 499 Cópia autorizada somente para uso em sala de aula. 73 © 2011 Computer Science Unplugged (csunplugged.org)
  • 82.
    Variações 1. Quando as crianças estiverem familiarizadas com a atividade, use um cronômetro para determinar quanto tempo cada equipe leva para chegar ao final da rede. 2. Use cartões com números maiores (por exemplo, os cartões de três dígitos da fotocópia- mestre). 3. Elabore cartões com números maiores, os quais necessitarão de maior esforço para serem comparados, ou use palavras e as compare por ordem alfabética. Atividades de Extensão 1. O que acontece se o menor for para a direita ao invés de ir para a esquerda e vice-versa ? (Os números são ordenados em ordem inversa). Será que a rede funciona se for utilizada ao contrário ? (Ela não funcionará necessariamente e as crianças devem ser capazes de encontrar um exemplo de uma entrada que saia na ordem errada.) 2. Tente desenhar redes maiores ou menores. Por exemplo, aqui está uma rede que ordena apenas três números. As crianças devem tentar chegar a esta rede por conta própria. 3. Abaixo estão duas redes diferentes que ordenam quatro entradas. Qual é a mais rápida ? (A segunda. Porque a primeira exige que todas as comparações sejam realizadas, uma após a outra. A segunda tem algumas comparações sendo realizadas ao mesmo tempo. A primeira rede é um exemplo de processamento em série enquanto que a segunda utiliza processamento paralelo para executar mais rápido. 4. Tente fazer uma rede de ordenação maior. 5. As redes também podem ser usadas para encontrar o valor mínimo ou máximo das entradas. Por exemplo, aqui está uma rede com oito entradas e a única saída conterá o menor dos fatores da entrada (Os outros valores serão bloqueados na rede). 6. Quais procedimentos do cotidiano podem ou não ser acelerados utilizando paralelismo ? Por exemplo, cozinhar uma refeição seria muito mais lento utilizando apenas uma panela para cozinhar porque os itens teriam de ser cozidos um após o outro. Quais tarefas podem ser completadas mais rapidamente empregando mais pessoas? Quais tarefas não podem ?
  • 83.
    De que setrata tudo isso ? Quanto mais usamos os computadores, queremos que estes processem as informações o mais rápido possível. Um jeito de aumentar a velocidade de um computador é escrever programas que usam menos passos de computação (como mostrado nas Atividades 6 e 7). Outra maneira de resolver problemas mais rapidamente é ter alguns computadores trabalhando em diferentes partes de uma mesma tarefa ao mesmo tempo. Por exemplo, na rede de ordenação de seis números, apesar de haver um total de 12 comparações para ordenar os números, até 3 comparações são feitas simultaneamente. Isso significa que o tempo requerido será o mesmo necessário para apenas 5 passos de comparação. Esta rede paralela ordena a lista mais que duas vezes mais rápido do que um sistema que realiza apenas uma comparação por vez. Nem todas as tarefas podem ser completadas mais rapidamente utilizando computação paralela. Fazendo uma analogia, imagine uma pessoa cavando uma vala de 10 metros de comprimento. Se 10 pessoas cavarem um metro da vala cada uma, a tarefa seria completada muito mais rapidamente. Por outro lado, a mesma estratégia não poderia ser utilizada para um buraco de 10 metros de profundidade - o segundo metro não é acessível até que o primeiro metro tenha sido cavado. Os cientistas da computação continuam ativamente tentando encontrar os melhores métodos para dividir problemas de forma que estes possam ser resolvidos por computadores trabalhando em paralelo. Cópia autorizada somente para uso em sala de aula. 75 © 2011 Computer Science Unplugged (csunplugged.org)
  • 84.
    Atividade 9 A Cidade Enlameada—Árvores Geradoras Mínimas Sumário Nossa sociedade é conectada por muitas redes: redes telefônicas, redes de abastecimento, redes de computadores e redes rodoviárias. Para uma determinada rede, há geralmente algumas escolhas sobre onde estradas, cabos ou ligações de rádio podem ser colocados. Temos de encontrar formas eficientes de conectar esses objetos a uma rede. Matérias correlacionadas Matemática: Formas e espaço: Encontrar os caminhos mais curtos em um mapa. Idades De 9 anos em diante. Habilidades Resolução de problemas Material Cada criança precisará de: Folha de Atividade: O problema da Cidade Enlameada (página 78). Fichas ou quadrados de cartolina (cerca de 40 fichas por criança). 76 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 85.
    A Cidade Enlameada Introdução Esta atividade lhe mostrará como os computadores são usados para encontrar as melhores soluções para os problemas da vida real tais como conectar linhas elétricas entre casas. As crianças devem usar a planilha da página 78, que explica o problema da “Cidade Enlameada”. Discussão Compartilhe as soluções encontradas pelas crianças. Quais estratégias foram utilizadas ? Uma boa estratégia para encontrar a melhor solução é começar com um mapa vazio e, gradualmente, adicionar os pavimentos até que todas as casas estejam conectadas, acrescentando os caminhos em ordem crescente de comprimento, sem conectar casas que já estejam ligadas. Diferentes soluções podem ser encontradas se você mudar a ordem na qual os caminhos de mesmo comprimento são adicionados. Duas soluções possíveis são mostradas abaixo. Outra estratégia consiste em iniciar com todos os caminhos pavimentados e, depois, remover os caminhos que você não precisa. No entanto, isso requer muito mais esforço. Onde você encontraria redes na vida real ? Os cientistas da computação chamam as representações dessas redes de “grafos”. Redes reais podem ser representadas por um grafo para resolver problemas, como projetar a melhor rede de estradas entre cidades ou rotas de vôos no país. Há também muitos outros algoritmos que podem ser aplicados aos grafos, tais como encontrar a distância mais curta entre dois pontos, ou o percurso mais curto que passa por todos os pontos. Cópia autorizada somente para uso em sala de aula. 77 © 2011 Computer Science Unplugged (csunplugged.org)
  • 86.
    Folha de Atividade:O problema da cidade enlameada Era uma vez uma cidade que não tinha estradas. Andar pela cidade era particularmente difícil depois de chuva intensa porque a terra se tornava muito enlameada, o que fazia com que carros ficassem presos na lama e as pessoas sujassem suas botas. O prefeito da cidade decidiu que algumas das ruas deveriam ser pavimentadas, mas ele não queria gastar mais dinheiro do que o necessário, pois a cidade também precisava construir uma piscina. Portanto, o prefeito especificou duas condições: 1. Um número suficiente de ruas devem ser pavimentadas de modo que seja possível para qualquer pessoa ir de sua casa para a casa de qualquer pessoa utilizando apenas estradas pavimentadas, e 2. A pavimentação deve custar o mais barato possível. Aqui está o desenho da cidade. O número de pedras de pavimentação entre cada casa representa o custo de pavimentação dessa via. Encontre o melhor percurso que ligue todas as casas, mas utilize a menor quantidade possível de pedras de pavimentação. Quais estratégias você usou para resolver o problema ? 78 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 87.
    Variações e extensões Está é outra forma de representar as cidades e as estradas: As casas são representadas por círculos, as estradas enlameadas por linhas, e o comprimento de uma estrada é dado pelo número ao lado da linha. Os cientistas da computação e matemáticos usam freqüentemente este tipo de diagrama para representar esses problemas. Eles o chamam de grafo. Elabore alguns de seus próprios problemas do tipo Cidade Enlameada e teste-os com seus amigos. Você pode descobrir uma regra para descrever quantas estradas ou conexões são necessárias para obter a melhor solução ? Isso depende de quantas casas existem na cidade ? Cópia autorizada somente para uso em sala de aula. 79 © 2011 Computer Science Unplugged (csunplugged.org)
  • 88.
    De que setrata tudo isso ? Suponha que você esteja projetando a forma como um serviço tal como eletricidade, gás ou água deva ser entregue a uma nova comunidade. Uma rede de fios ou canos é necessária para conectar todas as casas à companhia prestadora do serviço. Toda casa precisa estar conectada à rede em algum ponto, mas a rota utilizada pela companhia para chegar até a casa não interessa realmente; apenas importa que essa rota exista. A tarefa de projetar uma rede com um comprimento total mínimo é chamado de problema da Árvore Geradora Mínima (do inglês, minimal spanning tree). Árvores geradoras mínimas não são úteis apenas em redes de gás e eletricidade; elas também nos ajudam a resolver problemas em redes de computadores, redes telefônicas, de oleodutos, e de rotas aéreas. No entanto, ao decidir as melhores rotas para as pessoas viajarem, você tem de levar em conta a forma que tornará a viagem mais conveniente para o viajante, bem como quanto irá custar. Ninguém quer passar horas em um avião utilizando a maior rota para chegar a outro país apenas porque é a mais barata. O algoritmo da cidade enlameada pode não ser muito útil para essas redes, porque ele simplesmente minimiza o comprimento total das estradas ou rotas de vôo. Árvores geradoras mínimas também são úteis para resolução de outros problemas envolvendo grafos, tais como o “Problema do Caixeiro Viajante”, que tenta encontrar a rota mais curta que visita todos os pontos da rede. Existem algoritmos eficientes (métodos) para resolver problemas de árvore geradora mínima. Um método simples, que fornece uma solução ótima, consiste em começar sem conexões, e adicioná-las em ordem crescente de tamanho, acrescentando apenas as conexões que juntem partes da rede que ainda não foram conectadas. Esse método é chamado de algoritmo de Kruskal, em referência a J.B. Kruskal, que o publicou em 1956. Para muitos problemas em grafos, incluindo o “Problema do Caixeiro Viajante”, os cientistas da computação ainda procuram encontrar métodos que achem a melhor solução possível. Soluções e dicas Variações e extensões (página 79) Quantas estradas ou conexões são necessárias se houver n casas na cidade ? Acontece que uma solução ótima terá sempre exatamente n-1 conexões, pois isso é sempre suficiente para conectar n casas, e acrescentando uma casa a mais seria criar rotas alternativas desnecessárias entre as casas. 80 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 89.
    Atividade 10 O Jogo da Laranja— Roteamento e Bloqueios nas Redes Sumário Quando muitas pessoas usam um recurso (carros usando estradas, ou mensagens chegando pela internet), existe a possibilidade de bloqueio (deadlock). Um jeito de trabalhar cooperativamente é necessário para evitar que isso aconteça. Matérias correlacionadas Matemática: Desenvolvimento de raciocínio e lógica Habilidades Resolução cooperativa de problemas Raciocínio lógico Idades De 9 anos em diante Material Cada criança precisará de : Duas laranjas ou bolas de tênis Etiqueta com letra Cópia autorizada somente para uso em sala de aula. 81 © 2011 Computer Science Unplugged (csunplugged.org)
  • 90.
    O Jogo daLaranja Introdução Esse é um jogo de resolução cooperativa de problemas. O objetivo é cada pessoa terminar segurando as laranjas etiquetadas com sua própria letra. 1. Grupos de cinco ou mais crianças sentam formando um círculo. 2. A cada criança associa-se uma letra do alfabeto. Há duas laranjas com a letra de cada criança etiquetada nelas, à exceção de uma criança, que tem apenas uma laranja correspondente à sua letra para assegurar que haverá sempre uma mão vazia. 3. Distribua as laranjas aleatoriamente para as crianças no círculo. Cada criança fica com duas laranjas, exceto a criança que tem apenas uma com sua letra. (Nenhuma criança deve ficar com uma laranja com sua letra). 4. As crianças passam as laranjas entre si até alguém pegar a laranja etiquetada com sua letra do alfabeto. Você deve seguir duas regras: a) Apenas uma laranja deve estar em cada mão. b) Apenas uma laranja pode ser passada para uma mão vazia de um vizinho imediato no círculo (Uma criança pode passar uma das duas laranjas ao seu vizinho). As crianças rapidamente descobrirão que, se elas forem “avarentas” (ficarem com suas próprias laranjas assim que passarem por suas mãos), o grupo não será capaz de atingir sua meta. Isso pode ser necessário para enfatizar que indivíduos não “ganham” o jogo, e que o quebra-cabeças é resolvido quando todos estão com suas laranjas. Discussão Quais estratégias as crianças usaram para resolver o problema ? Onde na vida real você experimentou uma situação de bloqueio (deadlock) ? Existem alguns exemplos como engarrafamento ou tentar passar com muita gente por uma porta ao mesmo tempo. Atividades de Extensão Tente realizar as atividades seguintes com um círculo maior ou menor. • Faça as crianças criarem novas regras. • Conduza a atividade sem falar nada. • Tente configurações diferentes como sentar em linha ou ter mais que dois vizinhos para algumas crianças. Algumas sugestões são mostradas aqui. 82 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 91.
    De que setrata tudo isso ? Roteamento e bloqueios são problemas existentes em diversas redes tais como em redes de estradas, telefonia e computação. Os engenheiros gastam muito tempo tentando descobrir como resolver esses problemas – e como projetar redes que tornam esses problemas mais fáceis de serem resolvidos. Roteamento, congestionamento e bloqueios podem provocar sérios problemas em diversas redes. Pense no trânsito no horário de pico (rush) ! Em Nova Iorque, por diversas vezes, o tráfego nas ruas tornou-se tão congestionado que causou um bloqueio: ninguém consegue mover seu carro. Certas vezes, quando os computadores de empresas (como bancos) estão “fora do ar”, o problema é causado por um bloqueio na rede de comunicação. O projeto de redes com roteamento facilitado e congestão minimizada é um problema difícil enfrentado por diversos tipos de engenheiros. Por vezes, mais de uma pessoa requer o mesmo dado ao mesmo tempo. Se um dado (como o saldo bancário de um usuário) está sendo atualizado, é importante “trancá-lo” durante a atualização. Se ele não for trancado, outra pessoa poderia atualizá-lo ao mesmo tempo e o saldo poderia ser gravado incorretamente. Entretanto, se o trancamento sofrer interferência do trancamento de outro item, pode ocorrer um bloqueio. Um dos avanços mais excitantes no projeto de computadores é o advento da computação paralela, na qual centenas ou milhares de processadores de computadores pessoais são combinados (em uma rede) para formar um único e poderoso computador. Muitos problemas, como o Jogo da Laranja, devem ser jogados continuamente nessas redes (porém, bem mais rápido) para que esses computadores paralelos trabalhem. Cópia autorizada somente para uso em sala de aula. 83 © 2011 Computer Science Unplugged (csunplugged.org)
  • 92.
    Parte III Dizendo aosComputadores o que fazer — Representando Procedimentos
  • 93.
    Dizendo aos Computadoreso Que Fazer Computadores seguem instruções — milhões de instruções por segundo. Para dizer a um computador o que fazer, tudo que você precisa é dar as instruções corretas. Mas isso não é tão fácil quanto parece ! Quando recebemos instruções usamos o senso comum para interpretar os seus significados. Se alguém diz “atravesse a porta”, ele não quer dizer que você tenha que se atirar contra a porta— quer dizer que você deve ir até a porta e, se necessário, abri-la antes de passar ! Os computadores são diferentes. Em verdade, quando eles estão conectados a robôs móveis, você precisa tomar precauções de segurança para evitar que eles causem danos e perigo por interpretar as instruções literalmente— como tentar atravessar portas. Lidar com algo que obedece instruções literalmente, sem “pensar”, requer prática. As duas atividades nesta seção nos fornecem uma idéia de como é se comunicar com máquinas que obedecem literalmente, usando um conjunto fixo de instruções. A primeira atividade nos ensinará sobre uma “máquina” que os computadores usam para reconhecer palavras, números ou conjuntos de símbolos com os quais o computador trabalha. Tais “máquinas” são chamadas de Autômatos de Estados Finitos. A segunda atividade nos mostra como podemos nos comunicar com computadores. Um bom programador deve aprender como dizer a um computador o que fazer usando um conjunto fixo de instruções que são interpretadas literalmente. A lista de instruções é o programa. Existem várias liguagens de programação diferentes que um programador pode escolher para escrever essas instruções, mas usaremos uma linguagem simples que pode ser usada sem um computador. Cópia autorizada somente para uso em sala de aula. 85 © 2011 Computer Science Unplugged (csunplugged.org)
  • 94.
    Atividade 11 Caça aoTesouro—Autômatos de Estados Finitos Sumário Freqüentemente programas de computador precisam processar uma sequência de símbolos como letras ou palavras em um documento, ou até mesmo o texto de outro programa. Cientistas da computação freqüentemente usam autômatos de estados finitos para isso. Um Autômato de Estados Finitos (AEF) segue um conjuto de instruções para verificar se o computador reconhecerá a palavra ou conjunto de símbolos. Trabalharemos com algo equivalente a um AEF—mapas do tesouro! Matérias correlacionadas Matemática: Desenvolvimento lógico e raciocínio—usar palavras e símbolos para descrever e seguir padrões Estudos sociais Português Habilidades Leitura de mapas simples Reconhecimento de padrões Lógica Seguir instruções Idades A partir de 9 anos Material Você precisará de: Um conjunto de cartas de ilha (as instruções devem ficar escondidas de quem estiver tentando desenhar o mapa!) Faça uma cópia das Cartas da Ilha (página 92 em diante) e recorte-as. Dobre na linha pontilhada e cole, de modo que, a frente das cartas tenha o nome da ilha, e o fundo tenha as instruções. Cada criança precisará de: Folha de Atividade: Encontre o Caminho para as Riquezas da Ilha do Tesouro (pág. 91) Caneta ou lápis Existem atividades opcionais de extensão para as quais as crianças precisarão de: Folha de Atividade: Ilhas do Tesouro (pág. 97) Folha de Atividade: O Misterioso Jogo da Moeda (pág. 98)
  • 95.
    Ilha do Tesouro Introdução Seu objetivo é encontrar a Ilha do Tesouro. Navios piratas amigos navegam por um conjunto fixo de rotas entre as ilhas em uma parte do mundo, oferecendo carona aos viajantes. Cada ilha possui dois navios de partida, A e B, que você pode escolher para viajar. Você precisa encontrar o melhor caminho para a Ilha do Tesouro. Em cada ilha na qual chegar, você pode escolher um dos navios A ou B (não ambos). A pessoa na ilha lhe dirá para onde vai o navio, mas os piratas não têm um mapa de todas as ilhas disponíveis. Use seu mapa para saber onde você está indo e em quais navios você já viajou. Demonstração (Nota: A atividade usará um mapa diferente.) Usando um quadro ou projetor, desenhe o diagrama das três ilhas como abaixo: Copie as três cartas das próximas duas páginas e dê uma carta a cada criança. Note que as rotas nessas cartas são diferentes daquelas na atividade principal. Começando da Ilha dos Piratas, escolha o navio A. A criança deve direcioná-lo para a Baía do Naufrágio. Anote a rota no mapa. Na Baía do Naufrágio, escolha o navio A novamente. Você voltará a Ilha dos Piratas. Anote isso no mapa. Agora escolha o navio B. Anote isso no mapa. Essa rota vai para a Ilha dos Mortos, onde você ficará preso ! Seu mapa final deverá estar assim: Cópia autorizada somente para uso em sala de aula. 87 © 2011 Computer Science Unplugged (csunplugged.org)
  • 96.
    Cartas para aatividade de demonstração A A → → B B → → 88 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 97.
    Cartas para aatividade de demonstração Nenhum navio deixa a Ilha dos Mortos Cópia autorizada somente para uso em sala de aula. 89 © 2011 Computer Science Unplugged (csunplugged.org)
  • 98.
    Atividade Escolha sete crianças para serem as “ilhas”. As crianças segurarão as cartas identificando suas ilhas, com as instruções secretas no verso. Posicione-as aleatoriamente pela sala. O restante das crianças ficará com mapas em branco e terão que navegar da Ilha dos Piratas para a Ilha do Tesouro, marcando isso cuidadosamente em seus mapas. (Uma boa prática é enviar uma criança por vez para que elas não consigam ouvir as rotas de antemão.) Os primeiros a terminar devem tentar encontrar mais de uma rota. O mapa completo é o seguinte: Discussão Qual é a rota mais rápida ? Qual seria uma rota muito lenta ? Algumas rotas podem ter laços (loops). Você pode encontrar um exemplo disso ? (Por exemplo, BBBABAB e BBBABBABAB, ambos chegam a Ilha do Tesouro.) 90 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 99.
    Folha de Atividade:Encontre o caminho para as riquezas da Ilha do Tesouro Cópia autorizada somente para uso em sala de aula. 91 © 2011 Computer Science Unplugged (csunplugged.org)
  • 100.
    Cartas das Ilhas(1/4) A → A → B → B → 92 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 101.
    Cartas das Ilhas(2/4) A → A → B → B → Cópia autorizada somente para uso em sala de aula. 93 © 2011 Computer Science Unplugged (csunplugged.org)
  • 102.
    Cartas das Ilhas(3/4) A → A → B → B → 94 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 103.
    Cartas das Ilhas(4/4) Parabéns!!! Cópia autorizada somente para uso em sala de aula. 95 © 2011 Computer Science Unplugged (csunplugged.org)
  • 104.
    Autômatos de EstadosFinitos Outra maneira de desenhar um mapa seria: As ilhas são representadas por círculos numerados, e a ilha final (com o tesouro) tem dois círculos. Quais rotas podemos usar para chegar a última ilha ? Nota: o mapa (a) termina no círculo duplo (ilha 2) somente se a sequência tem um numero ímpar de As (por exemplo, AB, BABAA, ou AAABABA). O mapa (b) só alcança o círculo duplo com uma sequência alternada de As e Bs (AB, ABAB, ABABAB, ...). O mapa (c) requer que a sequência contenha no mínimo um B (as únicas sequências que não servem são A, AA, AAA, AAAA, ...). 96 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 105.
    Folha de Atividade:Ilhas do Tesouro Você é capaz de esconder bem o seu tesouro ? Você pode fazer um mapa do tesouro bem difícil ? É a hora de fazer seu próprio mapa ! 1. Esta atividade é uma versão mais complicada da idéia anterior para representação de um mapa. De fato, esse mapa é igual ao usado no exercício anterior. Cientistas da computação usam esse método simples e rápido para projetar rotas que sigam um determinado padrão. Seguindo esse exemplo, desenhe seu próprio mapa para visualizar facilmente as rotas de viagem dos navios piratas. Depois, crie os mapas a serem completados e as cartas de ilha. Qual é a sequência mais eficiente de rotas para alcançar a sua Ilha do Tesouro ? 2. Seus amigos conseguem seguir seu mapa sem problemas ? Dê a eles uma sequência de As e Bs e verifique se eles conseguem chegar à ilha correta. Você pode criar diversos jogos e quebra-cabeças baseados na idéia de autômatos de estados finitos. 3. Aqui temos uma maneira de construir frases através da escolha de caminhos aleatórios do mapa, anotando as palavras encontradas. Agora, tente fazer o mesmo. Quem sabe você cria uma história bem engraçada ! Cópia autorizada somente para uso em sala de aula. 97 © 2011 Computer Science Unplugged (csunplugged.org)
  • 106.
    Folha de Atividade:O Misterioso Jogo da Moeda Alguns amigos baixaram um jogo na Internet no qual um robô jogava uma moeda e eles deveriam adivinhar se sairia cara ou coroa. No começo o jogo parecia muito fácil. Eles tinham, no mínimo, 50% de chances de ganhar—ou melhor, eles achavam que tinham ! Após certo tempo, eles começaram a desconfiar. Parecia haver um padrão nos resultados das moedas. O jogo foi manipulado ? Certamente não ! Eles decidiram investigar. João anotou os resultados de suas próximas tentativas no jogo e eles encontraram o seguinte: (c = cara, o = coroa) c c o c c o c c c o o c c c c o o c o o o c c c c c o c c c o o o c c c o o o c c c c c c o o c o o o o o c o o c o o o c c c o o c c c o c c c c c c c c c o o c c c o o o o c c c c c o o o o o o o Você consegue identificar um padrão previsível ? Existe um ‘mapa’ bem simples que descreve a sequência dos resultados das moedas. Veja se você consegue descobri-lo. (Dica: esse mapa tem somente quatro ‘ilhas’)
  • 107.
    De que setrata tudo isso ? Autômatos de estados finitos são usados na Ciência da Computação para ajudar um computador a processar uma sequência de caracteres ou de eventos. Um exemplo simples é quando você liga para algum lugar e escuta a mensagem “Tecle 1 para isso... Tecle 2 para aquilo… Tecle 3 para falar com um dos atendentes.” As teclas pressionadas são entradas para um autômato de estados finitos do outro lado do telefone. O diálogo pode ser bem simples ou muito complicado. Algumas vezes, você fica andando em círculos porque existe um laço específico no autômato. Se isso ocorre, então é um erro no projeto do sistema — e isso pode ser extremamente frustrante para quem liga! Outro exemplo é quando você saca dinheiro no caixa eletrônico do banco. O programa no computador do caixa guia você através de uma sequência de eventos. Dentro do programa, todas as possíveis sequências estão guardadas como um autômato de estados finitos. Toda tecla pressionada leva o autômato a um novo estado. Alguns dos estados têm instruções para o computador como “libere R$100,00 em dinheiro” ou “Imprima um extrato” ou “Ejete o cartão”. Alguns programas de computador lidam realmente com frases em português usando mapas como os da página 97. Eles podem tanto gerar quanto processar frases digitadas pelos usuários. Nos anos sessenta, um cientista da computação escreveu um programa famoso chamado “Eliza” (em referência à Eliza Dolittle) que conversava com pessoas. O programa fingia ser um psicoterapeuta e fazia perguntas do tipo : “Fale sobre a sua família” e “Prossiga”. Embora o programa não “entendesse” nada, era suficientemente convincente—e seus usuários humanos eram suficientemente ingênuos—para que certas pessoas acreditassem estar conversando com um psicoterapeuta humano. Embora os computadores não entendam muito bem a linguagem natural, eles podem rapidamente processar linguagens artificiais. Um tipo importante de linguagem artificial é a linguagem de programação. Os computadores usam autômatos de estados finitos para ler programas e traduzi-los para a forma elementar de instruções do computador, as quais podem ser “executadas” diretamente pelo computador. Cópia autorizada somente para uso em sala de aula. 99 © 2011 Computer Science Unplugged (csunplugged.org)
  • 108.
    Soluções e dicas O Misterioso Jogo da Moeda (pág. 98) O misterioso jogo da moeda usa o seguinte mapa para jogar as moedas: Se você seguir esse mapa, verá que as duas primeiras de cada três moedas jogadas produzem o mesmo resultado. 100 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 109.
    Atividade 12 Seguindo Instruções—Linguagensde Programação Sumário Os computadores são geralmente programados através de uma “linguagem”, que é um vocabulário limitado de instruções que devem ser obedecidas. Uma das coisas mais frustrantes sobre programar é que os computadores sempre obedecem às instruções ao pé da letra, mesmo se estas produzirem um resultado louco. Essa atividade fornece às crianças alguma experiência sobre esse aspecto da programação. Matérias correlacionadas Português: comunicação Habilidades Dar e seguir instruções. Idades A partir de 7 anos. Material Você precisará de: Cartas com figuras, como as mostradas na próxima página. Cada criança precisará de: Papel, caneta e régua Cópia autorizada somente para uso em sala de aula. 101 © 2011 Computer Science Unplugged (csunplugged.org)
  • 110.
    102 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 111.
    Seguindo Instruções Introdução Discuta se é adequado que as pessoas sigam instruções à risca. Por exemplo, o que aconteceria se você apontasse para uma porta fechada e dissesse “Atravesse a porta” ? Os computadores funcionam seguindo listas de instruções, e eles fazem exatamente o que as instruções dizem—mesmo se estas não fizerem o menor sentido ! Exemplo de Demonstração Veja se as crianças conseguem desenhar a figura a partir dessas instruções. 1. Desenhe um ponto no centro da sua página. 2. Começando da ponta superior esquerda da página, trace uma linha reta passando pelo ponto até a ponta inferior direita. 3. Começando da ponta inferior esquerda da página, trace uma linha reta passando pelo ponto até a ponta superior direita. 4. Escreva seu nome no triângulo no centro do lado esquerdo da página. O resultado deve ser algo do tipo: Cópia autorizada somente para uso em sala de aula. 103 © 2011 Computer Science Unplugged (csunplugged.org)
  • 112.
    Atividades Escolha uma criança e dê a ela uma figura (como os exemplos da página 102). A criança descreve a figura para a classe reproduzir. As crianças podem fazer perguntas para esclarecer as instruções. O objetivo é ver o quão rápido e fielmente o exercício pode ser completado. Repita o exercício, mas, dessa vez, as crianças não poderão fazer perguntas. É melhor usar uma figura mais simples para esse exercício, pois as crianças podem se perder muito rápido. Agora, esconda a criança que fornece as instruções através de uma tela e tente o exercício, sem permitir perguntas, de tal forma que a comunicação seja feita somente através das instruções. Comente que essa forma de comunicação é a mais parecida com a qual os programadores de computador utilizam quando escrevem programas. Eles fornecem um conjunto de instruções ao computador e, somente depois, descobrem o efeito das instruções. Faça as crianças desenharem as figuras e escreverem suas instruções. Coloque-os em pares ou utilize a classe inteira. Variações 1. Escreva instruções para construir um avião de papel. 2. Escreva instruções sobre como chegar a um lugar misterioso próximo à escola, usando instruções como “Ande x metros para frente”, “Vire à esquerda”(90 graus), e “Vire à direita”(90 graus). 3. As crianças devem testar e refinar suas instruções até que elas tenham o efeito desejado. 4. Cabra Cega. Vende os olhos de uma criança e faça as outras guiarem a criança vendada pela sala. 104 Cópia autorizada somente para uso em sala de aula. © 2011 Computer Science Unplugged (csunplugged.org)
  • 113.
    De que setrata tudo isso ? Os computadores operam seguindo um conjunto de instruções, chamado de programa, o qual foi escrito para cumprir uma determinada tarefa. Programas são escritos em linguagens que foram especialmente projetadas com um conjunto limitado de instruções para dizer aos computadores o que fazer. Certas linguagens são mais adequadas para alguns propósitos do que outras. Deixando de lado a linguagem que eles usam, os programadores devem ser capazes de especificar exatamente o que desejam que o computador faça. Diferentemente dos seres humanos, um computador realizará as instruções literalmente, ainda que elas sejam totalmente ridículas. É importante que os programas sejam bem escritos. Um pequeno erro pode causar vários problemas. Imagine as consequências de um erro num programa de computador numa plataforma de lançamento, usina nuclear, ou torre de controle de aviões ! Erros são comumente chamados de “bugs” (insetos, em inglês), em homenagem a uma mariposa que uma vez foi removida (“debugged”) de um relé elétrico de uma máquina de calcular no início de 1940. Quanto mais complexo o programa, maior a possibilidade de erros. Isso se tornou um grande problema quando os Estados Unidos trabalhavam no programa da Iniciativa Estratégica de Defesa (“Star Wars” ou “Guerra nas Estrelas”) , um sistema controlado por computador que pretendia formar uma defesa impenetrável contra ataques nucleares. Alguns cientistas da computação afirmaram que isso nunca funcionaria devido à complexidade e a inerente incerteza que o programa requeria. Programas precisam ser testados cuidadosamente para encontrar o máximo de erros possível e, não seria factível, testar esses sistemas já que alguém teria que atirar mísseis contra os Estados Unidos para ter certeza de que o sistema funciona ! Cópia autorizada somente para uso em sala de aula. 105 © 2011 Computer Science Unplugged (csunplugged.org)