SlideShare una empresa de Scribd logo
1 de 28
Descargar para leer sin conexión
Funciones II y
                                            Cadena de
                                            Caracteres
                                          Nilton A. Garcia

  CIENCIAS DE LA                               Hilares




  COMPUTACIÓN I
                                        Introducción

                                        Funciones II

Funciones II y Cadena de                Recursividad
                                        Funciones con arreglos



      Caracteres                        Caracteres y Cadenas
                                        Fundamentos
                                        Cctype

      Utilizando Code::Blocks           Cstdlib
                                        Cstring



     23 de noviembre de 2011




      Lic. Nilton Alan García Hilares
  Universidad Mayor de San Marcos
                                                             2.1
Funciones II y
Contenido                       Cadena de
                                Caracteres
                              Nilton A. Garcia
                                   Hilares




 Introducción


 Funciones II               Introducción

   Recursividad             Funciones II
                            Recursividad

   Funciones con arreglos   Funciones con arreglos

                            Caracteres y Cadenas
                            Fundamentos
                            Cctype
                            Cstdlib
 Caracteres y Cadenas       Cstring

    Fundamentos
    Cctype
    Cstdlib
    Cstring




                                                 2.2
Funciones II y
Objetivos                                                               Cadena de
                                                                        Caracteres
                                                                      Nilton A. Garcia
                                                                           Hilares




                                                                    Introducción
  1   Comprender el concepto de recursividad.                       Funciones II
  2   Extender el uso de funciones relacionadas con arreglos.       Recursividad
                                                                    Funciones con arreglos

  3   Conocer las diversas librerías para trabajar con caracteres   Caracteres y Cadenas
                                                                    Fundamentos
      y cadenas.                                                    Cctype
                                                                    Cstdlib
                                                                    Cstring




                                                                                         2.3
Funciones II y
Recursividad                                                          Cadena de
                                                                      Caracteres
                                                                    Nilton A. Garcia
                                                                         Hilares

 Los programas que ya se han visto están organizados en
 general como funciones que llaman unas a otras, en forma
 jerárquica y disciplinada. Para algunos tipos de problemas es
 útil tener que se llamen a sí mismas. Una función recursiva es
 una función que se llama a si misma ya sea directa o             Introducción
 indirectamente a través de otra función.                         Funciones II
                                                                  Recursividad
                                                                  Funciones con arreglos
 Ejemplo                                                          Caracteres y Cadenas

 La función factorial puede definirse de forma recursiva:          Fundamentos
                                                                  Cctype
                                                                  Cstdlib
                                                                  Cstring
       int factorial (int N){
              int R;
              if (N==0 || N==1) R=1;
              else R=N*factorial(N-1);
              return N;
       }


                                                                                       2.4
Funciones II y
Recursividad                                                          Cadena de
                                                                      Caracteres
                                                                    Nilton A. Garcia
                                                                         Hilares

 Los programas que ya se han visto están organizados en
 general como funciones que llaman unas a otras, en forma
 jerárquica y disciplinada. Para algunos tipos de problemas es
 útil tener que se llamen a sí mismas. Una función recursiva es
 una función que se llama a si misma ya sea directa o             Introducción
 indirectamente a través de otra función.                         Funciones II
                                                                  Recursividad
                                                                  Funciones con arreglos
 Ejemplo                                                          Caracteres y Cadenas

 La función factorial puede definirse de forma recursiva:          Fundamentos
                                                                  Cctype
                                                                  Cstdlib
                                                                  Cstring
       int factorial (int N){
              int R;
              if (N==0 || N==1) R=1;
              else R=N*factorial(N-1);
              return N;
       }


                                                                                       2.4
Funciones II y
Llamadas recursivas                                                        Cadena de
                                                                           Caracteres
                                                                         Nilton A. Garcia
                                                                              Hilares

 Ejemplo
 Si se ejecuta la función factorial(5), definida anteriormente , ten-
 dremos:

                                                                       Introducción

                                                                       Funciones II
                                                                       Recursividad
                                                                       Funciones con arreglos

                                                                       Caracteres y Cadenas
                                                                       Fundamentos
                                                                       Cctype
                                                                       Cstdlib
                                                                       Cstring




                                                                                            2.5
Funciones II y
Recursividad vs Iteración                                              Cadena de
                                                                       Caracteres
                                                                     Nilton A. Garcia
                                                                          Hilares
     Cualquier problema que puede ser resuelto en forma
     recursiva también puede ser resuelto de forma iterativa.
     Normalmente se escoge un enfoque recursivo en
     preferencia a uno iterativo, cuando el enfoque recursivo es
     más natural al problema y resulta en el programador más
                                                                   Introducción
     fácil de comprender y depurar. Otra razón para
                                                                   Funciones II
     seleccionar un enfoque recursivo es que la solución           Recursividad

     iterativa pudiera no resultar aparente.                       Funciones con arreglos

                                                                   Caracteres y Cadenas
     Evite el uso de recursividad cuando se requiera               Fundamentos
                                                                   Cctype
     rendimiento. Las llamadas recursivas toman tiempo y           Cstdlib
                                                                   Cstring
     requieren memoria adicional.
     Un programa muy funcionalizado en comparación con uno
     monolítico (es decir, de una sola pieza, sin funciones)
     hace grandes cantidades de llamadas de función y estas
     consumen memoria y tiempo de ejecución en el
     procesador. Pero los programas monolíticos son difíciles
     de programar, de mantener, depurar y modificar.

                                                                                        2.6
Funciones II y
Recursividad vs Iteración                                              Cadena de
                                                                       Caracteres
                                                                     Nilton A. Garcia
                                                                          Hilares
     Cualquier problema que puede ser resuelto en forma
     recursiva también puede ser resuelto de forma iterativa.
     Normalmente se escoge un enfoque recursivo en
     preferencia a uno iterativo, cuando el enfoque recursivo es
     más natural al problema y resulta en el programador más
                                                                   Introducción
     fácil de comprender y depurar. Otra razón para
                                                                   Funciones II
     seleccionar un enfoque recursivo es que la solución           Recursividad

     iterativa pudiera no resultar aparente.                       Funciones con arreglos

                                                                   Caracteres y Cadenas
     Evite el uso de recursividad cuando se requiera               Fundamentos
                                                                   Cctype
     rendimiento. Las llamadas recursivas toman tiempo y           Cstdlib
                                                                   Cstring
     requieren memoria adicional.
     Un programa muy funcionalizado en comparación con uno
     monolítico (es decir, de una sola pieza, sin funciones)
     hace grandes cantidades de llamadas de función y estas
     consumen memoria y tiempo de ejecución en el
     procesador. Pero los programas monolíticos son difíciles
     de programar, de mantener, depurar y modificar.

                                                                                        2.6
