Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Cadenas de Caracteres: Representación, Definición y Operaciones, Apuntes de Informática

Una introducción a las cadenas de caracteres, su representación, definición y operaciones básicas en el contexto del lenguaje de programación c. El texto aborda conceptos como la representación de caracteres, la definición de cadenas, las operaciones básicas de acceso, longitud, comparación y concatenación, así como otras operaciones avanzadas como la extracción y la inserción de subcadenas, el borrado de subcadenas y la búsqueda de subcadenas.

Tipo: Apuntes

Antes del 2010

Subido el 19/12/2007

helena_vv
helena_vv 🇪🇸

3.9

(14)

59 documentos

1 / 12

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
1
Tema 6. Cadenas de
Caracteres
Tema 6. Cadenas de caracteres 2
Objetivos
Entender cómo se representan los caracteres en
un ordenador
Utilizar las cadenas de caracteres
Conocer las funciones básicas con cadenas
Implementar las cadenas de caracteres en C
pf3
pf4
pf5
pf8
pf9
pfa

Vista previa parcial del texto

¡Descarga Cadenas de Caracteres: Representación, Definición y Operaciones y más Apuntes en PDF de Informática solo en Docsity!

Tema 6. Cadenas de

Caracteres

Tema 6. Cadenas de caracteres 2

Objetivos

‡ Entender cómo se representan los caracteres en

un ordenador

‡ Utilizar las cadenas de caracteres

‡ Conocer las funciones básicas con cadenas

‡ Implementar las cadenas de caracteres en C

Tema 6. Cadenas de caracteres 3

Tema 6. Cadenas de caracteres

‡ Representación de caracteres

‡ Definición de cadenas de caracteres

‡ Operaciones básicas con cadenas

„ Asignación

„ Acceso

„ Lectura / Escritura

„ Longitud

„ Comparación (operadores relacionales)

„ Concatenación

‡ Operaciones avanzadas

„ Extracción de una subcadena

„ Inserción de una subcadena

„ Borrado de una subcadena

„ Búsqueda de una subcadena

‡ Cadenas en C

Tema 6. Cadenas de caracteres 4

Representación de caracteres

‡ Una cadena de caracteres es una sucesión finita de caracteres

‡ Para representar un carácter se utiliza un código formado por un

determinado número de bits

‡ Con n bits se representan un máximo de m=2n^ caracteres

‡ Para representar m caracteres se necesitan al menos n bits siendo

n= log 2 m

‡ Si se aplican las propiedades de los logaritmos

log 2 m log 10 m

-------- = ---------- => n= 3.16*log 10 m

log 2 10 log 10 10

‡ En realidad n es el entero inmediatamente superior que cumpla

n>= 3.16*log 10 m

Tema 6. Cadenas de caracteres 7

Declaración de cadenas

‡ La declaración de una cadena de caracteres se realiza de la

siguiente manera

var_cadena : CADENA [ longitud+1 ]

‡ Utilizaremos en la declaración la longitud+1 para reservar

espacio para el carácter nulo

‡ Ejemplos

nombre: cadena [31] {la longitud máxima de nombre es 30} dni: cadena [9] {la longitud máxima de dni es 8} telefono: cadena [10] {la longitud máxima de telefono es 9}

‡ Errores

dni: cadena [1..8] vacia: cadena [0] negativo:cadena[-7] sinlongitud:cadena[]

Tema 6. Cadenas de caracteres 8

Operaciones básicas

‡ Acceso

„ Para acceder a cada carácter de la cadena se usa la misma notación que con los arrays nombre[i] devuelve un valor de tipo carácter (OJO, NO de tipo cadena) Si nombre almacena “Alejandro”, nombre[2] devuelve ‘e’ „ Para modificar un carácter dentro de la cadena también se usa la notación de los arrays i ← 0 nombre[i] ← ‘a’ nombre[4] ← ‘o’{nombre quedaría como“alejondro”} „ A diferencia de lo que ocurre con los arrays, las cadenas son accesibles globalmente por su nombre sin necesidad de acceder elemento a elemento (es decir, no es necesario acceder carácter a carácter) nombre ← “María”

‡ Longitud de una cadena

