domingo, 7 de noviembre de 2010

*Operadores Booleanos

Materia: Lenguajes de programación - puntos extra
Hora: Martes m1- m3




Hola a todos, aquí les dejo una pequeña entrada sobre Operadores Booleanos :)




En la mayoría de los motores de búsqueda, y también los directorios que permiten buscar en su propia base de datos, se utilizan operadores lógicos booleanos que son los que establecen la relación entre los términos de búsqueda. Estos operadores tomado del álgebra del matemático inglés George Boole, permiten combinar los términos de búsqueda de acuerdo con nuestras necesidades.


Los operadores utilizados son:
  • OR
  • AND
  • NOT


*OR



Cuando utilizamos este operador entre dos términos de búsqueda estamos pidiendo documentos que contengan cualquiera de los dos términos. Por ejemplo: estamos buscando si tiene cáncer OR pulmón estamos pidiendo documentos que contengan bien el término cáncer, bien el término pulmón, o los dos, tal y como muestra el diagrama de Venn.




AND




Si utilizamos este operador entre dos términos de búsqueda estamos buscando documentos que tengan ambos términos. En el ejemplo de cáncer,pulmón el AND implementado quedaría de la siguiente manera:  cáncer AND pulmón y con esto estamos pidiendo documentos que contengan tanto el término cáncer como el término pulmón.





NOT




Pero si utilizamos este operador entre dos términos de búsqueda estamos pidiendo documentos que contengan uno de los término y no el otro. Siguiendo con los términos cáncer y pulmón, el NOT quedaría implementado de la siguiente manera:  cáncer NOT pulmón solicitamos documentos que contengan el término cáncer pero que no contengan el término pulmón.











La lógica booleana en Internet





Cuando utilizamos un motor de búsqueda en Internet, la utilización de lógica booleana en la búsqueda del motor se realiza de tres maneras:


1. Utilización habitual de operadores booleanos


Algunos motores de búsqueda permiten el uso de operadores booleanos, escribiéndolos en el perfil de búsqueda:
cáncer OR pulmón
cáncer AND pulmón


cáncer NOT pulmón


(cáncer AND mujeres) NOT pulmón


Nota: En este último caso  el uso de paréntesis  le dice al motor que debe realizar primero la operación cáncer AND mujeres, y después el resto del perfil de búsqueda con el operador NOT.


2. Búsqueda booleana implícita




El uso de operadores booleanos no se lleva a cabo de manera explícita, es decir, escribiendo los operadores, sino que al escribir las palabras clave el motor de búsqueda ya considera una determinada opción de combinación lógica.

 También se puede realizar  la búsqueda booleana mediante la utilización de determinados símbolos (por ejemplo + o - ) que sustituyen a los operadores lógicos.
cáncer pulmón (se considera cáncer OR pulmón)


+cáncer + pulmón (es equivalente a cáncer AND pulmón)


cáncer -pulmón (se considera equivalente a cáncer NOT pulmón)


cáncer tumores +pulmón (equivalente a cáncer OR tumores AND pulmón)






3. Opciones predeterminadas en el entorno de búsqueda del motor


Algunos motores de búsqueda ofrecen un menú u opciones que permiten elegir el operador lógico deseado. Con frecuencia el operador ha sido sustituido por una frase que expresa la acción de combinación a realizar por el operador:

cualquiera de la palabras por OR


todas las palabras por AND


no debe contener las palabras por NOT


A estas expresiones se les suele añadir la opción "la frase exacta" que permite buscar documentos que contiene una frase determinada, tal como la hemos escrito. Lo que también es común entre las opciones es que se incluyan operadores de proximidad como el NEAR que permite buscar términos que estén próximos.



Bueno está fue mi entrada sobre Operadores Booleanos espero les sea útil, cualquier comentario hagánmelo saber. Saludos :)






*IEEE 754 - 2008

Materia: Lenguajes de Programación - Puntos extra
Hora: Martes m1 - m3


Hola a todos, aquí les dejare una pequeña entrada sobre el estándar IEEE 754 - 2008.

El Estándar para aritmética de punto flotante (IEEE 754) es el estándar más utilizado para la mayoría de punto flotante de computación y es seguido por muchos de hardware ( CPU  y FPU ) y las implementaciones de software.

 Muchos lenguajes informáticos permiten que toda o parte de  la aritmética se llevará a cabo mediante IEEE 754 formatos y operaciones.

La versión actual es IEEE 754 - 2008, fue publicado en agosto de 2008 e incluye casi todos los del IEEE 754- 1.985 y la Norma IEEE 854 - 1987


Y la Norma define lo siguiente:

