Pensamento Computacional - Professor
Pensamento Computacional - Professor
Pensamento Computacional - Professor
trodução
O QUÊ?
Pensamento computacional e noções básicas
de linguagem de programação.
POR QUÊ?
Os computadores estão presentes em quase
todas as atividades humanas na atualidade e,
por isso, desenvolver o pensamento compu-
tacional e conhecer noções básicas de lingua-
gens de programação pode ser fundamental
para sua vida profissional, trajetória acadê-
mica e participação efetiva na sociedade.
Projeto: LIVRO ABERTO DE MATEMÁTICA
Colaboração:
Ilustrações: —
Gráficos: —
Desenvolvido por
Patrocínio:
Licença:
Introdução ao professor
Pensamento computacional na BNCC Além disso, a proposta divide o Pensamento Computacional em 4 conceitos: Abstra-
ção, Algoritmos, Decomposição e Reconhecimento de Padrões.
A versão atual da BNCC traz o desenvolvimento do pensamento computacional como
um dos objetivos relacionados à área de Matemática desde os Anos Finais do Ensino Embora o currículo de referência do CIEB seja muito claro e completo em termos de
Fundamental até o Ensino Médio. Essa expressão não aparece nem nas competên- organização, inter-relações e práticas, do ponto de vista de um professor de Matemá-
cias nem nas habilidades, mas é mencionada diversas vezes ao longo das discussões tica, a definição e os quatro conceitos soam como habilidades que já são ou poderiam
propostas no documento, sempre nas seções sobre Matemática. ser desenvolvidas em aulas de matemática, sem que houvesse necessidade de trazer
este tal de pensamento computacional para o cenário.
Em geral, essas menções sugerem que o desenvolvimento do pensamento computa-
cional deve ser visto como uma contribuição desejável à Matemática nesses níveis de A concepção que vamos desenvolver na próxima seção busca justamente salientar o
ensino: que o pensamento computacional pode trazer de novo para um professor de mate-
mática no Ensino Médio.
Outro aspecto a ser considerado é que a aprendizagem de Álgebra, como Pensamento computacional no Livro Aberto de matemática
também aquelas relacionadas a Números, Geometria e Probabilidade e Es-
tatística, podem contribuir para o desenvolvimento do pensamento com- Vários são os autores que buscam definir o que é pensamento computacional (Shute
putacional dos alunos (BNCC, Brasil, 2018, p. 271) et al., 2017) e é comum entre eles o reconhecimento de que há uma grande intersecção
entre as habilidades e conceitos cobertos por este termo e as habilidades e conceitos
Embora essa recomendação ocorra em diversos momentos do documento, uma cobertos pelo que poderíamos chamar de ”pensamento matemático”. Entretanto, um
busca por “pensamento computacional” nas habilidades apresenta nenhum exem- elemento que se destaca como exclusivo ao universo do pensamento computacional
plo objetivo, sendo possível apenas identificar termos relacionados a essa temática, é o foco em processos de resolução de problemas.
como fluxogramas e algoritmos, em algumas habilidades de Matemática (e apenas de Enquanto em Matemática o foco da atividade usualmente recai em dois objetos, a
Matemática) do Ensino Fundamental e do Ensino Médio. No caso do Ensino Médio, as resolução de um problema ou a demonstração de um teorema, em computação o pro-
duas habilidades que fazem menções dessa natureza, e que serão cobertas por este cesso de resolução de um problema é o grande objeto de interesse. Nesse sentido,
módulo, são: habilidades relacionadas a compreender e sistematizar esse processo ganham im-
portância.
EM13MAT315
Reconhecer um problema algorítmico, enunciá-lo, procurar uma solução e Isso será feito neste módulo através de um movimento que se inicia propondo pro-
expressá-la por meio de um algoritmo, com o respectivo fluxograma. blemas matemáticos e estendendo a discussão no sentido de mudar o foco progres-
sivamente para o processo de resolução através de descrições textuais ou visuais e,
EM13MAT405 em um momento posterior, na forma de um algoritmo descrito em uma linguagem de
programação.
Utilizar os conceitos básicos de uma linguagem de programação na implementa-
ção de algoritmos escritos em linguagem corrente e/ou matemática. Tomemos como exemplo o seguinte cenário inspirado em uma questão da Olimpíada
Brasileira de Informática:
Mas então, o que seria o pensamento computacional?
Esse termo é associado a um crescente movimento mundial de incorporação da com- O cometa Halley é um dos cometas de menor período do Sistema Solar,
putação a currículos escolares não apenas como ferramentas pontuais para ensino e completando uma volta em torno do Sol a cada 76 anos; na última oca-
aprendizagem de alguns conceitos, mas como um disciplina ou um conjunto de habi- sião em que ele ficou visível do planeta Terra, em 1986, várias agências
lidades mais amplo que esteja relacionado ao mundo digital (Raabe et al., 2020). espaciais enviaram sondas para coletar amostras de sua cauda e assim
Mas para nos ajudar a entender de forma mais concreta, vamos considerar o currí- confirmar teorias sobre suas composições químicas.
culo de referência em ”Teconologia e Computação” proposto pelo Centro de Inovação
para a Educação Brasileira (CIEB), disponível em curriculo.cieb.net.br/curriculo. Essa
proposta, divide o currículo em três grandes eixos: Cultura Digital, Tecnologia Digital A partir desse contexto, um professor de matemática colocaria questões como:
e Pensamento Computacional. Para este terceiro eixo, é dada a seguinte definição: Quando será a próxima passagem do cometa Halley? Uma pessoa que nascerá no
ano 2500 terá a chance de avistar o cometa Halley pela primeira vez em que ano?
Quantas vezes o cometa passará ao longo de todo o terceiro milênio?
Pensamento Computacional refere-se à capacidade de resolver proble-
mas a partir de conhecimentos e práticas da computação, englobando sis- Essas questões serão colocadas ao longo do módulo, mas complementadas por ques-
tematizar, representar e analisar. tões como essa:
i
Descreva como obter, a partir de um dado ano qualquer, qual é o próximo o movimento contrário: uma vez que os estudantes saibam utilizar algoritmo para
ano em que o cometa Halley será visível novamente do planeta Terra. programar o computador para realizar certas tarefas, queremos que eles tenham a
oportunidade de usar essa nova ferramenta para explorar novos problemas matemá-
Esse tipo de questão pode ser respondida de forma textual, com auxílio de notação ticos.
matemática e fluxogramas ou como um algoritmo escrito em uma linguagem de pro- Essa segunda parte demanda algum domínio sobre a nova ferramenta, por isso as ati-
gramação, como mostrado na imagem abaixo. vidades relacionadas a elas serão apresentadas mais adiante no módulo. Para ilustrar
o tipo de questão que será explorada nessa segunda parte, pense em como você tra-
balharia uma questão de probabilidade envolvendo um jogo de dados, por exemplo,
se você pudesse criar com os seus estudantes um simulador que permita repetir esse
jogo milhares de vezes. Esse é o cenário que queremos criar na segunda parte deste
módulo.
a) Os comandos em Portugol foram criados em português; Portugol foi criado com ob- Avaliação
jetivos didáticos, ou seja, algumas de suas características não foram escolhidas por Como aspectos ligados ao pensamento computacional não são cobrados em avalia-
motivações computacionais, mas sim para facilitar a aprendizagem por programado- ções oficiais ou exames de seleção como a maioria dos tópicos do currículo de mate-
res iniciantes (Noschang et al., 2014); mática, a avaliação das habilidades cobertas por este módulo pode ser feita utilizado
b) Existem muitos materiais que permitem o autoestudo da linguagem na internet. outras práticas diferentes das convencionais.
Recomendamos especificamente a playlist sobre o Portugol Studio do canal HM Pro-
Essa flexibilidade cria condições para o professor experimentar novas formas de ava-
gramming no Youtube e os materiais disponíveis em lite.acad.univali.br/por
liar. Nossa recomendação é de que a avaliação das atividades realizadas neste mó-
tugol. Além disso, você também pode se familiarizar com a linguagem através das
dulo seja feita através de um número pequeno de problemas e com um intervalo de
respostas para os exercícios contidos neste material.
tempo maior para os estudantes resolver, diferentemente do cenário típico de uma
c) Portugol pode ser usado de três formas diferentes: em um ambiente de programa- prova composta por várias questões cobrindo, cada uma, diferentes detalhes do con-
ção online acessível a partir de um navegador (portugol-webstudio.cubos.io), ou teúdo e cuja resolução tipicamente deve ser feita em um espaço de tempo limitado.
seja, sem demandar a instalação de softwares específicos; em um ambiente de pro-
A nossa sugestão vem da percepção de que o objetivo deste módulo não é desenvol-
gramação offline instalado no computador sem fazer uso da internet (lite.acad.un
ver o domínio do estudantes sobre um conjunto de conceitos, mas sim uma familiari-
ivali.br/portugol); e em um aplicativo instalado no celular;
dade geral com o pensamento computacional e com conceitos e práticas básicas de
Atualmente, o Portugol Studio, um dos softwares que permite o uso da linguagem linguagens de programação. Nesse sentido, consideramos importante que, em uma
Portugol, é mantido pelo Laboratório de Inovação Tecnológica na Educação (LITE) da avaliação, o estudante tenha a possibilidade de pesquisar, testar, errar e corrigir.
Univali (Esteves et al., 2019). Temos duas sugestões que podem ajudar no processo de avaliação:
O uso do computador a) As questões propostas no Aplicando da quinta seção podem ser usadas para ava-
liação, uma vez que não trazem novos conteúdos e habilidades, apenas exploram o
Embora o uso de computadores não seja uma condição para a realização de ativdia-
que já foi estudado nas seções anteriores;
des relacionadas ao pensamento computacional, é claro que essa ferramenta é parte
importante desse processo. O uso de computadores não apenas foi a fonte de inspi- b) Nas notas para o professor destas questões há sugestões de variações que tam-
iii
bém podem ser usados na avaliação. De maneira geral, buscamos indicar variações nar o fluxo de um processo para uma ou outra direção, de acordo com uma condição
das questões propostas ao longo de todo o material para que o professor utilize para (como mostrado no exemplo), em matemática ele costuma se referir a teoremas ou
estender as atividaides ou para fins de avaliação. propriedades, como em “se um número inteiro tiver algarismo das undiades igual a 0,
então ele é múltiplo de 5”. Embora diferentes, esses dois usos são compatíveis, mas
Glossário explicativo em matemática a ênfase recai na leitura lógica da expressão enquanto que na com-
putação a ênfase está no controle do fluxo de um algoritmo.
Algoritmo: uma sequência de passos que devem ser seguidos para a realização de
uma determinada tarefa. Exemplos podem ir de uma receita de bolo até o algoritmo Variável: Apesar de familiar, no universo de programação de computadores o termo
que permite ao seu navegador de internet enviar sua senha para o banco sem que um variável também tem um uso um pouco diferente do que fazemos em matemática. Em
outro usuário possa lê-la passando pelo algoritmo da fatoração de um número natu- matemática, variável representa um elemento genérico de um conjunto dado (dito uni-
ral em fatores primos. Todos eles são sequências de passos, mais ou menos rígidos, verso da variável), sendo normalmente designada por uma letra minúscula como x, y
mais ou menos formais, que devem ser seguidos para que se obtenha um resultado ou t. Já no contexto de programação de computadores, uma variável é um espaço
final, seja ele um bolo, uma autenticação segura ou a fatoração em primos de um nú- na memória do computador que armazena um pedaço de informação de um determi-
mero natural. nado tipo. Alguns dos tipos mais comuns são números inteiros, valores booleanos
(verdadeiro ou falso), números com parte decimal e caracteres. Porém, o conteúdo
Linguagem de programação: é uma linguagem usada para descrever algoritmos, es- de uma variável é sempre estabelecido: a qualquer momento na execução de um có-
crita por um ser humano, que pode ser compreendida por um computador. Nesse digo é possível invocar o conteúdo (ou valor) de uma variável e usá-lo para executar
caso, o termo “compreender” está sendo usado no sentido bem restrito de “seguir os alguma ação. Além disso, esse valor pode ser mudado ao longo da execução. No
passos”. Normalmente, linguagens de programação possuem um conjunto pequeno exemplo abaixo, na primeira linha, duas variáveis, com nomes “num” e “t” são criadas
de comandos disponíveis e sintaxe muito rígida, para que não reste qualquer ambigui- e especifica-se de qual tipo elas são (inteiro). Na segunda linha, armazena-se o valor
dade no momento da execução dos comandos. Isso pode comprometer a agilidade do 5 na variável “num” (o comando diz para o computador armazenar no trecho de memó-
seu uso, pois é necessário conhecer vários detalhes específicos que, eventualmente, ria reservado à variável “num” o valor 5). Na terceira linha, armazena-se o dobro do
variam de uma linguagem para outra. Exemplos de linguagens comuns atualmente valor armazenado em “num” na variável “t” . Por conta disso, o valor a ser escrito pelo
são: Python, Javascript, C e Portugol. comando da quarta linha será 10.
Fluxograma: é uma forma essencialmente visual de representar algoritmos. O seu
uso é recomendado na BNCC do Ensino Fundamental como uma maneira de represen- inteiro num, t
tar soluções de problemas algorítmicos. Existem versões padronizadas de fluxogra- num <- 5
mas, com regras sobre como determinadas ações e componentes devem ser repre- t <- 2*num
sentadas. Porém, o uso mais comum deste recurso é mais informal preocupando-se escreva(t)
primordialmente com a representação geral do fluxo do algoritmo. Por conta disso, t <- t+1
apesar de seguirmos um padrão de cores e formatos no fluxogramas apresentados, escreva(t)
não nos preocuparemos em descrever em detalhe e discutir esse padrão, recomen-
dando que o professor deixe que os estudantes não se preocupem com esses aspec- Como, ao chegar nessa linha (antes de executá-la), o valor armazenado em “t” era
tos. 10, o resultado de t+1 é 11, portanto, o valor que será escrito pelo comando da linha
seguinte é 11.
Condicional: Um dos conceitos básicos de qualquer linguagem de programação. É
uma instrução que direciona os próximos passos a serem executados pelo computa- Um detalhe importante que é necessário salientar é que, sempre que estivermos des-
dor para um outro outro conjunto de comandos de acordo com uma condição. Nor- crevendo um algoritmo em um fluxograma ou textualmente, usaremos o simbolo “<-”
malmente, se expressa no formato “se condição, então faça isso, senão faça aquilo”. para descrever uma atribuição de um valor a uma variável. Porém, muitas linguagens
Por exemplo, se pensarmos em um algoritmo que identifique se um número natural é de programação (como a que escolhemos para esse módulo) utilizam o símbolo “=”.
múltiplo de 5 teríamos basicamente o seguinte condicional: se o algarismo das unida- Essa escolha resulta em comandos que são, no mínimo, ambíguo com a notação ma-
des for igual a 0 ou 5, então “sim”, caso contrário “não”. Esquematicamente, podemos temática. Por exemplo, o comando “t <- t+1” seria escrito como “t=t+1”. Em um
escrevê-la assim: contexto matemático, este útimo comando representa uma equação sem solução, o
que nada tem a ver com o significado em contexto computacional.
se (algarismo das unidades=0 ou algarismo das unidades=5) então Repetição: Outro recurso fundamental de qualquer linguagem de programação são
escreva(“sim”) as estruturas de repetição. Embora possa haver variações no formato, em geral, elas
senão seguem a seguinte ideia: “repita certas ações enquanto determinada condição seja
escreva(“não”) verdadeira”. Por exemplo, se quisermos somar todos os números até 100 e mostrar o
resultado, podemos esquematizar esse processo da seguinte maneira:
Vale salientar a diferença entre o uso do termo condicional na computação e na mate-
mática. Enquanto que na computação ele se refere a um recurso que permite direcio-
iv
soma=0
numero=1
enquanto (numero<=100) faça
soma = soma+numero
numero = numero+1
escreva(“soma”)
Note que antes da repetição ajustamos as variáveis para que tenham valores iniciais
coerentes com o objetivo do código. A cada repetição, duas ações são realizadas:
Essas ações serão repetidas enquanto o valor da variável número seja menor ou igual
a 100. Depois, o conteúdo da variável soma será escrito na tela.
EM13MAT315 EM13MAT405
OE 1 OE 2 OE 3A OE 3B OE 3C OE 4
Seção 1 X X
Seção 2 X X
Parte 1 Seção 3 X X
Seção 4 X X
Seção 5 X X X
Seção 1 X
Seção 2 X
Parte 2 Seção 3 X
Seção 4 X
v
1
CAPÍTULO
EXPLORANDO UM NOVO JEITO DE RESOLVER PROBLEMAS As atividades desta seção introduzem o que chamamos anteriormente
de ”resolução de um problema do ponto de vista computacional” e criam
Os computadores estão em todos os lugares, seja na forma de celulares, notebooks, computa- um contexto no qual um primeiro aspecto importante para o pensa-
dores de mesa ou dispositivos com funções mais específicas, como máquinas de cobrança. Das mento computacional pode ser discutido: a clareza das instruções.
1
1
CAPÍTULO
Objetivos Específicos
Boas instruções
PENSAMENTO COMPUTACIONAL INTRODUÇÃO
Sugestões e discussões
A primeira ideia foi oferecer um desconto de 10% no valor total da compra caso o comprador
Boas instruções
adquirisse mais do que 100 unidades.
Organização da turma: a última questão requer que os estudantes dis-
cutam as respostas criadas por colegas. Essa discussão é importante
para que eles tenham a oportunidade de perceber as limitações das a) Com essa promoção, qual seria o valor de uma compra de 95 bottons? E de uma compra
suas respostas bem como para que possam se inspirar na estrutura de 105 bottons?
das respostas dos colegas. Sugerimos que você organize a turma em Como você deve ter notado, o problema dessa proposta é que algumas compras (com
quartetos para que os alunos resolvam em duplas as questões a), b), poucas unidades acima de 100) podem ficar mais baratas do que compras que não atin-
c) e d) e depois façam a troca com a outra dupla do seu quarteto para
giram o valor que as qualifica para o desconto.
discutir a questão e).
Uma outra ideia do proprietário foi a seguinte: cada unidade além da centésima recebe
Dificuldades previstas: para essa atividade, os estudantes devem ima-
ginar o destinatário do bilhete como sendo uma pessoa qualquer, não 15% de desconto no seu valor. Por exemplo, se alguém comprar 105 bottons, o compra-
um outro estudante do mesmo nível ou que conheça o problema. Essa dor paga o preço normal para 100 deles e depois recebe 15% de desconto no valor dos
abstração pode ser difícil para alguns deles, por isso a importância de outros 5.
interação entre eles.
b) Com essa promoção, qual seria o valor de uma compra de 95 bottons? E de 105? E de 200
Enriquecimento da discussão: se for viável para o seu contexto, seria
bottons?
rico observar alguém que realmente não conhece a atividade tentando
fazer o cálculo com base em um bilhete. c) Você acha que essa promoção evita o problema de compras com pouco mais de 100 bot-
Conexões: Você pode discutir o conceito de função contínua e de fun- tons ficarem mais baratas do que compras com quantidades menores? Justifique a sua
ção crescente comparando as funções ”preço final” sugeridas pelas resposta.
duas ideias descritas na atividade.
O proprietário da empresa decide adotar essa segunda promoção, mas notou que ela
Duração: 1 aula. É importante não apressar essa atividade, pois o obje- cria um problema: o cálculo do valor final da compra não pode mais ser feito de maneira
tivo principal é mostrar aos estudantes como não é simples ser claro
imediata na calculadora.
em instruções que serão seguidas por outras pessoas.
d) Descreva com as suas palavras como um funcionário deve proceder para calcular o valor
Nota 1 de uma compra a partir da informação de quantos bottons foram comprados. Dê a sua
resposta na forma de um bilhete que será lido por uma pessoa que você não irá encontrar
pessoalmente.
e) Troque o seu bilhete com um colega e discuta com ele se vocês seriam capazes de com-
preender como o preço de uma compra é calculado se vocês tivessem apenas lido o bi-
lhete escrito por cada um.
2
1
CAPÍTULO
Uma resolução boa de repetir Atividade 2
Objetivos Específicos
Fonte: Olimpíada Brasileira de Informática Uma resolução boa de repetir
Sugestões e discussões
d) Troque as instruções com um colega, e seguindo os passos que ele descreveu, obtenha o
ano do primeiro possível avistamento do cometa Halley para alguém que tenha nascido
nos anos: 2500, 1000 e 2290.
3
1
CAPÍTULO
As atividades anteriores mostraram que não é simples criar um conjunto de instruções que
resolve um determinado problema de modo que uma pessoa seja capaz de compreendê-las
PENSAMENTO COMPUTACIONAL INTRODUÇÃO
e segui-las sem poder fazer mais perguntas ou pedir esclarecimentos. Por isso é importante
que fique claro tanto o significado de cada instrução, quanto a ordem em que elas devem ser
executadas.
No caso de criarmos instruções para um computador seguir (um conjunto finito de instruções
com fluxo bem definido também pode ser chamado de algoritmo), essa exigência fica ainda
maior, pois o computador não consegue usar um pouco de bom senso ou conhecimentos adi-
cionais sobre a situação para complementar as instruções ou tomar decisões, caso isso seja
necessário. Para um computador, todas as instruções devem ser dadas de modo que ele seja
capaz de executar e o fluxo das instruções deve estar absolutamente claro na descrição.
4
1
CAPÍTULO
EXPLORANDO A REPRESENTAÇÃO VIA FLUXOGRAMAS
Ao longo deste módulo, vamos conhecer várias ferramentas que nos permitam criar instruções
que possam ser realizadas por um computador. Afinal, estamos procurando desenvolver habi-
Neste módulo, faremos um uso mais específico e rigoroso desse recurso, mas a intenção é a
mesma da imagem acima: representar visualmente um processo com múltiplas etapas e ações.
5
1
CAPÍTULO
Fluxogramas Atividade 3
Objetivos Específicos
A imagem a seguir mostra dois fluxogramas que resolvem as atividades anteriores. Leia-os
Fluxogramas
PENSAMENTO COMPUTACIONAL INTRODUÇÃO
Sugestões e discussões
Fluxogramas
Organização da turma: esta atividade pode ser resolvida individual-
mente.
Dificuldades previstas: de acordo com a BNCC, os estudantes já devem
ter interagido com fluxogramas no Ensino Fundamental e como os flu-
xogramas que propomos são simples, não devem apresentar desafios.
O formato e a cor das partes dos fluxogramas segue um padrão inter-
nacional, mas isso não é importante para os usos que faremos neste
módulo.
Linguagem: o significado do sinal de igual em linguagens de progra-
mação é diferente do significado usual em matemática. Ele deve ser
entendido como a ação ”atribua à variável na esquerda o valor especi-
ficado na direita”. Vide discussão na próxima seção.
Duração: 30 minutos, completando uma aula com a discussão do Or-
ganizando a seguir.
Solução: Fluxogramas a) Utilize os fluxogramas para resolver os problemas das atividades 1 e 2 para os seguintes
a) i) R$ 120,00 e R$ 285 < 00, casos:
ii) 2366. i) Qual seria o valor da compra para 60 bottons? E para 150?
b) Um fluxograma que representa uma solução que usa um processo ii) Em que ano o cometa Halley poderá ser avistado pela primeira vez por alguém que
repetitivo até encontrar o ano de passagem do cometa é apresen- tenha nascido no ano de 2300?
tado na imagem da próxima seção.
b) Descreva a sua solução para a Atividade 2 na forma de um fluxograma.
PARA REFLETIR
O que você achou dos fluxogramas como forma de apresentar um conjunto de instruções?
6
1
CAPÍTULO
ORGANIZANDO FLUXOGRAMAS
Os fluxogramas são uma maneira de representar algoritmos que fazem uso de um arranjo vi-
sual para deixar claro o caminho que deve ser percorrido ao longo da execução de uma série de
Três coisas merecem atenção neste fluxograma. Primeiro, a variável tentativa, que não apare-
ceu nos fluxogramas anteriores. Ela é usada para armazenar em qual ano estamos à medida
que somamos ou subtraímos 76 até encontrar a resposta. Na descrição verbal não é necessário
mencioná-la, mas em uma linguagem de programação precisamos armazenar todos os resul-
tados que desejamos usar posteriormente em alguma variável. Em um fluxograma também
7
1
CAPÍTULO
poderíamos evitar o seu uso, se escrevêssemos algo como ”some 76 ao ano”, mas a prática de
armanzenar o resultado em uma variável é boa para não deixar dúvidas nas instruções seguin-
tes.
Segundo, a ocorrência de ciclos: eles representam processos que devem ser repretidos diver-
PENSAMENTO COMPUTACIONAL INTRODUÇÃO
sas vezes, até que alguma condição seja satisfeita. Focando no que está mais à esquerda, ele
diz o seguinte: cheque se a tentativa é menor do que a, se não for, subtraia 76 e volte para a
checagem. Isso faz com que o algoritmo repita essa subtração até que o resultado encontrado
seja menor do que a. No ciclo do lado direito, ocorre o mesmo mas com adições (veja que o lado
direito do fluxograma é acionado quando a é maior do que 1986).
O terceiro aspecto que merece atenção são os comandos que são realizados dentro dos ciclos.
Vamos focar novamente no que está mais à esquerda: tentativa = tentativa + 76. Note que
essa expressão, do ponto de vista matemático, representa uma equação sem solução. Mas
em grande parte das linguagens de programação, o sinal de igual significa ”guarde o resultado
da direita na variável à esquerda”. Nesse caso, o computador primeiro calcula o valor do lado
direito (somando 76 ao valor atual da variável tentativa) e então guarda na mesma variável
(tentativa) o resultado (perdendo o valor anterior, o que não é um problema, pois já testamos e
o descartamos).
É importante ter muito cuidado com expressões como ”t=t+76”. Em um contexto matemá-
tico, o sinal de igual nessa expressão significa uma equivalência entre os valores do seu
lado direito e esquerdo. Nesse caso específico, a expressão é uma equação sem solução
(pois não existe valor de t que satisfaça a igualdade proposta).
Em linguagens de programação, o sinal de igual é normalmente usado para designar uma
atribuição: a variável à esquerda do sinal deve receber o valor à direita. Inclusive, nesse
contexto, a expressão t+76=t é totalmente diferente de t=t+76 (na verdade, a primeira
expressão está incorreta pois o conteúdo à esquerda do sinal de igual não é uma variá-
vel). Em algumas linguagens, a atribuição não é feita com o símbolo =, mas com := ou <-
(imitando a seta ←).
Esse uso computacional do símbolo = deve ser evitado fora do contexto de algoritmos,
pois provavelmente será interpretado em termos matemáticos.
8
1
CAPÍTULO
VOCÊ SABIA
Existem centenas de linguagens de programação em uso na atualidade, cada uma com
certas vantagens e desvantagens e com diferentes níveis de popularidade. Atualmente,
Python é uma linguagem muito utilizada em vários contextos e conta com muitos materi-
A imagem abaixo mostra dois algoritmos escritos em uma linguagem de programação chamada
Portugol, que tem seus comandos em português. Apesar de não ser usada comercialmente,
essa é a linguagem que sugerimos para você neste capítulo.
Essas instruções são as mesmas descritas anteriormente com fluxogramas. Leia com calma e
tente compreender como as duas representações se relacionam.
Você pode acessar um ambiente online que permite a execução destes algoritmos em portugol
-webstudio.cubos.io. Caso você não esteja familiarizado com esse tipo de recurso, sugerimos
o vídeo youtu.be/6OIADpFImtc como ponto de partida.
9
1
CAPÍTULO
EXPLORANDO ALGORITMOS PARA PROBLEMAS MATEMÁTICOS As duas atividades propostas nesta seção focam no uso de variáveis e
operações aritméticas entre elas.
Dois recursos são muito comuns na criação de algoritmos, não importando se descrevemos na A intenção do Organizando que encerra esta seção é salientar uma ca-
forma textual, com fluxograma ou em uma linguagem de programação: condicionais e repeti- racterística de linguagens de programação: a limitação dos comandos
Objetivos Específicos
Contêineres
■ Compreender como sistematizar soluções algorítmicas através de
recursos como a linguagem matemática, fluxogramas ou linguagens
de programação.
■ Compreender os conceitos básicos de uma linguagem de programa-
ção: variáveis
Contêineres
Imagine um porto que, por restrição nos equipamentos disponíveis, carregue seus contêine- Organização da turma: sugerimos a resolução desta e da próxima ativi-
res todos alinhados, na mesma direção e com os lados paralelos aos lados da área de carre- dade conjuntamente e, especialmente por causa da segunda atividade,
gamento do navio, como mostrado na figura abaixo. recomendamos a organização da turma em duplas.
Duração: essa e a próxima atividade juntas devem ocupar em torno de
1 aula.
Comentários para o laboratório: a implementação da solução a este
problema em Portugol é muito próxima ao que os estudantes devem
descrever aqui, pois ao fazermos a divisão entre dois números inteiros
e armazenarmos em uma variável inteira, o Portugol armazena o quo-
ciente da divisão inteira (com resto), causando o efeito de arredondar
para baixo.
A administradora desse porto está com problemas para determinar quantos contêineres de
Conexões: você pode discutir o conceito de volume de paralelepípedos
dimensões A, B e C (em metros) podem ser colocados em um navio que tenha área de carre- e relembrar a interpretação da divisão como ”quantos cabem”.
gamento com dimensões X e Y (em metros). Observe que a dimensão A dos contêineres deve
ser carregada paralelamente à dimensão X dos navios, o mesmo ocorre para as dimensões Nota 3
11
1
CAPÍTULO
BeY.
Objetivos Específicos
Além dessas restrições, há uma limitação de altura imposta pelas autoridades portuárias que
Um professor em cada van
diz que a pilha de contêineres não pode ultrapassar 25 metros de altura.
PENSAMENTO COMPUTACIONAL INTRODUÇÃO
Sugestões e discussões c) Descreva, com suas palavras, como determinar quantos contêineres de dimensões A, B
e C cabem em um navio com espaço de carregamento igual a X e Y .
Um professor em cada van
Organização da turma: em duplas.
Duração: essa atividade e a anterior devem ocupar em torno de 1 aula. Um professor em cada van Atividade 5
d) Descreva com suas palavras e de forma clara como descobrir o número máximo de pro-
fessores que podem acompanhar n estudantes em um passeio sem que seja necessário
contratar mais vans.
12
1
CAPÍTULO
PENSAMENTO COMPUTACIONAL INTRODUÇÃO
Figura 1.5: Fonte: http://desplugada.ime.unicamp.br
Para resolver as duas atividades anteriores você deve ter utilizado apenas algumas operações:
soma, subtração, multiplicação, divisão e arredondamentos. As quatro primeiras estão direta-
mente disponíveis em qualquer linguagem de programação, mas a quinta delas nem sempre.
Vamos discuti-la em mais detalhes.
Na atividade Um professor em cada van você deve ter utilizado o recurso de arredondar para
cima para descobrir o número mínimo de professores necessários para acompanhar a turma.
Por exemplo, se 30 alunos quiserem participar de uma viagem, calculamos . Logo, precisamos
de mais de 2 professores, ou seja, 3. Matematicamente, dizemos que obtivemos o menor nú-
mero inteiro maior ou igual ao resultado da divisão. Informalmente, dizemos que estamos ”ar-
redondando para cima”. Porém, o Portugol (e outras linguagens de programação) não entende
o comando ”arredonde para cima” ou ”obtenha o menor número inteiro maior ou igual”. Então,
como poderíamos descrever para o computador esse processo?
Para fazer isso, podemos utilizar duas operações que a maioria das linguagens de programa-
ção oferece: quociente da divisão (representada por ”/”) e resto da divisão entre dois números
inteiros (representada por ”%”). A operação % só pode ser realizada entre dois números inteiros
e também retorna como resultado um número inteiro. Já a operação / retorna um número real
como quociente se os valores envolvidos forem números reais e a parte inteira do quociente se
os números envolvidos forem inteiros. Por exemplo, 9/4 terá como resultado 2, enquanto que
9%4 terá como resultado 1 e 7.2/4.8 terá como resultado 1.5.
No caso do problema posto na atividade, devemos adicionar uma van se a divisão do número de
interessados por 13 tiver resto maior do que zero. Em Portugol, uma possibilidade seria essa:
13
1
CAPÍTULO
PENSAMENTO COMPUTACIONAL INTRODUÇÃO
Veja que esse algoritmo primeiro considera que o número mínimo de professores é igual ao
resultado inteiro (pois a variável n é do tipo inteiro) da divisão do número de interessados por
13. Depois, se o resto da divisão por 13 for maior do que zero, o algoritmo soma 1 ao número
mínimo de professores.
14
1
CAPÍTULO
EXPLORANDO CONDICIONAIS
As sentenças que fazem uso do condicional (aqui chamadas simplesmente de condicionais) são Esta seção foca no uso de estruturas condicionais. Apesar de já terem
um componente central em qualquer linguagem de programação e, na verdade, em boa parte aparecido nas seções anteriores, a atividade a seguir propõe uma situa-
Note que o comando descrito na frase ”se a média for menor do que 6, então o estudante está
de recuperação, senão está aprovado” é composto por três partes: uma condição (C2 < 6), o
que deve ser feito se a condição for verdadeira (escrever a palavra ”Recuperação” na célula) e o
que deve ser feito se a condição for falsa (escrever ”Aprovado” na célula). Isso está condensado
no conteúdo da célula D2 mostrada acima.
Nas atividades anteriores, usamos o mesmo raciocínio para resolver o problema do cometa
Halley (se o ano de nascimento fosse maior do que 1986 a resolução seguia por um caminho,
se fosse menor seguia por outro) e o problema sobre o número de professores (se houvesse
resto na divisão, era necessário contratar mais uma van). Quando representamos um algoritmo
na forma de um fluxograma, condicionais são representadas como bifurcações no fluxo das
instruções, de modo que um ou outro lado deve ser seguido conforme a condição estipulada.
A próxima atividade vai exigir um uso mais sofisticado de condicionais do que as atividades que
resolvemos até agora.
15
1
CAPÍTULO
Objetivos Específicos
Uma empresa que produz detergente transporta o produto bruto em cubos metálicos com la-
Cubos conectados
PENSAMENTO COMPUTACIONAL INTRODUÇÃO
dos iguais a 1 metro. Para facilitar o enchimento destes cubos, eles possuem uma abertura
■ Compreender como sistematizar soluções algorítmicas através de pequena, como mostrado na figura abaixo, que permite conectar dois cubos durante o enchi-
recursos como a linguagem matemática, fluxogramas ou linguagens mento. Assim, à medida que o líquido é despejado, ao atingir a altura da abertura, o líquido
de programação. começa a escoar para o segundo cubo. Se houver líquido suficiente, o terceiro cubo também
■ Compreender os conceitos básicos de uma linguagem de programa- poderá receber uma parte.
ção: condicional.
Por questões de logística, a empresa atualmente enche sempre 3 cubos conectados por essas
aberturas, e isso é feito despejando-se o líquido sempre a partir da tampa do cubo mais à
Sugestões e discussões esquerda, como mostrado na vista lateral abaixo.
Cubos conectados
Organização da turma: sugerimos que os estudantes resolvam essa
atividade em grupo, pois ela exige não apenas a compreensão da situ-
ação proposta como também atenção aos detalhes na elaboração da
solução da questão 5 e esmero na apresentação dessa solução.
Duração: 1 aula.
Sugestões gerais: o professor pode transformar essa atividade em um
mini-projeto em que os grupos deverão apresentar para a turma toda
as suas soluções para a questão. Nesse caso, sugerimos o uso de uma Por exemplo, se forem injetados 600 litros de detergente, os cubos ficarão como mostrado a
cartolina e cores para registro da resolução. Outra possibilidade, é tro- seguir, com 500 litros no primeiro, 100 litros no segundo e 0 no terceiro.
car as soluções entre os grupos para que eles avaliem a clareza das
soluções dos colegas.
Dificuldades: é comum os estudantes não representarem ou descre-
vem a relação entre as diferentes condições de maneira adequada. Os
condicionais que resolvem este problema podem estar um dentro do
outro ou um depois do outro, e o fluxo entre os comandos são diferen-
tes nesses casos, como será discutido na seção Organizando a seguir.
Conexões: o início da atividade toca no tópico volume de paralelepí-
pedos e unidades de medida de comprimento e volume de forma bas-
tante simples. Esta pode ser uma boa oportunidade para uma revisão
breve antes que os estudantes se engajem com as questões da ativi- a) Quantos litros haverá em cada cubo se forem injetados 900 litros de detergente?
dade.
b) Quantos litros haverá em cada cubo se forem injetados 1250 litros de detergente?
Solução: Cubos conectados
c) Quantos litros haverá em cada cubo se forem injetados 1800 litros de detergente?
a) 500 litros, 400 litros, 0 litros
d) Quantos litros haverá em cada cubo se forem injetados 2400 litros de detergente?
b) 500 litros, 500 litros, 250 litros
e) A empresa quer que você crie um algoritmo que permita saber qual é o volume de de-
c) 600 litros, 600 litros, 600 litros tergente em cada um dos três cubos quando uma quantidade N (em litros) é despejada
d) 800 litros, 800 litros, 800 litros no conjunto. Apresente a sua solução de maneira esquemática, isto é, sem usar muito
texto.
Nota 4
16
1
CAPÍTULO
ORGANIZANDO COMBINANDO CONDIÇÕES
Leia com atenção os dois fluxogramas abaixo. Ambos foram criados para determinar se um
número dado é múltiplo de 6 a partir do seguinte resultado: um número é múltiplo de 6 se for
PARA REFLETIR
Os dois fluxogramas são visualmente diferentes, mas o que você pode dizer sobre os resul-
tados que cada um deles produz para diferentes valores de N?
Veja que no fluxograma da esquerda, temos uma única condição e ela testa, de uma só vez, se
N é múltiplo de 2 e se N é múltiplo de 3. No fluxograma da direita temos duas condições e a se-
gunda está ”dentro” da primeira, sendo acionada apenas se a primeira for verdadeira. Apesar
de estruturalmente diferentes, ambas produzem os mesmos resultados para qualquer valor
de N. Como ambas estão corretas, a escolha por uma ou outra solução deve ser feita por ou-
tros critérios, como a clareza para o leitor, os recursos disponíveis na linguagem de programa-
ção que você esteja usando ou até mesmo considerações sobre a eficiência de cada algoritmo
em termos de velocidade de processamento computacional (mas essa discussão é muito mais
avançada do que os nossos objetivos no momento).
Agora, vejamos dois exemplos de flouxogramas que resolvem a atividade Cubos Conectados
corretamente e que são visualmente muito diferentes.
17
1
CAPÍTULO
A seguir, mostramos os algoritmos em Portugol que implementam o que Note que no fluxograma da esquerda, as condições estão encadeadas. Se o total de litros colo-
está representado acima nos dois fluxogramas. cados for menor do que 500, o fluxo do algoritmo passa pelo bloquinho azul mas à esquerda e
depois já vai para o fim, sem sequer considerar as demais condições.
No fluxograma da direita, as quatro condições são sempre analisadas, não importando se al-
guma delas já foi satisfeita e produziu a resposta corretamente.
PARA REFLETIR
Você consegue pensar em algum argumento que permita concluir se um dos fluxogramas
é melhor do que o outro?
18
1
CAPÍTULO
EXPLORANDO REPETIR E REPETIR Esta seção é focada em estruturas de repetição, como o enquanto, que
já usamos em problemas anteriores. O objetivo aqui é salientar o poder
Repetir muitas vezes uma mesma ação é algo considerado cansativo para a maioria das pes- desse recurso para realizar tarefas que poderiam ser muito monótonas
soas. Porém, para muitas tarefas isso é necessário para se resolver algum problema ou atingir se feitas à mão.
Em Portugol, o ciclo é realizado pelo comando enquanto: quando o computador chega neste
comando, ele entende que deve repetir os comandos dentro das chaves seguintes enquanto a
condição colocada (m < 10) for verdadeira. A cada repetição, a variável m tem o seu conteúdo
aumentado em uma unidade, o que faz com que em algum momento o seu valor seja maior ou
igual a 10, violando a condição e fazendo com que a interpretação do algoritmo saia do ciclo.
Esse é um exemplo simples de uma estrutura de repetição, que poderia ser feita por uma pes-
soa sem grande esforço. Mas ela transmite muito bem a ideia de repetir alguma ação enquanto
uma condição for verdadeira. Nas atividades a seguir, vamos propor algumas tarefas repetiti-
vas que são muito trabalhosas quando feitas manualmente, por isso é ainda mais relevante
utilizar um computador para fazê-las.
19
1
CAPÍTULO
■ Compreender como sistematizar soluções algorítmicas através de divisores são 1, 3 e 9. Já o número 13 é primo. O número 1 não é primo por que possui um único
recursos como a linguagem matemática, fluxogramas ou linguagens divisor inteiro positivo.
de programação.
■ Compreender os conceitos básicos de uma linguagem de programa-
ção: repetição.
Sugestões e discussões
É primo ou não?
Organização da turma: sugerimos que essa atividade seja resolvida
em conjunto, pela turma toda, uma vez que a etapa final (envolvendo
a utilização do algoritmo criado) depende do uso de um computador
ou celular e de um algoritmo completo e correto para o problema pro-
posto.
Duração: 1 aula.
Sugestões gerais: os itens que podem ser identificados na discussão Até hoje, não existem métodos realmente rápidos para identificar se um número é primo ou
proposta no Para refletir são: 1) só é necessário verificar se um número não. Basicamente, todos os métodos existentes baseiam-se em testar se o número dado
é divisor de um número enquanto ; 2) a busca pode ser feita apenas até deixa resto zero quando é dividido pelos números menores do que ele. Imagina a quantidade
encontrarmos um divisor diferente de 1 e de ; e 3) só seria necessário de repetições necessárias para verificar se o número 4.000.037 é primo!
checar se números primos são divisores, mas como não temos uma
lista desses números disponível, essa propriedade não pode ser utili-
zada neste contexto.
a) Crie um algoritmo que verifica se um número é primo ou não.
Conexões: vários tópicos do Ensino Fundamental podem ser revisados b) Em conjunto com toda a turma escrevam um dos algoritmos criados na questão 1 em
ou discutidos em conexão com essa atividade. Entre eles, vale menci- Portugol.
onar os conceitos de divisor e múltiplo, critérios de divisibilidade e o
Crivo de Eratóstenes (que pode inclusive ser discutido sob o ponto de c) Utilize esse algoritmo para verificar se o número 4.000.037 é primo.
vista computacional também se os estudantes souberem usar variá- Você deve ter notado que o algoritmo responde quase que imediatamente se o número
veis do tipo vetor).
dado é primo ou não, mesmo sendo um número grande.
Nota 5 d) Se você conseguisse verificar um divisor a cada 1 segundo, estime aproximadamente
quanto tempo você teria levado para verificar se 4.000.037 é primo.
PARA REFLETIR
Embora muitas checagens precisem ser feitas, não é necessário dividir um número dado
por todos os números naturais menores do que ele para verificar se ele é primo. Várias
mudanças podem ser feitas nesse processo para torná-lo mais eficiente. Discuta com a
turma quais poderiam ser essas mudanças.
20
1
CAPÍTULO
A sequência de Collatz Atividade 8
Objetivos Específicos
A sequência de Collatz é uma sequência numérica formada por números inteiros que é cons-
truída a partir de um valor inicial, que podemos chamar de a1 , por meio da seguinte regra: o A sequência de Collatz
Por exemplo, se tomarmos , temos a seguinte sequência: 5, 16, 8, 4, 2, 1, 4, 2, 1, 4, 2, 1, ... Note Sugestões e discussões
que a sequência entra em um cilo depois que chega em 1 pela primeira vez. Por isso, dizemos
que ela termina ao chegar em 1, ou seja, a sequência de Collatz com a1 = 5 tem 6 termos: A sequência de Collatz
5, 16, 8, 4, 2, 1. Dificuldades: este problema não deve oferecer muitas dificuldades do
ponto de vista matemático. Do ponto de vista computacional, ele tam-
bém é mais simples que a ativdiade anterior e essa escolha foi intenci-
a) Escreva a sequência de Collatz para a1 = 12. onal, para servir como uma atividade de fixação.
b) Escreva a sequência de Collatz para a1 = 18. Organização da turma: por ter objetivo maior de fixação e pela simpli-
cidade matemática do problema, sugerimos que essa atividade seja re-
c) Escolha um número entre 5 e 20 e obtenha a sequência de Collatz iniciada por esse nú- solvida individualmente ou em duplas, após uma discussão inicial com
mero. a turma toda para que se compreenda o pedido descrito no problema.
Duração: 1 aula.
PARA REFLETIR
Para o laboratório: com o algoritmo em mãos, várias explorações po-
Você consegue notar algumas semelhanças entre as sequências de número obtidas em dem ser feitas, por exemplo: você consegue encontrar um valor para
cada um dos casos anteriore? que resulte em uma sequência de tamanho exatamente igual a 7? Qual
é o número inteiro menor do que 50 que resulta na sequência com o
maior número de termos?
d) Descreva um algoritmo que obtenha a sequência de Collatz a partir de um valor dado
para a1 . Solução: A sequência de Collatz
O comportamento da sequência de Collatz pode ser surpreendente. Por exemplo, se a) 6, 3, 10, 5, 16, 8, 4, 2, 1
usarmos a1 = 26 a sequência tem 11 termos, mas se usarmos a1 = 27 a sequência precisa b) 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1
de 113 termos para terminar! É claro que repetir esse processo 113 vezes pode ser bem
entediante, mas esse é o tipo de tarefa que um computador pode fazer sem dificuldade c)
e muito mais rapidamente.
Seu algoritmo deve escrever os termos que compõem a sequência. Também pode ser
útil incluir uma variável que conta o número de termos da sequência.
Esse algoritmo pode ser usado para obter a sequência de Collatz para muitos valores diferentes
de a1 , incluindo números bastante grandes. Por exemplo, a sequência obtida a partir de a1 =
987654 tem 182 termos!
Com esse algoritmo em mãos, é mais simples testar casos e eventualmente levantar conjectu-
21
1
CAPÍTULO
ras sobre essa sequência: é possível prever valores de que geram sequências bem curtas? Há
alguma família de números que, se atingida, encaminha a sequência para o seu final? Será que
qualquer que seja o valor de a sequência sempre termina?
Um detalhe interessante é que até hoje os matemáticos não conseguiram responder satisfa-
PENSAMENTO COMPUTACIONAL INTRODUÇÃO
ORGANIZANDO REPETIÇÕES
Processos que envolvem muitas repetições são um exemplo muito claro de como os computa-
dores podem ser usados como ferramenta: podemos programá-los para executar essa parte
da tarefa e focarmos nas partes que envolvem criatividade e o reconhecimento de padrões. No
caso da sequência de Collatz, poder analisar e comparar várias sequências rapidamente nos
permite levantar conjecturas, testá-las e ajustá-las de acordo com as observações.
Para compreendermos bem o uso de repetição, vamos analisar o algoritmo abaixo. Ele escreve
os termos de uma sequência que começa com os termos 1 e 1 (veja que as variáveis a1 e a2
começam recebendo esses valores). A variável n, que é lida no início do algoritmo determina
a quantidade de termos que serão escritos. Veja que os dois primeiros são escritos antes do
comando enquanto, por isso a variável i receber o valor 3 (quando o enquanto começar, já
estaremos escrevendo o terceiro termo).
Quais valores serão escritos por esse algoritmo se usarmos n=6? E n=10?
PARA REFLETIR
22
1
CAPÍTULO
O aspecto que é importante compreender neste algoritmo é o uso das variáveis i e an. Esta seção encerra a primeira parte do módulo sobre pensamento com-
Note que a variável i começa com o valor 3 e ela aparece na condição que determina quantas putacional. Como dito anteriormente, o objetivo desta parte era intro-
vezes o comando enquanto vai ser repetido. Ao final dos comandos que são executados den- duzir estratégias de pensamento computacional aos estudantes atra-
tro do enquanto, o valor de i é incrementado em 1 unidade, até que ela fica maior do que n vés de problemas matemáticos. Para tanto, propomos que estes pro-
Nota 6
23
1
CAPÍTULO
Por exemplo, para um salário de R$ 2.000,00, começamos identificando que ele se encontra
na segunda faixa. Logo, devemos calcular 7,5% de 2000 e depois subtrair 142,80 do resultado.
Portanto, 0,075 × 2000 − 142,80 = 7,20 é o valor que será descontado do salário para pagar o
imposto de renda desse trabalhador.
a) Quanto será descontado de uma pessoa que tenha salário bruto igual a R$ 1.500,00? E
igual a R$ 3.000,00? E igual a R$ 6.000,00?
Objetivos Específicos b) Crie um algoritmo que calcula o valor do imposto de renda a ser retido na fonte para um
dado salário bruto.
Xadrez
Compreender os conceitos básicos de uma linguagem de programação,
como repetição, condicional e variáveis. Xadrez Atividade 10
No tabuleiro de xadrez, a casa na linha 1, coluna 1 (canto superior esquerdo) é sempre branca
Sugestões e discussões e as cores das casas se alternam entre branca e preta. Dessa forma, como o tabuleiro tradi-
cional tem oito linhas e oito colunas, a casa na linha 8, coluna 8 (canto inferior direito) será
Xadrez
também branca. Neste problema, entretanto, queremos saber a cor da casa no canto inferior
Para o laboratório: Este problema pode ser resolvido aritmeticamente
com o auxílio do conceito de paridade (aplicada tanto às coordenadas direito de um tabuleiro com dimensões quaisquer: L linhas e C colunas. No exemplo da figura,
de um dado quadradinho quanto à soma das coordenadas), mas ad- para L=6 e C=9, a casa no canto inferior direito será preta.
mite soluções com repetições (em que o código alterna entre as duas
soluções à medida que ”percorre” um caminho até o quadradinho de
destino). Incentive a discussão dessas duas soluções em termos de
simplicidade, clareza e eficiência (qual delas obtém a solução reali-
zando o menor número de operações?).
Variação: Você pode propor um tabuleiro diferente, em que as casas
possuem três cores: branco, cinza e preto. Esse padrão se repete
(nessa ordem) nas linhas e nas colunas (logo, a segunda linha começa
em cinza e a terceira em preto). Nesse caso, a solução depende do uso
do resto deixado na divisão por 3 e não de paridade.
a) Qual seria a cor da casa no canto inferior direito se o tabuleiro tiver 7 colunas e 4 linhas?
Nota 7
E se tiver 10 colunas e 8 linhas? E se tiver 23 colunas e 40 linhas?
b) Descreva como descobrir a cor da casa no canto inferior direito de um tabuleiro como
esse, sabendo a quantidade de linhas e colunas que o compõe.
24
1
CAPÍTULO
c) Escreva um algoritmo que implemente o processo que você descreveu na questão ante- Objetivos Específicos
rior.
MMC
Existem vários métodos para o cálculo do mínimo múltiplo comum (mmc) entre dois números
inteiros. Você deve ter aprendido como fazer isso ainda no Ensino Fundamental e, de vez em Sugestões e discussões
quando, ainda deve utilizar esse procedimento para resolver algumas questões de matemá-
MMC
tica.
Comentários gerais: Esta atividade reforça o uso de estruturas de re-
a) Descreva como você procede para obter o mínimo múltiplo comum entre dois números peticão através de um procedimento matemático conhecido, o cálculo
dados. Se quiser, comece obtendo o mínimo múltiplo comum para os números 12 e 18 e do Mínimo Múltiplo Comum entre dois números. O problema pode ser
depois tente descrever o método que você utilizou de forma genérica, isto é, para dois resolvido com um algoritmo bastante curto, o que ilustra bem o poder
números quaisquer a e b. dessas estruturas.
Embora não seja o método mais eficiente, vamos implementar o método da lista. Ele Para o laboratório: Um conceito computacionalmente muito impor-
tante que pode ser introduzido aos estudantes com este problema é
consiste em listar os múltiplos do primeiro número (começando por ele mesmo) até en-
o de função. Este conceito permite ao programador compartimentali-
contrar um múltiplo que seja divisível pelo segundo número. zar um bloco de código que será usado para diferentes fins (vide este
Exemplo: para o caso 12 e 18, vamos listar os múltiplos de 12. Primeiro, o próprio 12, que vídeo para um tutorial sobre funções em Portugol). Isso pode ser feito
não é divisível por 18. Depois 24 (12 ∗ 2), que não é divisível por 18. Depois 36 (12*3), que graças à conexão com máximo divisor comum sugerida no ”Para Refle-
é divisível por 18 e, portanto, é o mínimo múltiplo comum entre esse 12 e 18. tir”: o algoritmo para obter o mínimo múltiplo comum pode ser trans-
formado em uma função que será usada pelo algoritmo que calcula o
b) Escreva um algoritmo que obtenha o mínimo múltiplo comum entre dois números natu- máximo divisor comum.
rais dados, usando o método da lista.
Variação: Você pode pedir aos estudantes que usem as ideias desta
PARA REFLETIR atividade para construir um algoritmo que determine se dois números
dados são coprimos, ou seja, se o MDC entre eles é igual a 1.
Sabendo como calcular o mínimo múltiplo comum entre dois números dados, a e b, você
pode utilizar uma propriedade simples para calcular o máximo divisor comum entre esses Nota 8
números. A propriedade diz que o máximo divisor comum entre a e b é igual ao produto dos
dois números dividido pelo mínimo múltiplo comum entre eles:
Objetivos Específicos
a·b
mdc(a, b) = Campeonato
mmc(a, b)
Compreender os conceitos básicos de uma linguagem de programação,
Como você poderia usar essa propriedade para escrever um algoritmo que obtenha o má- como repetição, condicional e variáveis.
ximo divisor comum entre dois números naturais dados.
Campeonato Atividade 12
25
1
CAPÍTULO
Sugestões e discussões
Campeonato
PENSAMENTO COMPUTACIONAL INTRODUÇÃO
26
1
CAPÍTULO
PROJETO APLICADO Professor, esta atividade foi proposta com o objetivo de oferecer um pro-
blema desafiador e interessante, mas ainda acessível para os estudan-
Para o encerramento desta parte, escolhemos um problema que foi sugerido na tes que tenham sido bem sucedidos nas atividades propostas na seção
A partir deste contexto, é possível colocar várias perguntas que podem ser res-
pondidas com auxílio da matemática e da computação. Por exemplo:
a) Dadas as cores das bolinhas da primeira linha, qual será a cor da bolinha
do topo?
27
2 Pensamento Computacional -
Aplicações
O QUÊ?
Aplicações do pensamento computacional e
de linguagens de programação na exploração
de problemas matemáticos.
POR QUÊ?
Dominar uma linguagem de programação nos
permite explorar e resolver problemas mate-
máticos de maneiras diferentes. Assim, po-
demos entender o poder de ferramentas com-
putacionais e porque elas são tão usadas em
todas as áreas do conhecimento atualmente.
Parte II
Apresentação As atividades
As atividades desta seção foram escolhidas para que os estudantes tenham experiên- Abaixo, apresentamos o resumo de cada uma das atividades, dando especial atenção
cia em usar uma linguagem de programação para explorar problemas matemáticos, à relação da mesma com os demais módulos do Livro Aberto. A ordem em que elas
ou seja, como uma ferramenta que permite simular, testar casos, realizar cálculos de são apresentadas foi definida pela dificuldade computacional, mas não precisa ser
maneira rápida e precisa, gerar dados, etc. seguida.
Em linhas gerais, as atividades desta parte promovem a habilidade EM13MAT405 (Uti- Números binários: nesta atividade discutimos a representação de números na base
lizar conceitos iniciais de uma linguagem de programação na implementação de al- 2, ou seja, usando apenas 0s e 1s, como ocorre internamente em computadores. Do
goritmos escritos em linguagem corrente e/ou matemática) e reforçam a habilidade ponto de vista matemático, o conteúdo se relaciona com sistemas de numeração, es-
EM13MAT315 (Investigar e registrar, por meio de um fluxograma, quando possível, um pecificamente com o sistema de numeração binário, potências de 2 e com contagem.
algoritmo que resolve um problema), que foi desenvolvida na parte anterior. Além Mais espeficamente, a atividade dialoga com a questão sobre o sistema de escrita
disso, as atividades promovem a integração do pensamento computacional e da pro- Braile proposta no módulo sobre Contagem. Do ponto de vista computacional, a ativi-
gramação ao currículo regular de matemática, atendendo ao Objetivo Específico 4 dade explora repetições, condicionais e cálculos com variáveis. As habilidades desen-
(Aplicar o pensamento computacional e formas sistemáticas de representação de um volvidas são: EM13MAT405 e EM13MAT310.
algoritmo para criar soluções para problemas relacionados a conteúdos matemáti-
Quantas caras: nesta atividade propomos um jogo com moedas e discutimos como
cos) e reforçando o Objetivo Específico 3 (Compreender os conceitos básicos de uma
construir um simulador em Portugol para o jogo. Com esse simulador, não apenas
linguagem deprogramação, como repetição, condicional e variável).
os estudantes poderão simular muitas jogadas e analisar os resultados obtidos, mas
Também é importante salientar que as atividades propostas nesta seção partem do também explorar pequenas variações do jogo de forma empírica. A proposta dialoga
pressuposto de que exista um laboratório de informática disponível para uso por, pelo com o Para Saber Mais proposto no final do módulo de Probabilidade, onde os auto-
menos, uma aula por atividade. O uso de computadores é recomendável nesta parte, res sugerem a simulação do lançamento de uma moeda com o auxílio de planilhas
já que o foco é usá-los como ferramenta para resolver problemas matemáticos. En- eletrônicas. Do ponto de vista computacional, a atividade explora basicamente re-
tretanto, pode ser possível organizar a turma de modo que as atividades sejam reali- petições e condicionais simples. As habilidades desenvolvidas são: EM13MAT405 e
zadas em celulares ou com um número reduzido de computadores. EM13MAT511.
Método da bissecção: no Para Saber Mais entitulado ”Sem ferramentas de Cálculo”, do
Dois usos diferentes módulo sobre logaritmos, foi introduzido o método da bissecção para determinar o va-
Diferentemente da parte anterior, que deve ser vista como um capítulo a ser estudado lor aproximado de . Nesta atividade, vamos mostrar como implementar esse método
do início ao fim, esta parte pode ser usada de duas formas diferentes. em Portugol e, por se tratar de um método polivalente, ele poderá ser utilizado para
encontrar aproximações para outros números irracionais. A habilidade desenvolvida
A primeira delas é como um capítulo convencional a ser estudado após a primeira é: EM13MAT405.
parte deste módulo. Nesse caso, as atividades propostas servem como aplicação do
que foi aprendido anteriormente, mas dependem de um conhecimento mais aprofun- Tem sinal?: nesta atividade, propomos uma questão de interesse atual: dada uma po-
dado dos tópicos matemáticos envolvidos. sição e um conjunto de torres que transmitem algum tipo de sinal, há sinal disponível
nessa posição? O problema é tratado no plano e envolve conceitos geométricos como
A segunda possibilidade de utilização que vislumbramos é de forma integrada aos de- distância entre pontos e definição de circunferência, assim como trabalha a ideia de
mais módulos. Nesse cenário, sugerimos que a primeira parte seja estudada no início inequação. Do ponto de vista de programação, o problema não é complexo e exige
no primeiro ano letivo do Ensino Médio, para que os estudantes desenvolvam o pen- apenas alguns cálculos juntamente com condicionais e repetições simples. A habili-
samento computacional e dominem alguns conceitos de linguagem de programação. dade desenvolvida é: EM13MAT405.
Depois, ao invés de resolver as atividades desta parte sequencialmente, sugerimos
que o professor espere a discussão dos tópicos matemáticos relacionados e, então, Avaliação
traga estas atividades para a sala de aula.
Todas as seções trazem, nas notas para o professor, sugestões de variações das ati-
Essa segunda abordagem nos parece mais promissora no sentido de integrar o pen-
vidades propostas que podem ser usadas para fins de avaliação.
samento computacional de maneira mais orgânica na disciplina de Matemática, como
recomendado por Disessa (2018) e Li et al. (2020). Entretanto, ela demanda uma certa
flexibilidade curricular para encaixar a primeira parte do módulo no início do Ensino
Médio e incluir as ativdades desta parte ao longo dos demais módulos.
2
CAPÍTULO
EXPLORANDO NÚMEROS BINÁRIOS Nesta seção propomos uma investigação sobre a representação binária
de números a partir da discussão que foi feita na atividade sobre o alfa-
beto Braile, no módulo sobre Contagem. A discussão aqui enfatizará o
Dois estados aspecto numérico do conteúdo, e não aspectos de análise combinatória,
PARA PESQUISAR
O vídeo Hit dos Bits, da coleção Matemática Multimídia explica como o sistema de repre-
sentação binário é usado por computadores.
Nesta seção, vamos analisar o sistema de representação binária com o objetivo de escrever um
algoritmo que converta um número dado na base decimal para a base binária. Mas para isso, é
importante compreendermos bem como essa conversão funciona.
31
2
CAPÍTULO
20 = 16 + 4
20 = 24 + 22
20 = 1 · 24 + 1 · 22
20 = 1 · 24 + 1 · 22
20 = 1 · 24 + 0 · 23 + 1 · 22 + 0 · 21 + 0 · 20
32
2
CAPÍTULO
Soma de
Representação Representação
potências de Soma completa de potências de 2
decimal binária
2
c) Tente descrever textualmente, ou com auxílio de um fluxograma, como você pode pro-
ceder para converter um número natural dado na representação decimal para a repre-
sentação binária. Faça essa descrição em uma folha de papel avulsa com a frente e o
verso em branco.
d) Troque com um colega a sua descrição e avalie se você consegue seguir as instruções
criadas por ele e se elas funcionam corretamente. Faça anotações para o seu colega,
destroque e reescreva a sua descrição no verso da folha levando em conta as anotações
feitas na sua descrição pelo seu colega.
Zeros e Uns
Existe mais de uma maneira de converter um número inteiro da base decimal para a base biná-
ria e o método que vamos utilizar se baseia em encontrar quais potências de 2 são menores do
que o número que se deseja representar.
Para entender essa abordagem, precisamos levar em conta uma propriedade das potências de
2. Essa propriedade diz que a soma das potências de 2 até uma determinada potência é menor
do que a próxima potência de 2. Isto é, 20 + 21 + 22 + 23 + · · · + 2n < 2n+1 .
Não demonstraremos essa propriedade aqui, mas isso pode ser feito com auxílio de progres-
sões geométricas.
O que essa propriedade nos permite concluir é que se uma potência de 2 é menor do que um
determinado número, ela necessariamente deve aparecer na representação binária desse nú-
mero. Vejamos um exemplo com o número 46.
Começamos listando as potências de 2 até que elas sejam maiores do que 46: 1, 2, 4, 8, 16, 32
e 64. Como 64 é maior do que 46, ele não vai aparecer na representação binária desse número.
Mas como 32 é menor, ele vai aparecer. Podemos escrever o seguinte:
46 = 32 + 14 = 25 + 14
Agora, temos que continuar o processo com a parte que ainda não é uma potência de 2, ou seja,
o 14. Como a maior potência de 2 menor do que 14 é 8, escrevemos o 14 como uma soma de 8
mais a diferença, no caso, 6:
33
2
CAPÍTULO
Objetivos Específicos 46 = 25 + 14
46 = 25 + (8 + 6)
Zeros e Uns
PENSAMENTO COMPUTACIONAL - APLICAÇÕES
46 = 25 + 23 + 6
Aplicar o pensamento computacional e formas sistemáticas de repre-
sentação de um algoritmo para criar soluções para problemas relacio-
nados a conteúdos matemáticos.
O processo continua até termos apenas potências de 2 na soma.
Sugestões e discussões
46 = 25 + 14
Zeros e Uns
46 = 25 + (8 + 6)
Duração: 1 aula no laboratório de informática.
46 = 25 + 23 + 6
Enriquecimento da discussão: uma vez obtido o algoritmo, você pode
propor perguntas adicionais para os estudantes de modo a investigar 46 = 25 + 33 + (4 + 2)
algumas propriedades dos números escritos na base 2. Alguns exem- 46 = 25 + 23 + 22 + 21
plos são: como podemos identificar números pares e ímpares na base
2? O que acontece com a representação binária de um número quando Finalmente, indicando o 1 como multiplicador de cada uma das potências acima e completamos
dobramos o seu valor? Você observa algum padrão nos algarismos da com as potências de 2 que não apareceram multiplicando-as por 0 (para não alterar o valor da
representação binária dos números de 0 a 31? soma:
b) 46 = 1 · 25 + 1 · 23 + 1 · 22 + 1 · 21
46 = 1 · 25 + 0 · 24 + 1 · 23 + 1 · 22 + 1 · 21 + 0 · 20
a) Use o procedimento descrito acima para obter a representação binária do número 145.
b) Escreva em Portugol um algoritmo que converta um número inteiro, dado na base deci-
mal, para a base binária. Vamos assumir, por enquanto, que o número dado é menor do
que 256, ou seja, você precisa considerar apena as potências de 2 até 27 .
c) Use o algoritmo obtido na questão anterior para obter a representação decimal do nú-
mero 200.
34
2
CAPÍTULO
ORGANIZANDO USANDO ZEROS E UNS
A base binária é importante não apenas pelo seu uso em computação, mas também pela sua
simplicidade: o fato de usarmos apenas 2 símbolos (0s e 1s) para representar um número qual-
Nessa representação, 1 significa ”escolhido” e ”0” significa ”não escolhido” e todos os elementos
disponíveis devem ser marcados em um dos dois estados.
Note que agora cada escolha pode ser vista como um número de 5 algarismos na base binária.
Portanto, para saber de quantas formas podemos fazer essa escolha, basta contar quantos
números binários de 5 algarismos são representados exatamente com dois algarismos 1.
Esse é apenas um dos exemplos fora da computação e da escrita em Braile em que podemos
aplicar a base binária.
35
2
CAPÍTULO
EXPLORANDO O MÉTODO DA BISSECÇÃO
O comando usado na linha 3 carrega os comandos que fazem parte dessa biblioteca na variá-
vel mat. Na linha 9, o comando potencia é usado, mas como ela faz parte da biblioteca, ele
precisa ser acionado não apenas pelo seu nome, mas acrescentando mat. logo antes. Isso diz
ao computador para usar o comando potencia que está carregado na variável mat.
PARA REFLETIR
37
2
CAPÍTULO
Objetivos Específicos
a) Leia a descrição do método da bissecção dada acima e, se necessário, o exemplo dado
Implementando o método da bissecção
PENSAMENTO COMPUTACIONAL - APLICAÇÕES
Implementando o método da bissecção c) Se usarmos 5 repetições e 1 e 10 como valores inferior e superior iniciais, qual é o valor
Duração: 1 aula, sem considerar as discussões propostas no Organi- que o seu algoritmo obtem para log2 5? E se usarmos 10 repetições?
zando a seguir.
d) Use o seu algoritmo para gerar aproximações para log2 7 e log10 2. Qual valor você ob-
Organização da turma: sugerimos a divisão da turma em grupos pe- teve?
quenos ou em duplas, de acordo com a disponibilidade de computado-
res.
PARA REFLETIR
Solução: Implementando o método da bissecção
Quais√alterações devem ser feitas no seu algoritmo para que ele obtenha aproximações
a) Pode haver alguma variação em como os estudantes contam a pri- para 2?
meira repetição (começando em 0 ou 1), em como eles obtém o pri-
meiro valor médio (antes da repetição ser iniciada ou dentro dela) e
como lidam com a última repetição (calculando o último valor médio
dentro ou depois da repetição).
b)
c) 2,265625 e 2,32275390625.
38
2
CAPÍTULO
ORGANIZANDO APROXIMAÇÃO, ERRO E ESTIMATIVA DO ERRO
Note que no final, o algoritmo mostra não apenas o valor obtido, como também a diferença
entre os valores inferior e superior do intervalo. Essa diferença representa uma estimativa
para o erro da aproximação. Dizemos estimativa porque não sabemos qual é o número que
estamos procurando para calcularmos o erro de fato, sabemos apenas que ele certamente se
encontra dentro de um determinado intervalo.
Usando esse algoritmo com os valores inferior e superior sempre iguais a 2 e 3, mas variando
o número de repetições, obtemos os seguintes resultados:
Quanto resultados possuem muitas casas decimais, o Portugol usa uma
Número de repetições Valor obtido Estimativa do erro notação equivalente à científica, como essa: 9,765625E −4. O significado
5 2,328125 0,03125 dessa notação é 9,765625 ·1 0−4.
10 2,32177734375 0,0009765625
20 2,3219285011291504 0,0000009536743
39
2
CAPÍTULO
Note que com 5 repetições, a diferença entre os valores mínimo e máximo que delimitam o in-
tervalo onde sabemos que está o valor analisado é igual a 0,03125. Isso significa que a primeira
casa decimal desses dois valores são iguais e, portanto, temos certeza de que a primeira casa
depois da vírgula da representação decimal do número log2 5 é 3 e que, portanto, poderíamos
PENSAMENTO COMPUTACIONAL - APLICAÇÕES
usar a aproximação 2,3 tendo certeza de que esses algarismos estão corretos.
Quando consideramos os resultados depois de 10 repetições, já podemos fazer essa afirmação
para as 3 primeiras casas depois da vírgula, ou seja, já temos certeza de que a representação
decimal do número log2 5 começa com 2,321. De fato, note que a quarta casa decimal obtida
com 10 repetições é diferente do valor obtido com 20 repetições.
Com 20 repetições, já temos certeza sobre as 6 primeiras casas depois da vírgula!
Se o nosso foco é determinar uma certa quantidade de casas decimais do número em questão,
poderíamos alterar o algoritmo de modo que ele realizasse repetições até que tenhamos cer-
teza sobre essa quantidade de casas decimais. Para isso, bastaria usar a diferença entre os
valores mínimo e máximo do intervalo como critério da repetição.
Com 50 repetições, algo que é feito quase que instantaneamente com esse algoritmo em um
computador convencional, estaríamos chegando no limite que o próprio Portugol consegue re-
gistrar, afinal, o computador também tem limitações na representação de números decimais.
Porém, com linguagens de programação especificamente criadas para processamento numé-
rico de alta precisão, esse processo poderia ser repetido um número muito maior de vezes.
40
2
CAPÍTULO
EXPLORANDO QUANTAS CARAS?
Usando o computador para jogar moedas Nesta seção propomos um jogo com moedas e discutimos como cons-
truir um simulador em Portugol para o jogo. Com esse simulador, não
1
Aqui seria legal uma imagem (com função meramente ilustrativa) de uma pessoa fazendo aquela contagem
de risquinhos na parede típica de prisioneiros, só que dessa vez em duas colunas indicando cara e coroa e algumas
moedas jogadas no chão
41
2
CAPÍTULO
maior, mas poderíamos obter ainda mais repetições desse experimento aleatório com o
Sugestões e discussões auxílio de um computador que simule as jogadas e anote os resultados para nós.
Jogando moedas e contando caras Então, vamos começar a pensar em como o processo de fazer várias jogadas poderia ser
PENSAMENTO COMPUTACIONAL - APLICAÇÕES
transformado em um algoritmo.
Organização da turma: sugerimos a divisão da turma em grupos pe-
quenos ou duplas, de acordo com a disponibilidade de computadores. c) Descreva textualmente um algoritmo que realize n repetições do jogo "Quantas caras?"
Enriquecimento da discussão: você pode finalizar essa aula discutindo e registre quantas vezes saíram 2 caras, 1 cara ou 0. Não se preocupe com comandos
os resultados da turma, ou seja, aqueles obtidos ao agregar os resul- específicos de Portugol ainda, apenas com a ideia geral do que deve ser realizado em
tados de todos os grupos. Com isso, seu resultado deve estar mais cada etapa.
próximo da proporção esperada. Discuta a ocorrência de resultados
diferentes entre os grupos e a importância de agregar uma quantidade
maior de repetições para aumentar a confiabilidade dos resultados ob-
servados.
ORGANIZANDO USANDO O COMPUTADOR PARA JOGAR MOEDAS
Solução: Jogando moedas e contando caras
a) e b) Espera-se que o resultado mais frequente seja 1 cara, mas como Agora vamos analisar o algoritmo abaixo, escrito em Portugol. Este algoritmo não simula o
o número de repetições foi baixo também é esperado que alguns jogo ”Quantas caras?”, mas sim um experimento mais simples: jogar uma moeda e anotar a
grupos observem resultados diferentes. face obtida. É importante compreendê-lo bem, pois todos os elementos que precisaremos para
simular o jogo ”Quantas caras?” (e tantos outros jogos aleatórios envolvendo moedas e dados)
c) Como os estudantes não sabem como realizar sorteios em Por-
estão presentes nele.
tugol, sugerimos que o uso de expressões mais informais (como
”jogue uma moeda” ou ”observe o resultado”) seja incentivado. O
importante aqui é que o estudante note que o resultado do jogo
não é ”cara” ou ”coroa”, mas sim a quantidade de caras observa-
das e isso deve ser registrado adequadamente. Tenha em mente
a tabela pedida na questão b) e o algoritmo obtido na próxima
atividade.
42
2
CAPÍTULO
EXPLORANDO SIMULANDO O JOGO QUANTAS CARAS?
Agora que já vimos como sortear números naturais aleatoriamente usando o Portugol, vamos
criar um algoritmo que faça a simulação de quantas jogadas quisermos para o jogo ”Quantas Objetivos Específicos
2 Existem três resultados possíveis para o experimento aleatório em questão: obter 2 ca-
ras, 1 cara ou 0. Sugestões e discussões
Você deve ter notado que os resultados obtidos na questão 5 para as frequências relativas da b), c), d) e e) Espera-se que a frequência relativa dos resultados seja 14 ,
1 1
atividade anterior foram sempre muito próximos. 2 e 4 para 2 caras, 1 cara e 0, respectivamente. Na questão c), essas
proporções devem ficar muito claras nos resultados. Essa probabilidade
Essa estabilidade nos resultados quando consideramos a razão entre o número de caras obti- pode ser calculada a partir do espaço amostral de um outro experimento
dos e o número total de lançamentos é chamada de ”lei dos grandes números”. Essa lei, que aleatório: lançar duas moedas e anotar as duas faces. Neste experi-
foi apresentada no módulo sobre Probabilidade, é uma das mais importantes da estatística e mento, há 4 resultados possíveis e todos equiprováveis, portanto, com
diz que quando realizamos um número muito grande de repetições, a frequência observada de probabilidade igual a 14 . Porém, um deles não apresenta caras (0), um
cada resultado se aproxima da probabilidade teórica. deles apresenta 2 caras e dois deles apresentam 1 cara.
O uso de computadores para realizar muitas repetições de um experimento aleatório permite-
nos observar essa lei em funcionamento e pode ajudar-nos a ter uma verificação empírica
dos cálculos de probabilidade que já realizamos ou indicar tendências para probabilidades que
ainda não tenhamos compreendido do ponto de vista teórico.
43
2
+ OUTROS EXPERIMENTOS COM PORTUGOL
CAPÍTULO
PARA SABER
Este problema pode ser usado como uma extensão da atividade pro- O comando sorteia pode ser utilizado para realizar outros tipos de experimentos aleatórios cujo
posta anteriormente ou como avaliação. Se desejar uma discussão mais resultados sejam discretos, como lançar um dado comum. Para isso, bastaria usar o comando
PENSAMENTO COMPUTACIONAL - APLICAÇÕES
detalhada do Jogo do Máximo (sem o uso de uma linguagem de progra- sorteia da seguinte maneira: sorteia(1,6).
mação) você pode conferir o software educacional Explorando o Jogo do
Um problema que pode ser interessante investigar empiricamente com essa ferramenta é o
Máximo e o seu Guia do Professor.
Jogo do Máximo: a cada jogada, dois dados comuns são lançados. Se a maior face obtida for 5
ou 6, o jogador A vence. Se a maior face for 1, 2, 3 ou 4, o jogador B vence.
A pergunta a ser investigada é: qual dos dois jogadores tem maior probabilidade de vencer?
44
2
CAPÍTULO
EXPLORANDO TEM SINAL?
Hoje em dia, a disponibilidade de sinal de celular é uma questão que vai além do acesso a redes Nesta seção, propomos um problema que lida com inequações não line-
sociais ou entretenimento. Com o aumento do uso da internet em diferentes áreas, ter acesso ares, coordenadas de pontos no plano cartesiano, circunferência e dis-
Por exemplo, na imagem acima, o aparelho celular está na posição marcada com x, que tem
coordendas (2; 1) e a torre está na posição (6; 2) e tem um alcance de 3 quilômetros.
Quando temos uma representação visual em mãos, é fácil dizer se um ponto dado está dentro
do alcance de uma torre dada. No caso acima, a resposta é não. Mas e quando temos apenas
as coordenadas do celular e da torre?
45
2
CAPÍTULO
Objetivos Específicos
a) Considere que uma nova torre com alcance de 3 quilômetros foi instalada no ponto de
Tem sinal? - parte 1 (1; −1). Represente essa nova torre e o seu alcance na imagem acima. O ponto marcado
PENSAMENTO COMPUTACIONAL - APLICAÇÕES
Compreender como sistematizar soluções algorítmicas através de re- com um x está dentro do alcance dessa nova torre?
cursos como a linguagem matemática, fluxogramas ou linguagens de
programação. b) Considere agora que uma terceira torre com alcance de 4 quilômetros foi instalada no
ponto de (−1; 4). Represente essa nova torre e o seu alcance na imagem acima. O ponto
marcado com um x está dentro do alcance dessa nova torre?
Sugestões e discussões Por mais que a sua representação tenha sido feita com cuidado, é possível que você
tenha ficado com dúvidas sobre a resposta para a questão b), não?
Tem sinal? - parte 1
Recomendações gerais: esta atividade foi concebida para uso em sala c) Como podemos decidir, a partir das coordenadas da posição do celular e das torres em
de aula. seu entorno, se o ponto está dentro do alcance de cada uma das torres?
Duração: 1 aula, incluindo a discussão do Organizando logo em se- Embora possa haver limitações em termos de precisão ou de dificuldade em desenhar,
guida. nós podemos usar representações visuais para resolver questões, especialmente as que
Organização da turma: a atividade pode ser feita idividualmente ou em envolvem objetos geométricos. Porém, computadores não contam com esse recurso. De
pequenos grupos. maneira geral, objetos geométricos são tratados por meio de suas coordendas e ques-
Conexões: esta atividade, na verdade, lida principalmente com conteú- tões como essa (se um ponto está dentro ou fora de uma circunferência) são respondi-
dos matemáticos ligados à Geometria Analítica (ponto, circunferência das com o auxílio de alguns cálculos.
e distância entre pontos) e Álgebra (inequações). É recomendável que
você aproveite o contexto para relembrar esses conceitos. d) Descreva textualmente como proceder para determinar se um ponto no plano está den-
tro ou fora de uma circunferência dadas as coordenadas do ponto, as coordenadas do
Solução: Tem sinal? - parte 1 centro da circunferência e o seu raio. Sua descrição deve contemplar todos os passos
a) Sim. da resolução e ser aplicável a quaisquer pontos e torres.
b) Não. e) Aplique a sua descrição para o caso em que o ponto está na posição (0; −2) e a torre foi
instalada na posição (1; −4) e tem alcance de 5 quilômetros.
c) O que buscamos aqui é que os estudantes percebam que basta veri-
ficar se a distância do ponto ao centro da circunferência é menor do
que o raio.
46
2
CAPÍTULO
ORGANIZANDO SOLUÇÕES PARA INEQUAÇÕES
Ao responder a pergunta ”um ponto dado está dentro do alcance de pelo menos uma das torres
dadas?”, estamos lidando com um conjunto de inequações e isso é diferente do que fazemos
Na figura acima, o ponto H é uma solução das três inequações que determinam os três círculos
mostrados. O ponto E é solução de duas das equações que determinam as circunferências
traçadas. Já o ponto F é solução de apenas uma das inequações que determinam os círculo e
o ponto G não é solução de nenhuma dessas inequações.
Considerando esses quatro pontos, em qual deles há sinal?
47
2
CAPÍTULO
EXPLORANDO TEM SINAL? - PARTE 2
Agora que você já sabe como resolver esse problema a partir das coordendadas dos pontos
envolvidos, podemos utilizar essa abordagem para criar um algoritmo que diga se há sinal em Objetivos Específicos
Nesta atividade, você deve escrever um algoritmo que leia as informações a partir de um for- Dificuldades: tenha certeza de que os estudantes leram e compreen-
deram o que foi apresentado no Explorando que antecede a atividade,
mato específico. Primeiro, o usuário irá digitar as coordenadas x e y, nessa ordem, do ponto
pois ele deve esclarecer pontos potencialmente difíceis. A descrição
para o qual vamos analisar a existência de sinal. Esses dois valores devem ser variáveis in-
da entrada esperada para o algoritmo é uma novidade desta atividade.
teiras. Depois, um número inteiro referente ao número de torres que serão consideradas. Por Apesar de incomum, não é difícil compreendê-la: ela apenas descreve
fim, para cada torre serão dados três valores (todos reais) representando a sua coordenada a ordem em que os comandos ”leia” devem ser usados.
x, coordenada y e alcance. Segue um exemplo explicado:
Solução: Tem sinal? - parte 2
2 (coordenada x do ponto)
-1 (coordenada y do ponto) a)
3 (quantidade de torres)
-10 (coordenada x da torre 1)
3 (coordenada y da torre 1)
6 (alcance da torre 1)
7 (coordenada x da torre 2)
6 (coordenada y da torre 2)
4 (alcance da torre 2)
10 (coordenada x da torre 3)
1 (coordenada y da torre 3)
7 (alcance da torre 3)
A resposta do seu algoritmo deve ser um único caractere: S ou N, se houver ou não sinal no
ponto dado. No caso do exemplo dado, a saída deve ser: N
b) Os testes estão todos corretos. Você pode sugerir que os estudantes
criem novos casos, testem com seus algoritmos e depois troquem
a) Escreva um algoritmo em Portugol que resolva o problema proposto seguindo o formato entre si.
de entrada descrito acima.
Você pode usar o exemplo acima para testar a sua solução.
49
2
CAPÍTULO
b) A seguir estão disponíveis mais alguns casos para você testar com o seu algoritmo.
0 1 -1
2 1 4
3 -5 10
3 1 10
4 5 10
-2 Saída -2
-2 N -2
3 4
Saída 0
S 6
7
1
-5
5
Saída
N
Você estudou no módulo sobre sistemas lineares o significado geométrico da resolução de sis-
temas de equações lineares: equações lineares determinam retas e a solução de sistemas com
duas ou mais equações lineares determinam os pontos de intersecção entre essas retas. Resol-
ver uma inequação significa, geometricamente, encontrar os pontos de um intervalo ou região
que satisfazem essa inequação. Portanto, resolver um sistema de inequações significa encon-
trar os pontos que estejam localizado na sobreposição (ou intersecção) de todas as regiões
determinadas por cada uma das inequações.
Uma inequação linear de duas variáveis determina um semi-plano e um sistema de inequações
lineares determina regiões que resultam da sobreposição desses semiplanos, podendo ser usa-
dos para determinar a parte interior de um polígono, por exemplo. Seguindo esse raciocínio, o
interior de um pentágono poderia ser dado por um sistema de 5 inequações lineares e é pos-
sível checar se um ponto está dentro do pentágono verificando se as coordenadas do ponto
satisfazem todas a inequações. Porém, essa é apenas uma das maneiras de fazer essa checa-
gem para o caso de um polígono. Com ferramentas que você poderá estudarno Ensino Superior,
mais especificamente no curso de Geometria Analítica, outros métodos estarão disponíveis.
Relembrando que o problema que resolvemos aqui não pretendia verificar se um ponto satisfaz
um sistema de inequações, mas sim se ele satisfaz pelo menos uma das inequações de um
conjunto de inequações.
50
2
+ A OLIMPÍADA BRASILEIRA DE INFORMÁTICA
CAPÍTULO
PARA SABER
Você talvez não saiba, mas ao longo das seções deste módulo você resolveu várias questões
que fizeram parte da Olimpíada Brasileira de Informática. Alguns exemplos são os problemas
51
Notas
1 Solução: Boas instruções 4 Solução: Cubos conectados
a) R$ 190,00 e 189,00 e) Existem muitas maneiras de resolver esse problema. Duas delas são discutidas
na seção Organizando a seguir. Sugerimos que as soluções dadas pelos estu-
b) R$ 190,00, 208, 50 e 370,00 dantes sejam comparadas levando em conta as discussões propostas a seguir.
c) Sim, pois a promoção não afeta o valor que já seria pago pelos primeiros bottons
ao dar desconto apenas para os bottons adicionais. Diferentemente da primeira 5 Solução: É primo ou não?
opção, aqui o a função ”valor a ser pago” é estritamente crescente em todo o seu
domínio. a) O objetivo das questões a) e b) é obter um algoritmo como o mostrado a seguir.
d) Essa questão admite muitas respostas, vide nota lateral para esclarecimento
sobre aspectos importantes a serem considerados na discussão e correção.
b) 1910 e 1530
c) As soluções podem variar muito, mas duas abordagens são esperadas: a descri-
ção de um processo repetivo no qual soma-se ou subtrai-se sucessivas parcelas
iguais a 76 de 1986 até obter uma resposta; o cálculo de quantos intervalos de 76
anos cabem no intervalo entre 1986 e o ano de nascimento para então calcular
o ano de interesse. Ambas estão corretas.
52
8 Solução: MMC
Sugestão geral: Você pode transformar essa atividade em uma proposta mais
ampla, solicitando aos estudantes que pesquisem como o cálculo do imposto a) Vários métodos são ensinados para esse procedimento, mas os dois que pare-
retido na fonte é feito e quais são as alíquotas e valores a deduzir para cada cem mais comuns envolvendo a listagem de múltiplos ou a fatoração simultâ-
intervalo de salário bruto. Há muitas referências na internet que podem ser con- nea dos dois números. Este último é computacionalmente mais eficiente, mas
sultadas. depende de uma lista de números primos para sua implementação.
Para o laboratório: Como as variáveis usadas neste código são do tipo real, b)
recomenda-se que ao atribuir um valor a elas, seja indicada ao menos uma casa
decimal, mesmo que seja igual a 0, como na linha ir=0.0 na solução abaixo. Além
disso, o Portugol pode considerar como erro as situações em que uma variável
só recebe um valor dentro de comandos condicionais, pois caso a condição não
seja satisfeita, o algoritmo poderia terminar sem que a variável receba um valor.
Variações: Você pode pedir que o algoritmo calcule o valor do salário após o des-
conto ou a alíquota efetivamente cobrada.
7 Solução: Xadrez
c) Basta acrescentar o cálculo sugerido pela propriedade ao final do algoritmo
a) Preto, branco, preto.
mostrado acima: ”mdc = (a*b)/(a*n)”.
b) É possível resolver esta questão pensando na paridade da soma das dimensões
(mostrado abaixo) ou na paridade das coordenadas isoladamente. 9 Solução: Campeonato
c) Várias soluções são possíveis, sendo essa uma delas: A solução específica deste problema é mostrada abaixo. Curiosamente, ela é mais
longa que a solução geral, porém, o significado das etapas do algoritmo são mais
claras.
Uma solução geral, para times participantes, é mostrada a seguir. A variável nfa-
ses permite que a solução seja ajustada para torneios com mais ou menos times
participantes, desde que siga a mesma estrutura de chaves.
53
54
Referências Bibliográficas
Brasil (2018). Base Nacional Comum Curricular. Ministério da Educação, Brasília, Brasil. Dispo-
nível em: http://basenacionalcomum.mec.gov.br.
Disessa, A. A. (2018). A computation literacy and ”the big picture” concerning computers in
mathematics education. Mathematical Thinking and Learning, 20(1):3–31.
Esteves, A., Noschang, L., Raabe, A. e Filho, A. (2019). Portugol studio: Em direção a uma co-
munidade aberta para pesquisa sobre o aprendizado de programação. Em Anais do XXVII
Workshop sobre Educação em Computação, páginas 513–522, Belém, Brasil. Sociedade Bra-
sileira de Computação.
Li, Y., Schoenfeld, A. H., diSessa, A. A., Graesser, A. C., Benson, L. C., English, L. D. e Duschl, R. A.
(2020). Computational thinking is more about thinking than computing. Journal for STEM
Education Reserach, páginas 1–18.
Noschang, L., Pelz, F., de Jesus, E. e Raabe, A. (2014). Portugol studio: Ide para iniciantes em
programação. Em Anais do XXII Workshop sobre Educação em Computação, páginas 1–10,
Braslília, Brasil. Sociedade Brasileira de Computação.
55