Sunteți pe pagina 1din 29

ARRAYS ((LISTAS Y TABLAS))

Sugerencias y herramientas para crear para crear y presentar diapositivas en


formato panormico
Contenido
Arrays
Inicializacin de un array
Arrays de caracteres y cadenas de texto
Arrays multidimensionales
Utilizacin de arrays como parmetros
Ordenacin de listas
Bsqueda en listas
Resumen
E
Ejercicios
Arrays
Una array (lista o tabla) es una secuencia de datos del
mismo tipo. Los datos se llaman elementos del array y se
numeran consecutivamente 0,1,2,3, etc. Normalmente el
arrayy se utiliza p
para almacenar tipos
p tales como char,, int o
float
Los elementos de un array se numeran, y estos nmeros se
denominan valores ndice o subndice del array
Declaracin de un array
Un array y se declara de modo similar a otros tipos
p
de datos, excepto que se debe indicar al
compilador el tamao o longitud del array. La
sintaxis para declarar un array de una dimensin
determinada es;
Tipo nombreArray [numeroDeElementos];
Int numeros[10];
Cont
Cont
Se puede acceder a cada elemento del array
utilizando un ndice en el nombre del array
Printf(%d \n,numeros [4]);
visualiza
i li ell valor
l del
d l elemento
l 5 del
d l array. Los
L arrays
siempre comienzan en el elemento 0
#define N 20
Float vector [N];
Scanf(%f,&vector[2]);
Precaucin
C no comprueba que los ndices del array estn
dentro del rango definido. As, por ejemplo, se
puede intentar acceder a nmeros [12] y el
compilador no producir ningn error, lo que puede
producir un fallo en su programa
Almacenamiento en memoria de los arrays
Los elementos de los
arrays se almacenan en
bloques contiguos.
contiguos As
por ejemplo los arrays
Int
edades [5];
[5]
Char codigos [5]
Inicializacin de un array
Se deben asignar
g valores a los elementos del arrayy
antes de utilizarlos, tal como se asigna valores a
variables
Cuando se inicializa un array, el tamao del array se
puede determinar automticamente por las constantes
d inicializacin
de i i i li i
Int numeros [6]={10,20,30,40,50,60}
Int
I t n[]
[] ={3,4,5}
{3 4 5}
Ejemplo 8.2
82
/*Programa que lee 8 numeros y a continuacion visualiza
el total de los numeros*/ }
#include <stdio.h> printf("\nLista de numeros: ");
#include <stdlib.h> for (i=0; i<NUM; i++)
# define NUM 8
{
int main ()
printf ("%d",nums[i]);
{
total += nums[i];
int nums [NUM];
int i; }
int total =0; printf("\nLa
printf( \nLa suma de los numeros es
%d\n",total);
for (i=0; i<NUM; i++)
{
system("PAUSE");
printf("Por favor, introduzca el numero; "); return 0;
scanf("%d",&nums[i]); }
Arrays de caracteres y cadenas de texto
Una cadena de texto es
un conjunto de
caracteres, tales como
<ABCDEFG> C soporta
<ABCDEFG>.
cadenas de texto
utilizando un array de
caracteres que contenga
una secuencia de
caracteres
Cont
Cont
El medio mas fcil de inicializar un array es hacer la
inicializacin de la declaracin;
Char Cadena[7] = ABCDEF;
La asignacin de valores a cadena se puede hacer del
modo siguiente;
Cadena [0]=A;
Cadena [1]=B;

Cadena[6]=\0;
Cadena[6]= \0 ;
Ejemplo 8.4
84
/*visualiza un array formado p
printf("\nIntroduzca
(\ una lista de %d
con enteros positivos*/
i i */ elementos positivos.\n",MAX);
#include <stdio.h> for (i = 0; i < MAX; muestra[i]>0?++i:i)
scanf ("%f",&muestra[i]);
#include <stdlib.h>
stdlib.h

printf ("\nDatos leidos del teclado: " ) ;


#define MAX 10 for ( i = 0; i < MAX; ++i)
float muestra[MAX]; printf ("%f\t",muestra[i]) ;
int main() system("PAUSE");
return 0;
{
}
int i;
Arrays multidimensionales
Los arrays multidimensionales son aquellos que tienen
mas de una dimensin y, en consecuencia, mas de un
ndice
L arrays mas usuales
Los l son los
l ded dos
d dimensiones,
di i
conocidos tambin por el nombre de tablas o matrices
La sintaxis para la declaracin de un array de dos
dimensiones es
<tipo de datoElemento><nombre array>[<numero de
fil
filas>][<numero
][ d columnas>]
de l ]
Inicializacin de arrays multidimensionales
Int tabla [2][3]={{51,52,53},{54,55,56}};
{{ }{ }}
Int tabla2 [3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
Acceso a los elementos de los arrays bidimensionales
Se puede acceder a los elementos de arrays bidimensionales de
i
iguall forma
f que a los
l elementos
l d un array unidimensional
de idi i l
El formato general para la asignacin directa de valores a los
elementos es;
Insercin de elementos
<nombre array>[indice fila][indice columna]=valor elemento;
Tabla [2][3]
[2][3]=4.5;
4.5;
Extraccin de elementos
<variable>=<nombre array>[indice fila][indice columna];
V
Ventas=Tabla[1][1];
T bl [1][1]
Acceso a elementos mediante bucles
Se p puede acceder a los elementos de arrays
y
bidimensionales mediante bucles anidados. Su
sintaxis es;
IntIndiceFila, IndiceCol;
For ((IndiceFila=0; IndiceFila<NumFilas; ++IndiceFila))
For (indiceCol=0; IndiceCol<NumCol; ++IndiceCol)
Procesar elemento [IndiceFila][indiceCol];
[ ][ ];
Ejemplo 8.9
89
/*llenala tabla con datos de entrada y muestar los
resultados*/ }
#include <stdio.h> /* Visualizar la tabla */
#include <stdlib.h> for (fila = 0; fila < 2; fila++)
int main ()
{
{
for (col = 0; col < 4; col++)
float discos [2] [4] ;
{
int fila, col;
for (fila = 0; fila < 2; fila++) printf ("\n Pts %.lf \n",discos [fila] [col] ) ;
{ }
for (col = 0; col < 4; col++) }
{ system("PAUSE");
scanf ("%f",&discos[fila][col]) ; return 0;;
} }
Arrays de mas de dos dimensiones
C proporciona la posibilidad de almacenar varias dimensiones, un
array tridimensional
idi i l se puede d considerar
id como un conjunto
j d
de
arrays bidimensionales combinados juntos para formar, en
profundidad una tercera dimensin
El cdigo siguiente permite procesar el array
int pagina, linea, columna;
for (p
(pagina
g = 0;; pagina
p g < PAGINAS;; ++pagina)
p g )
for (linea = 0; linea < LINEAS; ++linea)
for (columna = 0; columna < COLUMNAS; ++columna)
<procesar Libro [pagina] [ lineal [columna] >
Utilizacin de arrays como parmetros
En C todos los arrays se pasan por referencia
(direccin). Esto significa que cuando se llama a una
funcin y se utiliza un array como parmetro, se debe
tener cuidado de no modificar los arrays en una
funcin llamada
El cdigo
g q que se utiliza ppara p
pasar un arrayy a una
funcin incluye el tipo de elemento del array y su
nombre. El siguiente ejemplo incluye dos funciones que
procesan arrays
Ejemplo 8.6
86
/*calcula la suma de una lista de 10 numeros y el valor maximo*/
}
#include <stdio.h>
int SumaDeEnteros(const int ArrayEnteros[], int NoElementos)
#include <stdlib.h>
{
int SumaDeEnteros(const int ArrayEnteros[], int NoElementos);
int i, Total = 0;
int maximo(const int ArrayEnteros[], int NoElementos); for (i = 0; i < NoElementos; i++)
int main () Total += ArrayEnteros[i];

{ return Total;

int Items [10] ; }


int maximo(const int ArrayEnteros[], int NoElementos)
int Total, i;
{
puts("introduzca 10 numeros, seguidos por return");
int mx;
for (i = 0; i < 10; i++)
int i;
scanf ("%d",&Items[i]); mx = ArrayEnteros [ 0 ] ;
printf("Total = %d \n",SumaDeEnteros(Items,10)); for (i = 1; i < NoElementos; i++)

printf("Va1or maximo: %d \n",maximo(Items,10)); mx = (ArrayEnteros [i] >mx ? ArrayEnteros [i] : mx) ;

system ("PAUSE"); return mx;


}
return 0;
Paso de cadenas como parmetros
La tcnica de pasar arrays como parmetros se utiliza para pasar
cadenas
d d caracteres a funciones.
de f i L cadenas
Las d son arrays de
d
caracteres cuando una cadena se pasa a una funcin, la funcin
conoce que se ha almacenado el final del array cuando ve un valor
de 0 en un elemento del array
Considere estas declaraciones de una constante y una funcin que
acepta una parmetro cadena y un valor de su longitud
#define MAXLON 128
Void FuncDemo (char s[], int long);
Ordenacin de listas
La ordenacin de arrays es otra de las tareas usuales en la
mayora de los programas. La ordenacin o clasificacin es
el procedimiento mediante el cual se disponen elementos
del arrayy en un orden especificado,
p , tal como orden
alfabtico u orden numrico
Algoritmo de la burbuja
La ordenacin ppor burbujaj es uno de los mtodos
mas fciles de ordenacin. El mtodo de
ordenacin es muy simple. Se compara cada
elemento del array con el siguiente, si no estn en
orden correcto, se intercambian entre si sus valores.
El valor mas pequeo flota hasta la parte superior
del array como si fuera una burbuja en un vaso de
refresco
f con gas
Ejemplo 8.8
88
#include <stdio.h>
#include <stdlib.h> printf ("%.2f,%c",a[i],((i+1)%10==0));

/* prototipos */ }

void imprimir(float a[], int n); printf ("%.2f \n",a[n-1]);

void intercambio(float* x, float* y); }

void ordenar (float a[], int n) ; void intercambio(float* x, float* y)

int main() {

{ float aux;

float a[10]={25.5,34.1,27.6,15.24,3.27, 5.14, 6.21,7.57,4.61, 5.4}; aux = *x;

imprimir(a,10); *x = *y;

ordenar (a,10 ) ; *y = aux;

imprimir(a,10); }

system("PAUSE"); /* ordenar burbuja */

return 0; void ordenar (float a[], int n)

} {

void imprimir(float a[], int n) int i, j;

{ for (i = n-1; i>0; i--)

int i = 0; for (j =0; j < i; j++)

for ( ; i < n-1; i++) if (a[j] > a[j+1])

{ intercambio(&a[j] ,&a[j+1]) ;
}
Bsqueda en listas
Los arrays son uno de los medios principales por los
cuales se almacenan los datos en programas C.
debido a esta causa, causa existen operaciones
fundamentales cuyo tratamiento es imprescindible
conocer Estas operaciones esenciales son; la
conocer.
bsqueda de elementos y la ordenacin y
clasificacin de las listas
Bsqueda secuencial
Este algoritmo busca el elemento dado, recorriendo
secuencialmente el array desde un elemento al
siguiente comenzando en la primera posicin del
siguiente,
array y se detiene cuando se encuentra el elemento
buscado o bien se alcanza el final del array
Esta tarea se realiza con bucles en nuestro caso con
ell bucle
b l while
hil
Bsqueda sec
enum {FALSE, TRUE};
{
int BusquedaSec(int Lista[MAX], int Encontrado=((A[i]==Elemento)?TRU
Elemento) E:i++);
{ }
int Encontrado = FALSE; /*Si se encuentra el elemento se
int i = 0; devuelve la posicin en la lista. * /
/ * Bsqueda en la lista hasta que se if ((Encontrado))
encuentra el elemento o se alcanza el return (i) ;
final de la lista. */ else
while ((!Encontrado) && (i <
<= MAX
MAX-1))
1)) return ((-1)
1) ;
1
Ejercicios
Escribir una funcin que invierta el contenido de n
nmeros enteros. El primero se vuelve el ltimo; el
segundo el penltimo,
segundo, penltimo etc.
etc
Escribir un programa que lea las dimensiones de
una matriz,
ti l
lea y visualice
i li l matriz
la ti y a
continuacin encuentre el mayor y menor elemento
d la
de l matriz
i y sus posiciones.
ii
Patrn de prueba de pantalla panormica (16:9)

Prueba de la
relacin de
aspecto
(Debe parecer circular)

4x3

16x9

S-ar putea să vă placă și