Download Descarga
Document related concepts
Transcript
3.- Programación, la base para la formación en ingeniería Javier Jiménez Torres, Jesús Adrián Trejo Melena, Armando Flores Jaime ESIME Zacatenco Resumen En éste artículo se establece la importancia de la programación como herramienta para la solución de problemas en ingeniería. Para ello se ha seguido una metodología establecida para desarrollar aplicaciones de Windows, útiles en diversas áreas de la ingeniería. Lo anterior se realizó tanto en el software libre dev c++ como en el software especializado Matlab® para enfatizar en las ventajas y desventajas de utilizar cada uno de ellos. Como resultado se presentan las aplicaciones de Windows capaces de dar solución a problemas de diversas áreas de la ingeniería reduciendo así el trabajo del ingeniero a la correcta interpretación de los resultados obtenidos y su significado. Palabras clave: programación, ingeniería, metodología, algoritmo, diagrama de flujo, lenguaje de programación, aplicación de Windows, impedancia, sistema trifásico. Desarrollo Introducción Desde la presentación del diseño de la máquina analítica de Charles Babbage en 1816, personajes sobresalientes en la historia de la informática como la Condesa de Lovelace Ada Augusta ya consideraban utilizar ésta máquina para realizar análisis sencillos [1] mediante el uso de tarjetas perforadas y un lenguaje de programación parecido a los actuales lenguajes ensambladores. Para desarrollar códigos que fueran capaces de realizar cálculos, tareas cotidianas, gestionar información y resolver problemas fue necesario establecer diversos lenguajes de programación [2] en función de la aplicación que se quisiera realizar. En el presente documento se utilizarán los lenguaje de programación c y c++ debido a que c es un lenguaje de aplicación general con el cual se puede escribir cualquier tipo de programa [1] y c++ es el lenguaje en el que se han escrito la mayoría de las aplicaciones para mini y micro ordenadores desde su presentación en 1980 [3]. Programación en Ingeniería El uso de programas computacionales para resolver problemas cotidianos es una práctica que se desarrolla desde hace ya varias décadas. Con lo cual la computadora se convierte en una herramienta indispensable en el trabajo cotidiano. En las áreas de la ingeniería y las ciencias físico-matemáticas el uso de herramientas computacionales como apoyo en la realización de cálculos es también de gran utilidad para la solución de problemas [4]. Lo anterior se realiza elaborando algoritmos que, al ejecutarse desde un compilador, sean capaces de mostrar resultados en pantalla y de esta manera reducir el trabajo del ingeniero a la interpretación de los mismos. Metodología La capacidad del programador para solucionar problemas es una parte fundamental para desarrollar aplicaciones de Windows tanto en ingeniería como en otras áreas del conocimiento [4]. Una vez resuelto el problema de una manera abstracta se puede desarrollar dicha solución en una serie de pasos ordenados que se puedan ejecutar directamente en un ordenador [2], [5]. En este sentido se puede definir una metodología general para la solución de cualquier problema con ayuda de una computadora con solo 2 pasos a seguir: la solución del problema de forma analítica y la implementación de la solución en la computadora [2]. La metodología que se presenta a continuación describe a detalle los pasos intermedios de la metodología general presentada anteriormente. a) Planteamiento del problema e identificación de variables Para solucionar un problema es de gran importancia establecer con claridad cual es el problema [4]. Si no se define correctamente el problema se podría dificultar llegar a una solución simple y rápida [5]. La identificación de variables se refiere a establecer los datos de entrada que recibe el programa y los datos de salida deseados. Para ello es importante realizar el planteamiento del problema de forma escrita para posteriormente identificar los nombres y los verbos que contiene. Los nombres se pueden interpretar como datos de entrada y salida y los verbos como acciones que llevaran a la solución [5]. b) Diseño del algoritmo mediante un diagrama de flujo Para plantear la solución a un problema se deben establecer las acciones a ejecutar por el programa escribiéndolas con palabras sencillas que requieren menos precisión que un lenguaje formal de programación. Lo anterior se realiza por medio de un diagrama de flujo, en el cual se indica el flujo de ejecución de las acciones que debe realizar el programa [5]. El diagrama de flujo se realiza utilizando principalmente la simbología que se muestra en la tabla 1. c) Implementación del diagrama de flujo Una vez establecido el diagrama de flujo se debe codificar en un lenguaje formal de programación estableciendo su estructura real respetando la sintaxis específica de cada lenguaje [5]. Símbolo Descripción Inicio y fin Se utiliza para iniciar y finalizar un programa. Se utiliza para representar un proceso, dicho proceso puede contener una o mas sentencias. Las asignaciones se representan con una flecha. Representa las decisiones en un punto determinado, además representa una estructura cíclica. Se utiliza para leer datos tanto de teclado como de archivos. Se utiliza para desplegar información en pantalla. Se utiliza para unir todos los elementos de un diagrama, indicando el flujo de ejecución. Tabla 1. Simbología utilizada para elaborar diagramas de flujo. Los lenguajes de programación han evolucionado a la par con la tecnología existente y para proporcionar al programador una forma sencilla de recordar códigos y funciones que lleven a cabo alguna tarea en específico [6]. Los lenguajes de programación se pueden clasificar desde diferentes puntos de vista [8] como se observa en la tabla 2. Generación: Nivel: Propósito: Orientación: Primera Máquina General Procedular Segunda Bajo Eventos tercera Cuarta Alto Específico Objetos Tabla 2. Clasificación de los lenguajes de programación. El lenguaje de programación en el cual se realice el código depende de la naturaleza del problema que se desea resolver y también de las capacidades físicas de la computadora en la que ejecutara la aplicación de Windows. d) Verificación y depuración del programa La mayoría de las ocasiones que se ejecuta un programa éste presentará fallas no detectadas durante el proceso de definición del problema o bien al generar el diagrama de flujo. Por lo tanto al ejecutar un programa se debe verificar que se obtengan los resultados esperados, de no ser así se procede a depurar el programa, que no es mas que detectar y corregir los errores que contenga [5]. En general se pueden destacar 4 tipos de errores que se pueden presentar al ejecutar una aplicación de Windows: El error de sintaxis es una violación a las reglas del lenguaje de programación, el error de vínculo ocurrirá cuando cualquier rutina requerida por la función principal no pueda ser localizada por el compilador, un error de lógica ocurre cuando la aplicación de Windows muestra los resultados incorrectosy finalmente un error de tiempo de ejecución ocurre cuando el programa intenta realizar una acción ilegal como las definidas por las leyes de las matemáticas o del compilador que se esté utilizando. e) Documentación del programa En la documentación del programa se deben registrar los pasos anteriormente descritos en la metodología aquí presentada. La documentación puede incluir los siguientes puntos [5]: 1. Descripción de la definición del problema con la definición de variables y el proceso que lleva a cabo el programa. 2. El algoritmo en diagrama de flujo con comentarios de cada bloque. 3. Ejemplos de datos de entrada y resultados obtenidos al ejecutar el programa. 4. Resultados de la verificación y la depuración. 5. Instrucciones para el usuario. Aplicaciones en áreas de la ingeniería Las aplicaciones que se pueden desarrollar con ayuda de la programación tienen sus límites solo en las limitaciones del propio programador. Si un problema se puede resolver de manera analítica entonces es posible generar un algoritmo que al ser ejecutado por un ordenador proporcione la misma solución o bien una buena aproximación de ésta. A continuación se presenta una aplicación de Windows para realizar transformaciones de sistemas eléctricos trifásicos conectados en estrella a su equivalente en conexión delta y viceversa utilizando 2 lenguajes de programación. a) Planteamiento del problema e identificación de variables A partir de los 3 valores de impedancia de un arreglo trifásico ya sea delta o estrella se desea obtener los valores de impedancia para la conexión trifásica equivalente. Por lo tanto los datos de entrada son las 3 impedancias del sistema original y el arreglo eléctrico original (delta o estrella) y los datos de salida son las 3 impedancias equivalentes. Considere los sistemas trifásicos de la figura 1. De los cuales se conocerá por medio de la teoría de los circuitos eléctricos los valores de las impedancias equivalentes. Figura 1. Sistemas trifásicos delta y estrella. El valor de las impedancias debe ser el mismo tanto en las ramas de la delta como en las de la estrella. Por lo tanto se analiza la impedancia que existe entre las ramas 1 y 2 de ambas configuraciones deduciendo que la impedancia Za en paralelo con la impedancia resultante del arreglo en serie de Zb y Zc debe ser equivalente a la impedancia resultante del arreglo en serie entre Z2 y Z3. Se realiza el mismo análisis para las ramas 2 y 3 y finalmente para las ramas 3 y 1 obteniendo las siguientes ecuaciones: Expresando las ecuaciones anteriores en forma matricial y aplicando el método de solución de Gauss-Jordan se obtienen las ecuaciones para realizar transformaciones Delta-Estrella: [ ] [ ] [ ] Aplicando un análisis algebraico simple se pueden obtener las tres ecuaciones para realizar transformaciones Estrella-Delta. b) Diseño del algoritmo mediante un diagrama de flujo En la figura 1 se muestra el diagrama de flujo para la problemática descrita. Figura 2. Diagrama de flujo para realizar transformaciones Delta-Estrella y Estrella-Delta. Primero se pedirá al usuario seleccione una opción de un menú dentro de la aplicación. Si se elige realizar alguna transformación entonces se piden las impedancias correspondientes, se realizan los cálculos y finalmente se muestran los resultados en pantalla. También se cuenta con la opción de modificar parámetros para hacer más transformaciones sin tener que ejecutar nuevamente la aplicación. Si se elige la opción salir del menú principal o bien si no se desea modificar parámetros la aplicación termina de ejecutarse. c) Implementación del diagrama de flujo El diagrama de flujo de la figura 2 fue codificado en 2 lenguajes de programación utilizando el compilador de dev c++ y el software especializado Matlab ®. Para la aplicación en c++ se desarrollo una clase usando la Programación Orientada a Objetos (POO) para proveer al compilador del manejo sencillo de los números complejos, escribiendo así mayor cantidad de código que el escrito en Matlab ®. Sin embargo, para utilizar las capacidades con las que cuenta éste último se debe pagar por una licencia de uso de software. d) Verificación y depuración del programa Para el desarrollo del código en c++ se presentaron varios errores de sintaxis y un error de vínculo. En el caso del código escrito en Matlab ® se presentaron errores de sintaxis a los cuales se dio solución con la ayuda con la que cuenta el software. e) Documentación del programa: La mayor parte de la documentación del programa ha sido ya descrita, a continuación se complementa con los resultados obtenidos al ejecutar el programa (figuras 3 y 4) e instrucciones generales para el usuario. Figura 3. Resultados de la aplicación desarrollada en c++. ® Figura 4. Resultados de la aplicación desarrollada en Matlab . Para terminar la documentación del programa se pueden mencionar las siguientes recomendaciones: la opción se debe ingresar un valor numérico, de lo contrario se puede generar un error de tiempo de ejecución. Para el caso de la opción de modificar parámetros en c++ solo existen 2 caracteres validos para la opción “si”: S mayúscula o s minúscula. Para la aplicación en Matlab® ocurre la misma situación además de que los caracteres se ingresan entre apóstrofos. Atributos que proporciona el saber programar El uso de la programación proporciona al ingeniero la posibilidad de desarrollar diversas capacidades útiles para su formación, lo dota de capacidad de análisis para resolver problemas, capacidad de síntesis y desarrollo de análisis lógicos [6]. Además de proporcionarle una mente más abierta y mayor concentración. Conclusiones Debemos utilizar la programación como herramienta para la solución de problemas en ingeniería, en una época en la cual la informática y los avances tecnológicos han presentado tanto auge, un ingeniero debe tener la habilidad de saber utilizarlos en su beneficio. Es importante saber desarrollar aplicaciones en código libre debido a que se pueden ejecutar en cualquier computadora sin necesidad de que el software en el cual fueron desarrolladas se encuentre instalado en ellas, a diferencia de las desarrolladas en paquetes específicos como lo es Matlab®. Además de que se debe contar con la licencia de uso del software. La orientación de las clases de programación impartidas en las instituciones educativas para la formación de ingenieros debe ser de carácter analítico y enfocada a la solución de problemas de ingeniería. Referencias [1] [2] [3] [4] [5] [6] Walter Savitch, Resolución de problemas con c++, Pearson Education, México, 2000. Gustavo López-Ismael Jeder-Augusto Vega, Análisis y diseño de algoritmos: Implementación en c y Pascal, Alfaomega, Buenos Aires, 2009. Al Stevens-Clayton Walnum, Programación con c++, Anaya Multimedia, Madrid, 2000. Delores M. Etter, Introduction to c++ for engineers and scientists, Prentice Hall, New Jersey EUA, 1997. Andrew C. Straugaard, Técnicas estructuradas y orientadas a objetos: una introducción utilizando c++, Prentice Hall, México, 1998. Felipe Ramírez, Introducción a la programación. Algoritmos y su implementación en Visual Basic.NET, c#, Java y c++, Alfaomega, México, 2007. Biografías Armando Flores Jaime. Nació en San Luis Potosí México en 1975, profesor de tiempo completo en la ESIME – Zacatenco, Obtuvo el grado de Ingeniero Electricista en la ESIME Zacatenco del Instituto Politécnico Nacional (IPN). Su área de interés es el control de motores de inducción de corriente alterna, la automatización de procesos y las tecnologías de información. Jesús Adrian Trejo Melena. Nació en Los Reyes La Paz Estado de México en 1989, actualmente es alumno de la ESIME - Zacatenco del Instituto Politécnico Nacional (IPN) en la carrera de Ingeniería en Control y Automatización. Javier Jiménez Torres. Nació en Texcoco Estado de México en 1989, actualmente es alumno de la ESIME – Zacatenco del Instituto Politécnico Nacional (IPN) en la carrera de Ingeniería en Control y Automatización.