viernes, 2 de diciembre de 2011

Programación Orientada a Objetos

La programación orientada a objetos o POO, es un paradigma de programación que usa objetos y sus interacciones, para diseñar aplicaciones y programas informáticos. Está basado en varias técnicas, incluyendo herencia, abstracción, polimorfismo y encapsulamiento. Los conceptos de la programación orientada a objetos tienen origen en Simula 67.

La programación orientada a objetos es una forma de programar que trata de encontrar una solución a estos problemas. Introduce nuevos conceptos, que superan y amplían conceptos antiguos ya conocidos. Entre ellos destacan los siguientes:

Clase: definiciones de las propiedades y comportamiento de un tipo de objeto concreto.


Polimorfismo: comportamientos diferentes, asociados a objetos distintos, pueden compartir el mismo nombre, al llamarlos por ese nombre se utilizará el comportamiento correspondiente al objeto que se esté usando. O dicho de otro modo, 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. Algunos lenguajes proporcionan medios más estáticos (en "tiempo de compilación") de polimorfismo, tales como las plantillas y la sobrecarga de operadores de C++.

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. Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en árboles o enrejados que reflejan un comportamiento común. Cuando un objeto hereda de más de una clase se dice que hay herencia múltiple.

Abstracción: denota las características esenciales 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. Los procesos, 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 relevantes dentro de un conjunto e identificar comportamientos comunes para definir nuevos tipos de entidades en el mundo real. La abstracción es clave en el proceso de análisis y diseño orientado a objetos, ya que mediante ella podemos llegar a armar un conjunto de clases que permitan modelar la realidad o el problema que se quiere atacar.

Encapsulamiento: Significa reunir a todos los elementos que pueden considerarse pertenecientes a una misma entidad, al mismo nivel de abstracción. Esto permite aumentar la cohesión de los componentes del sistema. Algunos autores confunden este concepto con el principio de ocultación, principalmente porque se suelen emplear conjuntamente.



miércoles, 30 de noviembre de 2011

ESTRUCTURA DE DATOS LINEALES PARA BUSQUEDA DE INFORMACION

¿Como realizar eficientemente una busqueda?

para ordenar la informacion es necesaria el ordenamiento segun uno (varios) de los campos  que conforman cada registro de informacion. El campo que determina el ordenamiento d se denomina llave, ya que distingue de manera  únicamente registro.
 La llave puede ser simple, si  se forma  con un solo campo(como ka matricula de un alumno en la universidad)
 o  compuesta, se forma por varios campos (nombre, apellido y dirección de una persona), por lo que la estructura  de datos para la búsqueda  de información no se guardara información repetida.

¿Que opciones de representacion en memoria  existen para una estructura de datos para la busqueda de infomracion?

Si se deasa  utilizar una estructura temporal y ilimitado, para obtner accesis rapidos, se debera pensar en memoria principales.
si se desea utilizar una estructura permanente e ilimitada para almacenar grades volumenes de informacion, se deberia utilizar la memoria  secundaria.
Posibles representaciones lineales en memoria principales en la memoria  estatica se puede utilizar un arrelge  que guarde la informacion en forma ordenada. esta representacion , tipicamente, se conoce con el nombre de tabla.
En memoria dinamica se puede utilizar  una lista encadenadas  que  guarde ordenadamente la informacion.  Esta  representacion, generalment se llama lista Ordenadas.

¿como se pueden implementar el proceso de búsqueda en una estructura lineal?

 La busqueda secuencial:
  • Los algoritmos de búsqueda lineal y binaria son 2 de los algoritmos más usados para encontrar elementos en una estructura de datos.La búsqueda lineal probablemente es sencilla de implementar e intuitiva. Básicamente consiste en buscar de manera secuencial un elemento, es decir, preguntar si el elemento buscado es igual al primero, segundo, tercero y así sucesivamente hasta encontrar el deseado. Entonces este algoritmo tiene una complejidad de O(n).
