Clase Cadena de Caracteres

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 22

Informática.

● Que son?
● Para qué sirven?
● Declaración e
inicialización
● Conceptos básicos. Cadenas
● Como manipulan? de
● Ejemplos en C
● Qué podemos hacer? caracteres

Lic Francisco R. Murcia.


Repaso.
TIPO BASICO:
int , float, double, char , void
TIPO COMPUESTOS:
Vector( unidimensional )
Matriz( Multi dimensional )

Cadenas de caracteres o strings


Que son?.
Una cadena de caracteres es un vector de
caracteres, que tiene como característica
que su último carácter es el 0 (escrito
como '\0', para diferenciar del valor 0).
Este último carácter '\0' es necesar por el
lenguaje C a para identificar cuando una
cadena de caracteres finaliza.
Por lo tanto, una cadena de caracteres
tiene el mismo tratamiento que un vector
de caracteres.
Declaración.
Como un vector de char:

char cadena1[] = { 'U'. 'N'. 'I', 'V', 'E'. 'R'. 'S', 'I', 'D'. 'A', 'D'. '\0' };
o
char cadena2[] = "UNIVERSIDAD”;

Ambos vectores almacenan la misma


cadena de caracteres, pero su inicialización
estática fue diferente.

Preferimos la segunda inicialización porque


es más sencilla de escribir y de leer.
Inicialización.
char cadena1[] = { 'U'. 'N'. 'I', 'V', 'E'. 'R'. 'S', 'I', 'D'. 'A', 'D'. '\0' };
char cadena2[] = "UNIVERSIDAD”;

Nótese que por más que explícitamente no


esté escrito el carácter 0, al estar encerrado
entre comillas dobles el lenguaje C asume
que se trata de una cadena de caracteres y
genera automáticamente este carácter de
finalización.
’\n’ <- Alt+92
Manipulación.
Todo lo aprendido acerca de vectores aplica para
cadenas. Por lo tanto, no es posible asignar una
cadena a un vector:
char cadena[80];
cadena = "HOLA!"; /* INCORRECTO!! */
Sólo es posible inicializar su valor en forma
estática (como ya vimos):
char cadena[80] = "HOLA!"; /* CORRECTO */
O dinámica: A las cadenas de caracteres podemos
char cadena[80];
cadena[0] = 'H';
asignarle valores de manera más
cadena[1] = 'O'; sencilla utilizando funciones como
cadena[2] = 'L'; strcpy():
cadena[3] = 'A'; char cadena[80];
cadena[4] = '!';
strcpy(cadena, "Hola");
cadena[5] = '\0';
Conceptos Básicos.
Caracteres:
Valor entero representado como una letra
entre comillas simples. Por ejemplo: 'z'
representa al valor entero de z =122

Internamente se representa como un tipo de


dato enumerado usando el código ASCII
(código estándar americano para el
intercambio de información).
Conceptos Básicos.
Cadenas o string:

Es un arreglo de caracteres que:


Puede incluir letras, dígitos y caracteres
especiales (*, /, $)

char cadena[];

Consiste en una referencia al primer carácter


cuyo valor de la cadena es la dirección de
memoria del primer elemento.
ASCII

https://elcodigoascii.com.ar/
Constantes de Tipo Caracter
⚫ Es un estándar para referirse a un carácter
específico en C.
⚫ Para referirse al código ASCII de la letra A,
se especifica ‘A’, el cual es el 65.
⚫ Para referirse al código del carácter 9, de
forma similar, ‘9’.

Nota: El referirse al carácter, no es lo mismo que referirse al valor entero. El


9 es diferente del ‘9’.
Operaciones con Caracteres
Se puede:
Por su representación entera (ASCII).
⚫ Sumar un entero a un carácter
⚫ Restar un entero de un carácter
⚫ Restar un carácter de otro
⚫ Comparar dos caracteres entre sí

Nota: Al sumar o restar el resultado no debe salirse del rango


