Exercícios: As estruturas de um programa
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?
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.
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.
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).
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.
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).
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ê).
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.
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.
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.
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.
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.
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.
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.
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.
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.
(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.
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
- a) Identifique o erro: o que falta no corpo do laço?
- b) Explique o que ocorre ao executar o programa como está escrito.
- c) Escreva o pseudocódigo corrigido.
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:
-
Em repouso, o semáforo de veículos permanece verde.
-
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.
-
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()).
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.
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]$.