lunes, 22 de noviembre de 2010

LENGUAJES DE PROGRAMACION - PUNTOS EXTRA

Orientación a objetos basada en clase.
Una clase es un “tipo” de objetos, es decir, un molde del que se obtienen nuevos objetos, que comparten similar comportamiento, cambiando el estado de los mismos.

Orientación a objetos basada en prototipo
No existen las clases. De hecho, todos los objetos son iguales en cuanto a categoría. Los nuevos objeto se copian de otros ya existetntes. Algunos de ellos son prototipos.

Normalmente, en este tipo de lenguajes los objetos pueden modificarse, añadiendo o borrando métodos y atributos.Cada objeto es independiente, no necesitando información extra de ningún tipo.


Herencia
 La herencia en lenguajes basados en prototipos
suele ser por delegación. El objeto tiene uno o más aributos parent, de forma que cuando no puede responder a un mensaje, le reenvía éste a su padre. En el caso de los lenguajes basados en
clases, ésta suele presentarse como concatenación El objeto está compuesto por las partes que define
cada una de las clases de las que hereda.


Herencia mediante delegación
Existe una cadena de objetos apuntando a sus padres, hasta llegar a un objeto padre de todos.




 
SALUDOS!!!!!

domingo, 21 de noviembre de 2010

Tipos de DATOS

