viernes, 12 de octubre de 2012

TEMA 4: UNIONES, MANIPULADORES DE BITS Y ENUMERACIONES


UNIONS, MANIPULADORES DE BITS Y ENUMERACIONES

4.1 uniones
Las uniones desarmables son aquellas que reúnen varias piezas de manera solidaria y forman con ellas una misma pieza; pero que permiten, en todomomento, la separación de las piezas unidas, mediante una maniobra fácil que no deteriora los
elementos.
Este
 sistema es el más frecuentemente empleado, y uno de los medios de unión desarmable más utilizada es el empleo de tornillos y tuercas.
En una bicicleta, por ejemplo, se unen con tornillos las piezas del mecanismo de rueda libre, eles y horquilla, manivelas y pedales y llantas. En el montaje de una motocicleta o automóvil intervienen, ordinariamente, cientos de tornillos, tuercas y arandelas, pernos roscados, etc. Todas estas piezas, cuando ello es necesario, (en las reparaciones) se pueden desmontar y volverlas a montar.
Las uniones C++ son un tipo especial de clase; un tipo de variable con cierta similitud con las estructuras Pueden albergar diferentes tipos de datos, pero solo uno, de entre todos los posibles, al mismo tiempo. Se dice que solo uno puede estar "activo" en cada momento, y se corresponden con los registros de tipo variable de Pascal y Modula-2. Como el lector estará suponiendo, el tamaño de una unión es el del mayor elemento que puede albergar. El valor exacto depende de la implementación y de las alineaciones internas
Como se verá a continuación, desde el punto de vista de su organización interna son como estructuras en las que todos sus miembros tuviesen el mismo desplazamiento respecto al origen. Desde un punto de vista funcional pueden ser considerados almacenamientos u objetos multi-uso.
En realidad las uniones son un recurso de programación que permite alojar distintos tipos de objetos en un mismo espacio cuando estos objetos no coexisten en el tiempo y no hay suficiente memoria disponible para asignarles espacios distintos. Se trata por tanto de objetos muy especializados en cuanto a su uso, propio de aplicaciones muy "afinadas", de tiempos en que la memoria era un bien escaso, pero cuya utilización real es bastante rara y desaconsejada

4.2 OPERADORES A NIVEL DE BITS
Una operación bit a bit o bitwise opera sobre números binarios a nivel de sus bits individuales. Es una acción primitiva rápida, soportada directamente por los procesadores. En procesadores simples de bajo costo, las operaciones de bit a bit, junto con los de adición y sustracción, son típicamente sustancialmente más rápidas que la multiplicación y la división, mientras que en los modernos procesadores de alto rendimiento usualmente las operaciones se realizan a la misma velocidad.
Ø  Tipos
1.     Operaciones bit a bit: Ejecutan las operaciones lógicas AND, OR, XOR, NOT, etc, sobre los bits individuales de los operandos.
2.     Operaciones de Desplazamiento: Desplazan los bits de los operandos hacia la derecha o hacia la izquierda una o más posiciones.
3.     Operaciones de Rotación: Rotan los bits del operando hacia la derecha o hacia la izquierda una o más posiciones. Pueden usar o no el flag del acarreo como un bit adicional en la rotación.

En primer lugar veamos la necesidad de trabajar a nivel bit, y creo que la mejor forma es dando un ejemplo practico. Supongamos que obtuvimos un código de Huffman sobre unos caracteres y nos dio la siguiente codificación:

Entonces, por ejemplo la siguiente cadena “aacbc”, la codifico y produce la
Secuencia 1100101001.Ahora bien, si uno representara cada bit como un char o un integre estaríamos expandiendo siempre el archivo original y esto no es lo que queremos. Entonces introduciremos y refrescaremos conceptos de lógica binaria y exactamente para que sirve cada operador, para luego ver implementaciones de algoritmos en Java.

TEMA 3: AMBIENTE GRAFICO

TEMA 3: AMBIENTE GRAFICO

En informática, interfaces gráfica do usuario (abreviadamente, a sigla GUI, do inglés Graphical User Interface) é un mecanismo de interacción home-computador. Cun rato ou teclado o usuario é capaz de seleccionar eses símbolos e manipularlos para obter algún resultado práctico. Eses signos son designados como widgets e son agrupados en kits.
Ambiente Gráfico é un software feito para facilitar e tornar prático o uso do computador a través de representación visura do Sistema operativo. Por ejemplo, en windows xp, se llama luna, y es el que ya todos conocemos, el de la barra de tareas azul y el botón de inicio verde. En windows vista se llama aero y es el de las ventanas transparentes y la barra de tareas negra semitransparente.
En Mac hay varios, el mas conocido debe ser el agua  En linux son muchos, cada distribución tiene el propio.


3.1 INICIALIZACION DEL AMBIENTE GRAFICO

En el modo gráfico existe una enorme cantidad de funciones que realizan desde la tarea mas sencilla como es pintar un pixel, hasta la tarea mas compleja como pudiera ser dibujar un carácter por medio de trazos.

Para trabajar el modo gráfico es necesario incluir la librería graphics.h como hacer uso de la BGI (Borlan Graphics Interphase)

