Pensamento computacional e resolução de problemas

Aprenda como cientistas da computação abordam problemas. Descubra o que a ciência da computação estuda e pratique as quatro técnicas do pensamento computacional: dividir um problema em partes, identificar padrões, manter apenas os detalhes relevantes e escrever uma solução precisa passo a passo. Escreva algoritmos em pseudocódigo com variáveis, decisões e laços, desenhe-os como fluxogramas, confira-os com tabelas de rastreamento e dados de teste e crie seus primeiros programas com blocos no Scratch.

BásicoAula 1 de 7 do curso Curso de Introdução à ciência da computação

O que você vai aprender

  1. Descrever o que a ciência da computação estuda, como ela se distingue da programação isoladamente e como o pensamento computacional transforma um problema em uma solução que uma pessoa ou um computador pode executar.
    • Descrever o que a ciência da computação estuda
      Explicar a ciência da computação como o estudo da computação e da informação, identificar suas principais áreas e descrever toda computação como a transformação de uma entrada em uma saída.
    • Descrever o pensamento computacional e suas quatro técnicas
      Definir pensamento computacional, identificar decomposição, reconhecimento de padrões, abstração e elaboração de algoritmos e usá-los em conjunto em um processo de resolução de problemas.
  2. Usar decomposição, reconhecimento de padrões e abstração para transformar um problema grande e pouco claro em partes pequenas e gerais, fáceis de resolver.
    • Decompor um problema em partes mais fáceis de resolver
      Dividir um problema em subproblemas, organizá-los em uma hierarquia e decidir quando uma parte é pequena o suficiente para ser resolvida diretamente.
    • Reconhecer padrões e generalizar soluções
      Encontrar semelhanças dentro de problemas e entre eles, reutilizar soluções para partes repetidas e generalizar um padrão para que uma solução cubra muitos casos.
    • Usar a abstração para focar no que importa
      Manter os detalhes necessários para um objetivo, ocultar o restante e usar modelos e procedimentos nomeados como abstrações com entradas e saídas claras.
  3. Descrever o que torna um algoritmo correto e útil e escrever algoritmos em pseudocódigo com variáveis, entrada e saída, decisões e laços.
    • Explicar o que é um algoritmo e o que caracteriza um bom algoritmo
      Definir algoritmo, verificar a precisão e a completude de instruções e comparar diferentes algoritmos para o mesmo problema quanto à correção e à quantidade de passos.
    • Armazenar e alterar dados com variáveis, entrada e saída
      Escrever pseudocódigo que lê entradas, armazena e atualiza valores em variáveis, calcula com operadores e produz saídas.
    • Tomar decisões com estruturas de seleção
      Escrever condições com operadores de comparação e lógicos e usar IF, ELSE e ELSE IF para que um algoritmo siga o caminho correto para cada entrada.
    • Repetir passos com laços
      Usar laços controlados por contagem e por condição, manter totais acumulados e contagens e evitar laços infinitos e erros de uma unidade.
  4. Desenhar e ler fluxogramas, converter entre fluxogramas e pseudocódigo e conferir algoritmos por meio de rastreamento e testes com dados bem escolhidos.
    • Ler e desenhar fluxogramas
      Usar os símbolos padrão de fluxograma e as linhas de fluxo para mostrar os passos de um algoritmo e ler o caminho que ele percorre.
    • Representar decisões e laços em fluxogramas e pseudocódigo
      Desenhar seleção e iteração em fluxogramas e traduzir um algoritmo nos dois sentidos entre fluxograma e pseudocódigo.
    • Rastrear, testar e depurar um algoritmo
      Conferir um algoritmo manualmente com uma tabela de rastreamento, escolher dados de teste normais, de valores-limite e inválidos, e encontrar e corrigir os três tipos de erro.
  5. Usar um ambiente de programação em blocos, como o Scratch, para criar programas com sequência, laços, decisões, variáveis, eventos e blocos personalizados, e relacioná-los ao pseudocódigo e ao código textual.
    • Orientar-se em um ambiente de programação em blocos
      Explicar como funciona a programação em blocos, identificar as partes de um projeto Scratch e usar formas e categorias de blocos para criar um script.
    • Criar programas com laços, decisões e variáveis em blocos
      Usar blocos de repetição, repetição contínua, se-senão e repetição até uma condição, variáveis e o bloco de pergunta para criar programas interativos e lê-los como algoritmos.
    • Usar eventos e blocos personalizados e fazer a transição para código textual
      Iniciar scripts com eventos, coordenar atores com mensagens, definir blocos personalizados com entradas e aplicar as mesmas ideias a linguagens textuais.

Guia de estudo de Pensamento computacional

5 capítulos

1

O que a ciência da computação investiga e como abordar um problema

A ciência da computação começa com perguntas sobre informação e os processos usados para lidar com ela. Descrever uma tarefa por suas entradas e saídas deixa o objetivo claro antes que qualquer código seja escrito. O pensamento computacional oferece então maneiras de organizar o trabalho, identificar estruturas reutilizáveis, selecionar os detalhes relevantes e criar uma solução que possa ser conferida. Esses métodos são úteis tanto no planejamento cotidiano quanto em programas.

1.1 Computação, informação e os problemas que elas resolvem

Um computador pode calcular uma rota, reproduzir um som ou organizar uma lista de nomes. A ciência da computação estuda os processos por trás dessas tarefas: como a informação é representada e tratada, quais problemas podem ser resolvidos e como construir sistemas que executam as soluções.

Descreva uma computação

Um modelo inicial útil é entrada → processo → saída. Um planejador de rotas recebe um ponto de partida e um destino. Ele busca informações sobre vias e retorna uma rota, uma distância em quilômetros e um tempo de viagem. As informações sobre as vias também são dados necessários ao processo. O resultado visível é apenas uma parte da computação.

Defina um problema computacional antes de escolher seu método. Por exemplo: “Entrada: uma lista de nomes. Saída: os mesmos nomes em ordem alfabética.” Isso especifica como deve ser um resultado correto. Deixa espaço para diferentes métodos de produzi-lo. Se a saída omitir um nome, ela não resolve o problema, mesmo quando os nomes restantes estão ordenados.

Além de escrever código

Programação é escrever instruções em uma linguagem que um computador possa executar. É uma atividade importante dentro da ciência da computação. A área mais ampla também investiga se uma solução existe, quanto trabalho ela exige e como as pessoas podem usá-la com segurança e facilidade.

ÁreaUma pergunta que ela estuda
Algoritmos e teoriaQuais passos resolvem um problema e o que pode ser computado?
Linguagens de programaçãoComo as instruções podem ser expressas com clareza?
Sistemas computacionaisComo hardware, sistemas operacionais e redes dão suporte à computação?
Dados e bancos de dadosComo a informação pode ser armazenada, organizada e recuperada?
Inteligência artificial e aprendizado de máquinaComo sistemas podem realizar tarefas como reconhecer padrões?
Interação humano-computadorComo as pessoas podem entender e usar um sistema?
SegurançaComo dados e sistemas podem ser protegidos?
Computação gráficaComo imagens podem ser criadas e exibidas?
Engenharia de softwareComo equipes podem criar e manter programas confiáveis?

As fronteiras se sobrepõem. Projetar um editor de imagens pode envolver computação gráfica, interação com o usuário e engenharia de software ao mesmo tempo. A computação também dá suporte a outras disciplinas: biólogos comparam sequências de DNA, cientistas do clima modelam a atmosfera e artistas usam software para criar imagens e música.

Áreas relacionadas e limites práticos

A engenharia de computação concentra-se em dispositivos físicos, como processadores e placas de circuito. A tecnologia da informação, ou TI, concentra-se em escolher, configurar e operar sistemas para uma organização. A ciência de dados combina estatística e computação para tirar conclusões a partir de dados. Essas áreas compartilham métodos com a ciência da computação, mas dão ênfase a trabalhos diferentes.

Computadores executam instruções precisas rapidamente, muitas vezes bilhões de operações simples por segundo. A velocidade não corrige uma instrução pouco clara. “Adicione um pouco de sal” deixa uma quantidade indefinida; um processo destinado à execução automática precisa de uma ação precisa.

Também há limites além da velocidade. Alguns problemas definidos com precisão não têm solução algorítmica. Outros problemas têm soluções que exigem passos demais para serem viáveis. Perguntar o que um computador pode realizar faz parte da própria ciência da computação.

Principais conclusões

  • A ciência da computação estuda a computação, a informação e os sistemas que a processam.
  • A definição de um problema estabelece entradas válidas e saídas necessárias antes da escolha de um método.
  • A programação expressa instruções; a ciência da computação também estuda correção, facilidade de uso, segurança e limites da computação.
  • Entrada, processo e saída descrevem os papéis dos dados e dos passos em uma computação.

1.2 Transforme um problema em um plano que você pode conferir

O pensamento computacional torna um problema claro o suficiente para ser resolvido passo a passo. Uma pessoa pode executar a solução, um computador pode executá-la ou os dois podem dividir o trabalho. O raciocínio inclui decidir o que o problema significa e como um resultado deve ser conferido.

Quatro técnicas que funcionam em conjunto

A decomposição divide um problema em partes menores. O reconhecimento de padrões encontra semelhanças ou trabalho repetido. A abstração mantém os detalhes necessários para um objetivo e deixa outros de fora. A elaboração de algoritmos transforma uma solução em passos precisos e ordenados.

Essas técnicas são ferramentas às quais você pode recorrer conforme necessário. Elas não são quatro etapas que precisam ser concluídas em uma ordem fixa. Um teste malsucedido pode revelar um subproblema ausente. Um subproblema repetido pode sugerir um procedimento reutilizável. Um modelo pode precisar de mais um detalhe antes que o algoritmo funcione.

Jeannette Wing ajudou a divulgar amplamente o termo “pensamento computacional” em um ensaio de 2006. Sua mensagem central era que essa abordagem é útil para todos, além das pessoas que trabalham como programadoras.

Entenda, planeje, execute e confira

O matemático George Pólya descreveu quatro etapas de resolução de problemas em 1945. Na computação, elas levam a ações concretas:

  1. Entenda o problema. Identifique entradas, saídas, restrições e critérios de sucesso.
  2. Faça um plano. Escolha tarefas menores, padrões úteis e um algoritmo.
  3. Execute o plano. Expresse-o e execute-o com pseudocódigo, um fluxograma ou um programa.
  4. Reveja. Compare o resultado com os critérios de sucesso e revise a solução quando necessário.

Uma restrição é uma regra que a solução deve respeitar, como um tempo máximo disponível. Um critério de sucesso é uma forma de julgar o resultado. “Produzir uma lista de compras combinada com as quantidades necessárias” pode ser conferido. “Melhorar as compras” deixa o resultado pouco claro.

Resolva um plano de refeições

Suponha que você precise de jantares para uma semana. As entradas incluem as receitas, a quantidade de pessoas e os alimentos já disponíveis. A saída é um plano e uma lista de compras. Necessidades alimentares e tempo disponível para cozinhar são restrições.

Decomponha o trabalho em escolher as refeições, fazer a lista e cozinhar. O reconhecimento de padrões mostra que várias receitas usam arroz e cebola. A abstração representa um ingrediente por seu nome e sua quantidade, como “arroz, 1 kg”, sem manter a marca quando ela não afeta o plano.

O algoritmo de compras pode agora ser ordenado: escolher as refeições, listar seus ingredientes, combinar os ingredientes repetidos, subtrair o que já está na despensa e comprar o que resta. Combinar as quantidades antes de conferir a despensa evita que o mesmo estoque seja subtraído separadamente para cada receita.

Confira o resultado em relação às refeições. Todo ingrediente necessário deve estar disponível em quantidade suficiente. Se um ingrediente estiver faltando, rastreie como a lista foi criada e revise o passo correspondente.

Uma falha comum é começar a programar antes de decidir qual resultado é necessário. Um programa rápido pode resolver fielmente o problema errado. As pessoas continuam escolhendo o modelo, as restrições e os passos; o computador executa as instruções que expressam essas escolhas.

Principais conclusões

  • O pensamento computacional torna as soluções precisas o suficiente para serem executadas por pessoas ou computadores.
  • Decomposição, reconhecimento de padrões, abstração e elaboração de algoritmos podem ser usados em qualquer ordem útil.
  • Escreva entradas, saídas, restrições e critérios de sucesso antes de implementar uma solução.
  • Use testes para orientar revisões do plano, do modelo ou dos passos.
  • A abordagem se aplica tanto ao planejamento cotidiano quanto ao software.
2

Divida problemas em partes úteis e reutilizáveis

Uma tarefa complicada fica mais fácil de resolver quando suas partes, estruturas repetidas e detalhes essenciais estão visíveis. A decomposição dá uma função a cada parte, o reconhecimento de padrões revela métodos que você pode reutilizar e a abstração permite trabalhar com um modelo mais simples. Os exemplos mostram como escolher esses limites e conferir se o plano simplificado ainda contém tudo o que é necessário para concluir a tarefa original.

2.1 Divida o trabalho em partes que se encaixam

Um problema grande pode ser difícil de manter em mente por inteiro. A decomposição o substitui por subproblemas menores que você pode compreender, resolver e conferir separadamente. As partes ainda precisam se combinar em uma solução para o problema original.

Trabalhe do todo aos detalhes

Comece pela tarefa principal. Divida-a em algumas responsabilidades significativas e depois detalhe cada responsabilidade. Isso é decomposição descendente. Um diagrama de decomposição em forma de árvore coloca o problema completo no topo e as tarefas menores abaixo dele. Os ramos mostram a qual tarefa uma tarefa menor pertence.

Para um aplicativo de perguntas e respostas, as partes principais são armazenar perguntas e respostas, fazer perguntas, verificar respostas e manter e mostrar a pontuação. A parte “fazer uma pergunta” pode ser dividida em mostrar o texto da pergunta, mostrar as opções de resposta e ler a escolha do aluno.

Um diagrama de estrutura textual poderia ser assim:

Run a quiz
    Store questions and answers
    Ask a question
        Show question text
        Show answer options
        Read the choice
    Check the answer
    Keep and show the score

Esses ramos descrevem responsabilidades. Sua posição vertical, por si só, não fornece a ordem completa de execução. Por exemplo, o aplicativo repete as perguntas e verificações enquanto restarem perguntas. Um algoritmo separado descreve esse fluxo.

Decida quando parar de dividir

Uma parte é pequena o suficiente quando você consegue ver como resolvê-la diretamente ou quando um método ou uma ferramenta existente dá conta dela. “Ler a escolha” pode ser uma tarefa utilizável quando você sabe como a interface coleta a entrada. Dividi-la em movimentos individuais das mãos acrescentaria detalhes que não ajudam a projetar o aplicativo.

Faça primeiro a divisão principal. Se você começar descrevendo ações minúsculas, é fácil gastar tempo em uma tela enquanto esquece uma responsabilidade inteira, como decidir quando o jogo termina.

Identifique dependências

