domingo, 14 de octubre de 2012

semana 25/07/2012-28/07/2012



ESTRUCTURAS DE DATOS

Definición: El tipo de un dato es el conjunto de valores que puede tomar durante el programa. 
Si se le intenta dar un valor fuera del conjunto se producirá un error.
La asignación de tipos a los datos tiene dos objetivos principales:
• Por un lado, detectar errores en las operaciones
• Por el otro, determinar cómo ejecutar estas operaciones
Un lenguaje fuertemente tipeado es aquel en el que todos los datos deben



Clasificaciones en los tipos de datos
Existen muchas clasificaciones para los tipos de datos. Una de estas es la siguiente:
• Dinámicos
• Estáticos
o El tipo cadena
o Estructurados
o Simples

Tipos estáticos
Casi todos los tipos de datos son estáticos, la excepción son los punteros. Que un tipo de datos sea estático quiere decir que el tamaño que ocupa en memoria no puede variar durante la ejecución del programa. Es decir, una vez declarada una variable de un tipo determinado, a ésta se le asigna un trozo de memoria fijo, y este trozo no se podrá aumentar ni disminuír.
Tipos dinámicos.
Dentro de esta categoría entra sólamente el tipo puntero. Este tipo te permite tener un mayor control sobre la gestión de memoria en tus programas. Con
ellos puedes manejar el tamaño de tus variables en tiempo de ejecución, o sea, cuando el programa se está ejecutando. Los punteros quizás sean el concepto más complejo a la hora de aprender un lenguaje de programación.
Tipos simples Como su nombre indica son los tipos básicos. Son los más sencillos y los más fáciles de aprender. Los tipos simples más básicos son: entero, lógico, carácter y real. Y la mayoría de los lenguajes de programación los soportan, no como ocurre con los estructurados que pueden variar de un lenguaje a otro.
Tipos estructurados Mientras que una variable de un tipo simple sólo referencia a un elemento, los estructurados se refieren a colecciones de elementos.
Las colecciones de elementos que aparecen al hablar de tipos estructurados son muy variadas: tenemos colecciones ordenadas que se representan mediante el tipo array, colecciones sin orden mediante el tipo conjunto, e incluso colecciones que contienen otros tipos, son los llamados registros.





http://upload.wikimedia.org/wikipedia/commons/5/51/APUNTES.pdf



semana 30/07/2012-04/08/2012

ARREGLOS

Arreglos Unidimensionales

Un arreglo unidimensional es un tipo de datos estructurado que está formado de una colección finita y ordenada de datos del mismo tipo. Es la estructura natural para modelar listas de elementos iguales.
El tipo de acceso a los arreglos unidimensionales es el acceso directo, es decir, podemos acceder a cualquier elemento del arreglo sin tener que consultar a elementos anteriores o posteriores, esto mediante el uso de un índice para cada elemento del arreglo que nos da su posición relativa.
Para implementar arreglos unidimensionales se debe reservar espacio en memoria, y se debe proporcionar la dirección base del arreglo, la cota superior y la inferior.








REPRESENTACIÓN EN MEMORIA



Los arreglos se representan en memoria de la forma siguiente:
x : array[1..5] of integer




Para establecer el rango del arreglo (número total de elementos) que componen el arreglo se utiliza la siguiente formula:

RANGO = Ls - (Li+1)
donde:
ls = Límite superior del arreglo
li = Límite inferior del arreglo
Para calcular la dirección de memoria de un elemento dentro de un arreglo se usa la siguiente formula:
A[i] = base(A) + [(i-li) * w]
donde :
A = Identificador único del arreglo
i = Indice del elemento
li = Límite inferior
w = Número de bytes tipo componente
Si el arreglo en el cual estamos trabajando tiene un índice numerativo





Arreglos Bidimensionales
matrices





Este tipo de arreglos al igual que los anteriores es un tipo de dato estructurado, finito ordenado y homogéneo. El acceso a ellos también es en forma directa por medio de un par de índices.

Los arreglos bidimensionales se usan para representar datos que pueden verse como una tabla con filas y columnas. La primera dimensión del arreglo representa las columnas, cada elemento contiene un valor y cada dimensión representa una relación

