lunes, 23 de noviembre de 2009

2.3.4. CLASES DE IMPLEMENTACION DE COLAS

Sin embargo, su manifestacion programatica de los objetos, en los lenguajes modernos de programacion, son las llamadas clases, es decir una clase es la representacion simbolica y computacional de toda una serie de objetos con caracteristicas comunes entre si, por eso existe la clase gatos, empleados, arboles, listas, reportes, vectores, etc, es decir pueden existir tantas clases como objetos existen en el universo y cada clase contiene todos los objetos con caraceristicas comunes entre si, o de la misma categoria o clasificaacion, un ejemplo de una clase en un lenguaje de programacion es:
Class gatos{
public:
int edadgato;
AnsiString nombregato;
maullar();
capturardatosgato();
}gatonegro, garfield, gatotijuanense;
gatos::maullar(){ cin»“miauuuu”;}
gatos::capturardatos(){ cin»“dame edad”; cout«edad; }
Como se observa, comprender, localizar y programar todas las carecteristicas o atributos de una sola clase, es una tarea bastante grande, mientras que los comportamientos ( metodos en oop) es todavia mas laborioso y complejo y si agregamos la interaccion natural existente entre objetos ( los llamados eventos en oop), garantiza que existiran la necesidad de ingenieros de software por mucho tiempo en el futuro.

2.3.4 COLAS CON OPERACIONES

La definición de la estructura de datos tipo cola queda completa al incluir las operaciones que se pueden realizar en ella. Las operaciones básicas que pueden efectuarse son:
Insertar un elemento en la cola
Eliminar un elemento de la cola
Las inserciones se llevaran a cabo por el FINAL de la cola, mientras que las eliminaciones se harán por el FRENTE —recuerde que el primero en entrar es el primero en salir.

2.3.2 TIPOS DE COLAS

COLAS SIMPLES
COLAS CIRCULARES
COLAS DOBLES

2.3 COLAS DEFINICION

Una cola es una estructura de datos, caracterizada por ser una secuencia de elementos en la que la operación de inserción push se realiza por un extremo y la operación de extracción pop por el otro. También se le llama estructura FIFO (del inglés First In First Out), debido a que el primer elemento en entrar será también el primero en salir.
El tipo cola representa la idea que tenemos de cola en la vida real. La cola para subir al autobús está compuesta de elementos (personas), que dispone de dos extremos comienzo y fin. Por el comienzo se extraerá un elemento cuando haya comprado el billete para su viaje, y si llega una nueva persona con intención de usar el autobús, tendrá que colocarse al final y esperar que todos los elementos situados antes que él abandonen la cola.

2.2.3 CLASES DE IMPLEMENTACION DE PILAS