Funciones II y
Recursividad vs Iteración                                              Cadena de
                                                                       Caracteres
                                                                     Nilton A. Garcia
                                                                          Hilares
     Cualquier problema que puede ser resuelto en forma
     recursiva también puede ser resuelto de forma iterativa.
     Normalmente se escoge un enfoque recursivo en
     preferencia a uno iterativo, cuando el enfoque recursivo es
     más natural al problema y resulta en el programador más
                                                                   Introducción
     fácil de comprender y depurar. Otra razón para
                                                                   Funciones II
     seleccionar un enfoque recursivo es que la solución           Recursividad

     iterativa pudiera no resultar aparente.                       Funciones con arreglos

                                                                   Caracteres y Cadenas
     Evite el uso de recursividad cuando se requiera               Fundamentos
                                                                   Cctype
     rendimiento. Las llamadas recursivas toman tiempo y           Cstdlib
                                                                   Cstring
     requieren memoria adicional.
     Un programa muy funcionalizado en comparación con uno
     monolítico (es decir, de una sola pieza, sin funciones)
     hace grandes cantidades de llamadas de función y estas
     consumen memoria y tiempo de ejecución en el
     procesador. Pero los programas monolíticos son difíciles
     de programar, de mantener, depurar y modificar.

                                                                                        2.6
Funciones II y
Funciones con arreglos                                                 Cadena de
                                                                       Caracteres
   1   Declaración: una función que recibe un arreglo como           Nilton A. Garcia
                                                                          Hilares
       argumento se declara de manera habitual, especificando
       el argumento que será el arreglo.
   2   Llamada: para pasar un arreglo como argumento de una
       funcione, especifique el nombre del arreglo sin corchetes.
                                                                   Introducción

 Ejemplo                                                           Funciones II
                                                                   Recursividad

 // prototipo:                                                     Funciones con arreglos

                                                                   Caracteres y Cadenas
 //void Funcion(int A[10]);                                        Fundamentos
                                                                   Cctype
                                                                   Cstdlib

 int Vector[10];                                                   Cstring


 // llamada :
 Funcion(Vector);

 Cuando se trabaja con arreglos como argumentos, es
 necesario tener el tamaño del mismo para poder efectuar los
 procedimientos necesarios sobre el mismo, por lo que el
 tamaño del arreglo también suele se r pasado como
 argumento.                                                                             2.7
Funciones II y
Funciones con arreglos                                                 Cadena de
                                                                       Caracteres
   1   Declaración: una función que recibe un arreglo como           Nilton A. Garcia
                                                                          Hilares
       argumento se declara de manera habitual, especificando
       el argumento que será el arreglo.
   2   Llamada: para pasar un arreglo como argumento de una
       funcione, especifique el nombre del arreglo sin corchetes.
                                                                   Introducción

 Ejemplo                                                           Funciones II
                                                                   Recursividad

 // prototipo:                                                     Funciones con arreglos

                                                                   Caracteres y Cadenas
 //void Funcion(int A[10]);                                        Fundamentos
                                                                   Cctype
                                                                   Cstdlib

 int Vector[10];                                                   Cstring


 // llamada :
 Funcion(Vector);

 Cuando se trabaja con arreglos como argumentos, es
 necesario tener el tamaño del mismo para poder efectuar los
 procedimientos necesarios sobre el mismo, por lo que el
 tamaño del arreglo también suele se r pasado como
 argumento.                                                                             2.7
Funciones II y
Funciones con arreglos                                                 Cadena de
                                                                       Caracteres
   1   Declaración: una función que recibe un arreglo como           Nilton A. Garcia
                                                                          Hilares
       argumento se declara de manera habitual, especificando
       el argumento que será el arreglo.
   2   Llamada: para pasar un arreglo como argumento de una
       funcione, especifique el nombre del arreglo sin corchetes.
                                                                   Introducción

 Ejemplo                                                           Funciones II
                                                                   Recursividad

 // prototipo:                                                     Funciones con arreglos

                                                                   Caracteres y Cadenas
 //void Funcion(int A[10]);                                        Fundamentos
                                                                   Cctype
                                                                   Cstdlib

 int Vector[10];                                                   Cstring


 // llamada :
 Funcion(Vector);

 Cuando se trabaja con arreglos como argumentos, es
 necesario tener el tamaño del mismo para poder efectuar los
 procedimientos necesarios sobre el mismo, por lo que el
 tamaño del arreglo también suele se r pasado como
 argumento.                                                                             2.7
Funciones II y
Cadenas y Caracteres                                                    Cadena de
                                                                        Caracteres
                                                                      Nilton A. Garcia
                                                                           Hilares


 Un carácter es el tipo básico alfanumérico, es decir que puede
 contener un carácter, un dígito numérico o un signo de
 puntuación. En C/C++ son representados mediante el tipo de
 dato char. Los tipos de dato char también son tratados como
                                                                    Introducción
 un tipo de dato numérico entero lo cual nos permite usar
                                                                    Funciones II
 variables char para trabajar con valores pequeños, siempre         Recursividad

 que lo consideremos necesario, esta una correspondencia            Funciones con arreglos

                                                                    Caracteres y Cadenas
 entre números y caracteres recibe el nombre de código ASCII.       Fundamentos
                                                                    Cctype
                                                                    Cstdlib
 Una cadena en C/C++ es un arreglo de caracteres, o valores         Cstring

 de tipo char, terminados con el carácter nulo, es decir el valor
 numérico 0. Internamente, en el ordenador, se almacenan en
 posiciones consecutivas de memoria. Este tipo de estructuras
 recibe un tratamiento muy especial, ya que es de gran utilidad
 y su uso es continuo.



                                                                                         2.8
Funciones II y
Cadenas y Caracteres                                                    Cadena de
                                                                        Caracteres
                                                                      Nilton A. Garcia
                                                                           Hilares


 Un carácter es el tipo básico alfanumérico, es decir que puede
 contener un carácter, un dígito numérico o un signo de
 puntuación. En C/C++ son representados mediante el tipo de
 dato char. Los tipos de dato char también son tratados como
                                                                    Introducción
 un tipo de dato numérico entero lo cual nos permite usar
                                                                    Funciones II
 variables char para trabajar con valores pequeños, siempre         Recursividad

 que lo consideremos necesario, esta una correspondencia            Funciones con arreglos

                                                                    Caracteres y Cadenas
 entre números y caracteres recibe el nombre de código ASCII.       Fundamentos
                                                                    Cctype
                                                                    Cstdlib
 Una cadena en C/C++ es un arreglo de caracteres, o valores         Cstring

 de tipo char, terminados con el carácter nulo, es decir el valor
 numérico 0. Internamente, en el ordenador, se almacenan en
 posiciones consecutivas de memoria. Este tipo de estructuras
 recibe un tratamiento muy especial, ya que es de gran utilidad
 y su uso es continuo.



                                                                                         2.8