„ long(cad): devuelve un número que indica la longitud de la cadena Long(nombre) devuelve 9

Tema 6. Cadenas de caracteres 9

Operaciones básicas

‡ Asignación

„ Las constantes cadenas deben ir entre comillas dobles para distinguirlas de las constantes carácter que utilizan comillas simples „ Hay que tener mucho cuidado en asignar cadenas con una cantidad mayor a la que se ha declarado cad, cad2: cadena[5] nombre:cadena[10] cad ← “Alejandro” {ERROR} nombre ← “Alejandro” cad2 ← nombre {ERROR}

‡ Lectura y Escritura

LEER(nombre) ESCRIBIR(nombre) „ Para leer o escribir un carácter concreto de la cadena LEER(nombre[i]) ESCRIBIR(nombre[i])

Tema 6. Cadenas de caracteres 10

Operaciones básicas

‡ Comparación de cadenas

„ La comparación se hace carácter a carácter

„ Operadores relacionales =,<,<=,>,>=,<>

“Abc”<“abc” devuelve verdad

Nombre=“alejandros” devuelve falso

‡ Concatenación de cadenas

„ CONCAT(cad1,cad2): Devuelve una cadena que es el resultado

de unir las dos cadenas cad1 y cad

„ Se puede utilizar también el operador + para la concatenación

(cad1+cad2)

cad1 ←”hola”

cad2 ← “cómo estás”

cad2 ← cad1+cad2 {cad2 contiene “holacómo estás”}

Tema 6. Cadenas de caracteres 13

Operaciones avanzadas

‡ Borrado de una subcadena

„ Procedimiento BORRA(cad,pos,num_car): borra de la cadena ‘cad’ un total de ‘num_car’ caracteres comenzando en la posición ‘pos’ „ Restricciones ‡ Si la posición a partir de la cual se desea borrar la subcadena es mayor que la longitud de la cadena, entonces debe devolver la cadena de entrada ‡ El número de caracteres a borrar debe ser un número entero positivo mayor que cero; en caso contrario debe devolverse la cadena de entrada sin borrar ningún carácter ‡ Si el número de caracteres a extraer supera el tamaño de la cadena, entonces se borrará hasta el final de la cadena de entrada y no más caracteres

‡ Búsqueda de una subcadena

„ Función BUSCA(subcad,cad): devuelve un entero que indica la posición que ocupa el primer carácter de la subcadena ‘subcad’ en la cadena ‘cad’, o un negativo si no se encuentra la subcadena dentro de la cadena

Tema 6. Cadenas de caracteres 14

Seminario 8

‡ Cadenas de caracteres

‡ Jueves 20 de diciembre de 8’30 a 9’30 (grupo A),

y de 15’30 a 16’30 (grupo B)

„ Ejercicios 1, 4, 5, 6, 7, 8 y 10 de la relación 6 de

Cadenas de Caracteres.

Tema 6. Cadenas de caracteres 15

Ejemplo: Dada un cadena eliminar los espacios

en blanco copiando el resultado en otra

cadena

ALGORITMO EliminaBlancos VARIABLES cadenaOriginal:cadena[256] // Cadena de entrada i : ENTERO // Contador para bucles j : ENTERO // Contador para el resultado longitud: ENTERO // Longitud de la cadena de entrada cadSinBlancos:cadena[256] // Cadena de salida INICIO LEER ( cadenaOriginal ) longitud ← long (cadenaOriginal) cadSinBlancos ← “” j ← 0 PARA i = 0 HASTA longitud-1 HACER SI ( cadenaOriginal [i] <> ‘ ’ ) ENTONCES cadSinBlancos[j]←cadenaOriginal[i] j ← j + 1 FIN_SI FIN_PARA cadSinBlancos[j] ← ‘\0’ ESCRIBIR (cadSinBlancos) FIN

Tema 6. Cadenas de caracteres 16

Ejemplo: Palíndromo

ALGORITMO palindromo. VARIABLES frase:CADENA[256] pal:LOGICO i,j,long2: ENTERO 1.[Lectura de los datos] ESCRIBIR(‘Introduzca la cadena sin signos de puntuación’) LEER(frase) 2.[Comprobar si es palíndromo o no] palÅVERDAD long2ÅLONGITUD(frase) DIV 2 iÅ 0 jÅLONGITUD(frase)-

