-
1Tipos de Datos Estructurados
Programacin de ComputadoresIWI-131-p1
Prof.: Teddy Alfaro Olave
Departamento de InformticaUniversidad Tcnica Federico Santa
Mara
Arreglos (array)
El arreglo es un tipo estructurado de dato, el cual es capaz de
almacenar una coleccin de datos del mismo tipo.
Es la estructura de datos ms utilizada por los programadores
Es la forma ms simple de agrupar componentes de un mismo tipo y
asociarles un nmero de orden de cada componente llamado ndice.
Los arreglos en C, se almacenan en posiciones contiguas de
memoria
Posee un tamao
-
2Dimensionalidad
El arreglo es una estructura multidimensional En una dimensin
puede ser visto como un vector,
necesita de un ndice (la posicin) para recorrer sus
elementos
Un arreglo de dos dimensiones puede representarse como una
matriz, necesita de dosndices (fila y columna) para acceder a uno
de sus elementos
Dimensionalidad
Un arreglo de 3 dimensiones podemos tomarlo como un espacio.
Ejemplo: el cubo de rubikContiene 4*4*4 cubos, para acceder a uno
de ellos necesito altura, posicin horizontal, y profundidad (3
ndices)
En general un arreglo puede ser n-dimensional, y requerir de n
ndices para recorrer o acceder a sus elementos.
-
3Ejemplos
UnidimensionalUnidimensional
int a[20];int a[20];
BidimensionalBidimensional
Int a[6][7];Int a[6][7];
TridimensionalTridimensional
float a[7][7][4];float a[7][7][4];
Ejemplos int numeros[]={1,3,34,54}; //su tamao es 4 char
alfabeto[5]={A,B,C,D,E};
//arreglo de caracteres de tamao 5 Char nombres[][40]={pedro,
pablo, luis,
karina, lisa};//5 filas y columnas a lo mas de 40
caracteres.
int Coordenadas[2][2]={ {0,0},{1,1}};//arreglo bidimensional de
enteros
-
4Observaciones
Los ndices de los arreglos comienzan en cero, es decir, el
primer elemento, es el elemento cero.
Si un arreglo es declarado en la funcin principal main() tendra
las dimensiones incluidas.
Cuando se pasa un arreglo a una funcin, esta ultima no necesita
saber el tamao.
Arreglos Unidimensionales Es una lista o vector. Declaracin
Tipo_dato nom_arreglo[tamao]; Tipo_dato: de que tipo sern los
elementos.
Recordar que todo son del mismo tipo Nom_arreglo: nombre para la
variable tipo
arreglos []: nos indica que su dimensionalidad es uno Tamao: la
cantidad de elementos que a los
ms podr contener el arreglo.
-
5Accesando a elementos
Un elemento individual dentro de un arreglo es accedido por el
uso de un ndice.
Un ndice describe la posicin de un elemento dentro de un
arreglo.
En C/C++ el primer elemento tiene el ndice cero!
13 34 7 61 1
int V[5];
Posicin 0 1 2 3 4
V[2] contiene el 7
V[4] contiene el 1
V[0] contiene el 13
V
Ejemplo#include int main(){int muestra[10],t;for(t=0;t
-
6Mapeo de un Arreglo en Memoria
En C, un arreglo es mapeado a localizaciones de memoria
continua
Todos los elementos de memoria residen uno al lado del otro
La direccin ms baja corresponde al primer elemento, y la ms alta
al ltimo elemento
La cantidad de bytes del arreglo de tamao n est dada por
sizeof(tipo_dato)*n
Arreglo y punteros de memoria#include int main( ){
int lista[20],i,*list;
for (i=0;i
-
7Asignando arreglos
No se puede asignar un arreglo a otro Lo siguiente es ilegal:int
a[10], b[10];//hacer algoa=b;//error ilegal En vez, se debe hacer
asignaciones por cada
elemento:int i;for(i=0;i
- 8Ejemplo 1.#includeint main(){int i, max=0;int
list[100];for(i=0;i
-
9Paso de Arreglos unidimensionales a funciones
Forma 1: Arreglo delimitado#include func1(int x[10]){ /*Arreglo
delimitado*/
...}int main(){
int a[10];..func1(a);...return 0;
}
Se pasa la direccin del primer elemento del arreglo a la
funcin
Se debe especificar el tamao del arreglo
Paso de Arreglos unidimensionales a funciones
Forma 1: Arreglo no delimitado#include func1(int x[]){ /*Arreglo
no delimitado*/
...}int main(){
int a[10];..func1(a);...return 0;
}
No se especifica el tamao del arreglo
-
10
Paso de Arreglos unidimensionales a funciones
Nota: Al llamar una funcin pasndole un arreglo como
parmetro, como se le entrega la direccin del primer elemento,
entonces si los valores del arreglo son modificados dentro de la
funcin, tambin son modificados en la funcin que llama.
Hacia un arreglo dinmico
Los arreglos de tamao dinmico no exiten, pero C permite reservar
memoria en tiempo de ejecucin para determinar el tamao de un
arreglo.
Para ello se necesita la librera stdlib.h Las funciones son
malloc, calloc, free y
realloc.
-
11
Hacia un arreglo dinmico
int main() {int *p,*k,num,i;printf("ingrese el tamao del arreglo
");scanf("%d",&num);printf("malloc\n");p= (int
*)malloc(sizeof(int)*num);for(i=0;i
-
12
String
El uso ms comn para un arreglo unidimensional es guardar un
arreglo de caracteres
Un string esta definido como un arreglo de caracteres terminado
por un smbolo null (\0)
Para que un arreglo sostenga un string de 10 caracteres, char
str[11], ya que 11 hace lugar para el null al final del string.
\\00aalloohh
Leyendo un string desde un teclado#includeint main(){char
str[80];printf(escribir string);scanf(%s,str);//no lleva
&return 0;
}/*Lee un string hasta que encuentra un espacio vaco */
-
13
String con espacios
#includeint main(){
char str[80];printf(escribir string);gets(str);//con
espaciosreturn 0;
}
Asignacin de String
Para asignar un carcter a un char se utiliza la comilla
simple
-
14
Librera para menejo de string
La librera string.h, permite haceroperaciones con string. Los ms
usados son: strcpy() : copia caracteres de un string a otro
strcat() : concatenacin de string strlen() : largo del string
strcmp() : comparacin de string
Descripcin
Sean s1 y s2 string de largo fijo:Strcpy(s1,s2)copia s2 en s1 y
devuelve s1Strcat(s1,s2)concatena s2 en s1, retorna
s1Strlen(s1)devuelve el la longitud de s1Strcmp(s1,s2)compara s1
con s2
si son iguales devuelve 0si s1>s2 devuelve un n >0si
s1
-
15
#include #include
int main() {char s[10],c[10]={"iwi131"};
do {printf("ingrese su clave ");scanf("%s",s);if
(strcmp(s,c)!=0)printf("clave incorrecta, intente de nuevo\n");
}while(strcmp(s,c)!=0);printf("la clave es correcta\n");
return 0;}
#include #include
int main(void){char c1[80],c2[80];
printf("\n Ingrese una cadena de
caracteres:");scanf("%s",c1);printf("\n Ingrese una cadena de
caracteres:");scanf("%s",c2);
printf("\n Longitudes: %d %d ",strlen(c1),strlen(c2));
if(!strcmp(c1,c2)) printf("\nLas cadenas son
iguales");strcat(c1,c2);printf("\n %s",c1);
return 0;}
-
16
String.hstrcat Appends a string strchr Finds first occurrence of
a given character strcmp Compares two strings strcmpi Compares two
strings, non-case sensitive strcpy Copies one string to another
strlen Finds length of a string strlwr Converts a string to
lowercase strncat Appends n characters of string strncmp Compares n
characters of two strings strncpy Copies n characters of one string
to another strnset Sets n characters of string to a given character
strrchr Finds last occurrence of given character in string strrev
Reverses string strset Sets all characters of string to a given
character strspn Finds first substring from given character set in
string strupr Converts string to uppercase
String
Ejercicio:4.- Realizar un programa que convierta un string a
mayscula y contar nmero de dgitos.
-
17
Arreglos de 2 dimensiones
Arreglo 2-dimensional
Un arreglo bidimensional es una lista de arreglos
unidimensional
Para declarar un arreglo bidimensional de enteros int
matriz[3][4];
-
18
#includeint main(){int
fila=3,col=4,matriz[fila][col];for(fila=0;fila