Vous êtes sur la page 1sur 9

Las estructuras de datos son una coleccin de datos cuya organizacin se caracteriza por las funciones de acceso que

se usan para almacenar y acceder a elementos individuales de datos. Una estructura de datos se caracteriza por lo siguiente: -Pueden descomponerse en los elementos que la forman. -La manera en que se colocan los elementos dentro de la estructura afectar la forma en que se realicen los accesos a cada elemento. -La colocacin de los elementos y la manera en que se accede a ellos puede ser encapsulada.
En programacin, una estructura de datos es una forma manera de organizar un grupo de datos desde su mnima expresin, los datos pueden organizarse de diferentes maneras, sin en cambio existe una forma elemental, con la cual se regir un patrn de buen orden, las operaciones bsicas son:

Altas Bajas Bsqueda Ordenamiento Mezcla

1.1 Descripcin de la terminologa dato


Dato: Unidad mnima de informacin, que por si misma no tiene sentido para quien la posee; sin embargo adquiere mayor relevancia cuando conforma un conjunto coherente para el que la interpreta. Estructura de dato: Una estructura de datos es una forma de organizar un conjunto de datos elementales con el objetivo de facilitar su manipulacin Registro: es un tipo de dato estructurado formado por la unin de varios elementos bajo una misma estructura. Estos elementos pueden ser, o bien datos elementales (entero, real, carcter,...), o bien otras estructuras de datos. A cada uno de esos elementos se le llama campo. Grupo de elementos: Conjunto de elementos tanto materiales como no visibles enfocados a un mismo objetivo tema. Entidad: Una entidad es cualquier "objeto" discreto sobre el que se tiene informacin Atributos: Conjunto de caractersticas propias de los productos y servicios.

Rango de valores: Dimensin de datos que nos servirn para tener una delimitacin del inicio y del fin en cuestin de valores cuales sea. Campo: El trmino campo puede referirse a: *En relacin con un tema particular, campo es un subconjunto de tpicos que forman parte del mismo Clave primaria o llave: se llama clave primaria a un campo o a una combinacin de campos que identifica de forma nica un conjunto de datos Arreglo: Un arreglo es un conjunto de variables del mismo tipo que pueden ser referenciadas a travs de un mismo nombre. La forma de identificar a un elemento determinado es a travs de un ndice. Listas: una lista enlazada es una de las estructuras de datos fundamentales, y puede ser usada para implementar otras estructuras de datos. Consiste en una secuencia de nodos, en los que se guardan campos de datos arbitrarios y una o dos referencias (punteros) al nodo anterior y/o posterior. Colas: Es una estructura lineal de datos. Una cola es un grupo ordenado de elementos homogneos en el que los nuevos elementos se aaden por un extremo (el final) y se quitan por el otro extremo (el frente). En las colas el elemento que entr primero sale tambin primero, por ello se las llama como listas FIFO (first in, first out) "primero en entrar, primero en salir". Pilas: Una pila (stack en ingls) es una estructura de datos de tipo LIFO (del ingls Last In First Out, ltimo en entrar, primero en salir) que permite almacenar y recuperar datos. Se aplica en multitud de ocasiones en informtica debido a su simplicidad y ordenacin implcita en la propia estructura. Arboles: un rbol es una estructura de datos ampliamente usada que emula la forma de un rbol (un conjunto de nodos conectados).

1.2 Especificaciones de datos elementales


Un dato objeto elemental contiene un valor simple. Declaraciones: Una declaracin es una instruccin en un programa que sirve para comunicarse con la informacin del traductor del lenguaje a cerca del nmero y tipo de los datos objeto que se necesitan durante la ejecucin de un programa: Datos numricos:

Algunas formas de datos numricos se encuentran en casi todos los lenguajes de programacin, pero los detalles de la especificacin e implementacin de tales tipos varia mucho, los tipos de nmeros enteros y reales son ms comunes, porque estn directamente soportados en el hardware de la computadora. Las diferentes clases de datos numricos son:

