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
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