Home Fóruns Programação Básica Modulo 2 – Exercicio 25

Visualizando 19 respostas da discussão
  • Autor
    Posts
    • #60737
      Tiago Camargo
      Participante

      Salve Padawans!
      Estou terminando o modulo 2 de programação Basica, e assisti a resolução do Mestre Jedi Guanabara.
      Eu cheguei no resultado de uma maneira que ao meu ver foi mais simples tanto de fazer quanto de entender posteriormente kkk.

      Poderiam validar?

      Obrigado

      ——————————-Minha Resposta————————————–

      programa
      {

      funcao inicio()
      {
      inteiro a, b, c
      escreva(“Digite um valor: “)
      leia(a)
      escreva(“Digite outro valor: “)
      leia(b)
      escreva(“Digite mais um valor: “)
      leia(c)
      se (a > b e a > c e b > c) {
      escreva(” MAIOR: ” + a + “\n INTERMEDIÁRIO: ” + b + “\n MENOR: ” + c)
      } senao se (a > b e a > c e c > b) {
      escreva(” MAIOR: ” + a + “\n INTERMEDIÁRIO: ” + c + “\n MENOR: ” + b)
      } senao se (b > a e b > c e a > c) {
      escreva(” MAIOR: ” + b + “\n INTERMEDIÁRIO: ” + a + “\n MENOR: ” + c)
      } senao se (b > a e b > c e c > a) {
      escreva(” MAIOR: ” + b + “\n INTERMEDIÁRIO: ” + c + “\n MENOR: ” + a)
      } senao se (c > a e c > b e a > b) {
      escreva(” MAIOR: ” + c + “\n INTERMEDIÁRIO: ” + a + “\n MENOR: ” + b)
      } senao {
      escreva(” MAIOR: ” + c + “\n INTERMEDIÁRIO: ” + b + “\n MENOR: ” + a)
      }
      }
      }

    • #60829

      Terminei o exercício e ele funcionou, só que na aula de resolução desse exercício percebi que a solução do Professor é bem mais simples que a minha, o que eu quero saber é se do jeito que eu fiz não é uma forma apropriada de fazer ou se também é uma solução válida, porque mesmo funcionando talvez seja um modo de programar não muito recomendado. Segue meu código:

      programa
      {
      	
      	funcao inicio()
      	{
      		inteiro n1, n2, n3
      
      		escreva("Digite um número: ")
      		leia(n1)
      		escreva("Digite outro número: ")
      		leia(n2)
      		escreva("Digite outro número: ")
      		leia(n3)
      
      		se (n1 > n2 e n1> n3 e n2 > n3){
      			escreva("Maior: " + n1 + "\nIntermediário: " + n2 + "\nMenor: " + n3)
      		} senao se (n1 > n2 e n1 > n3 e n3 > n2){
      			escreva("Maior: " + n1 + "\nIntermediário: " + n3 + "\nMenor: " + n2)
      		} senao se (n2 > n1 e n2 > n3 e n1 > n3){
      			escreva("Maior: " + n2 + "\nIntermediário: " + n1 + "\nMenor: " + n3)
      		} senao se (n2 > n1 e n2 > n3 e n3 > n1){
      			escreva("Maior: " + n2 + "\nIntermediário: " + n3 + "\nMenor: " + n1)
      		} senao se (n3 > n2 e n3 > n1 e n1 > n2){
      			escreva("Maior: " + n3 + "\nIntermediário: " + n1 + "\nMenor: " + n2)
      		} senao se (n3 > n2 e n3 > n1 e n2 > n1){
      			escreva("Maior: " + n3 + "\nIntermediário: " + n2 + "\nMenor: " + n1)
      		} senao se (n1 == n2 ou n1==n3 ou n2 == n3) {
      			escreva("Por favor, digite números diferentes uns dos outros")
      		}
      	
      	}
      
      }

      No final percebi que caso os números fossem iguais o programa ia direto para o final, então resolvi por uma última condição: caso algum numero fosse igual a outro o programa ia pedir para o usuário digitar números diferentes.

    • #60831
      Tutora Mayla
      Mestre

      Tiago, o seu código está correto pois tem como saída o que foi pedido. Pense porém em fazer uso de condições aninhadas (um bloco se dentro do outro) no seu programa, elas ajudam bastante a não repetir código de forma desnecessária dentre outras coisas.

      Por exemplo:
      Em vez de fazer
      se(a>b e b>c e a>c)
      pode ser feito

      
      se(a>b)
      	se(b>c)
      		se(a>c)
      		senao
      	senao
      senao
      

      Pense em como essa estrutura pode te ajudar a não repetir testes lógicos de forma desnecessária. Imagine que em vez de 3 números fosse necessário ordenar 5 números, já seriam 120 possibilidades ficando cada vez mais difícil testar uma a uma com tantos testes lógicos numa condição só, condições aninhadas ajudam um pouco nesse problema.

      Ressalto que o seu código está certo, estou apenas apresentando uma forma de melhora-lo e evoluir com seus conhecimentos.
      Se houver quaisquer dúvidas estamos a disposição para ajuda-lo.

    • #60832

      Percebi que foi publicado no curso errado, era para ser em “programação básica”, não consigo excluir.

      • #61066
        Tutora Mayla
        Mestre

        Antony, acertei o seu tópico no local certo, dê uma olhada nas postagens já existentes sobre esse assunto, há uma situação muito parecida veja se a minha resposta anterior responde a sua dúvida. Caso a dúvida ainda persista, volte a entrar em contato que ajudaremos.
        Antes de fazer uma postagem utilize a ferramenta de pesquisa para ver se já existe um tópico sobre, as vezes algum aluno pode ter tido uma dúvida parecida com a sua anteriormente.
        Espero ter ajudado, quaisquer outras dúvidas basta entrar em contato.

    • #62897

      Boa tarde, tudo bem? estou com dúvidas no exercício 025 do módulo 02 aquele sobre colocar em ordem MAIOR, INTERMEDIÁRIO e MENOR. poderia me ajudar me dando uma noção de como escrever esse código? desde já agradeço.

      • #63109
        Tutora Mayla
        Mestre

        Lucas, transferi sua dúvida para este tópico onde já havia uma discussão sobre o exercício 25. Antes de postar sempre procure se já existe um tópico sobre o assunto, se não houver crie um tópico novo.
        Dê uma olhada no que já falei aqui sobre a questão e me retorne dizendo se ainda está com dúvidas de como a questão pode ser feita.
        Como os alunos abaixo já haviam mencionado, o código é um pouquinho grande, mas com calma e dedicação é possível entender tudo que está acontecendo. Se houver qualquer dúvida basta entrar em contato que estaremos aqui pra ajudar.
        Bons estudos!

    • #62898
      IcaroFilho
      Moderador

      Vou tentar te guiar. Este exercício não é tão complexo.. mas é “trabalhoso” por ser grande.
      vc terá que testar as possibilidades uma a uma para fazer o preenchimento.
      ou seja, vai encher de “se” o seu código, um dentro do outro

      
      se (n1 > n2){
          se (n3 > n1) {
             maior = n3 (pois n3 é maior que n1, e n1 é maior que n2)
             inter = n1 (pois n1 é maior que n2, e n1 é menor que n3)
             menor = n2 (pois n3 é maior que n1, e n2 é menor que n1)
      ...
      

      para te ajudar a visualizar, recomendo que faça um esboço das possibilidades no papel depois escreva em código/algoritmo para não se perder.

    • #62904

      Boa tarde, Lucas

      É como o Icaro comentou, este é um exercício grande, mas basta ter calma e paciência que você com certeza irá conseguir resolvê-lo.

      	se (n1 > n2) {
      	se (n3 > n1) {
      	maior = n3
      	meio = n1
      	menor = n2
      	} senao se (n3 > n2) {
      	maior = n1
      	meio = n3
      	menor = n2
      	} senao {
      ...
    • #67222
      //DECLARAÇÃO DE VARIÁVEIS
      		real n1, n2, n3, r // r (retorno)
      		
      		//ENTRADA DE DADOS
      		escreva("{ EXERCICÍO - 025 três valores em ordem }\nDigite um valor: ")
      		leia(n1)
      		escreva("Digite outro valor:")
      		leia(n2)
      		escreva("Digite mais um valor: ")
      		leia (n3)
      		escreva("------------\n")
      		se (n1	>	n2)
      			{
      			r	=  n2
      			n2	=  n1 
      			n1 	=  r //original valores n2 n1
      			
      			se (n1 > n3)
      				{
      					r	=	n3
      				 	n3	=	n2
      				 	n2	=	n1
      				 	n1	= 	r // original valores n3 n2 n1
      				}
      			senao se(n2 > n3)
      				{
      				  	r	= 	n3
      				  	n3	= 	n2
      				  	n2	=	r // original valore n2 n3 n1
      				} 
      				 
      			}	  	
      		senao se(n2	>	n1)
      			{
      				se(n2	>	n3)
      				{
      					r	=	n3
      					n3	=	n2 
      					n2	=	r// original valores n1 n3 n2 
      					se(n1	>	n2)
      					{
      						r	=	n2
      						n2	=	n1
      						n1	= 	r //original valore n3 n1 n2
      					}
      				}
      			}
      		escreva("MENOR:\t\t"+ n1 +	"\nINTERMEDIÁRIO:\t" + n2 + "\nMaior:\t\t" + n3)				   
      	}	
      • #67306
        Tutora Mayla
        Mestre

        Antonio, movi o seu tópico para um tópico já existente sobre o assunto. Sempre antes de criar um novo tópico é bom verificar se já existe um tópico sobre o assunto no fórum.
        Sobre o seu código, ele está bom e correto pois tem a saída desejada, mas verifique neste tópico e nesse Duvida enorme sobre ex. 25 algumas respostas minha sobre essa questão que podem lhe ajudar a construir um código melhor.
        Um comentário sobre a sua variável r, para facilitar o entendimento e não ter que explicar que r se refere a retorno, a variável r poderia se chamar retorno mesmo, ou auxiliar. Não há problemas em criar variáveis com nomes que são palavras, basta respeitar as regras de criação de nome de variável.

        Parabéns pela dedicação e pela resolução do exercício, espero ter ajudado com meus comentários e quaisquer outras dúvidas basta entrar em contato.

      • #67318

        Muito obrigado pelo felldeback vou seguir esse seu conselho

    • #74085
      Lucas Rodrigues
      Participante

      Está correto? Vi que ficou bem diferente do professor Guanabara.

      programa
      { /*
      Ex025: Programa que leia três números inteiros e
      mostre-os em ordem crescente (do menor para o maior).
      */
      funcao inicio()
      {
      escreva(“\n––––––––––––––––––––––––––––––––––––––––––––––––––\n”)
      escreva(“\t TRÊS VALORES EM ORDEM”)
      escreva(“\n––––––––––––––––––––––––––––––––––––––––––––––––––\n”)

      inteiro n1, n2, n3

      escreva(“Primeiro valor: “)
      leia(n1)
      escreva(“Segundo valor: “)
      leia(n2)
      escreva(“Terceiro valor: “)
      leia(n3)

      escreva(“––––––––––––––––––––––––––––––––––––––––––––––––––\n”)
      inteiro menor = 0, meio = 0, maior = 0

      se (n1 > n2 e n1 > n3) maior = n1 // maior
      senao se (n1 < n2 e n1 < n3) menor = n1 // menor
      senao meio = n1 // intermediário

      se (n2 > n1 e n2 > n3) maior = n2 // maior
      senao se (n2 < n1 e n2 < n3) menor = n2 // menor
      senao meio = n2 // intermediário

      se (n3 > n1 e n3 > n2) maior = n3 // maior
      senao se (n3 < n1 e n3 < n2) menor = n3 // menor
      senao meio = n3 // intermediário

      escreva(“MENOR: “, menor, “\nINTERMEDIÁRIO: “, meio, “\nMAIOR: “, maior)

      escreva(“\n\n\n”)
      }
      }

      • #74135
        Tutora Mayla
        Mestre

        Lucas, movi o seu tópico para um tópico já existente sobre o assunto. Sempre antes de criar um novo tópico é bom verificar se já existe um tópico sobre o assunto no fórum.
        Sobre o seu código, ele está bom e correto pois tem a saída desejada, mas verifique neste tópico e nesse Duvida enorme sobre ex. 25 algumas respostas minha sobre essa questão que podem lhe ajudar a construir um código melhor.

        Parabéns pela dedicação e pela resolução do exercício, espero ter ajudado quaisquer outras dúvidas basta entrar em contato.

    • #74774

      Olá!
      Gostaria de compartilhar minha solução para o exercício 025.
      Tive que atribuir valores 0 às variáveis ma, me e int, pois havia dado erro de compilação.
      Quanto aos números iguais, inclui algumas condições no final.

      programa
      {
      /* Exercício 025 – Três valores em ordem
      *
      */

      funcao inicio()
      {
      //Declaração de variáveis
      inteiro n1, n2, n3
      inteiro ma=0, int=0, me=0

      //Entrada de Dados
      escreva (“{ EXERCÍCIO 025 – Três valores em ordem }”)
      escreva (“\nDigite o primeiro valor: “)
      leia (n1)
      escreva (“Digite o segundo valor: “)
      leia (n2)
      escreva (“Digite o terceiro valor: “)
      leia (n3)
      escreva (“==========================================”)

      //Saída de Dados
      se ( n1 > n2 e n1 > n3 e n2 > n3 ) {
      ma = n1
      int = n2
      me = n3
      } senao se ( n1 > n2 e n1 > n3 e n2 < n3 ) {
      ma = n1
      int = n3
      me = n2
      } senao se ( n1 < n2 e n1 > n3 ) {
      ma = n2
      int = n1
      me = n3
      } senao se ( n1 < n2 e n1 < n3 e n2 > n3 ) {
      ma = n2
      int = n3
      me = n1
      } senao se ( n3 > n1 e n1 > n2 ) {
      ma = n3
      int = n1
      me = n2
      } senao se ( n3 > n1 e n3 > n2 e n1 < n2 ) {
      ma = n3
      int = n2
      me = n1
      } senao se ( n1 == n2 e n1 == n3) {
      ma = n1
      int = n1
      me = n1
      } senao se ( n1 == n2 e n1 > n3) {
      ma = n1
      int = n1
      me = n3
      } senao se ( n1 == n2 e n1 < n3) {
      ma = n3
      int = n1
      me = n1
      } senao se ( n1 == n3 e n1 > n2) {
      ma = n1
      int = n1
      me = n2
      } senao se ( n1 == n3 e n1 < n2) {
      ma = n2
      int = n1
      me = n1
      } senao se ( n2 == n3 e n2 > n1) {
      ma = n2
      int = n2
      me = n1
      } senao se ( n2 == n3 e n2 < n1) {
      ma = n1
      int = n2
      me = n2
      }
      escreva (“\nMAIOR: ” + ma)
      escreva (“\nINTERMEDIÁRIO: ” + int)
      escreva (“\nMENOR: ” + me)
      escreva (“\n\n”)
      }
      }

      • #74967
        Tutora Mayla
        Mestre

        Jose, parabéns por ter concluído o exercício! O seu código está bom e correto pois tem a saída desejada, mas verifique neste tópico e nesse Duvida enorme sobre ex. 25 algumas respostas minhas e do Icaro sobre essa questão que podem lhe ajudar a continuar evoluindo e construir um código melhor.
        Quaisquer dúvidas basta entrar em contato que lhe ajudaremos.

    • #75418
      Samuel Pinto da Silva
      Participante

      Olá. Gostaria de compartilhar uma solução diferente para o exercício 025.

      Antes de expô-la, vou explicar meu raciocínio.
      Há exatamente seis possibilidades para ordenar três números diferentes quaisquer entre si. Segue abaixo as ordenações (Os números serão chamados de n1, n2 e n3).

      Primeira possibilidade: n1, n2, n3
      Segunda possibilidade: n1, n3, n2
      Terceira possibilidade: n2, n1, n3
      Quarta possibilidade: n2, n3, n1
      Quinta possibilidade: n3, n1, n2
      Sexta possibilidade: n3, n2, n1

      Tendo isso em mente, basta transcrever essas seis possibilidades na linguagem do Portugol. Segue o código abaixo.

      programa
      {// { EXERCÍCIO 025 – Três Valores em Ordem }

      funcao inicio()
      {
      inteiro n1, n2, n3

      escreva(“=====================================”)
      escreva(“\n\tTRÊS VALORES EM ORDEM\n”)
      escreva(“=====================================”)
      escreva(“\nDigite um número inteiro: “)
      leia(n1)
      escreva(“Digite outro número inteiro (diferente do primeiro): “)
      leia(n2)
      escreva(“Digite um último número inteiro (diferente dos últimos dois): “)
      leia(n3)
      escreva(“————————————–“)

      se ((n1 > n2) e (n2 > n3)) {//Primeira possibilidade
      escreva(“\nMAIOR: “, n1)
      escreva(“\nINTERMEDIÁRIO: “, n2)
      escreva(“\nMENOR: “, n3)
      } senao se ((n1 > n3) e (n3 > n2)) {//Segunda possibilidade
      escreva(“\nMAIOR: “, n1)
      escreva(“\nINTERMEDIÁRIO: “, n3)
      escreva(“\nMENOR: “, n2)
      } senao se ((n2 > n1) e (n1 > n3)) {//Terceira possibilidade
      escreva(“\nMAIOR: “, n2)
      escreva(“\nINTERMEDIÁRIO: “, n1)
      escreva(“\nMENOR: “, n3)
      } senao se ((n2 > n3) e (n3 > n1)) {//Quarta possibilidade
      escreva(“\nMAIOR: “, n2)
      escreva(“\nINTERMEDIÁRIO: “, n3)
      escreva(“\nMENOR: “, n1)
      } senao se ((n3 > n1) e (n1 > n2)) {//Quinta possibilidade
      escreva(“\nMAIOR: “, n3)
      escreva(“\nINTERMEDIÁRIO: “, n1)
      escreva(“\nMENOR: “, n2)
      } senao se ((n3 > n2) e (n2 > n1)) {Sexta possibilidade
      escreva(“\nMAIOR: “, n3)
      escreva(“\nINTERMEDIÁRIO: “, n2)
      escreva(“\nMENOR: “, n1)
      } senao {//Sétima e última possibilidade
      escreva(“Dois ou mais dos números digitados são iguais, e portanto não posso realizar diferenciações entre número maior, intermediário e menor.”)
      } escreva(“\n\n”)
      }
      }

      Como podem ver, há uma sétima possibilidade no código, isso porque esse é o caso de dois ou mais números serem iguais, isto é, possuírem o mesmo valor. Nesse caso, não há como ordená-los em maior, intermediário e menor.

      • #75619
        Tutora Mayla
        Mestre

        Samuel, movi o seu tópico para um tópico já existente sobre o assunto. Sempre antes de criar um novo tópico é bom verificar se já existe um tópico sobre o assunto no fórum.
        Parabéns por ter concluído o exercício! O seu código está bom e correto pois tem a saída desejada, mas verifique neste tópico e nesse Duvida enorme sobre ex. 25 algumas respostas minhas e do Icaro sobre essa questão que podem lhe ajudar a continuar evoluindo e construir um código melhor.
        Quaisquer dúvidas basta entrar em contato que lhe ajudaremos.

    • #76189

      Oi estou com um problema no neste exercício. Basicamente o Portugol não quer me obedecer! Em duas situações ele simplesmente não escreve quem é o maior número e isto que eu nem cheguei ainda nos intermediários! To achando ou é vírus no pc, ou o portugol não está atualizado ou sei lá o quê?

      Enfim aqui vai o código por inteiro:

      programa
      {
      	
      	funcao inicio()
      	{
      
      	 real num,num2,num3
      		escreva("Digite um número: ")
      		leia(num)
      		escreva("Digite um outro número: ")
      		leia(num2)
      		escreva("Digite mais um outro número: ")
      		leia(num3)
      		se(num<num2 e num<num3){
      		     escreva("\nO MENOR NÚMERO É O: ",num)
      		         }senao se(num2<num e num2<num3){
      			        escreva("\nO MENOR NÚMERO É O: ",num2)
      		                 }senao{
      			           escreva("\nO MENOR NÚMERO É O: ",num3)
           	se(num>num2 e num>num3){
      		          escreva("\nO MAIOR NÚMERO É O: ",num)
      		              }senao se(num2>num e num2>num3){
      			            escreva("\nO MAIOR NÚMERO É O: ",num2)
      		                   }senao{
      			                    escreva("\nO MAIOR NÚMERO É O: ",num3)
      
      		                   }
      	}
      	}
      	}

      A parte que mais me irrita é que eu mandei o Portugol escrever, mas ele não obedece!:

      se(num>num2 e num>num3){
      		          escreva("\nO MAIOR NÚMERO É O: ",num)
      		              }senao se(num2>num e num2>num3){
      			            escreva("\nO MAIOR NÚMERO É O: ",num2)
      		                   }senao{
      			                    escreva("\nO MAIOR NÚMERO É O: ",num3)

      O engraçado é que o erro só acontece quando eu escolho os valores numa ordem exata que são: 1,2,3 ou na situação b que são 3,1,2 respectivamente. Quando eu boto os números na ordem: 3,2,1 ou 2,3,1 ele me obedece! Cada uma!

    • #76195

      Oi! Tá tenso a coisa o Portugol continua a não me obedecer. Quando eu boto a ordem dos números assim: 3,2,1 ele apenas me dá o valor maior. Quando eu boto assim: 1,2,3 ele me dá certinho o número maior, intermediário e maior. Quando boto 2,3,1 ele me dá apenas o maior e isto acontece também para a ordem 3,1,2.

      Aqui está o código atualizado:

      programa
      {
      	
      	funcao inicio()
      	{
      
      	 inteiro num,num2,num3
      		escreva("Digite um número: ")
      		leia(num)
      		escreva("Digite um outro número: ")
      		leia(num2)
      		escreva("Digite mais um outro número: ")
      		leia(num3)
      
                 escreva("---------------------------------------------------\n")
                 escreva("                 TRÊS VALORES EM ORDEM          \n")
                 escreva("---------------------------------------------------\n")
      
      		
      		
           	se(num>num2 e num>num3){
      		          escreva("\nO MAIOR NÚMERO É O: ",num)
      		              }senao se(num2>num e num2>num3){
      			            escreva("\nO MAIOR NÚMERO É O: ",num2)
      		                   }senao{
      			                    escreva("\nO MAIOR NÚMERO É O: ",num3)
      
                se((num>num2) e (num<num3) ou (num2<num3 e num>num3)){
                         escreva("\nO valor intermediário é o: ",num)
      	                  }senao se(num<num2 e num2<num3){
      	                  	escreva("\nO valor intermediário é o: ",num2)
      	                  }senao se(num>num2 e num>num3 e num2>num3)
      	                  	escreva("\nO valor intermediário é o: ",num3)
      
      	      se(num<num2 e num<num3){
      		     escreva("\nO MENOR NÚMERO É O: ",num)
      		         }senao se(num2<num e num2<num3){
      			        escreva("\nO MENOR NÚMERO É O: ",num2)
      		                 }senao{
      			           escreva("\nO MENOR NÚMERO É O: ",num3)            	
      	                
      		                   }
      	}
      	}
      	}
    • #76197

      Gente estou pensando em desinstalar o portugol e instalar de novo. Poxa! Algo de errado não está certo! heeheheheh Escrevi um novo código dentro da ideia do exercício 25 e novamente ele não está escrevendo tudo o que eu quero. Vocês poderiam executar o meu programa para ver se o erro é só comigo?

      programa
      {
      	
      	funcao inicio()
      	{
                 escreva("---------------------------------------------------\n")
                 escreva("                 TRÊS VALORES EM ORDEM          \n")
                 escreva("---------------------------------------------------\n")
      	 
      	 inteiro num,num2,num3
      		escreva("Digite um número: ")
      		leia(num)
      		escreva("Digite um outro número: ")
      		leia(num2)
      		escreva("Digite mais um outro número: ")
      		leia(num3)
      
                se(num>num2){
                   	escreva(num,"maior",num2)
                  
                 }senao se (num>num3){
                 	escreva(num,"maior",num3)
      		       
      		 } senao se (num2>num3){
      		 	escreva(num2,"maior",num3)
      
      		 } senao se (num3>num2){
      		 	escreva(num3,"maior",num2)
      			     
                 		
                 	}
                 }
      
                 
      	
      }
    • #76198

      Achei que a culpa era do senao se então deletei tudo e botei apenas se. Mas deu na mesma!

      programa
      {
      	
      	funcao inicio()
      	{
                 escreva("---------------------------------------------------\n")
                 escreva("                 TRÊS VALORES EM ORDEM          \n")
                 escreva("---------------------------------------------------\n")
      	 
      	 inteiro num,num2,num3
      		escreva("Digite um número: ")
      		leia(num)
      		escreva("Digite um outro número: ")
      		leia(num2)
      		escreva("Digite mais um outro número: ")
      		leia(num3)
      
                se(num>num2)
                   	escreva(num," maior ",num2)
                  
                se (num>num3)
                 	escreva(num," maior ",num3)
      		       
      		se (num2>num3)
      		 	escreva(num2," maior ",num3)
      
      		se (num3>num2)
      		 	escreva(num3," maior ",num2)
      			     
      	}
      }
    • #76199

      Acho que entendi esse exercício. Só tenho uma dúvida porque se usa o “se” duas vezes? Porque não se usou o senao se? O professor explicou, mas eu não entendi.

      se(num>num2){
                  	se(num3>num){
                  		maior = num3
                  		meio = num
                  		menor = num2
                  	}senao se (num3>num2) {
                  		maior = num
                  		meio = num3
                  		menor = num2
                  	}senao {
                  		maior = num
                  		meio = num2
                  		menor = num3
                  	}
      • #76231
        Michel Souza
        Participante

        Olá Luiz Samuel, que bom que vc entendeu o exercício, é praticando e errando que vamos evoluindo.
        Esses exercícios de maior valor, menor valor realmente são meio chatinhos mesmo.
        A questão da estrutura condicional “SE ENTAO SENAO” é que existe uma certa hierarquia por assim dizer. imagina como se fosse uma caixa dentro de outra caixa.
        Na questão abaixo o primeiro “SE” aparece como a “mãe de todos”, por assim dizer.
        `se(num>num2){
        se(num3>num){;
        maior = num3
        meio = num
        menor = num2
        }senao se (num3>num2) {
        maior = num
        meio = num3
        menor = num2
        }senao {
        maior = num
        meio = num2
        menor = num3
        }`
        Note que os demais “SEs”, estão mais pra dentro, como se fossem filhos. Perceba também que os “SENAO SE” estão um pouco mais pra dentro em relação ao segundo “SE” da estrutura, indicando que são filhos(as) desse segundo SE ” se(num3>num) ” e consequentemente netos(as) do primeiro “SE”.
        Resumindo: O primeiro “SE” da estrutura “se (num>num2)” seria o pai ou a mãe tanto faz, o segundo “SE” da estrutura “se(num3>num)” seria seu filho(a) e os demais “SENAO SE” seriam seus netos.
        A estrutura condicional SE parte de 2 premissas verdadeiro ou falso. Por exemplo:

        se (fizer sol) entao
           vou para a praia (premissa verdadeira)
        senao 
           vou ficar em casa, assistindo NetFlix. (premissa falsa)
        fim se
        • Caso a primeira condição acontecer (fizer sol) o comando é executado, ou seja, eu vou pra praia. E vida que segue, a outra condição a premissa falsa, simplesmente morre, esquece que ela existe. Até porque não dá pra ir pra praia e ficar em casa vendo filme ao mesmo tempo.
        • Caso a primeira condição for falsa, ou seja, tá chovendo, nevando, caindo canivete ai sim vai ser executado a segunda estrutura o senao, no caso vou ficar em casa maratonando algum seriado.

        Quando o programa possui muitos “SE” um abaixo do outro o programa vai verificar todos eles, se tiver 50 “SE” todos eles serão analisados independente da resposta. Mas caso tenha algum SENAO e a condição anterior for verdadeira, o programa para o laço sempre respeitando a hierarquia, sai da estrutura e continua seu trabalho. Tem que ter certo cuidado ao utilizar SE(), SENAO{}, SENAO SE(), SENAO {SE()}.
        Espero ter conseguido sanar um pouco sua dúvida.

      • #76383
        Tutora Mayla
        Mestre

        Luiz, a resposta do Michel está bastante completa, espero que tenha conseguido sanar sua dúvida.
        Caso a dúvida persista volte a entrar em contato que lhe ajudaremos.

    • #76617
      Arthur Martins Alves
      Participante

      Olá a todos!

      Minha resolução do exercício 025, do módulo 02, ficou bem diferente do professor Guanabara. Achei a resolução dele muito mais elegante, mas gostaria de confirmar se a minha resolução está correta em relação a lógica. Agradeço desde já!

      RESOLUÇÃO DO PROFESSOR GUANABARA:

      funcao inicio()
      	{
      		escreva("---------------------------------------\n")
      		escreva("         TRÊS VALORES EM ORDEM         \n")
      		escreva("---------------------------------------\n")
      
      		inteiro a, b, c
      		inteiro maior, menor, meio
      
      		escreva("Primeiro valor: ")
      		leia(a)
      		escreva("Segundo valor: ")
      		leia(b)
      		escreva("Terceriro valor: ")
      		leia(c)
      
      		se (a > b) {
      			se (c > a) {
      				maior = c
      				meio = a
      				menor = b
      			} senao se (c > b) {
      				maior = a
      				meio = c
      				menor = b 
      			} senao {
      				maior = a
      				meio = b
      				menor = c
      			}
      		} senao se (c > b) {
      			maior = c
      			meio = b
      			menor = a
      		} senao se (c > a) {
      			maior = b
      			meio = c
      			menor = a
      		} senao {
      			maior = b
      			meio = a
      			menor = c
      		}
      			
      		escreva("---------------------------------------")
      		escreva("\nMENOR: \t\t" + menor)
      		escreva("\nINTERMEDIÁRIO: \t" + meio)
      		escreva("\nMAIOR: \t\t" + maior)
      		escreva("\n\n")	
      	}
      

      MINHA RESOLUÇÃO:

      funcao inicio()
      	{
      		inteiro n1, n2, n3
      		
      		escreva("---------------------------------------")
      		escreva("\n         TRÊS VALORES EM ORDEM          ")
      		escreva("\n---------------------------------------")
      		escreva("\nPrimeiro valor: ")
      		leia(n1)
      		escreva("Segundo valor: ")
      		leia(n2)
      		escreva("Terceriro valor: ")
      		leia(n3)
      		escreva("---------------------------------------")
      		inteiro menor = 0, inter = 0, maior = 0
      		se (n1 < n2 e n1 < n3 e n2 < n3) {
      			menor = n1
      			inter = n2
      			maior = n3
      		} senao se (n1 < n2 e n1 < n3 e n2 > n3) {
      			menor = n1
      			inter = n3
      			maior = n2
      		} senao se (n2 < n1 e n2 < n3 e n1 < n3) {
      			menor = n2
      			inter = n1
      			maior = n3
      		} senao se (n2 < n1 e n2 < n3 e n1 > n3) {
      			menor = n2
      			inter = n3
      			maior = n1
      		} senao se (n3 < n1 e n3 < n2 e n1 < n2) {
      			menor = n3
      			inter = n1
      			maior = n2
      		} senao se (n3 < n1 e n3 < n2 e n1 > n2) {
      			menor = n3
      			inter = n2
      			maior = n1
      		}
      			
      		
      		escreva("\nMENOR: \t\t" + menor)
      		escreva("\nINTERMEDIÁRIO: \t" + inter)
      		escreva("\nMAIOR: \t\t" + maior)
      		escreva("\n\n")
      		
      	}
      
      • #76678
        Tutora Mayla
        Mestre

        Arthur, movi o seu tópico para um tópico já existente sobre o assunto. Sempre antes de criar um novo tópico é bom verificar se já existe um tópico sobre o assunto no fórum.
        Parabéns por ter concluído o exercício! O seu código está bom e correto pois tem a saída desejada, mas verifique neste tópico e nesse Duvida enorme sobre ex. 25 algumas respostas minhas e do Icaro sobre essa questão que podem lhe ajudar a continuar evoluindo e construir um código melhor.
        Quaisquer dúvidas basta entrar em contato que lhe ajudaremos.

    • #80589
      Vinicius Basseto Mira
      Participante

      Alguem fez algo parecido?

      programa
      {
      	/*
      		EXERCICIO 25 - TRÊS VALORES EM ORDEM	
      	*/
      	
      	funcao inicio()
      	{
      		inteiro n1, n2, n3
      		
      		escreva("Digite um valor: ")
      		leia(n1)
      		escreva("Digite outro valor: ")
      		leia(n2)
      		escreva("Digite outro valor: ")
      		leia(n3)
      
      		se (n1 > n2 e n2 > n3){
      			escreva("\nMAIOR: " + n1)
      			escreva("\nINTERMEDIÁRIO: " + n2)
      			escreva("\nMAIOR: " + n3)
      		} senao se (n1 > n3 e n3> n2){
      			escreva("\nMAIOR: " + n1)
      			escreva("\nINTERMEDIÁRIO: " + n3)
      			escreva("\nMAIOR: " + n2)
      		} senao se (n2 > n1 e n1 > n3){
      			escreva("\nMAIOR: " + n2)
      			escreva("\nINTERMEDIÁRIO: " + n1)
      			escreva("\nMAIOR: " + n3)
      		} senao se (n2 > n3 e n3 > n1){
      			escreva("\nMAIOR: " + n2)
      			escreva("\nINTERMEDIÁRIO: " + n3)
      			escreva("\nMAIOR: " + n1)
      		} senao se (n3 > n1 e n1 > n2){
      			escreva("\nMAIOR: " + n3)
      			escreva("\nINTERMEDIÁRIO: " + n1)
      			escreva("\nMAIOR: " + n3)
      		} senao se (n3 > n2 e n2 > n1){
      			escreva("\nMAIOR: " + n3)
      			escreva("\nINTERMEDIÁRIO: " + n2)
      			escreva("\n3MAIOR: " + n1)
      		}senao{
      			escreva("Tem número igual, não consigo colocar em ordem.")
      		}
      	}
      }
      • #80692
        Tutora Mayla
        Mestre

        Vinicius, movi o seu tópico para um tópico já existente sobre o assunto. Sempre antes de criar um novo tópico é bom verificar se já existe um tópico sobre o assunto no fórum.
        Parabéns por ter concluído o exercício! O seu código está bom e correto pois tem a saída desejada, mas verifique neste tópico e nesse Duvida enorme sobre ex. 25 algumas respostas minhas e do Icaro sobre essa questão que podem lhe ajudar a continuar evoluindo e construir um código melhor.
        Quaisquer dúvidas basta entrar em contato que lhe ajudaremos.

      • #80693
        Tutora Mayla
        Mestre

        Vinicius, movi o seu tópico para um tópico já existente sobre o assunto. Sempre antes de criar um novo tópico é bom verificar se já existe um tópico sobre o assunto no fórum.
        Parabéns por ter concluído o exercício! O seu código está bom e correto pois tem a saída desejada, mas verifique neste tópico e nesse Duvida enorme sobre ex. 25 algumas respostas minhas e do Icaro sobre essa questão que podem lhe ajudar a continuar evoluindo e construir um código melhor.
        Quaisquer dúvidas basta entrar em contato que lhe ajudaremos.

    • #81116
      Matheus Oliveira
      Participante

      Boa noite pessoal.
      Olhando o exercício resolvido pelo professor e o postado aqui por vocês, não achei uma resolução parecida com a que tive. Poderiam analisar e me falarem se está bom?

      programa
      {
      inclua biblioteca Matematica –> mat
      funcao inicio()
      {
      escreva (“{EXERCÍCIO 25- Três valores em ordem}\n”)
      escreva (“Digite um valor: “)
      inteiro num1, num2, num3
      leia (num1)

      escreva (“Digite outro valor: “)
      leia (num2)

      escreva (“Digite mais um valor: “)
      leia (num3)

      escreva (“————————————-\n”)

      se (num1>num2 e num1>num3){
      inteiro maior = mat.maior_numero(num2, num3)
      inteiro menor = mat.menor_numero(num2, num3)
      escreva (“MAIOR: ” + num1 + “\n”)
      escreva (“INTERMEDIÁRIO: ” + maior + “\n”)
      escreva (“MENOR: ” + menor)

      } senao se (num2>num1 e num2>num3){
      inteiro maior = mat.maior_numero(num1, num3)
      inteiro menor = mat.menor_numero(num1, num3)
      escreva (“MAIOR: ” + num2 + “\n”)
      escreva (“INTERMEDIÁRIO: ” + maior + “\n”)
      escreva (“MENOR: ” + menor)
      } senao {
      inteiro maior = mat.maior_numero(num1, num2)
      inteiro menor = mat.menor_numero(num1, num2)
      escreva (“MAIOR: ” + num3 + “\n”)
      escreva (“INTERMEDIÁRIO: ” + maior + “\n”)
      escreva (“MENOR: ” + menor)
      }

      }
      }

      • #81127
        Tutora Mayla
        Mestre

        Matheus, parabéns pelo seu código, fico feliz que tenha tido a iniciativa de utilizar uma biblioteca pois no dia a dia da computação as bibliotecas nos ajudam muito!
        Porém aqui como estamos em um contexto educacional a ideia do exercício é exercitar a utilização de condições aninhadas, o que o seu código não faz.
        Tente refazer o exercício, utilizando as dicas que dei anteriormente sobre essa questão, e utilizando condições aninhadas!
        Depois poste aqui para compartilhar com a comunidade qual foi o seu resultado!
        Bons estudos, quaisquer dúvidas estamos a disposição.

    • #83349
      Lucas Eduardo
      Participante

      Pessoal, fiz um código que ficou relativamente pequeno, pelo menos em relação aos que eu tenho visto aqui no fórum. Só tenho uma dúvida quanto à lógica que usei, se seria viável para uma implementação pra entradas bem maiores do que 3 apenas, como no ex025. Segue a lógica usada:

      se(n1>n2)
      {
      aux = n1
      n1 = n2
      n2 = aux
      }
      se(n2>n3)
      {
      aux = n2
      n2 = n3
      n3 = aux
      }
      se(n1>n2)
      {
      aux = n1
      n1 = n2
      n2 = aux
      }

      • #83621

        Lucas, a lógica não faz muito sentido pois você compara n1 com n2 duas vezes no mesmo código. Por favor elabora melhor a sua dúvida para tentarmos te ajudar.

Visualizando 19 respostas da discussão
  • Você deve fazer login para responder a este tópico.