Skip to content

Latest commit

 

History

History
1086 lines (744 loc) · 38.7 KB

File metadata and controls

1086 lines (744 loc) · 38.7 KB

Exercícios: Laços

Para cada exercício abaixo crie um repositório no GitHub contendo uma aplicação console com o nome indicado.

Revisão e Correção no YouTube (parte 1 e parte 2) e no GitHub.

Temporada 1

Enunciado Correção Extras
SequenciaCentena YouTubeGitHub
SequenciaPares YouTubeGitHub
SequenciaLimites YouTubeGitHub
Tabuada YouTubeGitHub
MediaDecimal YouTubeGitHub Prof. Neri
Patinhos YouTubeGitHub Prof. Neri
Elefante YouTubeGitHub
RetPreenchido YouTubeGitHub
RetContorno YouTubeGitHub
ASCIITable YouTubeGitHub
Fatorial YouTubeGitHub
EstimaPi YouTubeGitHub
EstimaEuler YouTubeGitHub
Fibonacci YouTubeGitHub
MDC YouTubeGitHub
SomaDigitos YouTubeGitHub

Temporada 2

Enunciado Correção Extras
UmDoisTresPim GitHub
EntradaValida GitHub
Potencia GitHub
QuatroOperacoes GitHub
EmailCorporativo GitHub
TamanhoIntervalo GitHub
EuSouGroot GitHub
AmortizacaoConstante GitHub
AmortizacaoFrancesa GitHub
AnelDeCoracao GitHub
QuenteFrio GitHub
EspertoContraSabido GitHub
TrintaESeis GitHub
Ursos GitHub
BarraDeProgresso GitHub
NPC GitHub
UrnaPlebiscito GitHub

Atenção: Caso o exercício possua um desafio, faça-o somente após concluir o exercício principal. Caso seja um exercício marcado para entrega no curso presencial, não é necessário cumprir os desafios.


Exercício SequenciaCentena

Exiba os 100 primeiros números naturais não nulos.

Ex.:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

Exercício SequenciaPares

Receba um número inteiro positivo. Exiba todos os números pares entre zero e o número digitado (inclusive).

Ex.:

Números pares entre 0 e ? 15
0 2 4 6 8 10 12 14

Exercício SequenciaLimites

Receba 2 números inteiros. Se o segundo for menor que o primeiro, exibir uma mensagem de erro. Caso contrário, exibir todos os números inteiros entre eles (inclusive).

Ex.:

Início: -3
Fim: 7
-3 -2 -1 0 1 2 3 4 5 6 7

Exercício Tabuada

Receba um número. Exiba sua tabuada.

Ex.:

Tabuada do número: 7

7 x 0 = 0
7 x 1 = 7
7 x 2 = 14
7 x 3 = 21
7 x 4 = 28
7 x 5 = 35
7 x 6 = 42
7 x 7 = 49
7 x 8 = 56
7 x 9 = 63
7 x 10 = 70

Exercício MediaDecimal

Receba a quantidade de números a serem digitados. Receba a quantidade indicada de números decimais. Exiba a soma e a média entre os valores digitados. Exiba também o maior e o menor número digitado.

Ex.:

Quantos números: 4
Número #01: 2,6
Número #02: 8,5
Número #03: 9,47
Número #04: 0,37

Soma...: 20,94
Média..: 5,24
Maior..: 9,47
Menor..: 0,37

Exercício Patinhos

Exiba a letra da música "Cinco Patinhos" (versão brasileira gravada pela Xuxa de "Five little ducks" - The Wiggles). Seu programa deve perguntar quantos patinhos o usuário deseja (pelo menos 2).

A canção começa assim:

(N) patinhos foram passear
Além das montanhas
Para brincar
A mamãe gritou: Quá, quá, quá, quá
Mas só (N-1) patinhos voltaram de lá.

Esse bloco se repete até nenhum patinho voltar. Ao final, todos os patinhos voltam:

