viernes, 19 de noviembre de 2010

Aquí les dejo la presentación acerca de los tipos de datos
Espero que les sirva:)


lunes, 15 de noviembre de 2010

LENGUAJE C++4

Este es un programa es como una boleta de transito en donde tu ingresas el cuadrante en donde se encuentra el vehiculo y la placa del vehiculo y la velocidad que lleva el vehiculo y la velocidad que limite y calcula la multa que deberia pagar el que se excedio.

Y aqui es la tabla que imprime



ALGOL

Algol es un acronimo de Algorithmic Language, fue muy popular en los años 60. Algol influyo en varios programas como: Pascal, Ada y C.

En 1965 se definieron 2 corrientes:
  • Algol W
  • Algol 68
Algol W
Lenguaje diseñado por Niklaus Wirth y Tony Haore. Se trata de un lenguaje conciso, simple de implementar que evita todos lo defectos conocidos del lenguaje Algol, e incluye características adicionales. No es sucesor de Algol.

Entre las características del lenguaje destacan aritmética de doble presicion, números complejos, strings y estructuras de datos dinamicos, valor resultado.

Algol 68
La definición del lenguaje fue representada en 1965. Luego de varios años de revisión del diseño se llego a una versión definitiva en 1968. El principal autor es Adriaan van Wijngaarden.

El objetivo principal son el de permitir comunicar algoritmos, el permitir una eficiente ejecución de los mismos en diferentes arquitecturas.

Una característica de Algol 68 es que su semántica fue definida antes de ser implementado en base al formalismo llamado gramáticas de 2 niveles.

JAVASCRIPT

Es un de los lenguajes de scripting multiparadigma, basado en prototipos, utilizado para acceder objetos en aplicaciones.

Todos los navegadores modernos interpretan el codigo Javascript integrado dentro de las paginas web.

El lenguaje fue inventado por Brendan Eich la que desarrollo los primeros navegadores web comerciales y aparecio en 1995.

Aqui les dejo un tutorial y un video acerca de como empezar a utilizar javascript


PYTHON

Es un lenguaje de programacion de alto nivel cuya filosofia hace hincapie en una sintaxis muy limpia y que favorezca un codigo legible.

Se trata de un lenguaje de programacion multiparadigma y que soporta orientación a objetos, imperativos y funcional.

Python fue creado a finales de los años ochenta por Guido van Rossum.

Una característica importante de python es la resolucion dinámica, osea lo que enlaza un método y un nombre de variable durante la ejecución del programa.

Las extensiones mas comunes son:
- .py
- .pyc
- .pyd
- .pyo
- .pyw

Los tipos de datos que utiliza python son:
  • String
  • Unicode
  • List
  • Tuple
  • Set
  • Fronzenset
  • Dict
  • Int
  • Long
  • Bool
Aquí les dejo un tutorial y un video acerca de python.

LENGUAJE C++3

En este programa ingresas 3 valores por elemento y hace el promedio de los 3 elementos e imprimeindo los 3 promedios y te dice cual fue el promedio mas alto.

El codigo es:

E imprime

AWK

Es un lenguaje de programacion diseñado para procesar datos basados en texto, ya sean ficheros o flujos de datos. El nombre de AWK viene de los apellidos de los autores: Alfred Aho, Peter Weinberger y Brian Kerinighan.


AWK es ejemplo de un lenguaje de programacion que usa ampliamente el tipo de datos de listas asociativas y expresiones regulares.


AWK fue una de las primeras herramientas en aparecer en Unix y gano popularidad como una manera de añadir funcionalidad a las tuberias Unix. La implementacion de alguna versión del lenguaje AWK es estandar en casi todo sistema operativo tipo Unix moderno se puede instalar implementaciones de AWK en casi todos los ssitemas operativos.


Aquí les dejo un tutorial.

LENGUAJES FUNCIONALES

Es un paradigma declarativa basado en la utilizacion de funciones aritméticas que no manejan datos mutables o de estado. La programacion funcional tiene sus raíces en el calculo lambda, un sistema formal desarrollado en 1930 para investigar la definición de función, aplicacion de las funciones y recursion.

Los lenguajes de programacion funcional han sido enfatizados en el ambiente académico y no tanto en el desarrollado de software comercial.

El objetivo es conseguir lenguajes expresivos y matematicamente elegantes, en los que no sea necesario bajar el nivel de la maquina para describir el proceso llevado a cabo por el programa.