Funciones II y
Cadenas y Caracteres            Cadena de
                                Caracteres
                              Nilton A. Garcia
                                   Hilares




 Ejemplo
 // Char:
 char Letra = ‘a’;          Introducción

                            Funciones II
 // Cadena:                 Recursividad
                            Funciones con arreglos
 char Palabra[] = “HOLA”;   Caracteres y Cadenas
 char Cadena[4];            Fundamentos
                            Cctype
 Cadena[0]=‘C’;             Cstdlib
                            Cstring
 Cadena[1]=‘A’;
 Cadena[2]=‘S’;
 Cadena[3]=‘A’;




                                                 2.9
Funciones II y
Biblioteca de manejo de caracteres                                   Cadena de
                                                                     Caracteres
                                                                   Nilton A. Garcia
                                                                        Hilares



 Incluye varias funciones que ejecutan pruebas útiles y
 manipulaciones de datos tipo carácter. Cada función recibe un
 carácter presentado como un int o un EOF como argumento.
                                                                 Introducción

 Cabecera                                                        Funciones II
                                                                 Recursividad
 Para utilizar la librería de funciones de caracteres se debe    Funciones con arreglos


 incluir la cabecera:                                            Caracteres y Cadenas
                                                                 Fundamentos
                                                                 Cctype
                                                                 Cstdlib
 # incluce <cctype>                                              Cstring




 Las funciones más importantes en esta librería, son las que
 nos permiten determinar la naturaleza del argumento, ya sea
 de tipo numérico, alfabético, alfanumérico, hexadecimal, etc.




                                                                                     2.10
Funciones II y
Biblioteca de manejo de caracteres                                   Cadena de
                                                                     Caracteres
                                                                   Nilton A. Garcia
                                                                        Hilares



 Incluye varias funciones que ejecutan pruebas útiles y
 manipulaciones de datos tipo carácter. Cada función recibe un
 carácter presentado como un int o un EOF como argumento.
                                                                 Introducción

 Cabecera                                                        Funciones II
                                                                 Recursividad
 Para utilizar la librería de funciones de caracteres se debe    Funciones con arreglos


 incluir la cabecera:                                            Caracteres y Cadenas
                                                                 Fundamentos
                                                                 Cctype
                                                                 Cstdlib
 # incluce <cctype>                                              Cstring




 Las funciones más importantes en esta librería, son las que
 nos permiten determinar la naturaleza del argumento, ya sea
 de tipo numérico, alfabético, alfanumérico, hexadecimal, etc.




                                                                                     2.10
Funciones II y
Biblioteca de manejo de caracteres                                   Cadena de
                                                                     Caracteres
                                                                   Nilton A. Garcia
                                                                        Hilares



 Incluye varias funciones que ejecutan pruebas útiles y
 manipulaciones de datos tipo carácter. Cada función recibe un
 carácter presentado como un int o un EOF como argumento.
                                                                 Introducción

 Cabecera                                                        Funciones II
                                                                 Recursividad
 Para utilizar la librería de funciones de caracteres se debe    Funciones con arreglos


 incluir la cabecera:                                            Caracteres y Cadenas
                                                                 Fundamentos
                                                                 Cctype
                                                                 Cstdlib
 # incluce <cctype>                                              Cstring




 Las funciones más importantes en esta librería, son las que
 nos permiten determinar la naturaleza del argumento, ya sea
 de tipo numérico, alfabético, alfanumérico, hexadecimal, etc.




                                                                                     2.10
Funciones II y
Funciones Ctype                                                         Cadena de
                                                                        Caracteres
                                                                      Nilton A. Garcia
                                                                           Hilares




        prototipo        descripcion
    int isdigit(int c)   Evalúa si c es un digito (V/F)
   int isalpha(int c)    Evalúa si c es un a letra (V/F)            Introducción

  int isalnum(int c)     Evalúa si c es una letra o digito (V/F)    Funciones II
                                                                    Recursividad
   int islower(int c)    Evalúa si c es una letra minúscula (V/F)   Funciones con arreglos


  int isupper(int c)     Evalúa si c es una letra mayúscula (V/F)   Caracteres y Cadenas
                                                                    Fundamentos
                         Evalúa si c es un espacio en blanco,)      Cctype
  int isspace(int c)                                                Cstdlib
                         tabulador o salto de linea (V/F)           Cstring

  int tolower(int c)     Regresa la minúscula de c (V/F)
  int toupper(int c)     Regresa la mayúscula de c (V/F)




                                                                                        2.11
Funciones II y
Funciones de conversión de cadenas                                     Cadena de
                                                                       Caracteres
                                                                     Nilton A. Garcia
 En esta sección presentaremos funciones de conversión de                 Hilares

 cadenas de caracteres correspondientes a la librería general
 de utilerías Cstdlib. Estas funciones convierten cadenas de
 dígitos enteros y de punto flotante.

             Prototipo            Descripción                      Introducción
  double atof(const char *nPtr)   convierte nPtr a double          Funciones II
    int atoi(const char *nPtr)    convierte nPtr a int             Recursividad
                                                                   Funciones con arreglos
   long atol(const char *nPtr)    convierte nPtr a long int        Caracteres y Cadenas
                                                                   Fundamentos
                                                                   Cctype
 Nótese que se utiliza const para la declaración de la variable,   Cstdlib

 ya que nPtr es un apuntador a constante de carácter (const        Cstring


 char), const declara que el valor del argumento no será
 modificado.
                Ejemplo
                char Numero[]=“159”;
                int N;
                N = atoi(Numero);

                                                                                       2.12
Funciones II y
Funciones de conversión de cadenas                                     Cadena de
                                                                       Caracteres
                                                                     Nilton A. Garcia
 En esta sección presentaremos funciones de conversión de                 Hilares

 cadenas de caracteres correspondientes a la librería general
 de utilerías Cstdlib. Estas funciones convierten cadenas de
 dígitos enteros y de punto flotante.

             Prototipo            Descripción                      Introducción
  double atof(const char *nPtr)   convierte nPtr a double          Funciones II
    int atoi(const char *nPtr)    convierte nPtr a int             Recursividad
                                                                   Funciones con arreglos
   long atol(const char *nPtr)    convierte nPtr a long int        Caracteres y Cadenas
                                                                   Fundamentos
                                                                   Cctype
 Nótese que se utiliza const para la declaración de la variable,   Cstdlib

 ya que nPtr es un apuntador a constante de carácter (const        Cstring


 char), const declara que el valor del argumento no será
 modificado.
                Ejemplo
                char Numero[]=“159”;
                int N;
                N = atoi(Numero);

                                                                                       2.12