La representación en memoria se realiza de dos formas : almacenamiento por columnas o por renglones.

Para determinar el número total de elementos en un arreglo bidimensional usaremos las siguientes fórmulas:


RANGO DE RENGLONES| (R1) = Ls1 - (Li1+1)

RANGO DE COLUMNAS (R2) = Ls2 - (Li2+1)
No. TOTAL DE COMPONENTES = R1 * R2
REPRESENTACION EN MEMORIA POR COLUMNAS
x : array [1..5,1..7] of integer
Para calcular la dirección de memoria de un elemento se usan la siguiente formula:
A[i,j] = base (A) + [((j - li2) R1 + (i + li1))*w]
REPRESENTACION EN MEMORIA POR RENGLONES
x :

Las operaciones  en arreglos pueden clasificarse de la siguiente forma:

• Lectura
• Escritura
• Asignación

• Actualización

• Ordenación
• Búsqueda







semana 08/08/2012-10/08/2012






Operaciones con arreglos unidimensionales 
  (vectores)


  • Lectura/Esritura
  • Asignación
  • Actualización
  • Ordenación 
  • Búsqueda




 La Lectura/Escritura de datos en un arreglo u operaciones de entrada/salida normalmente se realizan con estructuras repetitivas, aunque puede también hacerse con estructuras selectivas. Las instrucciones simples de lectura/escritura se representarán como :

leer A              Lectura del vector A
escribir A         Escritura del vector A
leer V(5)          Leer el elemento V(5) del vector V



ACTUALIZACIÓN DE UN VECTOR


    Puede constar de tres operaciones más elementales:

    a) Añadir elementos (añade un nuevo elemento al final del vector)
    Un arreglo A se ha dimensionado a 6 elementos, pero solo se han asignado 4 valores a los elementos A(1),
        A(2), A(3), A(4), se podrán añadir dos elementos más con una simple acción de asignación.
A(5)    ---->    15
A(6)    ---->     9
    b) Insertar elementos (introduce un elemento en el interior de un vector)

ORDENACIÓN DE ARREGLOS


    Existen diversos métodos para ordenar los elementos de un arreglo. El más conocido de ellos (no el mejor) es el Método de La Burbuja.

    El método consiste en hacer un recorrido por el arreglo comparando parejas de elementos ; si estos no están en el orden deseado, se procede a intercambiarlos.
    Al finalizar el recorrido se verifica la cantidad de intercambios, si esta es 0 se asume que el arreglo está ordenado ; en caso contrario se inicia nuevamente el recorrido.
    Las parejas de elementos que se comparan deben ser contiguos (elemento1 y elemento2, elemento2 y elemento3, etc). El número total de comparaciones es n-1 (donde n es la cantidad de elementos).







semana 13/08/2012-18/08/2012




OPERACIONES CON ARREGLOS 
BIDIMENSIONALES

Los arreglos bidimensionales son tablas de valores. Cada elemento de un arreglo bidimensional está simultáneamente en una fila y en una columna.
En matemáticas, a los arreglos bidimensionales se les llama matrices, y son muy utilizados en problemas de Ingeniería.
En un arreglo bidimensional, cada elemento tiene una posición que se identifica mediante dos índices: el de su fila y el de su columna.
Para manejar un arreglo, las operaciones a efectuarse son:

  • Declaración del arreglo,
  • Creación del arreglo,
  • Inicialización de de los elementos del arreglo, y
  • Acceso a los elementos del arreglo.



Declaración.

La declaración de un arreglo consiste en establecer las características del arreglo y sus elementos, por medio de la siguiente sintaxis:
<tipo[ , ] < identificador ;


Creación.

La creación de un arreglo bidimensional consiste en reservar espacio en la memoria para todos sus elementos, utilizando la siguiente sintaxis:
< identificador > = new <tipo> [ dim1, dim2 ] ;

Inicialización.

Un arreglo es un objeto que,cuando es creado por el compilador, se le asignan automáticamente valores iniciales predeterminados a cada uno de sus elementos, de acuerdo a los siguientes criterios:
  • Si el tipo del arreglo es numérico, a sus elementos se les asigna el valor cero.
  • Si el tipo del arreglo es char, a sus elementos se les asigna el valor '\u0000'.
  • Si el tipo del arreglo es bool, a sus elementos se les asigna el valor false.
  • Si el tipo del arreglo es una clase, a sus elementos se les asigna el valor null.