Para usar cualquier función es necesario colocar el adaptador de vídeo en modo gráfico y esto se logra a través de la función initgraph(); y al terminares necesario regresar al modo original a través de la función closegraph();

Para iniciar un programa en ambiente gráfico es recomendable correr una subrutina de capitalización de gráficos y detección de errores.

Algunos ejemplos de las funciones que se pueden encontrar en la librería de gráfica son:
Line(); circle(); arc(); elipse();rectangle(); ottextxy(); putpixel();
Para saber mas de las funciones de la librería de gráficos lo pueden buscar en el índice de turbo c

NOTA: Para dar de alta en tu computadora el modo de gráficos tienes que hacer los siguientes pasos: OPTIONS ->LINKER->LIBRARIE->seleccionar GRAPHICS LIBRARY

EJEMPLO:

#include<graphics.h>
#include<conio.h>
#include<math.h>
int main(void)
{
 clrscr();

 double fx;
 int graphdriver=DETECT,graphmode;
 initgraph(&graphdriver,&graphmode,"..\\bgi");
 outtextxy(30,30,GRAFICACION DE SENO );
 setbkcolor(RED);
 for (int x=0;x<=90;x++)
 {
   fx=(1+sin(x))*40+200;
  putpixel(x*15,fx,YELLOW);
  }
  setcolor(BLUE);
 line(310,100,310,400);
 line(100,240,500,240);
  getch();
  closegraph();
 return 0;
}


3.2  MANIPULACION DE TEXTO DENTRO DEL AMBIENTE GRAFICO


Un ambiente gráfico es la capacidad de manipular objetos (gráficos) mediante punteros como el ratón. Windows es un sistema operativo con ambiente gráfico, es decir, hay ventanas, botones, cuadros de diálogos .. y todos los puedes manipular (mover, copiar, cortar, pegar, arrastrar, ejecutar, dibujar, etc. etc.) con el puntero del ratón/mouse.


MS-DOS es un sistema operativo en modo de texto, no tiene ambiente gráfico ... es decir todo se ejecuta mediante una línea de comando donde introduces instrucciones y al final pulsas ENTRE para la ejecución.

GNU/Linux es un sistema operativo que al principio sólo tenía línea de coman-dos  sin ambiente gráfico. Actualmente cuenta con ambiente gráfico, además de contar aún con la línea de comandos.

Windows también aún conserva su línea de comandos de MS-DOS, sólo ve al menú Inicio, Ejecutar ..., escribe la palabra CMD y dale ENTER, verás un pantalla negra con un texto .. esa es la línea de comandos de MS-DOS, sin ambiente gráfico

3.3 USO DEL  MOUSE

Al igual que utiliza las manos para interactivo con objetos en el mundo físico, puede utilizar el mouse para interactivo con elementos de la pantalla del equipo. Puede mover objetos, abrirlos, cambiarlos, deshacerse de ellos y realizar otras acciones seleccionándolos y haciendo clic en ellos con el mouse.
para poder movilizarse a lo largo y ancho del ambiente, se necesita utilizar el mouse. Para reforzar el uso correcto del mismo, debemos tener en cuenta las siguientes operaciones básicas con el mouse:l Clic: Hacer Clic sobre un objeto significa presionar el botón izquierdo del mouse una vez.l Doble Clic: Consiste en hacer dos clic rápidos sobre el objeto.l Arrastrar: Consiste en tomar un objeto de un lugar del escritorio u otro lugar y llevarlo a otro sitio.l Clic derecho: Presenta menús contextuales.

3.4 FUNCIONES DEL SISTEMA PARA EL AMBIENTE GRAFICO

La mayoría de los sistemas informáticos modernos soportan interfaces de usuario gráfica (GUI), ya menudo los incluyen. En algunos sistemas informáticos, tales como la implementación original de Microsoft Windows y el Mac OS , la interfaz gráfica está integrada en el kernel .
Aunque técnicamente una interfaz gráfica de usuario no es un servicio del sistema operativo, incorporando el apoyo a uno en el núcleo del sistema operativo puede permitir que la interfaz gráfica de usuario para que respondan mejor al reducir el número de cambios de contexto necesario para la interfaz gráfica de usuario para realizar sus funciones de salida. Otros sistemas operativos son modulares , que separa el subsistema de gráficos desde el kernel y el sistema operativo. En la década de 1980, VMS y muchos otros sistemas operativos UNIX había que fueron construidas de esta manera. GNU / Linux y Mac OS X también se construyen de esta manera. Moderno versiones de Microsoft Windows, como Windows Vista implementar un subsistema de gráficos que está sobre todo en espacio de usuario, pero los gráficos de dibujo rutinas de versiones entre Windows NT 4.0 y Windows Server 2003 existen sobre todo en espacio de kernel. Windows 9x tenía poco distinción entre el interfaz y el kernel.
Muchos sistemas operativos permiten que el usuario para instalar o crear cualquier interfaz de usuario que desean. El sistema X Window , en relación con GNOME o KDE es una instalación que se encuentran comúnmente en la mayoría de Unix y Unix (BSD, GNU / Linux, Solaris) sistemas. Un número de reemplazos shell de Windows se han lanzado para Microsoft Windows, que ofrecen alternativas a los incluidos shell de Windows , pero el depósito no puede ser separado de Windows.