de representación ASCII 0 a 255
Manejo de Cadenas
Definición:
Como un arreglo de caracteres o una variable de tipo char *
char color[] = "blue";
char *colorPtr = "blue";

color tiene 5 elementos

Nota: Recuerde que una cadena se representa como un arreglo de


caracteres y termina con '\0'

Nota: Recuerde dejar espacio en el arreglo para el fin de cadena'\0‘


Manejo de Cadenas

Impresion -> printf printf(“%s”,cadena);


Manejo de Cadenas
Ingreso
Para el ingreso de cadena de caracteres por teclado podemos utilizar:
• scanf() ingresoScanf.c
Copia la entrada en el arreglo

No se necesita el '&' (porque una cadena es un puntero)


ingresofgets.c
• fgets()
● Consume todo lo que el usuario ingresa por teclado (hasta el ‘\n’
inclusive)
● Permite controlar la cantidad de caracteres leídos de teclado para
no sobrepasar el tamaño del buffer (del tamaño de la cadena
definida)

● Agrega automáticamente el ‘\0’ al final de la cadena leída


Interfaces útiles
Stdlib.h: Librería de funciones de
conversión
Ahora que sabemos utilizar fgets para leer cadena de caracteres, es necesario
aprender a convertir estas cadenas de caracteres a los distintos tipos de datos.
La interfaz ctype.h

Contiene un gran número de funciones para determinar el


tipo de carácter, entre las principales tenemos:

islower(ch) retorna 1 (TRUE) si el carácter ch es minúscula


isupper(ch) retorna 1 si el carácter ch es mayúscula
isalpha(ch) retorna 1 si ch es un valor alfabético
isdigit(ch) retorna 1 si ch es un dígito
isalnum(ch) retorna 1 si ch es un valor alfanumérico
isspace(ch) retorna 1 si ch es un carácter en blanco
La interfaz ctype.h

Pero qué sucede si el programa esperaba un número


(por ejemplo la edad de una persona) y el usuario
ingresa caracteres alfanuméricos (es decir, ingresa
letras en vez de números)? -> El programa fallará.

Entonces hay que controlar lo que el usuario ingresa


por teclado antes de hacer la conversión al tipo
deseado.

Para esto se utilizan las siguientes funciones


de ctype.h vistas en el apunte anterior:
int isdigit(int c);
funciones de string.h
• strlen(char cadena[]) retorna la cantidad de caracteres de cadena
• strcpy(char destino[], char origen[]) copia la cadena origen en destino
• strcnpy(char destino[], char origen[], int n) copia los primeros n caracteres de
cadena origen en destino
• strcat(char destino[], char origen[]) concatena (suma) la cadena origen en
destino
• strncat(char destino[], char origen[], int n) concatena (suma) los primeros n
caracteres de la cadena origen en destino
• strcmp(char cadena1[], char cadena2[]) Compara cadena1 y cadena2
retornando 0 si son iguales, un valor negativo si cadena1 < cadena2, y un
valor positivo si cadena1 > cadena2
• strncmp(char cadena1[], char cadena2[], int n) Compara los primeros n
caracteres de cadena1 y cadena2 retornando 0 si son iguales, un valor
negativo si cadena1 < cadena2, y un valor positivo si cadena1 > cadena2
Funciones de comparación de
cadenas

int strcmp( const char *s1, const char *s2 );


Comparar string s1 con s2
Retorna:
Un número negativo si s1 < s2
Cero,si s1 == s2
Un número positivo si s1 > s2

int strncmp(const char *s1,const char *s2,size_t n);


Compara n caracteres de s1 en s2
Retorna valores como los anteriores
Que más se puede hacer?

Es posible recorrer, remplazar, concatenar, buscar, sustraer


cadenas

También es posible utilizar acumuladores, contadores y


cualquier otro cálculo derivado a partir del análisis de
cadenas.

Trabajo Práctico N° 3
Anexo: Teórico Informática para Pratico 3
FIN

También podría gustarte