Acceso.

Se puede acceder a los valores de los elementos de un arreglo bidimensional a través del nombre del arreglo y dos subíndices. Los subíndices deben escribirse entre corchetes y representa la posición del elemento en el arreglo. Así, podemos referirnos a un elemento del arreglo escribiendo el nombre del arreglo y los subíndices del elemento entre corchetes. Los valores de los subíndices empiezan en cero para el primer elemento, hasta el tamaño del arreglo menos uno.




DIFERENCIA ENTRE REGISTROS Y ARREGLOS


DECLARACIÓN DE UN REGISTRO
            El siguiente es el formato para declarar un registro:







 En donde:
nombreX: es un identificador valido
campo 1, campo 2, campo n: son los nombres de cada uno de los campos que componen al registro
tipo_dato: representa alguno de los tipos de datos de pascal.
nombreVariableRegistro: representa la variable de tipo registro, es decir, esta es la que se utilizara en el programa para manipular la estructura


ARREGLOS DE REGISTROS
            Los registros se utilizan raramente por sí mismos. En general se agrupan en conjuntos conocidos como arrays de registros. Por ejemplo, se dispone de un registro que contiene los datos relativos a un artículo de un stock de almacén.






Matrices


En matemáticas, una matriz es un arreglo bidimensional de números, y en su mayor generalidad de elementos de un anillo. Las matrices se usan generalmente para describir sistemas de ecuaciones lineales, sistemas de ecuaciones diferenciales o representar una aplicación lineal (dada una base). Las matrices se describen en el campo de la teoría de matrices.

Las matrices se utilizan para múltiples aplicaciones y sirven, en particular, para representar los coeficientes de los sistemas de ecuaciones lineales o para representar las aplicaciones lineales; en este último caso las matrices desempeñan el mismo papel que los datos de un vector para las aplicaciones lineales.




Algunos tipos de matrices

Vamos a describir algunos tipos de matrices que aparecen con frecuencia debido a su utilidad, y de los que es conveniente recordar su nombre.

Atendiendo a la forma

Matriz fila: Es una matriz que solo tiene una fila, es decir m =1 y por tanto es de orden 1´n.

Ejemplo 

Matriz columna: Es una matriz que solo tiene una columna, es decir, n =1 y por tanto es de orden m ´1.

Matriz cuadrada: Es aquella que tiene el mismo número de filas que de columnas, es decir m = n. En estos casos se dice que la matriz cuadrada es de orden n, y no n ´ n.

Los elementos aij con i = j, o sea aii forman la llamada diagonal principal de la matriz cuadrada, y los elementos aij con i + j = n +1 la diagonal secundaria.


Matriz traspuesta: Dada una matriz A, se llama traspuesta de A, y se representa por At, a la matriz que se obtiene cambiando filas por columnas. La primera fila de A es la primera fila de At , la segunda fila de A es la segunda columna de At, etc.
De la definición se deduce que si A es de orden m ´ n, entonces At es de orden n ´ m.     



Matriz simétrica: Una matriz cuadrada A es simétrica si A = At, es decir, si aij = aji " i, j.



Matriz antisimétrica: Una matriz cuadrada es antisimétrica si A = –At, es decir, si aij = –aji " i, j.




Ejemplo

A = 
\begin{pmatrix}
  {0} & {-2} & {4}\\
  {2} & {0} & {2}\\
  {-4} & {-2}&{0}\\
\end{pmatrix} = > -A =
\begin{pmatrix}
  {0} & {2} & {-4}\\
  {-2} & {0} & {-2}\\
  {4} & {2}&{0}\\
\end{pmatrix}


matriz triangular


Matrices triangulares
Objetivos. De nir matrices triangulares superiores y triangulares inferiores, y estudiar
algunas de sus propiedades b asicas.
Requisitos. Operaciones con matrices.