MIENTRAS (pal AND (i<long2)) HACER SI (frase[i]<>frase[j]) ENTONCES palÅFALSO SINO iÅi+ jÅj- FIN_SI FIN_MIENTRAS 3.[Mostrar resultado] SI (pal) ENTONCES ESCRIBIR(‘Palíndromo !!!!’) SINO ESCRIBIR(‘NO es palíndromo’) FIN_SI 4.[Fin]

¿cómo modificarías el algoritmo para que acepte cadenas sin signos

de puntuación pero con espacios en blanco?

Tema 6. Cadenas de caracteres 19

Cadenas de caracteres en C

‡ Una cadena de caracteres es una sucesión de caracteres

representables por el ordenador que se almacenan de manera

contigua en memoria

‡ Cualquier cadena en C necesita indicar el fin de cadena con el

carácter fin de cadena ‘\0’

‡ Una cadena se puede ver como un array de caracteres pero el

array debe incluir un carácter más, el carácter fin de cadena

‡ Así, el tamaño de la cadena debe ser su longitud más 1 carácter

más (el carácter ‘\0’)

‡ La declaración de cadenas se realiza igual que si se declarara un

array de caracteres pero con un tamaño incrementado en 1

(longitud máxima de la cadena+1)

char cad[5], V[4]; H O L A \

H O L A

Cadena cad

Array V

Tema 6. Cadenas de caracteres 20

Inicialización de cadenas en C

‡ La inicialización de una cadena es uno de los temas mas

importantes y que generan más errores en la programación de

cadenas en C

‡ Puesto que toda cadena debe tener un carácter nulo al final

debemos asegurarnos que al usar una cadena, ésta incluye dicho

carácter

‡ Esto se puede realizar de varias maneras

„ Inicializando la cadena al declararla char cad[5]=“HOLA”; „ Inicializando la cadena carácter a carácter cad[0]=‘H’; cad[3]=‘A’; cad[1]=‘O’; cad[4]=‘\0’; cad[2]=‘L’; „ Utilizando strcpy (necesita #include <string.h> ) strcpy(cad,”HOLA”);

‡ NO es posible asignar una constante cadena a una variable

cadena (excepto en la declaración)

cad=”HOLA”; ERROR!!!!

Tema 6. Cadenas de caracteres 21

Operaciones básicas

‡ Declaración

char cad1[TOPE],cad2[TOPE];

‡ Asignación (#include <string.h>)

strcpy(cad1,”bob”); strcpy(cad2,”dylan”);

‡ Longitud (#include <string.h>)

strlen(cad1) es 3

‡ Acceso a los elementos

*(cad1) es igual a cad1[0] y es ‘b’ *(cad2+3) es igual a cad2[3] y es ‘a’

‡ Comparación (#include <string.h>)

strcmp(cad1,cad2) devuelve un valor menor que 0 (cad1<cad2) strcmp(cad2,cad1) devuelve un valor mayor que 0 (cad2>cad1) strcmp(cad1,cad1) devuelve 0 (cad1 es igual a cad1)

Tema 6. Cadenas de caracteres 22

Operaciones básicas

‡ Lectura (#include <stdio.h>)

scanf(“%s”,cad1); scanf no comprueba el espacio disponible. Una forma de controlarlo es: scanf ( “%5s”, cad1 ); //Lee como mucho 5 caracteres scanf lee hasta que encuentra un espacio (‘\t’, ‘\n’, ‘ ’) o llega al límite indicado. Para leer incluyendo los espacios se usa fgets: fgets ( cad1, 5, stdin ); Lee 4 caracteres, incluyendo espacios y el ‘\n’ final si está en esos 4 caracteres. Añade el ‘\0’ al final

‡ Escritura (#include <stdio.h>)

printf(“%s”,cad1); puts(cad1); //Incluye un ‘\n’ al final

‡ Concatenación (#include <string.h>)

strcat(cad1,cad2) concatena cad2 a cad1 {cad1=“bobdylan”} Se añade automáticamente el ‘\0’ al final del resultado