Algunos lenguajes son:
- LISP
- HASKELL
- SCHEME
- ERLANG
- STANDARD ML.

LENGUAJE C++ programa2

Este es otro programa en lenguaje C++ en donde tu ingresas 6 elementos y este programa te dice cual el es el mayor y menor de los elementos agregados y al final los imprime em forma invertida que tu los ingresaste.

El codigo es:
E imprimio :

LENGUAJE C++

Este programa es en el lenguaje c++, y realiza una multiplicacion de 2 vectores.

Te pide que introduzcas 5 valores (0,1,2,3,4) que serian el primer valores y despues te piden que ingreses otros 5 valores que seria el segundo valor y multiplicandolos (el valor 0 por el valor0, valor 1 por valor 1, etc)
 Aqui les dejo el codigo del programa

Y el  resultado seria


LENGUAJES IMPERATIVOS

Es un paradigma de programacion que describe la programacion en términos del estado del programa y sentencias que cambian dicho estado. Son un conjunto de instrucciones que le indican al computador como realizar una tarea.

La implementación de hardware de la mayoría de los computadores es imperativa. Esto se debe a que el hardware de los computadores implementa el paradigma de las maquinas turing.

Los lenguajes imperativos de ato nivel usan variables y sentencias mas complejas, pero aun siguen el mismo paradigma.

Los primeros lenguajes imperativos fueron los lenguajes de maquina de los computadores originales. Las instrucciones fueron muy simples, la implementación de hardware fácil, abstrayendo la creación de programas complejos.

Algunos lenguajes imperativos son:
- lenguaje C
- pascal
- basic
- fortran

MAQUINA VIRTUAL

En la entrada pasada hable acerca de SMALLTALK y decía que el sistema de este lenguaje esta compuesto por varias cosas pero decía acerca de que estaba compuesta por una maquina virtual y en esta entrada es lo que hablare acerca de la maquinas virtuales.

MAQUINA VIRTUAL
Es un software que emula a una computadora y puede ejecutarse programas como si fuese una computadora real.
Una característica esencial de las maquinas virtuales es que los procesos que ejecuta están limitados por los recursos y abstracciones proporcionados por ellas.

Las maquinas virtuales se clasifican en 2 categorías, según su funcionalidad y su grado de equivalencia a una verdadera maquina.
  • MAQUINA VIRTUAL DE SISTEMA
Permiten a la maquina física subyacente multiplexarse entre varias maquinas virtuales cada una ejecutando su propio sistema operativo. A la capa de software que permite la virtualizacion se llama monitor de maquina virtual, puede ejecutarse directamente sobre el hardware o sobre el sistema operativo.

Algunas maquinas virtuales de sistema:
  1. Denali
  2. Microsoft Virtual PC
  3. Linux-Vserver
  4. Virtual Operating System

  • MAQUINA VIRTUAL DE PROCESO
Se ejecuta como un proceso normal dentro de un sistema operativo y soporta un solo proceso. Su objetivo es el de proporcionar un entorno de ejecución independiente de la plataforma de hardware y del sistema operativo que oculte los detalles de la plataforma subyacente y permita que un programa se ejecute siempre de la  misma forma sobre cualquier plataforma.

Algunas maquinas virtuales de proceso son:
  1. Glulx
  2. Java virtual machine
  3. Perl virtual machine
  4. Smalltalk virtual machine
Aqui les dejo un video habla sobre las maquinas virtuales.

SMALLTALK

Es un lenguaje de programacion que permite realizar tareas de computación mediante la interacción con un entorno de objetos virtuales.
Fue diseñado por Alana Kay y su disponibilidad se dio en el año 1980

Un sistema de SMALLTALK esta compuesto por:
  • Maquina virtual
  • Imagen virtual que contiene todos los objetos del sistema
  • lenguaje de programacion (smalltalk)
  • biblioteca de objetos reusables
El objetivo era crear un sistema que permitiese expandir la creatividad de usuarios, proporcionando un entorno para a experimentación, creación e investigacion.

Smalltalk es considerado el primero de los lenguajes orientados a objetos, aunque el primero en implementar la orientado a objeto (SIMULA).

Las características del lenguaje:
  • Orientacion a objetos pura.
  • Tipado dinámico.
  • Interacción entre objetos mediante envió de mensajes.
  • Herencia simple y raíz común.
  • Reflexion computacional completa.
  • Recolección de basura.
  • Compilacion en tiempo ejecución.
  • Múltiples implementaciones.

