Académique Documents
Professionnel Documents
Culture Documents
Programación de Computadores
IWI-131-p1
Prof.: Teddy Alfaro Olave
Arreglos (array)
• El arreglo es un tipo estructurado de dato, el cual
es capaz de almacenar una colección de datos del
mismo tipo.
• Es la estructura de datos más utilizada por los
programadores
• Es la forma más simple de agrupar componentes
de un mismo tipo y asociarles un número de
orden de cada componente llamado índice.
• Los arreglos en C, se almacenan en posiciones
contiguas de memoria
• Posee un tamaño
1
Dimensionalidad
• El arreglo es una estructura multidimensional
• En una dimensión puede ser visto como un vector,
necesita de un índice (la posición) para recorrer
sus elementos
• Un arreglo de dos dimensiones puede
representarse como una matriz, necesita de dos
índices (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 rubik
Contiene 4*4*4 cubos, para acceder a uno de ellos necesito
altura, posición 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.
2
Ejemplos
Unidimensional
int a[20];
…
Tridimensional
float a[7][7][4];
Bidimensional
Int a[6][7];
Ejemplos
• int numeros[]={1,3,34,54}; //su tamaño es 4
• char alfabeto[5]={‘A’,’B’,’C’,’D’,’E’};
//arreglo de caracteres de tamaño 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
3
Observaciones
Arreglos Unidimensionales
• Es una lista o vector.
• Declaración
Tipo_dato nom_arreglo[tamaño];
– Tipo_dato: de que tipo serán los elementos.
Recordar que todo son del mismo tipo
– Nom_arreglo: nombre para la variable tipo
arreglos
– []: nos indica que su dimensionalidad es uno
– Tamaño: la cantidad de elementos que a los
más podrá contener el arreglo.
4
Accesando a elementos
• Un elemento individual dentro de un arreglo es
accedido por el uso de un índice.
• Un índice describe la posición de un elemento
dentro de un arreglo.
• En C/C++ el primer elemento tiene el índice cero!
int V[5];
V[2] contiene el 7
V 13 34 7 61 1
Posición 0 1 2 3 4 V[4] contiene el 1
V[0] contiene el 13
Ejemplo
#include <stdio.h>
int main(){
int muestra[10],t;
for(t=0;t<10;t++)
muestra[t]=t*t;
for(t=0;t<10;t++)
printf(“muestra[%d]=%d”,t,muestra[t]);
return 0;
}
5
Mapeo 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 dirección más baja corresponde al
primer elemento, y la más alta al último
elemento
• La cantidad de bytes del arreglo de tamaño
n está dada por sizeof(tipo_dato)*n
6
Asignando arreglos
• No se puede asignar un arreglo a otro
• Lo siguiente es ilegal:
int a[10], b[10];
//hacer algo
a=b;//error ilegal
• En vez, se debe hacer asignaciones por cada
elemento:
int i;
for(i=0;i<10;i++)a[i]=b[i];
Ejemplos
1.- Realizar un programa en el que se ingresen 10
enteros, y luego muestre la suma de ellos y su
promedio
2.- Encontrar el máximo de una lista de 10 elementos
7
Ejemplo 1.
#include<stdio.h>
int main(){
int i, max=0;
int list[100];
for(i=0;i<100;i++)
list[i]=rand();
for(i=0;i<100;i++)
if(max<list[i])
max=list[i];
printf(“max=%d”,max);
return 0;
}
Ejemplo 2
#include <stdio.h>
int main(){
int x[10];
int i,suma;
8
Paso de Arreglos unidimensionales
a funciones
• Forma 1: Arreglo delimitado
#include <stdio.h>
func1(int x[10]){ /*Arreglo delimitado*/
……...
} Se debe especificar el tamaño
int main(){
del arreglo
int a[10];
…..
func1(a);
……... Se pasa la dirección del primer
return 0; elemento del arreglo a la
} función
9
Paso de Arreglos unidimensionales
a funciones
• Nota:
– Al llamar una función pasándole un arreglo como
parámetro, como se le entrega la dirección del
primer elemento, entonces si los valores del
arreglo son modificados dentro de la función,
también son modificados en la función que llama.
10
Hacia un arreglo dinámico
printf("calloc\n");
int main() { k = (int *)calloc(num,sizeof(int));
int *p,*k,num,i; for(i=0;i<num;i++)
printf("ingrese el tamaño del arreglo "); k[i]=rand()%13;
for(i=0;i<num;i++)
scanf("%d",&num);
printf(" k[%d]=%d\n",i,k[i]);
printf("malloc\n");
p= (int *)malloc(sizeof(int)*num);
for(i=0;i<num;i++) k = (int *)realloc(k,sizeof(int)*num*2);
p[i]=rand()%13; for(i=0;i<num*2;i++)
k[i]=rand()%13;
for(i=0;i<num;i++)
for(i=0;i<num*2;i++)
printf(" p[%d]=%d\n",i,p[i]); printf(" k[%d]=%d\n",i,k[i]);
free(p); free(k);
Return 0;
}
11
String
12
String con espacios
#include<stdio.h>
int main(){
char str[80];
printf(“escribir string”);
gets(str);//con espacios
return 0;
}
Asignación de String
• Para asignar un carácter a un char se utiliza
la comilla simple
13
Librería para menejo de string
La librería string.h, permite hacer
operaciones con string. Los más usados son:
• strcpy() : copia caracteres de un string a otro
• strcat() : concatenación de string
• strlen() : largo del string
• strcmp() : comparación de string
Descripción
• Sean s1 y s2 string de largo fijo:
Strcpy(s1,s2) copia s2 en s1 y devuelve s1
Strcat(s1,s2) concatena s2 en s1, retorna s1
Strlen(s1) devuelve el la longitud de s1
Strcmp(s1,s2) compara s1 con s2
si son iguales devuelve 0
si s1>s2 devuelve un nº >0
si s1<s2 devuelve un nº <0
14
#include <stdio.h>
#include <stdlib.h>
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 <string.h>
#include <stdio.h>
int main(void){
char c1[80],c2[80];
return 0;
}
15
String.h
strcat 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
mayúscula y contar número de dígitos.
16
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];
17
#include<stdio.h>
int main(){
int fila=3,col=4,matriz[fila][col];
for(fila=0;fila<3;fila++)
for(col=0;col<4;col++)
matriz[fila][col]=fila*col;
return 0;
}
Arreglos Multidimensionales
18