Funciones II y
Funciones de conversión de cadenas                                     Cadena de
                                                                       Caracteres
                                                                     Nilton A. Garcia
 En esta sección presentaremos funciones de conversión de                 Hilares

 cadenas de caracteres correspondientes a la librería general
 de utilerías Cstdlib. Estas funciones convierten cadenas de
 dígitos enteros y de punto flotante.

             Prototipo            Descripción                      Introducción
  double atof(const char *nPtr)   convierte nPtr a double          Funciones II
    int atoi(const char *nPtr)    convierte nPtr a int             Recursividad
                                                                   Funciones con arreglos
   long atol(const char *nPtr)    convierte nPtr a long int        Caracteres y Cadenas
                                                                   Fundamentos
                                                                   Cctype
 Nótese que se utiliza const para la declaración de la variable,   Cstdlib

 ya que nPtr es un apuntador a constante de carácter (const        Cstring


 char), const declara que el valor del argumento no será
 modificado.
                Ejemplo
                char Numero[]=“159”;
                int N;
                N = atoi(Numero);

                                                                                       2.12
Funciones II y
Librería de manejo de cadenas                                               Cadena de
                                                                            Caracteres
                                                                          Nilton A. Garcia
                                                                               Hilares



 la librería de manejo de cadenas proporciona muchas
 funciones útiles para manipular datos de cadenas, comparar
 cadenas, buscar en cadenas de caracteres y otras cadenas,
 dividir cadenas y determinar la longitud de las mismas.
                                                                        Introducción

                                                                        Funciones II
 Cabecera                                                               Recursividad
                                                                        Funciones con arreglos

 Para utilizar la librería de manejo de cadena se debe incluir la       Caracteres y Cadenas

 cabecera:                                                              Fundamentos
                                                                        Cctype
                                                                        Cstdlib
                                                                        Cstring
 # incluce <cstring>

 Las funciones más importantes de esta librería son: strcpy,
 strncpy, strcat, strncat, strncmp, strncmp, strchr, strrchr, strstr,
 strlen.



                                                                                            2.13
Funciones II y
Librería de manejo de cadenas                                               Cadena de
                                                                            Caracteres
                                                                          Nilton A. Garcia
                                                                               Hilares



 la librería de manejo de cadenas proporciona muchas
 funciones útiles para manipular datos de cadenas, comparar
 cadenas, buscar en cadenas de caracteres y otras cadenas,
 dividir cadenas y determinar la longitud de las mismas.
                                                                        Introducción

                                                                        Funciones II
 Cabecera                                                               Recursividad
                                                                        Funciones con arreglos

 Para utilizar la librería de manejo de cadena se debe incluir la       Caracteres y Cadenas

 cabecera:                                                              Fundamentos
                                                                        Cctype
                                                                        Cstdlib
                                                                        Cstring
 # incluce <cstring>

 Las funciones más importantes de esta librería son: strcpy,
 strncpy, strcat, strncat, strncmp, strncmp, strchr, strrchr, strstr,
 strlen.



                                                                                            2.13
Funciones II y
Librería de manejo de cadenas                                               Cadena de
                                                                            Caracteres
                                                                          Nilton A. Garcia
                                                                               Hilares



 la librería de manejo de cadenas proporciona muchas
 funciones útiles para manipular datos de cadenas, comparar
 cadenas, buscar en cadenas de caracteres y otras cadenas,
 dividir cadenas y determinar la longitud de las mismas.
                                                                        Introducción

                                                                        Funciones II
 Cabecera                                                               Recursividad
                                                                        Funciones con arreglos

 Para utilizar la librería de manejo de cadena se debe incluir la       Caracteres y Cadenas

 cabecera:                                                              Fundamentos
                                                                        Cctype
                                                                        Cstdlib
                                                                        Cstring
 # incluce <cstring>

 Las funciones más importantes de esta librería son: strcpy,
 strncpy, strcat, strncat, strncmp, strncmp, strchr, strrchr, strstr,
 strlen.



                                                                                            2.13
Funciones II y
Funciones de manipulacion de cadenas                         Cadena de
                                                             Caracteres
                                                           Nilton A. Garcia
                                                                Hilares
         Prototipo / Descripción
         size_t strlen(const char *s)
         Determina la longuitud de la cadena S
         char *strcpy(char *s1, const char *s2)
         Copia s2 a s1, regresando s1
         char *strncpy(char *s1, const char *s2, size)   Introducción

         Copia n caracteres de s2 a s1, regresando s1    Funciones II
                                                         Recursividad
         char *strcat(char *s1, const char *s2, size)    Funciones con arreglos

         Agrega s2 a s1, regresando s1                   Caracteres y Cadenas
                                                         Fundamentos
         char *strncat(char *s1, const char *s2, size)   Cctype

         Agrega n caracteres de s2 a s1, regresando s1   Cstdlib
                                                         Cstring



                     Ejemplo
                     char S1[20];
                     char S2[]=“Palabra”;

                     strcpy(S1,S2);
                     strcat(S1,S2);

                                                                             2.14
Funciones II y
Funciones de comparacion de cadenas                         Cadena de
                                                            Caracteres
                                                          Nilton A. Garcia
         Prototipo / Descripción                               Hilares



         int *strcmp(const char *s1, const char *s2)
           Compara s1 con s2, regresa
           (0 si s1 = s2, -1 si s1<s2 y 1 si s1>s2)
                                                        Introducción
         int *strncmp(const char *s1, const char *s2)
                                                        Funciones II
           Compara n caracteres de s1 con s2, regresa   Recursividad

           (0 si s1 = s2, -1 si s1<s2 y 1 si s1>s2)     Funciones con arreglos

                                                        Caracteres y Cadenas
                                                        Fundamentos
                                                        Cctype
                                                        Cstdlib
                Ejemplo                                 Cstring


                char S1[]=“Hola mundo”;
                char S2[]=“Hola mundo”;
                char S3[]=“Hola planeta”;

                strcmp(S1,S2); // retorna 0
                strcat(S1,S3); // retorna -1
                strncmp(S1,S3,4); // retorna 0
                strncmp(S1,S3,6); // retorna -1
                                                                            2.15
Funciones II y
Funciones de busqueda de cadenas                                      Cadena de
                                                                      Caracteres
                                                                    Nilton A. Garcia
       Prototipo / Descripción                                           Hilares


       char *strchr(const char *s, int c)
        Localiza la primera instancia del caracter c en s
        si lo localiza devuelve un apuntador a c,
        si no un apuntador NULL
       char *strrchr(const char *s, int c)
                                                                  Introducción
        Localiza la ultima instancia del caracter c en s
        si lo localiza devuelve un apuntador a c,                 Funciones II
                                                                  Recursividad
        si no un apuntador NULL                                   Funciones con arreglos
       char *strstr(const char *s1, const char *s2)               Caracteres y Cadenas
        Localiza la primera ocurrencia de s2 en s1                Fundamentos

        si lo localiza devuelve un apuntador a la cadena en s1,   Cctype
                                                                  Cstdlib
        si no un apuntador NULL                                   Cstring




         Ejemplo
         char S1[]=“Hola mundooo!”;
         char S2[]=“mu”;
         char C = ‘o”;

         strchr(S1,C); // retorna “ola mundooo!”
         strrchr(S1,C); // retorna “o!”
         strstr(S1,S2); // retorna “mundooo!”
                                                                                      2.16

