introd. a la algoritmia - tema 5

Upload: miguel-moronta

Post on 04-Apr-2018

230 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/30/2019 Introd. a la Algoritmia - Tema 5

    1/18

    Introduccin a la Algoritmia

    Leccin 5Manipulacin de

    Arreglos y Matrices

    Pontificia Universidad Catlica Madre y Maestra

    Vicerrectora Acadmica

    Facultad Ciencias de las Ingenieras

    Ingeniera en Sistemas y Computacin - ISC

    16-ene-13

    Santiago, Rep. Dom.

  • 7/30/2019 Introd. a la Algoritmia - Tema 5

    2/18

    Manipulacin de Arreglos y Matrices

    DefinicinSecuencia de datos del mismo tipo. A los datos se les llama elementos y se

    enumeran consecutivamente: 0, 1, 2, 3, 4, ..., n. A estos nmeros se les llama sub-

    ndice o valores de ndices.

    Declaracintipo nombre_arreglo[numero_elementos];

    Ej.: int numero[10]; arreglo numero de 10 elementos.

    numero[0] es el primer elemento.

    numero[9] es el ltimo elemento.

    Arreglos

  • 7/30/2019 Introd. a la Algoritmia - Tema 5

    3/18

    Manipulacin de Arreglos y Matrices

    Almacenamiento en memoria.Se almacenan en bloques contiguos.

    Tamao del arreglo.Usando la funcin sizeof, podemos obtener los bytes reservados para elarreglo completo.

    Ej. int edades[100];n= sizeof(edades); n=400, un entero=4bytes

    n= sizeof(edades[2]); n = 4; un solo elemento

    Arreglos

  • 7/30/2019 Introd. a la Algoritmia - Tema 5

    4/18

    Manipulacin de Arreglos y Matrices

    Rango de ndice de un arregloEl lenguaje C no verifica el valor del ndice de la variable que representa alarreglo.

    Inicializacin de un arregloAntes de usar un arreglo se debe inicializar.

    Ej. int numeros[6] = {10,20,30,40,50,60};

    int n[]={3,4,5}; /* arreglo de 3 elementos */char c[]={L,u,i,s};/* arreglo de 4 elementos */

    Los arreglos de caracteres y de cadenas en C, deben finalizar con elcarcter nulo \0

    Arreglos

  • 7/30/2019 Introd. a la Algoritmia - Tema 5

    5/18

    Manipulacin de Arreglos y Matrices

    Lo habitual es inicializar un arreglo de carcter con una constante cadena.

    Ej. char s[] =Puesta del Sol;

    Se pueden asignar constantes simblicas como valores numricos, como

    sigue: #define ENE 31

    #define FEB 28

    #define MAR 31

    int meses[12]={ENE,FEB,MAR,...,NOV,DIC};

    Para inicializar los arreglos se suelen utilizar bucles: for, while, do-while.Generalmente se inicializan en cero(0)

    Arreglos

  • 7/30/2019 Introd. a la Algoritmia - Tema 5

    6/18

    Manipulacin de Arreglos y Matrices

    Conjunto de Caracteres. Es un dato compuesto de: un arreglo de caracteres (char),

    terminado el carcter \0

    Por ej. char cadena[]=ABCD, contiene al final el carcter nulo \0, osea, que se

    agrega una celda ms.

    El compilador agrega al final el carcter \0

    Cadena[0]= A

    Cadena[1]= B

    Cadena[2]= CCadena[3]= D

    Cadena[4]= \0

    El lenguaje C manipula cadenas a travs de arreglo de caracteres que terminan con

    el carcter nulo. \0.

    Cadenas de Caracteres

    A B C D \0

  • 7/30/2019 Introd. a la Algoritmia - Tema 5

    7/18

    Manipulacin de Arreglos y Matrices

    DeclaracinIgual que los arreglos, se usa el operador posfijo [],

    El tipo de dato base es el char.

    char texto[81] /*una linea */

    char datos[40]

    Inicializacinchar cadena[81]=Esto es una cadena;

    No podemos inicializar una cadena fuera de la declaracin, como sigue:

    cadena=ALGO; ms adelante veremos la forma correcta.

    Cadenas de Caracteres

  • 7/30/2019 Introd. a la Algoritmia - Tema 5

    8/18

    Manipulacin de Arreglos y Matrices

    Se usa la funcin scanf() y el formato es %s.

    Esta funcin termina de leer cuando encuentra un espacio en blanco finde lnea( osea una palabra).

    #include

    void main()

    {

    char s[20];

    printf("\n Digite un texto");scanf(%s,s);

    printf( %s \n,s);

    }

    Cadenas de Caracteres - Lectura

  • 7/30/2019 Introd. a la Algoritmia - Tema 5

    9/18

    Manipulacin de Arreglos y Matrices

    gets() : leer dos o ms palabras en una cadena, lee la cadena hasta fin delnea. gets(cadena).

    puts() : escribir en la salida una cadena y el fin de lnea. Por lo que sita elpuntero de salida en la siguiente lnea. puts(cadena). Salta una lnea.

    getchar(): leer carcter a carcter, devuelve el carcter de entrada, atravs del stdin(teclado) . En caso de error o fin de archivo(control-z)devuelve el valor EOF.

    putchar(): escribir carcter a carcter, envia el carcter a la salida ostdout(monitor).

    Cadenas de Caracteres - Funciones

  • 7/30/2019 Introd. a la Algoritmia - Tema 5

    10/18

    Manipulacin de Arreglos y Matrices

    Aqu se lleva a mayscula la 1era. letra de cada palabra de la cadena leda.

    #include

    #include /* para usar toupper(carcter) */

    int main(){

    char car, pre = '#';

    printf("\n Digite un texto \n");

    while ((car=getchar()) != EOF){

    if (pre==' ' || pre =='#')

    putchar(toupper(car));

    else

    putchar(car);pre=car;

    }

    return 0;

    }

    Cadenas de Caracteres - Funciones

  • 7/30/2019 Introd. a la Algoritmia - Tema 5

    11/18

    Manipulacin de Arreglos y Matrices

    strlen(cadena) : devuelve la longitud de la cadena sin incluir el carcternulo.

    strcat(cadenadestino,cadenaorigen) : agrega la cadena origen a la cadenadestino. strncat(c1,c2,n) agrega los primeros n caracteres de c2 a c1.

    strcmp(cadena1,cadena2) : compara la cadena1 con la cadena2 ydevuelve : 0 si cadena1 == cadena2

    0 si cadena1 > cadena2

    strcpy(cadenadestino,cadenaorigen) : copia la cadena origen a la cadenadestino. strncpy(c1,c2,n)

    Cadenas de Caracteres - Funciones

  • 7/30/2019 Introd. a la Algoritmia - Tema 5

    12/18

    Manipulacin de Arreglos y Matrices

    Son arreglos con ms de una dimensin y por lo tanto ms de un ndice.

    Declaracin

    [#fila][#columnas]

    Ej. char pantalla [25][80];

    int puestos [6][8];

    Arreglo Multidimensionales

    O 1 2 3 4 (n)O

    1

    2

    3

    (m)

  • 7/30/2019 Introd. a la Algoritmia - Tema 5

    13/18

    Manipulacin de Arreglos y Matrices

    Representacin en memoria

    Ej. int m[4][2];

    Inicializacin

    Se pueden inicializar cuando se declaran.

    Ej. int matriz[2][3]={1,3,5,7,9,11};

    int matriz[2][3]={{1,3,5},{7,9,11}};

    Arreglo Multidimensionales

    m[0][0] m[0][1] m[1][0] m[1][1] m[2][0] m[2][1] m[3][0] m[3][1]

  • 7/30/2019 Introd. a la Algoritmia - Tema 5

    14/18

    Manipulacin de Arreglos y Matrices

    Asignacin directa de valores.

    Modificando la tabla

    [Indicefila][Indicecolumna]=valor;

    Asignar la tabla a una variable

    Variable=[fila][columna];

    Ej. tabla[2][3]=10;

    ventas = tabla[2][2];

    Lectura y Escritura de una tabla

    scanf(%d, &tabla[2][2]);

    printf(%4d, tabla[2][2]);

    Arreglo Multidimensionales

  • 7/30/2019 Introd. a la Algoritmia - Tema 5

    15/18

    Manipulacin de Arreglos y Matrices

    Uso de Bucles

    int f,c;

    for (f=0;f

  • 7/30/2019 Introd. a la Algoritmia - Tema 5

    16/18

    Manipulacin de Arreglos y Matrices

    #include

    #include

    void leer(int a[][5]);

    void escribir(const int a[][5]);

    int main()

    {

    int a[3][5];

    leer(a);escribir(a);

    system("PAUSE");

    return 0;

    }

    Arreglo Multidimensionales

  • 7/30/2019 Introd. a la Algoritmia - Tema 5

    17/18

    Manipulacin de Arreglos y Matrices

    void leer(int a[][5])

    {

    int i,j;

    puts("Introduzca 15 numeros enteros, 5 por fila");

    for(i=0;i < 3;i++){

    printf("Fila %d: ",i);

    for(j=0;j

  • 7/30/2019 Introd. a la Algoritmia - Tema 5

    18/18

    Manipulacin de Arreglos y Matrices

    void escribir(const int a[][5])

    {

    int i,j;

    for(i=0;i < 3;i++)

    {

    for(j=0;j