Página 51
Unidade 3
Capítulo 5 - Programar Soluções Digitais
Pensamento computacional e o poder de criar soluções.
Tema do capítulo: Programação
Objetivos de Aprendizagem
- Compreender o conceito de programação como uma forma de criar soluções para problemas por meio de instruções organizadas e executadas por computadores.
- Desenvolver o pensamento computacional, utilizando estratégias como decomposição de problemas, reconhecimento de padrões, abstração e elaboração de algoritmos.
- Reconhecer como algoritmos e programas estão presentes em diferentes tecnologias do cotidiano, analisando seu funcionamento, suas aplicações e seus impactos na sociedade.
- Refletir sobre a importância da ética no desenvolvimento de sistemas computacionais, considerando aspectos relacionados à privacidade, acessibilidade, equidade, transparência e responsabilidade no uso das tecnologias digitais.
Página 53
Atividade Inicial · Diagnóstica
Leia e responda livremente às perguntas a seguir.
Pense antes de responder
- Você já imaginou como um aplicativo, um jogo ou uma rede social "sabe" exatamente o que fazer quando você toca na tela? O que acontece por trás disso?
- Se você pudesse criar um aplicativo para resolver um problema da sua escola, da sua casa ou do seu bairro, qual seria esse problema e como ele funcionaria?
- Você acha que um computador consegue "pensar" sozinho ou ele faz apenas aquilo que foi programado? Explique sua opinião.
- A programação serve apenas para quem quer trabalhar com tecnologia ou pode ajudar qualquer pessoa a resolver problemas no dia a dia? Por quê?
A Arte de Conversar com Máquinas
Pensamento computacional e o poder de criar soluções
1. O que é programação e por que ela importa para você?
Você conhece esta frase? "Programar é ensinar o computador a fazer algo que você sabe fazer, mas não quer fazer repetidamente."
Quando você cria um programa para organizar automaticamente uma lista de nomes em ordem alfabética, por exemplo, você está transferindo para a máquina uma tarefa que poderia levar horas se feita manualmente e que o computador executa em fração de segundo, sem erros, quantas vezes for necessário.
Em termos gerais, podemos dizer que programação é o processo de dar instruções ao computador para que ele execute uma tarefa. Na verdade, para programar você não precisa ser um gênio da computação ou da matemática.
Para conseguir programar é fundamental desenvolver a capacidade de pensar com clareza, decompor problemas em etapas menores e comunicar caminhos que levem à solução de um desafio de forma precisa. E essas habilidades podem ser adquiridas por qualquer pessoa praticando continuamente.
- Programação
- É o processo de escrever instruções em uma linguagem de programação para que um computador execute tarefas específicas. Essas instruções formam um programa que transforma dados de entrada em resultados úteis. Exemplos de linguagens: Python, JavaScript, C++, Java, Scratch. Voltar ao termo programação
A importância de aprender programação vai muito além de conseguir um emprego na área de tecnologia. Vivemos em um mundo onde algoritmos decidem o que você vê nas redes sociais, o preço que você paga em aplicativos de transporte, quem recebe crédito bancário e como as notícias são classificadas nos mecanismos de busca.
Quando você entende como esses sistemas funcionam, você possui muito mais poder para questionar, criticar e exigir que funcionem de forma justa do que alguém que os vê como uma "caixa preta" misteriosa.
Página 54
Aprender a programar também ajuda você a resolver problemas do dia a dia de modo diferente. O pensamento sistemático e a decomposição de problemas em etapas menores são habilidades transferíveis para qualquer situação cotidiana e para qualquer área do conhecimento como medicina, arquitetura, jornalismo, gestão pública, arte etc.
Não é por acaso que países como Finlândia, Estônia e Reino Unido e agora o Brasil incluíram programação nos currículos escolares básicos. Essa inclusão não é para formar programadores, mas para formar cidadãos mais analíticos e capazes de projetar soluções com clareza e autonomia.
2. Como o computador entende as nossas instruções?
Você já deve ter se perguntado isso: como o computador entende direitinho as instruções que recebe? Um dos maiores desafios de programar é que os computadores não entendem metáforas, contextos implícitos ou intenções indiretas. Eles só obedecem a informações objetivas e diretas.
Um computador executa exatamente a instrução recebida de forma literal. Se você mandar um programa somar "3" com "quatro", ele pode travar, dar um resultado errado ou simplesmente se recusar a executar, dependendo de como foi escrito. Isso acontece porque, em linguagem de programação, "3" é um número e "quatro" um texto. São tipos de dados objetivamente diferentes.
Um tipo de dado define o que um valor representa e quais operações podem ser feitas com ele. Assim como no mundo físico você não tenta misturar água e areia esperando que fique água, em programação você não pode somar um número com um texto e esperar um resultado numérico. Definir corretamente o tipo de cada informação é o primeiro passo para escrever um programa que funciona.
- Tipo de Dado
- É a classificação que define o que um valor representa em um programa e quais operações podem ser realizadas com ele. Os tipos mais comuns são: inteiro (números sem decimais), texto (sequências de caracteres), booleano (verdadeiro ou falso) e decimal (números com parte fracionária). Voltar ao termo tipo de dado
Os quatro tipos de dados fundamentais são:
| Tipo de dado | O que representa | Exemplos do cotidiano |
|---|---|---|
| Inteiro (Integer) | Números sem parte decimal. | Idade (17), quantidade de alunos (32), número de tentativas (3). |
| Texto (String) | Sequência de caracteres, letras, números e símbolos tratados como texto. | Nome ("Maria"), e-mail ("user@email.com"), mensagem de erro. |
| Booleano (Boolean) | Só dois valores possíveis: verdadeiro ou falso. | Usuário está logado? (verdadeiro/falso). Nota é suficiente? (verdadeiro/falso). |
| Decimal (Float) | Números com parte decimal, usados quando a precisão importa. | Preço (R$ 19,90), temperatura (36,7°C), coordenadas GPS. |
Note que a precisão exigida pelos tipos de dados usados na programação tem um efeito prático importante: erros de tipos de dados são uma das causas mais comuns de falhas em sistemas computacionais.
Um programa de finanças que trata o valor de uma transação como texto em vez de número pode calcular totais errados. Um sistema de saúde que confunde a idade de um paciente com seu código de identificação pode gerar diagnósticos incorretos.
Portanto, entender tipos de dados não é apenas uma questão técnica, mas de segurança e confiabilidade.
3. O que são algoritmos e como eles fazem os computadores "pensarem"?
Você já ouviu muito falar a palavra algoritmo, não é mesmo? Ele é um termo-chave na linguagem de programação. Podemos dizer que algoritmo é uma sequência de passos que, se obedecida, poderá resolver um problema ou realizar uma ação programada.
Página 55
A palavra vem do nome de um matemático persa do século IX chamado Al-Khwarizmi. Suas contribuições sobre cálculo matemático influenciaram muito o desenvolvimento das ciências exatas no mundo. Hoje, o algoritmo é o cérebro de todo sistema computacional, desde uma simples calculadora até os sistemas de navegação de foguetes espaciais.
- Algoritmo
- É a sequência finita, ordenada e precisa de passos que, quando seguida, resolve um problema ou executa uma tarefa específica. O nome vem do matemático persa Al-Khwarizmi, do século IX. Em programação, um algoritmo é a lógica de solução escrita antes do código, como um roteiro detalhado que a máquina deve seguir para chegar ao resultado esperado. Voltar ao termo algoritmo
Toda receita de bolo funciona como um algoritmo simples. Nela você encontra: ingredientes (informações de entrada), passos em ordem específica (processamento) e o bolo pronto (resultado de saída). Se você trocar a ordem dos passos, por exemplo, colocar no forno antes de misturar os ingredientes, o resultado será diferente do esperado. O mesmo vale para algoritmos computacionais: a ordem e a precisão de cada instrução determinam se o programa funcionará corretamente.
O desenvolvimento de algoritmos eficientes está no centro de uma área chamada pensamento computacional, que engloba quatro pilares fundamentais:
| Pilar | Descrição |
|---|---|
| Decomposição | Dividir um problema grande em partes menores e mais manejáveis. "Como faço um aplicativo de lista de compras?" → primeiro o cadastro de itens, depois a exclusão, depois o total. |
| Padrões | Reconhecimento de padrões: identificar semelhanças entre problemas diferentes que já foram resolvidos antes. Ordenar uma lista de nomes tem a mesma lógica que ordenar uma lista de preços. |
| Abstração | Focar apenas no que é essencial para resolver o problema, ignorando detalhes irrelevantes. Para calcular o troco, não importa a cor das notas, só o valor. |
| Algoritmos | Criar o passo a passo preciso e repetível que leva da situação inicial ao resultado desejado. O algoritmo deve funcionar da mesma forma toda vez que for executado. |
Fique atento a essa característica dos algoritmos: eles não são neutros. Todo algoritmo foi escrito por uma pessoa, ou por uma equipe, que fez escolhas sobre o que priorizar, o que ignorar e como lidar com casos excepcionais. Quando um algoritmo de seleção de candidatos a emprego é treinado com dados históricos de uma empresa que contratou predominantemente homens brancos, ele pode aprender, sem que ninguém perceba, a penalizar candidatos que não se encaixam nesse perfil, como negros e mulheres, por exemplo.
A consciência de que algoritmos carregam as intenções e limitações de quem os cria é parte essencial da maturidade de cibercidadania do programador.
4. Como os dados são organizados para que os programas funcionem?
Um programa raramente lida com um único dado isolado. Geralmente precisa gerenciar coleções de dados, uma lista de alunos, um conjunto de preços, um histórico de transações. Para isso, a programação usa estruturas de dados: formas organizadas de armazenar e relacionar informações de modo que possam ser acessadas, modificadas e processadas com eficiência.
A escolha da estrutura de dados certa para cada problema é uma das decisões mais importantes na programação. A mesma informação organizada de formas diferentes pode tornar um programa extremamente rápido ou dolorosamente lento. Um exemplo simples: se você precisa frequentemente encontrar o nome de um aluno pelo número de matrícula, usar um dicionário (que busca pelo nome da chave em tempo constante) é muito mais eficiente do que usar uma lista (que precisaria percorrer todos os elementos até encontrar o certo).
| Estrutura | Como funciona | Onde aparece no seu cotidiano |
|---|---|---|
| Lista (Array) | Sequência ordenada de elementos do mesmo tipo. Como uma fila numerada: posição 0, posição 1, posição 2... | Lista de notas de um aluno, fila de músicas em reprodução, histórico de páginas visitadas no navegador. |
| Dicionário (Dictionary) | Associa uma chave a um valor. Como um dicionário real: você procura a palavra (chave) e encontra o significado (valor). | Cadastro de alunos: {"nome": "Ana", "nota": 8.5, "turma": "9A"}. |
| Árvore (Tree) | Estrutura hierárquica com um nó raiz e ramificações descendentes. Eficiente para buscas. | Sistema de arquivos do computador, comentários encadeados em fóruns, organograma de uma empresa. |
| Grafo (Graph) | Rede de pontos (vértices) conectados por linhas (arestas) sem hierarquia rígida. | Mapa de rotas de GPS, rede de amizades em uma rede social, rotas de distribuição logística. |
Página 56
Toda vez que você usa o aplicativo de mapas para encontrar a rota mais rápida entre dois pontos, o aplicativo executa um algoritmo de grafos, onde as ruas são arestas e as esquinas são vértices, para calcular o caminho ótimo em milissegundos. Toda vez que você abre uma pasta no computador e vê subpastas dentro dela, está navegando por uma estrutura de árvore. Toda vez que você vê os "amigos em comum" em uma rede social, o sistema percorre um grafo para identificar conexões de segundo grau entre você e outra pessoa. Saiba, portanto, que árvores e grafos merecem atenção especial por sua grande presença no mundo digital.
5. Como os programas reagem ao mundo ao seu redor?
Você já ouviu falar em "programação orientada a eventos"?
Então, observe: os programas mais simples executam uma sequência fixa de instruções do início ao fim, independentemente do que acontece ao redor. Mas os sistemas que usamos no dia a dia como aplicativos de celular, jogos, assistentes de voz, carros inteligentes, todos eles funcionam de forma completamente diferente: eles ficam em estado de espera ativa, aguardando que algo aconteça para então agir. Esse modelo é chamado de programação orientada a eventos.
Em programação, podemos dizer que "evento" é qualquer ocorrência externa que o programa está configurado para detectar e responder: um toque na tela, o recebimento de uma mensagem, a detecção de movimento por um sensor, a chegada de um novo dado de GPS. Quando o evento ocorre, o programa executa a função correspondente, chamada de "manipulador de eventos", e retorna ao estado de espera. É essa arquitetura que torna os sistemas interativos responsivos e "vivos".
Para descrever formalmente como um sistema reage a eventos, a ciência da computação usa um modelo matemático chamado autômato finito. Funciona como uma representação abstrata de um sistema que pode estar em diferentes estados e que transita de um estado para outro, quando recebe determinados estímulos.
Uma catraca eletrônica de metrô é um autômato simples: ela está no estado "bloqueada" e transita para "liberada" quando detecta um cartão válido, e volta para "bloqueada" após a passagem. Um videogame é um autômato muito mais complexo, com centenas de estados possíveis e transições que dependem de múltiplos eventos simultâneos.
Autômato Finito
O sistema executa uma mudança de estado quando estimulado por um evento programado. Um bom exemplo seria o funcionamento de um aplicativo bancário que possui estados bem definidos como: "aguardando senha", "processando", "autenticado", "bloqueado por tentativas excessivas". Cada estado desses define o que o sistema pode e não pode fazer, e as transições entre estados dependem de eventos específicos (senha correta ou tempo esgotado).
6. Por que a ética deve estar no centro de qualquer código?
Toda vez que um programador escreve código está tomando decisões que afetam pessoas. Decisões sobre quais dados coletar e como usá-los, sobre quem terá acesso a um serviço e quem será excluído, sobre o que o sistema prioriza quando precisa escolher entre objetivos conflitantes. Essas decisões raramente são neutras, mas elas refletem os valores, as limitações e, às vezes, os preconceitos de quem as tomou.
Um dos exemplos mais documentados de viés algorítmico é o sistema COMPAS, usado por tribunais americanos nos anos 2010 para prever a probabilidade de reincidência criminal de réus. Investigações jornalísticas mostraram que o algoritmo sistematicamente classificava réus negros como mais propensos a reincidir do que réus brancos com históricos criminais similares, mesmo sem que raça fosse explicitamente usada como variável. O viés havia sido absorvido dos dados históricos do sistema de justiça, que refletiam décadas de discriminação racial.
Página 57
A ética na programação envolve dimensões que vão além de evitar erros técnicos. Inclui a proteção dos dados dos usuários, garantindo que informações pessoais não sejam coletadas além do necessário nem usadas sem consentimento. Deve incluir a acessibilidade na possibilidade de projetar interfaces que funcionem para pessoas com deficiência visual, auditiva, motora e cognitiva. Precisa prever a sustentabilidade ao considerar o consumo de energia de sistemas que processam grandes volumes de dados. E considerar a equidade ao questionar ativamente se o sistema que está sendo construído serve a todos os grupos de usuários de forma justa e igualitária.
Se você quer ser um programador completo, além de competência técnica para escrever códigos, deve desenvolver a consciência ética também. Isso significa fazer constantemente perguntas assim antes mesmo de começar a programar:
Este sistema pode ser usado para prejudicar alguém?
Estou coletando mais dados do que o necessário?
Quem será excluído por não ter acesso à tecnologia que estou construindo?
Essas perguntas não são obstáculos à criatividade. São o que diferencia tecnologia que serve às pessoas de tecnologia que as explora.
Autoria Conceitual
Agora registre com as suas palavras o que você entendeu sobre programação e algoritmos. Siga os seguintes passos:
Passo 1 — Pesquise em fontes confiáveis
Use um mecanismo de busca e acesse dois sites confiáveis para encontrar definições de "programação" e de "algoritmo". Antes de anotar, verifique a credibilidade de cada fonte (autoridade, atualização e objetivo). Registre no caderno as duas definições encontradas e a fonte de cada uma.
Passo 2 — Escreva o seu conceito
Explique com suas próprias palavras o que é programação e o que é um algoritmo, como se relacionam os tipos de dados e as estruturas de dados, e por que os algoritmos não são neutros. Registre a sua explicação no caderno.
Dica: uma boa explicação costuma unir três ideias: o que é programar (escrever instruções que transformam entradas em saídas), o que é o pensamento computacional (decompor, reconhecer padrões, abstrair e criar algoritmos) e por que a ética importa (todo algoritmo carrega as escolhas de quem o criou e pode incluir ou excluir pessoas).
Página 58
Atividade Ctrl+Ação · O Algoritmo do Cotidiano
Aplique o pensamento computacional a situações do dia a dia sem escrever código
Nesta atividade, você vai aplicar os quatro pilares do pensamento computacional a situações do cotidiano sem escrever uma linha de código. O objetivo é demonstrar que a lógica de programação está presente em tarefas que você realiza todos os dias, muitas vezes sem perceber.
Parte 1 — Mapeamento algorítmico
No caderno, monte um quadro com as colunas "Decomposição", "Padrão", "Dado principal" e "Possível erro/exceção", e aplique os quatro pilares do pensamento computacional a estas tarefas: pesquisar uma palavra no dicionário impresso; ordenar uma pilha de livros por título; e escolher o caminho mais rápido para a escola. Siga o exemplo: pagar uma passagem de ônibus com cartão (1. Aproximar cartão / 2. Aguardar leitura / 3. Validar saldo / 4. Liberar catraca — padrão igual a compras com cartão de crédito; dado principal: saldo, um número decimal; possível erro: saldo insuficiente, a catraca não libera e exibe mensagem de erro).
Parte 2 — Encontre o viés no algoritmo
Leia o cenário e responda no caderno.
Cenário
Uma escola usa um algoritmo para definir automaticamente quais alunos receberão bolsas de estudo. O algoritmo foi treinado com dados dos últimos 10 anos de concessão de bolsas. Nesse período, 85% das bolsas foram concedidas a alunos do turno matutino. O algoritmo aprendeu a priorizar alunos do turno matutino, mesmo sem que isso fosse uma regra explícita.
- Por que o algoritmo aprendeu a priorizar alunos do turno matutino?
- Quais grupos de alunos podem estar sendo prejudicados por esse viés?
- O que os desenvolvedores deveriam ter feito para evitar esse problema?
Parte 3 — Reflexão final
Em duas ou três frases, responda: qual é a diferença entre um programador técnico e um programador ético? Você acredita que saber programar muda a forma como você vê os sistemas digitais que usa no dia a dia? Justifique. Registre no caderno.
Box Biografia · Linus Torvalds
Linus Torvalds (Finlândia, 1969) aprendeu a programar aos 10 anos no Commodore VIC-20 do avô. Insatisfeito com o MS-DOS e sem dinheiro para o UNIX profissional, decidiu criar seu próprio sistema operacional. Publicou o código gratuitamente num fórum com a observação: "é apenas um hobby". Não era.
Ao abrir o código para contribuições externas, Torvalds criou involuntariamente o modelo de desenvolvimento colaborativo que chamamos hoje de código aberto. Em 2005, criou também o Git, usado por praticamente todos os desenvolvedores profissionais do planeta.
Conexão: O Linux hoje roda em 97% dos supercomputadores do mundo, sustenta os servidores da internet, é o núcleo do Android e está presente em mais de 3 bilhões de smartphones. A história de Torvalds mostra que a programação, quando compartilhada de forma colaborativa e ética, pode transformar o mundo inteiro a partir de uma única boa ideia.
Inteligência Artificial no Cotidiano
A IA Também é Código Escrito por Pessoas
Você já parou para pensar que a Inteligência Artificial (IA) não é mágica, mas sim o resultado de milhares de linhas de código escritas por pessoas? Quando usamos algoritmos que decidem o que vemos nas redes sociais ou como as notícias aparecem nos mecanismos de busca, estamos interagindo com sistemas programados.
A IA também utiliza tipos de dados, estruturas complexas de armazenamento e toma decisões com base no que ela "aprendeu". Porém, como todo algoritmo, carrega as escolhas de quem o criou, e por isso a IA também pode reproduzir preconceitos e injustiças, se não for desenvolvida com responsabilidade. A ética, portanto, é a peça-chave para garantir que a inteligência das máquinas seja usada para ajudar, e não para excluir.
Página 59
Projeto em Equipe
Desvendar o Viés dos Algoritmos
Nesta atividade, vocês formarão equipes de quatro alunos para investigar como as escolhas na programação afetam a sociedade. A missão de vocês é descobrir como algoritmos podem ser "injustos" (como o caso do sistema que priorizava bolsas de estudo para alunos da manhã, sem que isso fosse uma regra oficial) e o que podemos fazer para garantir a criação de tecnologias mais éticas e inclusivas.
Piloto de IA: será o responsável por abrir um assistente virtual inteligente e fazer a seguinte pergunta: "Como um algoritmo de computador pode acabar tomando decisões injustas ou preconceituosas contra um grupo de pessoas?". Em seguida, deve pedir um exemplo simples.
Investigador-Chefe: ficará encarregado de usar um buscador seguro na internet para pesquisar casos reais em que algoritmos falharam (por exemplo, falhas em reconhecimento facial ou sistemas de notas escolares).
Juiz da Verdade: vai analisar a resposta trazida pelo assistente virtual e compará-la com as notícias reais encontradas pelo Investigador-Chefe. Sua missão é confirmar se a IA explicou corretamente o conceito de "viés algorítmico" e se as informações fazem sentido com o que estudamos.
Designer Criativo: utilizará uma ferramenta de apresentação digital ou plataforma de design gráfico para organizar as descobertas. Deverá criar um cartaz digital contendo o problema encontrado e uma "Regra de Ouro" que todo programador ético deveria seguir para evitar que isso aconteça.
Finalizando nossa conversa
Chegamos ao fim de uma jornada fascinante pelos bastidores da programação computacional! Você descobriu que programar é muito mais do que apenas digitar códigos em uma tela escura. É essencialmente o processo de escrever instruções organizadas para ensinar o computador a realizar tarefas, transformando dados em resultados úteis. Mais do que isso, você percebeu que não é preciso ter nenhum dom especial ou ser um gênio da matemática ou computação para entender como a programação funciona. A chave está em desenvolver progressivamente o seu pensamento computacional.
Ao aprender a decompor grandes desafios, reconhecer padrões e abstrair o que não é importante, você adquiriu habilidades que vão te ajudar a resolver problemas em qualquer profissão no futuro, seja na medicina, na arquitetura ou na arte. Você também explorou como os dados precisam estar muito bem organizados em listas ou dicionários para que um aplicativo não trave ao tentar somar um texto com um número.
Por fim, o mais importante: você agora tem o olhar crítico de um cibercidadão. Entender que os sistemas que usamos não são "caixas pretas" neutras e que eles carregam as intenções e limitações de quem os criou dá a você o poder de questionar e exigir que a tecnologia seja justa, transparente e acessível. Lembre-se sempre de que por trás de todo código brilhante, deve existir um programador ético.
Parabéns por mergulhar nesse universo.
Vamos reforçar o que aprendemos?
Para fechar o capítulo, você tem dois caminhos que se completam: a Atividade Desplugada a seguir, feita com cartões de papel e caderno, e a Atividade Plugada, para planejar uma solução digital para um problema real.
Página 60
Atividade Desplugada Sem Telas
Programadores de Papel
Decisões, labirintos e caça aos bugs — sem nenhuma tela
Objetivo: exercitar decomposição, sequenciação e depuração de algoritmos usando apenas papel, caderno e o próprio corpo, mostrando que a mente de programador funciona mesmo longe do computador.
Materiais: caderno, lápis ou caneta e pedaços de papel para os cartões de comando.
Como fazer:
- Decisões em código (10 minutos). No caderno, escreva a regra de decisão de uma "máquina de aprovar pagamentos" usando a estrutura "SE... ENTÃO... SENÃO...": SE o saldo for maior ou igual ao valor da compra, ENTÃO aprovar; SENÃO, recusar. Agora crie você mesmo mais duas regras "SE... ENTÃO... SENÃO..." para situações do seu dia a dia (por exemplo, decidir se leva guarda-chuva ou se pode jogar depois da lição) e registre-as no caderno.
- Fabrique os cartões de comando (10 minutos). Em duplas, escrevam em pedaços de papel os comandos: AVANCE 1, VIRE À DIREITA, VIRE À ESQUERDA e PARE (façam mais de um cartão de cada). Em seguida, cada dupla desenha no caderno um labirinto simples em malha quadriculada, com entrada, saída e dois obstáculos.
- Guie o robô (15 minutos). Troquem os labirintos com outra dupla. Usando os cartões, montem sobre a carteira a sequência exata de comandos que leva o "robô" da entrada à saída do labirinto recebido. Depois, copiem a sequência final no caderno, numerando cada passo. Se quiserem, testem a sequência com um "robô humano": um colega executa exatamente o que os cartões mandam, sem interpretar nada por conta própria.
- Caça aos bugs (15 minutos). Cada dupla escreve no caderno um algoritmo de 6 a 8 passos para uma tarefa simples (por exemplo, trocar a pilha de um controle) inserindo, de propósito, dois erros de lógica (passos fora de ordem, passo faltando ou comando impossível). Troquem com outra dupla, encontrem os "bugs", registrem no caderno qual era o erro e reescrevam o algoritmo depurado.
Fechamento: em roda de conversa, cada dupla conta qual "bug" foi mais difícil de achar e por quê. Para encerrar, registre no caderno: qual dos quatro pilares do pensamento computacional (decomposição, padrões, abstração, algoritmos) você usou em cada etapa desta atividade?
Atividade Plugada
Use a tecnologia para planejar uma solução para o mundo real
Agora é a sua vez de usar a tecnologia para planejar uma solução para o mundo real! Siga esses passos:
- Decomposição do Problema: pense em um problema real da sua escola (grandes filas na cantina ou dificuldade em encontrar livros na biblioteca). Divida esse grande problema em três etapas menores que precisam ser resolvidas.
- Organização dos Dados: liste quais informações seu sistema precisaria guardar para funcionar. Defina o tipo de dado para cada uma (exemplo: "Nome do aluno" seria "Texto"; "Quantidade de livros" seria "Inteiro").
- Criação do Algoritmo: acesse uma plataforma gratuita de edição de mapas mentais ou desenhos digitais. Crie um fluxograma visual, mostrando o passo a passo (algoritmo) sobre como seu aplicativo funcionaria, desde o momento em que o aluno o abre até o momento em que o problema é resolvido.
- Inclusão de Eventos: no seu fluxograma, destaque ao menos um "evento" (como um clique em um botão de "Confirmar") e mostre como o programa deve reagir a essa ação, usando a lógica de programação orientada a eventos.
- Curadoria e Compartilhamento: exporte seu fluxograma como imagem, insira em uma ferramenta de apresentação digital de slides e adicione um parágrafo final, explicando como você garantiu que seu sistema seria acessível e justo para todos os colegas da escola.
Galeria de Recursos
Para aprofundar ainda mais suas descobertas, preparamos estes materiais complementares:
Dinâmica
Mente de Programador
odae.com.br/9d5
Clique no card ou escaneie
Dinâmica interativa digital ainda em produção; descrição textual alternativa pendente (item 4.3.9).
Infográfico
Pensamento Computacional
odae.com.br/9i5
Clique no card ou escaneie
Descrição do infográfico:
Infográfico em estilo desenho à mão, intitulado "O Universo da Programação: Da Lógica à Responsabilidade", com o texto "Compreender que programar é traduzir o pensamento humano em instruções lógicas, organizadas e éticas". Contém quatro blocos: 1) "O Coração da Programação", com o desenho de um computador dentro de uma nuvem de pensamento, mostrando o fluxo "Entrada (Dados) → Instruções Lógicas (Transformação) → Saída (Resultado)", com o texto "Ensinar a máquina a resolver problemas"; 2) "Pensamento Computacional", com um ícone de quebra-cabeça e um cérebro com engrenagens, listando os quatro pilares: Decomposição (Quebrar), Reconhecimento de Padrões (Padrões), Abstração (Simplificar) e Algoritmos (Passo a passo); 3) "A Linguagem dos Dados", com ícones de banco de dados, listando Tipos (Inteiro, Texto, Booleano) e Estruturas (Listas, Grafos), com o texto "Organização evita falhas e lentidão"; 4) "Ética na Programação", com um escudo com marca de verificação e uma balança de justiça, com o texto "Algoritmos não são neutros. Exige responsabilidade com: Acessibilidade (Inclusão), Equidade (Justiça), Proteção dos dados de cada usuário (Privacidade). Criar códigos conscientes". No centro, um laptop com um terminal de comando e o texto "Programar não é apenas digitar código, é a arte de decompor problemas e dar instruções precisas para que máquinas executem tarefas de forma eficiente e justa".
Podcast
A lógica dos algoritmos não é neutra
odae.com.br/9p5
Clique no card ou escaneie
Transcrição do podcast:
Palestrante 1: Sabe, quando a gente abre um aplicativo de transporte ou olha o feed de uma rede social, os preços mudam em tempo real, e os conteúdos, tipo os conteúdos perfeitos, aparecem na tela de repente.
Palestrante 2: Parece até mágica.
Palestrante 1: Parece mágica, né? Mas para quem quer estar preparado para as profissões do futuro, encarar a tecnologia dessa forma é um erro estratégico. Então, nessa nossa análise de hoje, a gente vai desconstruir um pouco essa ilusão.
Palestrante 2: Com certeza. A ideia é entender a lógica da programação. Não para que todo mundo vire desenvolvedor do dia para a noite, claro, mas porque entender os bastidores desses sistemas é, na verdade, a única forma de não ser dominado por eles.
Palestrante 1: Exato. É tirar esse status de caixa preta da tecnologia, sabe, e dar poder de questionamento para quem utiliza. O que eu achei fantástico no material é aquela premissa simples, que programar é, basicamente, ensinar o computador a fazer algo que a gente não quer repetir manualmente.
Palestrante 2: Pois é. Quando a gente entende como essas decisões automatizadas são estruturadas, o computador deixa de ser aquele oráculo inquestionável. A programação é sobre organizar o raciocínio humano de um jeito tão claro, mas tão claro, que uma máquina consiga executar tarefas complexas em escala.
Palestrante 1: Sem precisar da gente ali, toda hora.
Palestrante 2: Isso, sem intervenção constante. E o mais interessante é que essa estruturação não começa no código em si.
Palestrante 1: É, começa na nossa forma de pensar. Para ensinar a máquina, a gente precisa dominar os famosos quatro pilares do pensamento computacional.
Palestrante 2: Um modelo mental essencial hoje em dia. Historicamente, o texto cita que se fala de algoritmos desde o matemático persa Al-Khwarizmi, lá no século 9.
Palestrante 1: Caramba, século 9?
Palestrante 2: Sim. O pessoal costuma usar aquela velha metáfora da receita de bolo, onde a ordem dita o resultado. Mas eu gosto de pensar numa linha de montagem de uma fábrica. A sequência de ações e o estado de cada engrenagem ditam se o produto final sai perfeito ou se a fábrica inteira trava.
Palestrante 1: Porque a máquina não tem o bom senso humano de pular uma etapa que não serve para nada, né?
Palestrante 2: Exatamente. A máquina é rígida. Então, os quatro pilares são a base disso. A gente tem a decomposição, que é dividir problemas grandes. O reconhecimento de padrões para anotar o que se repete.
Palestrante 1: Certo.
Palestrante 2: A abstração, que é focar só no essencial. E, por fim, o algoritmo, que é criar o passo a passo.
Palestrante 1: Deixa eu ver se eu consigo dar um exemplo disso no mundo real sem nem tocar no teclado. Imagina planejar uma viagem internacional do zero. A decomposição seria quebrar esse problema gigante em partes menores, tipo passagens, hotel, roteiro.
Palestrante 2: Perfeito.
Palestrante 1: Aí, a abstração é focar estritamente no que importa naquele momento, como tirar o visto ou fechar o orçamento, ignorando os ruídos menores.
Palestrante 2: Uhum. E direto ao ponto.
Palestrante 1: E o reconhecimento de padrões é perceber que, ah, o processo de reservar o hotel é quase idêntico ao de alugar um carro. Então, a gente aplica a mesma lógica para resolver os dois problemas. É uma habilidade muito chave para as profissões do futuro. Serve para qualquer área da vida. 115
Palestrante 2: Serve mesmo. Aí, a gente tem a estrutura lógica pronta na nossa cabeça, mas o grande desafio é o atrito de transferir essa abstração humana para a máquina.
Palestrante 1: É, porque o computador precisa que os dados sejam estruturados matematicamente, né? Senão ele não consegue enxergar o problema.
Palestrante 2: Exato. A gente não consegue, tipo, somar texto com um número sem travar o sistema. O material explica bem os quatro tipos de dados: inteiro, texto, booleano e decimal. Mas o exemplo dos aplicativos de mapas é sensacional. Para traçar uma rota em milissegundos, o sistema não vê um mapa desenhado. Ele usa uma estrutura matemática chamada grafo.
Palestrante 1: Grafo. Tá, deixa eu ver se eu pego a mecânica da coisa. Um grafo seria composto por pontos e linhas de conexão. Então, os cruzamentos das ruas são os pontos e as próprias ruas são as linhas, certo?
Palestrante 2: Isso, certinho.
Palestrante 1: A máquina não está dirigindo por um mapa. Ela está calculando o peso matemático de cada linha, considerando a distância, o trânsito atual, para achar a soma mais baixa até o destino final.
Palestrante 2: Exatamente assim que o sistema quantifica o nosso mundo físico. E para que os aplicativos reajam instantaneamente aos comandos na tela, tipo quando a gente clica em algo, eles usam a programação orientada a eventos, que é baseada em autômatos.
Palestrante 1: E como funciona um autômato na prática?
Palestrante 2: Pensa numa catraca de metrô. Ela tem estados bem rígidos, ela fica bloqueada até que aconteça o evento de leitura de um cartão válido.
Palestrante 1: Ah, entendi.
Palestrante 2: Isso altera o estado para liberada e logo após a passagem da pessoa, volta a ficar bloqueada. O código fica lá em suspensão, só aguardando esses gatilhos do mundo real.
Palestrante 1: Que interessante. Mas é aqui que as coisas ficam complexas a meu ver. Porque se a máquina toma decisões baseadas nessa matemática exata, avaliando o peso dos dados, a lógica deveria ser perfeitamente neutra.
Palestrante 2: Deveria?
Palestrante 1: Mas, se os dados de entrada já vêm viciados por quem coletou, o algoritmo só vai mascarar o preconceito humano. Ele ganha uma aura de objetividade matemática que não existe de verdade. Eu fiquei bem chocado lendo sobre o caso do sistema judicial COMPAS, lá nos Estados Unidos.
Palestrante 2: Pois é. É um exemplo clássico e assustador do mito da falsa neutralidade algorítmica. O sistema tentava prever a reincidência criminal.
Palestrante 1: Sim, e como os dados históricos do sistema prisional já refletem um viés estrutural absurdo, o algoritmo simplesmente validou isso. Ele passou a classificar réus negros como sendo de alto risco mesmo sem ter uma variável explícita lá perguntando a raça.
Palestrante 2: Essa é a leitura precisa da situação. O sistema não perguntava a raça, mas ele cruzava variáveis tipo escolaridade, histórico familiar e os CEPs. E isso funcionava como um indicador estatístico indireto da raça. Quem estrutura a lógica e seleciona os dados de treinamento tem nas mãos o poder de perpetuar injustiças numa escala massiva.
Palestrante 1: É uma responsabilidade gigantesca. E uma forma clara de tentar mitigar isso que o texto também aborda é o movimento de código aberto.
Palestrante 2: Sim, total. O exemplo do Linus Torvalds, que criou o Linux.
Palestrante 1: Exato. Quando ele abriu o código para o mundo, ele descentralizou a auditoria. Porque quando milhares de olhares independentes podem analisar as regras do jogo, fica muito, mas muito mais difícil, esconder falhas lógicas ou éticas lá na arquitetura do software.
Palestrante 2: A lógica da programação é, no fim das contas, aprender a linguagem que constrói as instituições modernas, sabe? E passa a ser uma ferramenta vital de pensamento crítico.
Palestrante 1: É de cidadania até. E para encerrar a nossa análise hoje, eu queria deixar quem está acompanhando a gente com uma reflexão final, para pensar depois se os nossos preconceitos humanos, que às vezes são tão invisíveis, ficam enraizados nesses dados que treinam as máquinas.
Palestrante 2: É um ponto crucial.
Palestrante 1: Até que ponto a inteligência artificial do futuro vai ser uma inovação genuína ou apenas um espelho automatizado e altamente eficiente das nossas piores falhas históricas? Fica esse questionamento para todo mundo.
Palestrante 2: Uma excelente provocação. Fica a reflexão.
Vídeo
Desmistificando o Código
odae.com.br/9v5
Clique no card ou escaneie
Legenda, audiodescrição e janela de Libras ainda pendentes (item 4.3.9).