jueves, 30 de junio de 2011

SEGUNDA PARTE "ANDROID"

Esta entrada es solo para informales a los que les interese el sistema Android encontre el simulador para la compuradora, yo no lo eh instalado ya que mi tarjeta de video no esta funcionando bien y la lap no me acepta varias aplicaciones pero espero que ustedes les sirva.

Este primer link es de como instalar y utilizar el emulador Android:
http://onsoftware.softonic.com/prueba-android-google 

y este link es para descargarlo (aparte de Windows tambien trae versiones de Mac y Linux):
http://developer.android.com/sdk/index.html

MATERIAL EXTRA "LaTeX"



Es un sistema de composición de textos, orientado especialmente a la creación de libros, documentos científicos y técnicos que contengan fórmulas matemáticas.
LaTeX está formado por un gran conjunto de macros de TeX, escrito por Leslie Lamport en 1984, con la intención de facilitar el uso del lenguaje de composición tipográfica, TEX, creado por Donald Knuth. Es muy utilizado para la composición de artículos académicos, tesis y libros técnicos, dado que la calidad tipográfica de los documentos realizados con LaTeX es comparable a la de una editorial científica de primera línea.
LaTeX es software libre bajo licencia LPPL.

DESCRIPCION
LaTeX es un sistema de composición de textos que está formado mayoritariamente por órdenes (macros) construidas a partir de comandos de TeX —un lenguaje «de bajo nivel», en el sentido de que sus acciones últimas son muy elementales— pero con la ventaja añadida, en palabras de Lamport, de «poder aumentar las capacidades de LaTeX utilizando comandos propios del TeX descritos en The TeXbook». Esto es lo que convierte a LaTeX en una herramienta práctica y útil pues, a su facilidad de uso, se une toda la potencia de TeX. Estas características hicieron que LaTeX se extendiese rápidamente entre un amplio sector científico y técnico, hasta el punto de convertirse en uso obligado en comunicaciones y congresos, y requerido por determinadas revistas a la hora de entregar artículos académicos.
Su código abierto permitió que muchos usuarios realizacen nuevas utilidades que extendiesen sus capacidades con objetivos muy variados, a veces ajenos a la intención con la que fue creado: aparecieron diferentes dialectos de LaTeX que, a veces, eran incompatibles entre sí. Para atajar este problema, en 1989 Lamport y otros desarrolladores iniciaron el llamado «Proyecto LaTeX3». En el otoño boreal de 1993 se anunció una reestandarización completa de LaTeX, mediante una nueva versión que incluía la mayor parte de estas extensiones adicionales (como la opción para escribir transparencias o la simbología de la American Mathematical Society) con el objetivo de dar uniformidad al conjunto y evitar la fragmentación entre versiones incompatibles de LaTeX 2.09.
USO
Con LaTeX, la elaboración del documento requiere normalmente de dos etapas: en la primera hay que crear mediante cualquier editor de texto llano un fichero fuente que, con las órdenes y comandos adecuados, contenga el texto que queramos imprimir. La segunda consiste en procesar este fichero; el procesador de textos interpreta las órdenes escritas en él y compila el documento, dejándolo preparado para que pueda ser enviado a la salida correspondiente, ya sea la pantalla o la impresora. Ahora bien, si se quiere añadir o cambiar algo en el documento, se deberá hacer los cambios en el fichero fuente y procesarlo de nuevo. Esta idea, que puede parecer poco práctica a priori, es conocida a los que están familiarizados con el proceso de compilación que se realiza con los lenguajes de programación de alto nivel (C, C++, etc.), ya que es completamente análogo.Una de las ventajas de LaTeX es que la salida que ofrece es siempre la misma, con independencia del dispositivo (impresora, pantalla, etc.) o el sistema operativo (MS Windows, MacOS, Unix, GNU/Linux, etc.) y puede ser exportado a partir de una misma fuente a numerosos formatos tales como Postscript, PDF, SGML, HTML, RTF, etc.


-Biblioghrafia
http://es.wikipedia.org/wiki/LaTeX

INSTANCIA