Enteros. Un dato objeto de tipo entero no tiene otros atributos adems de su tipo. La serie de valores enteros definidos por el tipo forman un subconjunto ordenado, dentro de los lmites finitos del conjunto infinito de enteros. Reales de punto flotante. Un tipo de datos de nmeros reales de punto flotante se especifica con el simple atributo del tipo de dato REAL. En forma alternativa, debe especificar el programador la precisin requerida en los nmeros de punto flotante, en trminos del nmero de dgitos utilizados en la representacin decimal, como en Ada y en PL/I. Nmeros reales de punto fijo. Un nmero de punto fijo se representa como una secuencia de dgitos de longitud fija, con el punto decimal posicionado en un punto entre dos dgitos. Numero complejos. Un nmero complejo consta de un par de nmeros reales, que representan las partes reales e imaginarias de un nmero. Un tipo de dato de nmeros complejos puede ser proporcionado con facilidad, representando cada dato objeto como un bloque de dos locaciones de almacenamiento que contienen un par de valores reales. Nmeros racionales. Un nmero racional es el cociente de dos enteros. La razn usual para incluir un tipo de dato de nmeros racional en un lenguaje es evitar los problemas de redondeo y truncamiento que se encuentran en las representaciones de reales de punto fijo y punto flotante. Como resultado, se desea representar nmeros racionales como pares de enteros de longitud ilimitada.

Es comn en programacin tener una variable que puede tomar solo uno de un nmero pequeo de valores. Muchos lenguajes recientes como Pascal, Ada o C, incluye un tipo de datos de enumeracin que permite al programador definir y manipular esas variables en forma ms directa. Un tipo de dato Booleano o lgico es comn en la mayora de los lenguajes. El tipo de dato booleano consiste en objetos de datos que tienen uno de los dos valores falso o verdadero. En pascal y en Ada, el tipo de dato booleano se considera simplemente una enumeracin definida por el lenguaje.

Registro: Un registro, en programacin, es un tipo de dato estructurado formado por la unin de varios elementos bajo una misma estructura. Estos elementos pueden ser, o bien datos elementales (entero, real, carcter,...), o bien otras estructuras de datos. A cada uno de esos elementos se le llama campo. Un registro se diferencia de un vector en que ste es una coleccin de datos iguales, es decir, todos del mismo tipo, mientras que en una estructura los elementos que la componen, aunque podran serlo, no tiene porque ser del mismo tipo. typedef struct TipoNodo { int dato; struct TipoNodo *sig; struct TipoNodo *ant; } TNodo;

Listas:
En Ciencias de la Computacin, una lista enlazada es una de las estructuras de datos fundamentales, y puede ser usada para implementar otras estructuras de datos. Consiste en una secuencia de nodos, en los que se guardan campos de datos arbitrarios y una o dos referencias (punteros) al nodo anterior y/o posterior. El principal beneficio de las listas enlazadas respecto a los array convencionales es que el orden de los elementos enlazados puede ser diferente al orden de almacenamiento en la memoria o el disco, permitiendo que el orden de recorrido de la lista sea diferente al de almacenamiento.

Pilas:

Una pila (stack en ingls) es una estructura de datos de tipo LIFO (del ingls Last In First Out, ltimo en entrar, primero en salir) que permite almacenar y recuperar datos. Se aplica en multitud de ocasiones en informtica debido a su simplicidad y ordenacin implcita en la propia estructura.

Para el manejo de los datos se cuenta con dos operaciones bsicas: apilar (push), que coloca un objeto en la pila, y su operacin inversa, retirar (o desapilar, pop), que retira el ltimo elemento apilado.
Colas:

