Voltar ao inícioComputação · 9º ano · Mudar de matéria
Começar grátis
9º ano · Computação
Sistemas informáticos · Programação textual

As estruturas de um programa

Antes de começar, convém dominares: Algoritmos e pensamento computacional (6º ano do Ensino Fundamental (Anos Finais))
Antes de começar, convém dominares: Programação textual (8º ano do Ensino Fundamental (Anos Finais))

Pense em um jogo de celular: ele guarda seus pontos, decide se você passou de fase, repete a mesma animação várias vezes e reutiliza o mesmo código para cada inimigo. Por mais complexo que seja, todo programa é construído combinando as mesmas peças: variáveis, decisões, repetições e funções. Aqui você aprende a ler e a projetar essas peças em pseudocódigo, a linguagem neutra dos algoritmos. No final, você vai poder explicar como esse jogo faz tudo isso.

Variáveis, constantes e tipos de dado

Código com a constante IMPOSTO, que é definida uma vez, e a variável preço, que muda de valor ao somar o imposto. IMPOSTO ← 0,10 preço ← 50,00 preço ← preço + preço · IMPOSTO constante variável não muda muda

Num videogame, uma variável pontos guarda a pontuação do jogador. Ao passar de nível, ela muda com uma operação como pontos ← pontos + 100. Já a porcentagem de imposto de um programa de faturamento é uma constante: o preço do produto varia, mas a taxa fica fixa durante a execução.

Pratica★☆☆Por começar
Explique o que é uma variável em um programa e dê um exemplo: que nome e que conteúdo teria uma variável em um videogame que guarda os pontos do jogador. Que operação…

Explique o que é uma variável em um programa e dê um exemplo: que nome e que conteúdo teria uma variável em um videogame que guarda os pontos do jogador. Que operação mudaria seu valor ao passar de nível?