Uma dependência significa que uma tarefa precisa do resultado de outra. O aplicativo precisa obter uma escolha antes de verificá-la e verificá-la antes de atualizar a pontuação. Anote o que cada parte recebe e produz. Isso esclarece as passagens de informação.

As partes devem ser tão independentes quanto possível. Se a tela mudar de quatro botões de resposta para outro método de entrada, o cálculo da pontuação ainda deve funcionar com o resultado verificado. Limites claros permitem que as pessoas construam partes separadas ao mesmo tempo e facilitam alterações posteriores.

Independência não significa que as partes nunca troquem informações. Elas precisam de entradas e saídas acordadas. Uma parte que calcula a pontuação e espera TRUE ou FALSE não pode usar diretamente o texto bruto de uma parte que exibe perguntas sem um passo que verifique a resposta.

Procure lacunas e sobreposições

Leia o problema original novamente e pergunte se concluir todas as partes terminaria o trabalho completo. O primeiro diagrama não mostra quando o jogo para. Acrescente essa responsabilidade ao controle geral do jogo. Pergunte também se duas partes alteram a pontuação, o que poderia contar uma resposta correta duas vezes.

Confira cada parte pequena separadamente e depois confira o processo combinado. Uma exibição de pergunta correta e um verificador de resposta correto ainda podem falhar juntos se um enviar um formato de escolha diferente do que o outro espera.

Principais conclusões

  • A decomposição separa um problema completo em responsabilidades menores.
  • Detalhe as partes principais antes de descrever suas ações minúsculas.
  • Pare quando uma parte puder ser resolvida diretamente ou tratada por uma solução existente.
  • As dependências determinam quais resultados devem estar disponíveis antes que outra tarefa comece.
  • Confira se as partes combinadas não deixam lacunas nem executam uma tarefa duas vezes.
  • Entradas e saídas claras facilitam a construção e a combinação de partes separadas.

2.2 Encontre o padrão e torne-o reutilizável

O trabalho repetido muitas vezes esconde um método reutilizável. Reconhecimento de padrões significa buscar semelhanças, repetições ou tendências dentro de um problema e entre problemas diferentes. A pergunta útil é o que permanece igual e o que muda.

Encontre repetições dentro de uma tarefa

Para desenhar um quadrado, uma caneta em movimento pode avançar 100 passos e girar à direita 90 graus, quatro vezes. O par de ações se repete. Um laço expressa esse par uma vez e fornece a quantidade de repetições:

REPEAT 4 TIMES
    Move forward 100 steps
    Turn right 90 degrees

Esse padrão facilita a visualização da estrutura. Também facilita uma mudança: alterar a distância de avanço em um lugar muda todos os lados.

Substitua detalhes variáveis por parâmetros

A generalização faz uma solução funcionar para uma família de casos. Um parâmetro é uma entrada nomeada que representa um detalhe que pode mudar. Para polígonos regulares, a quantidade e o comprimento dos lados podem ser parâmetros.

Uma caneta que percorre um polígono regular gira uma volta completa. O giro em cada vértice é:

aˆngulo de giro=360∘/n

Aqui, n é a quantidade de lados. Repita o par de ações avançar e girar n vezes, mantendo o mesmo comprimento de lado e o mesmo giro a cada vez.

Polígono regularLadosGiro em cada vértice
Triângulo3120°
Quadrado490°
Pentágono572°
Hexágono660°

O giro é a mudança na direção da caneta, não o ângulo interno do polígono. Para um triângulo, usar um giro de 60 graus não produziria o percurso pretendido de três lados.

Reconheça o mesmo método em problemas diferentes

Encontrar o voo mais barato, a rota mais curta e a nota mais alta em uma prova envolve guardar o melhor candidato visto até então. Comece com um candidato. Examine cada candidato seguinte e substitua o guardado quando o novo for melhor. O sentido da comparação muda entre o menor e o maior, mas o padrão geral continua útil.

Padrões também podem organizar dados. Agrupar despesas em alimentação, transporte e moradia torna características comuns visíveis. Se as vendas de guarda-chuvas aumentam repetidamente quando há previsão de chuva, uma loja pode usar a tendência para ajudar a planejar o estoque. Uma tendência é uma evidência a ser examinada; a razão pela qual ela ocorre importa ao decidir se continuará.

Confira o padrão proposto

Os números 1, 2, 4 não determinam um único próximo número. Dobrar fornece 8. Aumentar as diferenças em uma unidade fornece 7, pois as diferenças até então são 1 e 2. São necessários mais casos ou uma regra que explique a sequência para decidir qual padrão se ajusta ao problema.

Procure diferenças relevantes antes de reutilizar uma solução. Dividir uma conta igualmente e dividi-la conforme o que cada pessoa pediu envolvem um total compartilhado. A divisão igual resolve a primeira tarefa, mas a segunda precisa do pedido de cada pessoa. Reutilize a estrutura comum somente depois de identificar o detalhe que muda o resultado necessário.

Principais conclusões

  • O reconhecimento de padrões encontra estruturas reutilizáveis dentro de problemas e entre eles.
  • A generalização substitui detalhes variáveis por parâmetros nomeados.
  • Um polígono regular de n lados usa n avanços iguais e giros de 360° / n.
  • Confira mais casos e diferenças relevantes antes de confiar em um padrão.

2.3 Mantenha os detalhes necessários para o objetivo

Um modelo pode ser mais simples que o objeto real e ainda ser útil. A abstração mantém as informações necessárias para um objetivo específico e deixa outros detalhes de fora. Sua qualidade depende de conseguir responder às perguntas feitas pela tarefa.

Escolha um modelo para a tarefa

Um mapa de metrô mantém as estações, sua ordem ao longo de cada linha e os lugares onde as linhas se conectam. Esses detalhes ajudam um passageiro a planejar uma viagem. Ele pode distorcer distâncias e omitir o traçado das ruas porque seu objetivo principal é mostrar conexões.

Esse mesmo mapa é uma ferramenta ruim para decidir a distância a caminhar entre duas estações. O modelo deixou de fora um detalhe necessário para o novo objetivo. Um detalhe é relevante por causa do problema, não por ser interessante em geral.

Considere dois modelos do mesmo carro:

ObjetivoDetalhes necessários ao modelo
Jogo de corridaVelocidade, posição e direção
Sistema de estacionamentoNúmero da placa, horário de chegada e vaga

O jogo de corrida precisa atualizar o movimento. O estacionamento precisa identificar o carro e acompanhar sua permanência. Nenhum dos modelos precisa preservar todas as características físicas do carro.

Oculte passos por trás de um nome claro

A abstração também permite usar o que um componente faz sem pensar em como ele funciona a cada vez. Selecionar um programa de máquina de lavar não exige que você controle seu motor diretamente.

Em um algoritmo, um procedimento é um grupo nomeado de passos. Chamar o nome executa esses passos. Um nome como average(list) comunica uma tarefa enquanto oculta os cálculos repetidos. Um procedimento que envia um resultado de volta a quem o chamou retorna um valor. Quem o chamou pode armazenar esse valor ou usá-lo em outro cálculo.

Um parâmetro dá a um procedimento uma entrada que pode mudar. drawPolygon(sides, length) tem dois parâmetros. A chamada drawPolygon(6, 100) fornece seis lados e um comprimento de 100 passos. Isso combina abstração, que oculta os passos do desenho, com generalização, que permite diferentes formas e tamanhos.

Os limites de um procedimento precisam ser claros: quais entradas ele aceita e qual resultado ou ação produz? Para uma média, uma lista vazia precisa de tratamento especial porque não há quantidade pela qual dividir. Ocultar passos não elimina a necessidade de definir entradas utilizáveis.

Construa camadas de compreensão

Um aplicativo de conversa oferece uma forma de enviar uma mensagem. Abaixo dele, o sistema operacional oferece serviços que o aplicativo pode usar. Abaixo disso, o hardware executa operações. Cada camada depende do comportamento da camada seguinte sem expor todos os detalhes internos ao seu usuário. Uma mudança interna pode ficar restrita à própria camada quando o comportamento prometido permanece igual.

As técnicas se apoiam mutuamente. A decomposição identifica partes. O reconhecimento de padrões encontra partes com uma estrutura comum. A abstração dá nomes e limites claros a essas partes para que possam ser combinadas.

Um erro comum de abstração é excluir um fato que altera a possibilidade de um resultado funcionar. Um planejador de rotas que ignora ruas de mão única pode propor um percurso impossível de fazer. Para conferir um modelo, liste as decisões que ele deve apoiar e confirme se os dados mantidos são suficientes para cada uma.

Principais conclusões

  • A abstração mantém informações relevantes para um objetivo e oculta detalhes desnecessários.
  • O mesmo objeto pode precisar de modelos diferentes para tarefas diferentes.
  • Um procedimento nomeia passos reutilizáveis; parâmetros fornecem entradas, e um valor retornado volta para quem chamou o procedimento.
  • Um procedimento com parâmetros pode fornecer tanto abstração quanto generalização.
  • Camadas permitem que um componente dependa do comportamento de outro sem expor todos os seus passos internos.
3

Expresse algoritmos com variáveis, decisões e laços

Um algoritmo transforma um plano em instruções cujo comportamento pode ser acompanhado exatamente. Variáveis guardam o estado que muda, condições escolhem caminhos e laços repetem o trabalho até que uma contagem ou condição o encerre. Percorrer essas estruturas linha por linha mostra por que a ordem das instruções importa. Você também comparará métodos pela correção e pela quantidade de passos e usará pseudocódigo para expressar cálculos, escolhas e processamento repetido.

3.1 Escreva um método que termine e forneça o resultado correto

Um algoritmo é um conjunto finito e ordenado de instruções precisas para resolver um problema ou executar uma tarefa. Para uma entrada válida, ele produz a saída necessária após uma quantidade finita de passos. Uma receita, instruções de montagem e a divisão longa usam essa ideia.

Confira as propriedades do método

Um algoritmo útil tem entradas e saídas definidas. Cada passo deve ser preciso o suficiente para ter um significado e executável o suficiente para ser realizado. Os passos devem terminar, e seu resultado deve estar correto para toda entrada válida.

“Encontre o maior número” indica um objetivo, mas não especifica um método. “Examine cada número e guarde o maior visto até então” fornece um método que pode ser desenvolvido em instruções. Também levanta uma pergunta sobre a entrada: o que deve acontecer se a lista estiver vazia? Definir entradas válidas evita deixar o método incompleto.

Instruções cotidianas podem deixar lacunas que as pessoas preenchem com a experiência. “Coloque a geleia no pão” deixa de fora a abertura do pote e o ato de espalhar uma quantidade em uma superfície. Ao elaborar um método para execução automática, declare as ações necessárias ao sistema que o executa e coloque-as em uma ordem utilizável.

Separe o método de sua expressão

Um algoritmo é o método de solução. Um programa expressa um método em uma linguagem de programação para que um computador possa executá-lo. O mesmo algoritmo pode aparecer em pseudocódigo, em um fluxograma e em programas escritos em linguagens diferentes.

Três estruturas de controle organizam a execução:

EstruturaO que acontece
SequênciaOs passos são executados um após o outro.
SeleçãoUma condição escolhe um caminho.
IteraçãoUm bloco de passos se repete.

Junto com variáveis, essas estruturas são suficientes para expressar qualquer algoritmo. Essa é a ideia por trás de um resultado clássico publicado por Böhm e Jacopini em 1966. Um algoritmo pode combiná-las: percorrer uma lista repetidamente, testar cada valor e atualizar um resultado armazenado em sequência.

Compare métodos corretos

Suponha que uma lista telefônica em ordem alfabética tenha 1.000 páginas. Conferir uma página por vez pode exigir 1.000 verificações. Virar duas páginas por vez e conferir apenas uma página sim e outra não exige até cerca de 500 verificações, mais um passo para trás se o nome tiver sido ultrapassado.

Um método diferente abre a seção restante no meio e mantém a metade que pode conter o nome. No máximo 10 divisões ao meio reduzem 1.000 páginas possíveis a uma:

1000 → 500 → 250 → 125 → 63 → 32
     → 16 → 8 → 4 → 2 → 1

A ordem alfabética torna seguro descartar uma metade. Sem essa ordem, a metade descartada poderia conter o nome. Essa suposição sobre a entrada faz parte do método.

Para 2.000 páginas, conferir todas as páginas pode exigir o dobro de verificações, enquanto o método de divisão ao meio exige apenas mais uma divisão: 11. Comparar como a quantidade de passos cresce explica mais do que medir o tempo de uma execução em uma máquina.

Confira a correção antes de elogiar a velocidade. Um método que examina apenas o primeiro e o último número de uma lista encontra 12 em [7, 3, 12] por acaso. Ele não encontra 12 em [7, 12, 3]. Um exemplo bem-sucedido não pode estabelecer que o método trata toda a faixa de entradas.

Principais conclusões

  • Um algoritmo deve ser preciso, executável, finito e correto, com entradas e saídas definidas.
  • Um algoritmo é um método; um programa expressa instruções em uma linguagem executável.
  • Sequência, seleção e iteração organizam os passos de um algoritmo.
  • As suposições de um algoritmo sobre a entrada devem ser satisfeitas para que seu raciocínio seja válido.
  • Compare métodos corretos pelo crescimento de seu trabalho à medida que a entrada cresce.

3.2 Armazene valores e atualize-os em ordem

O pseudocódigo descreve um algoritmo com instruções estruturadas e legíveis. Ele não está preso a uma linguagem de programação. Permite trabalhar na lógica antes de lidar com a pontuação e outras regras de escrita de uma linguagem.

Leia a notação

As palavras-chave são escritas em maiúsculas: INPUT, OUTPUT, IF, WHILE e FOR. Cada instrução tem sua própria linha. A indentação mostra quais instruções pertencem a um bloco. Um comentário começa com // e explica o código sem acrescentar uma ação.

A seta ← significa atribuição. Alguns outros estilos de pseudocódigo usam = ou SET … TO para atribuição. Aqui, = compara valores. Leia count ← 0 como “count recebe zero”. Uma variável é um local nomeado que armazena um valor que pode mudar. Uma constante tem um nome, mas mantém o mesmo valor, como PASS_MARK ← 50.

O lado direito de uma atribuição é avaliado primeiro. Seu resultado substitui o valor antigo à esquerda. Se count contém 4, count ← count + 1 lê o 4 antigo, soma 1 e armazena 5. É uma instrução para alterar dados armazenados, não uma equação que afirma que um número é igual a si mesmo mais um.

Relacione dados a operações
TipoSignificado e exemplo
InteiroNúmero inteiro, como 17
Real ou ponto flutuanteNúmero que pode ter uma parte fracionária, como 21,5
Cadeia de caracteresTexto, como “Lima”
Valor booleanoTRUE ou FALSE
Lista ou vetorValores ordenados, como [18, 21, 19, 22, 20]

Somar os números 12 e 3 resulta em 15. Juntar as cadeias “12” e “3” resulta em “123”. Escolha nomes descritivos, como temperature e total, para que a função de um valor continue visível.

