Sunteți pe pagina 1din 6

Acceder a las letras de una cadena

Podemos acceder a las letras que forman una cadena usando corchetes, como si se tratara de un
array de caracteres, en el que el primer elemento está en la posición 1 y la cantidad de letras se
sabe con "length":

(* STRING2.PAS, Acceder a las letras de un string *)

(* Parte de CUPAS5, por Nacho Cabanes *)

program String2;

var

saludo: string;

begin

saludo := 'Hola, soy un texto';

writeLn( 'El texto tiene ', length(saludo), ' letras' );

writeLn( 'La primera es ', saludo[1] );

end.

(* Resultado:

El texto tiene 18 letras

La primera es H

*)

Ejercicio propuesto 4.2.2.1: Crea un programa que te pida tu nombre y lo muestre al revés (de
la última letra a la primera).
Ejercicio propuesto 4.2.2.2: Crea un programa que te pida tu nombre y muestre las letras
separadas por espacios (por ejemplo, "Nacho" se convertiría en "N a c h o".

4.2.3. Operaciones habituales con cadenas


Podemos crear una cadena a partir de varias (concatenar), usando el símbolo de la suma o la
orden concat, que a la que indicaremos varias subcadenas entre paréntesis:

(* STRING3.PAS, Concatenar cadenas *)

(* Parte de CUPAS5, por Nacho Cabanes *)

program String3;

 
var

palabra1, palabra2, espacio: string;

resultado1, resultado2: string;

begin

palabra1 := 'Hola';

espacio := ' ';

palabra2 := 'Pascal';

resultado1 := palabra1 + espacio + palabra2 + '!';

resultado2 := concat(palabra1, '-', palabra2);

writeLn( resultado1 );

writeLn( resultado2 );

end.

(* Resultado:

Hola Pascal!

Hola-Pascal

*)

Ejercicio propuesto 4.2.3.1: Crea un programa que pida al usuario su nombre y su apellido,


cree una cadena formada por el apellido, una coma y el nombre (por ejemplo si el usuario
introduce Nacho como nombre y Cabanes como apellido, la cadena contendrá "Cabanes,
Nacho"), y finalmente escriba esa cadena.

Si necesitamos partir de una cadena vacía (por ejemplo, para irle añadiendo letras) o bien
queremos vaciar una cadena ya existente, lo podemos hacer usando dos comillas simples que no
contengan nada entre medias (ni siquiera un espacio):

(* STRING4.PAS, Vaciar una cadena *)

(* Parte de CUPAS5, por Nacho Cabanes *)

program String4;

var

texto: string;

i: integer;

begin

texto := '';

writeLn( 'El texto es ', texto );

 
for i := 1 to 10 do

texto := texto + '-';

writeLn( 'Ahora el texto es ', texto );

end.

(* Resultado:

El texto es

Ahora el texto es ----------

*)

Ejercicio propuesto 4.2.3.2: Crea un programa que cree y muestre una cadena formada por 20
símbolos de exclamación (!).

Podemos extraer una subcadena (un fragmento del texto original) con la orden copy, que debe
recibir tres parámetros: la cadena, la posición de comienzo y la cantidad de caracteres a extraer:

(* STRING5.PAS, Extraer una subcadena *)

(* Parte de CUPAS5, por Nacho Cabanes *)

program String5;

var

texto: string;

begin

texto := 'Hola, esto es un ejemplo';

writeLn( 'La primera palabra es ', copy(texto,1,4) );

writeLn( 'Otro fragmento es "', copy(texto,9,5), '"' );

end.

(* Resultado:

La primera palabra es Hola

Otro fragmento es "to es"

*)

Ejercicio propuesto 4.2.3.3: Crea un programa que te pida tu nombre y escriba un triángulo


creciente, que empiece con una letra, siga con dos y vaya aumentando hasta mostrar todas las
letras:
N
Na
Nac
Nach
Nacho
También es posible ver si contiene una subcadena, usando pos, que recibe como datos la
subcadena a buscar y la cadena que la contiene, y devolverá 0 si no aparece, o un número mayor
que cero (la posición) en caso de que sí esté contenida:

(* STRING6.PAS, Posicion de una subcadena *)

(* Parte de CUPAS5, por Nacho Cabanes *)

program String6;

var

texto: string;

begin

texto := 'Hola, esto es un ejemplo';

writeLn( 'La palabra "esto" aparece en la posicion ',

pos('esto', texto));

end.

(* Resultado:

La palabra "esto" aparece en la posicion 7

*)

Ejercicio propuesto 4.2.3.4: Crea un programa que pida al usuario una frase y diga si contiene
la palabra "hola" y, en caso afirmativo, en qué posición.

Finalmente, también tenemos la posibilidad de insertar una subcadena, usando insert, o


de borrar una subcadena, con delete. A "insert" se le indican 3 datos: el texto a insertar, la
cadena dentro de la que queremos incluirlo, y la posición en la que debe aparecer; a "delete" se
le detalla la cadena, la posición en la que empezar a borrar y la cantidad de letras a eliminar:

(* STRING7.PAS, Insertar y borrar en una cadena *)

(* Parte de CUPAS5, por Nacho Cabanes *)

program String7;

var

texto: string;

begin

texto := 'Hola, esto es un ejemplo';

writeLn( 'El texto original es ', texto );


 

insert( ' amigo,', texto, 6);

writeLn( 'Tras insertar queda ', texto );

delete( texto, 14, 5);

writeLn( 'Y tras borrar queda ', texto );

end.

(* Resultado:

El texto original es Hola, esto es un ejemplo

Tras insertar queda Hola, amigo, esto es un ejemplo

Y tras borrar queda Hola, amigo, es un ejemplo

*)

Ejercicio propuesto 4.2.3.5: Crea un programa que pida al usuario su nombre. Si el nombre


incluye "Sr. ", deberás borrar esa partícula. Donde estuviera ese "Sr. ", deberás incluir
"Usuario del sistema: ".

Además, algunas versiones de Pascal permiten convertir un texto a minúsculas o a mayúsculas


de forma simple. Por ejemplo, con FreePascal se puede usar upperCase(x) para convertir un
string a mayúsculas y lowerCase(x) para convertir a minúsculas.

Ejercicio propuesto 4.2.3.6: Crea un programa que pida al usuario su nombre y lo muestre en


mayúsculas

4.2.4. Arrays de cadenas


Podemos crear un array formado por varias cadenas de texto, igual que los creábamos a partir de
datos numéricos. El manejo será idéntico. La única peculiaridad que merece la pena comentar es
que si queremos acceder a una letra concreta de una de esas cadenas deberemos usar dos pares
de corchetes: la primera pareja indicará la posición en que está la frase dentro del array, y la
segunda pareja de corchetes detallará qué letra dentro de esa cadena:

(* ARRAYST.PAS, Contacto con array de strings *)

(* Parte de CUPAS5, por Nacho Cabanes *)

Program ArraySt;

var

datos: array[1..4] of string;

begin
datos[1] := 'Hola';

datos[2] := 'Adios';

datos[3] := '1234';

datos[4] := '(.,)';

writeLn('La tercera letra de la segunda cadena es ',

datos[2][3]);

end.

(* Resultado:

La tercera letra de la segunda cadena es i

*)

Ejercicio propuesto 4.2.4.1: Crea un programa que pida 5 frases al usuario y luego las
muestre en orden contrario a como se introdujeron (de la última frase a la primera).
Ejercicio propuesto 4.2.4.2: Crea un programa que te pida 5 nombres, los guarde en un array
y luego muestre sus iniciales.
Ejercicio propuesto 4.2.4.3: Crea un programa que pida al usuario el número de un mes (por
ejemplo, 3) y responda la cantidad de días que tiene ese mes (31) y su nombre (marzo). Utiliza
para ello dos arrays, uno que contenga números enteros y otro que contenga textos.
Ejercicio propuesto 4.2.4.4: Crea un programa que pida al usuario el nombre de un mes (por
ejemplo, "marzo") y responda el nombre de ese mes en inglés ("march"), usando dos arrays de
cadenas de texto.
Ejercicio propuesto 4.2.4.5: Crea un programa que pida al usuario el nombre de un mes (por
ejemplo, "marzo") y responda el nombre de ese mes en inglés ("march"), usando un array
bidimensional de cadenas de texto.

S-ar putea să vă placă și