1. Descripci on formal de los elementos en la diagonal principal, fuera de la
diagonal principal, por arriba y por abajo de la diagonal principal. Sea A una
matriz cuadrada, A 2 Mn(F). Los elementos Ai;i forman la diagonal principal de A (en
otras palabras, son elementos diagonales de A).
>Cu ando Ai;j est a en la diagonal principal de A? (Respuesta: cuando i = j.)
>Cu ando Ai;j est a fuera de la diagonal principal de A?
>Cu ando Ai;j est a por arriba de la diagonal principal de A?
>Cu ando Ai;j est a por debajo de la diagonal principal de A?

Matrices triangulares superiores

2. De nici on (matriz triangular superior).

 Una matriz cuadrada A 2 Mn(F) es
triangular superior si todos sus elementos por debajo de la diagonal principal son iguales
a cero:
8i; j 2 f1; : : : ; ng i > j =) Ai;j = 0:
El conjunto de todas las matrices triangulares cuadradas de tama~no n se denota por
utn(F). En otras palabras,
utn(F) = fA 2Mn(F) : 8i; j 2 f1; : : : ; ng i > j =) Ai;j = 0g:

Notemos que en una matriz triangular superior algunos (hasta todos) de los elementos
por encima de la diagonal principal o en la diagonal principal pueden ser iguales a cero.
Por ejemplo, la matriz nula 0n;n es triangular superior. La condici on que de ne matrices
triangulares superiores
s olo nos dice que todos los elementos por debajo de la diagonal
principal deben cero iguales a cero.








semana19-09-12 al 18-10-12


PILAS Y COLAS


PILAS
Una coleccion de datos a los cuales se les puede acceder mediante un extremo, que se conoce generalmente como tope.
Una pila representa una estructura lineal de datos en que se puede agregar o quitar elementos únicamente por uno de los dos extremos. En consecuencia, los elementos de una pila se eliminan en el orden inverso al que se insertaron. Debido a está característica, se le conoce como estructura LIFO (last input, first output).




Existen muchos casos prácticos en los que se utiliza la idea de pila:

Ejemplo; pila de platos, en el supermercado latas.
Las pilas con estructuras lineales como los arreglos, ya que sus componentes ocupan lugares sucesivos en la ED y c/u tienen un único sucesor/predecesor, con excepción del primero/último.
  
Representación de pilas

Al utilizar arreglos para implementar pilas se tiene la limitación de que se debe reservar el espacio en memoria con anticipación. Una vez dado un máximo de capacidad a la pila no es posible insertar un número de elementos mayor que el máximo establecido. Si esto ocurre, en otras palabras si la pila esta llena y se intenta insertar un nuevo elemento, se producirá un error conocido como desbordamiento –overflow.

·    OC/SG utilizan arreglos. Es importante definir el tamaño de la máximo de la pila, así como una variable auxiliar que se denomina TOPE. Está variable se utiliza para indicar el último elemento que se insertó en la pila.


Las pilas no son estructuras fundamentales de datos; es decir no están definidas como tales en los lenguajes de programación. Para su representación requieren de otras EDs, como:
Arreglos
Listas




Aplicaciones de pilas

Las pilas son un EDs muy usadas en la solución de diversos tipos de problemas, en el área de computación. Algunos de los casos más representativos de aplicación de las mismas son:
Llamadas a subprogramas
Recursividad
Tratamiento de expresiones aritméticas
Ordenación

Llamadas a subprogramas

Cuando se tiene un programa que llama a un subprograma, también conocido como módulo o función, internamente se usan pilas para guardar el estado de las variables del programa, así como instrucciones pendientes de ejecución en el momento que se hace la llamada.
Cuando termina la ejecución del subprograma, los valores almacenados en la pila se recuperan para continuar con la ejecución del programa en el punto en el cual fue interrumpido.
Además de las variables se recupera la dirección del programa en la que se hizo la llamada, por que a esa posición se regresa el control del proceso.



Tratamiento de expresiones aritméticas

Para convertir una expresión dada en notación infija a una en notación posfija o prefija se establecen ciertas condiciones:
Los operadores de más alta prioridad se ejecutan primero
Si hubiera en una expresión dos o más operadores de igual prioridad, entonces se procesarán de izquierda a derecha.
Las sobrexpresiones que se encuentren ente paréntesis tendrán más prioridad que cualquier operador

Ejemplos
Expresión infija: X + Z * W
Expresión posfija XZW*+
Expresión infija: X + Z * W
Expresión posfija XZW*+