Aquí les dejo un tutorial, y un vídeo.

ADA

Es un lenguaje de programacion orientado a objetos fue diseñado por Jean Ichbiah de CII Honeywell Bull por encargo del Departamento de Defensa de los Estados Unidos. Es un lenguaje multiproposito, orientado a objetos y concurrente.

Fue diseñado con la seguridad en mente y a la reducción de errores comunes y dificiles de descubrir.

Ada es usado principalmente donde se necesita gran seguridad y fiabilidad como la defensa, aeronáutica, industria aeroespacial, etc.

Durante los años 1970 el departamento de Defensa de Estados Unidos buscaba un lenguaje único que cumpliese ciertas normas, pero buscando entre los lenguajes ya existentes no encontraron ni uno que contara con todas las normas requeridas así que realizaron un concurso y el ganador fue Jean Ichbiah.

Un compilador de Ada muy usado es GNAT desarrollado por la Universidad de New York.

Aqui les dejo un tutorial.

Espero que es sirva.:)

LENGUAJE LOGICO #2

En una entrada pasada les había dejado la explicacion de un problema lógico bueno aquí les dejo el código y lo que imprimió al hacerle unas preguntas.

cocinero(sergio).

cocinero(ruben).
cocinero(carlos).
comida(tacos).
comida(milanesa).
comida(flautas).
dia(martes).
dia(jueves).
dia(viernes).


cocinero_comida(sergio,milanesa).
cocinero_comida(ruben,flautas).
cocinero_comida(carlos,tacos).
comida_dia(tacos,martes).
comida_dia(milanesa,jueves).
comida_dia(flautas,viernes).
dia_cocinero(jueves,sergio).
dia_cocinero(viernes,ruben).
dia_cocinero(martes,tacos).


Y aquí esta lo que imprimió al preguntarle quien cocinaba la milanesa respondió que sergio, también pregunte si el martes ruben cocinaba y me contesto que no y por ultimo si el viernes se cocinaba las flautas la respuesta fue que si.
 
Espero qe les sriva:)

C++

Es un lenguaje de programacion diseñado a mediados de los años 1980 por Bjarne Stroustrup. La intención de su creación fue el extender el lenguaje C, con mecanismos que permitan la manipulación de objetos.

Los tipos fundamentales de C++:
- Carácter
- Enteros
- Vació
- Booleanos
- Punto flotante

Los objetos en C++ son abstraídos mediante una clase. Según el paradigma de la programacion orientada a objetos un objeto consta de:
  1. Métodos
  2. Atributos
Un ejemplo sencillo sobre los objetos seria: si tomaras en mente un ipod. Cada ipod comparte unas características: como que capacidad tiene, color del ipod, el tamañano esos son algunos ATRIBUTOS y en cuanto a los métodos serian como las funciones para: escuchar música, ver vídeos, ver imagenes, jugar esas son métodos de una clase.

Aquí les dejo un ejemplo acerca de calcular el área de un triángulo.

Espero que les sirva:)

domingo, 14 de noviembre de 2010

CONJUNTOS

Es una coleccion de ciertos valores, sin ningun orden concreto ni valores repetidos.

Los conjuntos pueden implementarse en diversas estructuras de datos. Con una estructura de datos se comprueba si un objeto se encuentra en el conjunto, ademas de activarse otras operaciones como la iteracion sobre los objetos del conjunto, realizar uniones o intersecciones entre 2 conjuntos, se impletaron tambien en arboles binario de busquedaspara conjuntos ordenados o una tabla de dispersion en conjuntos no orenados.

Uno de los primeros lenguajes que soportaban conjuntos fue PASCAL, muchos lenguajes os incluyen ahora, ya sea en el nucleo del lenguaje o una libreria estandar,

MULTICONJUNTO
Es lo mismo que una estrcutura de datos de un conjunto pero admite valores repetidos.


Espero que les sirva:)

BITS

Es el acrónimo de Binary digit (numero binario), es un dígito del sistema de numeración binario.

Es la unidad mínima de información empleada en informática. Se puede representar 2 valores que sean como verdadero o falso, norte o sur, masculino o femenino, abierto o cerrado, etc.