Os operadores aritméticos incluem +, −, * e /. DIV fornece o quociente inteiro, enquanto MOD fornece o resto. Assim, 17 DIV 5 é 3 e 17 MOD 5 é 2. O teste n MOD 2 = 0 identifica um número inteiro par. Comparações como =, ≠, <, >, ≤ e ≥ produzem valores booleanos.

Leia, calcule e exiba
INPUT minutes
hours ← minutes DIV 60
rest ← minutes MOD 60
OUTPUT hours, "h", rest, "min"

Para 135 minutos, dois grupos completos de 60 usam 120 minutos, restando 15. A saída é “2 h 15 min”. INPUT recebe dados, as duas atribuições os processam e OUTPUT envia o resultado.

Preserve um valor antes de substituí-lo

Suponha que a contenha 5 e b contenha 8. As instruções a ← b e depois b ← a deixam ambas as variáveis com 8. A primeira instrução sobrescreveu a única cópia armazenada de 5.

Use uma variável temporária:

temp ← a
a ← b
b ← temp

Após a primeira linha, temp contém 5. A segunda linha coloca 8 em a. A terceira coloca o 5 guardado em b. A atribuição copia um valor atual; ela não cria uma ligação permanente entre variáveis.

Dê a cada variável um valor inicial antes de lê-la. Um total acumulado precisa de total ← 0 antes de sua primeira adição. Colocar a atribuição depois da adição deixa o primeiro passo sem um valor inicial definido.

Principais conclusões

  • O pseudocódigo usa uma notação consistente para expressar a lógica sem escolher uma linguagem de programação.
  • A atribuição avalia o lado direito e substitui o valor armazenado à esquerda.
  • Os tipos de dados afetam quais operações fazem sentido.
  • DIV fornece um quociente inteiro; MOD fornece um resto.
  • INPUT recebe dados e OUTPUT envia um resultado.
  • Uma variável temporária preserva o valor antigo durante uma troca.
  • Inicialize uma variável antes de usar seu valor.

3.3 Escolha o caminho correto com condições

A seleção escolhe quais instruções são executadas. Uma condição é uma expressão com o valor TRUE ou FALSE. A comparação score ≥ 50 pergunta se a pontuação atual é pelo menos 50.

Use IF e ELSE
IF score ≥ 50 THEN
    OUTPUT "Pass"
ELSE
    OUTPUT "Fail"
END IF

Exatamente um ramo é executado. Com 50, a condição é TRUE e a saída é “Pass”. Com 49, ela é FALSE e a saída é “Fail”. Um IF sem ELSE simplesmente pula seu bloco quando sua condição é FALSE.

A comparação deve corresponder à regra. “Pelo menos 50” inclui 50, portanto precisa de ≥. Usar > rejeitaria essa nota no limite. Testar valores no limite é uma maneira direta de detectar esse erro.

Ordene vários casos

Uma cadeia ELSE IF verifica condições em ordem e executa o primeiro ramo cuja condição é satisfeita:

IF temperature ≥ 30 THEN
    OUTPUT "Hot"
ELSE IF temperature ≥ 20 THEN
    OUTPUT "Warm"
ELSE IF temperature ≥ 10 THEN
    OUTPUT "Mild"
ELSE
    OUTPUT "Cold"
END IF

Para 24 °C, o primeiro teste falha e o segundo é satisfeito. A saída é “Warm”. Para 10 °C, o terceiro ramo é executado. Para −3 °C, o ELSE final é executado.

Uma temperatura de 35 °C satisfaz as três comparações escritas, mas somente o primeiro ramo cuja condição é satisfeita é executado. Se temperature ≥ 10 viesse primeiro, ele incluiria 35 e apresentaria “Mild”. Ao usar limites sobrepostos de “pelo menos”, teste primeiro o maior. Os ramos inferiores tratam então os valores que não satisfizeram os limites superiores.

Combine condições
OperadorQuando o resultado é TRUE
A AND BA e B são TRUE.
A OR BPelo menos uma entre A e B é TRUE.
NOT AA é FALSE.

Para incluir temperaturas de 10 °C até um valor inferior a 20 °C, use temperature ≥ 10 AND temperature < 20. Os dois limites devem ser respeitados. Em 15, ambos são TRUE. Em 20, o segundo é FALSE.

Usar OR para esse intervalo resulta em temperature ≥ 10 OR temperature < 20. Isso aceita qualquer número: um valor abaixo de 10 ainda satisfaz a segunda parte, enquanto qualquer valor de pelo menos 10 satisfaz a primeira. OR é útil quando qualquer um dos caminhos basta, não quando dois limites devem ser respeitados ao mesmo tempo.

Coloque uma decisão dentro de outra

Um IF aninhado coloca uma decisão dentro de um ramo de outra. Você pode primeiro verificar se uma senha é longa o suficiente e depois, dentro do ramo de sucesso, verificar se ela contém um dígito. A decisão interna só é alcançada quando a condição externa permite.

Indente o bloco interno para que os caminhos fiquem visíveis. Se várias decisões aninhadas tornarem uma regra simples difícil de ler, considere combinar condições com AND ou usar uma cadeia ELSE IF. Rastreie um valor pela ordem real antes de supor que todos os testes escritos serão alcançados.

Principais conclusões

  • Uma condição tem um resultado booleano: TRUE ou FALSE.
  • IF … ELSE escolhe um de dois caminhos; uma cadeia ELSE IF escolhe o primeiro caso cuja condição é satisfeita.
  • Limites inclusivos e exclusivos exigem o operador de comparação correspondente.
  • AND exige ambas as condições, OR exige pelo menos uma, e NOT inverte uma condição.
  • Ordene limites sobrepostos para que um ramo anterior não capture um caso posterior.
  • Uma decisão interna só é executada quando a execução alcança o ramo que a contém.

3.4 Repita o trabalho mantendo o estado correto

A iteração repete um bloco de instruções. Um laço permite expressar o trabalho repetido uma vez, mas você ainda precisa decidir quando ele começa, quando termina e quais valores mudam em cada passada.

Escolha como a repetição é controlada
LaçoComo é executado
FOR i ← 1 TO 5É executado cinco vezes, de 1 a 5 inclusive.
FOR EACH item IN listÉ executado uma vez para cada elemento da lista.
WHILE condition DOVerifica antes de cada passada; repete enquanto a condição é TRUE.
REPEAT … UNTIL conditionVerifica depois de cada passada; para quando a condição é TRUE.

Um laço FOR é adequado quando a quantidade de repetições é conhecida. Um laço controlado por condição é adequado para uma tarefa cujo ponto de parada depende de valores ou de uma nova entrada. O corpo de um WHILE pode ser executado zero vezes. O corpo de um REPEAT … UNTIL com teste no final é executado pelo menos uma vez.

Rastreie uma contagem regressiva
n ← 3
WHILE n > 0 DO
    OUTPUT n
    n ← n − 1
END WHILE
OUTPUT "Go!"

No primeiro teste, n é 3. O laço apresenta 3 e muda n para 2. As passadas seguintes apresentam 2 e 1. Após a atualização de 1 para 0, o teste é FALSE. A execução sai do laço e apresenta “Go!”.

Remover a atualização deixa n em 3, de modo que o laço nunca alcança seu estado de parada. Um laço que deve terminar precisa de uma maneira de mudar a condição: uma atualização interna ou uma nova entrada pode fornecê-la.

Acumule um total e conte elementos

Um acumulador constrói um resultado ao longo de várias passadas. Um contador registra quantas vezes algo ocorre. Para encontrar a média das temperaturas diárias 18, 21, 19, 22 e 20 °C:

total ← 0
count ← 0
FOR EACH t IN temperatures
    total ← total + t
    count ← count + 1
END FOR
OUTPUT total / count

Os totais sucessivos são 18, 39, 58, 80 e 100. A contagem termina em 5, portanto a média é 20 °C. Inicialize as duas variáveis antes do laço. Reiniciar total dentro dele apagaria as adições anteriores. Uma lista vazia precisa de uma verificação separada antes da divisão porque sua contagem é zero.

Guarde o melhor valor até então

Para uma lista não vazia, inicialize largest com o primeiro elemento. Depois, examine cada valor e substitua largest sempre que aparecer um valor maior:

largest ← first item of list
FOR EACH value IN list
    IF value > largest THEN
        largest ← value
    END IF
END FOR
OUTPUT largest

Para [7, 3, 12, 5], o melhor valor guardado continua em 7, passa a 12 e permanece em 12. Começar em zero falha para uma lista como [−4, −9, −2], cujo maior valor é −2. Zero nunca foi um candidato.

Confira a primeira e a última passada

Um erro de uma unidade acrescenta ou elimina uma repetição. FOR i ← 0 TO 5 é executado seis vezes. Na contagem regressiva, n ≥ 0 também apresentaria zero. Escreva o primeiro e o último valor da variável de controle para conferir a contagem.

Laços aninhados repetem um laço dentro de outro. Para 3 linhas e 4 colunas, o bloco interno é executado quatro vezes para cada linha, totalizando 12 execuções. O laço interno recomeça a cada passada do laço externo.

Principais conclusões

  • Laços controlados por contagem repetem uma quantidade conhecida de vezes; laços controlados por condição dependem de um teste.
  • WHILE testa antes do corpo, enquanto o REPEAT … UNTIL do pseudocódigo testa depois.
  • Inicialize acumuladores e contadores antes do laço e atualize-os dentro dele.
  • Uma busca pelo maior valor pode começar pelo primeiro elemento de uma lista não vazia.
  • Um laço que termina precisa de um caminho até seu estado de parada.
  • Confira os extremos para detectar erros de uma unidade; um intervalo inclusivo de 0 a 5 tem seis valores.
  • Um laço interno é executado por completo em cada passada de seu laço externo.
4

Desenhe os caminhos e confira os resultados

Um diagrama pode revelar os caminhos de um algoritmo, e um rastreamento pode revelar os valores ao longo de um desses caminhos. Fluxogramas e pseudocódigo descrevem a mesma lógica de formas diferentes. Converter entre eles ajuda a identificar testes e atualizações em posições erradas. Dados de teste escolhidos com cuidado verificam casos comuns, limites e entradas incomuns, enquanto a depuração usa uma falha reproduzível para localizar o primeiro passo que precisa de correção.

4.1 Leia um fluxograma seguindo uma seta por vez

Um fluxograma desenha um algoritmo como formas conectadas por setas. As formas identificam tipos de passos, e as setas mostram qual passo é executado em seguida. Um fluxograma curto torna um processo visível para alguém que talvez não leia código.

Escolha uma forma para cada função

Os principais símbolos seguem a ISO 5807. Eles têm funções distintas:

SímboloFormaFunção
Início ou fimOval ou retângulo arredondadoMarca o início ou o fim.
ProcessamentoRetânguloExecuta uma ação ou um cálculo.
Entrada e saídaParalelogramoLê ou envia dados.
DecisãoLosangoTesta uma condição ou um valor e escolhe uma saída.
Processo predefinidoRetângulo com linhas verticais duplas nas lateraisChama um procedimento descrito separadamente.
ConectorPequeno círculo identificadoUne trechos separados do fluxo.

Uma linha de fluxo tem uma seta que mostra a direção. A direção usual de leitura é de cima para baixo e da esquerda para a direita, mas a seta determina o próximo passo real. Uma linha que retorna a um ponto anterior pode mostrar repetição.

Construa uma sequência simples

Para calcular a área de uma sala retangular, use estes cinco símbolos em ordem:

  1. Início ou fim: “Início”.
  2. Entrada e saída: “Entrada: comprimento, largura”.
  3. Processamento: area ← length * width.
  4. Entrada e saída: “Saída: área”.
  5. Início ou fim: “Fim”.

Conecte cada passo ao seguinte com uma seta. Com comprimento de 4,5 m e largura de 3 m, o cálculo fornece 13,5 metros quadrados. Ler a entrada não calcula a área; isso pertence ao seu próprio retângulo de processamento. Exibir a área pertence ao paralelogramo de saída.

Esse fluxograma não tem escolha nem caminho repetido. É uma sequência pura, e sua forma deixa a ordem clara.

Siga uma decisão usando os valores atuais

Um losango faz uma pergunta ou testa um valor. Para uma pergunta de sim ou não, como score ≥ 50?, identifique as saídas como “Sim” e “Não”. Determine o resultado da condição usando a nota atual e siga exatamente uma seta correspondente.

Uma decisão pode ter mais de duas saídas possíveis quando testa vários valores distintos. Identifique cada saída com o valor ou caso que ela representa. O objetivo das identificações é tornar o próximo passo inequívoco.

Uma ação como count ← count + 1 pertence a um retângulo de processamento. Uma pergunta como count < 5? pertence a um losango de decisão. Misturar essas funções oculta se um valor está sendo alterado ou testado.

Confira as conexões

Um fluxograma claro tem um início e pelo menos um fim. Cada símbolo de processamento e de entrada e saída tem uma linha de fluxo de saída. Cada decisão de sim ou não tem duas saídas identificadas. Siga cada caminho para conferir se ele alcança o próximo passo pretendido ou o fim.

Evite deixar um ramo sem continuação após sua saída. Se ambos os ramos devem continuar no mesmo passo, desenhe-os se unindo antes desse passo. Use conectores identificados quando linhas longas ou cruzadas dificultarem a leitura da página. Um símbolo de processo predefinido permite que um procedimento grande fique em um fluxograma separado enquanto o principal mantém sua estrutura geral.

Principais conclusões

  • Um fluxograma usa formas para os tipos de passos e setas para a ordem de execução.
  • Retângulos executam ações, paralelogramos lidam com dados e losangos escolhem caminhos.
  • Identifique as saídas das decisões e siga a seta correspondente ao valor atual.
  • Use símbolos de início e fim e conecte todos os caminhos pretendidos.
  • Um símbolo de processo predefinido pode ocultar os detalhes de um procedimento separado.

4.2 Desenhe ramos e laços sem alterar sua lógica

Pseudocódigo e fluxogramas podem expressar o mesmo algoritmo. Converter entre eles significa preservar a ordem das ações, as condições e todos os caminhos pelo processo. Um diagrama organizado com um teste em outra posição descreve um algoritmo diferente.

Mostre uma escolha e reúna os caminhos

Para uma nota mínima de aprovação de 50, desenhe um losango identificado por score ≥ 50?. Sua saída Sim leva a um paralelogramo de saída identificado como “Aprovado”. Sua saída Não leva a um identificado como “Reprovado”. Reúna os caminhos antes do fim.

Em pseudocódigo, esses caminhos tornam-se os ramos IF e ELSE. O ponto em que se unem novamente corresponde à primeira instrução após END IF. O fluxograma não deve enviar a saída Aprovado para a saída Reprovado; apenas uma delas pertence a cada execução.

Coloque o teste no lugar certo

Um laço tem um caminho de volta a um passo anterior e uma decisão que controla se a repetição continua. Para um laço WHILE, coloque a decisão antes do corpo. A saída FALSE passa ao largo do corpo, portanto zero passadas são possíveis.

