Mostrando entradas con la etiqueta Programacion de objetos. Mostrar todas las entradas
Mostrando entradas con la etiqueta Programacion de objetos. Mostrar todas las entradas

domingo, 25 de noviembre de 2012

Funciones en el lenguaje C

Una función en C es un pedazo de código fuente que realiza una tarea en específico. Por ejemplo void Saludar (void) { printf("Hola a todos !!! "); } Esta función se llama Saludar ( ), su tarea es llamar a otra función con el nombre de printf( ), que imprime el mensaje: Hola a todos!!!. El cuerpo de la función empieza con la siguiente linea de código: void Saludar (void) La declaración de la función consiste de un tipo de regreso "void", el nombre de la función "Saludar", y un par de parentesis que contienen o pueden contener una lista de parámetros "(void)". Después analizaremos mas a fondo los tipos de regreso y las listas de parámetros, por ahora lo importante es saber cómo se declara una función. Después de la declaración de la función sigue el "cuerpo": { printf("Hola a todos !!! "); } El cuerpo siempre va a ir dentro de las llaves {} y va a estar construido por una serie de declaraciones. Por lo general, las declaraciones siempre van seguidas por un punto y coma (;). Un programa es un grupo de instrucciones para la computadora, por lo que una declaración se podría definir como una instrucción en específico. En este caso, printf() es nuestra unica declaracion, la cual se encarga de imprimir texto. Con la práctica, iras aprendiendo a crear declaraciones más eficientes que harán que tus programas corran más rápido y con un menor riesgo de cometer errores. Si deseamos ver como funciona, debemos crear un nuevo proyecto y dentro de main.c poner lo siguiente: #include void Saludar(void); int main (int argc, const char * argv[]) { Saludar(); return 0; } void Saludar (void) { printf("Hola a todos !!! "); } El código empieza con la inclusión de la biblioteca (#include ) y justo debajo hay una linea de código que dice: void Saludar(void);, esta linea de código se debe de poner por cada función que tengamos en nuestro código. esta línea de código siempre debe de ir abajo de las bibliotecas y debe de escribirse de la misma manera con la que se declara la función pero agregando un punto y coma al final (:). Después nos podemos dar cuenta que dentro del "main" se encuentra una declaración que dice el nombre de la función (Saludar();). Esto sirve para que main mande a llamar la función Saludar() y una vez que es llamada, se ejecute lo que está dentro de la función, en este caso sería el printf( ) que imprime "Hola a todos!!!. Para ver lo que resulta de este código solo corre el programa. Las funciones son muy útiles ya que si desearas escribir muchas veces esa línea de texto, lo único que necesitas es mandar a llamar a la función en vez de volver a escribir la linea de texto. Ahora ya sabes lo que es una función, para qué sirven y como se declaran para poder utilizarlas. Referencias: Mark, D. (2009).Learn C on the Mac. Apress, 25-32.

jueves, 8 de noviembre de 2012

Lenguaje C.



C ha sido la elección  para la prueba  y medición de aplicaciones por años. Pero con la popularidad de los lenguajes orientados a objetos, algunos se preguntan si C tiene lugar en las pruebas de sistemas del mañana. Debido a esto, es  importante entender cuales son los puntos fuertes y débiles del lenguaje C.

El lenguaje C ha sido utilizado en la prueba y la medición de sistemas integrados y controladores de dispositivos  por mucho tiempo. Inicialmente fue creado para direccionar los  desafíos de reutilizar código comúnmente relacionado con lenguajes de ensamble. El lenguaje C fue desarrollado para ser una plataforma independiente, que puede abstraer la capa de hardware, por lo que C provee mucho más eficiencia en velocidad y memoria asociado con el ensamble mientras incrementa la portabilidad del código y disminuye el tiempo de desarrollo a los programadores.


Pero hablemos acerca de las fortalezas del lenguaje. Una de ellas puede ser su bajo nivel, que da la capacidad de optimizar el código ya que provee un acceso directo al sistema operativo o a un hardware en específico y con esto tendrás una mejor habilidad de controlar cada una de las operaciones específicas y cuantas operaciones son realizadas a nivel de máquina, optimizar compiladores y la capacidad de llamar código ensamblado. También puedes controlar el tamaño  del programa y la velocidad de ejecución.

Se puede decir que C es altamente portable y con un extenso grupo de herramientas para la reutilización de código debido a que puedes compilar un programa en C que esté adherido a una reconocida industria estándar, como ANSI C, en donde hardware y sistema operativo son independientes para una gran variedad de plataformas de computadora con lo que se puede compilar en varios sistemas operativos con un mínimo cambio de su código fuente. Como resultado, el lenguaje tiene una gran cantidad de comunidad de programadores, millones de líneas de código como ejemplos y manejadores de hardware que han sido escritos en lenguaje C.

