Examen de 3er parcial

En este examen lo que se nos pidio fue lo siguiente:

Hacer un programa que maneje varias pelotitas rebotando, cada vez que la pelota rebote debe de reproducir un audio diferente(maximo 10 sonidos y duracion de 3 segundos), todas ellas manejadas con hilos, estas pelotas seran dibujadas en java 2d y tendran que tener una imagen de relleno en su interior, las imagenes seran asignadas de manera aleatoria, es decir ustedes tendran varios fondos para las pelotas que se escojeran aleatoriamente.

A continuacion pueden descargar el programa dando click aquí

Saludos a todos de parte de GeekSmarts Leer más...

Se acabaron la Vaciones

Hemos terminado con las vacaciones repentinas, la verdad que el ambiente aqui en el tecno esta más normal de lo que esperabamos, pero como todo regreso a clases no fue muy grato que digamos, bueno lo unico malo fue que nos enteramos que o cielos tenemos mucha tarea por hacer...





...como sea no es tiempo de quejarnos si no de ponernos las pilas, depues de todo, ya viene el fin de semestre y el amarre para terminar lo mejor posible, me agrada mucho la idea de que nos hayan dado un poco más de tiempo para los examenes, la verdad no me sentía muy preparado, hablando por todo mi equipo, damos gracias que tenemos aún tiempo de ponernos al corriente. En este momento nos encontramos en clase discutiendo a cerca de los proyectos que tenemos por ahi pendientes, pero bueno; en fin aquí hay una pequeña reseña de los trabajos que tenemos por ahi pendientes



  • Circulo en Movimiento

  • 3 Figuras con hilos sincronizados

  • Carita en movimiento que cambia de color

  • Triangulo circunscrito en un cirsulo

  • Reproductor de mp3

  • Deformación de una imagen (Hypnosis)

  • Contenido de imagenes en C++

  • Pelotas con sonidos imagenes y demas cosas multimedia



No son proyectos dificiles, es solo que he tenido por ahi mucho trabajo y problemas que ni para que les cuento, que la verdad me han absorbido mucho tiempo, en cuanto los termine y envía al profe, los subire, no dejen de checar los archivos que se van actualizando en http://geeksmarts.4shared.com



Nos vemos luego y gracias por leernos y usen su tapabocas y no se descuiden la alerta aún no ha pasado, bueno pues estamos en contacto.


Joxebus.




Leer más...

1.5 Manejo de Bits

Como sabrán, los datos en una computadora internamente se representan en código binario. El microprocesador solo entiende de ceros y unos. Luego mediante una serie de procesos nosotros vemos a este código ya transformado en números, caracteres , imágenes y sonido. Pero en realidad en la trastienda todo sigue siendo binario.

Los Bits

El método mas sencillo de representación son los números naturales. Por ejemplo, si tengo el número 85 en decimal, solo tengo que llevarlo a binario y obtengo una serie de unos y ceros. :

1010101 = 85 en binario

Cada dígito (un cero o un uno) de este número se llama bit. Java tiene una serie de operadores capaces de manipular estos dígitos, son los operadores de bits.


Operador Utilización Resultado
<< A <<> Desplazamiento de A a la izquierda en
B posiciones
>> A >> B Desplazamiento de A a la derecha en
B posiciones, tiene en cuenta el signo.
>>> A >>> B Desplazamiento de A a la derecha en
B posiciones, no tiene en cuenta el signo.
& A & B Operación AND a nivel de bits
| A | B Operación OR a nivel de bits
^ A ^ B Operación XOR a nivel de bits
~ ~A Complemento de A a nivel de bits


Para operar a nivel de bit es necesario tomar toda la longitud predefinida para el tipo de dato. Estamos acostumbrados a desechar los ceros a la izquierda en nuestra representación de números. Pero aquí es importante. Si trabajamos una variable de tipo short con un valor de 3, está representada de la siguiente manera :

0000000000000011

Aquí los 16 bits de un short se tienen en cuenta.