Para um REPEAT … UNTIL com teste no final, coloque a decisão depois do corpo. Sua saída FALSE retorna ao corpo e sua saída TRUE sai do laço. O corpo é executado pelo menos uma vez porque a execução o alcança antes do primeiro teste.

LaçoPosição da decisãoSaída da repetição
WHILE conditionAntes do corpoA condição é FALSE.
REPEAT … UNTIL conditionDepois do corpoA condição é TRUE.
Resolva um acesso com três tentativas
attempts ← 0
REPEAT
    INPUT password
    attempts ← attempts + 1
UNTIL password = storedPassword OR attempts = 3
IF password = storedPassword THEN
    OUTPUT "Welcome"
ELSE
    OUTPUT "Account locked"
END IF

Comece o fluxograma com Início e um retângulo de processamento para attempts ← 0. Em seguida, desenhe o paralelogramo de entrada da senha e depois o retângulo de incremento. O losango do laço pergunta “Senha correta OU tentativas = 3?”. Sua saída Não retorna à entrada da senha. Sua saída Sim sai do laço.

A condição de saída dá duas possíveis razões para a parada, portanto não pode, por si só, escolher a mensagem final. Acrescente um segundo losango perguntando se a senha está correta. Sim leva a “Boas-vindas”; Não leva a “Conta bloqueada”. Em uma terceira tentativa correta, o laço para e o ramo de senha correta ainda recebe o usuário com boas-vindas.

Converta seguindo os caminhos

Do pseudocódigo para um fluxograma, transforme cada atribuição em um retângulo e cada entrada ou saída em um paralelogramo. Transforme os testes de ramos e laços em losangos. Conecte o corpo de volta à decisão que o controla, na posição correta.

De um fluxograma para pseudocódigo, examine aonde levam os caminhos de cada losango. Caminhos que executam alternativas e voltam a se unir sugerem seleção. Um caminho que retorna a um trabalho anterior sugere iteração. Indente cada corpo de acordo com seus limites.

Confira o destino de cada seta de retorno. Retornar depois da decisão de controle pularia o próximo teste. Retornar antes de uma inicialização que deve ocorrer uma só vez poderia reiniciar um contador em cada passada e impedir que o laço termine.

Principais conclusões

  • A conversão entre representações deve preservar ações, condições e caminhos de execução.
  • Os ramos de seleção voltam a se unir após suas ações alternativas.
  • Laços com teste no início podem pular o corpo; laços com teste no final o executam pelo menos uma vez.
  • A saída de um laço pode precisar de uma decisão separada para determinar por que ele parou.
  • As setas de retorno devem passar pelo teste de controle pretendido e evitar a repetição da preparação feita uma só vez.

4.3 Encontre erros com rastreamentos e testes bem escolhidos

Um algoritmo pode parecer razoável enquanto faz algo errado. O rastreamento segue suas instruções exatamente e registra o que acontece. O teste executa o algoritmo com entradas escolhidas e confere os resultados. A depuração encontra e corrige a causa de uma falha.

Torne o estado visível

Uma tabela de rastreamento registra variáveis e saídas durante um teste de mesa. Use os valores atuais, não os valores que você espera que o autor tenha pretendido. Por exemplo:

total ← 0
FOR i ← 1 TO 4
    total ← total + i
END FOR
OUTPUT total
Ponto da execuçãoitotalSaída
Após a inicializaçãonão definido0sem saída
Após a primeira adição11sem saída
Após a segunda adição23sem saída
Após a terceira adição36sem saída
Após a quarta adição410sem saída
Em OUTPUT41010

Essa tabela compacta mostra o estado após cada adição. Para um erro difícil, acrescente linhas após instruções individuais e uma coluna para os resultados das condições. Um teste de laço com resultado FALSE também pertence a um rastreamento detalhado: ele explica por que a execução sai do laço.

Escolha testes a partir das regras

Calcule o resultado esperado antes de executar cada teste. Caso contrário, é fácil aceitar a saída do programa simplesmente porque ela apareceu. Alguns testes verificam uma propriedade, como manter a saída em ordem, em vez de um resultado exato.

Para notas válidas de 0 a 100, com nota mínima de aprovação de 50:

TipoExemplo de entradaO que verifica
Normal73Uma nota típica válida de aprovação.
Valores-limite0, 49, 50, 100Os extremos e o limite da decisão.
Logo fora da faixa−1, 101Rejeição além dos extremos válidos.
Tipo inválido“abc”Rejeição de texto onde uma nota é necessária.

As categorias de valores-limite e inválidos podem se sobrepor: −1 está perto de um limite e é inválido. A categoria explica por que o teste é útil. Uma regra que usa score > 50 passa nos testes normais com 73 e 49, mas falha com exatamente 50.

Teste também estruturas incomuns de entrada. Uma lista vazia, um elemento, valores todos iguais e valores negativos expõem suposições diferentes. Um algoritmo de média deve tratar uma lista vazia antes de dividir pela contagem. Um algoritmo de maior valor inicializado com zero pode falhar em uma lista apenas de valores negativos.

Identifique o erro que está corrigindo

Um erro de sintaxe infringe as regras de escrita de uma linguagem, como a falta de um parêntese de fechamento. Um erro em tempo de execução ocorre durante a execução, como uma divisão por zero. Um erro de lógica permite a execução, mas fornece um resultado errado, como excluir o limite de aprovação usando >.

Essas categorias ajudam você a escolher uma verificação. A verificação de sintaxe detecta construções que infringem as regras da linguagem. Um rastreamento pode revelar o primeiro estado incorreto em um erro de lógica. Dados de teste podem provocar uma falha em tempo de execução que uma entrada típica nunca alcança.

Depure a partir da primeira divergência

Reproduza a falha com uma entrada específica. Rastreie ou exiba valores intermediários e encontre o primeiro passo em que o estado real difere do estado esperado. Altere a causa e execute novamente o teste que falhou e os testes anteriores. Um reparo em um ramo pode prejudicar outro.

Passar em testes selecionados fornece evidências sobre essas entradas. A correção ainda exige que o método trate toda entrada válida, portanto combine testes com raciocínio sobre as instruções e suas suposições.

Principais conclusões

  • Um rastreamento registra o que as instruções realmente fazem, usando os valores atuais das variáveis.
  • Escolha resultados esperados ou propriedades necessárias antes de executar testes.
  • Use casos normais, de valores-limite, inválidos e casos-limite estruturais.
  • Erros de sintaxe infringem regras da linguagem, erros em tempo de execução ocorrem durante a execução e erros de lógica produzem comportamento incorreto.
  • Localize o primeiro estado incorreto, corrija sua causa e execute novamente os testes anteriores.
  • Passar em um conjunto de testes fornece evidências sem estabelecer a correção para toda entrada válida.
5

Crie e coordene programas no Scratch

Os blocos dão às instruções uma forma visível para que você possa criar e executar um programa enquanto se concentra em sua lógica. O Scratch apresenta esse modelo por meio de atores, eventos, variáveis, decisões e laços. Projetos curtos conectam a entrada a uma saída visível, e blocos personalizados transformam trabalho repetido em procedimentos nomeados. Coordenar vários scripts também mostra por que a ordem dentro de um script é diferente do momento de execução entre scripts.

5.1 Crie um script com blocos do Scratch

Na programação em blocos, blocos gráficos representam instruções e valores. Você os arrasta para uma área de trabalho e os encaixa. As formas eliminam grande parte do trabalho de memorizar a sintaxe, deixando você livre para se concentrar na lógica do programa.

Conheça as partes de um projeto

O Scratch foi criado no MIT Media Lab. Outros ambientes de blocos incluem o Snap!, desenvolvido na Universidade da Califórnia em Berkeley, o Microsoft MakeCode e o Blockly. O Blockly é uma biblioteca para criar interfaces de blocos; começou no Google e passou para a Raspberry Pi Foundation em 2025.

No Scratch, o palco é a área onde o projeto é executado de forma visível. Atores são personagens ou objetos que atuam nele. Um ator pode ter scripts, fantasias e sons. Um script é uma pilha de blocos; uma fantasia é uma imagem que o ator pode exibir.

O palco mede 480 por 360 unidades do Scratch. Seu centro é o ponto de coordenadas (0, 0). As coordenadas horizontais x vão de −240 a 240, e as coordenadas verticais y, de −180 a 180. Os passos de movimento do Scratch são unidades do palco, não metros.

Deixe a forma do bloco orientar você
Forma do blocoFunçãoExemplo
ChapéuInicia um script em resposta a um evento.“quando bandeira verde for clicado”
PilhaExecuta um comando.“mova 10 passos”
Em CEnvolve blocos em um laço ou ramo.“repita 10”
Repórter arredondadoFornece um valor.Bloco de valor de uma variável
Booleano de seis ladosFornece TRUE ou FALSE.“tocando em ponteiro do mouse?”
FimEncerra um script.“pare todos”

Um repórter de valor se encaixa em um espaço de entrada de outro bloco. Um comando se encaixa em uma pilha de ações. Um bloco booleano se encaixa em um espaço de condição. A forma ajuda a distinguir o fornecimento de um valor da execução de um comando.

Encontre blocos por categoria

O Scratch 3 tem nove categorias principais identificadas por cores: Movimento, Aparência, Som, Eventos, Controle, Sensores, Operadores, Variáveis e Meus Blocos. Movimento altera a posição; Aparência lida com a aparência visível e a fala; Sensores recebe informações; Operadores calcula ou compara. A extensão Caneta é adicionada separadamente quando um projeto precisa desenhar linhas enquanto um ator se move.

Execute uma sequência curta

Selecione um ator e coloque estes blocos sob um chapéu “quando bandeira verde for clicado”:

  1. “vá para x: 0 y: 0”
  2. “diga Olá! por 2 segundos”
  3. “mova 100 passos”

Clique na bandeira verde. O ator primeiro vai ao centro, depois exibe “Olá!” por dois segundos e então se move 100 passos em sua direção atual. O bloco de fala temporizado torna a pausa visível. A pilha é executada de cima para baixo.

Uma pilha solta pode ser executada quando clicada diretamente na área de trabalho, mas não começará pela bandeira verde a menos que tenha o chapéu de evento correspondente. Confira tanto a ordem da pilha quanto seu evento inicial quando o projeto parecer não responder.

Blocos encaixados corretamente ainda precisam de um plano correto. Um movimento pode acontecer antes de uma redefinição de posição pretendida, ou uma pergunta pode ser feita depois que o resultado é exibido. As formas ajudam na construção válida; o rastreamento revela se essa construção faz o trabalho pretendido.

Principais conclusões

  • Blocos expressam instruções e valores com formas que orientam seu posicionamento.
  • O palco exibe o projeto; os atores têm seus próprios scripts, fantasias e sons.
  • Um script é executado a partir de seu evento inicial, percorrendo a pilha em ordem.
  • O centro do Scratch é (0, 0), em um palco de 480 por 360 unidades.
  • Use categorias para encontrar blocos e acrescente extensões como Caneta quando necessário.
  • Uma disposição de blocos que se encaixam ainda pode conter um erro de lógica.

5.2 Faça um programa em blocos responder e repetir

O Scratch usa as mesmas ideias do pseudocódigo: armazenar um valor, testar uma condição e repetir passos. Os blocos tornam a estrutura visível, mas sua posição ainda determina quando cada ação acontece.

Escolha um laço adequado à tarefa

“Repita 10” executa seu corpo dez vezes. “Sempre” continua executando até que o programa pare e é adequado para um jogo que verifica entradas continuamente. “Repita até que <condição>” testa antes de cada passada e para quando a condição é verdadeira. Portanto, ele pode ser executado zero vezes, ao contrário do REPEAT … UNTIL do pseudocódigo, que testa no final.

Com a extensão Caneta e a caneta abaixada, “repita 4” contendo “mova 100 passos” e “gire à direita 90 graus” desenha um quadrado. Para um hexágono regular, use seis repetições e um giro de 60 graus. As mudanças de direção somam 360 graus ao redor da forma.

Armazene um valor e escolha um ramo

Crie score em Variáveis. “Mude score para 0” atribui seu valor inicial. “Adicione 1 a score” soma ao seu valor atual. Coloque a reinicialização antes de um laço de pontuação; dentro dele, a reinicialização apagaria a pontuação anterior a cada vez.

O repórter arredondado score fornece o valor atual a outros blocos. Marcar sua caixa mostra um monitor no palco, o que ajuda durante o rastreamento.

Um bloco “se … então … senão” executa um de seus dois corpos. Seu espaço de condição de seis lados aceita um bloco booleano como “(score) > (9)” ou “tocando em ponteiro do mouse?”. Os operadores “e”, “ou” e “não” combinam condições com os mesmos significados do pseudocódigo.

Receba uma entrada, crie texto e mostre-o

O bloco “pergunte [Qual é o seu nome?] e espere” pausa para receber uma entrada e a armazena em “resposta”. O bloco “junte [Olá, ] (resposta)” cria texto. Coloque esse repórter dentro de “diga … por 2 segundos” para exibir a saudação. Se a entrada for “Amara”, a saída será “Olá, Amara”.

As três funções são separadas: pergunte recebe dados, junte processa texto e diga o exibe. Um repórter pode calcular um valor útil sem mostrar nada por conta própria.

Crie um jogo de adivinhação

Use esta ordem de blocos, com cada parte indentada dentro do bloco que a contém:

"when green flag clicked"
"set secret to (pick random 1 to 10)"
"ask [Guess a number from 1 to 10] and wait"
"repeat until <(answer) = (secret)>"
    "if <(answer) > (secret)> then"
        "say [Too high] for 2 seconds"
    "else"
        "say [Too low] for 2 seconds"
    "ask [Guess a number from 1 to 10] and wait"
"say [Correct!] for 2 seconds"

Um acerto na primeira tentativa pula o laço. Para o segredo 6 e as tentativas 3, 8 e 6, o retorno é “Too low”, “Too high” e depois “Correct!”. A nova pergunta dentro do laço fornece um valor que pode tornar sua condição verdadeira.

O retorno temporizado importa. A pergunta de um ator visível usa seu balão de fala, portanto a próxima pergunta substitui imediatamente um balão de fala sem tempo definido. Um bloco de fala de dois segundos permite que o aluno leia o retorno primeiro.

Leia o laço como WHILE answer ≠ secret para conferi-lo em pseudocódigo. Omitir a pergunta repetida prende o jogo à resposta incorreta antiga; mover a mensagem final de sucesso para dentro do laço a coloca no caminho errado.

Principais conclusões

  • O bloco “repita até que” do Scratch verifica antes de cada passada e pode pular seu corpo.
  • Inicialize uma pontuação antes de um laço e atualize-a dentro dele.
  • Um repórter booleano fornece a condição para uma decisão.
  • Pergunte lê a entrada, junte cria texto e diga exibe texto.
  • Um laço de adivinhação precisa de novas tentativas para alcançar sua condição de parada.
  • Blocos diga temporizados mantêm o retorno visível antes que uma nova pergunta substitua o balão.

