arreglos progrmacion

18
1 Tipos de Datos Estructurados Programación de Computadores IWI-131-p1 Prof.: Teddy Alfaro Olave Departamento de Informática Universidad Técnica Federico Santa María 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

description

progrmacion

Transcript of arreglos progrmacion

  • 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