Con bit como dije antes solamente representa 2 valores. Si por ejemplo usamos 2 bits, tendríamos 4 combinacion que serian:
  • 0 0-- los 2 apagados
  • 0 1-- el la derecha apagado e izquierda prendido
  • 1 0-- el de la derecha prendido e izquierda apagado
  • 1 1-- los 2 prendidos.
En cualquier sistema de numeración posicional, el valor de los digitos depende del lugar.
Por ejemplo: en el sistema decimal si el 9 puede valer 9 si se encuentra en la posición de unidad, pero si se encuentra en las decenas el valor seria 90 y si se encontrara en el valor de las centenas su valor seria 900, se podría decir que cuando el dígito se mueva a la izquierda vale 10 veces mas y si se mueve a las derecha su valor es menos 10.

En el sistema binario es parecido solo que e bit si se mueve a la izquierda vale el doble y si se mueve a la derecha vale menos el doble.

Aquí les dejo una tabla de los bits.
Espero que les sirva:)

NUMEROS BINARIOS

Es un sistema de numeración en el que los números se representan utilizando solo (0 y 1). Es el que utiliza en las computadoras,pues trabajan internamente 2 niveles de voltaje (0 ON y 1 OFF).

El matemático indio Pingala presento la primera descripción que se conoce, y fue en el siglo 3 antes de nuestra era.

En 1605 Francois Bacon hablo de un sistema por el cual las letras del alfabeto podrían reducirse a secuencias de digitos binarios, la cuales podría ser codificadas como variaciones apenas visibles en la fuente de cualquier texto.

En 1854, el matemático británico George Boole, publico un articulo, detallando un sistema de logica que terminara denominarse Algebra de Boole. Este sistema es usado mucho en circuitos electrónicos.

DECIMAL--->BINARIO
Es un método parecido a la factorizacion en números primos.Depende si el numero es par o impar,colocando un cero o un uno en la columna derecha, si es impar le restas uno y sigues dividiendo hasta llegar a 1.
BINARIO--->DECIMAL
  1. Inicie del lado derecho en binario y cada cifra multicandolo por 2 elevado a la potencia consecutiva (2^0,2^1,...,2^n).
  2. Multiplicando y sumando el resultado es el numero en decimal.

Y aquí es un tabla del 0 al 10 en decimal y binario
Espero que les sirva:)

ORIENTADO A OBJETOS

Es un paradigma de programacion que usa objetos y sus interaciones para diseñar aplicaciones y programas informáticos. El uso de este paradigma fue a principios de los años 1990.

Los objetos son entidades que combinan:
  • Estado: esta compuesto de datos, sera uno o varios atributos a los que se le habrán asignado valores.
  • Comportamiento: esta definido por los procedimientos con que pueden operar dicho objeto.
  • Identidad: es una propiedad de un objeto que lo diferencia del resto.
La programación orientada a objetos es una forma de programar que trata de encontrar una solución a estos problemas. Entre ellos los mas conocidos son:


  • Clase: definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciación es la lectura de estas definiciones y la creación de un objeto a partir de ellas.
  • Herencia: (por ejemplo, herencia de la clase C a la clase D) Es la facilidad mediante la cual la clase D hereda en ella cada uno de los atributos y operaciones de C, como si esos atributos y operaciones hubiesen sido definidos por la misma D. Por lo tanto, puede usar los mismos métodos y variables publicas declaradas en C.
  • Objeto: entidad provista de un conjunto de propiedades o datos y de comportamiento o métodos los mismos que consecuentemente reaccionan a eventos.
  • Método: Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecución se desencadena tras la recepción de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. 
  • Evento: Es un suceso en el sistema. El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. También se puede decir como evento, a la reacción que puede desencadenar un objeto, es decir la acción que genera.
  • Mensaje: una comunicación dirigida a un objeto, que le ordena que ejecute uno de sus métodos con ciertos parámetros asociados al evento que lo generó.
  • Propiedad o atributo: contenedor de un tipo de datos asociados a un objeto, que hace los datos visibles desde fuera del objeto y esto se define como sus características predeterminadas, y el valor puede ser alterado por la ejecución de algún método.
  • Estado interno: es una variable que se declara privada, que puede ser únicamente accedida y alterada por un método del objeto, y que se utiliza para indicar distintas situaciones posibles para el objeto. No es visible al programador que maneja una instancia de la clase.
  • Componentes de un objeto: atributos, identidad, relaciones y métodos.
  • Identificación de un objeto: un objeto se representa por medio de una tabla o entidad que esté compuesta por sus atributos y funciones correspondientes.