La búsqueda binaria:
  • Si la tabla de números está ordenada, por ejemplo, en orden creciente, es posible utilizar para la búsqueda un algoritmo más eficiente que se basa en un concepto muy utilizado en la programación: dividir para vencer.
    Si está ordenada la tabla y miramos el número situado en la mitad para ver si es mayor o menor que el número buscado (o con suerte igual), sabremos si la búsqueda ha de proceder en la subtabla con la mitad de tamaño que está antes o después de la mitad. Si se repite recursivamente el algoritmo al final o bien encontraremos el número sobre una tabla de un sólo elemento o estaremos seguros de que no se encuentra allí.



STRINGS

¿Que es un string y por que es importante su análisis?

Las palabras string hace referencia a una cadena de caracteres. Su estudio cobra importancia cuando se toma en consideración que la mayor parte de la información que se maneja actualmente en casi cualquier área del conocimiento, puede verse como una secuencia de caracteres. El nombre de una persona, el contenido de un libro, la información  presentada en un texto puede ser vistas como una cadena de caracteres o string. Esto nos lleva a pensar que un string debe definirse como una estructura de datos y por ello es conveniente que se diseñe inicialmente un TDA.

¿ De que firma concptualizar un string como un TDA?

Se puede diseñar muchas TDA que definan un string considerando que  operaciones se tomaran como basicas para el funcionamiento de dicha estructura y cual sera el conjunto de caracteres que se acepptaran como parte de el.

Una posible definición para el TDA de un sting seria la siguiente:

  • ESTRUCTURA;   dado como un string se considera una cadena se puede pensar que se  establece una ralacion lineal entre elementos, suponiendo que los string pueden almacenar entre 0 y 80 elementos, entonces su dominio sera el conjunto de todas las cadenas que se puede forma con combinaciones de los elementos y que cumplen con la regla de longitud.


¿Como se puede representar el TDA del String?

Hay diversas posibilidades para representar una cadena de caracteres. se puede almacenar en la memoria  contigua, como seria el caso de un arreglo; también podria utilizarse almacenamiento no contiguo, como kas listas encadenadas.

¿Cuales son las formas mas comunes de representación con almacenamiento contiguo?

Forma 1: uso de un carácter centinela
Los caracteres con forman el string se almacena en arreglos de carácter especial(que forman parte del conjunto de elementos del string) colocado al final de los caracteres que estas almacenados en el. En este tipo de representación se debe considerar que el centinela es un carácter que ocupara  un espacio; por lo tanto, debe tomar en cuenta al calcular la longitud que tendrá el string.

Forma 2: almacenamiento de la longitud actual de un string

En este tipo de representación, también los caracteres se almacenan en un arreglo de extensión predefinida. En este modelo la longitud actual del string se almacena en la primera posición del arreglo(generalmente la posición 0), que nos forman parte del string, aunque comparte la misma definición de datos.

¿Cuales son las formas mas comunes de representación con almacenamiento no contiguo?

Forma 1; lista encadenada de nodos con un carácter por nodo

En este modelo se genera una lista encadenada donde cada uno de los nodos almacena únicamente a uno de los caracteres del string y la dirección donde se encuentra el siguiente nodo de la lista.

Forma 2: lista encadenada de nodos con N caracteres por nodo

en este tipo de representación se genera una lista  encadenada donde cada uno de los nodos almacenan  N caracteres del string (N>1) y la dirección donde se encuentra el siguiente nodo de la lista.

viernes, 28 de octubre de 2011

¿Como viajan los datos por el Bus?


El Bus es el conjunto de líneas (cables) de hardware utilizados para la transmisión de datos entre los componentes de un sistema informático. Un bus es en esencia una ruta compartida que conecta diferentes partes del sistema como el procesador, la controladora de unidad de disco, la memoria y los puertos de entrada, salida, permitiéndoles transmitir información.

El bus, por lo general supervisado por el microprocesador, se especializa en el transporte de diferentes tipos de información.

En el bus se encuentran dos pistas separadas, el bus de datos y el bus de direcciones. La CPU escribe la dirección de la posición deseada de la memoria en el bus de direcciones accediendo a la memoria, teniendo cada una de las líneas carácter binario.

Es decir solo pueden representar 0 o 1 y de esta manera forman conjuntamente el número de la posición dentro de la memoria (es decir: la dirección).

Cuanto más líneas haya disponibles, mayor es la dirección máxima y mayor es la memoria a la cual puede dirigirse de esta forma. En el bus de direcciones original habían ya 20 direcciones, ya que con 20 bits se puede dirigir a una memoria de 1 MB y esto era exactamente lo que correspondía a la CPU.