Ejemplo completo sobre la implementación de pilas manejando Visual Studio .net 2003
//----LIO
include “stdafx.h”
using
using namespace System;
using namespace System::Collections;
public __gc class Ejemplo Stack?{
public:
static void Imprime(I Enumerable? __gc *Mi Coleccion?)
{
System::Collections::I Enumerator? __gc *Mi Enumerador?
= Mi Coleccion→Get Enumerator?();
while (Mi Enumerador→Move Next?())

2.2.2 OPERACIONES CON PILAS

Una Pila se compone de los siguientes elementos:
arreglo de datos
El numero maximo
El numero minimo
El tipo de datos de la pila
los indices Tope y Base de la Pila
Operaciones Elementales
Iniciar
Insertar
Eliminar
Axiomas
Insertar:
Si Tope = Maximo
Mensaje( O Verflow)
de lo Contrario
Tope = Tope +1
Pila Tope = Valor
//Codigo Fuente PILAS
include
include
include

2.2 PILAS DEFINICION

Definicion
Las pilas son otro tipo de estructura de datos lineales, las cuales presentan restricciones en cuanto a la posición en la cual pueden realizarse las inserciones y las extracciones de elementos.
Una pila es una lista de elementos en la que se pueden insertar y eliminar elementos sólo por uno de los extremos. Como consecuencia, los elementos de una pila serán eliminados en orden inverso al que se insertaron. Es decir, el último elemento que se metió a la pila será el primero en salir de ella.

2.1.6 CLASES DE IMPLEMENTACION DE ARREGLOS

Ejemplo completo sobre la implementación de pilas manejando Visual Studio .net 2003
//----LIO
include “stdafx.h”
using
using namespace System;
using namespace System::Collections;
public __gc class Ejemplo Stack?{
public:
static void Imprime(I Enumerable? __gc *Mi Coleccion?)
{
System::Collections::I Enumerator? __gc *Mi Enumerador?
= Mi Coleccion→Get Enumerator?();
while (Mi Enumerador→Move Next?())
Console::Write(S”\t{0}”, Mi Enumerador→Current);
Console::Write Line?();
}
};
int main() {
Stack __gc *Mi Pila? = new Stack();
Mi Pila→Push(S”Hola”);
Mi Pila→Push(S”Mundo”);
Mi Pila→Push(S”!”);
// Despliega las propiedades y valores de los pila.
Console::Write Line(S”Mi Pila”);
Console::Write Line(S”\tCount: {0}”,
__box(Mi Pila→Count));

2.1.5 RESOLUCION DE PROBLEMAS CON ARREGLOS

Si el arreglo en el cual estamos trabajando tiene un índice numerativo utilizaremos las siguientes fórmulas:
RANGO = ord (ls) - (ord (li)+1)
A[i] = base (A) + [ord (i) - ord (li) * w]
1.3 Arreglos Bidimensionales
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 : 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) + [((i - li1) R2 + (j + li2))*w]

2.1.4 ARREGLOS MULTIDIMENSIONALES

En Java a diffrencia de otros lenguajes, los arreglos multidimensionales son tratados como arreglos de arreglos. Esto implica que la creación e inicialización de arreglos de más de una dimensión, necesariamente deberá incluir llamados new para cada una de las dimensiones del arreglo, en la mayoría de los casos

2.1.3 ARREGLOS BIDIMENSIONALES

Aplicaciones Arreglos Bidimensionales LA APLICACION DE LOS ARREGLOS BIDIMENSIONALES SON DE GRAN UTILIDAD PARA PODER TRABAJAR CON MATRICES Y VECTORES UN EJEMPLO MUY CLARO DE ESTO ES:
int matriz[3][3];
for(f=0;f<3;f++)
{
suma=0;
for(c=0;c<3;c++)
{
suma=suma+matriz[c][f];
}
vectf[f]=suma;
}

2.1.2 ARREGLOS UNIDIMENDIONALES

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.

2.1 ARREGLOS DEFINICON

Arreglo: Es un acomodo de espacios (Como en una matriz) en los cuales es una colección de un tipo de dato, y pueden ser unidimensionales, bidimesionales o multidimensionales
Es un conjunto finito y ordenado de elementos homogéneos (del mismo tipo de datos). Es un tipo de dato estructurado simple o estático y pueden ser vectores o tablas (matrices).

UNIDAD 2 : ESTRUCTURAS LINEALES

Arreglo: Es un acomodo de espacios (Como en una matriz) en los cuales es una colección de un tipo de dato, y pueden ser unidimensionales, bidimesionales o multidimensionales
Es un conjunto finito y ordenado de elementos homogéneos (del mismo tipo de datos). Es un tipo de dato estructurado simple o estático y pueden ser vectores o tablas (matrices).
En lenguaje C, se pueden definir conjuntos de datos conocidos como arreglos. Por ejemplo, si deseáramos guardar en un arreglo, diez valores enteros, debemos definir este arreglo de la siguiente manera: int elem[10]; Esta expresión es la declaración del arreglo. Donde int es el tipo de datos que almacena el arreglo, elem es el nombre del arreglo, y el número encerrado en los corchetes es el número de valores que contiene el arreglo. Cabe hacer notar que, el índice para el primer elemento es 0 y, el valor máximo del índice es igual a n-1 elementos del arreglo. En nuestro caso, el último elemento del arreglo elem será elem[9]. El programador deberá tener cuidado de no indicar elementos inexistentes en el arreglo, es decir, elementos cuyos índices son números con signo menores a 0 o elementos con índices mayores a los n-1 elementos del arreglo. De no-tener cuidado, el compilador de C no marcará error alguno, pero se produce un error en tiempo de ejecución.
Un arreglo se puede entender mejor representándolo como en la figura 2.1
Figura 2.1. Representación de un arreglo lineal.
Un punto importante es que, el nombre del arreglo es, por si mismo, un apuntador a la localidad de memoria que ocupa el primer elemento, es decir, el nombre del arreglo es una variable que contiene la dirección del primer elemento. Esto se puede expresar como sigue:
elem = &elem[0]
A continuación se presenta un programa que emplea arreglos para mostrar una serie de números y la palabra “hola”.
int main(void)
{
int y; int numeros[4] = {2, 4, 6, 8}; char palabra[ ] = {’h’, ‘o’, ‘l’, ‘a’,’\0′}; for (y=0; y<4; y++)
printf (“números [%d] = %d\n”, y, números[y] ); printf(“\n”); for (y=0; y<4; y++)
printf (“%c”, palabra[y] ); return (0); } ¿ Cuál es el resultado de la ejecución del programa anterior? En el ejemplo, la forma de inicialización del arreglo números solo es soportada por el estándar ANSI.