CARACTERISTICAS
Existe un acuerdo acerca de qué características tendra la "orientación a objetos", las características siguientes son las más importantes:



  1. Abstracción: denota las características principales de un objeto, donde se capturan sus comportamientos.Cada objeto en el sistema sirve como modelo de un "agente" abstracto que puede realizar trabajo, informar y cambiar su estado, y "comunicarse" con otros objetos en el sistema sin revelar cómo se implementan estas características. Las funciones o los métodos pueden también ser abstraídos y cuando lo están, una variedad de técnicas son requeridas para ampliar una abstracción.El proceso de abstracción permite seleccionar las características importantes dentro de un conjunto e identificar comportamientos comunes para definir nuevos tipos de entidades en el mundo real. 
  2. Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción.
  3. Modularidad: Es la propiedad que permite subdividir una aplicación en partes más pequeñas (módulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicación en sí y de las restantes partes. Estos módulos que se puedan compilar por separado, pero que tienen conexiones con otros módulos. 
  4. Principio de ocultación: Cada objeto está aislado del exterior, es un módulo, y cada tipo de objeto expone una interfaz a otros objetos que especifica cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas.
  5. Polimorfismo: Las referencias y las colecciones de objetos pueden contener objetos de diferentes tipos, y la invocación de un comportamiento en una referencia producirá el comportamiento correcto para el tipo real del objeto referenciado. Cuando esto ocurre en "tiempo de ejecución", esta última característica se llama asignación tardía o asignación dinámica.
  6. Herencia: las clases no están aisladas, sino que se relacionan entre sí, formando una jerarquía de clasificación. Los objetos heredan las propiedades y el comportamiento de todas las clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes. 
  7. Recolección de basura: Es la técnica por la cual el entorno de objetos se encarga de destruir automáticamente, y por tanto desvincular la memoria asociada, los objetos que hayan quedado sin ninguna referencia a ellos. Esto significa que el programador no debe preocuparse por la asignación o liberación de memoria, ya que el entorno la asignará al crear un nuevo objeto y la liberará cuando nadie lo esté usando. 
Algunos lenguajes orientado a objetos:
- C++
- Ada
- Clarion
- Javas
- Smalltalk
- Ruby
- Eiffel
entre otros.


Espero que les sirva:)

JAVA

Es un lenguaje orientado a objetos desarrollado por Sun Microsystems a principios de los años 90. Tiene un sintaxis muy parecido al C y C++.

Los principales objetivos que se tomaron en cuenta para la creación de java fueron:
  • Usar la metodología de la programacion orientada a objetos.
  • Permitir la ejecución de un mismo programa en múltiples sistemas operativos.
  • Incluir por defecto soporte para el trabajo de red.
  • Diseñarse para ejecutar código en sistemas remotos de forma segura.
  • Ser fácil de usar y tomar lo mejor de otros objetos orientados a objetos.
Este código realiza el área apartir de un radio.

Y encontre un tutorial acerca de lo basico de JAVA.

Espero que les sirva.

TABLAS DE DISPERSION

Es una estructura de datos que asocia claves con valores. Estas tablas se utilizan para hacer búsquedas permitiendo el acceso a los elementos almacenados a partir de una clave generada, también se utiliza para implentar insercciones y eliminaciones. También son llamadas tablas hash.


Las tablas de dispersión son mas útiles cuando tienes que almacenar grandes cantidades de elementos y también se utilizan para los vectores de una dimensión y también para vectores multidimensionales.

Una estructura de dispersión se compone de 3 elementos:
  1. Un vector con dirección que pueda almacenar "n" elementos.
  2. Una función de dispersión que nos permita a partir de una clave, obtener el índice donde esta el dato con la clave.
  3. Una función de resolución de colisiones.

