Tu ayuda es imprescindible

Has llegado al capítulo final del curso. ¡Felicidades por todo tu esfuerzo y dedicación! Espero que hayas aprendido mucho y que las habilidades adquiridas te sean útiles en tu carrera de desarrollo. Si disfrutaste el contenido y te gustaría apoyar el proyecto, considera realizar una donación para que pueda seguir creando más recursos educativos gratuitos para todos. ¡Gracias por acompañarme en este maravilloso camino!

Contenido del capítulo

Te doy la bienvenida al proyecto final del curso. Aquí pondrás a prueba todo lo aprendido a lo largo de los más de 30 capítulos.


Duración estimada:
-

Logo

Tabla de contenido

    ¿De qué va este proyecto?

    El proyecto va a ser complicado. Sé que para quien está aprendiendo programación, será una tarea ardua. Sin embargo, tienes que ir saliendo de tu zona de confort. Está muy bien conocer todos los elementos básicos de programación, pero tienes que saber utilizarlos en proyecto prácticos.

    Para conseguir pasar todas las secciones de este proyecto, deberás demostrar que has conseguido adquirir todos los conocimientos enseñados a lo largo de los capítulos de este curso.

    Espacio publicitario

    El proyecto va a ser para crear una calculadora con las cuatro operaciones aritméticas básicas, y le añadiremos alguna funcionalidad extra, como la de calcular potencias.

    En parte, ya sabes un poco de esto, lo dimos en el capítulo 16 con las sumas, restas, etc.

    Con el fin de que todo el mundo pueda seguirlo, he decidido partir el proyecto en varias fases. En cada fase, construiremos una parte del programa completo. Siempre intenta solucionar cada parte, no te rindas fácil, pero si no puedes completarla, consulta la solución. A partir de ella, podrás empezar con la siguiente parte.

    Esto lo hago así, ya que es muy fácil hacer mal una parte del programa, y que no puedas intentar ni siquiera solucionar el resto.

    Tienes total libertad para hacer el programa de la forma que creas. Por ejemplo, si yo he utilizado un bucle Para de PseInt, no quiere decir que lo hayas hecho mal con un bucle Mientras.

    Lo único que debes cumplir, son los objetivos que te vaya proponiendo, si los cumples, lo tienes perfecto.
    Esto lo indico, porque en programación, hay muchas posibles soluciones para un mismo problema.

    Sección 1: Creación de la interfaz en la consola

    1.1 - Creando el menú de opciones estático

    La primera parte del proyecto consiste en que crees una interfaz de usuario en la consola. Esta interfaz será un sencillo menú con todas las opciones de la calculadora. Lo que tienes que incluir en el menú, son las siguientes cosas:

    • Título de la calculadora (puede llamarse "Calculadora" o lo que tú quieras).
    • Opciones numeradas:
      1. Suma
      2. Resta
      3. Multiplicación
      4. División
      5. Módulo
      6. Potencia
      7. Salir
    • Aviso de que el usuario tiene que introducir una opción.

    De momento, este menú, será estático, es decir, una serie de texto mostrado una vez en la consola.

    Con Escribir, puedes crear menús en la consola; simplemente son texto.

    Intenta no tirar de la solución a la más mínima, pero si no te ves capaz de hacer alguna parte, sin dudarlo ves a verla y continúa tu proyecto con el código expuesto en dicha solución.

    La solución a esta parte del proyecto, es crear un menú a base de Escribir. Con un elemento por línea, podemos definir cada una de las opciones que podrá elegir el usuario.

    De momento, son solo opciones informativas. Aún no llevan la lógica para ejecutarlas.

    Algoritmo Calculadora
    
        // Menú de la calculadora
        Escribir "Calculadora"
        Escribir "1. Suma"
        Escribir "2. Resta"
        Escribir "3. Multiplicación"
        Escribir "4. División"
        Escribir "5. Módulo"
        Escribir "6. Potencia"
        Escribir "7. Salir"
        Escribir ""
        Escribir "Seleccione una opción: "
    
    FinAlgoritmo
    Menú de consola de una calculadora

    1.2 - Entrada de datos del usuario

    Después de tener el menú creado, es el momento de añadir una entrada de datos en el programa. Esta entrada de datos, estará diseñada para que el usuario ponga una de las opciones del menú.

    La solución a este apartado, es tan simple como añadir un Leer, después del código del apartado anterior. Para ello, tenías que definir primero una variable de tipo entero, para almacenar el valor del usuario. Para posteriormente poder utilizarlo.

    Algoritmo Calculadora
    
        // Se declara la variable para las opciones del menú
        Definir opcion Como Entero
    
        // Menú de la calculadora
        Escribir "Calculadora"
        Escribir "1. Suma"
        Escribir "2. Resta"
        Escribir "3. Multiplicación"
        Escribir "4. División"
        Escribir "5. Módulo"
        Escribir "6. Potencia"
        Escribir "7. Salir"
        Escribir ""
        Escribir "Seleccione una opción: "
    
        // Entrada de opción para el usuario
        Leer opcion
    
    FinAlgoritmo

    1.3 - Condicional para llamar a las funciones

    Lo siguiente que quiero que hagas, es crear un condicional que evalúe las posibles opciones puestas por el usuario.

    Por el momento, no quiero que añadas estas llamadas a función, ya que todavía, no las tenemos creadas. Solo quiero que apliques la condición necesaria para cada una de las opciones.

    Piensa en contemplar una opción por si el usuario introduce una opción incorrecta en la consola.

    En este caso, podías utilizar perfectamente un condicional Si-entonces o un condicional Segun. Para este caso concreto, prefiero la segunda opción, ya que las opciones de un menú, son algo bastante repetitivo.

    Algoritmo Calculadora
                        
        // Se declara la variable para las opciones del menú
        Definir opcion Como Entero
    
        // Menú de la calculadora
        Escribir "Calculadora"
        Escribir "1. Suma"
        Escribir "2. Resta"
        Escribir "3. Multiplicación"
        Escribir "4. División"
        Escribir "5. Módulo"
        Escribir "6. Potencia"
        Escribir "7. Salir"
        Escribir ""
        Escribir "Seleccione una opción: "
    
        // Entrada de opción para el usuario
        Leer opcion
    
        // Condicional para llamar a cada función del menú
        Segun opcion Hacer
            1: // Llamar a la función de suma
            2: // Llamar a la función de resta
            3: // Llamar a la función de multiplicación
            4: // Llamar a la función de división
            5: // Llamar a la función de módulo
            6: // Llamar a la función de potencia
            7: // Salir
        De Otro Modo:
            Escribir "Opción inválida. Por favor, seleccione una opción válida."
        FinSegun
                        
    FinAlgoritmo

    1.4 - Menú infinito

    Lo siguiente que tenemos que hacer, para ir terminando con esta primera parte del proyecto, es envolver la interfaz del usuario con un bucle que repita el menú de forma indefinida.

    Espacio publicitario

    Si introduces cualquier valor en la consola, el programa finaliza. No queremos que ocurra eso.
    Lo que queremos, es que si el usuario se equivoca, que introduzca de nuevo otro valor. Si lo pone bien, que se llame a la función correspondiente y luego, le deje utilizar cualquier opción.

    La forma de salir de este bucle, será con la opción 7 (Salir). Deberás hacer funcional esa opción.

    No te compliques en exceso para hacer esto, tan solo recuerda mis palabras: Ejecuta el menú y el condicional con la entrada de datos (todo) Hasta Que la opción valga 7.

    La resolución de esta tarea, parece complicada en exceso. Sin embargo, es tan fácil como añadir dos simples líneas con un bucle Repetir.

    Con esto, no me malinterpretes, no quiero que pienses que realizar el apartado es fácil. Llegar a esta conclusión, te habrá costado o no lo habrás conseguido. Ahora, ya sabes para la próxima, que puedes hacer esto tan sencillo.

    Algoritmo Calculadora
                            
        // Se declara la variable para las opciones del menú
        Definir opcion Como Entero
    
        // Se crea un bucle indeterminado que repite el menú
        Repetir
            // Menú de la calculadora
            Escribir "Calculadora"
            Escribir "1. Suma"
            Escribir "2. Resta"
            Escribir "3. Multiplicación"
            Escribir "4. División"
            Escribir "5. Módulo"
            Escribir "6. Potencia"
            Escribir "7. Salir"
            Escribir ""
            Escribir "Seleccione una opción: "
    
            // Entrada de opción para el usuario
            Leer opcion
    
            // Condicional para llamar a cada función del menú
            Segun opcion Hacer
                1: // Llamar a la función de suma
                2: // Llamar a la función de resta
                3: // Llamar a la función de multiplicación
                4: // Llamar a la función de división
                5: // Llamar a la función de módulo
                6: // Llamar a la función de potencia
                7: // Salir
            De Otro Modo:
                Escribir "Opción inválida. Por favor, seleccione una opción válida."
            FinSegun
    
        Hasta Que opcion = 7
                            
    FinAlgoritmo

    Sección 2: Crear las funcionalidades de la calculadora

    Ahora que ya tenemos la interfaz de usuario lista, ha llegado el momento de entrar en faena con la lógica de la calculadora. Para este proceso, crearemos una función para cada tipo de operación.

    2.1 - Funciones para suma, resta, multiplicación y división

    Puesto que la lógica de estas cuatro funciones es muy parecida, he decidido agruparla en un apartado.

    Lo que tienes que hacer concretamente, es crear cuatro funciones para estas cuatro operaciones básicas. Recuerda que siempre que no recuerdes algo, valga la redundancia, puedes volver a las partes del temario que necesites. Por eso están los temas religiosamente divididos.

    Para crear estas funciones, deberás seguir estas normas:

    • Las funciones tendrán dos parámetros. Eso quiere decir, que las operaciones serán siempre con dos números.
    • Deberás hacer que el resultado de la operación sea devuelto cuando se llame a la función correspondiente

    En el capítulo de las funciones, puedes hacerte una idea de como hacer estas funciones. Revísalo si es necesario.

    Las funciones, son muy parecidas, de forma que si has sabido hacer una, no habrás tenido dificultades con el resto.

    // Esta función calcula la suma de dos valores
    Funcion r<-suma(a, b)
    r <- a + b
    Fin Funcion
    
    // Esta función calcula la resta de dos valores
    Funcion r<-resta(a, b)
    r <- a - b
    Fin Funcion
    
    // Esta función calcula la multiplicación de dos valores
    Funcion r<-multiplicacion(a, b)
    r <- a * b
    Fin Funcion
    
    // Esta función calcula la división de dos valores
    Funcion r<-division(a, b)
    r <- a / b
    Fin Funcion
    
    Algoritmo Calculadora
    
        // Se declara la variable para las opciones del menú
        Definir opcion Como Entero
    
        // Se crea un bucle indeterminado que repite el menú
        Repetir
            // Menú de la calculadora
            Escribir "Calculadora"
            Escribir "1. Suma"
            Escribir "2. Resta"
            Escribir "3. Multiplicación"
            Escribir "4. División"
            Escribir "5. Módulo"
            Escribir "6. Potencia"
            Escribir "7. Salir"
            Escribir ""
            Escribir "Seleccione una opción: "
    
            // Entrada de opción para el usuario
            Leer opcion
    
            // Condicional para llamar a cada función del menú
            Segun opcion Hacer
                1: // Llamar a la función de suma
                2: // Llamar a la función de resta
                3: // Llamar a la función de multiplicación
                4: // Llamar a la función de división
                5: // Llamar a la función de módulo
                6: // Llamar a la función de potencia
                7: // Salir
            De Otro Modo:
                Escribir "Opción inválida. Por favor, seleccione una opción válida."
            FinSegun
    
        Hasta Que opcion = 7
    
    FinAlgoritmo

    2.2 - Funcionalidad de módulo

    Ha llegado el momento de crear una función algo más difícil, la denominada "módulo".

    La función debe ser capaz de devolver el resto de una división entre dos números. Por ejemplo, la división de 10 entre 3, da como resultado 3. El resto es 1. Pues eso mismo es lo que quiero que haga.

    El operador para módulo en PseInt es %. Utilízalo como los otros cuatro operadores.
    Otra forma de expresar este operador en PSeInt es escribiendo MOD.

    Te dejo el código de la función. Debes colocarla fuera del algoritmo, junto con las otras cuatro.

    // Esta función calcula el módulo de dos valores
    Funcion r<-modulo(a, b)
        r <- a % b
    Fin Funcion

    2.3 - Funcionalidad de potencia

    Ahora, crea la última función, la del cálculo de potencias.

    En PSeInt, contamos con un operador de flecha hacia arriba, que puedes escribir con el carácter ^ del teclado. También lo podrás encontrar en la sección del lateral izquierdo, llamada "Operadores y Funciones".

    Espacio publicitario

    Por si no sabes lo que es una potencia, se trata de un número elevado a otro, es decir, multiplicado por él mismo un número x de veces.

    Por ejemplo, si quieres elevar el número 2 a 4, será el equivalente a multiplicar 2 * 2 * 2 * 2. Esta tarea repetitiva, se automatiza en matemáticas con el cálculo de potencias.
    Para representar el ejemplo en PSeInt, sería 2 ^ 4. Con esto ya tienes una buena pista para crear la función.

    // Esta función calcula la potencia de dos valores
    Funcion r<-potencia(a, b)
        r <- a ^ b
    Fin Funcion

    Sección 3: Asociar la lógica de las funciones a la interfaz de usuario

    Ahora que ya tienes una parte en el programa con la lógica, y otra parte con la interfaz de usuario, es el momento de asociar la lógica a dicha interfaz.

    Para este propósito, tan solo tienes que llamar a las funciones en cada opción del menú. El problema, es que las llamadas, deben llevar los dos valores que quiera el usuario. Aún no tenemos la lógica creada para esto. Lo haremos más adelante. De momento, solo haz las llamadas y les das dos valores cualesquiera, tan solo, para que no te marque errores.

    Las llamadas, con el fin de almacenar el resultado deben estar en una variable. Puedes crear una variable que se llame, por ejemplo, resultado. La puedes utilizar de forma general para todas las llamadas. Solo, declárala fuera del condicional y dentro del algoritmo.

    Sencillamente, haremos esto. De momento, no hará nada, porque no hay ni un Escribir que muestre el resultado, pero ya tendremos la lógica de la calculadora asociada a la interfaz de usuario.

    // Esta función calcula la suma de dos valores
    Funcion r<-suma(a, b)
        r <- a + b
    Fin Funcion
    
    // Esta función calcula la resta de dos valores
    Funcion r<-resta(a, b)
        r <- a - b
    Fin Funcion
    
    // Esta función calcula la multiplicación de dos valores
    Funcion r<-multiplicacion(a, b)
        r <- a * b
    Fin Funcion
    
    // Esta función calcula la división de dos valores
    Funcion r<-division(a, b)
        r <- a / b
    Fin Funcion
    
    // Esta función calcula el módulo de dos valores
    Funcion r<-modulo(a, b)
        r <- a % b
    Fin Funcion
    
    // Esta función calcula la potencia de dos valores
    Funcion r<-potencia(a, b)
        r <- a ^ b
    Fin Funcion
    
    Algoritmo Calculadora
    
        // Se declara la variable para las opciones del menú
        Definir opcion Como Entero
        Definir resultado Como Real
    
        // Se crea un bucle indeterminado que repite el menú
        Repetir
            // Menú de la calculadora
            Escribir "Calculadora"
            Escribir "1. Suma"
            Escribir "2. Resta"
            Escribir "3. Multiplicación"
            Escribir "4. División"
            Escribir "5. Módulo"
            Escribir "6. Potencia"
            Escribir "7. Salir"
            Escribir ""
            Escribir "Seleccione una opción: "
    
            // Entrada de opción para el usuario
            Leer opcion
    
            // Condicional para llamar a cada función del menú
            Segun opcion Hacer
                1: resultado <- suma(0,0)
                2: resultado <- resta(0,0)
                3: resultado <- multiplicacion(0,0)
                4: resultado <- division(0,0)
                5: resultado <- modulo(0,0)
                6: resultado <- potencia(0,0)
                7: // Salir
            De Otro Modo:
                Escribir "Opción inválida. Por favor, seleccione una opción válida."
            FinSegun
    
        Hasta Que opcion = 7
    
    FinAlgoritmo

    Sección 4: Crea y asocia la lógica de entrada de datos

    Ahora, si te pregunto en que parte pondrías los dos Leer para pedirle al usuario los dos números con los que quiere operar, ¿qué me responderías?
    Este ejercicio, trata de eso, de que pienses como y donde colocar la solicitud de los dos valores numéricos al usuario. Después, tendrás que pasar esas dos entradas de datos, a cada llamada del menú. Lo importante es que consigas que funcione, si lo has hecho más o menos óptimo, no importa.

    El programa, después de hacer la llamada a una función con los datos del usuario, deberá responder en la consola con el resultado.

    Este es la parte más complicada del proyecto. Si no la consigues hacer, tómatelo con mucha calma. Es perfectamente normal. Mira la solución y analízala poco a poco, mira cada parte y detente a pensar como funciona.

    Puedes utilizar un condicional que contemple si la opción está entre 1 y 6, que solicite los números. Esto antes del condicional Segun. Si crees que esto es muy complicado (que lo es cuando empiezas con programación), hazlo como sabes, repitiendo en cada operación la solicitud de los dos valores al usuario.

    He declarado las dos variables, numero1 y numero2, en la zona que he dejado para variables en el algoritmo. Estas se necesitan para guardar los valores del usuario.

    Lo siguiente que he hecho, has sido crear un condicional después de pedir la opción del menú. La condición de este condicional se cumple, solo si la opción elegida está entre 1 y 6. Si no es así, o se sale del programa con la opción 7, o se le avisa al usuario, de opción inválida con cualquier otro valor numérico.

    En el condicional Segun, puedes ver, que he hecho las llamadas con los valores de entrada del usuario.

    // Esta función calcula la suma de dos valores
    Funcion r<-suma(a, b)
        r <- a + b
    Fin Funcion
    
    // Esta función calcula la resta de dos valores
    Funcion r<-resta(a, b)
        r <- a - b
    Fin Funcion
    
    // Esta función calcula la multiplicación de dos valores
    Funcion r<-multiplicacion(a, b)
        r <- a * b
    Fin Funcion
    
    // Esta función calcula la división de dos valores
    Funcion r<-division(a, b)
        r <- a / b
    Fin Funcion
    
    // Esta función calcula el módulo de dos valores
    Funcion r<-modulo(a, b)
        r <- a % b
    Fin Funcion
    
    // Esta función calcula la potencia de dos valores
    Funcion r<-potencia(a, b)
        r <- a ^ b
    Fin Funcion
      
    Algoritmo Calculadora
      
        // Se declara la variable para las opciones del menú
        Definir opcion Como Entero
        Definir resultado Como Real
        Definir numero1 Como Real
        Definir numero2 Como Real
      
        // Se crea un bucle indeterminado que repite el menú
        Repetir
            // Menú de la calculadora
            Escribir "Calculadora"
            Escribir "1. Suma"
            Escribir "2. Resta"
            Escribir "3. Multiplicación"
            Escribir "4. División"
            Escribir "5. Módulo"
            Escribir "6. Potencia"
            Escribir "7. Salir"
            Escribir ""
            Escribir "Seleccione una opción: "
    
            // Entrada de opción para el usuario
            Leer opcion
    
            // Si la opción no es Salir (7), solicitar los números
            Si opcion >= 1 Y opcion <= 6 Entonces
                Escribir "Introduzca el primer número para operar: "
                Leer numero1
                Escribir "Introduzca el segundo número para operar: "
                Leer numero2
            FinSi
            
            // Condicional para llamar a cada función del menú
            Segun opcion Hacer
                1: resultado <- suma(numero1,numero2)
                    Escribir "El resultado de la suma es: " resultado
                2: resultado <- resta(numero1,numero2)
                    Escribir "El resultado de la resta es: " resultado
                3: resultado <- multiplicacion(numero1,numero2)
                    Escribir "El resultado de la multiplicación es: " resultado
                4: resultado <- division(numero1,numero2)
                    Escribir "El resultado de la división es: " resultado
                5: resultado <- modulo(numero1,numero2)
                    Escribir "El resto de la división es: " resultado
                6: resultado <- potencia(numero1,numero2)
                    Escribir "El resultado del cálculo es: " resultado
                7: // Salir
                De Otro Modo:
                    Escribir "Opción inválida. Por favor, seleccione una opción válida."
            FinSegun
    
        Hasta Que opcion = 7
    
    FinAlgoritmo

    Con este código, tienes el programa completo. Tan solo falta añadir el mensaje de salida en la opción 7.

    Sección 5: Última pincelada y pruebas del programa.

    5.1 - Mensaje de salida del programa

    Como último detalle, quiero que le añadas a la opción de salir, un pequeño mensaje que avise al usuario de que se ha cerrado la calculadora, o una despedida; el mensaje es libre.

    La solución, es poner un sencillo Escribir:

    7: Escribir "¡Hasta la próxima!"

    5.2 - Pruebas del programa

    Si no tienes quien pruebe los programas por ti, tendrás que aprender a hacerlo por tu cuenta. Parece tarea fácil, pero en programas complejos y grandes, tendrás que tener muchos flancos en cuenta.

    Espacio publicitario

    Cuando pruebes un programa, deberás probar todo lo que se te ocurra. Las cosas que dejes sin probar, podrían tener fácilmente errores de lógica.

    Para esta sección, no tendrás solución en la parte de las soluciones, tienes que ir probando todo lo que te diga aquí mismo. Si te funciona como a mi, es que lo tienes perfecto. Además, si se te ocurre alguna prueba extra que no comente, hazla, nunca está de más.

    ¿Por donde empezamos?

    Primero, ejecutaremos el programa y probaremos una opción numérica no válida:

    Seleccione una opción:
    > 15
    Opción inválida. Por favor, seleccione una opción válida.

    Perfecto. Esta parte del programa funciona.

    Ahora, prueba cada una de las operaciones, de la 1 a la 6.

    Si te funcionan todas, prueba también alguna de ellas con valores decimales, si no lo has hecho ya.

    De momento, vemos que funciona todo, el bucle indeterminado nos deja ir eligiendo infinitas opciones del menú y sale cuando queremos.

    Los usuarios son impredecibles. No podemos esperar que no vayan a hacer cosas inesperadas. ¿Qué ocurre si en lugar de un número, pones una letra en la entrada de datos de cualquier Leer?

    Seleccione una opción:
    > Q
    Lin 54 (inst 1): ERROR 120: No coinciden los tipos (OPCION).

    Este problema, no lo vamos a solucionar en este curso de programación con PSeInt, lo debes tener en cuenta para cuando estudies un lenguaje de programación. En todos o en la mayoría, tenemos lo que se conoce como manejo de excepciones y control de datos. Estas técnicas son muy específicas para cada lenguaje.
    En esta plataforma lo aprenderás a hacer con Python, en los siguientes cursos.

    El manejo de excepciones son como condicionales, que hacen cosas en torno a si ocurren ciertos errores (si ocurre este error, haz esto para evitarlo).

    Ahora sí, doy por concluido este curso. Espero que haya sido de tu agrado y que hayas adquirido muchos conocimientos.
    Quizás piensas que no sabes hacer muchas cosas en programación por tu cuenta. Es normal, pero con un poco de práctica en algún lenguaje de programación en concreto, verás que muy pronto empiezas a hacer tus proyectos realidad y que en verdad, si que sabes hacer más de lo que piensas.

    Por cierto, échale un vistazo a la sección de diagrama de flujo que ha salido con la calculadora. Ya verás que locura. Al tener funciones, tiene hasta varios diagramas.

    Espacio publicitario




    Espacio publicitario



    Espacio publicitario