Exercícios: Programação por blocos
Explica por palavras tuas o que fazem as três estruturas básicas de um programa — sequência, ciclo e condição — e dá um exemplo do dia a dia de cada uma que não esteja…
Explica por palavras tuas o que fazem as três estruturas básicas de um programa — sequência, ciclo e condição — e dá um exemplo do dia a dia de cada uma que não esteja relacionado com computadores.
Um programa tem estes blocos soltos: «dizer Adeus!», «ao clicar na bandeira», «esperar um momento», «dizer Olá!». Ordena-os na sequência correta e descreve o que…
Um programa tem estes blocos soltos: «dizer Adeus!», «ao clicar na bandeira», «esperar um momento», «dizer Olá!». Ordena-os na sequência correta e descreve o que acontecerá exatamente ao executar o programa.
O programa da figura, formado por blocos encaixados, deveria fazer com que um ator percorra o quadrado tracejado e avise ao terminar, mas dentro do ciclo falta um bloco.…
O programa da figura, formado por blocos encaixados, deveria fazer com que um ator percorra o quadrado tracejado e avise ao terminar, mas dentro do ciclo falta um bloco.
Indica que bloco falta dentro do ciclo para que o ator complete o percurso do quadrado e explica o que faz cada parte do programa.
Os blocos de eventos determinam quando começa a funcionar um conjunto de blocos. Explica o que faz iniciar cada um destes três eventos: «ao clicar na bandeira», «ao…
Os blocos de eventos determinam quando começa a funcionar um conjunto de blocos. Explica o que faz iniciar cada um destes três eventos: «ao clicar na bandeira», «ao premir a tecla espaço» e «ao clicar na personagem», e descreve o que aconteceria se um projeto tivesse dois conjuntos diferentes com dois eventos distintos.
Estes blocos de aparência estão soltos: «mudar para o traje de pirata», «dizer Olá, chamo-me Marco! durante 2 segundos», «ao clicar na bandeira», «esperar 1 segundo».…
Estes blocos de aparência estão soltos: «mudar para o traje de pirata», «dizer Olá, chamo-me Marco! durante 2 segundos», «ao clicar na bandeira», «esperar 1 segundo». Ordena-os para apresentar um ator que primeiro saúda e depois se disfarça, e descreve o que o utilizador verá.
Num jogo, um gato corre pelo palco e um cão persegue-o. Explica onde colocarias o bloco «tocar o som miau» para que toque exatamente quando o cão alcança o gato, que…
Num jogo, um gato corre pelo palco e um cão persegue-o. Explica onde colocarias o bloco «tocar o som miau» para que toque exatamente quando o cão alcança o gato, que bloco de verificação o acompanha e o que aconteceria se o som estivesse fora dessa verificação.
O palco de um programa por blocos funciona como um referencial cartesiano: o «x» indica a posição horizontal e o «y» a vertical, e o centro é o ponto $(0, 0)$. Explica…
O palco de um programa por blocos funciona como um referencial cartesiano: o «x» indica a posição horizontal e o «y» a vertical, e o centro é o ponto $(0, 0)$. Explica onde aparecerá o ator com o bloco «vai para x: 0, y: 0» e para onde se moverá se o «x» aumentar ou se o «y» diminuir.
Um programa tem esta sucessão de blocos: «ao clicar na bandeira», «dizer 3», «esperar um momento», «dizer 2», «esperar um momento», «dizer 1», «dizer Já!». Descreve com…
Um programa tem esta sucessão de blocos: «ao clicar na bandeira», «dizer 3», «esperar um momento», «dizer 2», «esperar um momento», «dizer 1», «dizer Já!». Descreve com detalhe o que o utilizador verá e ouvirá desde que clica na bandeira até ao final, e explica que utilidade têm as esperas.
Um programa pretende contar de um a dez com estes blocos: «repetir 10 vezes: dizer o número; somar 1 ao número». Ao ser executado, a contagem não começa em um e, cada…
Um programa pretende contar de um a dez com estes blocos: «repetir 10 vezes: dizer o número; somar 1 ao número». Ao ser executado, a contagem não começa em um e, cada vez que é executado de novo, começa num número diferente. Explica que bloco falta e onde deveria ser colocado, e em que posição da sequência se deve definir o valor inicial do número.
Descreve por palavras tuas os blocos de um programa que pergunta a idade do utilizador e responde «podes passar» se tiver 14 anos ou mais, e «lamento» caso contrário.…
Descreve por palavras tuas os blocos de um programa que pergunta a idade do utilizador e responde «podes passar» se tiver 14 anos ou mais, e «lamento» caso contrário. Indica que tipo de bloco de decisão usarias e que verificação faria exatamente.
A figura mostra dois programas que movem um ator com dois tipos de ciclos diferentes. Explica que diferença existe entre os dois ciclos, apresenta uma situação em que…
A figura mostra dois programas que movem um ator com dois tipos de ciclos diferentes.
Explica que diferença existe entre os dois ciclos, apresenta uma situação em que seja conveniente usar cada um e fundamenta o que pode acontecer com o ciclo da direita se a meta não existisse.
A figura mostra um programa com uma variável chamada «pontos» que controla um ciclo. Faz o rastreio do programa: indica quantas vezes o ciclo é executado e quantos…
A figura mostra um programa com uma variável chamada «pontos» que controla um ciclo.
Faz o rastreio do programa: indica quantas vezes o ciclo é executado e quantos passos dá o ator no total. Depois, justifica o que aconteceria se o bloco «definir pontos para 0» estivesse dentro do ciclo em vez de estar antes.
Um café do bairro oferece um café apenas aos membros e apenas antes das 10 horas da manhã. Descreve os blocos de decisão encadeados do programa que faz essa verificação…
Um café do bairro oferece um café apenas aos membros e apenas antes das 10 horas da manhã. Descreve os blocos de decisão encadeados do programa que faz essa verificação e explica a diferença entre colocar dois «se» um dentro do outro e colocar dois «se» seguidos, usando este exemplo.
Os blocos de operadores «e», «ou» e «não» combinam verificações. Explica o que faz cada um e descreve as condições completas destes dois sistemas: uma porta que se abre…
Os blocos de operadores «e», «ou» e «não» combinam verificações. Explica o que faz cada um e descreve as condições completas destes dois sistemas: uma porta que se abre se o cartão for válido e a impressão digital coincidir, e um alarme que toca se a janela se abrir ou se o vidro se partir.
Para animar um ator usa-se «repetir 4 vezes: próximo traje; esperar meio segundo». Explica o que se obtém com esse ciclo e calcula quanto tempo dura a animação completa…
Para animar um ator usa-se «repetir 4 vezes: próximo traje; esperar meio segundo». Explica o que se obtém com esse ciclo e calcula quanto tempo dura a animação completa se cada espera for de $0,5\ \text{s}$ e a mudança de traje for instantânea.
Num projeto existem dois atores: um botão e um mágico. Ao clicar no botão, o mágico deve aparecer. Explica para que servem os blocos «difundir mensagem» e «ao receber…
Num projeto existem dois atores: um botão e um mágico. Ao clicar no botão, o mágico deve aparecer. Explica para que servem os blocos «difundir mensagem» e «ao receber mensagem», descreve as sequências de blocos que cada ator teria e fundamenta por que razão não basta colocar os blocos do mágico dentro do botão.
Um colega programou o ciclo de um semáforo para carros (verde: 10 s; amarelo: 3 s; vermelho: 12 s) e um semáforo de peões sincronizado. Para isso, criou dois programas…
Um colega programou o ciclo de um semáforo para carros (verde: 10 s; amarelo: 3 s; vermelho: 12 s) e um semáforo de peões sincronizado. Para isso, criou dois programas independentes com «quando se clicar na bandeira verde» e ciclos «para sempre» com blocos de espera em cada objeto. Após um minuto de simulação, os carros e os peões têm luz verde ao mesmo tempo.
- a) Justifica por que razão ocorre esta desincronização perigosa ao usar ciclos com tempos de espera independentes.
- b) Desenha uma solução com blocos que garanta que nunca coincidam em verde, explicando se utilizas variáveis de estado ou mensagens («enviar mensagem e esperar») e detalhando a ordem exata das mudanças de luz.
Num videojogo, foi incluído este bloco dentro do ciclo «para sempre» do personagem principal: «se <a tocar em Moeda?> então [altera Pontos por 1]» «se <a tocar em…
Num videojogo, foi incluído este bloco dentro do ciclo «para sempre» do personagem principal:
Ao testá-lo, detetam-se duas falhas graves: ao tocar numa única moeda o contador sobe de repente entre 15 e 20 pontos, e ao roçar num inimigo as 3 vidas perdem-se de forma instantânea.
- a) Justifica tecnicamente por que razão isto acontece tendo em conta a velocidade de execução dos ciclos por segundo.
- b) Desenha a alteração necessária nos blocos da moeda e do personagem para corrigir ambos os comportamentos sem pausar o movimento geral do jogo (considera esconder/eliminar objetos e períodos de invulnerabilidade).
Um aluno programa o movimento de uma bola com este código: «para sempre: move 10 passos se estiver a bater na borda, ressalta» Ao executar o programa com uma bola cujo…
Um aluno programa o movimento de uma bola com este código:
«para sempre:
move 10 passos
se estiver a bater na borda, ressalta»
Ao executar o programa com uma bola cujo traje não está perfeitamente centrado, observa que em certos ângulos a bola fica a tremer e presa na borda do ecrã sem conseguir sair.
- a) Explica passo a passo por que razão ocorre este bloqueio consoante o modo como o Scratch calcula a colisão com a borda e a posição do centro do traje.
- b) O problema resolver-se-ia simplesmente invertendo a ordem dos dois blocos dentro do ciclo? Justifica a tua resposta prevendo o que aconteceria em cada iteração.
- c) Desenha uma alteração nos blocos que garanta que a bola se descole da borda e continue a sua trajetória com normalidade.
Num jogo de contrarrelógio quer-se registar o recorde do menor tempo gasto a completar um circuito. Um aluno escreve este código ao chegar à meta: «se <Tempo_Partida <…
Num jogo de contrarrelógio quer-se registar o recorde do menor tempo gasto a completar um circuito. Um aluno escreve este código ao chegar à meta:
«se <Tempo_Partida < Recorde> então [altera Recorde para Tempo_Partida]»
No entanto, ao jogar pela primeira vez após criar a variável Recorde (que o Scratch inicializa por defeito em 0), o recorde nunca se atualiza, independentemente da velocidade do carro.
- a) Justifica por que razão falha esta verificação e explica a diferença de inicialização entre procurar um recorde de pontuação máxima e um de tempo mínimo.
- b) Desenha a estrutura de blocos que resolva este problema para a primeira partida e as seguintes sem ter de escrever manualmente um valor inicial fictício antes de clicar na bandeira verde.
Num jogo espacial, o objeto 'Asteroide' tem programadas estas três pilhas: Pilha 1: «ao clicar na bandeira verde: para sempre [espera 2 s; cria um clone de mim mesmo]»…
Num jogo espacial, o objeto 'Asteroide' tem programadas estas três pilhas:
Pilha 1: «ao clicar na bandeira verde: para sempre [espera 2 s; cria um clone de mim mesmo]»
Pilha 2: «ao receber Alerta_Meteoritos: cria um clone de mim mesmo»
Pilha 3: «quando começar como um clone: mostra-te; para sempre [altera y por -5; se <posição y < -170> então [esconde-te]]»
Depois de jogares alguns minutos, o jogo sofre abrandamentos graves, deixam de ser criados asteroides e, cada vez que chega a mensagem Alerta_Meteoritos, o número de clones multiplica-se de forma descontrolada.
- a) Justifica por que razão o bloco «esconde-te» faz com que o jogo deixe de responder e atinja o limite de clones do Scratch.
- b) Explica a falha da Pilha 2: por que razão os próprios clones existentes duplicam a quantidade de asteroides ao receber uma mensagem?
- c) Desenha a solução correta com blocos para a criação, movimento e eliminação definitiva dos clones.
Um jogo de plataformas tem este script na personagem: «ao clicar na bandeira verde: mudar Vidas para 3 se <Vidas = 0> então [parar tudo] para sempre: se <a tocar em…
Um jogo de plataformas tem este script na personagem:
«ao clicar na bandeira verde:
mudar Vidas para 3
se então [parar tudo]
para sempre:
se <a tocar em Armadilha?> então:
adicionar a Vidas -2
esperar 0,5 s»
O jogo apresenta dois erros: a partida nunca termina mesmo que o jogador toque na armadilha repetidamente, e se um jogador cair na armadilha tendo 1 vida, o contador passa a -1 vidas sem parar o jogo.
- a) Justifica por que razão a verificação de fim de partida, tal como está colocada, não para o jogo em momento algum.
- b) Explica por que razão utilizar a condição estrita é um erro de design quando o dano subtrai mais de 1 vida.
- c) Desenha a solução reposicionando e modificando os blocos condicionais para garantir que a partida termine exatamente quando as vidas se esgotarem ou ficarem abaixo de zero.
Para medir a duração de uma partida, cria-se este cronómetro: «ao pressionar a bandeira verde: mudar Segundos para 0 para sempre: espera 1 s adiciona a Segundos 1» Ao…
Para medir a duração de uma partida, cria-se este cronómetro:
«ao pressionar a bandeira verde:
mudar Segundos para 0
para sempre:
espera 1 s
adiciona a Segundos 1»
Ao comparar este contador com um relógio real após 10 minutos de jogo intenso, o cronómetro do Scratch marca apenas 9 minutos e 35 segundos (uma discrepância de 25 segundos).
- a) Justifica por que razão um ciclo com o bloco «espera 1 s» acumula atraso quando o jogo processa muitas personagens e movimentos simultâneos.
- b) Desenha um cronómetro alternativo em blocos, utilizando o sensor «cronómetro» e variáveis, que não dependa da taxa de atualização do jogo e mostre o tempo decorrido em segundos com uma casa decimal (por exemplo: 14,2 s).
- c) Justifica por que razão a tua proposta mantém a precisão exata mesmo que haja abrandamentos no ecrã.
Num jogo de Pong para dois jogadores (raquetes esquerda e direita), detetam-se estes erros de interação: 1. Ao ultrapassar a raquete, a bola ressalta no rebordo traseiro…
Num jogo de Pong para dois jogadores (raquetes esquerda e direita), detetam-se estes erros de interação:
-
Ao ultrapassar a raquete, a bola ressalta no rebordo traseiro e soma vários pontos consecutivos antes de o ponto ser reiniciado.
-
Enquanto a bola regressa ao centro após um golo, os jogadores podem continuar a bater-lhe somando pontos falsos.
-
Se a bola raspar na parte traseira da raquete quando esta sobe rapidamente, a bola sai disparada para dentro da própria baliza.
- a) Desenha a estrutura de blocos da bola para gerir o ponto: deteção do golo, paragem momentânea do jogo e comunicação com os marcadores através de mensagens.
- b) Desenha a condição de ressalto da raquete para que apenas devolva a bola para o campo adversário se o impacto ocorrer na sua face frontal, ou seja, quando a bola se dirigir para a raquete.
- c) Explica como devem reagir as raquetes e a bola à mensagem de 'novo ponto' para retomar o jogo de forma justa e sincronizada.