Una cola es una estructura de datos, caracterizada por ser una secuencia de elementos en la que la operacin de insercin push se realiza por un extremo y la operacin de extraccin pop por el otro. Tambin se le llama estructura FIFO (del ingls First In First Out), debido a que el primer elemento en entrar ser tambin el primero en salir. rboles: En ciencias de la informtica, un rbol es una estructura de datos ampliamente usada que emula la forma de un rbol (un conjunto de nodos conectados). Un nodo es la unidad sobre la que se construye el rbol y puede tener cero o ms nodos hijos conectados a l. Se dice que un nodo a es padre de un nodo b si existe un enlace desde a hasta b (en ese caso, tambin decimos que b es hijo de a). Slo puede haber un nico nodo sin padres, que llamaremos raz. Un nodo que no tiene hijos se conoce como hoja. Los dems nodos (tienen padre y uno o varios hijos) se les conoce como rama.
Algoritmo: El termino algoritmo se utiliza en informtica para describir un mtodo de resolucin de un problema que es adecuado para su implementacin como programa de computadora. Los algoritmos son la <<esencia>> de la informtica 1 Diagrama de flujo: Un diagrama de flujo es la forma ms tradicional de especificar los detalles algortmicos de un proceso. Estos diagramas utilizan una serie de smbolos con significados especiales. Son la representacin grfica de los pasos de un proceso, que se realiza para entenderlo mejor2

Notacin en Pseudocdigo
Pseudocdigo: Representacin de un algoritmo en lenguaje natural a travs de las estructuras de control3 Por tanto, el pseudocdigo: Es fcilmente comprensible para una persona que lo vea por vez primera. Est bien delimitado. Elimina las ambigedades del lenguaje natural. Se representa de una forma compacta.

Definicin~~~Algoritmos en C++, Robert Sedgewick, PEARSON, Mxico D.F. 2000 Definicin~~ http://es.wikipedia.org/wiki/Diagrama_de_flujo 3 Definicin~~~Algoritmos en C++, Robert Sedgewick, PEARSON, Mxico D.F. 2000
2

1.3.3 Estructuras de control y recursividad


Las estructuras de control de un lenguaje de programacin se refieren al orden en que las instrucciones de un algoritmo se ejecutarn. El orden de ejecucin de las sentencias o instrucciones determina el flujo de control. Estas estructuras de control son por consiguiente fundamentales en los lenguajes de programacin y en los diseos de algoritmos especialmente los pseudocdigos. Las tres estructuras de control bsico son:

secuencia seleccin repeticin

Un programa se define como propio si cumple lo siguiente:


Posee un solo punto de entrada y salida o fin para control del programa. Existen caminos desde la entrada hasta la salida que se pueden seguir y que pasan por todas las partes del programa. Todas las instrucciones son ejecutadas y no existen lazos o bucles infinitos.

En sntesis la programacin estructurada significa:


El programa completo tiene un diseo modular Los mdulos se disean con metodologa descendente (mtodo top-down) Cada mdulo se codifica utilizando las 3 estructuras de control bsicas: secuenciales, selectivas, repetitivas. Estructuracin y modularidad son complementarios mas no iguales

Recursividad:

La recursividad es una tcnica de programacin importante. Se utiliza para realizar una llamada a una funcin desde la misma funcin. Como ejemplo til se puede presentar el clculo de nmeros factoriales. l factorial de 0 es, por definicin, 1. Los factoriales de nmeros mayores se calculan mediante la multiplicacin de 1 * 2 *..., incrementando el nmero de 1 en 1 hasta llegar al nmero para el que se est calculando el factorial.

1.4 Arreglos unidimensionales


Un arreglo unidimensional es un tipo de datos estructurado que est formado de una coleccin 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 posicin relativa. Para implementar arreglos unidimensionales se debe reservar espacio en memoria, y se debe proporcionar la direccin base del arreglo, la cota superior y la inferior.

1.4.1 Acceso a las diferentes localidades de un arreglo de caracteres unidimensionales.