* Formatos de aritmética: juegos de binarios y decimales de punto flotante de datos, que consisten en un número finito (incluyendo ceros firmado y números debajo de lo normal ), infinitos , y especial "no es un número" valores ( NaN )



* Intercambio: codificaciones (cadenas de bits) que se pueden utilizar para el intercambio de puntos de datos y flotando en un compacto de forma eficiente


* Algoritmos de redondeo: los métodos que se utilizan para redondear los números en la aritmética y las conversiones


* Operaciones, y otras operaciones aritméticas en formatos de aritmética


* Manejo de excepciones : las indicaciones de las condiciones excepcionales (como la división por cero , desbordamiento, etc)


 
La norma también incluye amplias recomendaciones para el avanzado control de excepciones , las operaciones adicionales (tales como funciones trigonométricas ), evaluación de la expresión, y para lograr resultados reproducibles.


 
La norma se deriva de y sustituye IEEE 754-1985 , la versión anterior.Los formatos binarios en el estándar original, se incluyen en la nueva norma, junto con tres nuevos formatos de base (un binario y decimal dos).Para cumplir con la norma actual, una aplicación debe implementar al menos uno de los formatos básicos como la vez un formato de aritmética y un formato de intercambio.




Bueno esto fue todo :) espero les sea útil cualquier comentario hagánmelo saber. Saludos :)


*Bit

Materia: Laboratorio de lenguajes de programación
Hora: Jueves V1


Hola a todos, aquí les dejo una pequeña entrada sobre el bit :)


Primero que nada hay que decir lo que es el bit, el bit es un dígito del sistema binario, en el sistema binario sólo se utilizan dos dígitos el 0 y el 1, por ello el término bit proviene de Binary Digit (dígito binario).

Con el bit podemos representar dos valores, como verdadero o falso, abierto o cerrado, etc. Por ejemplo podemos asignar uno de estos valores a "apagado"(0) y "encendido"(1) en un foco o bombilla.

Siguiendo con el ejemplo de la bombilla podemos ver las 4 combinaciones posibles que podemos realizar y son:









  • 0 0 - Los dos están "apagados"                                                                                             
  • 0 1 - El primero (de derecha a izquierda) está "encendido" y el segundo "apagado"
  • 1 0 - El primero (de derecha a izquierda) está "apagado" y el segundo "encendido"
  •  1 1 - Los dos están "encendidos"











Por medio de secuencias de bits, se puede codificar cualquier valor como números, palabras, e imágenes. Cuatro bits forman un nibble, y pueden representar hasta  24 = 16 valores diferentes; ocho bits forman un octeto, y se pueden representar hasta 28 = 256 valores diferentes, entonces con un número n de bits pueden representarse hasta 2n valores diferentes.



Un byte y un octeto no son lo mismo. Un octeto siempre tiene 8 bits pero un byte contiene un número fijo de bits, que no necesariamente son 8. En las computadoras viejitas, el byte estaba conformado por 6, 7, 8 ó 9 bits, y en las computadoras actuales un byte tiene 8 bits, siendo equivalente al octeto, pero hay excepciones.

El valor de los dígitos es dependiendo en que posición esta, y en el sistema binario cada vez que un dígíto se mueve hacia la izquierda vale el doble y cada vez que se mueve a la derecha vale la mitad.


Por ejemplo:


+----+----+----+----+----+       
16  |  8  |  4  |   2  |   1  |  <-- Valor del bit de acuerdo a su posición.
+----+----+----+----+----+        




Y aquí les dejo otro ejemplo en donde se representa el número 19, pero en el dibujito viene como se representa el valor de posición, la representación gráfica de los bits como bombillas encendidas y apagadas y los dígitos binarios.




   16 + 2 + 1  = 19
















Aquí les dejo unos videos hablando sobre bits este es el del primer video  y el segundo video esta en ingles pero en los dos muestran algunos conceptos y ejemplos sobre bits, bytes y números binarios.



Bueno ésta fue mi entrada sobre Bits espero les sirva :) cualquier comentario hagánmelo saber. Saludos :)




sábado, 6 de noviembre de 2010

*Punteros

Materia: Laboratorio Lenguajes de Programación

Hora: Jueves V1


Hola a todos, aquí les dejo una pequeña entrada hablando sobre Punteros.

Se dice que un Puntero o también llamado Apuntador es una variable que su valor es una dirección de memoria, los punteros se utilizan comúnmente en informática y son utilizados por programadores. Al trabajar con punteros tienes que manejar direcciones de memoria en las cuales residen datos.

Por ejemplo si tenemos una variable ' p ' de tipo puntero que contiene una dirección de memoria en la que se encuentra almacenado un valor ' v '  se dice que ' p ' apunta a ' v '.

