jueves, 26 de agosto de 2010

Ciclo repetitivo







Las computadoras están especialmente diseñadas para ejecutar tareas repetidamente. Los cálculos simples o la manipulación de pequeños conjuntos de datos se pueden realizar fácilmente a mano, pero las tareas grandes o repetitivas son realizadas con mayor eficiencia por una computadora. Las estructuras de control repetitivas son aquellas en las que una sentencia o grupos de sentencias se repiten muchas veces. Este conjunto de sentencias se denomina bucle o lazo, y puede presentarse de varias formas, una de las formas es el lazo condicionado, en el cual el proceso de repetición se controla mediante una condición previamente establecida.


LIBRERIA stdio.h

Es la biblioteca estándar del lenguaje de programación C, el archivo de cabecera que contiene las definiciones demacros, las constantes, las declaraciones de funciones y la definición de tipos usados por varias operaciones estándar de entrada y salida. Por motivos de compatibilidad, el lenguaje de programaciónC++ (derivado de C) también tiene su propia implementación de estas funciones, que son declaradas con el archivo de cabecera cstdio.

Las funciones declaradas en stdio.h son sumamente populares.

LIBRERIA conio.h

Aunque se trate de una librería no estándar, conio se ha convertido para muchos programadores educados o acostumbrados a compiladores de Borland® en una herramienta imprescindible para crear programas de consola.

Adicionalmente, cuando se crean aplicaciones de consola usando compiladores para Windows, como Dev-C++, a menudo necesitamos compilar programas escritos originalmente para compiladores Borland®. O sencillamente, queremos dotar a nuestros programas de consola de una apariencia más amigable y agradable.

Por supuesto, podemos recurrir a las funciones de consola del API de Windows, pero a menudo la conversión entre funciones de conio y sus equivalentes en el API no son tan sencillas, y en cualquier caso requiere cierto tiempo.

Este documento incluye una emulación de conio para el compilador Mingw, usado por el entorno de programación Dev-C++.

Es cierto que Dev-C++ incluye una emulación de conio, pero a nuestro juicio no es lo bastante fiel en cuanto a comportamiento a la original de Borland®. Sobre todo en funciones de ventanas, lecturas sin eco en pantalla, y en funciones como "kbhit", que o bien no se emulan, o se hace de forma incompleta.

Por supuesto, no todas las funciones y macros se han emulado, hay algunas con las que no es posible hacerlo, concretamente las que relacionadas con entrada y salida de puertos: "inp", "inport", "inportb", "inpw", "outp", "outport", "outportb" y "outpw"; ya que estas macros colisionan con el control del hardware de Windows.

Además de estas macros, la única función que no se emula es "cscanf", debido a las dificultades que entraña su implementación. En futuras versiones intentaremos incluirla. En su lugar se usa "scanf" directamente.

miércoles, 25 de agosto de 2010

Clases de librerias

Cada fichero de cabecera se denomina librería. En la siguiente lista mostraremos la Librería junto con la Descripción:
assert.h Contiene una macro para el diagnóstico dentro de los programas.
ctype.h Contiene varias funciones para comprobación de tipos y transformación de caracteres.
errno.h Contiene varias macros usadas para informar de errores.
limits.h Contienen varias macros que definen constantes para el tamaño de tipo enteros.
float.h Contienen varias macros que definen constantes para el tamaño de tipo flotante.
locale.h Contienen varias macros, funciones y tipos para unidades locales, como unidad monetaria, tiempo, dígitos, etc.
math.h Contiene una macro y varias funciones matemáticas.
setjmp.h Contienen declaraciones que proporcionan una forma de evitar la secuencia normal de llamada y regreso de funciones.
signal.h Contiene un tipo, dos funciones y varias macros para manejar condiciones excepcionales que aparecen durante la ejecución, tal como una señal de interrupción de una fuente externa o un error en la ejecución.
stdarg.h Contiene un tipo y tres macros que proporcionan recursos para recorrer una lista de argumentos de función de tamaño y tipo desconocido.
stddef.h Contiene varios tipos y macros que también están definidas en otras librerías, como size_t.
stdio.h Contiene tipos, macros y funciones para la realización de tareas de E/S.
stdlib.h Contiene tipos, macros y funciones para la conversión numérica, generación de números aleatorios, búsquedas y ordenación, gestión de memoria y tareas similares.
string.h Contiene tipos, macros y funciones para la manipulación de cadenas de caracteres.
time.h Contiene tipos, macros y funciones para la la manipulación de información sobre fechas y horas.

LIBRERIAS ?

En lo que respecta al lenguaje C++, existen dos tipos fundamentales de librerías: estáticas y dinámicas, que aunque comparten el mismo nombre genérico "librería", utilizan mecanismos distintos para proporcionar su funcionalidad al ejecutable.