Las operaciones básicas de las tablas son:
  • Inserccion
  1. Al almacenar un elemento en la tabla de dispersión se tiene que convertir su clave a un número, para esto se utiliza la función resumen (hash) a la clave del elemento.
  2. El resultado de dicha función debe de dirigirse al espacio de direcciones del arreglo que se emplea como soporte, esto se obtiene con la función modulo. Después de este paso se obtendrá un índice válido para la tabla.
  3. El elemento se almacena en la posición obtenida en el paso anterior. Si en dicha posición ya se encuentra otro elemento, se produce una colisión. Esto se soluciona asociando una lista a cada posición de la tabla, aplicando otra función o buscando otro elemento libre.


  • Búsqueda
  1. Para recuperar los datos, se necesita conocer la clave del elemento, a esto se le aplica la función resumen.
  2. El valor que se obtiene se manda al espacio de direcciones de la tabla.
  3. Si este elemento tiene la misma clave empleada en la búsqueda, entonces es el que buscamos. Si la clave es distinta, se tiene que buscar el elemento por el método empleado para resolver el problema de las colisiones al almacenar el elemento.
Para tener un buen rendimiento de una tabla hash es necesario una buena función hash. Las colisiones son resueltas por algún tipo de búsqueda lineal.





Las funciones hash más utilizadas son:


  • Hash de División.


  • Hash de Multiplicación.


Si dos claves generan un hash apuntando hacia el mismo índice, los registros no pueden almacenarse en la misma posición. Así que cuando una casilla ya está ocupada, se debe buscar otra ubicación para almacenar el nuevo elemento.


 
Espero que les sirva:)

viernes, 12 de noviembre de 2010

PUNTEROS

Un puntero o apuntador es una variable que hace referencia a una region de memoria,es una variable cuyo valor es una direccion de memoria. Si se tiene una variable 'p' de puntero que contiene una direccion de memoria que se encuentra en el valor 'v' asi que se dice qe 'p' apunta en 'v'. Son utiizados por programadores.


A trabajar con punteros implica la NO manipulacion de variables, si no manejar direcciones de memoria.


Un apuntador sin una variable almacenada



Un apuntador ya con una variable.





Un ejemplo de una direccion de memora con una variable llamda alm que es = a 45.


y la pantalla negra imprime:
Espero que le sirva:)

MAQUINAS TURING

Es un modelo computacional que realiza una lectura/escritura de manera automática sobre una entrada llamada cinta, generando una salida de la misma.



HISTORIA
Este concepto fue introducido por Alan Turing, en el cual se estudiaba la cuestión planteada por David Hilbert sobre si las matemáticas son decibles, osea si hay un método definido que se pueda aplicarse a cualquier sentencia matemática y nos diga si es cierta o no. Turing ideo un modelo formal de computador, la maquina de Turing y demostró que existian problemas que una maquina no podía resolver.
FUNCIONAMIENTO
Este modelo esta conformado por un alfabeto de entrada y uno de salida, un símbolo especial llamada blanco, normalmente b,  Δ), un conjunto de estados finitos y un conjunto de transiciones entre dichos estados.

Su funcionamiento se basa en la función de transición que recibe un estado inicial y una cadena de caracteres pertenecientes al alfabeto de entrada, luego va leyendo una celda de la cinta, borrando el símbolo, y escribir el nuevo símbolo perteneciente al alfabeto de salida y finalmente avanza a la izquierda o a la derecha, repitiendo lo que indique la función transición.

Una maquina turing con una sola cinta puede ser definida como 7-tupla  M=(Q, \Sigma, \Gamma, s, b, F, \delta)\, donde:
  • Q \, es un conjunto finito de estados.



  • \Sigma \,es un conjunto finito de símbolos distinto del espacio en blanco, denominado alfabeto de máquina o de entrada.


  • \Gamma \,es un conjunto finito de símbolos de cinta, denominado alfabeto de cinta. (\Sigma \subseteq\Gamma \,)


  • s \in Q es el estado inicial.


  • b \in \Gammaes un símbolo denominado blanco, y es el único símbolo que se puede repetir un número infinito de veces.


  • F \subseteq Q es el conjunto de estados finales de aceptación.


  • \delta: Q \times \Gamma \rightarrow Q \times \Gamma \times \{L,R\}\,es una función parcial denominada función de transición, donde es un movimiento a la izquierda y es el movimiento a la derecha.


Aquí les dejo un vídeo acerca de la historia de las maquinas turing y Alan turing

Espero que les sirve:)

LISTAS

Es una de las estructuras de datos fundamentales y puede ser usada para implementar otras estructuras. Es una secuencia de nodos, en los que se guardan campos de datos arbitrarios y una o 2 referencias (punteros) al nodo posterior o anterior.

El principal beneficio de las listas es que el orden de los elementos puede ser diferente al orden de almacenamiento en la memoria, permitiendo que el orden de recorrido de la lista sea diferente al de almacenamiento.