5.3 Coordene scripts e reutilize um bloco personalizado

Um projeto Scratch muitas vezes tem vários scripts esperando por eventos diferentes. A programação orientada a eventos inicia um script quando um evento ocorre. Um bloco personalizado permite então que um script chame um trecho nomeado de trabalho reutilizável.

Inicie o script correto

Os blocos chapéu incluem “quando bandeira verde for clicado”, “quando este ator for clicado”, “quando tecla espaço for pressionada” e “quando eu receber [mensagem]”. Cada um descreve o que inicia a pilha ligada a ele.

Vários scripts podem responder ao mesmo evento. Dois atores podem começar quando a bandeira verde é clicada e depois ser executados ao mesmo tempo. A posição de suas pilhas na área de trabalho não estabelece uma ordem de execução entre elas.

Dentro de um script, as ações permanecem ordenadas de cima para baixo. Entre scripts, o momento de execução pode importar. Se dois scripts moverem o mesmo ator em direções opostas, o resultado combinado dependerá de quando suas ações forem executadas. Dê responsabilidades claras aos scripts e coordene o trabalho quando uma tarefa precisar do resultado de outra.

Envie uma mensagem entre scripts

“Transmita [fim de jogo]” envia uma mensagem a todos os atores e ao palco. Os scripts correspondentes “quando eu receber [fim de jogo]” começam em resposta. O nome da mensagem deve corresponder; ele identifica o evento tratado pelos receptores.

“Transmita e espere” também pausa o emissor até que os scripts receptores terminem. Use-o quando a próxima ação depender da conclusão deles. Por exemplo, um controlador pode transmitir uma mensagem de preparação e esperar enquanto os atores se movem para as posições iniciais e então começar o jogo.

Esperar não ordena os receptores entre si. Se dois receptores de preparação sobrescreverem o mesmo valor, eles ainda precisarão de um plano que evite responsabilidades conflitantes. Um receptor executado para sempre também impede que o emissor em espera continue.

Dê um nome e uma entrada ao trabalho repetido

Em Meus Blocos, crie um bloco personalizado com uma entrada chamada size. Sua definição pode ser descrita assim:

"define square (size)"
    "repeat 4"
        "move (size) steps"
        "turn right 90 degrees"

Com a caneta abaixada, chamar “quadrado (100)” desenha lados de 100 passos. Chamar “quadrado (60)” usa as mesmas instruções com lados menores. O bloco personalizado fornece abstração ao ocultar os passos por trás de um nome e generalização ao permitir que quem o chama forneça o tamanho.

A chamada executa a definição; ela não copia uma segunda versão mantida manualmente para o script. Alterar a definição muda o trabalho executado por chamadas posteriores. Isso facilita a manutenção de um método repetido.

Leve as ideias para o texto
Ideia no ScratchIdeia em pseudocódigo ou código textual
“repita 4”Laço controlado por contagem
“se … então … senão”Seleção
“mude pontuação para 0”Atribuição
Bloco personalizadoProcedimento
Chapéu de evento e script ligado a eleTratador de eventos

Em uma linguagem textual, você digita as instruções e obedece às regras de pontuação e espaçamento da linguagem. O raciocínio subjacente sobre estado, condições e repetição continua a se aplicar.

Os blocos eliminam muitos erros de sintaxe, mas uma condição errada ainda pode escolher o caminho errado. Rastreamentos e testes continuam úteis. Projetos grandes em blocos também podem se tornar difíceis de navegar e comparar porque seus scripts ocupam muito espaço na tela; o texto é mais fácil de pesquisar e gerenciar em projetos grandes de software.

Principais conclusões

  • Um evento inicia os scripts cujos chapéus respondem a ele.
  • Scripts podem ser executados concorrentemente, portanto a posição na área de trabalho não determina sua ordem.
  • Transmitir inicia os receptores correspondentes; transmitir e esperar também aguarda sua conclusão.
  • Blocos personalizados ocultam passos reutilizáveis e podem receber parâmetros.
  • A mesma lógica de atribuição, seleção, iteração e procedimentos é aplicada ao código textual.

Exercícios resolvidos de Pensamento computacional

5 Lições Interativas

1

De uma tarefa a uma solução verificável

10 passos
Identificar uma computação, definir seu resultado e usar as quatro técnicas de pensamento para planejar uma solução.
  1. 1
    IntroduçãoComece pelo resultado

    Um problema claro é mais fácil de resolver do que um pedido vago. Suponha que um grupo de leitura queira exibir os nomes de seus membros em ordem alfabética. Antes de escolher um software, identifique quais informações estão disponíveis e o que o resultado final deve conter.

    Você acompanhará esse pedido desde a definição do problema até um plano, usando entrada, processo, saída e as quatro técnicas do pensamento computacional.

  2. 2
    ExplicaçãoIdentifique a entrada e a saída

    A entrada é a lista de nomes dos membros. A saída necessária é a mesma lista em ordem alfabética. O processo é o método que reorganiza os nomes.

    Essas funções são diferentes. Uma lista com um membro ausente não cumpre a tarefa, mesmo que os nomes restantes estejam ordenados. Especificar a saída dá a você uma maneira de reconhecer essa falha antes de decidir como o método funciona.

  3. 3
    ConexãoSitue a tarefa na ciência da computação

    A ciência da computação estuda a informação e os processos que lidam com ela. Essa tarefa levanta questões sobre como representar nomes, elaborar um método e conferir se o resultado está correto.

    A programação expressaria instruções em uma linguagem executável. As questões mais amplas vêm primeiro: qual saída é necessária, de quais suposições o método precisa e quanto trabalho uma lista maior criará?

  4. 4
    DesafioConfira uma saída proposta

    Os nomes de entrada são “Noor”, “Ava” e “Luis”. Um sistema exibe “Ava”, “Noor”. Qual requisito ele deixou de cumprir, mesmo antes de você discutir sua velocidade?

    ---reveal---

    Ele deixou de preservar todos os nomes de entrada: Luis está faltando. A ordem alfabética, por si só, não é o requisito completo da saída. O resultado deve conter os nomes originais e colocá-los na ordem exigida.

  5. 5
    ExplicaçãoEscolha ferramentas para pensar

    Quatro técnicas ajudam a transformar o pedido em uma solução. A decomposição separa a coleta dos nomes, sua organização e a exibição do resultado. O reconhecimento de padrões encontra trabalho repetido entre os nomes. A abstração mantém as informações necessárias à tarefa. A elaboração de algoritmos especifica as instruções.

    Você pode retomar qualquer técnica quando uma verificação revelar um problema. Seus nomes descrevem tipos de raciocínio, não uma sequência fixa de execução em quatro passos.

  6. 6
    ExemploTorne os requisitos utilizáveis

    Escreva as entradas, saídas, restrições e critérios de sucesso. Para o grupo de leitura, a entrada é sua lista de membros e a saída é uma exibição ordenada. Manter todos os nomes é um requisito; conferir a quantidade e quais membros estão presentes ajuda a julgar o resultado.

    Depois, faça um plano, expresse-o e teste-o. Essas ações seguem as etapas de Pólya: entender, planejar, executar e rever. Um teste pode revelar algo que o primeiro plano deixou passar.

  7. 7
    AnalogiaUse o mesmo raciocínio para refeições

    Planejar refeições usa a mesma abordagem. Separe a escolha de receitas da criação da lista de compras. Observe os ingredientes compartilhados, mantenha as quantidades relevantes e ordene as ações: combine as necessidades, confira os alimentos existentes e faça as compras.

    A representação “arroz, 1 kg” mantém uma quantidade útil sem preservar uma marca irrelevante. O objetivo determina quais detalhes importam; cozinhar para mais pessoas altera as quantidades necessárias ao plano.

  8. 8
    DesafioEscolha a primeira ação útil

    Uma pessoa responsável pela organização diz: “Melhore a programação do evento.” Uma pessoa desenvolvedora começa a projetar uma exibição colorida. O que a equipe deve esclarecer antes dessa escolha de implementação?

    ---reveal---

    Esclareça as informações disponíveis, o resultado necessário e as restrições. Por exemplo, pergunte o que significa “melhorar” e como o sucesso será verificado. Uma exibição bem acabada pode executar um plano que nunca abordou o problema de programação do evento.

  9. 9
    DesafioRelacione o plano à verificação

    Uma ferramenta combina listas de ingredientes, mas conta o mesmo estoque da despensa uma vez para cada receita que o utiliza. A quantidade final de compra é pequena demais. Qual parte do método ordenado precisa ser investigada e por quê?

    ---reveal---

    Investigue como as necessidades compartilhadas são combinadas e como o estoque existente é subtraído. O estoque da despensa deve ser considerado em relação à necessidade combinada. A saída incorreta aponta para os passos de processamento, embora os dados dos ingredientes possam ter sido inseridos corretamente.

  10. 10
    RecapitulaçãoLeve um problema claro para a próxima etapa

    Uma descrição inicial útil identifica suas entradas, saídas necessárias, restrições e verificações. A solução pode então ser dividida, simplificada, expressa e revisada.

    Para sua próxima tarefa, escreva um critério de sucesso concreto antes de escolher um método. Ele deve permitir que outra pessoa julgue o resultado sem precisar saber qual software ou linguagem o produziu.

2

Construa um pequeno modelo de uma tarefa maior

13 passos
Dividir um jogo de perguntas em responsabilidades, reutilizar métodos comuns e escolher os detalhes necessários a cada parte.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoTorne um jogo de perguntas mais fácil de resolver
  2. 2
    ExplicaçãoComece pelas responsabilidades
  3. 3
    ExemploDetalhe um ramo
  4. 4
    DicaRegistre as passagens de informação
  5. 5
    DesafioEncontre uma lacuna no plano
  6. 6
    ExplicaçãoProcure o mesmo trabalho
  7. 7
    ExemploGeneralize um método de desenho
  8. 8
    DesafioConfira se a reutilização se justifica
  9. 9
    AnalogiaTenha em vista o objetivo do mapa
  10. 10
    ExemploDê um nome a uma tarefa e oculte seus passos
  11. 11
    DesafioSelecione dados para o objetivo
  12. 12
    DesafioCombine as três técnicas
  13. 13
    RecapitulaçãoExamine os limites que você escolheu
3

Rastreie um algoritmo completo da entrada à saída

20 passos
Construir um pequeno método de processamento de listas enquanto pratica atribuição, seleção, laços e terminação.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoAcompanhe o que as instruções realmente fazem
  2. 2
    ExplicaçãoComplete o método
  3. 3
    ExemploCompare o trabalho em páginas ordenadas
  4. 4
    DesafioTeste a suposição do método
  5. 5
    ExplicaçãoLeia a atribuição como substituição
  6. 6
    ExemploPreserve o valor antigo em uma troca
  7. 7
    DesafioDivida uma duração em grupos e resto
  8. 8
    ExplicaçãoEscolha um caminho
  9. 9
    ExemploExija os dois limites
  10. 10
    DesafioOrdene testes sobrepostos
  11. 11
    ExplicaçãoDecida quando o laço testa
  12. 12
    ExemploPrepare uma média acumulada
  13. 13
    ExemploExecute as duas primeiras passadas
  14. 14
    ExemploConclua o cálculo da média
  15. 15
    DicaConfira o progresso e os extremos
  16. 16
    ExemploInicialize o melhor valor com um candidato
  17. 17
    DesafioRastreie antes do próximo teste
  18. 18
    ConexãoRepita um laço para cada linha
  19. 19
    DesafioCombine seleção e acumulação
  20. 20
    RecapitulaçãoUse um rastreamento para justificar o resultado
4

Siga um fluxograma e corrija um erro de limite

15 passos
Traduzir um processo curto, acompanhar seus valores e escolher testes que distingam comportamentos corretos e incorretos.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoVeja tanto o caminho quanto os valores
  2. 2
    ExplicaçãoAssocie formas a ações
  3. 3
    ExemploDesenhe a sequência da área
  4. 4
    DesafioEscolha o símbolo que falta
  5. 5
    ExplicaçãoTransforme um ramo em IF
  6. 6
    ExemploColoque uma decisão WHILE primeiro
  7. 7
    ExemploColoque um teste de acesso após a entrada
  8. 8
    DesafioAcompanhe uma última tentativa bem-sucedida
  9. 9
    ExplicaçãoRegistre o estado atual
  10. 10
    ExemploEscreva os resultados esperados antes da execução
  11. 11
    DicaEscolha diferentes tipos de entrada de teste
  12. 12
    DesafioEncontre a primeira atualização incorreta
  13. 13
    ExplicaçãoCorrija a causa e confira novamente
  14. 14
    DesafioUse um rastreamento e um novo teste em conjunto
  15. 15
    RecapitulaçãoDeixe cada verificação responder a uma pergunta
5

Crie um programa interativo no Scratch

17 passos
Usar eventos, estado, entrada, retorno, laços e blocos personalizados, mantendo os scripts coordenados.

Salve esta aula para seguir cada Lição Interativa passo a passo.

  1. 1
    IntroduçãoConecte um plano ao comportamento visível
  2. 2
    ExplicaçãoEscolha o ator e o evento inicial
  3. 3
    ExemploExecute uma pilha curta em ordem
  4. 4
    DesafioDistinga um valor de uma ação
  5. 5
    ExplicaçãoInicialize antes do trabalho repetido
  6. 6
    ExemploReceba uma entrada e produza uma saída
  7. 7
    ExemploEscolha o segredo e pergunte uma vez
  8. 8
    ExemploDê um retorno legível
  9. 9
    ExemploAcompanhe três palpites
  10. 10
    DesafioCompare as duas formas de repetir até uma condição
  11. 11
    ExplicaçãoCoordene um script dependente
  12. 12
    DesafioConfira o que a conclusão exige
  13. 13
    ExemploCrie um procedimento de desenho
  14. 14
    ConexãoLeve a estrutura para o texto
  15. 15
    DicaDê a responsabilidade pelo estado compartilhado a um script
  16. 16
    DesafioCombine preparação, repetição e reutilização
  17. 17
    RecapitulaçãoLeia o comportamento como um algoritmo

Questões de Pensamento computacional

50 Questões de Prática em 5 conjuntos

Conjunto 1: Defina um problema e crie um plano10 Questões de Prática

Questão 1 de 10

Um sistema recebe uma lista de massas medidas, calcula sua média e exibe um valor em quilogramas. Qual é sua saída?
  1. A lista de massas de entrada.
  2. A massa média exibida.
  3. Os passos para calcular a média.
  4. A quantidade de passos usados.
Mostrar respostaOcultar resposta
Resposta: B
A saída é o resultado que o processo envia: a massa média em quilogramas. As medidas são a entrada a partir da qual esse resultado é calculado. Confundi-las inverte a direção da computação; os passos para calcular uma média descrevem o próprio processo.

Questão 2 de 10