En ambos casos es costumbre, que junto a las librerías propiamente dichas (ficheros .lib, .a, .dll etc), se incluya un fichero .h denominado "de cabecera", porque es tradición utilizar las primeras líneas del programa para poner las directivas #include que los incluirán en el fuente durante la fase de preproceso. Este fichero contiene las declaraciones de las entidades contenidas en la librería, así como las macros y constantes predefinidas utilizadas en ella, de forma que el programador solo tiene que incluir el correspondiente fichero .h en su aplicación para poder utilizar los recursos de la librería en cuestión (recuerde que en C/C++ es imprescindible incluir la declaración de cualquier función o clase antes de su utilización. Este sistema tiene la ventaja adicional de que proporciona al usuario la información mínima para su uso. Es decir, la "interfaz" de las funciones o clases que utilizará. En el caso de funciones esto se concreta en el prototipo; en el caso de clases, en la especificación de sus métodos y propiedades públicas.


Librerías estáticas

Denominadas también librerías-objeto, son colecciones de ficheros objeto (compilados) agrupados en un solo fichero de extensión .lib, .a, etc. junto con uno o varios ficheros de cabecera (generalmente .h).

Una posición extrema la constituyen aquellas librerías en las que toda la funcionalidad se ha incluido en el fichero de cabecera .h, en cuyo caso no existen los módulos compilados .lib, .a, etc. Es el caso de la Librería Estándar de Plantillas STL que está compuesta casi exclusivamente por ficheros de cabecera. No obstante, lo anterior representa un caso extremo que suele ser evitado, ya que por lo general, los autores incluyen en los ficheros de cabecera la información mínima indispensable para utilizar la librería (la interfaz), incluyendo la operatoria en forma de ficheros compilados. La razón no suele ser otra que proteger la propiedad intelectual (el "know how").

Durante la construcción de la aplicación, el preprocesador incluye en los fuentes los ficheros de cabecera. Posteriormente, durante la fase de enlazado, el linker incluye en el ejecutable los módulos correspondientes a las funciones y clases de librería que hayan sido utilizadas en el programa, de forma que el conjunto entra a formar parte del ejecutable. De ahí su nombre: Librerías enlazadas estáticamente.

Dejando aparte consideraciones de comodidad y rapidez, el resultado de utilizar una de tales librerías no se diferencia en nada al que puede obtenerse escribiendo en al fuente las funciones o clases correspondientes y compilándolas como un módulo más de nuestra aplicación.



Librerías dinámicas

Otra forma de añadir funcionalidad a un ejecutable son las denominadas librerías de enlazado dinámico (repasar en el significado de "enlazado dinámico"), generalmente conocidas como DLLs, acrónimo de su nombre en inglés ("Dynamic Linked Library"). Estas librerías se utilizan mucho en la programación para el SO Windows. Este Sistema contiene un gran número de tales librerías de terminación .DLL, aunque en realidad pueden tener cualquier otra terminación .EXE, .FON, .BPI, .DRV etc. Cualquiera que sea su terminación, de forma genérica nos referiremos a ellas como DLLs, nombre por el que son más conocidas.

domingo, 1 de agosto de 2010

ERGONOMIA

La ergonomía es la ciencia que estudia la economía del rendimiento humano. Aplicando esta ciencia al ámbito laboral, nos ayuda a encontrar las posiciones más adecuadas, de nuestro cuerpo respecto al mobiliario de oficina, para el ahorro energético de nuestro cuerpo.

Este ahorro se consigue a través de unos apropiados equipamientos de oficina que proporcionan comodidad e intentan evitar lesiones en el trabajo. A continuación pondremos algunos ejemplos de cómo colocar el mobiliario adecuadamente y de cómo posicionarnos nosotros para evitar posibles lesiones:

  • La silla debe ser cómoda y debe permitirnos tener una posición relajada pero no descuidada, de tal manera que estemos relativamente rectos y apoyemos en el respaldo la zona lumbar.
    Por otro lado los muslos deben ir paralelos al suelo y tenemos que apoyar los pies en el suelo.
  • El teclado del ordenador debe estar paralelo al suelo y a una altura en la que queden alineados la muñeca, la mano y el antebrazo.
    No debe estar muy alejado de nosotros ya que si tuviésemos que acercarnos a él forzaríamos la posición lumbar hacia delante.
  • El monitor del ordenador debería estar a 75-80 cm de los ojos, ligeramente inclinado hacia arriba para que coincida con nuestra mirada.
  • No debe estar directamente delante de la cara sino un poco más abajo, de tal manera que su borde superior esté a la altura de los ojos.

Aunque sigamos estos consejos, si pasamos demasiadas horas en una misma postura acabaremos sintiendo dolor y rigideces, por lo que es conveniente hacer estiramientos, moverse y cambiar de postura a la que nos resulte más cómoda en cada momento, levantarse y dar cortos pero frecuentes paseos, mantener el cuerpo a una buena temperatura por que así los músculos trabajan mejor y se evitan posibles lesiones por rigideces.

Además los estiramientos y cambios posturales nos ayudan a retirar la mirada de la pantalla, aunque sólo sea por un par de minutos, y podemos aprovechar para relajar la vista fijándola en un punto lejano.

Como anteriormente he comentado la ergonomía nos ayuda a evitar lesiones laborales, pero es una ciencia a la que aún le queda por evolucionar ya que es relativamente reciente el conocimiento de las lesiones que puede provocar una mala postura mantenida a lo largo de las jornadas laborales.