Home › Fóruns › Programação Básica › M03A11 – Exercícios 045
- Este tópico contém 21 respostas, 11 vozes e foi atualizado pela última vez 1 ano, 4 meses atrás por
Tutora Jessica.
-
AutorPosts
-
-
21 de abril de 2021 às 20:15 #65748
Antonio Carlos Belemel da Cruz
ParticipanteBoa noite pessoal
alguém que está mais avançado poderia revisar o código abaixo, estou com dúvida se atingi o objetivo proposto no exercício 045 do M03A11. Desde já agradeço!programa { inclua biblioteca Util --> u funcao inicio() { //cabeçalho do jogo escreva("{ EXERCÍCIO 045 - Jogo de adivinhar }\n") escreva("Vou pensar em um número entre 1 e 10") escreva("\nVocê tem 3 CHANCES para acertar") escreva("\n-------------------------------------\n") //campo variaveis inteiro c=1, resp, num, primValor=0 faca{ num=sorteia(1,10) se(c == 1){ primValor=num } escreva("\nChance de número ", c, "/3. Em que número eu pensei? ") leia(resp) se(primValor > resp){ escreva("Ainda não foi dessa vez... Mas vou te dar outra chance. Chute um valor MAIOR") } se(primValor < resp){ escreva("Ainda não foi dessa vez... Mas vou te dar outra chance. Chute um valor MENOR") } se(resp == primValor){ escreva("ACERTOU em ", c, " tentativas") pare } c++ }enquanto(c <= 3) } }
-
26 de abril de 2021 às 10:27 #65946
Tutora Mayla
MestreAntonio, o seu código está certo, porém com um pequeno ajuste ele ficará melhor ainda.
Em vez de colocarnum=sorteia(1,10)
dentro do laço e verificar se é a primeira iteração, coloque-o antes dofaca
, assim não há a necessidade da variávelprimValor
podendo então ser utilizada apenas a variávelnum
.Tente fazer este ajuste, caso consiga seu código estará certíssimo! Parabéns pela resolução, continue se dedicando e será cada vez um programador melhor!
Espero ter ajudado, quaisquer outras dúvidas estamos a disposição. -
26 de abril de 2021 às 15:46 #65969
Antonio Carlos Belemel da Cruz
ParticipanteOLá Mayla, Obrigado pelo feedback!
Corrigi o código. Vou postar abaixo caso alguém tenha alguma dúvida e possa revisar.programa { inclua biblioteca Util --> u funcao inicio() { //cabeçalho do jogo escreva("{ EXERCÍCIO 045 - Jogo de adivinhar }\n") escreva("Vou pensar em um número entre 1 e 10") escreva("\nVocê tem 3 CHANCES para acertar") escreva("\n-------------------------------------\n") //campo variaveis inteiro c=1, resp, num=sorteia(1,10) faca{ se(c == 1){ num=num } escreva("\nChance de número ", c, "/3. Em que número eu pensei? ") leia(resp) se(num > resp){ escreva("Ainda não foi dessa vez... Mas vou te dar outra chance. Chute um valor MAIOR") } se(num < resp){ escreva("Ainda não foi dessa vez... Mas vou te dar outra chance. Chute um valor MENOR") } se(resp == num){ escreva("ACERTOU em ", c, " tentativas") pare } c++ }enquanto(c <= 3) } }
-
27 de abril de 2021 às 19:06 #66025
Tutora Mayla
MestreAntonio, não é necessário colocar
se(c == 1){ num=num }
pois estaria sendo atribuída a variável
num
a ela mesma sem nenhuma alteração. Como a atribuição anum
já está sendo feita fora do laço, não é necessário atribuir nada a ela dentro do laço.
Basta tirar esse blocose
que seu código estará perfeito. Parabéns!!Espero ter ajudado, quaisquer outras dúvidas estamos a disposição.
-
-
6 de maio de 2021 às 14:42 #66420
Antonio Carlos Belemel da Cruz
ParticipanteOlá Mayla.
Corrigi e testei, viajei kkk, obrigado!! -
18 de junho de 2021 às 02:00 #69659
Antonio Cesar Ferreira Neves
ParticipanteObs:Resolvi esse exercício a alguns dias atrás e não sei se era para abrir um outro post ou colocar aqui.minha resposta está funcionando.
Resolução do exercício 45: fiz quase a mesma coisa que o professor ,porém coloquei uma saída para caso o usuário digite um valor maior que dez,se tiverem alguma dica para tirar esse tanto de operador de conjunção para deixar o código mais otimizado to aceitando.
peço desculpas por qualquer erro de português nesse comentário to com sono./* .Estudonauta .Programação Básica .Modúlo 003 Exercício 045 - Jogo de Adivinhar .Objetivo: O Programa deve sortear um número para o úsuario que tera três tentativas para acertar indicando se o número de entrada é maior, igual ou menor o valor apresentado caso o cliente não acerte nas tres tentativas o programa deve apresentar uma mensagem .Autor da Resolução: Antonio Cesar */ //Biblíotecas inclua biblioteca Util funcao inicio() { //Declaração de variáveis inteiro sorteado = 0, numero, chances = 1 //Cabeçalho do Exercicío escreva("===============================================\n\tEXERCÍCIO 045 - Jogo de Adivinhar" + "\n===============================================\n") //Sorteando um número sorteado = Util.sorteia(1,10) //Instruções escreva("Vou pensar em um número entre 1 e dez.\nVocê tem três chances de adivinhar." ) escreva("\n---------------------------------------------------------------------------\n" ) faca { //Entrada de dados escreva(chances, "ª chance de 3. Em que número eu pensei ? ") leia(numero) //Dica caso número seja maior se(numero > sorteado e chances != 3 e numero <= 10) { escreva("Você não acertou e ainda tem ", 3 - chances, " Chute(s).\n" + "Tente um valor menor.\n\n") } senao { //Acertou se(numero == sorteado) { escreva("Parabéns você acertou em", chances, " chance(s).") pare } //Dica caso número seja menor senao se(chances != 3 e numero >= 0) { escreva("Você não acertou e ainda tem ", 3 - chances, " Chute(s).\n" + "Tente um valor maior. \n\n") } } //Instrução se(numero > 10 ou numero < 0) escreva("Você desperdiçou sua chance o número sorteado está entre 1 e 10.\n\n") //Tempo de espera em milisegundo Util.aguarde(1000) //Diminuindo as chances chances ++ }enquanto(chances <= 3) //Mensagem Inspiradora se(numero != sorteado) escreva("Mais sorte na proxima vez\n") //Termino escreva("\n================= Fim do Programa =================") } }
-
21 de junho de 2021 às 17:43 #69850
Tutora Mayla
MestreAntonio, parabéns por ter conseguido realizar o exercício e por incrementá-lo!
Quanto a quantidade de operações lógicas, em alguns casos realmente haverão muitas em um único blocose
, vai depender muito da situação. Nesse caso uma forma de melhorar o seu código seria fazendo blocosse
aninhados, não necessariamente pela quantidade de condições lógicas, mas apenas pois há uma forma de organizar o código que facilitaria mais a sua leitura e entendimento.
Tente reescrever essa parte do código abaixo de forma que consiga ser aproveitado de melhor forma a possibilidade do uso do blocosenao
. E realize sempre o teste de mesa com valores distintos para ver se o programa está realmente fazendo o caminho desejado.se(numero > sorteado e chances != 3 e numero <= 10) { escreva("Você não acertou e ainda tem ", 3 - chances, " Chute(s).\n" + "Tente um valor menor.\n\n") } senao { //Acertou se(numero == sorteado) { escreva("Parabéns você acertou em", chances, " chance(s).") pare } //Dica caso número seja menor senao se(chances != 3 e numero >= 0) { escreva("Você não acertou e ainda tem ", 3 - chances, " Chute(s).\n" + "Tente um valor maior. \n\n") } } //Instrução se(numero > 10 ou numero < 0) escreva("Você desperdiçou sua chance o número sorteado está entre 1 e 10.\n\n")
Um exemplo de como melhor organizar aqui é que se houvesse um bloco
se
apenas com o testese(numero <= 10 e numero >= 1)
poderia ser feito para ele umsenao
correspondente ao seguinte teste que está sendo feito atualmente de forma isoladase(numero > 10 ou numero < 0)
.
Ressalto que o seu código está certo e está bom, minha dica é uma forma de continuar evoluindo e melhorar a organização do seu código.
Espero ter ajudado, quaisquer dúvidas estamos a disposição. -
22 de junho de 2021 às 01:44 #69881
Antonio Cesar Ferreira Neves
ParticipanteMuito obrigado!!!
-
-
3 de outubro de 2021 às 21:18 #76782
João Victor
ParticipanteMinha solução do exercício ficou um pouco diferente que a solução do professor, pode ser feito desta forma?
programa { inclua biblioteca Util --> u funcao inicio() { inteiro num, contador = 1, sort escreva("Vou pensar em um número entre 1 e 10 ") escreva("\nVocê tem 3 CHANCES para tentar advinhar ") escreva("\n-----------------------------------------") faca { sort = u.sorteia(1,10) escreva("\nChance de no." + contador + "/3. Em que número eu pensei? ") leia(num) se (contador == 3) { pare } se (num == sort) { escreva("\nACERTOU em 1 tentativa!") } senao se (num < sort) { escreva("\nAinda não foi dessa vez... Mas vou te dar outra chance. Chute um valor MAIOR") } senao se (num > sort) { escreva("\nAinda não foi dessa vez... Mas vou te dar outra chance. Chute um valor MENOR") } contador++ }enquanto (contador < 4) escreva("\nAinda não foi dessa vez... Suas chances acabaram! ") } }
-
5 de outubro de 2021 às 21:01 #76945
Tutora Mayla
MestreJoão, mesclei o seu tópico com um já existente sobre o assunto, antes de criar um tópico sempre procure se já existe um tópico sobre o assunto.
Vamos fazer um passo a passo sobre o seu código:- Ao fazer
sort = u.sorteia(1,10)
está sendo sorteado um novo número a cada iteração do laço, sendo que o objetivo do exercício é que seja gerado um número uma única vez ao início do programa. Tente levar esta linha para fora do laço para resolver este problema. - Após a leitura do chute do usuário, é feita uma verificação se o
contador == 3
. Esta verificação faz com que o programa saia do laço na terceira tentativa, porém antes de realizar o teste se o chute do usuário está correto. Pense em uma maneira de modificar o código de forma a garantir que todos os 3 chutes do usuário sejam verificados antes de sair do laço. - Quando o usuário acerta o chute, é feito um
escreva("\nACERTOU em 1 tentativa!")
, mas seguindo a ideia do exercício de ser gerado apenas um número no início do programa e o usuário ter 3 tentativas para adivinhar o número, este escreva deveria apresentar ao usuário o valor decontador
, e não apenas o valor1
Reforço que seu código está bom, tente apenas acertar estes pontos que mencionei acima e veja se está de acordo com a proposta do exercício. Tente usar o painel de inspecionar do Portugol Studio para auxiliar nos testes do seu código.
Espero ter ajudado, quaisquer dúvidas basta entrar em contato
- Ao fazer
-
15 de novembro de 2021 às 09:43 #80615
Arthur Martins Alves
ParticipanteOlá! Meu código também saiu bem diferente do professor Guanabara, mas acredito que esteja correto:
programa { funcao inicio() { inteiro c = 1, n, sorteado, maior, menor escreva("{ EXERCÍCIO 045 - Jogo de Adivinhar }") escreva("\nVou pensar em um número entre 1 e 10") escreva("\nVocê tem 3 CHANCES para tentar adivinhar") escreva("\n-----------------------------------------\n") sorteado = 5//sorteia(1,10) faca { escreva("Chance de no. ", c, "/3. Em que número eu pensei? ") leia(n) se (c == 1) { maior = n menor = n } se (n == sorteado) { escreva("ACERTOU em ", c, " tentativas!") pare } senao { c++ escreva("Ainda nao foi dessa vez... ") se (n < sorteado e c <= 2) { escreva("Mas vou te dar outra chance. Chute um valor MAIOR\n") } se (n > sorteado e c <= 2 ) { escreva("Mas vou te dar outra chance. Chute um valor MENOR\n") } se (n != sorteado e c==3) { escreva("Suas chances acabaram!\n") } } } enquanto (c < 4) escreva("\n\n") } }
-
16 de novembro de 2021 às 19:55 #80690
Tutora Mayla
MestreArthur, parabéns! Seu código está correto pois tem a saída desejada, só fique atento as variáveis
maior
emenor
pois elas não estão sendo utilizadas após a sua atribuição.Quaisquer outras dúvidas estamos a disposição. Bons estudos!
-
-
29 de janeiro de 2022 às 18:17 #85217
Fabiano Silva
ParticipanteOla, meu codigo esta diferente do codigo da aula, mas o proprio codigo gerado pelo Android Studio ja ficou diferente, talvez pela diferença de tempo em que estou fazendo o curso. Mas não consigo saber qual é o problema:
package com.example.olamundo20
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.TextViewclass MainActivity : AppCompatActivity() {
TextView msg;
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
msg = (TextView) findViewById(R.id.Mensagem)
}fun clicou(view: View) {
msg.setText(“Olá, Mundo!”);
}
}Android Studio: Modulo 00,
M00A09
10:45min-
2 de fevereiro de 2022 às 22:05 #85415
IcaroFilho
ModeradorBoa noite Fabiano, acredito que tenha postado no forum errado.
Faça o questionamento dentro do Fórum referente ao android estudo. [ LINK ]
-
-
8 de julho de 2022 às 19:52 #97073
Manoel Garcia De Noronha Neto
ParticipanteComo eu fiz!!!
programa
{inclua biblioteca Util –> u
funcao inicio()
{
escreva(“{ EXERCÍCIO 045 – Jogo De Adivinhar }”)
escreva(“\nVou pensar em um número entre 1 e 10”)
escreva(“\nVocê tem 3 CHANCES para tentar adivinhar”)
escreva(“\n——————————————“)
inteiro c=0,s,n
s = u.sorteia(1,10)
faca{
c++
escreva(“\nChance de no. “,c,”/3. Em que número eu pensei? “)
leia(n)
se (n == s){
escreva(“ACERTOU em “,c,” tentativas!”)
pare
}
se ( n < s e c != 3){
escreva(“Ainda não foi dessa vez… Mas vou te dar outra chance. Chute um valor Maior”)
}senao{
se(n > s e c != 3) escreva(“Ainda não foi dessa vez… Mas vou te dar outra chance. Chute um valor Menor”)
se(n != s e c ==3) escreva(“Ainda não foi dessa vez… Suas chances acabaram!”)
}}enquanto(c != 3)
escreva(“\n========== FIM DO JOGO ==========”)
}
} -
11 de julho de 2022 às 10:15 #97269
Tutora Jessica
ModeradorOlá Manoel, peço para que quando for nos enviar sua dúvida ou compartilhar seu código conosco, se atente em ver se já tem esse tópico criado, para mantermos o fórum organizado. 🖖🖖
Reposicionei seu código para o tópico do exercício 45.
Você tem alguma dúvida quanto ao seu código? -
8 de novembro de 2022 às 09:22 #104537
Neander Fontes
ParticipanteOlá Pessoal!! Meu Código está com Saídas corretas, porém diferente do pensamento do professor.
Gostaria de saber se realmente está funcionando, Obrigado!programa { /* Módulo03 Aula10 + 11 - 'faca enquanto' Faça Enquanto * Portugol Exercício 045 * Autor: Neander * Data: 08/11/2022 * Local: Portugal-Braga * Empresa: Estudonauta */ inclua biblioteca Texto --> txt inclua biblioteca Util --> u funcao inicio() { //Exercício 045: - Jogo de Adivinhar escreva("{ EXERCÍCIO 45 - Jogo de Adivinhar }") //Obs.: //Declarações de Variáveis: inteiro contador, numSorteado inteiro numDigitado //Entrada de Dados: escreva("\n\n=======================================") escreva("\n\t Jogo de Adivinhar") escreva("\n=======================================") //Declarações Fixas: contador = 1 //Declarações do Escopo Principal: escreva("\nVou pensar em um número entre 1 e 10.") escreva("\nVocê tem 3 CHANCES para tentar adivinhar qual é o nº e.....") u.aguarde(700) escreva("\n\t\t### Valendo !!! ####") numSorteado = sorteia(1, 10) escreva("\n Número sorteado para Base: " + numSorteado) escreva("\n" + contador + "ª Chance de 3x. Em Qual Número Estou Pensando? ") leia(numDigitado) faca { se (numSorteado == numDigitado e contador == 1) { escreva("\n### Parabéns!!! ### Acertou na 1ª Tentativa!! ###") pare } senao { se (numSorteado == numDigitado e contador == 2) { escreva("\n### Parabéns!!! ### Acertou na 2ª Tentativa!! ###") pare } senao se (numSorteado < numDigitado e contador >= 1 e contador <= 2) { escreva("\nAinda não foi dessa vez...") escreva("\nDessa vez tente um número MENOR") escreva("\n" + (contador + 1) + "ª Chance de 3x. Em Qual Número Estou Pensando? ") leia(numDigitado) } senao se (numSorteado > numDigitado e contador >= 1 e contador <= 2) { escreva("\nAinda não foi dessa vez...") escreva("\nDessa vez tente um número MAIOR") escreva("\n" + (contador + 1) + "ª Chance de 3x. Em Qual Número Estou Pensando? ") leia(numDigitado) } senao { se (numSorteado == numDigitado e contador == 3) { escreva("\n### Parabéns!!! ### Acertou na 3ª Tentativa!! ###\n") pare } senao se (numSorteado != numDigitado e contador == 3) { escreva("\nInfelizmente não foi dessa vez!! Tente Novamente!!") } } } contador++ } enquanto (contador != 4) //Declarações Finais: }
-
8 de novembro de 2022 às 10:59 #104541
Tutora Jessica
ModeradorOla Neander, sim esta funcionando, mas o seu código esta mostrando qual número sorteou e o número não deve aparecer para o usuário..
Fora isso esta funcionando direitinho. Parabéns 🖖 -
28 de novembro de 2023 às 10:53 #127682
Gustavo de Azevedo Correa
ParticipanteFiz dessa forma…
Alguém pode testar para mim?
Gratoprograma
{
inclua biblioteca Util–>ufuncao inicio()
{inteiro c=1, vs=0, vi=1, vf=10, n, s=1, c1=1
escreva(“EXERCÍCIO 045 – JOGO DE ADIVINHAR \n”)
escreva(“==============================================\n”)
escreva(“Pense em um número entre 1 e 10\n”)
escreva(“Você tem apenas 3 tentativas\n”)
escreva(“————————————————\n”)
enquanto(c==1){
vs = u.sorteia(vi, vf)
c++
}
faca{
escreva(“Chance “+c1+” de 3. Pense e digite um número: “)
leia(n)
se (n==vs){
escreva(“PARABÉNS!!! VOCÊ ACERTOU NA “+c1+”º tentativa”)
pare
}senao se (n < vs e c1<=2)
escreva(“\nAinda não…Chute um número MAIOR\n”)
senao se (n > vs e c1<=2)
escreva (“\nTente mais uma…Chute um valor MENOR, agora vai!\n”)
senao se (n != vs e c1<=3)
escreva(“\nSorry…Não foi dessa vez! Quem sabe a próxima.”)
c1++
}enquanto (c1<=3)
escreva(“\n————————————————\n”)}
} -
28 de novembro de 2023 às 14:04 #127688
Tutora Jessica
ModeradorOla Gustavo, no seu código há algum erro ou duvida?
-
28 de novembro de 2023 às 16:57 #127703
Gustavo de Azevedo Correa
ParticipanteOlá, Jéssica
Não, aqui esta rodando como solicitado. Gostaria de saber se pode ser melhorado alguma coisa no código.
grato. -
29 de novembro de 2023 às 10:06 #127729
Tutora Jessica
ModeradorOla Gustavo, seu código está funcionando, isso que é o mais importante, dê sempre uma olhada nas resoluções no fórum , cada um faz do seu próprio jeito.
Parabéns 👏🏼
Bons estudos 🖖🏼
-
-
-
AutorPosts
- Você deve fazer login para responder a este tópico.