Arrays en C

las listas, árboles y grafos. Una Estructura de datos básicos son los Array (Arreglos). Un Array es una secuencia de posiciones de memoria en la que se alojan ...
371KB Größe 6 Downloads 81 vistas
UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL TUCUMÁN Ingeniería Electrónica – Guía de Estudios de Informática I – 1R2 - Año 2014 Tema: ARRAY (Arreglos) Los tipos de datos que con mayor frecuencia se utilizan en Informática son: Numéricos Datos Simples ó Básicos

Variables sin Subíndices: No Numéricos

Numéricas Alfanuméricas Char Lógicas

En general, los datos básicos representan valores de tipo simples como un número ó un carácter por intermedio de variables sin subíndices. Sin embargo cuando un conjunto de valores relacionados entre sí por algún método o forma, como una serie de mediciones de temperatura efectuadas a lo largo del día, hora ,mes ,etc., el procesamiento de ese conjunto de datos ,como datos simples se hace complicado e innecesariamente difícil más aún si agregamos una elevada cantidad de datos. Por estas razones se utilizan las Estructuras de Datos que tiene como uno de sus objetivos principales el ordenar la información/datos para un Procesamiento más eficiente.

Estáticos

:

Datos Estructurados Compuestos ó : Dinámicos

Array : Vectores y Matrices Registros Archivos Cadenas (*) Listas : Pilas y Colas Listas Enlazadas Árboles Grafos

Estructura de Datos Estáticos son aquellas en las que el tamaño ocupado en la memoria se define antes que el programa se ejecute y no puede modificarse dicho tamaño durante la ejecución del programa. Estas estructuras son entre otras los arrays. Las Estructuras de Datos Dinámicos no tienen las limitaciones o restricciones en el tamaño de memoria ocupada propias de las Estructuras Estáticas. Las estructuras Dinámicas por excelencia son las listas, árboles y grafos. Una Estructura de datos básicos son los Array (Arreglos). Un Array es una secuencia de posiciones de memoria en la que se alojan datos del mismo tipo a través de variables con subíndice, donde a cada subíndice le corresponde una dirección de memoria. 1

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL TUCUMÁN Ingeniería Electrónica – Guía de Estudios de Informática I – 1R2 - Año 2014 Tema: ARRAY (Arreglos) Las formas de guardar la información en la memoria son de dos maneras: Si se trata de Variables con Un Subíndice del tipo a[i] Línea de memoria

a[i],

Si i=3

3 a[o]

5 a[1]

-24 a[2]

El subíndice i, indica la cantidad de posiciones de memoria que se reservan para almacenar los valores de la variable a[i]. Se reservan tres posiciones o domicilios de memoria a[o], a[1] y a[2] para almacenar datos que son ordenados secuencialmente en una línea de memoria. Esta línea de memoria, también es conocida como vector y corresponde a un arreglo de una dimensión. Si disponemos de Variables con dos Subíndices del tipo a[i,j], estamos en presencia de un área de memoria del tipo siguiente: Área de memoria Si a[2,2]

a[F,C] donde F= Fila y C= Columna

Está relacionada con una Área de cuatro elementos ó posiciones de memoria:

a[0,0] FILAS

a[0,1]

a[1,0] a[1,1]

Cada posición tiene almacenado un valor numérico

5

8

-2

4

COLUMNA S Para este caso, se reservan cuatro posiciones o domicilios de memoria para almacenar los datos que son ordenados secuencialmente en una Área de memoria. Dicha área de memoria también se conoce como Matriz o Arreglo de Dos Dimensiones. Cada posición de memoria se identifica mediante una Fila (F) y una Columna (C). La elección del tipo de Estructura de Datos dependerá de cada aplicación y se debe recordar que los datos simples se caracterizan porque cada variable representa a un elemento o valor, mientras que en los datos estructurados tipo array, por ejemplo, un identificador (nombre) representa múltiples datos individuales.

2

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL TUCUMÁN Ingeniería Electrónica – Guía de Estudios de Informática I – 1R2 - Año 2014 Tema: ARRAY (Arreglos) Declaración de Array Unidimensionales

Tipo-Almacenamiento Tipo–dato array [expresión]; Entera positiva que indica la cantidad de elementos de un array

Arreglos

Estáticos (static) Externos

Ejemplos: int x[10]; char texto[50]; static char mensage[30]; static float n[12];

arreglo estático de 30 caracteres arreglo estático de 12 elementos en coma flotante

Arreglos con Asignación de Valores Iniciales # define TAMAÑO 10 ----------------int digitos [TAMAÑO] ; Ejemplos : a) int digitos[10] = {2,4,5,8,0,-1,98,76,6,7}; static float x[6]= {0,0.25,-0.50,2.3,0,0}; char color[3]= { ‘R´,’E´,’D´}; RED

ó char color[ ] =’RED´;

Se omite la cantidad de caracteres

b) int digitos[10]= {3,5,8}; static float x[6]={-0.1,4,0};

los valores que faltan para completar un array se llenan con 0 (ceros)

3

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL TUCUMÁN Ingeniería Electrónica – Guía de Estudios de Informática I – 1R2 - Año 2014 Tema: ARRAY (Arreglos) Arrays Multidimensionales [TABLA DE VALORES] Se definen de manera idéntica a los array unidimensionales, excepto que se utiliza un par separado de corchetes para cada índice. Un array bidimensional

dos pares de corchetes

Un array tridimensional

tres pares de corchetes

Tipo-Almacenamiento Tipo–dato array [exp.1][exp.2]..[exp.n]; n expresiones enteras positivas que indican la cantidad de elementos del array asociado Ejemplos: float tabla [50] [50];

50 filas x 50 columnas

char pagina [24] [50];

24 filas x 50 columnas

static double registro [100] [66] [200]; 100 tablas estáticas de double precisión cada una con 66 líneas y 200 columnas

OPERACIONES CON ARRAYS: A continuación se presentan ejemplos de programas donde intervienen array.

4

UNIVERSIDAD TECNOLÓGICA NACIONAL - FACULTAD REGIONAL TUCUMÁN Ingeniería Electrónica – Guía de Estudios de Informática I – 1R2 - Año 2014 Tema: ARRAY (Arreglos) /* --- PROGRAMA CON APLICACION DE #include #include #define N 3 void main(void) {

ARRAY --- */

/* nombre del programa arreglo1.cpp */ /* prototipo de las funciones clrscr, */ /* textcolor,gotoxy, getch, etc. */ /* PROGRAMA QUE EFECTUA EL PROMEDIO DE 3 NUMEROS */ /* con arreglo unidimensional y da una lista */ /*de números ingresados mayores al promedio*/

int vec[N],i,s=0; float p; clrscr (); printf (" Ingresar Números : \n"); printf ("\n"); for (i=0;i