miércoles, 10 de noviembre de 2010

PATRONES DE DISEÑO

Los patrones de diseño son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software.

Un patrón de diseño es una solución a un problema. Para que la solución sea considerada un patrón debe poseer 2 características que son:
  • EFECTIVIDAD: para saber si es efectivo aparte del problema planteado se debe resolver problemas parecidos.
  • REUSABLE: aplicable a diferentes problemas.
HISTORIA
En 1979, el arquitecto Christopher Alexander, definió que el patrón es una posible solución correcta para un problema de diseño dentro de un contexto dado.
Mas tarde para 1987, Ward Cunningham y Kent Beck usaron ideas de Alexander para desarrollar los patrones hombre-ordenador.
Hasta 1990 los patrones de diseño tuvieron éxito en el mundo de la informática.

OBJETIVOS
Los patrones pretenden:
  • Proporcionar varios elementos reusables en el diseño de software.
  • Formalizar un vocabulario común entre diseñadores.
  • Estandarizar el modo en que se realiza el diseño.
  • Facilitar el aprendizaje de los nuevos diseñadores.
CATEGORÍAS DE PATRONES
Manejan 5 tipos de categoría que son:
  • Patrones de Arquitectura-> expresan un esquema organizado estructural fundamental para sistemas de software.
  • Patrones de Diseño-> expresan esquemas para definir estructuras de diseño con los sistemas de software
  • Patrones de Dialectos->  patrones de bajo nivel específicos para un lenguaje de programacion.
  • Patrones de Interacción-> permiten el diseño de interfaces web.

PATRONES CREACIONALES
  • Abstract Factory:
Permite trabajar con objetos de distintas familias de manera que no se mezclen entre si y pudiendo ver en que familia trabajas. Ejemplo: las librerías para crear interfaces grafías suelen utilizar este patrón y cada familia seria un sistema operativo distinto.
  • Builder
Usado para crear una variedad de objetos complejos desde un objeto fuente.
  • Prototype
Crea nuevos objetos clonados de una ya existente.

PATRONES ESTRUCTURALES
  • Adapter
Se utiliza para transformar una interfaz en otra de tal modo que una clase que no pudiera utilizar la primera, haga uso de ella en la segunda. También es conocido como Wrapper.
  • Composite
Sirve para construir objetos complejos a partir de otros mas simples y similares entre si, gracias a a composición recursiva y la estructura forma de árbol.
  • Flyweight
Sirve para eliminar o reducir la redundancia cuando tenemos gran cantidad de objetos que contienen la misma información.

PATRONES DE COMPORTAMIENTO
  • Command
Permite solicitar una operación a un objeto sin conocer realmente el contenido de esta operación ni el receptor real de la misma.

  • State
Se utiliza cuando el comportamiento de un objeto cambia dependiendo del estado del mismo.
  • Visitor
Es una forma de separar el algoritmo de la estructura de un objeto.

Para mas información encontré este blog que habla mas específicamente de estos patrones de diseño, mas de ellos que no he mencionado.

Espero que les sirva:).

lunes, 8 de noviembre de 2010

TIPO PREDEFINIDOS

Hay varios tipos que son los siguientes, explicare algo básico de cada uno:


-El tipo Bool/Booleano
Este tipo representa expresiones lógicas, solo hay 2 valores de salida que son verdadero y falso.
(&&)---> conjunción
( | | )-->disyunción
(not)-->negación





-El tipo Int (entero)
Son números enteros de precisión limitada que cubre al menos un rango de [-2^29,2^29], algunas de sus funciones son:
*suma (+)
*resta  (-)
*multiplicación (*)
entre otros.

-El tipo Integer
Son enteros de precisión ilimitada. Para este tipo las funciones son las mismas que con el tipo Int.

-El tipo Float
Este tipo , bueno ya lo hemos hablado en clase, también hice una entrada hablando solo de los tipo flotantes, pero are una breve explicacion, es un subconjunto de números reales, sus funciones son igual que el entero, y también lo que son las funciones trigonométricas, logaritmicas, raíz cuadrada, exponenciales.

-El tipo double
Un subconjunto de un intervalo de números reales, este subconjunto es mayor que le corresponde al tipo float, y utiliza las mismas funciones que el float pero este tipo con mas precisión.

-El tipo char
Representa un carácter puede ser letra, dígito, o un signo. Algunas de las funciones es comprobar si el carácter es dígito, letra y si es letra si es mayúscula o minúscula.