Resolver
Pratica★☆☆Por começar
Explique a diferença entre uma variável e uma constante em um programa, com um exemplo de cada uma em um programa de faturamento (o preço do produto em contraste com a…

Explique a diferença entre uma variável e uma constante em um programa, com um exemplo de cada uma em um programa de faturamento (o preço do produto em contraste com a porcentagem de imposto).

Resolver
Pratica★☆☆Por começar
Os dados de um programa têm tipo: inteiro, decimal, texto ou booleano. Indique o tipo mais adequado para cada dado e justifique: a idade de uma pessoa, sua altura em…

Os dados de um programa têm tipo: inteiro, decimal, texto ou booleano. Indique o tipo mais adequado para cada dado e justifique: a idade de uma pessoa, sua altura em metros, seu nome e se foi aprovada ou não.

Resolver
Pratica★☆☆Por começar
Leia este trecho e faça o teste de mesa: Indique que valor é exibido na tela e explique por que a segunda instrução não é uma equação matemática, mas uma atribuição.

Leia este trecho e faça o teste de mesa:

inicio

    x ← 4

    x ← x + 2

    escrever x

fim

Indique que valor é exibido na tela e explique por que a segunda instrução não é uma equação matemática, mas uma atribuição.

Resolver

Seleção: estruturas condicionais

Exemplos do dia a dia: se estiver chovendo, então levo guarda-chuva, senão vou sem; se o saldo do cartão de transporte for suficiente, então a catraca libera, senão mostra aviso.

Condições podem ser combinadas com E, OU e NÃO. Experimente o widget abaixo: a saída com E só é verdadeira quando as duas entradas são verdadeiras.

Pratica★☆☆Por começar
Explique o que é uma estrutura condicional (se... então... senão...) e escreva dois exemplos de decisões cotidianas expressas com essa estrutura, indicando a condição e…

Explique o que é uma estrutura condicional (se... então... senão...) e escreva dois exemplos de decisões cotidianas expressas com essa estrutura, indicando a condição e as duas ações possíveis.

Resolver
Pratica★★☆Por começar
Escreva em pseudocódigo um programa que leia a nota de uma prova (um número de 0 a 10) e escreva «aprovado» se a nota for 5 ou maior, e «reprovado» caso contrário. Use…

Escreva em pseudocódigo um programa que leia a nota de uma prova (um número de 0 a 10) e escreva «aprovado» se a nota for 5 ou maior, e «reprovado» caso contrário. Use uma variável, uma leitura de dado e uma estrutura condicional.

Resolver
Pratica★★☆Por começar
Este programa classifica uma pessoa segundo sua idade: Faça o teste de mesa para uma entrada de 17 e para uma de 21, indicando em cada caso que condição é avaliada e o…

Este programa classifica uma pessoa segundo sua idade:

inicio

    ler idade

    se idade ≥ 18 então

        escrever "maior de idade"

    senão

        escrever "menor de idade"

    fim se

fim

Faça o teste de mesa para uma entrada de 17 e para uma de 21, indicando em cada caso que condição é avaliada e o que é escrito na tela.

Resolver

Repetição: laços e teste de mesa

Sem laço, para escrever os números de 1 a 100 você precisaria de 100 linhas escrever. Com laço bastam poucas:

n ← 1

enquanto n ≤ 5 faça

  escrever n

  n ← n + 1

fim enquanto
Fluxograma de um laço enquanto: lê n e, enquanto n for maior que 0, escreve n e subtrai 1; quando a condição deixa de valer, o programa termina. início ler n n > 0 ? sim escrever n n ← n − 1 não fim
Pratica★☆☆Por começar
Explique o que é um laço e que problema ele resolve em comparação com repetir as mesmas instruções muitas vezes. Escreva em pseudocódigo um laço que escreva os números…

Explique o que é um laço e que problema ele resolve em comparação com repetir as mesmas instruções muitas vezes. Escreva em pseudocódigo um laço que escreva os números de 1 a 5.

Resolver
Pratica★★☆Por começar
Leia este programa em pseudocódigo: Faça o teste de mesa passo a passo (valor de soma e de n ao final de cada volta) e indique quantas vezes o laço se repete e que valor…

Leia este programa em pseudocódigo:

inicio

    soma ← 0

    n ← 1

    enquanto n ≤ 5 faça

        soma ← soma + n

        n ← n + 1

    fim enquanto

    escreva soma

fim

Faça o teste de mesa passo a passo (valor de soma e de n ao final de cada volta) e indique quantas vezes o laço se repete e que valor é escrito no final.

Resolver
Pratica★★☆Por começar
O fluxograma da figura representa um programa com um laço: lê um número n e, enquanto n for maior que 0, escreve seu valor e subtrai 1 dele, como mostra a figura. Se o…

O fluxograma da figura representa um programa com um laço: lê um número n e, enquanto n for maior que 0, escreve seu valor e subtrai 1 dele, como mostra a figura.

início ler n n > 0 ? sim escrever n n ← n − 1 não fim

Se o usuário digitar n = 3: (a) faça o teste de mesa indicando que valores n assume e o que é escrito em cada volta; (b) indique quantas vezes o corpo do laço é executado; (c) explique o que ocorreria se o usuário digitasse n = 0.

Resolver
Pratica★★☆Por começar
Escreva em pseudocódigo um programa que escreva a contagem regressiva de 10 a 1 e, ao terminar o laço, escreva «decolagem!». Use uma variável e um laço enquanto.

Escreva em pseudocódigo um programa que escreva a contagem regressiva de 10 a 1 e, ao terminar o laço, escreva «decolagem!». Use uma variável e um laço enquanto.

Resolver
Pratica★★☆Por começar
Este programa soma os números digitados pelo usuário até que ele digite um zero: Faça o teste de mesa para a sequência de entradas 4, 3, 0: indique o valor de n e de…

Este programa soma os números digitados pelo usuário até que ele digite um zero:

início

    soma ← 0

    ler n

    enquanto n ≠ 0 fazer

        soma ← soma + n

        ler n

    fim enquanto

    escrever soma

fim

Faça o teste de mesa para a sequência de entradas 4, 3, 0: indique o valor de n e de soma após cada leitura e o que é escrito no final. Explique também por que o primeiro ler n está fora do laço.

Resolver
Pratica★★☆Por começar
Este programa deveria escrever os números de 1 a 5, mas tem uma falha: a) Identifique o erro: o que falta no corpo do laço? b) Explique o que ocorre ao executar o…