TIPOS DE LISTAS

  • Listas simples enlazadas
Es la lista que contiene un enlace por nodo. El enlace apunta al siguiente nodo, hasta el vació (NULL).
  • Lista doblemente enlazada
Cuando un nodo tiene 2 enlaces, uno apunta al anterior o NULL si es el primero y el otro al siguiente o NULL si es el ultimo.
  • Listas enlazadas circulares simples
Es parecido al de la lista simple, solo que el siguiente nodo del ultimo apunta al primero.
  • Lista doblemente circular
Es parecida a la lista doblemente, excepto que el enlace anterior apunta del primer nodo al ultimo y el enlace siguiente del ultimo nodo apunto al primero.
Centinela: Falso nodo, su objetivo es agilizar algunas operaciones que cualquier nodo tiene otro anterior o posterior y que la fila siempre tenga un primer y ultimo nodo.

LISTAS V.S ARREGLOS
  • los elementos de una lista se pueden insertar indefinidamente, mientras que el arreglo se llenara.
  • las listas en algunos casos puede lograr ahorros de memoria almacenada, osea la lista acaba con la misma secuencia de enteros.
  • los arreglos permiten acceso aleatorio, mientras que la lista solo permite acceso secuencial de elementos.

Espero que le sirva:)

ARREGLOS

En programacion, una matriz o arreglo es una zona de almacenamiento contiguo, que contiene una serie de elementos del mismo tipo.

Una matriz es un conjunto de elementos ordenados en filas (unidimensional) o filas y columnas (multidimensional).

Estas estructuras de datos son adecuadas para programas en las que el acceso a los datos se realice de forma aleatoria en cambio si es de modo ordenado se recomiendo utilizar una lista.

Todo arreglo se compone de un numero "x" de elementos. Cada elemento es referido por la posición que ocupa dentro del arreglo.

Hay 3 formas de agregar elementos en un arreglo:
  1. Indexacion base-(0): el elemento que ocupa este lugar tendrá indice 0, si el arreglo contiene "x" elementos el ultimo elementos sera (x-1).
  2. Indexacion base-(1): el primer elemento del arreglo sera indice 1 y el ultimo sera x.
  3. Indexacion base-n: el indice del primer elemento puede ser elegido libremente.

Arreglo dinámico: el arreglo puede tener una "x" cantidad de variables de datos.

Arreglo estático: el arreglo con una cantidad fija de memoria.

Existen 2 tipos de arreglos:
  1. Multidimensionales
  2. Unidimensionales

MULTIDIMENSIONALES
En pocas palabras se podría decir que es un arreglo de arreglos
UNIDIMENSIONAL
Como su nombre lo dice de un solo arreglo


Espero que les sirva:).

ABSTRACCION DE DATOS

Consiste en ocultar las características de un objeto de modo que nuestro programa, nomas utilizaremos el nombre del objeto.

Por ejemplo si estamos hablando acerca de las "estufas", pues no tengo que mencionar que es una estufa, como funciona, para que sirve, etc, etc, solamente menciono "estufa" y automaticamente sabrás acerca de lo que hablo, esto se le llama abstracción. Y hablando acerca de la abstracción en programacion pues se refiere que tu en tu programa solo vas a declarar por separado en el programa y cuando lo necesites de nuevo no tienes que poner todo lo que incluye si no simplemente el termino abstracto.

Encapsulamiento: como su nombre lo dice encapsula o guarda las características de un objeto.

Hay 2 tipo de abstracción:
1)Abstracción Funcional.
2)Abstracción de datos. (LO QUE VEREMOS).

  • Abstracción funcional
Esta abstracción crea procedimientos y funciones que se llaman mediante un nombre en donde se destaca que hace la función e ignorando como lo hace.
  • Abstracción de datos
Hay varios tipos de abstracción de datos:
   -Tipos de datos: lenguajes de alto nivel, su presentación es invisible, solo se ve las operaciones predefinidas.

  -Tipos definidos: posibilita la definición de valores de datos mas cercanos al problema.

  -TDA: definición y representacion de tipo de datos. (valores mas operaciones).


Hay 3 niveles es los que se determina la abstracción:
  • Nivel físico: Determina como están almacenados físicamente y representa el nivel mas bajo.
  • Nivel lógico: Determina la organizacion de los archivos.
  • Nivel de Vistas: oculta información a lo usuarios solo le es visible parte de la base de datos.