Desplazamientos

Los operadores de desplazamiento, mueven los bits a la izquierda o a la derecha. El primer operando será la victima a sacudir. El segundo indicará cuantas posiciones.

Desplazamiento a la izquierda con signo (cíclico)

Deseamos correr el número 33 dos posiciones a la izquierda. Entonces realizamos :

int j = 33;
int k = j <<>

Como resultado obtenemos el número original.

00000000000000000000000010000100 : k = 132 00000000000000000000000000100001 : m = 132 >> 2 ; m = 33

Podemos ver que el corrimiento a la derecha realiza una división de enteros. Divide por 2, tantas veces como posiciones desplazadas. Los huecos que quedan por la izquierda se cubren con los bits que van saliendo por la derecha (es cíclico).

Veamos que ocurre si pretendemos realizar un desplazamiento a la derecha con un número negativo. Tengan en cuenta que la representación de números es de complemento a 2. Si tengo una variable de tipo int con el valor –1 , internamente está almacenada de la siguiente forma :

11111111111111111111111111111111 : -1 complemento a 2

Ahora realicemos un programa para ver que ocurre con el desplazamiento.

public class CorreNeg {
public static void main(String args[]){
int x = -1;
int y = x >> 2;
System.out.println("El resultado es: " + String.valueOf(y));
}
}

La salida del programa nos indica que:

El resultado es: -1

Quedó exactamente igual. Prueben de correr el número tantas posiciones como tengan ganas y obtendrán el mismo resultado. Esto ocurre porque en el desplazamiento, los "huecos" que quedan a la izquierda se rellenan con el bit uno (1), quedando inalterable.

Este operador desplaza el conjunto de bit a la derecha y agrega a la izquierda los bits que faltan según el signo. Si se encuentra con un número positivo, agrega ceros, en cambio si son negativos agrega unos. Se lo conoce como desplazamiento con signo.

Desplazamiento a la derecha sin signo

Modifiquemos ligeramente el programa anterior agregándole al operador un símbolo >. Nos queda de esta manera :

int x = -1;
int y = x >>> 2;

Si ejecutamos el programa nos dice lo siguiente :

El resultado es: 1073741823

Veamos de donde salió este número raro. Si lo llevamos a binario tenemos :

00111111111111111111111111111111 : 1073741823 en binario

Ahora nos damos cuenta que se han agregado dos ceros a la izquierda. Este operador desplaza a la derecha, pero no tiene en cuenta el signo. Siempre agrega bit con el valor cero, por lo que se llama desplazamiento sin signo.

Operadores lógicos de bits

Estos operadores extienden las operaciones booleanas a los enteros. Para comprender como trabajan debemos descomponer los enteros en un conjunto de bits. El operador aplicará una operación lógica bit por bit, tomando el valor de uno como verdadero y el valor de cero como falso. De un operando toma un bit y aplica la operación al bit que tiene la misma posición del segundo operando. Como resultado obtenemos otro entero.

Operador AND de Bits

Si ambos bits comparados son 1, establece el resultado en 1. De lo contrario da como resultado 0.

int k = 132; // k: 00000000000000000000000010000100
int l = 144; // l: 00000000000000000000000010010000
int m = k & l; // m: 00000000000000000000000010000000

El resultado da 128

Operador XOR de Bits

Si uno de los bits comparados es 0 y el otro 1, el resultado es 1. Si ambos bits comparados son iguales, el resultado es 0.

int k = 132; // k: 00000000000000000000000010000100
int l = 144; // l: 00000000000000000000000010010000
int m = k ^ l; // m: 00000000000000000000000000010100

El resultado da 20

Operador NOT de Bits

Sólo invierte los bits, es decir, convierte los ceros en unos y viceversa. Observemos que es el único de esta familia que tiene un solo operando.

int k = 132; // k: 00000000000000000000000010000100
int m = ~k; // m: 11111111111111111111111101111011

El resultado da -133

