Monografias.com > Computación > Programación
Descargar Imprimir Comentar Ver trabajos relacionados

Tipos de datos estructurados




Enviado por Pablo Turmero



Partes: 1, 2

    Monografias.com

    Tipos de datos
    Clasificación de tipos
    Simples
    Estándar: int, float, double, char, boolConjunto de valores predeterminado
    Definidos por el usuario: enumeradosConjunto de valores definido por el programador
    Estructurados
    Colecciones homogéneas: arraysTodos los elementos del mismo tipo
    Colecciones heterogéneas: estructurasLos elementos pueden ser de tipos distintos
    ?
    ?
    ?

    Monografias.com

    Tipos estructurados
    Colecciones o tipos aglomerados
    Agrupaciones de datos (elementos):
    Todos del mismo tipo: array o tabla
    De tipos distintos: estructura, registro o tupla
    Arrays (tablas)
    Elementos organizados por posición: 0, 1, 2, 3, …
    Acceso por índice: 0, 1, 2, 3, …
    Una o varias dimensiones
    Estructuras (tuplas, registros)
    Elementos (campos) sin orden establecido
    Acceso por nombre

    Monografias.com

    Arrays
    []
    Estructura secuencial
    Cada elemento se encuentra en una posición (índice):
    Los índices son enteros positivos
    El índice del primer elemento siempre es 0
    Los índices se incrementan de uno en uno

    Acceso directo
    A cada elemento se accede a través de su índice:
    ventas[4] accede al 5º elemento (contiene el valor 435.00)
    cout < < ventas[4];
    ventas[4] = 442.75;
    (Gp:) Datos de un mismo tipo base:Se usan como cualquier variable

    Monografias.com

    Tipos y variables arrays
    Declaración de tipos de arrays
    const int Dimensión = …;
    typedef tipo_base tNombre[Dimensión];
    Ejemplo:
    const int Dias = 7;
    typedef double tVentas[Dias];
    Declaración de variables de tipos array: como cualquier otra
    tVentas ventas;
    ¡NO se inicializan los elementos automáticamente!
    ¡Es responsabilidad del programador usar índices válidos!
    No se pueden copiar arrays directamente (array1 = array2)
    Hay que copiarlos elemento a elemento

    Monografias.com

    Arrays y bucles for
    Procesamiento de arrays
    Recorridos
    Búsquedas
    Ordenación etcétera…
    Recorrido de arrays con bucles for
    Arrays: tamaño fijo ? Bucles de recorrido fijo (for)
    tVentas ventas;
    double media, total = 0;

    for (int i = 0; i < Dias; i++) {
    total = total + ventas[i];
    }
    media = total / Dias;
    const int Dias = 7;
    typedef double tVentas[Dias];

    Monografias.com

    tVentas ventas;
    double media, total = 0;

    for (int i = 0; i < Dias; i++) {
    total = total + ventas[i];
    }
    (Gp:) 12.40
    (Gp:) 1

    (Gp:) 23.36
    (Gp:) 2

    (Gp:) 31.79
    (Gp:) 3

    (Gp:) 43.44
    (Gp:) 4

    (Gp:) 84.62
    (Gp:) 7

    Arrays y bucles for
    (Gp:) false

    (Gp:) true
    (Gp:) total+=ventas[i]
    (Gp:) i++

    (Gp:) i< Dias

    (Gp:) i = 0

    Monografias.com

    Inicialización de arrays
    Podemos inicializar los elementos de los arrays en la declaración
    Asignamos una serie de valores al array:
    const int DIM = 10;
    typedef int tTabla[DIM];
    tTabla i = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    Se asignan los valores por su orden:
    i[0] i[1] i[2] i[3] i[4] … i[9]

    1º 2º 3º 4º 5º … 10º
    Si hay menos valores que elementos, los restantes se ponen a 0
    tTabla i = { 0 }; // Pone todos los elementos a 0

    Monografias.com

    Enumerados como índices
    const int Colores = 3,
    typedef enum { rojo, verde, azul } tRGB;
    typedef int tColor[Colores];
    tColor color;

    cout < < "Cantidad de rojo (0-255): ";
    cin >> color[rojo];
    cout < < "Cantidad de verde (0-255): ";
    cin >> color[verde];
    cout < < "Cantidad de azul (0-255): ";
    cin >> color[azul];

    Recuerda que internamente se asignan enteros a partir de 0a los distintos símbolos del enumeradorojo ? 0 verde ? 1 azul ? 2

    Monografias.com

    Paso de arrays a subprogramas
    Simulación de paso de parámetro por referencia
    Sin poner & en la declaración del parámetro
    Los subprogramas reciben la dirección en memoria del array
    const int Max = 10;
    typedef int tTabla[Max];
    void inicializa(tTabla tabla); // Sin poner &
    Las modificaciones del array quedan reflejadas en el argumento
    inicializa(array);
    Si inicializa() modifica algún elemento de tabla, automáticamente queda modificado ese elemento de array
    ¡Son el mismo array!

    Monografias.com

    Paso de arrays a subprogramas
    0 1 2 3 4 5 6 7 8 9
    const int Dim = 10;
    typedef int tTabla[Dim];
    void inicializa(tTabla tabla); // no se usa &

    void inicializa(tTabla tabla) {
    for (int i = 0; i < Dim; i++)
    tabla[i] = i;
    }
    int main() {
    tTabla array;
    inicializa(array); // array queda modificado
    for (int i = 0; i < Dim; i++)
    cout < < array[i] < < " ";

    Monografias.com

    Paso de arrays a subprogramas
    ¿Cómo evitar que se modifique el array?
    Usando el modificador const en la declaración del parámetro:
    const tTabla tabla Un array de constantes
    void muestra(const tTabla tabla);
    El argumento se tratará como un array de constantes
    Si en el subprograma hay alguna instrucción que intente modificar un elemento del array: error de compilación
    void muestra(const tTabla tabla) {
    for (int i = 0; i < Dim; i++) {
    cout < < tabla[i] < < " ";
    // OK. Se accede, pero no se modifica
    }
    }

    Monografias.com

    Implementación de listas con arrays
    Listas con un número fijo de elementos
    Array con el nº de elementos como dimensión
    const int NUM = 100;
    typedef double tLista[NUM]; // Exactamente 100 double
    tLista lista;

    Recorrido de la lista:
    for (int i = 0; i < NUM; i++) {

    Búsqueda en la lista:
    while ((i < NUM) && !encontrado) {

    Partes: 1, 2

    Página siguiente 

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter