Excelentemente explicado el Tema, infinitas gracias !!!!, pregunta del ejercicio Mayor y Menor de 3 Valores: suponemos que los tres valores son diferentes??? de no suponer eso, seria conveniente arrancar verificando si existe igualdad entre ellos??, muchas gracias por Tu respuesta, Bendiciones para Ti y todos los tuyos!!!!
Muchas gracias!!! Me alegra mucho que te haya servido! Te comento, en el ejercicio de Mayor y Menor de 3 valores no estoy suponiendo que sean valores diferentes, porque sería una restricción muy grande, lo mejor es dejar que lo resuelva el código para cualquier valor ingresado. En este caso el SI se compone de tres partes, Parte 1: SI (numero1 > numero2) Parte 2: SINO SI (numero2 > numero1) Parte3: SINO, como es un SINO sin condición, entra cuando no se cumple ninguno de los dos casos anteriores Supongamos que el usuario ingresa como numero1 el 5 y como numero2 el 8: Parte 1: SI (5>8) -> FALSO, no ingresa, va a evaluar la Parte 2 Parte 2: SINO SI (8>5) -> VERDADERO, ingresa y no sigue evaluando el resto de las condiciones (corta acá, no va a la Parte 3) Parte 3: SINO -> no llega a evaluarse Ahora supongamos que el usuario ingresa como numero1 el 8 y como numero2 también el 8: Parte 1: SI (8>8) -> FALSO, no ingresa, va a evaluar la Parte 2 Parte 2: SINO SI (8>8) -> FALSO, no ingresa, va a evaluar la Parte 3 Parte 3: SINO -> VERDADERA, no tiene condición, así que acá entra. En la Parte 3 está implícito que va a ingresar solamente cuando ninguno de los dos sea mayor al otro, ese caso se da solo cuando ambos son iguales Podríamos escribir también así : Parte 1: SI (numero1 > numero2) Parte 2: SINO SI (numero2 > numero1) Parte3: SINO SI (numero1 == numero2) En el otro caso, con el SINO evitamos escribir una condición, pero los dos casos responden de la misma manera. Queda mejor escribir menos código, eso se gana con la práctica, pero tampoco está mal escribirlo así. Como dices, podrías también arrancar evaluando la igualdad, algo así: Parte 1: SI (numero1 == numero2) Parte 2: SINO SI (numero1 > numero2) Parte3: SINO SI (numero2 > numero1) o, resolviéndolo con el SINO Parte 1: SI (numero1 == numero2) Parte 2: SINO SI (numero1 > numero2) Parte3: SINO -> acá está implícito que (numero2 > numero1), porque no entró en ninguna de las anteriores Espero que te sea la respuesta, cualquier consulta no dudes en hacerla! Un abrazo!
@@unsimpledev Ok excelente, muchas gracias por Tu pronta respuesta (lo voy a hacer sin esa restriccion). Saludos cordiales y bendiciones, sigo viendo cada capitulo y haciendo los ejercicios 👍👍👍👍
@@robertoguarisma95 Genial! Sí, Practicar con ejercicios es lo mejor para aprender! Muchas gracias! Cualquier consulta no dudes en mandarla. Éxitos! Saludos!
Ejer2: VARIABLES PALABRA candidato1, candidato2, candidato3 PALABRA votos INICIO IMPRIMO "Ingrese candidato1" LEER "candidato1" IMPRIMO "Ingrese candidato2" LEER "candidato2" IMPRIMO "Ingrese candidato3" LEER "candidato3" votos = 100 SI (candidato1 => 34 votos) ENTONCES INICIO IMPRIMO "el ganador es el candidato1" FIN SINO INICIO SI (candidato2 => 34 votos) ENTONCES INICIO IMPRIMO "el ganador es el candidato2" FIN SINO INICIO IMPRIMO "el ganador es el candidato3" FIN (no estoy nada convencido de que sea asi..xd)
La primero es tener en cuenta los tipos de variables, en este ejercicio debemos ingresar la cantidad de votos de cada candidato, por lo que el usuario va a ingresar un numero por cada candidato, asi que los tipos de variables deberían ser de tipo ENTERO (acordate que PALABRA son para textos). Votos también sería entera pero no la estás usando así que no es necesaria. Fijate en las condiciones que armaste, el candidato 1 podría tener 35 votos y el 2, 40, y el algoritmo va a imprimir que el candidato 1 es el ganador. Siempre la mejor forma de ver si va bien es probando con valores, cuando se puede. Lo que debemos comparar aca son los votos de cada candidato, los valores de cada una de estas variables. por ejemplo: - SI (votosCandidato1 > votosCandidato2 Y votosCandidato1 > votosCandidato3) En este caso el candidato1 ganó porque tiene mas votos que el 2 y que el 3. En caso de que no se de esta condicion, se debe analizar de la misma manera para los casos del candidato2 y del candidato3. SI (votosCandidato2 > votosCandidato1 Y votosCandidato2 > votosCandidato3) SI (votosCandidato3 > votosCandidato1 Y votosCandidato3 > votosCandidato2) Ahora, hay algo que no estamos considerando, que pasa si el candidato2 y el 1 sacan 40 puntos cada uno, y el candidato3, 20. Hay un empate, y en este caso no está contemplado. Debemos hacerlo. - Si los 3 son iguales -> triple empate - Los casos de empate entre dos candidatos (1 y 2, 2 y 3, 1 y 3). En estos casos ya sabemos que el que quede afuera no es mayor, porque sino hubiera entrado en la condicion de votos mayores. Te dejo un algoritmo completo: VARIABLES ENTERO votosCandidato1, votosCandidato2, votosCandidato3 INICIO // Cargo los votos de cada candidato IMPRIMIR 'Ingrese los votos del candidato 1' LEER votosCandidato1 IMPRIMIR 'Ingrese los votos del candidato 2' LEER votosCandidato2 IMPRIMIR 'Ingrese los votos del candidato 3' LEER votosCandidato3 SI (votosCandidato1 > votosCandidato2 Y votosCandidato1 > votosCandidato3) ENTONCES INICIO IMPRIMO 'El ganador es el candidato 1' FIN SINO INICIO SI (votosCandidato2 > votosCandidato1 Y votosCandidato2 > votosCandidato3) ENTONCES INICIO IMPRIMO 'El ganador es el candidato 2' FIN FIN SINO INICIO SI (votosCandidato3 > votosCandidato1 Y votosCandidato3 > votosCandidato2) ENTONCES INICIO IMPRIMO 'El ganador es el candidato 3' FIN FIN SINO INICIO //Casos de empate SI (votosCandidato1 == votosCandidato2 Y votosCandidato1 == votosCandidato3) ENTONCES INICIO IMPRIMO "Empate entre los tres candidatos" FIN SINO INICIO SI (votosCandidato1 == votosCandidato2 ) ENTONCES INICIO IMPRIMO "Empate entre el candidato 1 y el candidato 2" FIN FIN SINO INICIO SI (votosCandidato2 == votosCandidato3 ) ENTONCES INICIO IMPRIMO "Empate entre el candidato 2 y el candidato 3" FIN FIN SINO INICIO SI (votosCandidato1 == votosCandidato3 ) ENTONCES INICIO IMPRIMO "Empate entre el candidato 1 y el candidato 3" FIN FIN FIN FIN En la mayoría de los lenguajes no hace falta poner INICIO/FIN cuando adentro del bloque hay una sola línea, y los SINO pueden escribirse como SINO SI (cuando viene otra condicion), así que lo voy a hacer mas chico para que sea más legible, lo importante es la idea: VARIABLES ENTERO votosCandidato1, votosCandidato2, votosCandidato3 INICIO // Cargo los votos de cada candidato IMPRIMIR "Ingrese los votos del candidato 1" LEER votosCandidato1 IMPRIMIR "Ingrese los votos del candidato 2" LEER votosCandidato2 IMPRIMIR "Ingrese los votos del candidato 3" LEER votosCandidato3 // Comparar votos para determinar el ganador SI (votosCandidato1 > votosCandidato2 Y votosCandidato1 > votosCandidato3) ENTONCES IMPRIMIR "El ganador es el candidato 1" SINO SI (votosCandidato2 > votosCandidato1 Y votosCandidato2 > votosCandidato3) ENTONCES IMPRIMIR "El ganador es el candidato 2" SINO SI (votosCandidato3 > votosCandidato1 Y votosCandidato3 > votosCandidato2) ENTONCES IMPRIMIR "El ganador es el candidato 3" SINO SI (votosCandidato1 == votosCandidato2 Y votosCandidato1 == votosCandidato3) ENTONCES IMPRIMIR "Empate entre los tres candidatos" SINO SI (votosCandidato1 == votosCandidato2) ENTONCES IMPRIMIR "Empate entre el candidato 1 y el candidato 2" SINO SI (votosCandidato2 == votosCandidato3) ENTONCES IMPRIMIR "Empate entre el candidato 2 y el candidato 3" SINO SI (votosCandidato1 == votosCandidato3) ENTONCES IMPRIMIR "Empate entre el candidato 1 y el candidato 3" FIN Estaba bastante difícil la verdad por el tema de contemplar los casos de empate, pero es un buen ejercicio para ir viendo que hay casos que no parecen estar tan a la vista, pero están ahí, y dejarlos afuera hacen que nuestros algoritmos/programas no funcionen con algunos casos. Saludos!
Tienes buenos conocimientos
Muchas gracias! Intento compartirlos, espero que sirva, sobre todo a los que están comenzando. Abrazo!
Graciasbro
Gracias 🙏🏽
Un placer! 😀
Excelentemente explicado el Tema, infinitas gracias !!!!, pregunta del ejercicio Mayor y Menor de 3 Valores: suponemos que los tres valores son diferentes??? de no suponer eso, seria conveniente arrancar verificando si existe igualdad entre ellos??, muchas gracias por Tu respuesta, Bendiciones para Ti y todos los tuyos!!!!
Muchas gracias!!! Me alegra mucho que te haya servido!
Te comento, en el ejercicio de Mayor y Menor de 3 valores no estoy suponiendo que sean valores diferentes, porque sería una restricción muy grande, lo mejor es dejar que lo resuelva el código para cualquier valor ingresado.
En este caso el SI se compone de tres partes,
Parte 1: SI (numero1 > numero2)
Parte 2: SINO SI (numero2 > numero1)
Parte3: SINO, como es un SINO sin condición, entra cuando no se cumple ninguno de los dos casos anteriores
Supongamos que el usuario ingresa como numero1 el 5 y como numero2 el 8:
Parte 1: SI (5>8) -> FALSO, no ingresa, va a evaluar la Parte 2
Parte 2: SINO SI (8>5) -> VERDADERO, ingresa y no sigue evaluando el resto de las condiciones (corta acá, no va a la Parte 3)
Parte 3: SINO -> no llega a evaluarse
Ahora supongamos que el usuario ingresa como numero1 el 8 y como numero2 también el 8:
Parte 1: SI (8>8) -> FALSO, no ingresa, va a evaluar la Parte 2
Parte 2: SINO SI (8>8) -> FALSO, no ingresa, va a evaluar la Parte 3
Parte 3: SINO -> VERDADERA, no tiene condición, así que acá entra.
En la Parte 3 está implícito que va a ingresar solamente cuando ninguno de los dos sea mayor al otro, ese caso se da solo cuando ambos son iguales
Podríamos escribir también así :
Parte 1: SI (numero1 > numero2)
Parte 2: SINO SI (numero2 > numero1)
Parte3: SINO SI (numero1 == numero2)
En el otro caso, con el SINO evitamos escribir una condición, pero los dos casos responden de la misma manera.
Queda mejor escribir menos código, eso se gana con la práctica, pero tampoco está mal escribirlo así.
Como dices, podrías también arrancar evaluando la igualdad, algo así:
Parte 1: SI (numero1 == numero2)
Parte 2: SINO SI (numero1 > numero2)
Parte3: SINO SI (numero2 > numero1)
o, resolviéndolo con el SINO
Parte 1: SI (numero1 == numero2)
Parte 2: SINO SI (numero1 > numero2)
Parte3: SINO -> acá está implícito que (numero2 > numero1), porque no entró en ninguna de las anteriores
Espero que te sea la respuesta, cualquier consulta no dudes en hacerla! Un abrazo!
@@unsimpledev Ok excelente, muchas gracias por Tu pronta respuesta (lo voy a hacer sin esa restriccion). Saludos cordiales y bendiciones, sigo viendo cada capitulo y haciendo los ejercicios 👍👍👍👍
@@robertoguarisma95 Genial! Sí, Practicar con ejercicios es lo mejor para aprender! Muchas gracias! Cualquier consulta no dudes en mandarla. Éxitos! Saludos!
:)
Ejer2:
VARIABLES
PALABRA candidato1, candidato2, candidato3
PALABRA votos
INICIO
IMPRIMO "Ingrese candidato1"
LEER "candidato1"
IMPRIMO "Ingrese candidato2"
LEER "candidato2"
IMPRIMO "Ingrese candidato3"
LEER "candidato3"
votos = 100
SI (candidato1 => 34 votos) ENTONCES
INICIO
IMPRIMO "el ganador es el candidato1"
FIN
SINO
INICIO
SI (candidato2 => 34 votos) ENTONCES
INICIO
IMPRIMO "el ganador es el candidato2"
FIN
SINO
INICIO
IMPRIMO "el ganador es el candidato3"
FIN
(no estoy nada convencido de que sea asi..xd)
La primero es tener en cuenta los tipos de variables, en este ejercicio debemos ingresar la cantidad de votos de cada candidato, por lo que el usuario va a ingresar un numero por cada candidato, asi que los tipos de variables deberían ser de tipo ENTERO (acordate que PALABRA son para textos). Votos también sería entera pero no la estás usando así que no es necesaria.
Fijate en las condiciones que armaste, el candidato 1 podría tener 35 votos y el 2, 40, y el algoritmo va a imprimir que el candidato 1 es el ganador. Siempre la mejor forma de ver si va bien es probando con valores, cuando se puede.
Lo que debemos comparar aca son los votos de cada candidato, los valores de cada una de estas variables.
por ejemplo:
- SI (votosCandidato1 > votosCandidato2 Y votosCandidato1 > votosCandidato3)
En este caso el candidato1 ganó porque tiene mas votos que el 2 y que el 3. En caso de que no se de esta condicion, se debe analizar de la misma manera para los casos del candidato2 y del candidato3.
SI (votosCandidato2 > votosCandidato1 Y votosCandidato2 > votosCandidato3)
SI (votosCandidato3 > votosCandidato1 Y votosCandidato3 > votosCandidato2)
Ahora, hay algo que no estamos considerando, que pasa si el candidato2 y el 1 sacan 40 puntos cada uno, y el candidato3, 20. Hay un empate, y en este caso no está contemplado. Debemos hacerlo.
- Si los 3 son iguales -> triple empate
- Los casos de empate entre dos candidatos (1 y 2, 2 y 3, 1 y 3). En estos casos ya sabemos que el que quede afuera no es mayor, porque sino hubiera entrado en la condicion de votos mayores.
Te dejo un algoritmo completo:
VARIABLES
ENTERO votosCandidato1, votosCandidato2, votosCandidato3
INICIO
// Cargo los votos de cada candidato
IMPRIMIR 'Ingrese los votos del candidato 1'
LEER votosCandidato1
IMPRIMIR 'Ingrese los votos del candidato 2'
LEER votosCandidato2
IMPRIMIR 'Ingrese los votos del candidato 3'
LEER votosCandidato3
SI (votosCandidato1 > votosCandidato2 Y votosCandidato1 > votosCandidato3) ENTONCES
INICIO
IMPRIMO 'El ganador es el candidato 1'
FIN
SINO
INICIO
SI (votosCandidato2 > votosCandidato1 Y votosCandidato2 > votosCandidato3) ENTONCES
INICIO
IMPRIMO 'El ganador es el candidato 2'
FIN
FIN
SINO
INICIO
SI (votosCandidato3 > votosCandidato1 Y votosCandidato3 > votosCandidato2) ENTONCES
INICIO
IMPRIMO 'El ganador es el candidato 3'
FIN
FIN
SINO
INICIO
//Casos de empate
SI (votosCandidato1 == votosCandidato2 Y votosCandidato1 == votosCandidato3) ENTONCES
INICIO
IMPRIMO "Empate entre los tres candidatos"
FIN
SINO
INICIO
SI (votosCandidato1 == votosCandidato2 ) ENTONCES
INICIO
IMPRIMO "Empate entre el candidato 1 y el candidato 2"
FIN
FIN
SINO
INICIO
SI (votosCandidato2 == votosCandidato3 ) ENTONCES
INICIO
IMPRIMO "Empate entre el candidato 2 y el candidato 3"
FIN
FIN
SINO
INICIO
SI (votosCandidato1 == votosCandidato3 ) ENTONCES
INICIO
IMPRIMO "Empate entre el candidato 1 y el candidato 3"
FIN
FIN
FIN
FIN
En la mayoría de los lenguajes no hace falta poner INICIO/FIN cuando adentro del bloque hay una sola línea, y los SINO pueden escribirse como SINO SI (cuando viene otra condicion), así que lo voy a hacer mas chico para que sea más legible, lo importante es la idea:
VARIABLES
ENTERO votosCandidato1, votosCandidato2, votosCandidato3
INICIO
// Cargo los votos de cada candidato
IMPRIMIR "Ingrese los votos del candidato 1"
LEER votosCandidato1
IMPRIMIR "Ingrese los votos del candidato 2"
LEER votosCandidato2
IMPRIMIR "Ingrese los votos del candidato 3"
LEER votosCandidato3
// Comparar votos para determinar el ganador
SI (votosCandidato1 > votosCandidato2 Y votosCandidato1 > votosCandidato3) ENTONCES
IMPRIMIR "El ganador es el candidato 1"
SINO SI (votosCandidato2 > votosCandidato1 Y votosCandidato2 > votosCandidato3) ENTONCES
IMPRIMIR "El ganador es el candidato 2"
SINO SI (votosCandidato3 > votosCandidato1 Y votosCandidato3 > votosCandidato2) ENTONCES
IMPRIMIR "El ganador es el candidato 3"
SINO SI (votosCandidato1 == votosCandidato2 Y votosCandidato1 == votosCandidato3) ENTONCES
IMPRIMIR "Empate entre los tres candidatos"
SINO SI (votosCandidato1 == votosCandidato2) ENTONCES
IMPRIMIR "Empate entre el candidato 1 y el candidato 2"
SINO SI (votosCandidato2 == votosCandidato3) ENTONCES
IMPRIMIR "Empate entre el candidato 2 y el candidato 3"
SINO SI (votosCandidato1 == votosCandidato3) ENTONCES
IMPRIMIR "Empate entre el candidato 1 y el candidato 3"
FIN
Estaba bastante difícil la verdad por el tema de contemplar los casos de empate, pero es un buen ejercicio para ir viendo que hay casos que no parecen estar tan a la vista, pero están ahí, y dejarlos afuera hacen que nuestros algoritmos/programas no funcionen con algunos casos.
Saludos!
Acá están resueltos los de estructuras condicionales:
codeandosimple.com/logica-estructuras-selectivas.html#ejercicios-resueltos
Saludos!