Home › Fóruns › Programação Básica › Modulo 2 – Exercicio 25
Marcado: condição aninhada, exercício 25, resposta
- Este tópico contém 33 respostas, 17 vozes e foi atualizado pela última vez 2 anos, 10 meses atrás por Tutora Tainá.
-
AutorPosts
-
-
14 de fevereiro de 2021 às 12:03 #60737Tiago CamargoParticipante
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)
}
}
} -
15 de fevereiro de 2021 às 12:37 #60829Antony Mateus Ferreira LuzParticipante
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.
-
15 de fevereiro de 2021 às 12:50 #60831Tutora MaylaMestre
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 feitose(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. -
15 de fevereiro de 2021 às 12:50 #60832Antony Mateus Ferreira LuzParticipante
Percebi que foi publicado no curso errado, era para ser em “programação básica”, não consigo excluir.
-
17 de fevereiro de 2021 às 13:54 #61066Tutora MaylaMestre
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.
-
-
12 de março de 2021 às 16:00 #62897Lucas Rodrigues FreitasParticipante
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.
-
15 de março de 2021 às 13:13 #63109Tutora MaylaMestre
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!
-
-
12 de março de 2021 às 16:26 #62898IcaroFilhoModerador
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 outrose (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.
-
12 de março de 2021 às 17:55 #62904Nicollas Daniel Oliveira CorrêaParticipante
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 { ...
-
16 de maio de 2021 às 13:14 #67222Antonio Cesar Ferreira NevesParticipante
//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) }
-
17 de maio de 2021 às 19:00 #67306Tutora MaylaMestre
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ávelr
, para facilitar o entendimento e não ter que explicar quer
se refere a retorno, a variávelr
poderia se chamarretorno
mesmo, ouauxiliar
. 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.
-
17 de maio de 2021 às 19:41 #67318Antonio Cesar Ferreira NevesParticipante
Muito obrigado pelo felldeback vou seguir esse seu conselho
-
-
22 de agosto de 2021 às 20:22 #74085Lucas RodriguesParticipante
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 = 0se (n1 > n2 e n1 > n3) maior = n1 // maior
senao se (n1 < n2 e n1 < n3) menor = n1 // menor
senao meio = n1 // intermediáriose (n2 > n1 e n2 > n3) maior = n2 // maior
senao se (n2 < n1 e n2 < n3) menor = n2 // menor
senao meio = n2 // intermediáriose (n3 > n1 e n3 > n2) maior = n3 // maior
senao se (n3 < n1 e n3 < n2) menor = n3 // menor
senao meio = n3 // intermediárioescreva(“MENOR: “, menor, “\nINTERMEDIÁRIO: “, meio, “\nMAIOR: “, maior)
escreva(“\n\n\n”)
}
}-
23 de agosto de 2021 às 19:04 #74135Tutora MaylaMestre
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.
-
-
4 de setembro de 2021 às 17:13 #74774Jose Walter Carreiro Soares LimaParticipante
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”)
}
}-
8 de setembro de 2021 às 20:02 #74967Tutora MaylaMestre
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.
-
-
14 de setembro de 2021 às 11:34 #75418Samuel Pinto da SilvaParticipante
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, n1Tendo 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, n3escreva(“=====================================”)
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.
-
17 de setembro de 2021 às 10:33 #75619Tutora MaylaMestre
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.
-
-
25 de setembro de 2021 às 09:55 #76189Luiz Samuel Santos SilvaMembro
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!
-
25 de setembro de 2021 às 11:34 #76195Luiz Samuel Santos SilvaMembro
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) } } } }
-
25 de setembro de 2021 às 12:01 #76197Luiz Samuel Santos SilvaMembro
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) } } }
-
25 de setembro de 2021 às 12:04 #76198Luiz Samuel Santos SilvaMembro
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) } }
-
25 de setembro de 2021 às 14:27 #76199Luiz Samuel Santos SilvaMembro
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 }
-
26 de setembro de 2021 às 00:24 #76231Michel SouzaParticipante
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. -
27 de setembro de 2021 às 22:20 #76383Tutora MaylaMestre
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.
-
-
1 de outubro de 2021 às 06:29 #76617Arthur Martins AlvesParticipante
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") }
-
1 de outubro de 2021 às 13:15 #76678Tutora MaylaMestre
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.
-
-
14 de novembro de 2021 às 19:43 #80589Vinicius Basseto MiraParticipante
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.") } } }
-
16 de novembro de 2021 às 20:00 #80692Tutora MaylaMestre
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. -
16 de novembro de 2021 às 20:00 #80693Tutora MaylaMestre
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.
-
-
24 de novembro de 2021 às 19:30 #81116Matheus OliveiraParticipante
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)
}}
}-
24 de novembro de 2021 às 20:33 #81127Tutora MaylaMestre
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.
-
-
28 de dezembro de 2021 às 12:56 #83349Lucas EduardoParticipante
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
}-
3 de janeiro de 2022 às 09:42 #83621Tutora TaináMestre
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.
-
-
-
AutorPosts
- Você deve fazer login para responder a este tópico.