Esto que en le teoría parece tan fácil es bastante mas complicado en la práctica, ya que aparte de los bus de datos y de direcciones existen también casi dos docenas más de líneas de señal en la comunicación entre la CPU y la memoria, a las cuales también se acude.

Todas las tarjetas del bus escuchan, y se tendrá que encontrar en primer lugar una tarjeta que mediante el envío de una señal adecuada indique a la CPU que es responsable de la dirección que se ha introducido. Las demás tarjetas se despreocupan del resto de la comunicación y quedan a la espera del próximo ciclo de transporte de datos que quizás les incumba a ellas.

PROCESADOR

Bus de direcciones

Bus de datos

8086

20

16

8088

20

8

80186

20

16

80188

20

8

80286

24

16

80386 SX

32

16

80386 DX

32

32

80486 DX

32

32

80486 SX

32

32

PENTIUM

32

64

PENTIUM PRO

32

64



Este mismo concepto es también la razón por la cual al utilizar tarjetas de ampliación en un PC surgen problemas una y otra vez, si hay dos tarjetas que reclaman para ellas el mismo campo de dirección o campos de dirección que se solapan entre ellos.

Los datos en si no se mandan al bus de direcciones sino al bus de datos. El bus XT tenía solo 8 bits con lo cual sólo podía transportar 1 byte a la vez. Si la CPU quería depositar el contenido de un registro de 16 bits o por valor de 16 bits, tenía que desdoblarlos en dos bytes y efectuar la transferencia de datos uno detrás de otro.

De todas maneras para los fabricantes de tarjetas de ampliación, cuyos productos deben atenderse a este protocolo, es de una importancia básica la regulación del tiempo de las señales del bus, para poder trabajar de forma inmejorable con el PC.

Pero precisamente este protocolo no ha sido nunca publicado por lBM con lo que se obliga a los fabricantes a medir las señales con la ayuda de tarjetas ya existentes e imitarlas. Por lo tanto no es de extrañar que se pusieran en juego tolerancias que dejaron algunas tarjetas totalmente eliminada.



jueves, 20 de octubre de 2011

Comprender la representación de datos

Comprender las representación de datos

Ahora ya sabes que los datos en una computadora son una serie de señales electrónicas representa por ceros y uno. Cada 0 o 1 en representación de datos es un bit. Casi todos los esquemas de codificación de las computadoras se sirven de 8 bits para representar un numero, letra o símbolo. Una serio de 8 bits es un byte. estudie la figura

Las computadoras digitales se calen de muchos esquemas de calificación diferente para representar datos.el esquema de codificación en uso depende de si los datos son numéricos o de caracteres
Con mas detalles

  • los datos numéricos están formados por cifras que representan cantidades y que se pueden emplear en operaciones aritméticas: por ejemplo tus ingresos anuales. puedes usarlos en operaciones aritméticas cada que calculas tus impuestos.
  • los datos caracteres están formados por letras, símbolos y números que no se van usar en operaciones aritméticas, digamos, tu nombre, el color da tu cabello, tu numero telefónico y tu RFC. como no vas a usar el numero de RDF ni tu teléfono en operaciones aritméticas se consideran datos caracteres.
  • normalmente, las computadoras digitales representan los datis de caracteres mendiante el codigo ASCII(de american Standard code for information interchange) o EBCDIC( de Extenden Binary-Coded Decimal Interchange Code). ASCII representa simbolos, numeros, mayusculas y minusclas; el ASCII es un codigo de representacion de datos de 7 bits que se encuentran en la genearalidadd de las PC yen mcuchas minicomputadoras y en algunas mainframe.





miércoles, 19 de octubre de 2011

Codificicaones para Computadores


110100110110 110101100110 110110110110

Muy difíciles de recordar y distinguirlas entre sí, para nosotros, la notación decimal más compacta -3382, 3430. 3510- es muy superior. Para cerrar la brecha entre los sistemas binarios y decimal, se usan otros sistemas numéricos en relación con los computadores –principalmente, los sistemas octal (base b=8) y hexadecimal (base b=16). Por otro parte, como 8 y16 con potencias de 2, existe una casi instantánea interconexión entre los sistemas octal y decimal, en cuanto lo compacto, con el sistema Decimal.