Más contenido relacionado

Último

Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfcoloncopias5
 
libro para colorear de Peppa pig, ideal para educación inicial
libro para colorear de Peppa pig, ideal para educación iniciallibro para colorear de Peppa pig, ideal para educación inicial
libro para colorear de Peppa pig, ideal para educación inicialLorenaSanchez350426
 
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfMapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfvictorbeltuce
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxYeseniaRivera50
 
MODELO DE INFORME DE INDAGACION CIENTIFICA .docx
MODELO DE INFORME DE INDAGACION CIENTIFICA .docxMODELO DE INFORME DE INDAGACION CIENTIFICA .docx
MODELO DE INFORME DE INDAGACION CIENTIFICA .docxRAMON EUSTAQUIO CARO BAYONA
 
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfAlfredoRamirez953210
 
SIMULACROS Y SIMULACIONES DE SISMO 2024.docx
SIMULACROS Y SIMULACIONES DE SISMO 2024.docxSIMULACROS Y SIMULACIONES DE SISMO 2024.docx
SIMULACROS Y SIMULACIONES DE SISMO 2024.docxLudy Ventocilla Napanga
 
EDUCACION FISICA 1° PROGRAMACIÓN ANUAL 2023.docx
EDUCACION FISICA 1°  PROGRAMACIÓN ANUAL 2023.docxEDUCACION FISICA 1°  PROGRAMACIÓN ANUAL 2023.docx
EDUCACION FISICA 1° PROGRAMACIÓN ANUAL 2023.docxLuisAndersonPachasto
 
sesión de aprendizaje 4 E1 Exposición oral.pdf
sesión de aprendizaje 4 E1 Exposición oral.pdfsesión de aprendizaje 4 E1 Exposición oral.pdf
sesión de aprendizaje 4 E1 Exposición oral.pdfpatriciavsquezbecerr
 
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdf
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdfFichas de MatemáticA QUINTO DE SECUNDARIA).pdf
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdfssuser50d1252
 
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfFichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfssuser50d1252
 
Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Angélica Soledad Vega Ramírez
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfDaniel Ángel Corral de la Mata, Ph.D.
 
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfFichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfssuser50d1252
 
05 Fenomenos fisicos y quimicos de la materia.pdf
05 Fenomenos fisicos y quimicos de la materia.pdf05 Fenomenos fisicos y quimicos de la materia.pdf
05 Fenomenos fisicos y quimicos de la materia.pdfRAMON EUSTAQUIO CARO BAYONA
 

Último (20)

Aedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptxAedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptx
 
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdfFisiologia.Articular. 3 Kapandji.6a.Ed.pdf
Fisiologia.Articular. 3 Kapandji.6a.Ed.pdf
 
libro para colorear de Peppa pig, ideal para educación inicial
libro para colorear de Peppa pig, ideal para educación iniciallibro para colorear de Peppa pig, ideal para educación inicial
libro para colorear de Peppa pig, ideal para educación inicial
 
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfMapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
 
MODELO DE INFORME DE INDAGACION CIENTIFICA .docx
MODELO DE INFORME DE INDAGACION CIENTIFICA .docxMODELO DE INFORME DE INDAGACION CIENTIFICA .docx
MODELO DE INFORME DE INDAGACION CIENTIFICA .docx
 
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
 
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdfTema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
Tema 7.- E-COMMERCE SISTEMAS DE INFORMACION.pdf
 
Earth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversaryEarth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversary
 
SIMULACROS Y SIMULACIONES DE SISMO 2024.docx
SIMULACROS Y SIMULACIONES DE SISMO 2024.docxSIMULACROS Y SIMULACIONES DE SISMO 2024.docx
SIMULACROS Y SIMULACIONES DE SISMO 2024.docx
 
Aedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptxAedes aegypti + Intro to Coquies EE.pptx
Aedes aegypti + Intro to Coquies EE.pptx
 
TL/CNL – 2.ª FASE .
TL/CNL – 2.ª FASE                       .TL/CNL – 2.ª FASE                       .
TL/CNL – 2.ª FASE .
 
EDUCACION FISICA 1° PROGRAMACIÓN ANUAL 2023.docx
EDUCACION FISICA 1°  PROGRAMACIÓN ANUAL 2023.docxEDUCACION FISICA 1°  PROGRAMACIÓN ANUAL 2023.docx
EDUCACION FISICA 1° PROGRAMACIÓN ANUAL 2023.docx
 
sesión de aprendizaje 4 E1 Exposición oral.pdf
sesión de aprendizaje 4 E1 Exposición oral.pdfsesión de aprendizaje 4 E1 Exposición oral.pdf
sesión de aprendizaje 4 E1 Exposición oral.pdf
 
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdf
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdfFichas de MatemáticA QUINTO DE SECUNDARIA).pdf
Fichas de MatemáticA QUINTO DE SECUNDARIA).pdf
 
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdfFichas de Matemática TERCERO DE SECUNDARIA.pdf
Fichas de Matemática TERCERO DE SECUNDARIA.pdf
 
Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...Contextualización y aproximación al objeto de estudio de investigación cualit...
Contextualización y aproximación al objeto de estudio de investigación cualit...
 
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdfTema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
Tema 8.- Gestion de la imagen a traves de la comunicacion de crisis.pdf
 
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfFichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
 
05 Fenomenos fisicos y quimicos de la materia.pdf
05 Fenomenos fisicos y quimicos de la materia.pdf05 Fenomenos fisicos y quimicos de la materia.pdf
05 Fenomenos fisicos y quimicos de la materia.pdf
 