COLAS FIFO


Son aquellas que solo tiene 2 operaciones, Push(Inserción) y Pop(Eliminación). 





Push solo se puede efectuar por un extremo llamado Frente y Pop por el extremo Llamado Final. Sin Embargo se le pueden aplicar todas las operación al igual que a las listas.
Ya que las colas son FIFO(First in - First Out) el Recorrido se hace sacando el primer dato que se inserto hasta que llegue al extremo llamado Final.




Características

A lo largo del tiempo se producen llegadas de clientes a la cola de un sistema desde una determinada fuente demandando un servicio. Los servidores del sistema seleccionan miembros de la cola según una regla predefinida denominada disciplina de la cola. Cuando un cliente seleccionado termina de recibir su servicio (tras un tiempo de servicio) abandona el sistema, pudiendo o no unirse de nuevo a la fuente de llegadas.

Disciplina de colas

En sistemas monocanal, el servidor suele seleccionar al cliente de acuerdo con uno de los siguientes criterios (prioridades): 




el que llegó antes (disciplina FIFO),
el que llegó el último (LIFO),
el que menos tiempo de servicio requiere,
el que más requiere...

Aplicaciones de las colas

El concepto de cola está ligado a computación.
Impresión.
Otro en sistemas de tiempo compartido (memoria)

La clase Cola

La clase cola tiene atributos y métodos, como cualquier clase.

Se tiene acceso a los miembros de un objeto de la clase cola por medio de la notación de puntos. (COOBJ)

COOBJ.Cola_llena
COOBJ.Cola_inserta (argumento)







http://www.um.es/or/ampliacion/node3.html
http://www.programacionfacil.com/estructura_de_datos:colas






La declaración del registro anidado Empleados es la siguiente:

 



semana19-09-12 al 18-10-12

PILAS Y COLAS


PILAS
Una coleccion de datos a los cuales se les puede acceder mediante un extremo, que se conoce generalmente como tope.
Una pila representa una estructura lineal de datos en que se puede agregar o quitar elementos únicamente por uno de los dos extremos. En consecuencia, los elementos de una pila se eliminan en el orden inverso al que se insertaron. Debido a está característica, se le conoce como estructura LIFO (last input, first output).



Existen muchos casos prácticos en los que se utiliza la idea de pila:

Ejemplo; pila de platos, en el supermercado latas.
Las pilas con estructuras lineales como los arreglos, ya que sus componentes ocupan lugares sucesivos en la ED y c/u tienen un único sucesor/predecesor, con excepción del primero/último.
  
Representación de pilas

Al utilizar arreglos para implementar pilas se tiene la limitación de que se debe reservar el espacio en memoria con anticipación. Una vez dado un máximo de capacidad a la pila no es posible insertar un número de elementos mayor que el máximo establecido. Si esto ocurre, en otras palabras si la pila esta llena y se intenta insertar un nuevo elemento, se producirá un error conocido como desbordamiento –overflow.

·    OC/SG utilizan arreglos. Es importante definir el tamaño de la máximo de la pila, así como una variable auxiliar que se denomina TOPE. Está variable se utiliza para indicar el último elemento que se insertó en la pila.


Las pilas no son estructuras fundamentales de datos; es decir no están definidas como tales en los lenguajes de programación. Para su representación requieren de otras EDs, como:
Arreglos
Listas



Aplicaciones de pilas

Las pilas son un EDs muy usadas en la solución de diversos tipos de problemas, en el área de computación. Algunos de los casos más representativos de aplicación de las mismas son:
Llamadas a subprogramas
Recursividad
Tratamiento de expresiones aritméticas
Ordenación

Llamadas a subprogramas


Cuando se tiene un programa que llama a un subprograma, también conocido como módulo o función, internamente se usan pilas para guardar el estado de las variables del programa, así como instrucciones pendientes de ejecución en el momento que se hace la llamada.
Cuando termina la ejecución del subprograma, los valores almacenados en la pila se recuperan para continuar con la ejecución del programa en el punto en el cual fue interrumpido.
Además de las variables se recupera la dirección del programa en la que se hizo la llamada, por que a esa posición se regresa el control del proceso.