MODELOS DE DATOS
Son una serie de herramientas en modo de esquema que describen los datos y las relaciones entre ellos. Son 3 tipos:
  • Modelo de RED:
Se representa medio enlaces (colecciones y relaciones).
  • Modelo Jerárquico
Los registros se organizan como colecciones de arboles.
  • Modelo Racional
Es una base de datos en donde los datos visibles al usuario están organizados en una tabla de valores.
Espero que le sirva:).

miércoles, 10 de noviembre de 2010

PROBLEMA LOGICO

En una cafeteria acaban de contratar a un supervisor, y al llegar el en su primer dia no se acordaba de las 3 comidas (Milanesa, Flauta, Tacos) que el esta a cargo, ni quien las cocinara (Sergio, Ruben, Carlos) ni que dias (Martes, Jueves, Viernes) les toca.
El solo recuerda que:
1) Las flautas son cocinadas por Ruben, y es despues a la Milanesa.
2)Sergio no trabaja los Martes dia en el que no se come Milanesa.


Encuentra que dia le toca cocinar a cada quien.


Tenemos que son 3 cocineros, 3 dias y 3 comidas. Para ayudar a resolver este problema podemos utilizar una tabla en la que se ponen los 3 cocineros y los dias verticalemente y horizontalmente las comidas y los dias para facilitarnos.


En tabla utilize los valores V= si y F=no.


Aqui lo que representa es que las flautas son cocinadas por Ruben y que sergio no va los martes, que los martes no se cocina Milanes.
Luego sabemos que la Milanesa se cocina primero que las flautas, entonces arriba dijimos que la milanesa no se cocina los martes, y los unicos dias que quedan son jueves y viernes, pero la milanesa va primero asi que la milanesa es cocinada el jueves y las flautas el viernes.

Sabemos que las flautas son cocinadas por Ruben los viernes, y que Sergio no va los martes a trabajar, asi que el dia que queda son los jueves, entonces sergio va a cocinar Milanesa los jueves.
Podemos concluir que la comida que sobra son lo tacos, el cocinero que sobra es Carlos y el dia que sobra son los martes.


Y ya sabemos que cocinero cocinara y en que dia le toca:


Carlos cocinara Tacos los Martes.
Sergio cocinara Milanesa los Jueves.
Ruben cocinara Flautas los Viernes.

MODELADO UML

Lenguaje Unificado de Modelado o Unified Modeling Lenguage, es el lenguaje de modelado de sistemas de software mas conocido en la actualidad. Es un lenguaje gráfico para visualizar, especificar, construir, y documentar un sistema.

UML no puede compararse con la programacion estructurada, ya que UML no es programacion, solo se diagrama la realidad de una utilizacion en un requerimiento.

UML cuenta con varios tipos de diagramas, en el UML 2.0 hay 13 tipos de diagramas, en esta imagen los organiza jerarquicamente.
-DIAGRAMAS DE ESTRUCTURA
Enfatizan en los elementos que deben existir.
  • Diagrama de clases
Diagrama estático, describe la estructura de un sistemas mostrando sus clases, atributos y relaciones entre ellos.
  • Diagrama de componentes
Representa como un sistema de software es dividido en componentes y muestra las dependencias entre ellos.
  • Diagramas de objetos
Son utilizados durante el proceso de Análisis y Diseño de los sistemas informativos en la metodología de UML.

También se encuentran los Diagramas: de estructura, compuesta, despliegue y de paquetes.

-DIAGRAMAS DE COMPORTAMIENTO
Enfatizan en lo que debe suceder en el sistema modelado.
  • Diagrama de Actividades
Representa los flujos de trabajo paso a paso y operaciones de los componentes de un sistema.
  • Diagrama de estados
Utilizado para identificar cada una de las rutas o caminos que puede tomar el flujo de información de ejecutarse cada proceso.
  • Diagrama casos de uso
-DIAGRAMAS DE INTERACCIÓN
Son subtipos de diagramas de comportamiento que enfatiza el flujo de control y de datos entre los sistemas.
  • Diagrama de secuencia
Muestra la interacción de un conjunto de objetos en una aplicacion a través del tiempo.
  • Diagrama de comunicacion
Modela las interacciones entre objetos o partes en términos de mensajes de secuencia

También se encuentran los diagramas: tiempos, global de interacciones.

Espero que les sirva:)

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:).