Aqui les dejo el link de mi video, no lo pude subir a blog :(






SALUDOS!!!

Patrones de Diseño - Lenguajes de Programación - PUNTOS EXTRA

PUNTOS EXTRA
Hola compañeros les hablare un poco de los Patrones de diseño, las categorias en las que se dividen y sus extructuras o plantillas de estas.

Los patrones de diseño son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.
Un patrón de diseño es una solución a un problema de diseño. Para que una solución sea considerada un patrón debe poseer ciertas características. Una de ellas es que debe haber comprobado su efectividadreusable, lo que significa que es aplicable a diferentes problemas de diseño en distintas circunstancias.

-Categorías de patrones

Según la escala o nivel de abstracción:
  • Patrones de arquitectura: Aquéllos que expresan un esquema organizativo estructural fundamental para sistemas de software.
  • Patrones de diseño: Aquéllos que expresan esquemas para definir estructuras de diseño (o sus relaciones) con las que construir sistemas de software.
  • Dialectos: Patrones de bajo nivel específicos para un lenguaje de programación o entorno concreto.
Además, también es importante reseñar el concepto de "antipatrón de diseño", que con forma semejante a la de un patrón, intenta prevenir contra errores comunes de diseño en el software. La idea de los antipatrones es dar a conocer los problemas que acarrean ciertos diseños muy frecuentes, para intentar evitar que diferentes sistemas acaben una y otra vez en el mismo callejón sin salida por haber cometido los mismos errores.
Además de los patrones ya vistos actualmente existen otros patrones como el siguiente:
  • Interacción: Son patrones que nos permiten el diseño de interfaces web.

 

-Estructuras o plantillas de patrones

Para describir un patrón se usan plantillas más o menos estandarizadas, de forma que se expresen uniformemente y puedan constituir efectivamente un medio de comunicación uniforme entre diseñadores. Varios autores eminentes en esta área han propuesto plantillas ligeramente distintas, si bien la mayoría definen los mismos conceptos básicos.
La plantilla más común es la utilizada precisamente por el GoF y consta de los siguientes apartados:
  • Nombre del patrón: nombre estándar del patrón por el cual será reconocido en la comunidad (normalmente se expresan en inglés).
  • Clasificación del patrón: creacional, estructural o de comportamiento.
  • Intención: ¿Qué problema pretende resolver el patrón?
  • También conocido como: Otros nombres de uso común para el patrón.
  • Motivación: Escenario de ejemplo para la aplicación del patrón.
  • Aplicabilidad: Usos comunes y criterios de aplicabilidad del patrón.
  • Estructura: Diagramas de clases oportunos para describir las clases que intervienen en el patrón.
  • Participantes: Enumeración y descripción de las entidades abstractas (y sus roles) que participan en el patrón.
  • Colaboraciones: Explicación de las interrelaciones que se dan entre los participantes.
  • Consecuencias: Consecuencias positivas y negativas en el diseño derivadas de la aplicación del patrón.
  • Implementación: Técnicas o comentarios oportunos de cara a la implementación del patrón.
  • Código de ejemplo: Código fuente ejemplo de implementación del patrón.
  • Usos conocidos: Ejemplos de sistemas reales que usan el patrón.
  • Patrones relacionados: Referencias cruzadas con otros patrones.



    REFERENCIAS

    SALUDOS!!!!!

sábado, 20 de noviembre de 2010

Pilas y Colas -

LENGUAJES DE PROGRAMACIÓN - PUNTOS EXTRA

-Pila
Una pila es una lista ordinal o estructura de datos en la que el modo de acceso a sus elementos es de tipo LIFO (del inglés Last In First Out, último en entrar, primero en salir) que permite almacenar y recuperar datos. Se aplica en multitud de ocasiones en informática debido a su simplicidad y ordenación implícita en la propia estructura.





Para el manejo de los datos se cuenta con dos operaciones básicas: apilar (push), que coloca un objeto en la pila, y su operación inversa, retirar (o desapilar, pop), que retira el último elemento apilado.
En cada momento sólo se tiene acceso a la parte superior de la pila, es decir, al último objeto apilado (denominado TOS, Top of Stack en inglés). La operación retirar permite la obtención de este elemento, que es retirado de la pila permitiendo el acceso al siguiente (apilado con anterioridad), que pasa a ser el nuevo TOS.
Por analogía con objetos cotidianos, una operación apilar equivaldría a colocar un plato sobre una pila de platos, y una operación retirar a retirarlo.
Las pilas suelen emplearse en los siguientes contextos:

  • Evaluación de expresiones en notación postfija (notación polaca inversa).
  • Reconocedores sintácticos de lenguajes independientes del contexto
  • Implementación de recursividad.

    -Operaciones
    Una pila cuenta con 2 operaciones imprescindibles: apilar y desapilar, a las que en las implementaciones modernas de las pilas se suelen añadir más de uso habitual.
  • Crear: se crea la pila vacía.
  • Apilar: se añade un elemento a la pila.(push)
  • Desapilar: se elimina el elemento frontal de la pila.(pop)
  • Cima: devuelve el elemento que esta en la cima de la pila. (top o peek)
  • Vacía: devuelve cierto si la pila está vacía o falso en caso contrario.


    PILA CON PUNTEROS EN C++ 


-Cola de Datos

Una cola es una estructura de datos, caracterizada por ser una secuencia de elementos en la que la operación de inserción push se realiza por un extremo y la operación de extracción pop por el otro. También se le llama estructura FIFO (del inglés First In First Out), debido a que el primer elemento en entrar será también el primero en salir.
Las colas se utilizan en sistemas informáticos, transportes y operaciones de investigación (entre otros), dónde los objetos, personas o eventos son tomados como datos que se almacenan y se guardan mediante colas para su posterior procesamiento. Este tipo de estructura de datos abstracta se implementa en lenguajes orientados a objetos mediante clases, en forma de listas enlazadas.

Colas en JAVA






SALUDOS!!!!

 


Lenguajes de Programación - Programación Orientada a Objetos

La programación Orientada a objetos (POO) es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación.
Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros programas en términos de objetos, propiedades, métodos y otras cosas que veremos rápidamente para aclarar conceptos y dar una pequeña base que permita soltarnos un poco con este tipo de programación. 

Clases en POO
Las clases son declaraciones de objetos, también se podrían definir como abstracciones de objetos. Esto quiere decir que la definición de un objeto es la clase. Cuando programamos un objeto y definimos sus características y funcionalidades en realidad lo que estamos haciendo es programar una clase. 
 
Propiedades en clases
Las propiedades o atributos son las características de los objetos. Cuando definimos una propiedad normalmente especificamos su nombre y su tipo. con los objetos.
 
Métodos en las clases
Son las funcionalidades asociadas a los objetos. Cuando estamos programando las clases las llamamos métodos. Los métodos son como funciones que están asociadas a un objeto.  


 
Objetos en POO
Los objetos son ejemplares de una clase cualquiera. Cuando creamos un ejemplar tenemos que especificar la clase a partir de la cual se creará. Para crear un objeto se tiene que escribir una instrucción especial que puede ser distinta dependiendo el lenguaje de programación que se emplee, pero será algo parecido a esto:
miCoche = new Coche() .
Con la palabra new especificamos que se tiene que crear una instancia de la clase que sigue a continuación. Dentro de los paréntesis podríamos colocar parámetros con los que inicializar el objeto de la clase coche. 

Mensajes en objetos
Un mensaje en un objeto es la acción de efectuar una llamada a un método. Por ejemplo, cuando le decimos a un objeto coche que se ponga en marcha estamos pasándole el mensaje “ponte en marcha”.
Para mandar mensajes a los objetos utilizamos el operador punto, seguido del método que deseamos invocar.
miCoche.ponerseEnMarcha()
En este ejemplo pasamos el mensaje ponerseEnMarcha(). Hay que colocar paréntesis igual que cualquier llamada a una función, dentro irían los parámetros. 

Estados en objetos
Cuando tenemos un objeto sus propiedades toman valores. Por ejemplo, cuando tenemos un coche la propiedad color tomará un valor en concreto, como por ejemplo rojo o gris metalizado. El valor concreto de una propiedad de un objeto se llama estado.
Para acceder a un estado de un objeto para ver su valor o cambiarlo se utiliza el operador punto.
miCoche.color = rojo
El objeto es miCoche, luego colocamos el operador punto y por último el nombre e la propiedad a la que deseamos acceder. En este ejemplo estamos cambiando el valor del estado de la propiedad del objeto a rojo con una simple asignación. 


Ejemplos:

-JAVA
hola mundo   



C++
Dos programas sencillos:
1.-Suma de dos enteros

 

EJECUCIÓN



2.- El volumen de un cubo


EJECUCIÓN







SALUDOS!!

viernes, 19 de noviembre de 2010

Lenguajes de Programación - Lenguajes Multiparadigma

Un lenguaje de programación multiparadigma es el cual soporta más de un paradigma de programación. Según lo describe Bjarne Stroustrup, permiten crear “programas usando más de un estilo de programación". 

El objetivo en el diseño de estos lenguajes es permitir a los programadores utilizar el mejor paradigma para cada trabajo, admitiendo que ninguno resuelve todos los problemas de la forma más fácil y eficiente posible.
Por ejemplo, lenguajes de programación como C++, Genie, Delphi, Visual Basic o PHP, combinan el paradigma imperativo con la orientación a objetos. Incluso existen lenguajes multiparadigma que permiten la mezcla de forma natural, como en el caso de Oz, que tiene subconjuntos (particularidad de los lenguages lógicos), y otras características propias de lenguages de programación funcional y de orientación a objetos.


-Lenguaje GO
GO es la nueva propuesta de Google para incursionar en otro campo más que le quiere arrebatar a Microsoft: Los lenguajes de programación. GO es el lenguaje de programación de Google y entre sus más destacadas características se encuentra el hecho de ser de código abierto, a diferencia del lenguaje de Microsoft.

EJEMPLO:
 En el codigo del lenguaje GO no es necesario el punto y coma despues de cada declaracion.


-Lenguaje Oz

El Sistema de Programación Mozart es una plataforma de desarrollo avanzada para aplicaciones inteligentes, distribuidas. El sistema es el resultado de una década de investigación en el diseño de lenguajes de programación y aplicación, la inferencia basada en restricciones, la computación distribuida, y las interfaces humano-computadora. Como resultado, Mozart no tiene igual en potencia expresiva y funcionalidad. Mozart tiene un entorno interactivo de desarrollo incremental y una aplicación de calidad de producción para las plataformas Unix y Windows. Mozart es el fruto de una colaboración de investigación en curso por el Consorcio Mozart.Mozart se basa en el lenguaje de Oz, que apoya la programación declarativa, la programación orientada a objetos, programación con restricciones, y la concurrencia, como parte de un todo coherente. 

EJEMPLO:








SALUDOS!!!!


jueves, 18 de noviembre de 2010

LABORATORIO DE LENGUAJES - TIPOS DE DATOS

- Listas

En Ciencias de la Computación, una lista enlazada es una de las estructuras de datos fundamentales, y puede ser usada para implementar otras estructuras de datos. Consiste en una secuencia de nodos, en los que se guardan campos de datos arbitrarios y una o dos referencias (punteros) al nodo anterior o posterior. El principal beneficio de las listas enlazadas respecto a los array convencionales es que el orden de los elementos enlazados puede ser diferente al orden de almacenamiento en la memoria o el disco, permitiendo que el orden de recorrido de la lista sea diferente al de almacenamiento.

Una lista enlazada es un tipo de dato auto-referenciado porque contienen un puntero o link a otro dato del mismo tipo. Las listas enlazadas permiten inserciones y eliminación de nodos en cualquier punto de la lista en tiempo constante (suponiendo que dicho punto está previamente identificado o localizado), pero no permiten un acceso aleatorio. Existen diferentes tipos de listas enlazadas: Lista Enlazadas Simples, Listas Doblemente Enlazadas, Listas Enlazadas Circulares y Listas Enlazadas Doblemente Circulares.





Tipos de Listas Enlazadas:

    *  Listas enlazadas lineale
        Listas simples enlazadas
         Lista Doblemente Enlazada


Listas simples enlazadas
La lista enlazada básica es la lista enlazada simple la cual tiene un enlace por nodo. Este enlace apunta al siguiente nodo en la lista, o al valor NULL o a la lista vacía, si es el último nodo.

 


Lista Doblemente Enlazada

Un tipo de lista enlazada más sofisticado es la lista doblemente enlazada o lista enlazadas de dos vías. Cada nodo tiene dos enlaces: uno apunta al nodo anterior, o apunta al valor NULL si es el primer nodo; y otro que apunta al nodo siguiente, o apunta al valor NULL si es el último nodo.




En algún lenguaje de muy bajo nivel, XOR-Linking ofrece una vía para implementar listas doblemente enlazadas, usando una sola palabra para ambos enlaces, aunque el uso de esta técnica no se suele utilizar.
 

Lista circular enlazada simple: Son identicas a las listas enlazadas simples, la diferencia es que en estas, el nodo final esta enlazado al primero.


Lista circular enlazada doble: Son lo mismo que las listas enlazadas dobles, donde el ultimo elemeno apunta al primero y el primero apunta al ultimo.


- Colas
Una cola es una estructura de datos, caracterizada por ser una secuencia de elementos en la que la operación de inserción push se realiza por un extremo y la operación de extracción pop por el otro. También se le llama estructura FIFO (del inglés First In First Out), debido a que el primer elemento en entrar será también el primero en salir.
Las colas se utilizan en sistemas informáticos, transportes y operaciones de investigación (entre otros), dónde los objetos, personas o eventos son tomados como datos que se almacenan y se guardan mediante colas para su posterior procesamiento. Este tipo de estructura de datos abstracta se implementa en lenguajes orientados a objetos mediante clases, en forma de listas enlazadas.


  • Colas circulares (anillos): en las que el último elemento y el primero están unidos.
  • Colas de prioridad: En ellas, los elementos se atienden en el orden indicado por una prioridad asociada a cada uno. Si varios elementos tienen la misma prioridad, se atenderán de modo convencional según la posición que ocupen. Hay 2 formas de implementación:
  1. Añadir un campo a cada nodo con su prioridad. Resulta conveniente mantener la cola ordenada por orden de prioridad.
  2. Crear tantas colas como prioridades haya, y almacenar cada elemento en su cola.
  • Bicolas: son colas en donde los nodos se pueden añadir y quitar por ambos extremos; se les llama DEQUE (Double Ended QUEue). Para representar las bicolas lo podemos hacer con un array circular con Inicio y Fin que apunten a cada uno de los extremos. Hay variantes:
  • Bicolas de entrada restringida: Son aquellas donde la inserción sólo se hace por el final, aunque podemos eliminar al inicio ó al final.
  • Bicolas de salida restringida: Son aquellas donde sólo se elimina por el final, aunque se puede insertar al inicio y al final.

-  Arboles
En ciencias de la informática, un árbol es una estructura de datos ampliamente usada que imita la forma de un árbol (un conjunto de nodos conectados). Un nodo es la unidad sobre la que se construye el árbol y puede tener cero o más nodos hijos conectados a él. Se dice que un nodo a es padre de un nodo b si existe un enlace desde a hasta b (en ese caso, también decimos que b es hijo de a). Sólo puede haber un único nodo sin padres, que llamaremos raíz. Un nodo que no tiene hijos se conoce como hoja. Los demás nodos (tienen padre y uno o varios hijos) se les conoce como rama.
-Árboles Binarios  -Árbol de búsqueda binario auto-balanceable     Árboles AVL     Árboles Rojo-Negro     Árbol AA
-Árboles Multicamino
 -Árboles B (Arboles de búsqueda multicamino autobalanceados)
    Árbol-B*    Árbol-B+





-Arreglos

En programación a los arreglos tambien se les puede llama matriz o vector es una zona de almacenamiento contiguo, que contiene una serie de elementos del mismo tipo, los elementos de la matriz. Desde el punto de vista lógico una matriz se puede ver como un conjunto de elementos ordenados en fila (o filas y columnas si tuviera dos dimensiones). En principio, se puede considerar que todas las matrices son de una dimensión, la dimensión principal, pero los elementos de dicha fila pueden ser a su vez matrices (un proceso que puede ser recursivo), lo que nos permite hablar de la existencia de matrices multidimensionales, aunque las más fáciles de imaginar son los de una, dos y tres dimensiones.
Estas estructuras de datos son adecuadas para situaciones en las que el acceso a los datos se realice de forma aleatoria e impredecible. Por el contrario, si los elementos pueden estar ordenados y se va a utilizar acceso secuencial sería más adecuado utilizar una lista, ya que esta estructura puede cambiar de tamaño fácilmente durante la ejecución de un programa.


 -Esta es una matriz bidimencional con 10 elementos



REFERENCIAS
http://es.wikipedia.org/wiki/Vector_%28programaci%C3%B3n%29
http://es.wikipedia.org/wiki/%C3%81rbol_%28inform%C3%A1tica%29
http://es.wikipedia.org/wiki/Cola_%28inform%C3%A1tica%29
http://es.wikipedia.org/wiki/Tipo_de_dato


SALUDOS!!!