Download Descarga

Document related concepts

Thunk wikipedia , lookup

Programación funcional wikipedia , lookup

R (lenguaje de programación) wikipedia , lookup

Autolisp wikipedia , lookup

Lisp wikipedia , lookup

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.