Al proceso de referenciar a un valor a través de un apuntador se le llama indirección, los apuntadores como todas las variables tienen que definirse antes de que se puedan utilizar, por ejemplo: La definición int *ptrCuenta, cuenta; especifica que la variable ptrCuenta es de tipo int * es decir un apuntador a un entero y se lee, "ptrCuenta es un apuntador a un int" o "ptrCuenta apunta a un objeto de tipo int". El * sólo se aplica a la variable que se define como apuntador.

El único entero que puede asignarse a un apuntador es 0, El operador de dirección (&) devuelve la dirección del operando, el operador del operador de dirección debe ser una variable, el operador de dirección no puede aplicarse a constantes, expresiones, o a variables declaradas con la clase de almacenamiento register.

Algunos operadores que se utilizan con apuntadores son :

      Operadores                                    Asociatividad                             Tipo

( )     [ ]                                          izquierda a derecha                       más alto

 +  -  ++  -- !  * & (tipo)                   derecha a izquierda                       unario

*  /  %                                            izquierda a derecha                       de multiplicación

+     -                                             izquierda a derecha                        de suma

<   <=   >   >=                                izquierda a derecha                        de relación

==   !=                                          izquierda a derecha                         de igualdad

&&                                               izquierda a derecha                         and lógico

| |                                                  izquierda a derecha                         or lógico

? :                                                 derecha a izquierda                         condicional

=   +   =    -=    *=    /=   %=          derecha a izquierda                         de asignación
 
,                                                   izquierda a derecha                         coma





Bueno aquí les dejo mi entrada, espero les sirva cualquier comentario hagánmelo saber. Saludos :)

*Prolog

  Materia: Laboratorio  
Hora: Jueves V1



Hola a todos en esta entrada les hablaré un poquito sobre en lenguaje Prolog en sí.

Prolog es un lenguaje que se utiliza para resolver problemas lógicos, y también se utiliza en  la inteligencia artificial, éste lenguaje se creó en los años 70 por los profesores  Alain Colmerauer y Philippe Roussel, el término PROLOG viene del francés PROgrammation en LOGique.

Los programas en PROLOG utilizan cláusulas de Horn que son reglas del tipo:  "Si es verdad el antecedente, entonces es verdad el consecuente", la manera de escribir las cláusulas de Horn es un poco extraña, primero se escribe el consecuente y después el antecedente, éste es una conjunción de condiciones que se llama secuencia de objetivos, por medio de la unificación cada objetivo determina un subconjunto de cláusulas susceptibles de ser ejecutadas. Cada una de ellas se denomina punto de elección. Prolog selecciona el primer punto de elección y sigue ejecutando el programa hasta determinar si el objetivo es verdadero o falso.

Algunas expresiones utilizadas en Prolog son :

  • X is Y %unificación con evaluación.
  • X = Y %unificación simbólica
  • X=:=Y %comparación con evaluación
  • X == Y %comparación simbólica.
Ejemplos:

?- X is 10+4.

    X = 14

?- X = 10+4.
   X = 10+4

?- 10+4 =:= 8+3.

yes

?- 10+4 == 8+3.

no

?- 10+4 == 10+4.

yes

Las listas son colecciones de elementos en Prolog, ésta se divide en dos partes: cabeza y cola, la cabeza es el primer elemento de la lista y la cola es una lista con el resto de los elementos de la lista. La cabeza y la cola de una lista se separan con el símbolo " | ".

Aquí les pondre un ejemplo que saque del tutorial que les dejaré el link más abajo, y el ejemplo dice así

Veamos un predicado compuesto por una simple cláusula:


es_viejo(Individuo) :-

edad(Individuo,Valor),

Valor > 60.


Ahora invocamos el objetivo es_viejo(luis). Para ello supongamos que la edad de Luis es 32 años, es decir, el objetivo edad(luis,32) tiene éxito. Primero unificamos es_viejo(luis) y es_viejo(Individuo). Produciendose la relación entre la variable individuo y la variable luis. Después se ejecuta, y la variable valor va a ligar al valor con la edad de luis que es de 32.

es_viejo(luis) :-

edad(luis,Valor),
Valor > 60.

(32>60 es falso). Con lo que concluimos que Luis no es un viejo.




Bueno está fue una pequeña entrada de PROLOG, aquí les dejo un Manual de PROLOG, cualquier comentario hagánmelo saber. Saludos :) 
  

viernes, 5 de noviembre de 2010

*Máquinas Turing

Materia: Laboratorio
Hora: Jueves V1

Hola a todos, en esta entrada aunque un poco tarde les hablare sobre las Máquinas Turing.