Uma pessoa organizadora pede um programa para colocar nomes de oficinas em ordem alfabética. Qual requisito permitiria conferir o resultado?
  1. O programa exibe uma lista com nomes mais curtos perto do início.
  2. O programa usa um laço para examinar cada nome de oficina enviado.
  3. A saída contém os dez nomes mais pedidos pelos visitantes.
  4. A saída contém todos os nomes originais em ordem alfabética.
Mostrar respostaOcultar resposta
Resposta: D
Um requisito verificável especifica a saída necessária: todos os nomes originais, em ordem alfabética. Exigir um laço escolhe parte de um método sem estabelecer se o resultado está correto. Omitir nomes não cumpriria a tarefa, mesmo que os nomes restantes estivessem ordenados.

Questão 3 de 10

Antes de projetar um programa para reservas de salas, uma equipe lista as informações disponíveis, o resultado necessário e as regras contra reservas duplicadas. Qual é essa etapa da resolução de problemas?
  1. Entender o problema.
  2. Executar o algoritmo.
  3. Depurar a implementação.
  4. Comparar velocidades de execução.
Mostrar respostaOcultar resposta
Resposta: A
A equipe está definindo entradas, saídas e restrições, o que pertence à compreensão do problema. Ela ainda não escolheu instruções que possam ser executadas. A depuração exigiria um comportamento a investigar; listar as regras de reserva estabelece como deve ser o comportamento correto.

Questão 4 de 10

Um sistema de encomendas é dividido em leitura de solicitações, escolha de rotas e impressão de etiquetas de rota. As etiquetas devem mostrar a rota escolhida. Qual dependência seu plano deve preservar?
  1. A escolha da rota deve anteceder a impressão de sua etiqueta.
  2. A impressão da etiqueta deve anteceder a leitura de sua solicitação.
  3. A leitura das solicitações deve esperar a impressão de todas as etiquetas.
  4. A escolha das rotas deve esperar a impressão das etiquetas.
Mostrar respostaOcultar resposta
Resposta: A
A impressão precisa da rota escolhida como entrada, portanto a seleção da rota deve acontecer primeiro para aquela encomenda. Inverter essas tarefas deixaria a etapa da etiqueta sem o valor necessário. Dividir o sistema em partes separadas só ajuda quando o plano também preserva suas dependências.

Questão 5 de 10

Uma pessoa continua dividindo uma tarefa em partes menores. Quando é razoável parar de detalhar uma parte?
  1. Quando cada ramo principal foi detalhado até a mesma profundidade.
  2. Quando a parte tem um nome, mas seu método continua desconhecido.
  3. Quando sua solução está clara ou uma ferramenta existente dá conta dela.
  4. Quando suas entradas estão listadas, mas sua saída ainda não está definida.
Mostrar respostaOcultar resposta
Resposta: C
O detalhamento pode parar quando uma parte é diretamente solucionável ou já é tratada por uma solução conhecida. Quantidades iguais de ramos não tornam uma decomposição melhor. O limite útil é determinado pelo trabalho e pelos métodos disponíveis, portanto ramos diferentes podem precisar de profundidades diferentes.

Questão 6 de 10

Um método de desenho repete oito avanços iguais e giros iguais à direita para formar um octógono regular. Qual giro é necessário após cada avanço?
  1. 135 graus.
  2. 45 graus.
  3. 60 graus.
  4. 90 graus.
Mostrar respostaOcultar resposta
Resposta: B
As mudanças de direção devem somar uma volta completa, portanto cada um dos oito giros é 360∘/8=45∘. Usar 135 graus confunde o ângulo interno do octógono com a mudança de direção. O giro repetido é medido entre as direções antiga e nova do percurso.

Questão 7 de 10

Um modelo de entrega mantém as conexões entre vias e os comprimentos das ruas, mas remove as restrições de mão única. Às vezes, ele propõe um percurso no sentido contrário ao permitido. O que deve ser alterado?
  1. Remover os comprimentos das ruas do cálculo de rota.
  2. Manter apenas os nomes das ruas de início e de destino.
  3. Dividir as ruas em trechos iguais.
  4. Manter as restrições de mão única no modelo.
Mostrar respostaOcultar resposta
Resposta: D
Um modelo para trajetos de carro precisa dos sentidos de circulação permitidos porque eles afetam quais rotas podem ser usadas. A abstração deve remover detalhes irrelevantes para o objetivo, não uma regra que muda a resposta. Mais detalhes geométricos não restaurariam as informações de permissão ausentes.

Questão 8 de 10

Três programas encontram o pacote mais leve, a gravação mais curta e a temperatura mais baixa em listas não vazias. Qual método reutilizável serve aos três?
  1. Guardar zero e substituí-lo sempre que aparecer um valor menor.
  2. Comparar apenas o primeiro e o último valor e retornar o menor.
  3. Guardar o primeiro valor e substituí-lo sempre que aparecer um valor menor.
  4. Retornar o valor intermediário entre o primeiro e o último valor da lista.
Mostrar respostaOcultar resposta
Resposta: C
As três tarefas buscam um mínimo, portanto o método de guardar o melhor valor até então se aplica a todas. Começar pelo primeiro valor faz do resultado armazenado um candidato real; começar com zero falha quando todos os valores são positivos. Examinar todos os valores restantes também trata um mínimo no meio da lista.

Questão 9 de 10

Um conjunto de instruções diz “repita a verificação”, mas não fornece uma regra de parada nem uma contagem finita. Qual propriedade do algoritmo não está estabelecida?
  1. Que o método termina.
  2. Que o método armazena dados.
  3. Que o método usa seleção.
  4. Que o método tem uma entrada.
Mostrar respostaOcultar resposta
Resposta: A
Um algoritmo deve terminar após uma quantidade finita de passos para suas entradas válidas. A instrução não permite saber quando a repetição termina. A repetição em si é permitida, e um laço pode ser finito; a ausência de uma regra de parada é o que impede justificar a terminação aqui.

Questão 10 de 10

Quais valores permanecem após este pseudocódigo?

a ← 6
b ← 11
a ← b
b ← a
  1. a = 11, b = 6
  2. a = 11, b = 11
  3. a = 6, b = 11
  4. a = 6, b = 6
Mostrar respostaOcultar resposta
Resposta: B
A terceira linha copia 11 para a, substituindo seu valor anterior, 6. A última linha lê esse valor atual de a, portanto também copia 11 para b. Uma troca precisaria guardar o 6 original em uma variável temporária antes de sobrescrever a; a atribuição não preserva valores antigos por si só.
Conjunto 2: Acompanhe variáveis, decisões e laços10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

O que é apresentado?

value ← 7
value ← value + 4
OUTPUT value
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Uma duração é de 248 minutos. Quais valores 248 DIV 60 e 248 MOD 60 fornecem, nessa ordem?
  1. 4 e 8.
  2. 4 e 48.
  3. 8 e 4.
  4. 3 e 68.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Uma medida é aceita quando é pelo menos 12. Qual comparação deve verificar a aceitação?
  1. measurement > 12
  2. measurement ≤ 12
  3. measurement = 12
  4. measurement ≥ 12
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

O valor de um sensor deve estar entre 4 inclusive e 9 exclusivo. Qual condição verifica isso?
  1. value ≥ 4 OR value < 9
  2. value ≥ 4 AND value < 9
  3. value > 4 AND value ≤ 9
  4. value ≤ 4 OR value ≥ 9
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

O que é apresentado para load = 82?

IF load ≥ 80 THEN
    OUTPUT "High"
ELSE IF load ≥ 50 THEN
    OUTPUT "Medium"
ELSE
    OUTPUT "Low"
END IF
  1. Apenas “Medium”.
  2. Apenas “High”.
  3. “High” e depois “Medium”.
  4. Apenas “Low”.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Quantas vezes a saída é executada?

FOR i ← 2 TO 6
    OUTPUT i
END FOR
  1. 4 vezes.
  2. 6 vezes.
  3. 5 vezes.
  4. 2 vezes.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Qual sequência é apresentada?

n ← 5
WHILE n > 0 DO
    n ← n − 2
    OUTPUT n
END WHILE
  1. 3, 1, −1.
  2. 5, 3, 1.
  3. 3, 1.
  4. 5, 3, 1, −1.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

O que é apresentado?

total ← 0
FOR EACH n IN [2, 5, 6, 9]
    IF n MOD 2 = 0 THEN
        total ← total + n
    END IF
END FOR
OUTPUT total
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

Um laço externo visita as linhas de 1 a 3. Para cada linha, um laço interno visita as colunas de 1 a 5 e soma 2 a um total inicializado uma vez com zero. Qual total permanece?
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Uma lista não vazia pode conter quaisquer números inteiros. Um método de busca pelo maior valor inicializa largest ← 0 e só o substitui quando aparece um elemento maior. Qual única alteração torna seu valor inicial válido para toda lista desse tipo?
  1. Substituir a comparação > por ≥.
  2. Inicializar largest com o último elemento mais 1.
  3. Reiniciar largest em zero antes de cada comparação.
  4. Inicializar largest com o primeiro elemento da lista.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Conjunto 3: Leia fluxogramas e investigue falhas10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Qual símbolo de fluxograma deve conter distance ← speed * time?
  1. Um paralelogramo de entrada e saída.
  2. Um losango de decisão.
  3. Um símbolo de início ou fim.
  4. Um retângulo de processamento.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Um fluxograma recebe uma contagem inteira e chega a um losango identificado por count = 0?. Para a contagem 3, por onde a execução deve seguir?
  1. Pela saída identificada como Sim.
  2. Pela saída identificada como Não.
  3. Pelas duas saídas em sequência.
  4. De volta ao início antes de escolher.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Um fluxograma testa items > 0? antes de um corpo repetido. Sim entra no corpo e retorna ao teste; Não segue para o fim. Qual estrutura de pseudocódigo corresponde a ele?
  1. WHILE items > 0 DO … END WHILE
  2. REPEAT … UNTIL items > 0
  3. IF items > 0 THEN … END IF
  4. FOR items ← 0 TO 1 … END FOR
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

Um programa aceita idades inteiras de 18 a 65 inclusive. Qual entrada verifica diretamente se seu extremo superior foi excluído incorretamente?
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

Um programa de média divide total por count. Ele funciona para várias listas não vazias, mas falha com uma lista vazia. O que deve ser tratado antes da divisão?
  1. O caso em que count é zero.
  2. O caso de total negativo.
  3. O primeiro valor abaixo do último.
  4. Valores repetidos na lista.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Quais são os totais sucessivos armazenados após cada execução do corpo?

total ← 1
FOR i ← 1 TO 3
    total ← total * 2
END FOR
  1. 1, 2, 4.
  2. 2, 3, 4.
  3. 2, 4, 8.
  4. 2, 4, 6.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Um fluxo de acesso lê um código, aumenta as tentativas e retorna ao início se o código estiver errado AND tentativas < 4. Na quarta tentativa, o código está correto. Após o laço, qual teste deve escolher entre “Aceito” e “Limite atingido”?
  1. Se as tentativas são menores que quatro.
  2. Se o código digitado está correto.
  3. Se o corpo do laço foi executado pelo menos uma vez.
  4. Se as tentativas são iguais ao valor inicial.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Um programa deve aceitar temperaturas inteiras de −8 a 12 inclusive. Atualmente, ele verifica temperature > −8 AND temperature ≤ 12. Os testes com −9, 0, 12 e 13 passam. Qual novo teste expõe o defeito e qual deve ser seu resultado esperado?
  1. −7, aceito.
  2. 11, aceito.
  3. −9, rejeitado.
  4. −8, aceito.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

Um fluxograma inicializa total ← 0, depois recebe um valor, soma-o ao total e testa se outro valor é necessário. Sua seta Sim retorna à inicialização. O objetivo é um total acumulado. Para onde essa seta Sim deve retornar?
  1. À etapa de entrada após a inicialização.
  2. À etapa de inicialização antes da entrada.
  3. À etapa de saída após a decisão.
  4. À etapa de adição sem ler uma entrada.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Um programa é executado sem falhar, mas rejeita uma nota suficiente para aprovação porque usa > onde a regra exige ≥. Que tipo de erro é esse?
  1. Um erro de sintaxe.
  2. Um erro de lógica.
  3. Um erro em tempo de execução.
  4. Um erro de digitação da entrada.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Conjunto 4: Crie e coordene scripts no Scratch10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Uma pilha do Scratch é executada quando clicada na área de trabalho, mas não faz nada quando a bandeira verde é clicada. O que deve iniciar a pilha para esse evento?
  1. Um chapéu “quando bandeira verde for clicado”.
  2. Um chapéu “quando este ator for clicado”.
  3. Um bloco de fim “pare todos” na parte inferior.
  4. Um repórter arredondado na parte superior.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Que tipo de bloco do Scratch fornece TRUE ou FALSE ao espaço de condição de um bloco se?
  1. Um repórter de texto arredondado.
  2. Um bloco de comando de pilha.
  3. Um bloco booleano de seis lados.
  4. Um chapéu de evento inicial.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

No Scratch, score é definido como 0 antes de “repita 6”. Dentro do corpo da repetição, “mude score para 0” é seguido de “adicione 2 a score”. Qual pontuação permanece?
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

No Scratch, done já é TRUE antes de um bloco “repita até que ”. Quantas vezes seu corpo é executado?
  1. Uma vez.
  2. Duas vezes.
  3. Repete até ser interrompido.
  4. Zero vezes.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

Um script do Scratch pergunta uma cidade e depois avalia “junte [Cidade: ] (resposta)”. Qual ação adicional exibe o texto resultante no balão de fala do ator?
  1. Colocar um bloco de definição de variável após o junte.
  2. Colocar o repórter junte dentro de um bloco diga.
  3. Colocar o junte dentro de outro repórter junte.
  4. Colocar um bloco de comparação ao redor do junte.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Qual é o parâmetro de entrada em um bloco personalizado chamado “desenhar caminho (comprimento)”?
  1. O valor nomeado comprimento.
  2. A pilha que o chama.
  3. O evento da bandeira verde.
  4. A fantasia do ator.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Um controlador transmite “preparar”. Um receptor leva dois segundos para mover um ator até sua posição inicial. O controlador deve anunciar “Pronto” somente depois que esse receptor terminar. Qual alteração estabelece a ordem necessária?
  1. Colocar o receptor abaixo do controlador na área de trabalho.
  2. Usar “transmita preparar e espere” antes de dizer “Pronto”.
  3. Transmitir “preparar” imediatamente depois de dizer “Pronto”.
  4. Usar duas transmissões comuns antes de dizer “Pronto”.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Dois scripts da bandeira verde definem a mesma variável com valores diferentes e depois terminam. Um terceiro script a lê sem coordenação. Por que não é seguro depender de um valor final escolhido?
  1. A variável mantém os dois números atribuídos como uma lista de dois elementos.
  2. O script mais abaixo na área de trabalho deve sempre atribuir seu valor por último.
  3. Os scripts são executados concorrentemente, portanto o momento da escrita pode mudar o valor lido.
  4. A atribuição com o número maior deve sempre substituir a que tem o menor.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

Um jogo de adivinhação pergunta uma vez e depois repete até que resposta = segredo. Dentro do laço, o ator informa se o palpite é alto ou baixo, mas nunca pergunta novamente. O primeiro palpite está errado. O que impede o laço de terminar?
  1. O laço verifica sua condição de parada antes da primeira passada do corpo.
  2. O retorno escolhe entre uma mensagem de alto e uma de baixo.
  3. O segredo foi escolhido antes de a pergunta inicial ser exibida.
  4. Nenhuma instrução obtém uma nova resposta para a próxima verificação da condição.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Um bloco personalizado desenha um polígono regular usando entradas para a quantidade e o comprimento dos lados. O que lhe dá generalização?
  1. Seu nome permite que quem o chama ignore os passos internos do desenho.
  2. Seu bloco chapéu começa quando ocorre o evento da bandeira verde.
  3. Suas entradas variáveis permitem que um método trate casos diferentes.
  4. Sua categoria torna todas as combinações de blocos logicamente corretas.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Conjunto 5: Aplique as ideias em novas situações10 Questões de Prática

Salve esta aula para ver todas as respostas e praticar cada conjunto.

Questão 1 de 10

Um modelo de museu armazena a contagem de visitantes por sala. Uma nova tarefa deve planejar rotas acessíveis a pessoas em cadeira de rodas. Qual é a principal razão para o modelo precisar de mais informações?
  1. Todo modelo deve incluir todas as características físicas de um edifício.
  2. O novo objetivo precisa de detalhes de acesso omitidos pelo modelo de contagem.
  3. O modelo precisa de mais amostras de visitantes antes de planejar rotas.
  4. O modelo serve à nova tarefa se as contagens forem armazenadas com mais precisão.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 2 de 10

Um método divide repetidamente ao meio um conjunto ordenado de 64 páginas possíveis. O conjunto cresce então para 256 páginas. Como muda a quantidade de divisões ao meio necessárias para reduzi-lo a uma página?
  1. Aumenta de 6 para 24.
  2. Aumenta de 8 para 10.
  3. Aumenta de 6 para 8.
  4. Aumenta de 32 para 128.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 3 de 10

Um sistema aceita uma amostra somente se sua massa estiver entre 2 e 5 kg inclusive e sua etiqueta estiver legível. O teste atual é (mass ≥ 2 AND mass ≤ 5) OR readable. Qual aceitação incorreta pode ocorrer?
  1. Uma amostra de 6 kg é aceita quando sua etiqueta está legível.
  2. Uma amostra de 3 kg é rejeitada quando sua etiqueta está legível.
  3. Uma amostra de 2 kg é rejeitada quando sua etiqueta está legível.
  4. Uma amostra de 5 kg é rejeitada quando sua etiqueta está legível.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 4 de 10

Um programa tenta dividir por zero ao processar dados e para com um erro. Que tipo de falha ocorreu?
  1. Um erro de sintaxe.
  2. Uma classificação incorreta apenas de lógica.
  3. Uma sobreposição na decomposição.
  4. Um erro em tempo de execução.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 5 de 10

O que é apresentado?

total ← 0
count ← 0
FOR EACH n IN [−3, 4, 0, 8, −1]
    IF n > 0 THEN
        total ← total + n
        count ← count + 1
    END IF
END FOR
OUTPUT total / count
  1. 2,4.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 6 de 10

Um controlador usa “transmita e espere” para concluir a preparação antes de o jogo começar. Um receptor de preparação contém um laço “sempre”. Nenhuma ação de parada ocorre. O que acontece com o próximo bloco do controlador?
  1. Ele é executado assim que o receptor começa sua primeira passada.
  2. Ele continua esperando porque esse receptor nunca termina.
  3. Ele é executado após exatamente uma passada do laço do receptor.
  4. Ele é executado quando todos os scripts receptores começam juntos.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 7 de 10

Uma equipe projeta um registrador de entradas que soma uma unidade à contagem de presença, um módulo de boas-vindas que também soma uma unidade para essa chegada e um módulo de exibição. Qual responsabilidade deve mudar para evitar um total incorreto?
  1. Apenas um módulo deve incrementar a presença para cada chegada.
  2. Ambos os módulos devem esperar a exibição antes de incrementar a presença.
  3. O módulo de exibição deve reiniciar a presença antes de qualquer incremento.
  4. Os dois incrementos devem ocorrer juntos após a mensagem de boas-vindas.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 8 de 10

Um algoritmo começa com n ← 0, depois repete n ← n + 2 até que n ≥ 5 e apresenta n. Um fluxograma é desenhado com a mesma condição antes do corpo: Sim vai para a saída, Não entra no corpo e retorna. Para essa entrada, ambos apresentam 6. Qual alteração expõe seus diferentes comportamentos de laço?
  1. Inicializar n em 2: a versão com teste no final apresenta 6, e a com teste no início, 6.
  2. Inicializar n em 4: a versão com teste no final apresenta 6, e a com teste no início, 6.
  3. Inicializar n em 6: a versão com teste no final apresenta 8, e a com teste no início, 6.
  4. Inicializar n em −2: a versão com teste no final apresenta 6, e a com teste no início, 6.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 9 de 10

Qual par é apresentado?

a ← 9
b ← 14
temp ← a
a ← b + 1
b ← temp
OUTPUT a, b
  1. 14, 9.
  2. 15, 9.
  3. 15, 15.
  4. 9, 14.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Questão 10 de 10

Uma equipe pergunta se um problema definido com precisão tem alguma solução algorítmica, antes de alguém escrever um programa. Que parte da ciência da computação isso ilustra?
  1. Estudar os limites da computação.
  2. Escolher hardware para uma organização.
  3. Tirar conclusões de uma amostra de dados.
  4. Escrever sintaxe em uma linguagem executável.
Mostrar respostaOcultar resposta

Salve esta aula para ver esta resposta.

Travou em uma questão sua? Ajuda com Tarefas

Termos-Chave

90 Termos-Chave, cada um com sua definição

A

Abstração
Abstração é manter os detalhes necessários para um objetivo específico enquanto oculta outros, tornando um problema ou componente mais fácil de usar.
Um mapa de metrô pode preservar as conexões enquanto deixa de fora o traçado das ruas entre as estações.
Acumulador
Um acumulador é uma variável que constrói um resultado acumulado ao longo das passadas de um laço, incorporando cada nova contribuição ao valor armazenado.
Um total acumulado soma a próxima temperatura à quantidade já acumulada dos dias anteriores.
Algoritmo
Um algoritmo é um conjunto finito e ordenado de instruções precisas que produz a saída necessária para toda entrada dentro de seu domínio válido.
Um método correto de busca pelo maior valor deve examinar uma parte suficiente da lista para tratar um máximo no meio.
Aninhamento
Aninhamento é colocar uma estrutura de controle dentro do corpo de outra estrutura, de modo que alcançar a estrutura interna dependa do fluxo ao redor.
Uma verificação interna de senha só pode ser executada depois que a verificação externa de comprimento envia a execução para seu ramo.
Ator (sprite)
Um ator é um personagem ou objeto em um projeto Scratch com seus próprios scripts, fantasias e sons, que pode responder a eventos e executar ações.
Dois atores podem responder à mesma transmissão enquanto executam tarefas diferentes no projeto.
Atribuição
Atribuição é armazenar um valor recém-calculado em uma variável, substituindo o valor que estava armazenado anteriormente sob esse nome.
Em count ← count + 1, a contagem antiga é lida antes que o novo valor seja colocado de volta em count.

B

Bloco “junte”
O bloco “junte” é um repórter do Scratch que cria um valor de texto combinando dois trechos de texto fornecidos, sem exibi-los por conta própria.
Um bloco diga pode exibir a saudação construída ao juntar “Olá, ” ao repórter resposta.
Bloco “repita até que”
Um bloco “repita até que” é um laço do Scratch que verifica um valor booleano antes de cada passada e repete seu corpo enquanto essa condição de parada é FALSE.
Se o primeiro palpite estiver correto, um bloco que repete até o acerto pula por completo seu corpo de retorno.
Bloco “repita”
Um bloco “repita” é um bloco de controle do Scratch que executa os comandos contidos nele uma quantidade especificada de vezes antes de continuar com o próximo bloco.
Repetir um par de avanço e giro quatro vezes pode desenhar um quadrado quando a caneta está abaixada.
Bloco “sempre”
Um bloco “sempre” é um laço do Scratch que continua executando seu corpo até que o script ou programa seja interrompido, permitindo comportamento contínuo.
Um jogo pode usar um laço sempre para continuar verificando se uma tecla está sendo pressionada.
Bloco booleano
Um bloco booleano é um bloco de valor do Scratch com seis lados que fornece TRUE ou FALSE para o espaço de condição de uma decisão ou de um laço.
Uma comparação de Sensores pode dizer a um bloco se o ator está tocando no ponteiro do mouse.
Bloco chapéu
Um bloco chapéu inicia um script do Scratch; sua forma fica acima da pilha de comandos e identifica o evento que aciona as instruções ligadas a ele.
Um chapéu da bandeira verde faz sua pilha responder à bandeira, enquanto um chapéu de tecla pressionada responde a essa tecla.
Bloco personalizado
Um bloco personalizado é um procedimento nomeado do Scratch cuja definição contém comandos reutilizáveis e pode incluir parâmetros de entrada para valores variáveis.
Um bloco de quadrado pode desenhar lados de comprimentos diferentes quando cada chamada fornece um novo tamanho.
Bloco repórter
Um bloco repórter é um bloco arredondado do Scratch que fornece um valor, como texto ou número, a um espaço de entrada em outro bloco.
O repórter de pontuação fornece o número atual a uma comparação que verifica se a meta foi alcançada.
Bloco repórter “resposta”
O bloco repórter “resposta” é um bloco de valor do Scratch que fornece a resposta mais recente digitada por meio de um bloco “pergunte e espere” para processamento posterior.
Após perguntar um nome, um script pode colocar resposta dentro de junte para criar uma saudação pessoal.

C

Cadeia de caracteres (string)
Uma cadeia de caracteres é uma sequência de caracteres de texto que permite a um programa armazenar nomes, mensagens ou texto com aparência numérica como dados textuais.
Juntar as cadeias “12” e “3” produz “123”, o que difere de calcular sua soma numérica.
Cadeia de condições ELSE IF
Uma cadeia de condições ELSE IF testa condições em ordem e executa apenas o primeiro ramo cuja condição é satisfeita, com um ELSE final opcional para os casos não atendidos.
Limites sobrepostos de “pelo menos” precisam de ordenação cuidadosa para que um ramo anterior não capture todos os casos.
Camada de abstração
Uma camada de abstração é um nível de um sistema que fornece um comportamento definido enquanto oculta os detalhes de como o trabalho dos níveis inferiores é realizado.
Um aplicativo de conversa depende de serviços do sistema operacional sem fazer seu usuário controlar o hardware diretamente.
Ciclo de resolução de problemas
Um ciclo de resolução de problemas é um processo de entender, planejar, executar e conferir uma solução, com revisões quando necessário.
Um teste malsucedido pode levar uma pessoa a alterar o plano original ou incluir uma entrada ausente.
Ciência da computação
Ciência da computação é o estudo da computação, da informação e do projeto de sistemas que resolvem problemas por meio de processos precisos.
Uma pessoa cientista da computação pode estudar se um problema é solucionável antes que alguém escreva um programa executável.
Ciência de dados
Ciência de dados é o uso de estatística e computação para tirar conclusões de dados, combinando raciocínio quantitativo com métodos de processamento de informação.
Uma pessoa cientista de dados pode estudar medidas registradas para identificar tendências e avaliar possíveis explicações.
Computação
Uma computação é um processo que executa instruções sobre informações de entrada para produzir um resultado, que pode então ser usado por outro processo.
Uma computação de rota recebe locais e dados de mapa e produz uma rota com distância e tempo de viagem.
Concorrência
Concorrência é a execução de vários scripts em períodos sobrepostos, de modo que suas ações podem depender do momento de execução caso não sejam coordenadas.
Dois scripts que escrevem valores diferentes em uma variável precisam de um plano antes que outro script dependa de seu valor.
Condição
Uma condição é uma expressão avaliada como TRUE ou FALSE, fornecendo a decisão usada por um ramo ou laço controlado por condição.
A condição remaining > 0 decide se outro elemento deve ser processado pelo laço.
Conector
Um conector é um símbolo de fluxograma identificado que liga trechos separados do fluxo de execução, ajudando o leitor a acompanhar uma continuação pelo diagrama.
Identificações correspondentes em conectores podem substituir uma longa linha cruzada que tornaria um fluxograma grande difícil de acompanhar.
Constante
Uma constante é um valor nomeado que permanece inalterado ao longo de um algoritmo, tornando explícita uma regra ou quantidade fixa em suas instruções.
Um limite de aprovação nomeado pode ser comparado com muitas notas sem mudar durante a computação.
Contador
Um contador é uma variável usada para registrar quantas vezes um evento ocorre ou quantos elementos foram processados durante a execução.
A contagem aumenta uma vez por leitura para que o total final possa ser dividido pela quantidade de leituras.
Correção
Correção é a propriedade de produzir o comportamento necessário para toda entrada válida, respeitando as regras especificadas do problema.
Um método que encontra o máximo apenas quando ele está em um extremo da lista não está correto para todas as listas.
Critério de sucesso
Um critério de sucesso é uma forma específica de julgar se uma solução alcançou o resultado pretendido e atendeu às necessidades do problema.
Uma lista de compras tem sucesso quando fornece quantidade suficiente de cada ingrediente necessário para as refeições escolhidas.

D

Dados de tipo real
Dados de tipo real representam quantidades numéricas que podem ter partes fracionárias, geralmente armazenadas em um programa com um tipo de dado de ponto flutuante.
Um comprimento medido de 4,5 metros para uma sala precisa de um tipo numérico que possa representar sua parte fracionária.
Decomposição
Decomposição é dividir uma tarefa complexa em subproblemas menores que podem ser compreendidos, resolvidos e conferidos antes de serem combinados.
Um jogo de perguntas pode separar a apresentação de uma pergunta da verificação da resposta e da atualização da pontuação.
Decomposição descendente (top-down)
Decomposição descendente é dividir um problema completo em partes principais e depois detalhá-las em tarefas menores, que possam ser resolvidas mais diretamente.
Uma pessoa identifica as responsabilidades de um jogo de perguntas antes de decidir as ações detalhadas de cada tela.
Dependência
Uma dependência é uma relação em que uma tarefa precisa do resultado de outra, o que restringe quando a tarefa dependente pode prosseguir.
Em um jogo de perguntas, a tarefa de pontuação deve receber a resposta verificada antes de decidir se acrescenta um ponto.
Depuração
Depuração é encontrar e corrigir a causa de uma falha em um programa, reproduzindo-a, examinando a execução e conferindo o efeito de uma correção.
O primeiro valor inesperado em um rastreamento pode apontar para uma atualização que apagou o resultado acumulado.
Diagrama de decomposição
Um diagrama de decomposição é uma árvore que mostra como uma tarefa completa é dividida em responsabilidades menores em níveis sucessivos de detalhe.
Ramos abaixo de “Fazer uma pergunta” podem mostrar a exibição do texto, a exibição das opções e a leitura da entrada.
DIV (divisão inteira)
DIV é um operador de divisão inteira que fornece o quociente inteiro, contando grupos completos do divisor em um dividendo não negativo.
Para 135 minutos, 135 DIV 60 identifica duas horas completas antes de tratar os minutos restantes.

