INGENIERIA EN DESARROLLO DE SOFTWARE FUNDAMENTOS DE PROGRAMACIÓN UNIDAD 1. Preparando el camino hacia la programación Evidencia de aprendizaje. Paradigmas y metodología de la programación Autor: José Humberto Ramos Rivera Matrícula: ES1921010469 Grupo: DS-DFPR-1902-B1-005 Docente: Lic. Rocío Alejandra Vázquez Tzompantzi INTRODUCCIÓN A LA PROGRAMACIÓN Introducción Posiblemente la computadora ha sido uno de los inventos más importantes del hombre, basta con dar un vistazo a nuestro alrededor para ver que estamos rodeados en casi todo momento por equipos electrónicos que atienden a nuestras necesidades a través de instrucciones que se envían a través de un teclado, un mando, una pantalla táctil e inclusive por medio de la voz. Conforme avanza el desarrollo tecnológico, se vuelve inevitable la interacción con aparatos inteligentes, que nos ayudan en hacer más práctica nuestra vida diaria en cualesquiera de los aspectos que nos imaginemos, el educativo, laboral, entretenimiento, etc. Pero, ¿cómo es posible que estos aparatos entiendan y lleven a cabo las tareas que pedimos?, pues bien, demos las gracias entonces a los programas. Lenguaje de programación, programas y programación Los autores Cedano, Rubio y Vega (2014) definen que: Un lenguaje de programación es: el conjunto de símbolos y caracteres que se combinan siguiendo unas reglas de síntaxis predefinida y con esto permitir la transmisión de instrucciones a la computadora. Los símbolos y caracteres antes mencionadosson traducidos internamentea un conjunto de señales eléctricasrepresentadas en lenguaje de máquina. (p. 160) es decir, es un lenguaje formal diseñado para organizar algoritmos y procesos lógicos que posteriormente serán ejecutados por una computadora o sistema informático permitiendo su comunicación con el usuario humano. Existen dos tipos de lenguaje de programación: Lenguaje de bajo nivel. Están diseñados para un hardware en específico, no pueden migrar a otras computadoras. Lenguaje de alto nivel. Son lenguajes más universales, pueden ejecutarse en diversos tipos de sistemas informáticos ya que son independientes de la arquitectura del software. Los lenguajes de programación son la base del conjunto de instrucciones u órdenes que la computadora interpreta para resolver un problema, a éste conjunto de instrucciones se le denomina programa. El programa debe ser compilado o interpretado para poder ser ejecutado y así cumplir su objetivo. En consecuencia, la programación es el proceso del desarrollo de un programa para solucionar un determinado problema informáticamente, este proceso se compone de 5 fases para la elaboración de un programa: análisis, diseño, codificación, explotación y mantenimiento. La industria del software se ha impuesto sobre todas las demás, desde las ciencias más avanzadas a la tarea más cotidiana., por lo tanto, en la actualidad programar se trata de usar nuestra creatividad e ingenio para resolver problemas y automatizar tareas con la ayuda de una computadora. Dicho de otra forma, la programación trata de entender, construir y modificar software, hoy presente en miles de dispositivos, de ahí que se potencialice su importancia. Paradigmas de programación Los paradigmas de programación se entienden como los distintos enfoques del desarrollo de un programa y las técnicas correspondientes, define la forma en que se estructura el código y la relación que éste guarda con los datos. Los principales paradigmas de programación son: Imperativo. Los programas se componen de un conjunto de sentencias que cambian su estado. Son secuencias de comandos que ordenan acciones a la computadora. Declarativo. Opuesto al imperativo. Los programas describen los resultados esperados sin listar explícitamente los pasos a llevar a cabo para alcanzarlos. Lógico. El problema se modela con enunciados de lógica de primer orden. Funcional. Los programas se componen de funciones, es decir, implementaciones de comportamiento que reciben un conjunto de datos de entrada y devuelven un valor de salida. Orientado a objetos. El comportamiento del programa es llevado a cabo por objetos, entidades que representan elementos del problema a resolver y tienen atributos y comportamiento. El uso de la programación orientada a objetos se popularizó a principios de los 90 y actualmente son muchos los lenguajes de programación asociados a este paradigma. Las características del paradigma orientado a objetos son: encapsulamiento, abstracción, polimorfismo y herencia. Muchos lenguajes utilizados en la actualidad están orientados a objetos, como Java, C++, Python o Delphi, por mencionar algunos ejemplos. La importancia de los paradigmas radica en que, como ya se mencionó en los párrafos anteriores, es en palabras simples el estilo del desarrollo de los programas, es decir, un modelo para resolver problemas computacionales, de ahí también la relevancia de conocer las características de los diferentes tipos de paradigmas, puesto que cada paradigma es ideal para la resolución de un conjunto de problemas en particular, por lo que no puede decirse que uno sea necesariamente mejor que otro ya que son la forma, que determinan los métodos y las herramientas que un programador usara en la construcción de un software, y ello dependerá de la funcionalidad y aplicación de éste último. PROGRAMACIÓN Y USO COTIDIANO Como ya lo hemos visto, los programas informáticos están presentes en muchas de las actividades que se realizan cotidianamente, a título personal en el ámbito laboral el uso de programas de hojas de datos como Excel son fundamentales para alcanzar los objetivos de funcionalidad y eficiencia que se requieren al manejar extensas bases de datos, ayudando de esta manera a la organización, clasificación y análisis de datos, que a su vez permiten la generación de reportes que servirán como soporte a la toma de decisiones de diversos escenarios. Llevando el conocimiento de los conceptos estudiados en esta unidad, aplicaremos a una problemática real el proceso de desarrollo de un programa para llegar a una solución. Problemática La problemática para resolver será saber cuáles son las ganancias obtenidas por el rendimiento otorgado por el banco si depositamos nuestro ahorro disponible en un periodo mensual. Análisis del problema Hacemos uso de una tabla para darle sentido práctico a este paso. Salida deseada Métodos a utilizar Datos de entrada Datos adicionales Condiciones a cumplir Las ganancias del ahorro en base al rendimiento ofrecido por el banco en el periodo de un mes Primero para calcular el ahorro disponible se usará el cálculo: Ahorro = Sueldo mensual – Gasto mensual Después se calcula la ganancia: Ganancia = Ahorro * rendimiento Se requiere conocer el sueldo mensual representado por sm y los gastos totales mensuales representados por gm Conocer el rendimiento otorgado por el banco, estará identificado por la letra r Que el gasto mensual sea menor al sueldo mensual, de lo contrario no se podrá generar ahorro Diseño del algoritmo Generamos el pseudocódigo para poder representar el algoritmo: Calcular ganancias generadas por el rendimiento otorgado por el banco en el ahorro mensual __________________________________________________________________________ 1. Conocer el sueldo mensual (sm) y el gasto mensual (gm) 2. Calcular: ahorro = sm – gm 3. Imprimir el resultado (ahorro = a) 4. Conocer el rendimiento (r) 5. Calcular: ganancia = a * r 6. Imprimir el resultado (ganancia) ___________________________________________________________________________ Y elaboramos un diagrama de flujo: Inicio sueldo mensual / gasto mensual ahorro <- sueldo - gasto ahorro ahorro / rendimiento ganancia <- ahorro * rendimiento ganancia Fin Prueba de escritorio Validamos el pseudocódigo y el diagrama de flujo mediante una prueba de escritorio. Datos de entrada Instrucción a realizar Resultado Sueldo mensual / gasto mensual Ahorro = sueldo mensual – gasto mensual Ahorro 10,000 / 8,500 10,000 – 8,500 1,500 Ahorro / rendimiento Ganancia = ahorro * rendimiento Ganancia 1,500 / 0.05 1,500 * 0.05 75 Una vez hecha la comprobación mediante la prueba de escritorio confirmamos que el diseño del algoritmo es viable y que puede ser programable, si queremos obtener una mayor proyección, como oportunidad se puede ampliar el desarrollo del algoritmo para saber cuanto sería la ganancia por mes y la ganancia que se puede obtener en un año, considerando que mes con mes puede haber incremento o decremento en el valor de cada una de las variables. Conclusiones Es interesante apreciar la fluidez del desarrollo del ejemplo de programa siguiendo cada uno de los pasos que se requieren para el planteamiento del problema, el análisis, el diseño del algoritmo y su comprobación, aunque sinceramente el planteamiento del problema fue la parte más complicada para llevarla a un plano programático, a pesar de que la idea la tenía bastante clara, esa transición causó un inicio problemático. Una vez resuelto ese pequeño escollo, de la mano de la metodología y una buena delimitación de los datos y variables presentes, el proceso del diseño del algoritmo mediante un pseudocódigo y un diagrama de flujo resultó menos complicado siendo exitosa la comprobación del proceso mediante la prueba de escritorio. En realidad, considero que ha sido un ejercicio muy sencillo en cuanto a la problemática propuesta, pero bastante revelador y reforzador de los conceptos vistos a lo largo de esta unidad. Bibliografía Cedano Olvera, M. A., Cedano Rodriguez, A., Rubio González, J. A., & Vega Gutierrez, A. C. (2014). Fundamento de computación para ingenieros. México: Grupo Editorial Patria. Chaves Torres, A. (2017). Algoritmos. Bogotá: UNAD. Joyanes Aguilar, L. (2008). Fundamentos de programación. Madrid, España: Mc Graw Hill. Universidad Abierta y a Distancia de México. (2019). Unidad 1. Preparando el camino hacia la programación. Ciudad de México: DCEIT.