Como los enteros negativos en Java se representan con el método del complemento a dos, podemos realizar un sencillo experimento de cambiarle el signo a un número. Para realizarlo debemos aplicar a un entero el operador NOT y sumarle uno.

int x = 123;
int y = ~x;
int z = y + 1;

El resultado da -123,


Fuente Original:

http://es.wikibooks.org/wiki/Programaci%C3%B3n_en_Java_/_Operadores_de_bits

Leer más...

1.4 Tipos de Datos Enumerados

Una enumeración o tipo enumerado es un tipo especial de estructura en la que los literales de los valores que pueden tomar sus objetos se indican explícitamente al definirla. Por ejemplo, una enumeración de nombre Tamaño cuyos objetos pudiesen tomar los valores literales Pequeño, Mediano o Grande se definiría así:

enum Tamaño {
Pequeño,
Mediano,
Grande
}


Tipos enumerados. Un tipo enumerado o enumeración está construido por una serie de constantes simbólicas enteras. Los tipos enumerados se tratan de modo ligeramente diferente en C++ que en ANSI C. El nombre de la etiqueta enum se considera como un nombre de tipo igual que las etiquetas de struct y union. Por tanto se puede declarar una variable de enumeración, estructura o union sin utilizar las palabras enum, strcut o union. C define el tipo de enum de tipo int. En C++, sin embargo, cada tipo enumerado es su propio tipo independiente. Esto significa que C++ no permite que un valor int se convierta automáticamente a un valor enum. Sin embargo, un valor enumerado se puede utilizar en lugar de un int.

Ejemplo:

enum lugar{
primero,
segundo,
tercero
};

lugar pepe=primero; //correcto
int vencedor=pepe; //correcto
lugar juan=1; //incorrecto

La última sentencia de asignación es aceptable en C pero no en C++, ya que 1 no es un valor definido en lugar.

Elementos Basicos.

Ya sabemos que en los algoritmos aparecen objetos que tienen tres características:

Nombre.
Tipo.
Valor:
Variables.
Constantes.

Tipo:

• Define el conjunto de valores que puede tomar un determinado

Objeto:

• Determina las operaciones que se pueden aplicar a un objeto. • Define el espacio que será necesario reservar en memoria para albergar a un objeto. • Define la interpretación del valor almacenado en memoria.

Cardinalidad:

• Es el número de valores que tiene un tipo de datos. La simbolizaremos con ‘#’.

Operadores básicos:

• Aspecto práctico: manipulación de objetos.

Para ello a cada tipo de datos se le asocia un conjunto de operadores básicos. ¿Cuántos?, ¿cuáles?. Como criterio general: se le asocian aquellos que posibiliten al programador construir cualquier operación adicional, en función de los básicos, de una forma eficiente. • Un mismo símbolo (por ejemplo ‘+’) puede utilizarse como operador para distintos tipos de datos. Esto se denomina “sobrecarga”.

Tipos de datos simples

Compatibilidad de tipo:

• Los operadores tienen que aplicarse a objetos de tipos de datos compatibles (iguales o no). • La información del tipo de dato ayuda a los compiladores a detectar operaciones inapropiadas con tipos de datos no compatibles. • Hay lenguajes de programación más estrictos que otros en cuanto al chequeo de tipos. • En nuestro pseudolenguaje seremos lo más flexible posible, pero tendiendo a aplicar operadores a tipos de datos iguales, con el fin de evitar posibles errores de diseño.

Declaración de constantes y variables en nuestro pseudo lenguaje:

Constantes nombre = valor Variables nombre : Tipo

Clasificacion de tipos de datos simples:

• Tipos simples: Predefinidos (N, Z, R, C, B)

Definidos por el programador (enumerado y subrango)

• Tipos estructurados. Arrays Cadenas de Caracteres

--
Fuente Original:

http://www.mitecnologico.com/Main/TiposDeDatosEnumerados
Leer más...

Notepad++

Notepad++ es un editor gratuito de código fuente, que soporta varios lenguajes de programación y se ejecuta en MS Windows.