A mamãe patinha foi procurar
Além das montanhas
Na beira do mar
A mamãe gritou: Quá, quá, quá, quá
E os (N) patinhos voltaram de lá.

Ex.:

Quantos patinhos? 3

3 patinhos foram passear
Além das montanhas
Para brincar
A mamãe gritou: Quá, quá, quá, quá
Mas só 2 patinhos voltaram de lá.

2 patinhos foram passear
Além das montanhas
Para brincar
A mamãe gritou: Quá, quá, quá, quá
Mas só 1 patinho voltou de lá.

1 patinho foi passear
Além das montanhas
Para brincar
A mamãe gritou: Quá, quá, quá, quá
Mas nenhum patinho voltou de lá.

A mamãe patinha foi procurar
Além das montanhas
Na beira do mar
A mamãe gritou: Quá, quá, quá, quá
E os 3 patinhos voltaram de lá.

Exercício Elefante

Exiba a letra da música infantil "Um Elefante Incomoda Muita Gente". Comece com 1 elefante e termine na quantidade digitada pelo usuário (um número par maior que 2).

1 elefante incomoda muita gente
2 elefantes incomodam incomodam muito mais

3 elefantes incomodam muita gente
4 elefantes incomodam incomodam incomodam incomodam muito mais

Ex.:

Quantos elefantes: 6

1 elefante incomoda muita gente
2 elefantes incomodam incomodam muito mais

3 elefantes incomodam muita gente
4 elefantes incomodam incomodam incomodam incomodam muito mais

5 elefantes incomodam muita gente
6 elefantes incomodam incomodam incomodam incomodam incomodam incomodam muito mais

Exercício RetPreenchido

Exiba um retângulo preenchido, com altura e largura digitados pelo usuário (entre 1 e 10).

Ex.:

Tamanho do retângulo:
Largura..: 10
Altura...: 4

**********
**********
**********
**********

Exercício RetContorno

Exiba o contorno de um retângulo, com altura e largura digitados pelo usuário (entre 1 e 10).

Ex.:

Tamanho do retângulo:
Largura..: 10
Altura...: 6

**********
*        *
*        *
*        *
*        *
**********

Exercício ASCIITable

Exiba os caracteres imprimíveis da tabela ASCII (com código ASCII entre 32 e 126).

Ex.:

 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

Desafio: exiba conforme o exemplo:

