Programación Estructurada

21
 Arreglos en lenguaje C Programaci´ on estructurada Cadenas Oscar Alvarado Nava [email protected] Departamento de Electr´ onica Divisi´ on de Cien cias B´ asicas e Ingenie r ´ ı a Universidad Aut´onoma Metropolitana, Unidad Azcapotzalco 13O, octubre de 2013 Os car Al va rado Nava UAM Azcapotz alco  Cadenas  1/21

description

cadenas

Transcript of Programación Estructurada

  • Arreglos en lenguaje C

    Programacion estructuradaCadenas

    Oscar Alvarado Nava

    [email protected]

    Departamento de ElectronicaDivision de Ciencias Basicas e Ingeniera

    Universidad Autonoma Metropolitana, Unidad Azcapotzalco

    13O, octubre de 2013

    Oscar Alvarado Nava UAM Azcapotzalco Cadenas 1/21

  • Arreglos en lenguaje C

    Contenido

    1 Arreglos en lenguaje CArreglos en lenguaje C

    Oscar Alvarado Nava UAM Azcapotzalco Cadenas 2/21

  • Arreglos en lenguaje C

    Arreglos en lenguaje C

    Cadenas

    El uso mas comun de los arreglos uni-dimensionales son lascadenas (strings)

    Una cadena es una arreglo uni-dimensional de caracteres(char) terminado por el caracter nulo

    El caracter nulo es especificado como \0 y es generalmentetratado como cero

    Oscar Alvarado Nava UAM Azcapotzalco Cadenas 3/21

  • Arreglos en lenguaje C

    Arreglos en lenguaje C

    Longitud de la cadena y caracter nulo

    En la longitud del arreglo que contendra la cadena, sedebera considerar una localidad mas para el caracter nulo

    char unaCadena[11];

    En el arreglo anterior se podra alojar una cadena de hasta 10caracteres y el caracter nulo

    Oscar Alvarado Nava UAM Azcapotzalco Cadenas 4/21

  • Arreglos en lenguaje C

    Arreglos en lenguaje C

    Arreglo de caracteres

    char unaCadena[11];

    0 1 2 3 4 5 6 7 8 9

    unaCadena S h e r e K h a n

    10

    La palabra ShereKhan esta conformada por 9 caracteresimprimibles

    Oscar Alvarado Nava UAM Azcapotzalco Cadenas 5/21

  • Arreglos en lenguaje C

    Arreglos en lenguaje C

    Cadenas

    char unaCadena[11];

    0 1 2 3 4 5 6 7 8 9

    unaCadena S h e r e K h a n

    10

    \0

    La palabra ShereKhan esta conformada por 9 caracteresimprimibles y el caracter nulo

    Oscar Alvarado Nava UAM Azcapotzalco Cadenas 6/21

  • Arreglos en lenguaje C

    Arreglos en lenguaje C

    Cadenas

    char unaCadena[11];

    0 1 2 3 4 5 6 7 8 9

    unaCadena A k e l a

    10

    \0

    La palabra Akela esta conformada por 5 caracteresimprimibles y el caracter nulo

    Oscar Alvarado Nava UAM Azcapotzalco Cadenas 7/21

  • Arreglos en lenguaje C

    Arreglos en lenguaje C

    Cadenas y caracteres de control

    char unaCadena[11];

    0 1 2 3 4 5 6 7 8 9

    unaCadena H o l a m u n d

    10

    o \0

    La cadena puede contar con caracteres no imprimbles y decontrol

    La frase Hola mundo esta conformada por 9 caracteresimprimibles 1 caracter de espacio y el caracter nulo

    Caracteres de control: \n, \r, \t

    Oscar Alvarado Nava UAM Azcapotzalco Cadenas 8/21

  • Arreglos en lenguaje C

    Arreglos en lenguaje C

    Cadena constante

    A pesar de que en el lenguaje C no existe el tipo de datostring, se permite hacer un arreglo de caracteres constante,para que se comporte como una cadena constante

    Una cadena constante es una lista de caracteres encerradosentre comillas: ShereKhan, Akela

    El programador no debera preocuparse por agregar el caracternulo, el compilador lo hara de manera automatica

    Oscar Alvarado Nava UAM Azcapotzalco Cadenas 9/21

  • Arreglos en lenguaje C

    Arreglos en lenguaje C

    Inicializacion de cadenas

    Las cadenas se pueden inicializar en la declaracion de unarreglo de caracteres de dos formas

    Como un arreglo de caracteres terminado con un nuloComo una cadena constante

    ...char tigre[10] = {S, h, e, r, e,K,h,a,n,\0};...char lobo[10] = Akela;

    ...char pantera[] = Bagheera;

    ...char saludo[] = Hola mundo;

    Al inciar una cadena, se puede especificar o no la longitud delarreglo

    Oscar Alvarado Nava UAM Azcapotzalco Cadenas 10/21

  • Arreglos en lenguaje C

    Arreglos en lenguaje C

    Lectura de cadenas

    La lectura de una cadena desde la entrada estandar (teclado)se puede llevar a cabo con la funcion de biblioteca scanf(3)utilizando el operador de cambio de formato %s

    La lectura desde el teclado se lleva caracter a caracter hastaque se teclea enter

    La lectura de los caracteres se truncara hasta encontar elprimer espacio y el sistema agregara el caracter nulo al final

    [oalvarado@ce ]$ man scanf

    Oscar Alvarado Nava UAM Azcapotzalco Cadenas 11/21

  • Arreglos en lenguaje C

    Arreglos en lenguaje C

    Lee una cadena y la muestra

    1 /* Programacion estructurada , 13O, Oscar Alvarado Nava2 Solicita un nombre y lo muestra */34 #include 56 int main()7 {8 char nombre [20]; /* declara un arreglo de 20 chars*/9

    10 printf("Nombre: ");11 scanf(" %s", nombre); /* notese la falta del operador & */1213 printf("El nombre: \" %s\"\n",nombre);1415 return 0;16 }

    Oscar Alvarado Nava UAM Azcapotzalco Cadenas 12/21

  • Arreglos en lenguaje C

    Arreglos en lenguaje C

    Longitud de una cadena

    1 /* Programacion estructurada , 13O, Oscar Alvarado Nava2 Solicita un nombre y muestra el numero de letras que lo conforma */34 #include 56 int main()7 {8 char nombre [10]; /* declara un arreglo de 10 chars*/9 int i=0; /*para indexar el arreglo */

    1011 printf("Nombre: ");12 scanf(" %s", nombre); /* notese la falta del operador & */1314 /*ciclo para cuenta de caracteres imprimibles */15 while(nombre[i] != \0)16 i++;1718 printf("El nombre \" %s\" tiene %d letras\n",nombre ,i);1920 return 0;21 }

    Oscar Alvarado Nava UAM Azcapotzalco Cadenas 13/21

  • Arreglos en lenguaje C

    Arreglos en lenguaje C

    Funcion de biblioteca para lectura de cadenas

    [oalvarado@ce ]$ man scanf[oalvarado@ce ]$ man gets[oalvarado@ce ]$ man fgets

    Oscar Alvarado Nava UAM Azcapotzalco Cadenas 14/21

  • Arreglos en lenguaje C

    Arreglos en lenguaje C

    Longitud de una frase

    1 /* Programacion estructurada , 13O, Oscar Alvarado Nava2 Solicita una frase y muestra el numero de caracteres que lo conforma3 Frase: Living is easy with eyes closed */45 #include 67 int main()8 {9 char frase [50]; /* declara un arreglo de 50 chars */

    10 int i=0; /*para indexar el arreglo */1112 printf("Frase: ");13 gets(frase); /* funcion de biblioteca peligrosa */1415 /*ciclo para cuenta de caracteres , incluso espacios */16 while(frase[i] != \0)17 i++;1819 printf("La frase \" %s\" tiene %d caracteres\n",frase ,i);2021 return 0;22 }

    Oscar Alvarado Nava UAM Azcapotzalco Cadenas 15/21

  • Arreglos en lenguaje C

    Arreglos en lenguaje C

    Longitud y espacios en una frase

    Oscar Alvarado Nava UAM Azcapotzalco Cadenas 16/21

  • Arreglos en lenguaje C

    Arreglos en lenguaje C

    Longitud y espacios en un nombre

    Oscar Alvarado Nava UAM Azcapotzalco Cadenas 17/21

  • Arreglos en lenguaje C

    Arreglos en lenguaje C

    Lectura de cadenas con fgets

    1 /* Programacion estructurada , 13P, Oscar Alvarado Nava2 Solicita un nombre y muestra el numero de letras que lo conforma */34 #include 5 #define MAX_LONG 206 int main()7 {8 char nombre[MAX_LONG ]; /* declara un arreglo de 20 chars */9 int i=0; /*para indexar el arreglo y como contador en los ciclos */

    10 int j=0;1112 printf("Nombre: ");13 fgets(nombre ,MAX_LONG ,stdin);1415 /* cuenta caracteres , espacios y agrega el nulo*/16 while(nombre[i] != \0)17 {18 if(nombre[i] != )19 j++;20 if(nombre[i] == \n)21 nombre[i]=\0;22 i++;23 }2425 printf("El nombre \" %s\" tiene %d letras\n",nombre ,j);2627 return 0;28 }

    Oscar Alvarado Nava UAM Azcapotzalco Cadenas 18/21

  • Arreglos en lenguaje C

    Arreglos en lenguaje C

    Cuenta mayusculas y minusculas

    Oscar Alvarado Nava UAM Azcapotzalco Cadenas 19/21

  • Arreglos en lenguaje C

    Arreglos en lenguaje C

    Funcion de biblioteca orientados a candenas

    strcpy strtok

    strncpy strsep

    strcat strspn

    strncat

    strlen

    strcmp

    strncmp

    strchr

    strrchr

    strstr

    Oscar Alvarado Nava UAM Azcapotzalco Cadenas 20/21

  • Arreglos en lenguaje C

    Arreglos en lenguaje C

    Funcion de biblioteca orientados a caracteres

    toupper isalpha

    tolower

    Oscar Alvarado Nava UAM Azcapotzalco Cadenas 21/21

    Arreglos en lenguaje CArreglos en lenguaje C