Los arreglos son una coleccin de variables del mismo tipo que se referencian utilizando un nombre comn. Un arreglo consta de posiciones de memoria contigua. La direccin ms baja corresponde al primer elemento y la ms alta al ltimo. Un arreglo puede tener una o varias dimensiones. Para acceder a un elemento en particular de un arreglo se usa un ndice. El formato para declarar un arreglo unidimensional es: tipo nombre_arr [ tamao ] Por ejemplo, para declarar un arreglo de enteros llamado listanum con diez elementos se hace de la siguiente forma: int listanum[10];

1.5 Matrices
Una matriz (array vector) es una zona de almacenamiento contiguo, que contiene una serie de elementos del mismo tipo. Sintaxis:

tipo variable_matriz[N][M];

Donde N y M son el nmero de filas y de columnas respectivamente (la dimensin de la matriz). Se ha escrito la dimensin con letras maysculas, ya que deben ser constantes, y al igual que con vectores se suelen definir con constantes. Ejemplo:
#define N 4 //nmero de filas de las matrices que voy a declarar #define M 5 //nmero de columnas de las matrices que voy a declarar main(){ double matriz1[N][M], matriz2[N][M]; int matriz_entera[N][M]; ...}

Al igual que con vectores, las matrices se numeran empezando por el ndice 0, con lo cual el elemento superior izquierdo es el [0][0] y el inferior derecho es el [N-1][M1]. En la siguiente tabla se muestra cual sera la forma y los elementos de una matriz a[4][5], de tamao 45. Vase que el primer elemento del array bidimensional es el a[0][0], el siguiente sera el a[0][1], y as, hasta llegar al elemento a[3][4].

1.6 Registros
Es un tipo de dato estructurado formado por la unin de varios elementos bajo una misma estructura. Estos elementos pueden ser, o bien datos elementales (entero, real, carcter,...), o bien otras estructuras de datos. A cada uno de esos elementos se le llama campo. Un registro se diferencia de un vector en que ste es una coleccin de datos iguales, es decir, todos del mismo tipo, mientras que en una estructura los elementos que la componen, aunque podran serlo, no tiene porque ser del mismo tipo. Sintaxis:
typedef struct TipoNodo { int dato; struct TipoNodo *sig; struct TipoNodo *ant;

PSEUDOCODIGO
Ejemplo: Realizar el pseudocdigo de un programa que permita saber si un nmero es mayor, menor o igual a cero. Programa: ComparaNmeros Entorno: NUMERO es un nmero entero Algoritmo: Escribir Introduzca un nmero leer NUMERO SI NUMERO>0 ENTONCES escribir El nmero introducido es positivo SI NO SI NUMERO<0 ENTONCES escribir El nmero introducido es negativo SI NO escribir El nmero es cero FINSI FINSI Finprograma

Supongamos un algoritmo que lea las coordenadas de tres puntos y los mueva tres puntos en la coordenada x y escriba el resultado en algn dispositivo de salida: ALGORITMO lee_tres_vertices ENTRADA: las coordenadas (x,y) de tres puntos SALIDA: las coordenadas (x,y) de los tres puntos movidos 3 puntos hacia la derecha. VARIABLES: i:entera x,y: real INICIO PARA i=1 HASTA 3 CON INCREMENTO +1 ESCRIBE "Abscisa del punto nmero ", i LEER x ESCRIBE "Ordenada del punto nmero ", i LEER Y ESCRIBE "El punto es (" x+3","y")" FIN_PARA FIN

Problema: calcular y mostrar la suma de los diez primeros nmeros entre 1 y 1000 que sean divisibles por uno dado.
programa suma_divisibles variables natural : divisor, suma, contador, nmero inicio programa divisor leer Introduce el divisor: suma 0 contador 0 para nmero desde 1 hasta 1000 hacer si divisor divide a nmero entonces suma suma + nmero contador contador + 1 fin si si contador = 10 entonces interrumpir fin si fin para escribir La suma es, suma fin programa

Vous aimerez peut-être aussi