Una instancia de un programa es una copia de una versión ejecutable del programa que ha sido escrito en la memoria del computador.
Una instancia de un programa es creada típicamente por el click de usuario en un icono de una interfaz Gráfica para usuarios GUI o por la entrada de un comando en una interfaz de línea de comandos CLI y presionando la tecla ENTER. Instancias de programas pueden ser creadas por otros programas.
Un programa es una secuencia de instrucciones que indica cuales operaciones se deben realizar sobre un conjunto de datos. Una versión ejecutable de un programa, también llamado un programa ejecutable, es una versión de un programa que es entendible para el CPU del computador y está listo para funcionar tan pronto como se copia en memoria. Esto contrasta con la versión de código fuente de un programa, el cual es la versión originalmente escrita por lenguaje de alto nivel, y luego es traducido a lenguaje de máquinas por otro programa especializado llamado compilador.
Un ejemplo de instancia en un lenguaje de programación visual, sería tomar o arrastrar un objeto de la barra de herramientas o de la lista de librerías y colocarlo en el escritorio o escenario de trabajo (estamos creando una instancia de ese objeto, una copia). Si arrastramos 10 botones al entorno visual de trabajo, estamos creando una instancia del botón original, si a cada botón le cambiamos el nombre, tendremos 10 botones que heredan las mismas propiedades y métodos del objeto original. Tenemos como resultado que con un solo botón hicimos 10 y nuestro archivo pesara como si tuviese uno solo.
  • En programación, una instancia se produce con la creación de un objeto perteneciente a una clase (se dice que se instancia la clase). El objeto que se crea tiene los atributos, propiedades y métodos de la clase a la que pertenece. Los objetos y sus características se usan en la construcción de programas, ya sea como contenedores de datos o como partes funcionales del programa.