Este proyecto, basado en el componente de edición Scintilla (un poderoso editor), está escrito en C++ utilizando directamente la API de win32 y STL (lo que asegura una velocidad mayor de ejecución y un tamaño más reducido del programa final), se distribuye bajo los términos de la Licencia Pública General de GNU.

A continuación listamos algunas características de Notepad++:
Sintaxis coloreada y envoltura de sintaxis

Lenguajes soportados :
  • C
  • C++
  • Java
  • C#
  • XML
  • HTML
  • PHP
  • CSS

entre otros.

WYSIWYG

Si tiene una impresora a color, podrá imprimir su código fuente (o lo que usted quiera) en color.

Sintaxis coloreada a elección del usuario

Permite al usuario definir su propio lenguaje : no sólo las palabras clave para la sintaxis coloreada, sino también las palabras clave para la envoltura de sintaxis, los comentarios clave y los operadores. ( captura1, captura2, captura3, captura4 ).
Autocompletado

Para la mayoría de los lenguajes soportados, el usuario puede hacer su propia lista de API (o descargar los archivos de API desde la sección de descarga). Una vez instalado el archivo de API, teclee Ctrl+espacio para ejecutar esta acción (ver captura). Para más informacion acerca del autocompletado, ver Uso del Autocompletado.

Multi-Documento

Puede editar varios documentos al mismo tiempo.

Multi-Vista

Puede usar dos vistas al mismo tiempo. Esto significa que puede visualizar (editar) dos documentos diferentes a la vez (captura). También puede visualizar y editar un mismo documento en vistas y posiciones diferentes. La modificación del documento en una vista quedará reflejada también en la otra (es decir usted modifica el MISMO documento a pesar de que en realidad está viendo una copia, vea la siguiente captura).

Soporte para Buscar/Reemplazar expresiones regulares

Puede buscar y reemplazar una cadena usando expresiones regulares.

Soporte completo para Arrastrar y colocar

Puede abrir documentos arrastrándolo y soltándolo en la aplicación. Además también podrá mover su documento desde una posición (o vista) a otra arrastrando y soltando.

Posición dinámica de las vistas

El usuario puede fijar la posición de los documentos dinámicamente (solamente hay dos opciones: organizar las ventanas en horizontal o en vertical); vea la siguiente captura.

Deteción automática del estado del documento

Si modifica o elimina un archivo que está actualmente abierto en Notepad++, el programa le avisará de tal situación y le preguntará que desea hacer con el mismo (actualizarlo o eliminarlo).

Herramienta de Zoom

Esta es otra fantástica función del componente Scintilla. Sólo tiene que ver esta captura.
Funcionamiento bajo entornos multilingües

Puede instalar el programa bajo una edición de la plataforma Windows en chino, japonés coreano, árabe y hebreo. Vea la captura de Notepad++ en acción bajo Windows en distintas lenguas: chino, árabe y hebreo.

Puntos de marca

Tan sólo con hacer clic en el margen de marcas (situado justo a la derecha del margen de número de línea) o pulsar Ctrl+F2 puede establecer o borrar un punto de marca de libro. Para ir a un punto de marca, pulse F2 (Siguiente marcador) o Shift+F2 (Anterior marcador). Para borrar todos los marcadores, ir al menú Buscar->Borrar todos los puntos de marca. Vea esta captura.
Resaltado de paréntesis y sangría

Cuando el cursor se encuentre justo al lado de uno de estos símbolos { } [ ] ( ), dicho carácter (símbolo de apertura) y su opuesto (símbolo de cierre) serán resaltados, junto con la línea de sangría (si la hubiera) con el fin de localizar los bloques de código más fácilmente. Ver captura1, captura2.
Grabación y reproducción de macros

Puede guardar varias macros y editar sus atajos de teclado.

Visita la Web del Autor:
http://notepad-plus.sourceforge.net/es/site.htm

Descargas
Notepad++:

Leer más...