También hay varios entornos de desarrollo integrado que contienen varios propósitos generales con respecto al desarrollo en C como Microsoft Visual Studio, que proveen una funcionalidad  adicional, como conectividad con bases de datos (API´s), el control de algoritmos PID y el soporte de diversos  grupos de controladores.
Con la capacidad de ejecutar manipulaciones directas de hardware, fácilmente se puede controlar cuántos datos son  almacenados en memoria, y reutilizar millones de líneas preexistentes de código matemático. El lenguaje C está bien situado para el desarrollo de aplicaciones con un estricto espacio y rendimiento requerido  o aplicaciones que envuelven una extensa señal de procesamiento y análisis como   controladores, sistemas integrados y aplicaciones en tiempo real que se pueden beneficiar de la incrementada velocidad y procesamiento disponible en C (si el código es escrito de manera eficiente).

Pero la programación en lenguaje C también tiene sus desventajas ya que este no es un lenguaje orientado a objetos. Con aplicaciones complejas, usualmente es requerido agrupar datos como si fueran una estructura. Esta es una característica estándar  en la mayoría de los lenguajes de alto nivel. Como una extensión, los lenguajes orientados a objetos ofrecen soporte no solo para crear tipos de datos modificados sino también para definir métodos específicos para trabajar con esos datos. En particular, una de las características de la programación orientada a objetos es que puedes modular distintos componentes llamados "objetos". Los programadores pueden encapsular  pruebas del mundo real de hardware como la adquisición de datos de instrumentos y aparatos como lo son los objetos. Los objetos de software modelan entidades del mundo real y como objetos del mundo real, cada objeto del software está definido por un estado y por un comportamiento. El estado del objeto es el grupo de variables que vas a usar cuando describas el objeto. Por esto, los objetos tienen un específico  comportamiento o acciones que son capaces de realizar. Como resultado una vez que hayas creado un objeto tú tienes un nuevo tipo de dato en el cual distintas  operaciones pueden ser realizadas.

Otra desventaja es la administración de memoria. Con un bajo nivel de memoria, el acceso disponible en C viene de la responsabilidad del manejo de memoria, de su asignación y des asignación. La falta de limpiar el código puede significativamente influenciar en el rendimiento y determinismo de la aplicación. Con el administrador de memoria, puedes asignar nueva memoria que necesites pero después debes llamar al recolector de basura para disponer de nuevo de la memoria utilizada una vez que la dejes de usar.

con respecto a la ejecución paralela, los fueron una avanzada llave en la historia de los lenguajes textuales. Con la capacidad de virtualizar la ejecución de múltiples funciones a la vez, tu puedes crear interfaces de usuario que puedan ejecutar archivos (1/0), entradas a base de datos y el control de hardware sin que disminuya su rendimiento.
Para manejar estos beneficios, los programadores utilizan específicos hilos y librerías temporales para organizar los horarios de diferentes secciones de código. Por lo tanto, cuando se desarrolla una aplicación que ejecuta controladores PID mientras se despliega una interfaz de usuario , debes crear por lo menos dos aplicaciones de hilo para mantener la consistencia de ejecución en tiempo requerido por el controlador PID y alojar suficientes recursos para mantener una suave y responsable interfaz de usuario. También debes ser cuidadoso  para acceder datos globales y ser competente en el uso de específicos multihilos constructores, como los semáforos y cerraduras, para asegurarse que la información no es accesible para múltiples varios al mismo tiempo .

Desde mi punto de vista C tiene mucho futuro, especialmente  para las aplicaciones de prueba por su acceso directo a la memoria y mínimos gastos generales de software que son aspectos importantes carentes en los lenguajes de programación mas modernos. C da a los desarrolladores la libertad de escribir código para un numero largo de plataformas; todo sobre micro controladores asta avanzados procesos para el control de sistemas. Con el numero limitado de restricciones en el lenguaje y la capacidad de desarrollar diversas aplicaciones, C es conveniente y efectivo para varias pruebas de medición de tareas, dando a los ingenieros una razón más para seguir utilizando y desarrollando en este lenguaje. 


Referencias:
Logan, W. (2008). Is C Dead?. EE: Evaluation Engineering47(5), 44-49.
Link del artículo

martes, 2 de octubre de 2012

Programacion Orientada a Objetos

Programación orientada a objetos (OO), es una estructura que pertenece al funcionamiento actuales de todos los sistemas, pero para entender mejor este tema debemos comprender el concepto de comunicación entre clases y el uso externo de los métodos entre las clases, esto quiere decir que una buena estructura de un programa facilita la ejecución y la lectura del pseudocodigo creando una forma amigable de programar.
En el caso de comunicar variables consiste en que distintas clases pueden modificar o solicitar el estado de las variables e incluso puede ejecutar las acciones de los métodos esta acciones se les llama herencia a esta estructura de comunicación se le llama objetos puedes decides comunicar una clase por un objeto que tiene el método de esa clase creando comunicaciones entre objetos de distintas clases.

Grothoff, C., Palsberg, J., & Vitek, J. (2007). Encapsulating Objects with Confined Types. ACM Transactions On Programming Languages & Systems29(6), 32-32:41. doi:10.1145/1286821.128682