Este programa deveria escrever os números de 1 a 5, mas tem uma falha:

início

    n ← 1

    enquanto n ≤ 5 fazer

        escrever n

    fim enquanto

fim
  1. a) Identifique o erro: o que falta no corpo do laço?
  1. b) Explique o que ocorre ao executar o programa como está escrito.
  1. c) Escreva o pseudocódigo corrigido.
Resolver

Combinar laços e condicionais

Fluxograma de um controle de acesso: com tentativas em 0, um laço verifica se restam tentativas, lê a senha e, se estiver errada, soma uma tentativa e volta a verificar; se estiver certa, libera o acesso; sem tentativas, bloqueia. início tentativas ← 0 restam tentativas? não Acesso bloqueado sim ler senha senha correta? sim Acesso liberado não tentativas ← tentativas + 1
Pratica★★☆Por começar
O fluxograma da figura representa o controle de acesso de um dispositivo: há no máximo três tentativas para digitar a senha correta, como mostra a figura. (a) Explique o…

O fluxograma da figura representa o controle de acesso de um dispositivo: há no máximo três tentativas para digitar a senha correta, como mostra a figura.

início tentativas ← 0 restam tentativas? não Acesso bloqueado sim ler senha senha correta? sim Acesso permitido não tentativas ← tentativas + 1

(a) Explique o percurso completo do programa quando o usuário erra a senha duas vezes e acerta na terceira. (b) Indique o número máximo de vezes que o programa pede a senha. (c) Justifique por que a variável tentativas é incrementada apenas em um dos ramos do segundo losango.

Resolver
Pratica★★★Por começar
Projete em pseudocódigo o algoritmo de controle de um semáforo de travessia de pedestres acionado por botão que gerencie de forma segura o tráfego de uma avenida com os…

Projete em pseudocódigo o algoritmo de controle de um semáforo de travessia de pedestres acionado por botão que gerencie de forma segura o tráfego de uma avenida com os seguintes requisitos:

  1. Em repouso, o semáforo de veículos permanece verde.

  2. Para evitar congestionamentos provocados por chamadas contínuas, deve-se garantir um tempo mínimo de verde para veículos de $30$ segundos entre duas fases de pedestres consecutivas.

  3. Decorrido esse tempo mínimo e detectado o acionamento de um pedestre, a sequência obrigatória é: amarelo para veículos durante $3$ segundos, vermelho para veículos e verde para pedestres durante $15$ segundos, e por fim verde piscante para pedestres durante $4$ segundos antes de restabelecer o verde para veículos.

(a) Escreva o pseudocódigo do sistema estruturado dentro de um laço contínuo de supervisão.

(b) Analise que falha de bloqueio o cruzamento sofreria se o sensor quebrasse em estado ativo contínuo (botão travado) e justifique como seu projeto evita que a avenida fique congestionada indefinidamente.

(c) Justifique tecnicamente por que, em sistemas de controle concorrentes em tempo real, é preferível consultar uma marca temporal do relógio (tempo_atual()) em vez de suspender a CPU por meio de esperas bloqueantes passivas (esperar()).

Resolver

Funções: dividir o programa em partes

Dividir o código em funções traz duas vantagens: reutilizar sem copiar (se o cálculo muda, você corrige em um só lugar) e entender e testar cada parte separadamente.

A função area_circulo é escrita uma vez e chamada duas vezes: com raio 1 retorna área 3,14 e com raio 2 retorna 12,57, o quádruplo. função area_circulo(raio) retornar π·raio² escrever area_circulo(1) raio = 1 ≈ 3,14 escrever area_circulo(2) raio = 2 ≈ 12,57

Comentários

Um comentário é um texto no código-fonte que o computador ignora. Ele não é dirigido à máquina, e sim a quem vai ler o código depois (inclusive você mesmo, daqui a um mês). Um bom comentário explica o porquê de uma decisão, não o que já se vê na própria linha. Compare:

  • ruim: // soma 1 a n (a linha n ← n + 1 já diz isso);

  • bom: // n começa em 1 porque a catraca não conta o zero.

Pratica★☆☆Por começar
Explique o que é uma função em um programa e duas vantagens de dividir o código em funções com nome (reutilizar sem copiar, entender e testar cada parte separadamente).