Tratamiento de expresiones aritméticas


Para convertir una expresión dada en notación infija a una en notación posfija o prefija se establecen ciertas condiciones:
Los operadores de más alta prioridad se ejecutan primero
Si hubiera en una expresión dos o más operadores de igual prioridad, entonces se procesarán de izquierda a derecha.
Las sobrexpresiones que se encuentren ente paréntesis tendrán más prioridad que cualquier operador

Ejemplos
Expresión infija: X + Z * W
Expresión posfija XZW*+
Expresión infija: X + Z * W
Expresión posfija XZW*+






COLAS FIFO


 

Son aquellas que solo tiene 2 operaciones, Push(Inserción) y Pop(Eliminación). 








Push solo se puede efectuar por un extremo llamado Frente y Pop por el extremo Llamado Final. Sin Embargo se le pueden aplicar todas las operación al igual que a las listas.

Ya que las colas son FIFO(First in - First Out) el Recorrido se hace sacando el primer dato que se inserto hasta que llegue al extremo llamado Final.













Características

A lo largo del tiempo se producen llegadas de clientes a la cola de un sistema desde una determinada fuente demandando un servicio. Los servidores del sistema seleccionan miembros de la cola según una regla predefinida denominada disciplina de la cola. Cuando un cliente seleccionado termina de recibir su servicio (tras un tiempo de servicio) abandona el sistema, pudiendo o no unirse de nuevo a la fuente de llegadas.


Disciplina de colas

En sistemas monocanal, el servidor suele seleccionar al cliente de acuerdo con uno de los siguientes criterios (prioridades): 



 

  • el que llegó antes (disciplina FIFO),
  • el que llegó el último (LIFO),
  • el que menos tiempo de servicio requiere,
  • el que más requiere...

Aplicaciones de las colas

 

El concepto de cola está ligado a computación.
Impresión.
Otro en sistemas de tiempo compartido (memoria)

La clase Cola


La clase cola tiene atributos y métodos, como cualquier clase.

Se tiene acceso a los miembros de un objeto de la clase cola por medio de la notación de puntos. (COOBJ)

COOBJ.Cola_llena






COOBJ.Cola_inserta (argumento)








http://www.programacionfacil.com/estructura_de_datos:colas




BICOLAS O DOBLE COLA




Una bicola es una lista lineal en la que los elementos se pueden añadir o quitar por cualquier extremo pero no por la mitad. El término bicola hace referencia a que se puede ver corno una cola bidireccional.

Hay varias formas de representar una bicola en una computadora. A menos que se indique lo contrario, asumiremos que nuestras bicolas se mantienen en un array circular BICOLA con punteros IZQ y DER. que apuntará a los dos extremos de la bicola. Asumimos que los elementos se encuentran entre el extremo izquierdo y el extremo derecho. El término «circular» viene del hecho de que asumimos que BICOLA[1] va detrás de BICOLA[N] en el array. La Figura muestra dos bicolas, cada una con cuatro elementos contenidos en un array de N = 8 posiciones de memoria. La condición IZQ= 0 se usará para indicar que la bicola esta vacía.

Existen dos variaciones de bicolas -denominadas bicola de entrada restringida y bicola de salida restringida- que son estructuras intermedias entre las colas y las bicolas. Específicamente, una bicola de entrada restringida es una bicola que sólo permite inserciones por uno de los dos extremos de la lista, pero que permite que las eliminaciones se realicen en cualquier extremo de la lista y una bicola de salida restrinqida es una bicola que sólo permite la eliminación de elementos por uno de los dos extremos pero permite que se inserten por cualquiera de los dos.

Al igual que con las colas, hay que considerar si (a) hay desbordamiento, o sea, si se va a insertar un elemento en una bicola que ya está llena o si (b) hay subdesbordamiento, o sea, si se intenta eliminar un elemento de una bicola que está vacía. Los procedimientos de inserción y eliminación deben considerar estos casos.








Bicolas de entrada restringida: Son aquellas donde la inserción sólo se hace por el final, aunque podemos eliminar al inicio ó al final.






Bicolas de salida restringida: Son aquellas donde sólo se elimina por el final, aunque se puede insertar al inicio y al final.











No hay comentarios:

Publicar un comentario