Sistemas Numéricos

Cualquier numero positivo b > 1 puede ser escogido como base para un sistema numérico posicional similar al sistema decimal (b = 10) o al sistema binario (b = 2), tal sistema usa b símbolos para los enteros.

0, 1, 2, 3,… b-1

Estos símbolos se denominan dígitos del sistema.

Todo entero N se presentara en el sistema por una secesion del digito base –b:

Entonces bk valor posicional de ak, y

N= an x bn + an-1 + … + a2 x b2 + a1 x b1 + a0 x b0

Se denomina forma expandida o notación expandida para N.

Mas generalmente, cualquier numero M se representa en el sistema por una sucesión de dígitos con, posiblemente, un punto para la base intercalado.


jueves, 13 de octubre de 2011

Teoria de la Informacion

La teoría matemática de lacomunicación es una propuesta teóricapresentada por Claude E.Shannon y Warren Weaver a finales de la década de los 40. Esta teoría estárelacionada con las leyes matemáticas que rigen la transmisión y elprocesamiento de la información y se ocupa de la medición de la información yde la representación de la misma como asì también de la capacidad de lossistemas de comunicación para transmitir y procesar información.

El modelopropuesto por Shannon es un sistema general de la comunicación que parte de una fuente de información desde la cual, a través de un transmisor, se emite una señal, la cual viaja por un canal, pero a lo largo de su viaje puede serinterferida por algún ruido. La señal sale delcanal, llega a un receptor que decodifica la información convirtiéndolaposteriormente en mensaje que pasa a un destinatario.
Con el modelo de la teoría de la información se tratade llegar a determinar la forma más económica, rápida y segura de codificar unmensaje, sin que la presencia de algún ruido complique su transmisión. Paraesto, el destinatario debe comprender la señal correctamente, el problema esque aunque exista un mismo código de por medio, esto no significa que eldestinatario va captar el significado que el emisor le quiso dar al mensaje.

Elementos de lainformación

Fuente
Una fuente es todo aquello que emite mensajes. Por ejemplo,una fuente puede ser una computadora y mensajes sus archivos, una fuente puedeser un dispositivo de transmisión de datos y mensajes los datos enviados, etc.

Tipo de Fuentes

Existen varios tipos de fuentes. Para la teoría de lainformación interesan las fuentes aleatorias y estructuradas. Una fuente esaleatoria cuando no es posible predecir cuál es el próximo mensaje a emitir porla misma. Una fuente es estructurada cuando posee un cierto nivel deredundancia, una fuente no estructurada o de información pura es aquella en quetodos los mensajes son absolutamente aleatorios sin relación alguna ni sentidoaparente, este tipo de fuente emite mensajes que no se pueden comprimir, unmensaje para poder ser comprimido debe poseer un cierto nivel de redundancia,la información pura no puede ser comprimida sin que haya una pérdida deconocimiento sobre el mensaje.

Mensaje

Un mensaje es un conjunto de ceros y unos. Un archivo, unpaquete de datos que viaja por una red y cualquier cosa que tenga unarepresentación binaria puede considerarse un mensaje.

Código

Un código es un conjunto de unos y ceros que se usan pararepresentar a un cierto mensaje de acuerdo a reglas o convencionespreestablecidas. Por ejemplo al mensaje 0010 lo podemos representar con elcódigo 1101 usando para codificar la función (NOT)

Información

La información contenida en un mensaje es proporcional a lacantidad de bits que se requieren como mínimo para representar al mensaje.
Calculo
Considerando todas las posibles técnicas decodificación de niveles múltiples y polifásicas, el teorema de Shannon-Hartleyindica que la capacidad delcanal C es:
Descripción:  C =  B \log_2 \left( 1+\frac{S}{N} \right)
donde:
§ B es el ancho de banda del canal.
§ C es la capacidad del canal (tasa de bits deinformación bit/s)
§ S es la potencia de la señal útil, que puedeestar expresada en vatios, milivatios, etc., (W, mW, etc.)
§ N es la potencia del ruido presente en el canal,(mW, μW, etc.) que trata de enmascarar a la señal útil.