Tabela ASCII - Caracteres Imprimíveis

 Dec    Char    Oct     Hex     | Dec   Char    Oct     Hex     | Dec   Char    Oct     Hex     |
 ---    ----    ---     ---     | ---   ----    ---     ---     | ---   ----    ---     ---     |
 32             40      20      | 33    !       41      21      | 34    "       42      22      |
 35     #       43      23      | 36    $       44      24      | 37    %       45      25      |
 38     &       46      26      | 39    '       47      27      | 40    (       50      28      |
 41     )       51      29      | 42    *       52      2a      | 43    +       53      2b      |
 44     ,       54      2c      | 45    -       55      2d      | 46    .       56      2e      |
 47     /       57      2f      | 48    0       60      30      | 49    1       61      31      |
 50     2       62      32      | 51    3       63      33      | 52    4       64      34      |
 53     5       65      35      | 54    6       66      36      | 55    7       67      37      |
 56     8       70      38      | 57    9       71      39      | 58    :       72      3a      |
 59     ;       73      3b      | 60    <       74      3c      | 61    =       75      3d      |
 62     >       76      3e      | 63    ?       77      3f      | 64    @       100     40      |
 65     A       101     41      | 66    B       102     42      | 67    C       103     43      |
 68     D       104     44      | 69    E       105     45      | 70    F       106     46      |
 71     G       107     47      | 72    H       110     48      | 73    I       111     49      |
 74     J       112     4a      | 75    K       113     4b      | 76    L       114     4c      |
 77     M       115     4d      | 78    N       116     4e      | 79    O       117     4f      |
 80     P       120     50      | 81    Q       121     51      | 82    R       122     52      |
 83     S       123     53      | 84    T       124     54      | 85    U       125     55      |
 86     V       126     56      | 87    W       127     57      | 88    X       130     58      |
 89     Y       131     59      | 90    Z       132     5a      | 91    [       133     5b      |
 92     \       134     5c      | 93    ]       135     5d      | 94    ^       136     5e      |
 95     _       137     5f      | 96    `       140     60      | 97    a       141     61      |
 98     b       142     62      | 99    c       143     63      | 100   d       144     64      |
 101    e       145     65      | 102   f       146     66      | 103   g       147     67      |
 104    h       150     68      | 105   i       151     69      | 106   j       152     6a      |
 107    k       153     6b      | 108   l       154     6c      | 109   m       155     6d      |
 110    n       156     6e      | 111   o       157     6f      | 112   p       160     70      |
 113    q       161     71      | 114   r       162     72      | 115   s       163     73      |
 116    t       164     74      | 117   u       165     75      | 118   v       166     76      |
 119    w       167     77      | 120   x       170     78      | 121   y       171     79      |
 122    z       172     7a      | 123   {       173     7b      | 124   |       174     7c      |
 125    }       175     7d      | 126   ~       176     7e      |


Exercício Fatorial

Receba um número inteiro positivo. Exiba o seu fatorial.

O fatorial de um número é dado pelo produto entre o número e seus antecessores naturais positivos:

Além disso, há um caso especial:

Ex.:

Número: 5
5! = 120

Obs.: O método iterativo para cálculo de fatorial é altamente ineficiente. Outros algoritmos conhecidos são mais eficientes.


Exercício EstimaPi

Estime o valor de π utilizando o método de Leibniz:

Ex.:

-- Estimador do valor de pi pelo método de Leibniz --
Quantas iterações? 1000000
Estimativa: 3,141594

Desafio: Fixar o número de casas decimais de precisão da estimativa. Dica: verifique o erro entre a estimativa atual e a anterior de forma que a diferença esteja em dígitos menores que a precisão desejada.

Ex.:

-- Estimador do valor de pi pelo método de Leibniz --
Quantas casas de precisão (<=10)? 7
Estimativa após 199999997 iterações: 3,1415926486

Desafio 2: Utilizar outros métodos mais eficientes.


Exercício EstimaEuler

Estime o valor de e (número de Euler), com o número de iterações indicado pelo usuário.

Ex.:

-- Estimador de Euler --
Quantas iterações (<=33)? 33
Estimativa: 2,7182818320

Exercício Fibonacci

Receba um número inteiro N. Exiba os N primeiros números da sequência de Fibonacci.

Nesta sequência, os dois primeiros números são 0 e 1. Os próximos números são a soma dos dois números anteriores.

0
1
0 + 1 = 1
1 + 1 = 2
1 + 2 = 3
2 + 3 = 5
3 + 5 = 8
...

Ex.:

Sequência de Fibonacci
Quantos termos (>=2)? 21
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765

Exercício MDC

Calcule o máximo divisor comum entre dois números utilizando o Algoritmo de Euclides (iterativo).

Método: Dados os números a e b, efetue a divisão e pegue o resto. Se o resto for zero, a é o mdc. Senão, b é o novo a, e o resto é o novo b. Repita o processo até que o resto seja zero.

Veja um exemplo de cálculo: https://pt.wikipedia.org/wiki/Algoritmo_de_Euclides#Exemplo

Ex.:

Máximo Divisor Comum (método iterativo)
Digite o 1º número (a): 348
Digite o 2º número (b): 156
MDC(a, b) = 12

Exercício SomaDigitos

Calcule a soma dos dígitos de um número inteiro positivo informado.

Ex.:

Digite um número inteiro positivo: 5410587

Dígitos: 7 8 5 0 1 4 5

Soma = 30

Dicas:

  • O resto da divisão de um número por 10 retorna a quantidade de unidades. Ex: 483 % 10 == 3.
  • A divisão inteira de um número por 10 tem o "efeito colateral" de excluir o último dígito. Ex: 483 / 10 == 48.

Exercício UmDoisTresPim

O apresentador de auditório Silvio Santos em seus programas de domingo à tarde oferecia dinheiro para quem conseguisse citar os números inteiros entre 1 e 40 (inclusive) substituindo os múltiplos de 4 pela palavra pim.

Faça um programa que exiba a sequência correta.

Exemplo:

 1  2  3 pim
 5  6  7 pim
 9 10 11 pim
...
33 34 35 pim
37 38 39 pim

Exercício EntradaValida

Solicite que o usuário entre com um valor inteiro entre 1 e 9 (inclusive). Informe que a entrada 0 sinaliza um cancelamento. Não finalize o programa enquanto não houver uma entrada válida ou um cancelamento.

Exemplos:

--- Entrada Válida ---

Digite um número entre 1 e 9 (ou 0 para cancelar)...: -5
Digite um número entre 1 e 9 (ou 0 para cancelar)...: 12
Digite um número entre 1 e 9 (ou 0 para cancelar)...: 10
Digite um número entre 1 e 9 (ou 0 para cancelar)...: 0

Operação cancelada.

Volte sempre!
--- Entrada Válida ---

Digite um número entre 1 e 9 (ou 0 para cancelar)...: 2

Número selecionado = 2

Volte sempre!

Exercício Potencia

Receba dois números inteiros positivos, base e expoente. Calcule e exiba o valor do primeiro número elevado ao segundo número. Não utilize Math.Pow.

Lembre-se que, por definição, se o expoente for zero a potência será 1.

_Quando em uma iteração a potência se tornar zero ou negativa, foi estourado o limite do tipo inteiro e não será possível realizar a operação. _


Exercício QuatroOperacoes

Implemente uma calculadora com as quatro operações aritméticas básicas (soma, subtração, multiplicação e divisão).

O programa deverá conter um menu de opções selecionáveis pelo usuário, incluindo as quatro operações e uma opção para o usuário sair do programa.


Exercício EmailCorporativo

Peça que o usuário digite um nome completo. Sugira um e-mail corporativo para a instituição fictícia Projeto XYZ (@projeto.xyz).

Use as iniciais do nome indicado e o último sobrenome. Ignore palavras com três caracteres ou menos.

Exemplo:

--- E-mail Corporativo / Projeto XYZ ---

Digite o nome completo: Maria Aparecida dos Santos Gonzaga

Sugestão de e-mail corporativo: masgonzaga@projeto.xyz

Exercício TamanhoIntervalo

Pergunte quantos números o usuário deseja digitar. Receba a quantidade indicada de números inteiros. Exiba o tamanho do intervalo formado entre o maior número e o menor número digitados.

Exemplo:

--- Tamanho do Intervalo ---

Quantos números? 6

Digite o 1º número: 12
Digite o 2º número: 5
Digite o 3º número: 1
Digite o 4º número: 5
Digite o 5º número: -2
Digite o 6º número: 12

O tamanho do intervalo entre -2 e 12 é 14.

Exercício EuSouGroot

Groot é uma personagem árvore humanóide criada por Stan Lee, Jack Kirby e Dick Ayers em 1960 para histórias em quadrinhos da Marvel Comics.

Escreva um chatbot em que Groot responda perguntas digitadas pelo usuário.

Finalize quando o usuário disser Tchau.

Exemplo:

--- Groot Chatbot ---

Pergunta: Qual seu nome?
                          Resposta: Eu sou Groot.
Pergunta: Qual sua cor preferida?
                          Resposta: Eu sou Groot.
Pergunta: Que dia é hoje?
                          Resposta: Eu sou Groot.
Pergunta: Tchau
                          Resposta: Eu sou Groot!

Exercício AmortizacaoConstante

Simule um financiamento utilizando o sistema de amortização constante (Tabela SAC). Nessa modalidade, é pago um valor fixo a cada mês, acrescidos os juros sobre o saldo devedor anterior. Na prática, a prestação é menor a cada período.

Receba o valor total do financiamento (Principal), a quantidade de meses (Períodos) e a taxa de juros (Taxa). Exiba uma tabela com período, amortização, juros, prestação, valor pago e saldo devedor.

Valor constante em todos os períodos:

  • Amortização = Principal / Períodos

Valores variáveis por período:

  • Juros = (SaldoDevedor do período anterior) * Taxa
  • Prestação = Amortização + Juros
  • ValorPago = Soma dos valores de todas as prestações anteriores
  • SaldoDevedor = (SaldoDevedor do período anterior) - Amortização

Exemplo:

--- Tabela SAC ---

Principal (em R$)..: 1000,00
Períodos...........: 4
Taxa (em %)........: 5
Período Amortização Juros Prestação Valor Pago Saldo Devedor
0 R$ 1.000,00
1 R$ 250,00 R$ 50,00 R$ 300,00 R$ 300,00 R$ 750,00
2 R$ 250,00 R$ 37,50 R$ 287,50 R$ 587,50 R$ 500,00
3 R$ 250,00 R$ 25,00 R$ 275,00 R$ 862,50 R$ 250,00
4 R$ 250,00 R$ 12,50 R$ 262,50 R$ 1.125,00 R$ 0,00

Você pode simular valores para teste aqui.


Exercício AmortizacaoFrancesa

Simule um financiamento utilizando o sistema de amortização francês (Tabela PRICE). Nessa modalidade, é paga uma prestação fixa a cada mês. Os juros são rateados a cada período de forma que o valor da prestação se mantenha sempre igual.

Receba o valor total do financiamento (Principal), a quantidade de meses (Períodos) e a taxa de juros (Taxa). Exiba uma tabela com período, prestação, juros, amortização, valor pago e saldo devedor.

Valor constante em todos os períodos:

  • Prestação = Principal x [(1 + Taxa)Períodos x Taxa] / [(1 + Taxa)Períodos - 1]

Valores variáveis por período:

  • Juros = (SaldoDevedor do período anterior) * Taxa
  • Amortização = Prestação - Juros
  • ValorPago = Soma dos valores de todas as prestações anteriores
  • SaldoDevedor = (SaldoDevedor do período anterior) - Amortização

Exemplo:

--- Tabela PRICE ---

Principal (em R$)..: 1000,00
Períodos...........: 4
Taxa (em %)........: 5
Período Amortização Juros Prestação Valor Pago Saldo Devedor
0 R$ 1.000,00
1 R$ 232,01 R$ 50,00 R$ 282,01 R$ 282,01 R$ 767,99
2 R$ 243,61 R$ 38,40 R$ 282,01 R$ 564,02 R$ 524,38
3 R$ 255,79 R$ 26,22 R$ 282,01 R$ 846,04 R$ 268,58
4 R$ 268,58 R$ 13,43 R$ 282,01 R$ 1.128,05 R$ 0,00

Você pode simular valores para teste aqui.


Exercício AnelDeCoracao

Na DLC The Delicious Last Course (2022) do premiado game Cuphead (Studio MDHR), o item Anel de Coração concede benefícios ao seu portador na primeira, terceira e sexta ocorrências de um evento.

A ideia é que a obtenção de cada novo benefício se torne mais difícil do que a anterior, aumentando em 1 a quantidade necessária de ocorrências do evento em relação ao benefício anterior.

Benefícios recebidos + "dificuldade" = Eventos a aguardar

0 + 1 = 1
1 + 2 = 3
3 + 3 = 6

Faça um programa que exiba os 10 primeiros elementos dessa sequência.

Exemplo:

1 3 6 10 15 21 28 36 45 55

Exercício QuenteFrio

Implemente um jogo de adivinha. No jogo o computador sorteará um número entre 1 e 100 para ser o número secreto que o jogador deverá adivinhar. O jogador dará palpites até que acerte o número secreto e ganhe o jogo, ou erre 7 vezes e perca o jogo.

A cada palpite errado dê uma dica:

  • está quente caso tenha errado por 10 ou menos;
  • está pelando caso tenha errado por três ou menos;
  • está congelando caso tenha errado por 30 ou mais.
  • está frio nos demais casos.

Nos palpites congelando e frio indique se o número secreto é maior ou menor do que o palpite.


Exercício EspertoContraSabido

Em um genial episódio¹ da animação Pica-Pau (Woody Woodpecker) a personagem Raposinha (Fink Fox) divide uma certa quantidade de comida "igualmente" com o protagonista.

https://static.wikia.nocookie.net/walterlantz/images/f/f6/WW_-_Dumb_Like_A_Fox_-_03.jpg/revision/latest/scale-to-width-down/480?cb=20210504223920

1 para você. 1 para mim.
2 para você. 1, 2 para mim.
3 para você. 1, 2, 3 para mim.
...

Seguindo a lógica da Raposinha, faça um programa que receba a quantidade inicial de comida e exiba o passo-a-passo da contagem. Ao final, exiba a quantidade de itens entregues à Raposinha e ao Pica-Pau.

Exemplo:

--- Esperto Contra Sabido ---

Quantos alimentos serão distribuídos? 22

1 para você. 1 para mim.
2 para você. 1, 2 para mim.
3 para você. 1, 2, 3 para mim.
4 para você. 1, 2, 3, 4 para mim.
5 para você. 1, 2, 3, 4, 5 para mim.
6 para você. 1 para mim.

Pica-pau recebeu 6 alimento(s).
Raposinha recebeu 16 alimento(s).

¹ Walter Lantz, 1964. Pica-Pau: Esperto Contra Sabido (Dumb Like a Fox). Episódio 133. Universal. (Esquete, episódio completo).


Exercício TrintaESeis

Implemente uma versão modificada do jogo de dados 36 para um jogador contra a CPU.

Primeiro sorteia-se o jogador inicial. Os jogadores alternam suas rodadas. Em sua rodada o jogador pode rolar 1, 2 ou 3 dados. Ao rolar, o valor da soma dos dados é somado ao placar do jogador. Se ele atingir 36, vence. Se ele passar de 36, perde o jogo.

Uma possível IA para a CPU: A CPU joga 3 dados se tiver 0-20 pontos, 2 dados se tiver 21-27 pontos, e 1 dado caso 28-35 pontos.

Exemplo:

--- 36 vs. CPU ---

Sorteando o jogador inicial... CPU.

--- CPU ---
Pontos = 0
Dados: 3
1 6 4
Pontos = 11

--- HUMANO ---
Pontos = 0
Dados: 3
6 6 3
Pontos = 15

--- CPU ---
Pontos = 11
Dados: 3
5 5 2
Pontos = 23

--- HUMANO ---
Pontos = 15
Dados: 3
1 2 1
Pontos = 19

--- CPU ---
Pontos = 23
Dados: 3
6 1 3
Pontos = 33

--- HUMANO ---
Pontos = 15
Dados: 1
6
Pontos = 25

--- CPU ---
Pontos = 33
Dados: 1
4
Pontos = 37

HUMANO VENCEU!

Exercício Ursos

Faça um programa para análise de dados coletados de ursos selvagens.

Para cada urso, receba o peso (kg) e o sexo (M/F). Finalize a coleta ao receber um peso zero, negativo ou acima de 250kg.

Para cada sexo, classifique os ursos em 5 categorias de peso:

Categoria Intervalo
Muito Leve ]0, 50]
Leve ]50, 100]
Médio ]100, 150]
Pesado ]150, 200]
Muito Pesado ]200, 250]

Exiba:

  • o sexo e o peso do urso mais pesado;
  • a média de peso por sexo;
  • uma tabela de distribuição de frequência;
  • histogramas para ambos os sexos.

Exemplo de tabela de distribuição de frequências:

Categoria Ursos Ursos (%) Machos Machos (%) Fêmeas Fêmeas (%)
ML 1 10% 0 0% 1 20%
L 2 20% 1 20% 1 20%
M 3 30% 1 20% 2 40%
P 3 30% 2 40% 1 20%
MP 1 20% 1 20% 0 0%
Total 10 100% 5 50% 5 50%

Exemplo de histogramas:

----- Ursos Machos -----
   +...10...20...30...40...50...60...70...80...90..100
ML |
L  |**********
M  |**********
P  |********************
MP |**********

----- Ursos Fêmeas -----
   +...10...20...30...40...50...60...70...80...90..100
ML |**********
L  |**********
M  |********************
P  |**********
MP |

----- Ursos (todos) -----
   +...10...20...30...40...50...60...70...80...90..100
ML |*****
L  |**********
M  |***************
P  |***************
MP |**********

Exercício BarraDeProgresso

Faça um programa que exiba uma barra de progresso para uma cópia de arquivo simulada, onde a quantidade de bytes copiados e o tempo gasto serão gerados aleatoriamente.

Receba o tamanho do arquivo em bytes.

Em um loop, gere a quantidade de bytes a ser copiada na iteração (algo entre 2% e 10% do tamanho total). Aguarde um tempo aleatório (entre 100ms e dois segundos) e considere a iteração finalizada, atualizando a barra de progresso. Continue fazendo novas iterações até que 100% do arquivo seja copiado.

Ao final, exiba o tempo gasto (soma dos tempos de espera simulados) e a taxa de transmissão em bytes por segundo.

Exemplo:

--- Cópia de Arquivo ---

Tamanho (em bytes)...: 1000000

...10...20...30...40...50...60...70...80...90..100
***********

(alguns segundos depois...)

--- Cópia de Arquivo ---

Tamanho (em bytes)...: 1000000

...10...20...30...40...50...60...70...80...90..100
*********************************

(alguns segundos depois...)

--- Cópia de Arquivo ---

Tamanho (em bytes)...: 1000000

...10...20...30...40...50...60...70...80...90..100
**************************************************

Taxa = 50.000,00bps
Tempo = 20s

Exercício NPC

Implemente a inteligência artificial de um NPC (Non-player character - Personagem não-jogador) para um jogo com combate.

Neste jogo um NPC pode estar em 4 estados diferentes:

Estado Descrição
Procurando Se recupera de seus ferimentos e procura por inimigos
Atacando Entra em combate aberto contra o inimigo
Fugindo Desiste do combate e foge pela sobrevivência
Morto Não sobreviveu ao combate e deve ser retirado do jogo

O estado atual do NPC depende de 3 indicadores:

  • InimigoProximo: True se há um inimigo a vista do NPC;
  • Ferido: True se o NPC está ferido gravemente.
  • Eliminado: True se o NPC foi eliminado do jogo.

A máquina de estados abaixo indica as transições possíveis entre os estados.

Condições para transição:

De Para Condição
Procurando Procurando !Eliminado e (Ferido ou !InimigoProximo)
Procurando Atacando !Eliminado e !Ferido e InimigoProximo
Atacando Atacando !Eliminado e !Ferido e InimigoProximo
Atacando Procurando !Eliminado e !InimigoProximo
Atacando Fugindo !Eliminado e Ferido
Atacando Morto Eliminado
Fugindo Fugindo !Eliminado e Ferido
Fugindo Procurando !Eliminado e !Ferido
Fugindo Morto Eliminado

A cada transição, simule os acontecimentos:

  • Procurando:
    • 50% de chances de curar-se (Ferido = False).
    • 50% de chances de encontrar o inimigo (InimigoProximo = True).
  • Atacando:
    • 50% de chances se ferir (Ferido = True), e então 50% de chances de morrer com o ferimento (Eliminado = True).
    • 50% de chances matar o inimigo ou o inimigo fugir (InimigoProximo = False).
  • Fugindo:
    • 25% de chances de morrer com o ferimento (Eliminado = True).
    • 25% de chances de curar-se (Ferido = False).
    • 50% de chances do inimigo desistir (InimigoProximo = False).
  • Morto:
    • Finalizar a simulação.

Simule transições partindo de Procurando até que o NPC morra. Exiba a quantidade de transições pelas quais o NPC sobreviveu.

Exemplo:

--- Simulação de IA de NPC ---

-- #  1 Procurando: Ferido = N, InimigoProximo = S, Eliminado = N => Atacando
-- #  2   Atacando: Ferido = N, InimigoProximo = S, Eliminado = N => Atacando
-- #  3   Atacando: Ferido = N, InimigoProximo = S, Eliminado = N => Atacando
-- #  4   Atacando: Ferido = N, InimigoProximo = S, Eliminado = N => Atacando
-- #  5   Atacando: Ferido = S, InimigoProximo = N, Eliminado = S => Morto

O NPC sobreviveu por 4 transições.

Exercício UrnaPlebiscito

Faça uma urna eletrônica para um plebiscito organizado pelo grêmio estudantil de uma escola fictícia.

A pergunta a ser realizada é: Você é a favor da proibição do uso de boné em sala de aula?

As alternativas possíveis são:

  • S - Sim, sou a favor
  • N - Não, sou contra
  • A - Me abstenho de responder

Mantenha o registro da quantidade de votos em cada alternativa.

Garanta que um eleitor não possa ver o voto do eleitor anterior.

Antes de cada voto, o mesário deverá liberar o voto para o eleitor. Peça que o mesário indique a ação subsequente. Aceite as seguintes opções (sem mostrar as opções na tela):

  • P - Liberar votação do próximo eleitor
  • s234f$WR - Código secreto para fechar a urna (finalizar votação)

Ao finalizar, exibir a contagem de votos em cada opção, o percentual de votos válidos (abstenção não conta como válido) e o resultado final:

  • Deve haver maioria simples de votos válidos (o total de SIM + NÃO deve ser maior do que a metade do total de votos). Caso não haja, o resultado é INDETERMINADO.
  • O plebiscito então é APROVADO se possuir mais aprovações do que desaprovações. Caso contrário é REPROVADO.

Exemplo:

(limpa a tela)

--- Urna Eletrônica ---

Plebiscito: Você é a favor da proibição do uso de boné em sala de aula?

Aguarde a intervenção do mesário... _

Mesário digita P:

(limpa a tela)

--- Urna Eletrônica ---

Plebiscito: Você é a favor da proibição do uso de boné em sala de aula?

    S - Sim, sou a favor
    N - Não, sou contra
    A - Me abstenho de responder

Digite a opção desejada e pressione [ENTER]: S

Você votou "Sim, sou a favor"

Pressione uma tecla para finalizar sua votação... _

(limpa a tela)

--- Urna Eletrônica ---

Aguarde a intervenção do mesário... _

Mesário digita s234f$WR:

(limpa a tela)

--- Urna Eletrônica ---

Plebiscito: Você é a favor da proibição do uso de boné em sala de aula?

Finalizado com o total de 1 voto(s).

Contagem de votos:
S - Sim, sou a favor         - 1 (100,0%)
N - Não, sou contra          - 0 (0,0%)
A - Me abstenho de responder - 0 (0,0%)

Votos válidos: 1 (100,0%)

Resultado do plebiscito: APROVADO

🏁 Orientações para entrega (alunos do curso presencial)

Confira no Teams o link da tarefa equivalente. Lá você postará o link dos repositórios que você criou, um para cada exercício.

Repositório de exemplo: Exercício EtecAB (Saída em console)

Exemplo de link a ser postado: https://github.com/ermogenes/EtecAB