jueves, 6 de diciembre de 2012

estructuras



Estructura
Las estructuras de datos se emplean con el objetivo principal de organizar los datos contenidos dentro de la memoria del ordenador. Así, nuestra primera experiencia con estructuras comienza desde el momento mismo en que usamos en nuestros programas variables de tipos primitivos (char, short, int, float, etc). A la memoria del ordenador se le puede considerar como un gran bloque compuesto por una serie de BYTES dispuestos secuencialmente uno detrás de otro. por ejemplo, si un ordenador posee una memoria de 128MB (128 megas) entonces se le puede leer o escribir desde el BYTE 0 hasta el BYTE 128MB - 1 ( 0000000H .. 7FFFFFFH ).

La idea de ver la memoria como un serie de bytes es buena, sin embargo no es suficiente ya que en la misma podemos guardar números, cadenas de caracteres, funciones, objetos, etc. de tal manera que surge la necesidad de establecer los mecanismos adecuados para dar cuenta de la forma, tamaño y objetivo de los datos almacenados. Según el tipo de microprocesador, estos tienen la capacidad para manipular o direccionar estructuras compuestas por uno, dos, cuatro, etc, bytes; de donde se derivan los tipos que comunmente se conocen como: BYTE, WORD, DWORD, QWORD y TWORD.

La estructura mínima de información manipulable en un sistema de memoria de ordenadores es el BIT el cual se agrupa normalmente en bloques de 8 para formar un BYTE. Cabe mencionar que los BITS no son direccionables directamente, sino a travez de compuertas AND, OR, NOT, XOR, mismas que en C,C++ se escriben como &, |, ~ y ^ conocidos como "Bitwise operators".

En C,C++ existe una serie de estructuras básicas o tipos primitivos, los cuales pueden ser usados por el programador para declarar variables, y también son el fundamento sobre el cual se crean estructuras complejas. El tamaño de los tipos primitivos no es estándar ya que los mismos dependen de factores tales como:
  • Tipo del microprocesador
  • El compilador

C++



·         Estructuras básicas en C, C++
Tipos primitivos
Nombre común
Nombre C
Longitud
BYTE
char
8 bits
WORD
short
16 bits
DWORD
int
32 bits
DWORD
long
32 bits
DWORD
float
32 bits
QWORD
double
64 bits
TWORD
long double
80 bits

arreglos


Arreglos
En clase ya conocimos algunos tipos básicos como por ejemplo los tipos char, int y float. El lenguaje C++ permite, además, construir estructuras más complejas a partir de estos tipos básicos.
Un arreglo en C++ es un conjunto de datos que se alamacenan en memoria de manera contigua con el mismo nombre. Para difenciar los elementos de un arreglo se utilizan índices detrás del nombre del arreglo y encerrados por []. El elemento 5° (quinto) de un arreglo, es representado por el índice [4], ya que los índices comienzan en 0. Esto significa que un arreglo de 10 elementos tendría los índices del 0 al 9: [0...9]

Ejemplo de arreglo

int a[5]; // Definición de un arreglo de 5 posiciones
void main()
{
            int i;
            // Pedimos el ingreso de 5 números
            for(i=0; i<4; i++)           //No olvidar que los arreglos van de 0 a longitud-1
            {
                        cout << Ingrese el elemento Nro: << i <<endl;
                        cin >> a[i];
}
// Los imprimimos
imprimir(a,5);
}
void imprimir(int b[], int tamano)
{
int i;
for(i=0; i<tamano; i++)
{
                        cout << Nro: << i <<” “<<b[i]<<endl;
}
}

arreglos unidimensionales,bidimensionales y multidimensionales


Arreglo unidimensional
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 sintener 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, lacota superior y la inferior.
Arreglos bidimensionales
Son estructuras de datos que agrupan muchos datos del mismo tipo, en donde cada elemento se puede trabajar individualmente y se puede referenciar con un mismo nombre. Se usan para representar datos que pueden verse como una tabla con filas y columnas.
Ejemplo:
#include <stdio.h>
int main()
{
int fila, columna;
int matriz[2][2];
for(fila=0; fila<2; fila++)
for(columna=0; columna<2; columna++)
printf(“%d”, matriz[fila][columna]);
return 0;
}
Arreglos multidimensionales
Un arreglo multidimensional es simplemente una extensión de un  arreglo
unidimensional. Más que almacenar una sola lista de elementos, piense en un  arreglo
multidimensional como el almacenamiento de múltiples listas de elementos. Por ejemplo, un
arreglo  bidimensional almacena listas en un formato de tabla de dos dimensiones de filas y
columnas, en donde cada  fila es una lista. Las filas proporcionan la dimensión vertical del
arreglo, y las columnas dan la dimensión horizontal. Un arreglo de tres dimensiones almacena
listas en un formato de tres dimensiones de filas, columnas y planos, en donde cada plano es
un  arreglo bidimensional. Las  filas proporcionan la dimensión vertical; las  columnas, la
dimensión horizontal; y los planos, la dimensión de profundidad del arreglo.