E

Engenharia de computação
Engenharia de computação é o projeto e o desenvolvimento de hardware computacional físico, como processadores, placas de circuito e dispositivos relacionados.
Projetar um circuito de processador enfatiza a engenharia de computação, enquanto estudar problemas solucionáveis enfatiza a teoria.
Entrada
Uma entrada é um dado fornecido a uma computação antes ou durante sua execução, oferecendo informações que suas instruções podem usar.
Uma temperatura inserida por um usuário é entrada para um programa que decide qual mensagem exibir.
Erro de lógica
Um erro de lógica é uma falha nas instruções que faz um programa em execução produzir comportamento ou resultados diferentes das regras exigidas.
Usar uma comparação estrita para um limite inclusivo de aprovação rejeita incorretamente a nota no limite.
Erro de sintaxe
Um erro de sintaxe é uma violação das regras de escrita de uma linguagem de programação que impede que as instruções afetadas sejam interpretadas corretamente.
A falta de um parêntese de fechamento pode impedir a execução de código textual antes que sua lógica seja testada.
Erro de uma unidade (off-by-one)
Um erro de uma unidade é um erro de limite que faz uma contagem ou um processo repetido incluir um elemento a mais ou a menos.
Uma contagem regressiva que usa n ≥ 0 apresenta zero além dos valores positivos se o corpo apresentar n.
Erro em tempo de execução
Um erro em tempo de execução é uma falha encontrada enquanto um programa é executado, muitas vezes provocada por uma entrada ou estado específico durante uma operação.
Uma média de lista vazia chega a uma divisão por zero se sua contagem for usada sem uma verificação anterior.
Estrutura de controle
Uma estrutura de controle é uma forma de organizar a ordem de execução, incluindo passos sequenciais, escolhas condicionais e blocos de trabalho repetidos.
Um algoritmo de processamento de listas pode colocar uma decisão dentro de um laço e atualizar uma variável em sequência.
Evento
Um evento é uma ocorrência, como pressionar uma tecla ou receber uma mensagem, que pode acionar scripts registrados para respondê-la em um programa.
Clicar na bandeira verde inicia os scripts do Scratch que têm chapéus correspondentes à bandeira verde.

F

Fluxograma
Um fluxograma é um diagrama que representa passos de um algoritmo com símbolos e mostra a ordem de execução por meio de linhas de fluxo direcionadas que os conectam.
Seguir um único conjunto de valores de entrada pelas setas revela o caminho que essa execução percorrerá.

G

Generalização
Generalização é transformar uma solução específica em um método para uma família de casos, identificando o que permanece fixo e o que pode variar.
Um método de desenho de polígonos pode aceitar diferentes quantidades de lados em vez de ter um script para cada forma.

I

Iteração
Iteração é repetir um bloco de instruções sob controle de uma contagem ou condição, permitindo que um método trate trabalho repetido sem duplicar seus passos.
Um laço pode aplicar a mesma comparação a cada candidato enquanto guarda o melhor valor visto até então.

L

Laço com teste no final
Um laço com teste no final avalia sua condição de controle após o corpo repetido, de modo que o corpo é executado pelo menos uma vez antes de uma decisão de parada.
Um acesso com REPEAT … UNTIL pede uma senha antes de decidir se outra tentativa é necessária.
Laço com teste no início
Um laço com teste no início avalia sua condição de controle antes de entrar em cada execução do corpo, permitindo que o corpo seja executado zero vezes quando a condição de entrada não é satisfeita.
Um fluxograma WHILE pode ir diretamente de sua primeira decisão ao passo após o laço.
Laço controlado por condição
Um laço controlado por condição decide a repetição usando um teste booleano, de modo que a quantidade de passadas pode depender de dados variáveis ou de uma nova entrada.
Um jogo de adivinhação pode continuar perguntando até que a resposta corresponda ao valor secreto escolhido no início.
Laço controlado por contagem
Um laço controlado por contagem repete seu corpo uma quantidade conhecida de vezes, muitas vezes usando um contador cujos valores cobrem um intervalo inclusivo especificado.
Um laço FOR de 1 a 5 executa cinco passadas, enquanto começar em 0 acrescenta mais uma.
Laço infinito
Um laço infinito é uma repetição que nunca termina porque a execução nunca alcança um estado ou uma ação que interrompa o trabalho repetido.
Uma contagem regressiva positiva se repete para sempre se seu corpo nunca diminui o valor testado pelo laço.
Linha de fluxo
Uma linha de fluxo é uma conexão com seta entre símbolos de fluxograma que especifica qual passo segue outro, incluindo o retorno a um trabalho repetido.
Uma linha de fluxo de retorno pode voltar da atualização no corpo à decisão que controla outra passada.
Lista
Uma lista é uma coleção ordenada de valores tratada como um único dado, permitindo que um algoritmo visite seus elementos e os combine ou compare.
Um laço FOR EACH pode visitar as leituras de temperatura em uma lista e acumular seu total.

M

MOD (resto da divisão inteira)
MOD é um operador inteiro que fornece o resto após a divisão inteira; para entradas não negativas, é o que permanece após os grupos completos.
O valor 135 MOD 60 fornece os 15 minutos restantes após a retirada de duas horas completas.
Modelo
Um modelo é uma representação simplificada de algo que preserva informações relevantes suficientes para responder a perguntas de um objetivo específico.
Um modelo de estacionamento registra a identificação e o horário de chegada de um carro sem simular como seu motor funciona.

N

Número inteiro
Um número inteiro é um número sem parte fracionária que pode ser negativo, zero ou positivo, sendo adequado para contagens e outros valores sem parte fracionária.
Um contador de laço assume valores inteiros, enquanto a média calculada dos valores de entrada pode ser fracionária.

O

Operador lógico
Um operador lógico combina ou inverte condições booleanas: AND exige ambas, OR exige pelo menos uma e NOT inverte um valor.
Uma verificação de intervalo válido combina seus limites inferior e superior com AND para que ambos sejam respeitados.

P

Palco
O palco é a área visível do projeto no Scratch, com 480 por 360 unidades e coordenadas horizontais e verticais centradas em (0, 0).
Um ator enviado para x: 0 e y: 0 move-se para o centro antes de executar o próximo bloco.
Parâmetro
Um parâmetro é uma entrada nomeada na definição de um procedimento que permite que suas instruções trabalhem com valores fornecidos por diferentes chamadas.
O parâmetro de tamanho permite que um procedimento de desenho use 60 passos em uma chamada e 100 em outra.
Pensamento computacional
Pensamento computacional é uma forma de formular problemas e soluções como passos que uma pessoa, um computador ou uma combinação de ambos pode executar.
Planejar ingredientes compartilhados para várias refeições usa pensamento computacional antes de envolver qualquer software.
Procedimento
Um procedimento é um grupo nomeado de instruções que pode ser chamado para executar uma tarefa, às vezes com entradas fornecidas ou um resultado retornado.
Quem chama um procedimento de média pode usá-lo sem reescrever seus passos de adição e divisão a cada vez.
Processo predefinido
Um processo predefinido é um passo de fluxograma que chama um procedimento descrito separadamente, desenhado como um retângulo com linhas verticais duplas nas laterais.
Um fluxograma principal pode chamar um procedimento de verificação sem desenhar todas as comparações internas na mesma página.
Programa
Um programa é um conjunto de instruções expresso em uma linguagem de programação para que um computador possa executar o comportamento especificado.
Um fluxograma e um programa executável podem expressar o mesmo método por meio de representações diferentes.
Programação
Programação é escrever instruções em uma linguagem que um computador pode executar, transformando um método planejado em comportamento executável.
Uma pessoa desenvolvedora pode implementar o mesmo método de cálculo em várias linguagens de programação diferentes.
Programação em blocos
Programação em blocos é construir um programa a partir de blocos gráficos de instruções e valores cujas formas orientam como eles podem ser combinados.
Uma pessoa iniciante pode montar um laço sem digitar a pontuação exigida por uma linguagem textual.
Pseudocódigo
Pseudocódigo é uma descrição estruturada e legível de um algoritmo que expressa sua lógica sem seguir a sintaxe de uma única linguagem de programação.
Palavras-chave em maiúsculas e blocos indentados tornam visível a estrutura de laço pretendida antes da implementação.

R

Ramo
Um ramo é um caminho possível por uma decisão, contendo o trabalho executado quando sua condição ou seu caso identificado é selecionado.
Em um fluxograma de acesso, o ramo de acesso bem-sucedido exibe “Boas-vindas” e depois volta a se unir ao fluxo antes do fim.
Reconhecimento de padrões
Reconhecimento de padrões é identificar semelhanças, repetições ou tendências em dados ou tarefas que sugerem uma estrutura comum ou um método reutilizável.
Pares repetidos de avanço e giro sugerem um laço quando uma caneta percorre os lados de um polígono regular.
Restrição
Uma restrição é uma regra ou limite que uma solução deve respeitar, determinando quais resultados ou métodos possíveis são aceitáveis.
Um plano de refeições deve respeitar o tempo disponível para cozinhar e as necessidades alimentares de cada pessoa.

S

Saída
Uma saída é um resultado enviado por uma computação, como texto exibido, um valor calculado ou dados passados a outro processo.
A massa média mostrada após o processamento de um conjunto de medidas é a saída do cálculo.
Script
Um script é uma pilha conectada de blocos do Scratch que descreve um comportamento ordenado, geralmente iniciada por um chapéu de evento quando seu evento ocorre.
Um script da bandeira verde pode reiniciar uma variável, fazer uma pergunta e depois escolher uma mensagem de retorno.
Seleção
Seleção é a estrutura de controle que testa uma condição e escolhe qual ramo de instruções deve ser executado para o estado atual.
Uma verificação de aprovação escolhe uma mensagem quando a nota é suficiente e outra quando não é.
Sequência
Sequência é a estrutura de controle em que instruções são executadas uma após a outra, com cada instrução posterior usando o estado deixado anteriormente.
Ler uma medida antes de calcular seu resultado é uma sequência com uma dependência necessária.
Símbolo de decisão
Um símbolo de decisão é um losango de fluxograma que testa uma condição ou um valor e escolhe exatamente um de seus caminhos de saída identificados.
O losango score ≥ 50? envia uma nota suficiente pelo caminho Sim e uma nota menor pelo caminho Não.
Símbolo de entrada e saída
Um símbolo de entrada e saída é um paralelogramo de fluxograma que representa um passo que recebe dados ou envia um resultado a um usuário ou outro destino.
Ler o comprimento de uma sala e exibir uma área usam símbolos de dados, enquanto o cálculo usa um retângulo.
Símbolo de início ou fim (terminal)
Um símbolo de início ou fim é um símbolo de fluxograma, desenhado como uma forma oval ou um retângulo arredondado, que marca um ponto de início ou de fim da execução.
Um fluxograma de área de sala começa em Início e chega ao Fim após a área calculada ser exibida.
Símbolo de processamento
Um símbolo de processamento é um retângulo de fluxograma que representa uma ação ou um cálculo que altera ou utiliza os dados atuais do programa.
O retângulo area ← length * width calcula um valor após a leitura das duas medidas.
Subproblema
Um subproblema é uma tarefa menor dentro de um problema maior, com uma responsabilidade que contribui para a solução do problema completo.
Exibir opções de resposta é um subproblema dentro da tarefa maior de fazer uma pergunta em um jogo.

T

Tabela de rastreamento
Uma tabela de rastreamento é um registro dos valores das variáveis, dos resultados das condições e das saídas enquanto as instruções de um algoritmo são acompanhadas em uma execução específica.
Um rastreamento de soma acumulada mostra o total após cada adição, tornando visível uma reinicialização inesperada.
Tecnologia da informação
Tecnologia da informação é o trabalho de selecionar, configurar, manter e operar sistemas computacionais para uma organização.
Uma equipe de TI pode configurar os computadores e as contas de que uma organização precisa para seu trabalho diário.
Tendência
Uma tendência é uma direção ou relação recorrente observada em dados, que pode orientar previsões quando o padrão continua relevante.
Uma loja compara as vendas de guarda-chuvas com as previsões de chuva antes de usar esse padrão para planejar seu estoque.
Teste de mesa
Um teste de mesa consiste em acompanhar manualmente um algoritmo com valores de entrada escolhidos, registrando suas operações reais sem executar um programa de computador.
Um aluno usa uma tabela de rastreamento para conferir manualmente a primeira passada, a última passada e o teste de parada de um laço.
Teste de valores-limite
Um teste de valores-limite verifica um extremo válido ou limite de decisão e valores próximos, onde pequenos erros de comparação podem mudar a aceitação.
Testar exatamente 50 expõe uma comparação estrita de maior que quando uma regra de aprovação inclui essa nota.
Tipo de dado
Um tipo de dado identifica o tipo de valor representado e ajuda a determinar quais operações fazem sentido para esse valor.
Somar números calcula uma soma numérica, enquanto juntar duas cadeias de caracteres combina seus textos.
Transmissão de mensagem
Uma transmissão de mensagem é o envio de uma mensagem do Scratch a todos os atores e ao palco, iniciando os scripts cujos chapéus de recebimento correspondem a essa mensagem.
Um controlador pode enviar “preparar” para que vários atores se movam até suas posições por meio de seus próprios receptores.
Tratador de eventos
Um tratador de eventos é um script ou trecho de código que começa quando um evento específico ocorre e executa a resposta atribuída a esse evento.
Um script “quando eu receber [fim de jogo]” pode interromper o movimento quando o projeto envia essa mensagem.

V

Valor booleano (valor lógico)
Um valor booleano é um dado com um de dois estados possíveis, TRUE ou FALSE, geralmente produzido por uma comparação ou operação lógica.
A comparação score ≥ 50 fornece um valor booleano que decide qual ramo do algoritmo é executado.
Valor de retorno
Um valor de retorno é um resultado que um procedimento envia de volta a quem o chamou, onde pode ser armazenado, combinado com outros dados ou passado adiante.
Um procedimento de média pode retornar 20 para que quem o chamou possa compará-lo com outra medida.
Variável
Uma variável é um local de armazenamento nomeado cujo valor atual pode ser lido e substituído durante a execução de um algoritmo ou programa.
Uma variável contadora muda de 4 para 5 após uma instrução somar uma unidade a seu valor atual.

Sobre esta aula

Por StudeliRelatar um erro

Crie seus próprios Materiais de Estudo

Transforme suas anotações, slides e documentos em Guias de Estudo, Questões de Prática, Flashcards e mais 6 ferramentas.

Começar