Destacado

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Destacado (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Clase 9

  • 1. Funciones II y Cadena de Caracteres Nilton A. Garcia CIENCIAS DE LA Hilares COMPUTACIÓN I Introducción Funciones II Funciones II y Cadena de Recursividad Funciones con arreglos Caracteres Caracteres y Cadenas Fundamentos Cctype Utilizando Code::Blocks Cstdlib Cstring 23 de noviembre de 2011 Lic. Nilton Alan García Hilares Universidad Mayor de San Marcos 2.1
  • 2. Funciones II y Contenido Cadena de Caracteres Nilton A. Garcia Hilares Introducción Funciones II Introducción Recursividad Funciones II Recursividad Funciones con arreglos Funciones con arreglos Caracteres y Cadenas Fundamentos Cctype Cstdlib Caracteres y Cadenas Cstring Fundamentos Cctype Cstdlib Cstring 2.2
  • 3. Funciones II y Objetivos Cadena de Caracteres Nilton A. Garcia Hilares Introducción 1 Comprender el concepto de recursividad. Funciones II 2 Extender el uso de funciones relacionadas con arreglos. Recursividad Funciones con arreglos 3 Conocer las diversas librerías para trabajar con caracteres Caracteres y Cadenas Fundamentos y cadenas. Cctype Cstdlib Cstring 2.3
  • 4. Funciones II y Recursividad Cadena de Caracteres Nilton A. Garcia Hilares Los programas que ya se han visto están organizados en general como funciones que llaman unas a otras, en forma jerárquica y disciplinada. Para algunos tipos de problemas es útil tener que se llamen a sí mismas. Una función recursiva es una función que se llama a si misma ya sea directa o Introducción indirectamente a través de otra función. Funciones II Recursividad Funciones con arreglos Ejemplo Caracteres y Cadenas La función factorial puede definirse de forma recursiva: Fundamentos Cctype Cstdlib Cstring int factorial (int N){ int R; if (N==0 || N==1) R=1; else R=N*factorial(N-1); return N; } 2.4
  • 5. Funciones II y Recursividad Cadena de Caracteres Nilton A. Garcia Hilares Los programas que ya se han visto están organizados en general como funciones que llaman unas a otras, en forma jerárquica y disciplinada. Para algunos tipos de problemas es útil tener que se llamen a sí mismas. Una función recursiva es una función que se llama a si misma ya sea directa o Introducción indirectamente a través de otra función. Funciones II Recursividad Funciones con arreglos Ejemplo Caracteres y Cadenas La función factorial puede definirse de forma recursiva: Fundamentos Cctype Cstdlib Cstring int factorial (int N){ int R; if (N==0 || N==1) R=1; else R=N*factorial(N-1); return N; } 2.4
  • 6. Funciones II y Llamadas recursivas Cadena de Caracteres Nilton A. Garcia Hilares Ejemplo Si se ejecuta la función factorial(5), definida anteriormente , ten- dremos: Introducción Funciones II Recursividad Funciones con arreglos Caracteres y Cadenas Fundamentos Cctype Cstdlib Cstring 2.5
  • 7. Funciones II y Recursividad vs Iteración Cadena de Caracteres Nilton A. Garcia Hilares Cualquier problema que puede ser resuelto en forma recursiva también puede ser resuelto de forma iterativa. Normalmente se escoge un enfoque recursivo en preferencia a uno iterativo, cuando el enfoque recursivo es más natural al problema y resulta en el programador más Introducción fácil de comprender y depurar. Otra razón para Funciones II seleccionar un enfoque recursivo es que la solución Recursividad iterativa pudiera no resultar aparente. Funciones con arreglos Caracteres y Cadenas Evite el uso de recursividad cuando se requiera Fundamentos Cctype rendimiento. Las llamadas recursivas toman tiempo y Cstdlib Cstring requieren memoria adicional. Un programa muy funcionalizado en comparación con uno monolítico (es decir, de una sola pieza, sin funciones) hace grandes cantidades de llamadas de función y estas consumen memoria y tiempo de ejecución en el procesador. Pero los programas monolíticos son difíciles de programar, de mantener, depurar y modificar. 2.6
  • 8. Funciones II y Recursividad vs Iteración Cadena de Caracteres Nilton A. Garcia Hilares Cualquier problema que puede ser resuelto en forma recursiva también puede ser resuelto de forma iterativa. Normalmente se escoge un enfoque recursivo en preferencia a uno iterativo, cuando el enfoque recursivo es más natural al problema y resulta en el programador más Introducción fácil de comprender y depurar. Otra razón para Funciones II seleccionar un enfoque recursivo es que la solución Recursividad iterativa pudiera no resultar aparente. Funciones con arreglos Caracteres y Cadenas Evite el uso de recursividad cuando se requiera Fundamentos Cctype rendimiento. Las llamadas recursivas toman tiempo y Cstdlib Cstring requieren memoria adicional. Un programa muy funcionalizado en comparación con uno monolítico (es decir, de una sola pieza, sin funciones) hace grandes cantidades de llamadas de función y estas consumen memoria y tiempo de ejecución en el procesador. Pero los programas monolíticos son difíciles de programar, de mantener, depurar y modificar. 2.6
  • 9. Funciones II y Recursividad vs Iteración Cadena de Caracteres Nilton A. Garcia Hilares Cualquier problema que puede ser resuelto en forma recursiva también puede ser resuelto de forma iterativa. Normalmente se escoge un enfoque recursivo en preferencia a uno iterativo, cuando el enfoque recursivo es más natural al problema y resulta en el programador más Introducción fácil de comprender y depurar. Otra razón para Funciones II seleccionar un enfoque recursivo es que la solución Recursividad iterativa pudiera no resultar aparente. Funciones con arreglos Caracteres y Cadenas Evite el uso de recursividad cuando se requiera Fundamentos Cctype rendimiento. Las llamadas recursivas toman tiempo y Cstdlib Cstring requieren memoria adicional. Un programa muy funcionalizado en comparación con uno monolítico (es decir, de una sola pieza, sin funciones) hace grandes cantidades de llamadas de función y estas consumen memoria y tiempo de ejecución en el procesador. Pero los programas monolíticos son difíciles de programar, de mantener, depurar y modificar. 2.6
  • 10. Funciones II y Funciones con arreglos Cadena de Caracteres 1 Declaración: una función que recibe un arreglo como Nilton A. Garcia Hilares argumento se declara de manera habitual, especificando el argumento que será el arreglo. 2 Llamada: para pasar un arreglo como argumento de una funcione, especifique el nombre del arreglo sin corchetes. Introducción Ejemplo Funciones II Recursividad // prototipo: Funciones con arreglos Caracteres y Cadenas //void Funcion(int A[10]); Fundamentos Cctype Cstdlib int Vector[10]; Cstring // llamada : Funcion(Vector); Cuando se trabaja con arreglos como argumentos, es necesario tener el tamaño del mismo para poder efectuar los procedimientos necesarios sobre el mismo, por lo que el tamaño del arreglo también suele se r pasado como argumento. 2.7
  • 11. Funciones II y Funciones con arreglos Cadena de Caracteres 1 Declaración: una función que recibe un arreglo como Nilton A. Garcia Hilares argumento se declara de manera habitual, especificando el argumento que será el arreglo. 2 Llamada: para pasar un arreglo como argumento de una funcione, especifique el nombre del arreglo sin corchetes. Introducción Ejemplo Funciones II Recursividad // prototipo: Funciones con arreglos Caracteres y Cadenas //void Funcion(int A[10]); Fundamentos Cctype Cstdlib int Vector[10]; Cstring // llamada : Funcion(Vector); Cuando se trabaja con arreglos como argumentos, es necesario tener el tamaño del mismo para poder efectuar los procedimientos necesarios sobre el mismo, por lo que el tamaño del arreglo también suele se r pasado como argumento. 2.7
  • 12. Funciones II y Funciones con arreglos Cadena de Caracteres 1 Declaración: una función que recibe un arreglo como Nilton A. Garcia Hilares argumento se declara de manera habitual, especificando el argumento que será el arreglo. 2 Llamada: para pasar un arreglo como argumento de una funcione, especifique el nombre del arreglo sin corchetes. Introducción Ejemplo Funciones II Recursividad // prototipo: Funciones con arreglos Caracteres y Cadenas //void Funcion(int A[10]); Fundamentos Cctype Cstdlib int Vector[10]; Cstring // llamada : Funcion(Vector); Cuando se trabaja con arreglos como argumentos, es necesario tener el tamaño del mismo para poder efectuar los procedimientos necesarios sobre el mismo, por lo que el tamaño del arreglo también suele se r pasado como argumento. 2.7
  • 13. Funciones II y Cadenas y Caracteres Cadena de Caracteres Nilton A. Garcia Hilares Un carácter es el tipo básico alfanumérico, es decir que puede contener un carácter, un dígito numérico o un signo de puntuación. En C/C++ son representados mediante el tipo de dato char. Los tipos de dato char también son tratados como Introducción un tipo de dato numérico entero lo cual nos permite usar Funciones II variables char para trabajar con valores pequeños, siempre Recursividad que lo consideremos necesario, esta una correspondencia Funciones con arreglos Caracteres y Cadenas entre números y caracteres recibe el nombre de código ASCII. Fundamentos Cctype Cstdlib Una cadena en C/C++ es un arreglo de caracteres, o valores Cstring de tipo char, terminados con el carácter nulo, es decir el valor numérico 0. Internamente, en el ordenador, se almacenan en posiciones consecutivas de memoria. Este tipo de estructuras recibe un tratamiento muy especial, ya que es de gran utilidad y su uso es continuo. 2.8
  • 14. Funciones II y Cadenas y Caracteres Cadena de Caracteres Nilton A. Garcia Hilares Un carácter es el tipo básico alfanumérico, es decir que puede contener un carácter, un dígito numérico o un signo de puntuación. En C/C++ son representados mediante el tipo de dato char. Los tipos de dato char también son tratados como Introducción un tipo de dato numérico entero lo cual nos permite usar Funciones II variables char para trabajar con valores pequeños, siempre Recursividad que lo consideremos necesario, esta una correspondencia Funciones con arreglos Caracteres y Cadenas entre números y caracteres recibe el nombre de código ASCII. Fundamentos Cctype Cstdlib Una cadena en C/C++ es un arreglo de caracteres, o valores Cstring de tipo char, terminados con el carácter nulo, es decir el valor numérico 0. Internamente, en el ordenador, se almacenan en posiciones consecutivas de memoria. Este tipo de estructuras recibe un tratamiento muy especial, ya que es de gran utilidad y su uso es continuo. 2.8
  • 15. Funciones II y Cadenas y Caracteres Cadena de Caracteres Nilton A. Garcia Hilares Ejemplo // Char: char Letra = ‘a’; Introducción Funciones II // Cadena: Recursividad Funciones con arreglos char Palabra[] = “HOLA”; Caracteres y Cadenas char Cadena[4]; Fundamentos Cctype Cadena[0]=‘C’; Cstdlib Cstring Cadena[1]=‘A’; Cadena[2]=‘S’; Cadena[3]=‘A’; 2.9
  • 16. Funciones II y Biblioteca de manejo de caracteres Cadena de Caracteres Nilton A. Garcia Hilares Incluye varias funciones que ejecutan pruebas útiles y manipulaciones de datos tipo carácter. Cada función recibe un carácter presentado como un int o un EOF como argumento. Introducción Cabecera Funciones II Recursividad Para utilizar la librería de funciones de caracteres se debe Funciones con arreglos incluir la cabecera: Caracteres y Cadenas Fundamentos Cctype Cstdlib # incluce <cctype> Cstring Las funciones más importantes en esta librería, son las que nos permiten determinar la naturaleza del argumento, ya sea de tipo numérico, alfabético, alfanumérico, hexadecimal, etc. 2.10
  • 17. Funciones II y Biblioteca de manejo de caracteres Cadena de Caracteres Nilton A. Garcia Hilares Incluye varias funciones que ejecutan pruebas útiles y manipulaciones de datos tipo carácter. Cada función recibe un carácter presentado como un int o un EOF como argumento. Introducción Cabecera Funciones II Recursividad Para utilizar la librería de funciones de caracteres se debe Funciones con arreglos incluir la cabecera: Caracteres y Cadenas Fundamentos Cctype Cstdlib # incluce <cctype> Cstring Las funciones más importantes en esta librería, son las que nos permiten determinar la naturaleza del argumento, ya sea de tipo numérico, alfabético, alfanumérico, hexadecimal, etc. 2.10
  • 18. Funciones II y Biblioteca de manejo de caracteres Cadena de Caracteres Nilton A. Garcia Hilares Incluye varias funciones que ejecutan pruebas útiles y manipulaciones de datos tipo carácter. Cada función recibe un carácter presentado como un int o un EOF como argumento. Introducción Cabecera Funciones II Recursividad Para utilizar la librería de funciones de caracteres se debe Funciones con arreglos incluir la cabecera: Caracteres y Cadenas Fundamentos Cctype Cstdlib # incluce <cctype> Cstring Las funciones más importantes en esta librería, son las que nos permiten determinar la naturaleza del argumento, ya sea de tipo numérico, alfabético, alfanumérico, hexadecimal, etc. 2.10
  • 19. Funciones II y Funciones Ctype Cadena de Caracteres Nilton A. Garcia Hilares prototipo descripcion int isdigit(int c) Evalúa si c es un digito (V/F) int isalpha(int c) Evalúa si c es un a letra (V/F) Introducción int isalnum(int c) Evalúa si c es una letra o digito (V/F) Funciones II Recursividad int islower(int c) Evalúa si c es una letra minúscula (V/F) Funciones con arreglos int isupper(int c) Evalúa si c es una letra mayúscula (V/F) Caracteres y Cadenas Fundamentos Evalúa si c es un espacio en blanco,) Cctype int isspace(int c) Cstdlib tabulador o salto de linea (V/F) Cstring int tolower(int c) Regresa la minúscula de c (V/F) int toupper(int c) Regresa la mayúscula de c (V/F) 2.11
  • 20. Funciones II y Funciones de conversión de cadenas Cadena de Caracteres Nilton A. Garcia En esta sección presentaremos funciones de conversión de Hilares cadenas de caracteres correspondientes a la librería general de utilerías Cstdlib. Estas funciones convierten cadenas de dígitos enteros y de punto flotante. Prototipo Descripción Introducción double atof(const char *nPtr) convierte nPtr a double Funciones II int atoi(const char *nPtr) convierte nPtr a int Recursividad Funciones con arreglos long atol(const char *nPtr) convierte nPtr a long int Caracteres y Cadenas Fundamentos Cctype Nótese que se utiliza const para la declaración de la variable, Cstdlib ya que nPtr es un apuntador a constante de carácter (const Cstring char), const declara que el valor del argumento no será modificado. Ejemplo char Numero[]=“159”; int N; N = atoi(Numero); 2.12
  • 21. Funciones II y Funciones de conversión de cadenas Cadena de Caracteres Nilton A. Garcia En esta sección presentaremos funciones de conversión de Hilares cadenas de caracteres correspondientes a la librería general de utilerías Cstdlib. Estas funciones convierten cadenas de dígitos enteros y de punto flotante. Prototipo Descripción Introducción double atof(const char *nPtr) convierte nPtr a double Funciones II int atoi(const char *nPtr) convierte nPtr a int Recursividad Funciones con arreglos long atol(const char *nPtr) convierte nPtr a long int Caracteres y Cadenas Fundamentos Cctype Nótese que se utiliza const para la declaración de la variable, Cstdlib ya que nPtr es un apuntador a constante de carácter (const Cstring char), const declara que el valor del argumento no será modificado. Ejemplo char Numero[]=“159”; int N; N = atoi(Numero); 2.12
  • 22. Funciones II y Funciones de conversión de cadenas Cadena de Caracteres Nilton A. Garcia En esta sección presentaremos funciones de conversión de Hilares cadenas de caracteres correspondientes a la librería general de utilerías Cstdlib. Estas funciones convierten cadenas de dígitos enteros y de punto flotante. Prototipo Descripción Introducción double atof(const char *nPtr) convierte nPtr a double Funciones II int atoi(const char *nPtr) convierte nPtr a int Recursividad Funciones con arreglos long atol(const char *nPtr) convierte nPtr a long int Caracteres y Cadenas Fundamentos Cctype Nótese que se utiliza const para la declaración de la variable, Cstdlib ya que nPtr es un apuntador a constante de carácter (const Cstring char), const declara que el valor del argumento no será modificado. Ejemplo char Numero[]=“159”; int N; N = atoi(Numero); 2.12
  • 23. Funciones II y Librería de manejo de cadenas Cadena de Caracteres Nilton A. Garcia Hilares la librería de manejo de cadenas proporciona muchas funciones útiles para manipular datos de cadenas, comparar cadenas, buscar en cadenas de caracteres y otras cadenas, dividir cadenas y determinar la longitud de las mismas. Introducción Funciones II Cabecera Recursividad Funciones con arreglos Para utilizar la librería de manejo de cadena se debe incluir la Caracteres y Cadenas cabecera: Fundamentos Cctype Cstdlib Cstring # incluce <cstring> Las funciones más importantes de esta librería son: strcpy, strncpy, strcat, strncat, strncmp, strncmp, strchr, strrchr, strstr, strlen. 2.13
  • 24. Funciones II y Librería de manejo de cadenas Cadena de Caracteres Nilton A. Garcia Hilares la librería de manejo de cadenas proporciona muchas funciones útiles para manipular datos de cadenas, comparar cadenas, buscar en cadenas de caracteres y otras cadenas, dividir cadenas y determinar la longitud de las mismas. Introducción Funciones II Cabecera Recursividad Funciones con arreglos Para utilizar la librería de manejo de cadena se debe incluir la Caracteres y Cadenas cabecera: Fundamentos Cctype Cstdlib Cstring # incluce <cstring> Las funciones más importantes de esta librería son: strcpy, strncpy, strcat, strncat, strncmp, strncmp, strchr, strrchr, strstr, strlen. 2.13
  • 25. Funciones II y Librería de manejo de cadenas Cadena de Caracteres Nilton A. Garcia Hilares la librería de manejo de cadenas proporciona muchas funciones útiles para manipular datos de cadenas, comparar cadenas, buscar en cadenas de caracteres y otras cadenas, dividir cadenas y determinar la longitud de las mismas. Introducción Funciones II Cabecera Recursividad Funciones con arreglos Para utilizar la librería de manejo de cadena se debe incluir la Caracteres y Cadenas cabecera: Fundamentos Cctype Cstdlib Cstring # incluce <cstring> Las funciones más importantes de esta librería son: strcpy, strncpy, strcat, strncat, strncmp, strncmp, strchr, strrchr, strstr, strlen. 2.13
  • 26. Funciones II y Funciones de manipulacion de cadenas Cadena de Caracteres Nilton A. Garcia Hilares Prototipo / Descripción size_t strlen(const char *s) Determina la longuitud de la cadena S char *strcpy(char *s1, const char *s2) Copia s2 a s1, regresando s1 char *strncpy(char *s1, const char *s2, size) Introducción Copia n caracteres de s2 a s1, regresando s1 Funciones II Recursividad char *strcat(char *s1, const char *s2, size) Funciones con arreglos Agrega s2 a s1, regresando s1 Caracteres y Cadenas Fundamentos char *strncat(char *s1, const char *s2, size) Cctype Agrega n caracteres de s2 a s1, regresando s1 Cstdlib Cstring Ejemplo char S1[20]; char S2[]=“Palabra”; strcpy(S1,S2); strcat(S1,S2); 2.14
  • 27. Funciones II y Funciones de comparacion de cadenas Cadena de Caracteres Nilton A. Garcia Prototipo / Descripción Hilares int *strcmp(const char *s1, const char *s2) Compara s1 con s2, regresa (0 si s1 = s2, -1 si s1<s2 y 1 si s1>s2) Introducción int *strncmp(const char *s1, const char *s2) Funciones II Compara n caracteres de s1 con s2, regresa Recursividad (0 si s1 = s2, -1 si s1<s2 y 1 si s1>s2) Funciones con arreglos Caracteres y Cadenas Fundamentos Cctype Cstdlib Ejemplo Cstring char S1[]=“Hola mundo”; char S2[]=“Hola mundo”; char S3[]=“Hola planeta”; strcmp(S1,S2); // retorna 0 strcat(S1,S3); // retorna -1 strncmp(S1,S3,4); // retorna 0 strncmp(S1,S3,6); // retorna -1 2.15
  • 28. Funciones II y Funciones de busqueda de cadenas Cadena de Caracteres Nilton A. Garcia Prototipo / Descripción Hilares char *strchr(const char *s, int c) Localiza la primera instancia del caracter c en s si lo localiza devuelve un apuntador a c, si no un apuntador NULL char *strrchr(const char *s, int c) Introducción Localiza la ultima instancia del caracter c en s si lo localiza devuelve un apuntador a c, Funciones II Recursividad si no un apuntador NULL Funciones con arreglos char *strstr(const char *s1, const char *s2) Caracteres y Cadenas Localiza la primera ocurrencia de s2 en s1 Fundamentos si lo localiza devuelve un apuntador a la cadena en s1, Cctype Cstdlib si no un apuntador NULL Cstring Ejemplo char S1[]=“Hola mundooo!”; char S2[]=“mu”; char C = ‘o”; strchr(S1,C); // retorna “ola mundooo!” strrchr(S1,C); // retorna “o!” strstr(S1,S2); // retorna “mundooo!” 2.16