Explique o que é uma função em um programa e duas vantagens de dividir o código em funções com nome (reutilizar sem copiar, entender e testar cada parte separadamente).

Resolver
Pratica★☆☆Por começar
O que é um comentário no código-fonte? Explique a quem se dirigem os comentários (não ao computador, mas a quem lerá o código depois) e o que um bom comentário deve…

O que é um comentário no código-fonte? Explique a quem se dirigem os comentários (não ao computador, mas a quem lerá o código depois) e o que um bom comentário deve explicar (o porquê das decisões, não o que já se vê).

Resolver
Pratica★★★Por começar
Um analista de cibersegurança revisa o seguinte pseudocódigo, projetado para controlar o acesso com cartão e PIN em um terminal bancário: (a) Identifique e justifique…

Um analista de cibersegurança revisa o seguinte pseudocódigo, projetado para controlar o acesso com cartão e PIN em um terminal bancário:

inicio

    pin_secreto ← 3852

    tentativas ← 0

    bloqueada ← falso

    enquanto tentativas < 3 e não bloqueada fazer

        ler pin_digitado

        se pin_digitado = pin_secreto então

            escrever "Bem-vindo ao sistema"

        senão

            tentativas ← tentativas + 1

            escrever "PIN incorreto"

        fim se

    fim enquanto

    se tentativas = 3 então

        bloqueada ← verdadeiro

        escrever "Cartão bloqueado por segurança"

    fim se

fim

(a) Identifique e justifique uma falha grave de controle de fluxo que ocorre quando o usuário digita o PIN correto na primeira tentativa.

(b) Preveja o comportamento do programa e o valor final das variáveis tentativas e bloqueada se o usuário digitar a sequência de entradas: 1111, 3852, 9999.

(c) Reescreva o algoritmo em pseudocódigo corrigindo o fluxo de execução para garantir saída limpa imediata após o acerto e bloqueio estrito após três erros consecutivos, assegurando que em nenhuma circunstância a mensagem de boas-vindas seja exibida se o cartão ficar bloqueado.

Resolver
Pratica★★★Por começar
A comissão de garantia de qualidade de uma instituição avalia o seguinte algoritmo, destinado a determinar a nota final de um módulo técnico a partir de três notas…

A comissão de garantia de qualidade de uma instituição avalia o seguinte algoritmo, destinado a determinar a nota final de um módulo técnico a partir de três notas parciais ($N_1, N_2, N_3 \in [0{,}0; 10{,}0]$). A norma oficial estabelece: «O aluno é 'Apto' se a média ponderada ($30\,\%$ para $N_1$, $30\,\%$ para $N_2$ e $40\,\%$ para $N_3$) for igual ou superior a $5{,}0$, desde que nenhuma das notas individuais seja inferior a $4{,}0$; caso contrário, será 'Não apto'».

inicio

    ler N1, N2, N3

    media ← N1 · 0,3 + N2 · 0,3 + N3 · 0,4

    se media ≥ 5,0 ou (N1 ≥ 4,0 e N2 ≥ 4,0 e N3 ≥ 4,0) então

        escrever "Apto"

    senão

        escrever "Não apto"

    fim se

fim

(a) Explique detalhadamente por que o programa não gera nenhum erro de sintaxe e é executado normalmente, apesar de conter um erro lógico crítico na estrutura condicional.

(b) Projete dois ternos de notas de teste $(N_1, N_2, N_3)$ que evidenciem a falha do algoritmo: um que cause um falso positivo (o programa declara 'Apto' quando deveria ser 'Não apto') e outro que cause um falso negativo (ou justifique se este último é possível com a expressão atual).

(c) Reescreva o algoritmo em pseudocódigo corrigindo a condição lógica e acrescentando uma verificação prévia de que as três notas digitadas estão dentro do intervalo válido $[0{,}0; 10{,}0]$.

Resolver

Resumo

Voltando ao jogo do início: ele guarda os pontos em variáveis, decide se você passou de fase com uma condicional, repete animações com laços e reutiliza o código dos inimigos com funções.

Ver todos os exercícios deste tema