- Bibliografia
http://es.wikipedia.org/wiki/Instancia_%28inform%C3%A1tica%29

    ANALISIS ASINTOTICO DE ALGORITMOS

    En matemáticas puras y aplicadas, en particular el análisis de algoritmos, el análisis asintótico es un método de descripción de la limitación de comportamiento. Limitar el comportamiento se expresa en el lenguaje de las relaciones de equivalencia. Además, el análisis asintótico se refiere a la solución de problemas aproximadamente hasta tales equivalencias. Por ejemplo, dado funciones de valor complejos f y g de una variable de número natural n, una forma escrita seria.


    y otra mas comun seria
    lim f(n)/g(n) = 1
    n->∞

    y f y g son llamados equivalente asintóticamente cuando n → ∞. Esto define una relación de equivalencia (en el conjunto de funciones distinto de cero para todos los n suficientemente grandes - la mayoría de los matemáticos prefieren la definición
    en cuanto a la notación de Landau, que evita esta limitación). La clase de equivalencia de f consta de todas las funciones g que "se comportan como" f, en el límite.

    Análisis Matemático de Algoritmos
    Consiste en tratar de asociar con cada algoritmo una función matemática exacta que mida su “eficiencia” dependiendo sólo de los siguientes factores:
    • Las características estructurales del algoritmo.
    • El tamaño del conjunto de datos de entrada: El número de datos con los cuales trabaja el algoritmo. Esta medida se interpreta según el tipo de algoritmo sobre el cual se esté trabajando.
    Se define la función TA(n) como la cantidad de trabajo realizado por el algoritmo
    A para procesar una entrada de tamaño n y producir una solución al problema.

    El análisis matemático de algoritmos es independiente de la implementación, sin
    embargo tiene varios inconvenientes:
    • La imposibilidad de determinar, para muchos problemas y cada una de las posibles entradas, la cantidad de trabajo realizado
    • La dificultad para determinar TA(n) exactamente.

    Análisis Asintótico de Algoritmos
    Técnica derivada del análisis matemático de algoritmos basada en dos conceptos
    fundamentales: la caracterización de datos de entrada y la complejidad asintótica.
    • Peor caso: Los casos de datos de entrada que maximizan la cantidad de trabajorealizado por un algoritmo.
    • Mejor caso: Los casos de datos de entrada que minimizan la cantidad detrabajo realizado por un algoritmo.
    • Caso promedio: El valor medio de la cantidad de trabajo realizado por un algoritmo. Se debe tener en cuenta la distribución probabilística de los datos de entrada que se manejan.

    • Énfasis en el peor caso, ya que representa una cota superior para la cantidadde trabajo realizado por un algoritmo
    • La idea fundamental consiste en tratar de encontrar una función W(n), fácil de calcular y conocida, que acote asintóticamente el orden de crecimiento de la función TA(n)
    • Se estudia la eficiencia asintótica de algoritmos: Cómo se incrementa la cantidad de trabajo realizado por un algoritmo a medida que se incrementa (con valores suficientemente grandes”) el tamaño de la entrada
    • Para realizar este procedimiento se necesitan herramientas especiales: las notaciones asintóticas
    - Bibliografia

    Lo ultimo lo saque de un pdf y no se como ligarlo aqui para que lo chequen.  

    miércoles, 29 de junio de 2011

    MATERIAL EXTRA "ANDROID"

    Android es un sistema operativo basado en Linux diseñado originalmente para dispositivos móviles, tales como teléfonos inteligentes, tablets, pero que actualmente se encuentra en desarrollo para usarse en netbooks y PCs. Fue desarrollado inicialmente por Android Inc., una firma comprada por Google en 2005. Es el principal producto de la Open Handset Alliance, un conglomerado de fabricantes y desarrolladores de hardware, software y operadores de servicio.
    Android Market es la tienda de aplicaciones en línea administrada por Google, aunque existe la posibilidad de obtener software externamente. Los programas están escritos en el lenguaje de programación Java.
    El anuncio del sistema Android se realizó el 5 de noviembre de 2007 junto con la creación de la Open Handset Alliance, un consorcio de 78 compañías de hardware, software y telecomunicaciones dedicadas al desarrollo de estándares abiertos para dispositivos móviles.
    Google liberó la mayoría del código de Android bajo la licencia Apache, una licencia libre y de código abierto.
    La estructura del sistema operativo Android se compone de aplicaciones que se ejecutan en un framework Java de aplicaciones orientadas a objetos sobre el núcleo de las bibliotecas de Java en una máquina virtual Dalvik con compilación en tiempo de ejecución. Las bibliotecas escritas en lenguaje C incluyen un administrador de interfaz gráfica (surface manager), un framework OpenCore, una base de datos relacional SQLite, una API gráfica OpenGL ES 2.0 3D, un motor de renderizado WebKit, un motor gráfico SGL, SSL y una biblioteca estándar de C Bionic. El sistema operativo está compuesto por 12 millones de líneas de código, incluyendo 3 millones de líneas de XML, 2,8 millones de líneas de lenguaje C, 2,1 millones de líneas de Java y 1,75 millones de líneas de C++.

    ARQUITECTURA
    Los componentes principales del sistema operativo de Android (cada sección se describe en detalle):
    • Aplicaciones: las aplicaciones base incluyen un cliente de correo electrónico, programa de SMS, calendario, mapas, navegador, contactos y otros. Todas las aplicaciones están escritas en lenguaje de programación Java.
    • Marco de trabajo de aplicaciones: los desarrolladores tienen acceso completo a los mismos APIs del framework usados por las aplicaciones base. La arquitectura está diseñada para simplificar la reutilización de componentes; cualquier aplicación puede publicar sus capacidades y cualquier otra aplicación puede luego hacer uso de esas capacidades (sujeto a reglas de seguridad del framework). Este mismo mecanismo permite que los componentes sean reemplazados por el usuario.
    • Bibliotecas: Android incluye un conjunto de bibliotecas de C/C++ usadas por varios componentes del sistema. Estas características se exponen a los desarrolladores a través del marco de trabajo de aplicaciones de Android; algunas son: System C library (implementación biblioteca C estándar), bibliotecas de medios, bibliotecas de gráficos, 3D y SQLite, entre otras.
    • Runtime de Android: Android incluye un set de bibliotecas base que proporcionan la mayor parte de las funciones disponibles en las bibliotecas base del lenguaje Java. Cada aplicación Android corre su propio proceso, con su propia instancia de la máquina virtual Dalvik. Dalvik ha sido escrito de forma que un dispositivo puede correr múltiples máquinas virtuales de forma eficiente. Dalvik ejecuta archivos en el formato Dalvik Executable (.dex), el cual está optimizado para memoria mínima. La Máquina Virtual está basada en registros y corre clases compiladas por el compilador de Java que han sido transformadas al formato .dex por la herramienta incluida "dx".
    • Núcleo Linux: Android depende de Linux para los servicios base del sistema como seguridad, gestión de memoria, gestión de procesos, pila de red y modelo de controladores. El núcleo también actúa como una capa de abstracción entre el hardware y el resto de la pila de software.

    DESARROLLO
    Android, al contrario que otros sistemas operativos para dispositivos móviles como iOS o Windows Phone, se desarrolla de forma abierta y se puede acceder tanto al código fuente como al listado de incidencias donde se pueden ver problemas aún no resueltos y reportar problemas nuevos.
    El que se tenga acceso al código fuente no significa que se pueda tener siempre la última versión de Android en un determinado móvil, ya que el código para soportar el hardware (controladores) de cada fabricante normalmente no es público, así que faltaría un trozo básico del firmware para poder hacerlo funcionar en dicho terminal, y porque las nuevas versiones de Android suelen requerir más recursos, por lo que los modelos más antiguos quedan descartados por razones de memoria (RAM), velocidad de procesador, etc.


    Esto fue un poco de informacion sobre este sistema operativo para dispositivos moviles, para saber mas al respecto visita las siguientes paginas:
    http://es.wikipedia.org/wiki/Android
    http://www.android.com/


     

     

    SISTEMA BINARIO DE NUMEROS Y ABECEDARIO EN BINARIO

    Numeros en binario
    Un número binario sólo tiene ceros y unos. De la misma manera que en el sistema decimal, se pueden poner números a la izquierda o a la derecha del punto decimal, para indicar valores mayores o menores que uno. En el sistema binario:
    • El número justo a la izquierda del punto es un número entero, lo llamamos unidades.
    • Cuando vamos a la izquierda, cada posición vale 2 veces más.
    • La primera cifra a la derecha del punto significa mitades (1/2)
    • Cuando vamos a la derecha, cada posición vale 2 veces menos (la mitad de la anterior).

    Dos valores diferentes

    Como sólo puedes tener ceros y unos, en binario se cuenta así:
    Decimal: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
    Binario: 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111

    "El binario es tan fácil como 1, 10, 11."

    Aquí tienes más equivalencias:
    Decimal: 20 25 30 40 50 100 200 500
    Binario: 10100 11001 11110 101000 110010 1100100 11001000 111110100


    Cuando leas un número binario, pronuncia cada dígito (por ejemplo, el número binario "101" se lee "uno cero uno"). De esta manera la gente no los confunde con números decimales.

    Bits

    Un dígito binario por sí solo (como "0" o "1") se llama un "bit". Por ejemplo 11010 tiene cinco bits de longitud.
    La palabra bit viene de las palabras inglesas "binary digit"

    Cómo indicar que un número está en binario

    Para mostrar que un número es binario, ponemos un pequeño 2 detrás: 1012
    De esta manera nadie pensará que es el número decimal "101" (ciento uno).

    Aqui unos ejemplos de sumas y restas:

                                 SUMA
     normal                                         binario                                       
    8 + 7 = 15                                     1000 + 111 = 1111
    25 + 15 = 40                                 11001 + 1111 = 101000
    20 +  30 = 50                                10100 + 11110 = 110010
                                 RESTA
    normal                                          binario
    9 - 6 = 3                                         1001 - 110 = 11
    13 - 2 = 11                                     1101 - 10 = 1011
    20 - 12 = 8                                     10100 -  1100 = 1000

    Abecedario en binario
    Ahora mostrare el abecedario (mayusculas y minusculas) en binario:
    Letra Código Binario
    A 01000001
    B 01000010
    C 01000011
    D 01000100
    E 01000101
    F 01000110
    G 01000111
    H 01001000
    I 01001001
    J 01001010
    K 01001011
    L 01001100
    M 01001101
    N 01001110
    O 01001111
    P 01010000
    Q 01010001
    R 01010010
    S 01010011
    T 01010100
    U 01010101
    V 01010110
    W 01010111
    X 01011000
    Y 01011001
    Z 01011010

    Letra Código Binario
    a 01100001
    b 01100010
    c 01100011
    d 01100100
    e 01100101
    f 01100110
    g 01100111
    h 01101000
    i 01101001
    j 01101010
    k 01101011
    l 01101100
    m 01101101
    n 01101110
    o 01101111
    p 01110000
    q 01110001
    r 01110010
    s 01110011
    t 01110100
    u 01110101
    v 01110110
    w 01110111
    x 01111000
    y 01111001
    z 01111010  

    Ahora escribire mi nombre y el nombre de la dra. Elisa:
          D             a            n           i             e             l
    01000100  01100001  01101110  01101001   01100101   01101100
          I              v            a            n
    01001001  01110110   01100001  01101110
          H         e          r         n         a         n        d           e        z
    01001000-01100101-01110010-01101110-01100001-01101110-01100100-01100101-01111010 
           A            l              v            a              r           e          z
    01000001   01101100   01110110  01100001  01110010  01100101   01111010


    ahora el de la dra:
          S           a            t             u
    01010011  01100001  01110100  01110101
          E            l            i             s           a
    01000101   01101100  01101001  01110011  01100001
          S        c         h           a         e        f          f          e           r
    01010011-01100011-01101000-01100001-01100101-01100110-01100110-01100101-01110010

    Nota: si se habran dado cuenta las letras en mayusculas no se escriben igual que las minusculas para que tengan cuidado si un dia escriben algo en binario.

    - Bibliografia
    http://www.disfrutalasmatematicas.com/numeros/binarios-numeros-sistema.html
    http://rrojass.blogspot.com/2008/08/abecedario-en-binario.html

    LENGUAJE RECURSIVOS

    Ejemplo de intérprete de lenguaje recursivo 

    En este apartado se describe la implementación de un intérprete de un sencillo lenguajerecursivo. Se describen tres posibles diseños indicando las ventajas e inconvenientes de cada uno.

    •   Definición del lenguaje

    Un lenguaje recursivo en matemáticas, lógica e informática, es un tipo de lenguaje formal que también es llamado recursivo, decidible o Turing-decidible. Se caracterizan porque para cada uno de ellos existe una máquina de Turing que aceptará cualquier palabra del lenguaje y parará siempre.
    El lenguaje consta de dos categorías sintácticas fundamentales: expresiones y órdenes, quetienen la siguiente estructura:

    <comm> : : = while <expr> do <comm>
                    | if <expr> then <comm> else <comm>
                    | <var> : = <expr>
                    | <comm> ; <comm> 
    <expr> : : = <expr> <binOp> <expr> 
                                                                              |  <var>
                                                                              | <integer> 
    <binOp> : : = + | - | * | / | = | <
    •       Diseño imperativo simple
    La implementación imperativa simple consistiría en utilizar una instrucción de selección que,dependiendo del tipo de instrucción, ejecute una porción de código determinada. El código tendría lasiguiente apariencia:

    void exec(Context &c) { 
    switch (c.code) { 
    case WHILE : . . .
     case IF: . . . 
    . . . 
    }
    }

    Como en el lenguaje intermedio, la representación interna de las instrucciones se puederealizar mediante una unión.El diseño imperativo tiene como principal ventaja la eficiencia y sencillez de aplicación.Sin embargo, su utilización puede perjudicar la eficiencia de la representación interna de lasinstrucciones, desperdiciando memoria para instrucciones pequeñas. Otras desventajas son ladificultad para añadir instrucciones sin modificar el código anterior y la falta de seguridad (esposible acceder a campos de la unión equivocados sin que el compilador lo detecte.

    • Diseño Orientado a Objetos simple

    La representación de las instrucciones puede realizarse mediante una clase abstracta

    Comm

    quecontiene un método

    exec

    que indica cómo ejecutar dicha instrucción en un contexto determinado.

    abstract class Comm {void exec(Context ctx);}

    Cada una de las instrucciones será una subclase de la clase abstracta que definirá el método

    exec

    e incluirá los elementos necesarios de dicha instrucción.

    class While extends Comm { 
    Expr e; 
    Comm c;
    void exec(Context ctx) { 
    for (;;) {Bvalue v = (Bvalue) e.eval(ctx); 
    if (!v.b) break;
    c.exec(ctx); 
    }
    }
    }
    class If extends Comm { 
    Expr e;Comm c1, c2; 
    void exec(Context ctx) { 
    Bvalue v = (Bvalue) e.eval (ctx) ;
    - Bibliografia 

    MODELOS FORMALES DE COMPUTACION: AUTOMATAS Y MAQUINAS

    Automatismos

    • Introducción. Definición de automatismo.
    La automatización de una máquina o proceso productivo simple tiene como consecuencia la liberación física y mental del hombre de dicha labor. Entendemos por «automatismo» el dispositivo físico (ya sea eléctrico, neumático electrónico, etc.) que realiza esta función controlando su funcionamiento.

    • Principio de un sistema automático.
    Todo sistema automático por simple que sea se basa en el esquema representado en la siguiente figura:
    Señales de detección
    Automatismo Captadores o parte de Máquina o proceso
    Trabajo control operativo
    Actuadores

    Este circuito cerrado es lo que se conoce como bucle o lazo.

    Autómatas programables

    • Introducción. Definición de autómata programable.
    Entendemos por Autómata Programable, o PLC (Controlador Lógico Programable), toda máquina electrónica, diseñada para controlar en tiempo real y en medio industrial procesos secuenciales. Su manejo y programación puede ser realizada por personal eléctrico o electrónico sin conocimientos informáticos. Realiza funciones lógicas: series, paralelos, temporizaciones, contajes y otras más potentes como cálculos, regulaciones, etc.
    Otra definición de autómata programable sería una «caja» en la que existen, por una parte, unos terminales de entrada (o captadores) a los que se conectan pulsadores, finales de carrera, fotocélulas, detectores...; y por otra, unos terminales de salida (o actuadores) a los que se conectarán bobinas de contactores, electroválvulas, lámparas..., de forma que la actuación de estos últimos está en función de las señales de entrada que estén activadas en cada momento, según el programa almacenado.
    La función básica de los autómatas programables es la de reducir el trabajo del usuario a realizar el programa, es decir, la relación entre las señales de entrada que se tienen que cumplir para activar cada salida, puesto que los elementos tradicionales (como relés auxiliares, de enclavamiento, temporizadores, contadores...) son internos.

    Estructura de un autómata programable. 
    La estructura básica de un autómata programable es la siguiente:


    •  AUTOMATA FINITO DETERMINISTA***
    Un Autómata Finito Determinista consiste en un dispositivo que puede estar en cualquier estado entre un número finito, uno de los cuales es el estado inicial y por lo menos uno es un estado de aceptación.
    A este dispositivo está unido un flujo de entrada por medio del cual llegan en secuencia los símbolos de un alfabeto determinado.
    La máquina tiene capacidad para detectar los símbolos conforme llegan y, basándose en el estado actual y el símbolo recibido, ejecutar una transición consistente en cambiar a otro estado o la permanencia en el mismo.
    El programa de un Autómata Finito Determinista no debe contener ambigüedades (para un estado un determinado símbolo sólo puede producir una determinada acción).
    Se dice que un Autómata Finito Determinista acepta su cadena de entrada si, después de comenzar sus cálculos en el estado inicial la máquina cambia a un estado de aceptación después de leer el último símbolo de la cadena.
    Si después de leer el último símbolo no queda en estado de aceptación, se dice que la cadena ha sido rechazada. Si la entrada es una cadena vacía (l) será aceptada si y sólo si el estado inicial es también un estado de aceptación.
    Un Autómata Finito Determinista consiste en una quíntupla ( S, S, d, i, F) donde:
    • S, es un conjunto finito de estados. • S, es el alfabeto de la máquina. • d, es una función (función de transición) de S× S a S. • i, (un elemento de S) es el estado inicial. • F (un subconjunto de S) es el conjunto de estados de aceptación.
    La interpretación de la función de transición d de un autómata finito determinista es que d(p,x)=q sí y sólo sí la máquina puede pasar de un estado p a un estado q al leer el símbolo x.
    El diagrama de transición determinista sólo debe tener un arco que sale de un estado para cada símbolo del alfabeto. Además, dicho diagrama está completamente definido, es decir, debe existir un arco para cada símbolo del alfabeto.
    • AUTOMATA FINITO NO DETERMINISTA***
    Esta maquina se parece mucho a un AFD, pues también analiza cadenas construidas a partir de un S y solo puede tener un numero finito de estados, algunos de los cuales son de aceptación y uno es el estado inicial.
    A diferencia de los AFD, la transición que se ejecuta en una etapa dada de un AFN puede ser incierta, es posible aplicar cero, una o mas de una transición mediante el mismo símbolo de entrada, como sucede con una maquina que no esta completamente definida.
    Un AFN acepta una cadena si es posible que su análisis deje a la maquina en un estado de aceptación.
    De manera formal, un AFN se define como sigue, un AFN consiste en una quíntupla (S,∑ , p, i, F) donde:
    • S es un conjunto finito de estados. • ∑ es el alfabeto de la maquina • p es un sub-conjunto de SXS XS llamada relación de transiciones. • i es le estado inicial (un elemento de S) • F es la colección de estados de aceptación (un sub-conjunto de S). 

    Maquinas turing
    • Es una coleccion de celdas que se extiende infinitamente en ambas direcciones, es una cinta infinita.
    • Cada celda es capaz de almacenar un unico simbolo.
    • No existe una celda primera, ni una ultima y por lo tanto tiene capacidad de almacenamiento infinito.
    • Los contenidos de las celdas pueden ser accedidos en cualquier orden.
    • Existe una cabeza de lectura/escrita que puede moverse sobre la cinta y cada movimiento leera o escriba un simbolo.
    Un movimento de la maquina turing
    Un moviento de la TM se considerara el simbolo actual sobre la cabeza de lectura/escritura y el esta actual de la misma y la dinamica sera la siguiente:
    1. Cambia de estado
    2. Escribe un simbolo sobre la cinta, reemplazando el que existia previamente
    3. Mueve la cabeza de lectura/escritura una celda a la izquierda o la derecha.

    - Bibliografia
    http://html.rincondelvago.com/automatas-programables_2.html
    http://www.mitecnologico.com/Main/AutomatasFinitosDeterministicosYNoDeterministicos
    http://www.slideshare.net/iscrquinter/parte-4-mquinas-de-turing

    martes, 28 de junio de 2011

    MATERIAL EXTRA "UBUNTU"

    Bueno como todos sabemos Windows es el sistema operativo que la mayoria de la gente usa, asi que ya sabemos como funciona, por eso ahora nos enfocaremos en el sistema operativo Ubuntu.

    Es un sistema operativo que utiliza un núcleo Linux, y su origen está basado en Debian. Ubuntu está orientado en el usuario promedio, con un fuerte enfoque en la facilidad de uso y mejorar la experiencia de usuario. Al igual que otros sistemas operativos GNU/Linux, está compuesto de múltiple software normalmente distribuido bajo una licencia libre o de código abierto. Estadísticas web sugieren que el porcentaje de mercado de Ubuntu dentro de los sistemas operativos GNU/Linux es de aproximadamente 49%, y con una tendencia a subir como servidor web.
    Está patrocinado por Canonical Ltd., una compañía británica propiedad del empresario sudafricano Mark Shuttleworth que en vez de vender Ubuntu con fines lucrativos, se financia por medio de servicios vinculados al sistema operativo y vendiendo soporte técnico. Además, al mantenerlo libre y gratuito, la empresa es capaz de aprovechar los desarrolladores de la comunidad en mejorar los componentes de su sistema operativo. Canonical también apoya y proporciona soporte para cuatro derivaciones de Ubuntu: Kubuntu, Xubuntu, Edubuntu y la versión de Ubuntu orientada a servidores (Ubuntu Server).
    Su eslogan es Linux for human beings (‘Linux para seres humanos’) y su nombre proviene de la ideología sudafricana Ubuntu («humanidad hacia otros»).
    Cada seis meses se publica una nueva versión de Ubuntu la cual recibe soporte por parte de Canonical, durante dieciocho meses, por medio de actualizaciones de seguridad, parches para bugs críticos y actualizaciones menores de programas. Las versiones LTS (Long Term Support), que se liberan cada dos años, reciben soporte durante tres años en los sistemas de escritorio y cinco para la edición orientada a servidores.

    Caracteristicas
    Ubuntu desde su primer lanzamiento utilizó la interfaz de usuario predeterminada del escritorio GNOME, con un panel inferior para listar ventanas y un panel superior para menús y indicadores de sistema, pero desde la versión 11.04 Natty Narwhal la interfaz de usuario predeterminada sería Unity, y eso sumado a las actuales herramientas de GNOME. Durante el proceso de desarrollo de GNOME 3, la nueva interfaz de usuario, GNOME Shell, no compartía las ideas de diseño, interacción, y experiencia de usuario de los desarrolladores de Ubuntu. Dado el caso, el equipo de desarrollo de Ubuntu pensó en desarrollar su propia interfaz de usuario; Unity fue diseñado como shell para el escritorio de GNOME para incrementar la eficiencia de espacio y interacción con el escritorio.
    La actual interfaz de usuario de Ubuntu está compuesta por tres importantes elementos: un panel superior para indicadores de sistema y menús, un lanzador de aplicaciones al costado izquierdo, y un tablero que despliega lugares y aplicaciones. Ubuntu además de la interfaz Unity, utiliza las herramientas de GNOME que forman el resto del escritorio, el gestor de ventanas Compiz para las transiciones de efectos visuales, y varios elementos visuales diseñados por Canonical, tales como barras de desplazamiento minimalistas Overlay Scrollbars, indicadores de sistema, iconos Ubuntu Mono e Humanity, y temas light-themes.


     
     El software incluido
    • Aplicaciones de Ubuntu: Ubuntu es conocido por su facilidad de uso y las aplicaciones orientadas al usuario final. Las principales aplicaciones que trae Ubuntu son: navegador web Mozilla Firefox, cliente de mensajería instantánea Empathy, cliente de redes sociales Gwibber, cliente para enviar y recibir correo Evolution, reproductor multimedia Totem, reproductor de música Banshee, editor de vídeos PiTiVi, gestor y editor de fotos Shotwell, cliente y gestor de torrents Transmission, grabador de discos Brasero, suite ofimática LibreOffice, y el instalador central para buscar e instalar aplicaciones Centro de software de Ubuntu.
    • Seguridad y accesibilidad: El sistema incluye funciones avanzadas de seguridad y entre sus políticas se encuentra el no activar, de forma predeterminada, procesos latentes al momento de instalarse. Por eso mismo, no hay un cortafuegos predeterminado, ya que no existen servicios que puedan atentar a la seguridad del sistema. Para labores o tareas administrativas en la línea de comandos incluye una herramienta llamada sudo (de las siglas en inglés de SuperUser do), con la que se evita el uso del usuario administrador. Posee accesibilidad e internacionalización, de modo que el sistema esté disponible para tanta gente como sea posible. Desde la versión 5.04, se utiliza UTF-8 como codificación de caracteres predeterminado.
    Esto fue algo de informacion sobre el SO Ubuntu, para saber visita la siguiente pagina:
    http://es.wikipedia.org/wiki/Ubuntu

    o visita su pagina oficial:
    http://www.ubuntu-es.org/


    SISTEMAS BINARIOS

    Suma en binario

    Para aprender a sumar, con cinco o seis años de edad, tuviste que memorizar las 100 combinaciones posibles que pueden darse al sumar dos dígitos decimales. La tabla de sumar, en binario, es mucho más sencilla que en decimal. Sólo hay que recordar cuatro combinaciones posibles:

    + 0 1
    0 0 1
    1 1 0 + 1

    Las sumas 0 + 0, 0 + 1 y 1 + 0 son evidentes:

    0 + 0 = 0

    0 + 1 = 1

    1 + 0 = 1


    Pero la suma de 1+1, que sabemos que es 2 en el sistema decimal, debe escribirse en binario con dos cifras (10) y, por tanto 1+1 es 0 y se arrastra una unidad, que se suma a la posición siguiente a la izquierda. Veamos algunos ejemplos:

    010 + 101 = 111 210 + 510 = 710
    001101 + 100101 = 110010 1310 + 3710 = 5010
    1011011 + 1011010 = 10110101 9110 + 9010 = 18110
    110111011 + 100111011 = 1011110110 44310 + 31510 = 75810

    Multiplicación binaria

    La multiplicación en binario es más fácil que en cualquier otro sistema de numeración. Como los factores de la multiplicación sólo pueden ser CEROS o UNOS, el producto sólo puede ser CERO o UNO. En otras palabras, las tablas de multiplicar del cero y del uno son muy fáciles de aprender:


    x 0 1
    0 0 0
    1 0 1

    En un ordenador, sin embargo, la operación de multiplicar se realiza mediante sumas repetidas. Eso crea algunos problemas en la programación porque cada suma de dos UNOS origina un arrastre, que se resuelven contando el número de UNOS y de arrastres en cada columna. Si el número de UNOS es par, la suma es un CERO y si es impar, un UNO. Luego, para determinar los arrastres a la posición superior, se cuentan las parejas de UNOS.

    Resta en binario

    La técnica de la resta en binario es, nuevamente, igual que la misma operación en el sistema decimal. Pero conviene repasar la operación de restar en decimal para comprender la operación binaria, que es más sencilla. Los términos que intervienen en la resta se llaman minuendo, sustraendo y diferencia.


    - 0 1
    0 0 1
    1 1 + 1 0


    Las restas 0 - 0, 1 - 0 y 1 - 1 son evidentes:

    0 – 0 = 0
    1 – 0 = 1
    1 – 1 = 0

    La resta 0 - 1 se resuelve, igual que en el sistema decimal, tomando una unidad prestada de la posición siguiente: 10 - 1, es decir, 210 – 110 = 1. Esa unidad prestada debe devolverse, sumándola, a la posición siguiente. Veamos algunos ejemplos:

    111 – 101 = 010 710 – 510 = 210
    10001 – 01010 = 00111 1710 – 1010 = 710
    11011001 – 10101011 = 00101110 21710 – 17110 = 4610
    111101001 – 101101101 = 001111100 48910 – 36510 = 12410

    BIBLIOTECA "math.h"

    Es un archivo de cabecera de la biblioteca estándar del lenguaje de programación C diseñado para operaciones matemáticas básicas. Muchas de sus funciones incluyen el uso de números en coma flotante. C++ también implementa estas funciones por razones de compatibilidad y las declara en la cabecera cmath.
    Una nota importante: si se está programando en C/C++ bajo Linux, y se utiliza uno de los compiladores nativos de este sistema operativo (gcc o g++), es necesario incluir, al compilar, la opción -lm, dado que, de lo contrario, el compilador generará un error. Por ejemplo, si tenemos un fichero fuente con funciones de la biblioteca matemática, llamado mi_fich_fuente_math.c, para compilarlo será necesario dar la orden siguiente en la consola de comandos de Linux:
    $ gcc mi_fich_fuente_math.c -lm -o <nombre_del_ejecutable>

    Las funciones de esta biblioteca son:
    sin..........seno
    cos.........coseno
    tan..........tangente
    asin.........arcoseno
    acos........arcocoseno
    atan.........arcotangente
    sinh..........seno hiperbolico
    cosh.........coseno hiperbolico
    tanh..........tangente hiperbolico
    atan2........arcotangente de dos parametros
    log............logaritmo natural
    log10........logaritmos en base 10
    pow(x, y)..eleva un valor a un exponente, xy
    sqrt...........raiz cuadrada
    abs...........valor absoluto
    ceil...........menor entero no menor que el parametro

    floor.........mayor entero no mayor que el parametro
    fmod........residuo de la divison de flotantes
    frexp........fracciona y eleva al cuadrado
    ldexp.......tamaño del exponente de un valor en punto flotante
    modf.......obtiene un valor en punto flotante integro y en partes