Las Máquinas Turing son modelos computacionales que se utilizan para la lectura y escritura de una entrada llamada cinta.

Está formado por :

  • Un alfabeto de entrada
  • Un alfabeto de salida
  • Un símbolo llamado blanco
  • Un conjunto de estados finitos
  • Un conjunto de transiciones entre dichos estados

Cuando una máquina de turing tiene una sola cinta puede ser  definida como 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 diferentes del espacio en blanco, y éste es 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 \Gamma es el símbolo denominado blanco, y es el único que se puede repetir infinitas 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 la denominada función de transición.



Funcionamiento de la Máquina de Turing

La Máquina de Turing tiene una cabezal lector/escritor y tiene una cinta infinita en la que el cabezal lee el contenido, borra el contenido leido y escribe un nuevo valor. Al momento de realizar las operaciones se tiene que checar que sólo se puede avanzar el cabezal lector/escritor hacia la derecha y hacia la izquierda. 

 Esto se determina con una tabla de la siguiente forma :                      
  •  (estado, valor) (nuevo estado, nuevo valor, dirección)
Donde la tabla toma como parámetro el estado actual de la máquina y e carácter leido de la cinta, y con esto da la dirección al cabezal para moverse, el nuevo estado de la máquina y el valor a ser escrito de la cinta.

En este caso el elemento que actúa como la memoria es la cinta la cual se divide en espacios llamados celdas, donde se escriben o leen diferentes símbolos. Desde el inicio todas las celdas contienen el famoso símbolo especial llamado "blanco".







                                       





* Video sobre Máquinas Turing


Aquí les dejo un  vídeo en donde te explican todo sobre las Máquinas Turing y también explican un ejemplo, espero que les sirva :). Saludos


*Abstracción de datos

Materia: Laboratorio de lenguajes de programación
Hora: Jueves v1


Hola a todos aquí les dejo una pequeña entrada sobre Abstracción de datos :)


La abstracción de datos consiste en ocultar las características de un objeto de manera que solamente utilizamos el nombre del objeto en nuestro programa. Por ejemplo cuando decimos la palabra “perro”, ya no necesitamos que nos digan que esta haciendo el perro porque ya sabemos como son los perros, también sabemos que los perros ladran, entonces es cuando estoy abstrayendo todas las características de todos los perros en un solo término, llamado “perro”. A esto es a lo que se le llama ‘Abstracción’ y es un concepto muy útil en la programación, ya que un usuario no necesita mencionar todas las características y funciones de un objeto cada vez que éste se utiliza, sino que son declaradas por separado en el programa y simplemente se utiliza el término abstracto para mencionarlo.







Cuando se guardan todas las características y habilidades de un objeto por separado se le llama Encapsulamiento.


Tipos de Abstracción que podemos encontrar en un programa :

 
1. Abstracción funcional: crear procedimientos y funciones e invocarlos mediante un nombre donde se destaca qué hace la función y se ignora cómo lo hace. El usuario sólo necesita conocer la especificación de la abstracción (el qué) y puede ignorar el resto de los detalles (el cómo).

 
2. Abstracción de datos:

 
• Tipo de datos: proporcionado por los leguajes de alto nivel. La representación usada es invisible al programador, al cual solo se le permite ver las operaciones predefinidas para cada tipo.

 
• Tipos definidos: por el programador que posibilitan la definición de valores de datos más cercanos al problema que se pretende resolver.

 
• TDA: para la definición y representación de tipos de datos (valores + operaciones), junto con sus propiedades.

 
• Objetos: Son TDA a los que se añade propiedades de reutilización y de compartición de código.


Los diferentes níveles de abstracción son:

•Nivel Físico. Determina como están almacenados físicamente los datos (pistas, sectores, cilindros), representa el nivel más bajo.



•Nivel Lógico o Conceptual. Determina la organización de los archivos. Índices, llaves, orden de campos,relaciones, tipos de datos.


•Nivel de Vistas. Oculta parte de la información a los usuarios, es decir hace visible solo una parte de la base de datos.


Modelos de Datos
Los modelos de datos son una colección de herramientas conceptuales para describir los datos y las relaciones entre ellos. Y hay 3 tipos de modelos que son:




* Modelo de Red


Colecciones de registros y las relaciones entre datos se representan mediante enlaces





           
                      Modelo de red



* Modelo Jerarquico


Los registros se organizan como colecciones de árboles, en lugar de grafos dirigidos




                                    Modelo jerarquico



* Modelo Relacional


Es una base de datos en donde todos los datos visibles al usuario están organizados estrictamente como tablas de valores.


Modelo Relacional







Bueno esto es todo de mi entrada sobre Abstracción de Datos, espero les sea útil. Saludos :)