domingo, 31 de octubre de 2010

Porque no debemos utilizar la librería conio.h en ANSI C.


Hace rato que estaba programando en uno de nuestros lenguajes de programación favoritos, el ANSI C, por supuesto =) me surgió una duda interesante al utilizar ciertas librerias en una plataforma y otra. Como mi transición de Microsoft Windows a Linux Ubuntu fue un poco lenta, al quererme adaptar a otro entorno donde habrá “una mejor manera  de programar ” descubres ciertas cosas que no deberían de ser si estamos tan acostumbrados al uso de plataformas como Windows. A que me refiero con esto, para ser mas especifico, todos o la gran mayoría que crecimos utilizando sistemas operativos como Windows, al momento de introducirnos a la programación, como lo fue con ANSI C utilizando compiladores para dicha plataforma, se hacen uso de algunas librerías que no deberían ser utilizadas como es el caso de la tan conocida librería conio.h
Dado esto me surgió la curiosidad de investigar un poco, y redactar una breve reseña sobre porque no debemos utilizar tan conocida librería.

Nos trasladaremos a los años 80,s cuando una conocida compañía de software como lo es Borland. Fue fundada en 1983, en la actualidad, ya no es tal empresa, ya que fue vendida a una empresa llamada CodeGear(que sigue dando soporte y desarrollo a nuevos productos) que después fue vendida a otra empresa llamada Micro Focus, actualmente dicha empresa no es muy popular, esta dedicada al software empresarial.

Borland desarrollo varios compiladores para lenguajes como: Prolog, Pascal, Cobol, entre muchos otros, pero el mas popular para C y C++ fue el tan conocido Turbo C++.

Bueno ahora pensaran, que tendrá de malo que una empresa de software desarrolle compiladores para determinado lenguaje, pues bueno sabemos que en la actualidad para desarrollar nuevos productos (de cualquier área) se deben seguir ciertos estándares, conocidos por ser un conjunto de reglas a seguir. En la programación también existen estándares, pueden haber miles de compiladores para un lenguaje pero claro todos los compiladores deben seguir el estándar del lenguaje. A que voy con esto, que a la compañía Borland le dio igual seguir un estándar y en sus compiladores desarrollo librerías no estándares, es decir que esas librerías solo se utilizan en los compiladores que desarrollo dicha empresa, como la tan conocida librería conio.h.

Dicha librería se ha convertido para programadores acostumbrados a utilizar compiladores de Borland en una herramienta indispensable para desarrollar sus aplicaciones.
Esta librería contiene los prototipos de las funciones, macros, y constantes para preparar y manipular la consola en modo texto en el entorno de MS-DOS, dicho mas simple esta nos permite dar un “mejor formato” al texto en la terminal de MS-DOS, ya sea dandole color al texto o color al fondo, por mencionar un ejemplo simple.
Pero acaso ¿nosotros requerimos que nuestros programas desde la linea de comandos se vean bonitos?
Claro que no, lo importante es que de verdad hagan lo que deban de hacer, que funcionen y sean legibles.

Algunos de los comandos mas conocidos son: getch(), clrscr(), gotoxy(), textcolor(), y textbackground()

Aun así nosotros podemos sustituir estas funciones de la librería conio.h con otras funciones estándares.
  • Para sustituir clrscr(), solo necesitamos escribir system(“cls”); la cual está en iostream (es sin .h, se definiría así: #include iostream).
  • Gotoxy() es algo vago de usar pudiendo utilizar \n (espacio hacia abajo) y \t (espacio hacia la derecha) dentro de un printf();
  • Para sustituir getch(), solo necesitamos: cin.get(); la cual está en stdio.h. Si no funciona entonces tendremos que ponerla dos veces: cin.get();cin.get();,                                                                
    Y para ser honestos, creemos que se vera mucho mejor un programa, aunque sea con su típico fondo negro con letras blancas, que uno con letras amarillas con un fondo rosa :P

jueves, 21 de octubre de 2010

Presentacion Control de flujo secuencial.

Como sabrán, hace ya varias sesiones conocimos lo que era recursión y sobre sus distintas aplicaciones y usos.
Sabemos que hay otra manera también de aplicar secuencias de control, no solo utilizando recursión. Básicamente de esto consistieron las presentaciones de la sesión anterior, en donde a varios casos particulares, conocimos como se aplica el flujo de control.
Fueron varios los temas los que se presentaron.
Nosotros trabajamos con BFS-(Búsqueda en anchura.) Por sus siglas en ingles, se trata de un algoritmo de búsqueda en un grafo y su función principal radica en recorrer dicho grafo, nodo por nodo hasta llegar a su nodo de destino.
Estas son las diapositivas que utilizamos para la presentación, en este momento estamos trabajando con un caso practico, en donde profundizaremos un poco mas la aplicacion de dicho algoritmo.