viernes, 1 de noviembre de 2013

1.13. Ejercicios con Si compuestos

Cuando resuelves algoritmos con condicionales, existen diversas formas y variantes de resolver un mismo ejercicio, pero debes tener siempre presente que debe obtenerse los mismos resultados, es decir, cuidar que una solución nos brinde las respuestas correctas. Las condiciones son vitales a la hora de hacer algoritmos.

Ejercicio 1. Los Números
Hacer un algoritmo y programa que indique si un numero es positivo, negativo o es neutro (es neutro cuando es igual a cero). ESTE EJERCICIO TIENE 4 SOLUCIONES DISTINTAS, HAREMOS DOS.

 PRIMERA SOLUCIÓN

Análisis:
  • Consideremos usar solo condicionales sin su opuesto, es decir:
Si dato == o 
Si dato > 0
Si dato < 0
"Es Neutro"
"Es positivo"
"Es negativo"
Ya vimos usaremos tres condiciones independientes, es decir, tres condicionales SI.
Variables de Entrada: dato
Variables de Salida: no existen, son solo los mensajes.


Diseño:
Algoritmo LosNumeros
Inicio
          Entero dato
          Leer(dato)
          Si dato == 0 Entonces
                    Escribir("Es neutro")
          FinSi
          Si dato > 0 Entonces
                    Escribir("Es positivo")
          FinSi
          Si dato < 0 Entonces
                    Escribir("Es negativo")
          FinSi
Fin


SEGUNDA SOLUCIÓN
Análisis:
  • Ahora desarrollemos el ejercicio con dos condicionales:

Si dato > 0
Sino
"Es positivo"

Si dato == 0Sino
"Es neutro""Es negativo"


Ya vimos usaremos tres condiciones independientes, es decir, tres condicionales SI.
    Variables de Entrada: dato
    Variables de Salida: no existen, son solo los mensajes.

    Diseño: 
    Algoritmo LosNumeros2
    Inicio
              Entero dato
              Leer(dato)
              Si dato > 0 Entonces
                        Escribir("Es positivo")
              Sino
                        Si dato == 0 Entonces
                                  Escribir("Es neutro")
                        Sino
                                  Escribir("Es negativo")
                        FinSi
              FinSi
    Fin

    TERCERA Y CUARTA SOLUCIÓN
    Existen dos soluciones más similares en forma a la segunda, estas son:
    Algoritmo LosNumeros3
    Inicio
              Entero dato
              Leer(dato)
              Si dato < 0 Entonces
                        Escribir("Es negativo")
              Sino
                        Si dato == 0 Entonces
                                  Escribir("Es neutro")
                        Sino
                                  Escribir("Es positivo")
                        FinSi
              FinSi
    Fin

    Algoritmo LosNumeros4
    Inicio
              Entero dato
              Leer(dato)
              Si dato = 0 Entonces
                        Escribir("Es neutro")
              Sino
                        Si dato < 0 Entonces
                                  Escribir("Es negativo")
                        Sino
                                  Escribir("Es positivo")
                        FinSi
              FinSi
    Fin
    Analiza las soluciones y prueba en C#.



    Ejercicio 6. El estacionamiento

    Un estacionamiento cobra de la siguiente forma:
    • Menos de 1hora 5.50um
    • Por 1hora exacta 6.00um
    • Por mas de una hora, se cobrara 6.00 de la primera hora mas 0.15um por minuto de exceso.
    Hacer el programa y algoritmo que permita pedir el tiempo en minutos y nos muestre cuanto se le cobrara al que contrata la cochera. (Aquí también tenemos varias soluciones, haremos una de ellas.)
    Análisis:
    • Consideremos primero que ingresamos 60 minutos, es decir, una hora exacta:
    Si tiempo < 60Sino
    costo = 5.5

    Si tiempo == 60Sino
    costo = 6costo = 6 + 0.15*(tiempo - 60)



    Diseño:
    Algoritmo ElEstacionamiento
    Inicio
              Entero tiempo
              Real costo
              Leer (tiempo)
              Si tiempo < 60 Entonces
                        costo = 5.50
              Sino
                        Si tiempo == 60 Entonces
                                  costo = 6
                        Sino
                                  costo = 6 + 0.15*(tiempo - 60)
                        FinSi
              FinSi
              Escribir (costo)
    Fin

    Código:
             public static void Main(string[] args)
            {

                int tiempo;
                double costo;
                Console.Write("Ingresa la cantidad de minutos usados: ");
                tiempo = int.Parse(Console.ReadLine());
                if (tiempo < 60)
                {
                    costo = 5.50;
                }
                else
                {
                    if (tiempo == 60)
                    {
                        costo = 6;
                    }
                    else
                    {
                        costo = 6 + 0.15*(tiempo - 60);
                    }
                }
                Console.WriteLine("El costo es: " + costo);
                Console.ReadLine();
            }
    Notas:
    • Cuando usamos una estructura SI dentro de otra, esta recibe el nombre de estructuras anidadas.
    • Cuando resuelvas un ejercicio piensa siempre en la forma más optima de resolverlo, es decir, la forma más sencilla, clara y corta de resolverlo.
    • Ahora que comienzas a programar siempre busca más de una solución a los problemas, esto te brindara experiencia y mayor lógica a la hora de solucionar problemas.

    Equivalencia: 



    • Hacer un programa que permita el ingreso de tres números y nos indique cual es el mayor de los números.
    • Hacer un programa para verificar la existencia de un triangulo, un triangulo existe solo si la suma de dos de sus lados es mayor al tercero.
    • Hacer un programa que permita el ingreso de 5 números y nos indique el mayor de los 5.

    1 comentario:

    1. Algoritmo que lee tres números y determina si la suma de cualquier pareja de ellos es igual al tercer número. Si se cumple la regla indicada visualizar un mensaje indicando que se cumple y sino indicando que no se cumple.
      ayuda con este por favor

      ResponderEliminar