domingo, 12 de octubre de 2025

Arquitectura del ordenador

 La información o datos (como se le quiera llamar) se carga en el ordenador, se procesa, y sale nueva información. Pero lo que verdaderamente nos interesa es lo que ocurre dentro del bloque que representa al ordenador.

Fig. 1 Diagrama de bloques del ordenador.

martes, 8 de septiembre de 2020

Nociones Básicas de lenguaje de programación JAVA

Estructura Básica de JAVA

Java es un lenguaje muy funcional, fue diseñado para ser parecido a C++, concretamente para facilitar un rápido y fácil aprendizaje para un gran número de programadores.

Java elimina muchas de las características de C++, para mantener la simplicidad del lenguaje añade caracteristicas muy útiles como el "garbage collector"(reciclador de memoria dinámica o recolector automático de basura).

No es necesario preocuparse de liberar memoria, el recolector de basura se encarga de ello. Como es una aplicación que se ejecuta "en segundo plano" (programa que se ejecuta en memoria de forma concurrente a otras a otroas aplicaciones) y es de baja prioridad, cuando entra en acción, permite liberar bloques de memoria muy grande, lo que mejora la gestión de la memoria.

miércoles, 4 de septiembre de 2019

Recursividad y función Fibonacci

Concepto

La recursividad es un mecanismo que parece no aportar nada y que le resulta muy es algo complicado de entender. Se puede resumir como un mecanismo muy potente con el que se consigue que determinados programas mejoren su rendimiento y se escriban de forma más simple y clara, facilitando la actualización y modificación del código.

En programación, se usa el término recursividad para referirnos a procedimientos o métodos que contienen en su implementación llamadas a sí mismo, es decir un método es recursivo si para ejecutarse se llama así mismo.

martes, 4 de junio de 2019

Busqueda de datos en un ArrayList

Codigo ejemplo interesante para realizar busqueda de datos dentro de un ArrayList:

       if (!listaTenistas.isEmpty()) {
          int i = 0;
          Tenista t = null;
          boolean encontrado = false;
          while (!encontrado && i < listaTenistas.size()) {
             t = listaTenistas.get(i);
             if (t.getNombre().equalsIgnoreCase(jtNombreBuscar.getText())) {
                encontrado = true;
             } else {
                i++;
             }
          }
          if (encontrado) {
             indice = i;
             mostrarDatosTenista(indice);
          } else {
             JOptionPane.showMessageDialog(this, "El tenista " + jtNombreBuscar.getText() + " no ha sido encontrado", "No encontrado", JOptionPane.ERROR_MESSAGE);
          }

       } else {
          JOptionPane.showMessageDialog(this, "No se han añadido tenistas a la lista", "Lista vacía", JOptionPane.ERROR_MESSAGE);
       }


listaTenista es el ArrayList, de la clase Tenista, en la que se crea un metodo privado que devuelve el nombre escrito en el campo de texto jtNombreBuscar. metodo llamado getNombre().

martes, 12 de septiembre de 2017

Cambiar dirección de rutina

Este ejemplo hace lo mismo que este, pero POKEamos antes a la dirección 50000 una vez ensamblada el byte 162 o cualquier otro que probemos.

Este sería el listado para ensamblar:

   ; Listado 3: Rellenado de pantalla
   ; recibiendo el patron como parametro.
   ORG 40000
 
   ; En vez de 162, ponemos en A lo que hay en la
   ; dirección de memoria 50000
   LD A, (50000)
 
   ; El resto del programa es igual:
   LD HL, 16384
   LD (HL), A
   LD DE, 16385
   LD BC, 6911
   LDIR
   RET

Por lo tanto una vez cargado en ensamblador, hacemos esto.

POKE 50000, 162 


Lo que hace este poke es llamar llamar a la direccion 50000 y le ponemos el byte 162, para que cuando hagamos un "RANDOMIZE USR 40000" en la dirección 50000 este el byte 162 y puede funciona la rutina que se a programado en "ORG 40000".

jueves, 7 de septiembre de 2017

Entendiendo las primeras instrucciones

Este será mi primer articulo para entender el lenguaje de ensamblador(ASM) del microprocesador Z80.

Bien pues vamos a ver que es lo que hace este código:

ORG 40000
   LD HL, 16384
   LD A, 162
   LD (HL), A
   LD DE, 16385
   LD BC, 6911
   LDIR
   RET


Este código se compila, se ensambla en unos bytes, que es binario. Lo que hace este código es poner toda la pantalla con el byte 162.

lunes, 27 de marzo de 2017

El objeto Event

Los generadores de eventos necesitan información adicional para procesar las tareas que tienen que realizar. Si una función procesa, por ejemplo, el evento click, lo más probable es que necesite conocer la posición en la que estaba el ratón en el momento de realizar el click; aunque esto quizás tampoco sea muy habitual, a no ser que estemos programando alguna utilizadad de tipo gráfico.

Lo que sí es más común es tener información adicional en los eventos del teclado. Ejemplo, cuando pulsamos una tecla nos interesa saber cuál ha sido la tecla pulsada, o si tenemos a mayores alguna tecla especial pulsada como Alt, Control. Etc.

Los navegadores gestionan de forma diferente los objetos Event. Por ejemplo, en las versiones antiguas de Internet Explorer, el objeto Event forma parte del objeto window, mientras que en otros navegadores como Firefox, Chrome, etc., para acceder al objeto Event lo haremos a través de un parámetro, que escribimos en la función que gestionará el evento.

Nota: En Internet Explorer no se puede programar que un evento se dispare en la fase de captura, ya que el IE los eventos siempre burbujean.