Espero que les sirva:)

PROGRAMA EN C

Aquí les dejo un programa en C, este programa es sencillo y se trata de que calcula el logaritmo decimal y logaritmo neperiano de 1 al 100, pero en 5 en 5.

Logaritmo decimal
Los logaritmos decimales tienen, en general, una parte entera y una parte fraccionaria.

ejemplos:
Log101 = 0 y cuando son de base 10 su formula es n=Log 10(b).

Logaritmo neperiano
Se denomina logaritmo neperiano (ln) o logaritmo natural al logaritmo en base e.
Su formula es m=log(b)
ejemplos:
log(b).


En este código utilicé la librería math.h, para poder utilizar las formulas logaritmicas, y también utilicé un for para que fuera listando los números 5 en 5 hasta que llegue el valor de c, en este caso el valor de c es 100 y también en donde imprime utilicé un .3f para que imprimiera hasta 3 decimales.

Y el resultado es:

Espero que les sirva:)

martes, 2 de noviembre de 2010

LENGUAJE R

R es un lenguaje de programacion para el análisis estadístico y gráfico.

Fue desarrollado por Robert Gentleman y Ross Ihaka del departamento de estadística en la Universidad de Auckland en 1993

Este lenguaje es utilizado en el campo de la estadística, investigación biomédica, matemáticas financieras y la bioinformatica.

Esta disponible para los sistemas operativos:
-Windows.
-Macintosh.
-Unix.
-GNU/linux.

Aquí les dejo un tutorial acerca de R.


Espero que le sirva:)

ORDENAMIENTO RAPIDO

El ordenamiento rapido es la tecnica que te permite ordenar los elementos de una manera muy rapida "Quick sort".











Este metodo consiste en un cierto arreglo de numeros ordenarlos de menor a mayor, para esto el ordenamiento elige un numero que lo llama pivote que este sirve para comparar los demas valores para poder saber si el valor es mayor o menor y moverlos para que queden de una manera que los valores minimos que den un lado y los mayores el otro.




Y al tener 2 sublstas le podemos llamar asi compara entre ellos para ordenarlos cada uno por separado y lugo juntarlo quedan el arreglo ordenado.

Aqui hay un ejemplo de manera descedente ya qe el ejemplo anterior se realizo de fora ascendente.


PUNTO FLOTANTE

Se trata de un coprocesador que realiza cálculos con números de punto flotante, en contra a los números enteros.

Este tipo de presentación ubica el punto en alguna posición a la derecha del dígito menos significativo.

En punto flotante se puede expresar mediante un exponente y una mantisa. Por ejemplo:
                               10.98        x10^0
                               1.098        x10^-1                 son lo mismo
                              mantisa    exponente

Para poder representar un numero flotante se necesita el signo del numero y del exponente y dígito en exponente y mantisa.

Como un numero en punto flotante puede expresarse en varias formas, es necesario establecer una, única representacion, para que esto suceda se deben normalizar, que quiere decir esto bueno para normalizar un punto flotante es si el dígito a la izquierda del punto esta entre 0 y la base ya esta normalizada.
                                1.00x10^-1    normalizado
                                0.01x10^2     no normalizado

Puede aumentar de forma considerable la velocidad de ejecución de funciones matemáticas,siempre que los programas estén diseñados para reconocerlos y utilizarlos.

Con el punto flotante pueden resolver operaciones aritméticas básicas con números enteros o fraccionarios también puedes calcular la raíz cuadrada, seno, coseno, tangente, logaritmos, exponenciales.

Para mas información pueden entrar a esta pagina donde hay mas información acerca del punto flotante.
                                        

COBOL

El lenguaje COBOL fue creado en el año 1960 y su objetivo era crear un lenguaje de programacion universal que pudiera utilizarse en cualquier ordenador, ya que en este año había muchos ordenadores y no todos los lenguajes eran compatibles así que crearon este lenguaje y fue mas orientado a los negocios.

Si les interesa aquí les dejo un tutorial acerca de este lenguaje.

Buscando as información acerca de este lenguaje me tope con 2 vídeos. El primer vídeo de ellos explica la historia de cobol y el otro vídeo que me pareció mas divertido trata de su nombre y para que sirve.

Y encontré este ejemplo que ingresas 2 numero y los multiplica.

Espero que les sirva:)