Zona de programación, todo lo necesario para aprender a programar

 
 
 

 

 

Turbo pascal

 

9)Cadenas de caracteres

 

 

Las cadenas de caracteres son secuencias de caracteres con longitudes que varían desde 1 hasta los 255 caracteres. El tipo identificador de las cadenas es String. Cuando declaramos una variable de tipo String será posible introducir hasta 255 caracteres en ella, pero también es factible declarar cadenas más cortas agregando al momento de la declaración la longitud de la variable, por ejemplo:

mensaje : String[30];    {longitud maxima de la cadena = 30 caracteres}

  • Comparación de cadenas:

La comparación de cadenas es una operación muy común en Pascal; estas comparaciones se realizan con base en el orden del código ASCII, por ejemplo la cadena Prueba es menor a la cadena prueba ya que el valor del código ASCII de P es 80 y el de p es 112. Así también podemos diferenciar las cadenas con respecto a su tamaño: Hola es menor a Bienvenido.

 

Existe un caso especial de una cadena, que es cuando no tiene ningún carácter en ella, en ese momento decimos que es una cadena nula o vacía. Se recomienda ampliamente inicializar todos los valores de las cadenas a cadenas nulas al inicio del programa, ya que podrían contener datos extraños e indeseables.

·         Manejo de los elementos de la cadena:

Es posible leer cada elemento de una cadena por separado, por ejemplo, si en la variable Calle almacenamos la cadena Hidalgo es posible asignar a otra cadena el valor de Calle[x] donde x es el carácter de la cadena que se quiere leer, así también es posible visualizar el carácter en pantalla usando la instrucción WriteLn. Ejemplo:

Program Cadena;
Uses
     CRT;
Var
     Calle : String;
     Letra : String;

Begin
     CLRSCR;
     Calle := 'Caracas';
     WriteLn (Calle[2]);   {Visualiza el segundo caracter de Calle}
     Letra := Calle[1];     {Guarda en Letra el primer caracter de Calle}
     WriteLn (Letra);
     Readln;
End.

·         Length:

Para conocer la longitud de una cadena utilizamos la función Length, la longitud es la cantidad de caracteres que contiene la cadena en un momento determinado.

Su sintaxis es:

Length (cadena);

La función regresa un valor entero.

Program Length;
Uses
     CRT;
Var
     Cadena : String;

Begin
     CLRSCR;
     Cadena := 'Prueba de longitud';
     WriteLn ('Longitud de la cadena: ', Length (Cadena);
     Readln;
End.

El programa imprime en la pantalla un mensaje con la longitud de la cadena almacenada en memoria, en este caso específico 18.

·         Operador (+):

Es una de las formas más sencillas de unir dos cadenas y se maneja exactamente como una suma, la única limitante es que en caso de ser mayor la longitud resultante de la suma que la longitud que pueda manejar la variable en que se almacenará se truncarán los caracteres sobrantes. Ejemplo:

Program unir cadenas;
Uses
     CRT;
Var
     Cadena1, Cadena2, Cadena3 : String;

Begin
     CLRSCR;
     Cadena1 := 'Buenos ';
     Cadena2 := 'dias ';
     Cadena3 := Cadena1 + Cadena2;
     WriteLn (Cadena3);
     Readln;
End.

Se imprimirá en la pantalla: Buenos dias.

·         Concat:

La función Concat produce los mismos resultados que la concatenación, es posible incluir cualquier número de cadenas que se necesiten concatenar. La suma de las cadenas no deberá sobrepasar la longitud que la variable, a la cual se asignará dicha suma, puede manejar. Ejemplo:

Cadena := Concat (cad1, cad2, cad3, ... , cadn);

·         Pos:

La función Pos nos sirve para localizar una determinada cadena dentro de otra, en otras palabras para verificar si una cadena es subcadena de otra segunda. Los parámetros que requiere son: la cadena que se buscará y la cadena donde se buscará la primera.

Pos (cadbusqueda, cadfuente);

Cuando encuentra la cadena la función devuelve su posición inicial, en caso de que no la encuentre devuelve el valor de 0.

Ejemplo:

Program Pos;
Uses
     CRT;
Var
     Cadena : String;

Begin
     CLRSCR;
     Cadena := 'Domingo Lunes Martes Miercoles Jueves Viernes Sabado';
     WriteLn (Cadena);
     WriteLn (Pos ('Lunes', Cadena));     {Muestra 9}
     WriteLn (Pos ('Jueves', Cadena));   {Muestra 32}
     WriteLn (Pos ('Ayer', Cadena));       {Muestra 0}
     Readln;
End.

·         Copy:

La función Copy regresa una subcadena de una variable o constante dada como parámetro. Su sintaxis es:

Copy (Cadena, Inicio, Cantidad);

Donde Cadena es la fuente de la subcadena, Inicio es la posición desde la cual se obtendrá la subcadena y Cantidad es el número de caracteres que se extraerán. Los valores de Inicio y Cantidad deben ser de tipo entero.

Ejemplo:

Program Pos;
Uses
     CRT;
Var
     Cadena : String;

Begin
     CLRSCR;
     Cadena := "Nuevos horizontes";
     WriteLn (Copy (Cadena, 8, 10));     {Visualiza en pantalla: horizontes}
     Readln;
End.

·         Insert:

El procedimiento Insert sirve para insertar una cadena dentro de otra en alguna posición determinada. Sintaxis:

Insert (Cadena1, Cadena2, Posición)

Donde Cadena1 es la que se insertará, Cadena2 es donde se insertará y Posición es el lugar donde se insertará. El parámetro Posición debe ser de tipo entero.

·         Delete:

Este procedimiento elimina un determinado número de caracteres de una cadena. Su sintaxis es:

Delete (Cadena, Inicio, Número)

Cadena es la variable en la cual se eliminarán los caracteres, Inicio es la posición del primer caracter a eliminar y Número es la cantidad de caracteres que se borrarán.

·         UpCase:

La función UpCase regresa la letra mayúscula correspondiente al caracter dado como parámetro.

UpCase (Cadena)

Es muy común trabajando con cadenas que se quiera convertir una que contiene un número a su valor numérico, para poder utilizarlo en operaciones matemáticas, así como convertir un número a su equivalente en una cadena. Esto es más fácil de entender si consideramos que no es lo mismo el valor 75 y el valor '75', en el primer caso es un número mientras que en el segundo es un par de caracteres ASCII. Para lograr estos cambios de tipo en Pascal utilizamos los procedimientos siguientes:

·         Str:

El procedimiento Str obtiene una cadena a partir de un valor numérico. Su sintaxis es:

Str (Valor, Cadena)

Donde Valor es el número a convertir y Cadena es la variable donde se almacenará la cadena ya convertida.

·         Val:

Este procedimiento convierte una cadena en un valor de tipo numérico, el problema con esta función es que si la cadena no esta formada exclusivamente de números siguiendo las reglas para el tipo de datos que se vallan a obtener se generará un error. Sintaxis:

Val (Cadena, Num, Código)

Cadena contiene la cadena que será procesada, Num es la variable de tipo numérico donde se guardará el valor de la cadena y Código es una variable de tipo entero (Integer) que contendrá el valor de 0 si no hubo errores y un valor diferente en caso de que no se haya podido convertir la cadena, el valor de Código representa la posición de la cadena donde ocurrió el error.

Ejemplos:

Program Invertir;
Uses
     CRT;
Type
     Cadena : String[30];
Var
     Cadorig, Cadinv : Cadena;

Function invierte-cadena (cad1 : Cadena) : Cadena;
Var
     Longcad, i : integer;
     cad2 : cadena;
Begin
     Longcad := Length (cad1);
     cad2 := ' ';
     For i := Longcad down to 1 do
          cad2 := cad2 + Copy (cad1, i, 1);
     invierte-cadena := cad2;
End;

Begin
     CLRSCR;
     Write ('Ingrese Cadena: ');
     ReadLn (Cadorig);
     Cadinv := invierte-cadena (Cadorig);
     WriteLn ('La cadena invertida de ', Cadorig, 'es: ', Cadinv);
     Readln;
End.

Otro Ejemplo:

Program Contarletras;
Uses
     CRT;
Type
     Cadena : String[30];
     Caracter : String[1];
Var
     Cad : Cadena;
     Letra : Caracter;
     TotalLetras : Integer;

Function CuantasLetras (Cad : Cadena; Letra : Caracter) : Integer;
Var
     Longcad, i, TotLetras: integer;
Begin
     TotLetras := 0;
     Longcad := Length (Cad);
     For i := 1 to Longcad do
     Begin
          If UpCase (Letra) = UpCase (Copy (Cad, i, 1)) Then
               TotLetras := TotLetras + 1;
     End;
     CuantasLetras := TotLetras;
End;

Begin
     CLRSCR;
     Write ('Ingrese Cadena: ');
     ReadLn (Cad);
     Write ('Ingrese letra a buscar: ');
     ReadLn (Letra);
     TotalLetras := CuantasLetras (Cad, Letra);
     WriteLn (Letra, ' se encuentra ', TotalLetras, ' veces en ', Cad);
     Readln;
End.

Otro Ejemplo:

Program Unir Cadenas;
Uses
     CRT;
Type
     Cadena : String[30];
Var
     Cad1, Cad2, Cadresultante : Cadena;

Function Intercalar-cadenas (CadA, CadB : Cadena) : Cadena;
Var
     Longcad, i : integer;
     CadR : Cadena;
Begin
     Longcad : Length (CadA);
     CadR := ' ';
     For i := 1 to Longcad do
          CadR := CadR + Copy (CadA, i, 1) + Copy (CadB, i, 1);
     Intercalar-cadenas := CadR;
End;

Begin
     CLRSCR;
     Write ('Ingrese Cadena1: ');
     ReadLn (Cad1);
     Write ('Ingrese Cadena2: ');
     ReadLn (Cad2);
     If Length (Cad1) = Length (Cad2) Then
     Begin
          Cadresultante := Intercalar-cadenas (Cad1, Cad2);
          WriteLn ('La cadena intercalada es: ', Cadresultante);
     End
     Else
     WriteLn ('Las cadenas deben ser del mismo tamaño');
     Readln;
End.

Otro Ejemplo:

Program Contar Vocales;
Uses
     CRT;
Type
     Cadena : String[30];
Var
     Cad : Cadena;
     TotalLetras : Integer;

Function CuantasLetras (Cad : Cadena) : integer;
Var
     Longcad, i, TotLetras : integer;
Begin
     TotLetras := 0;
     Longcad := Length (Cad);
     For i := 1 to Longcad do
     Begin
         If (UpCase (Copy (Cad, i, 1)) = 'A' ) or
            (UpCase (Copy (Cad, i, 1)) = 'E' ) or
            (UpCase (Copy (Cad, i, 1)) = 'I' ) or
            (UpCase (Copy (Cad, i, 1)) = 'O' ) or
            (UpCase (Copy (Cad, i, 1)) = 'U' ) Then
                  TotLetras := ToTLetras + 1;
     End;
     CuantasLetras := TotLetras;
End;

Begin
     CLRSCR;
     Write ('Ingrese Cadena: ');
     ReadLn (Cad);
     TotalLetras := CuantasLetras (Cad);
     Write ('existen ', TotalLetras, ' vocales en ', Cad);
     Readln;
End.

Otro Ejemplo:

Program SustituirLetras;
Uses
     CRT;
Type
     Cadena : String[30];
     Caracter : String[1];
Var
     Cad : Cadena;
     LetraVieja, LetraNueva : Caracter;

Function CambiarLetra (Cad : Cadena; LetraV, LetraN : Caracter) : Cadena;
Var
     Longcad, i : Integer;
     cadaux : Cadena;
Begin
     cadaux := ' ';
     For i := 1 to Longcad do
     Begin
          If UpCase (LetraV) = UpCase (Copy (Cad, i, 1)) Then
               cadaux := cadaux + LetraN
          Else
          cadaux := cadaux + Copy (Cad, i, 1);
     End;
     CambiarLetra := cadaux;
End;

Begin
     CLRSCR;
     Write ('Ingrese Cadena: ');
     ReadLn (Cad);
     Write ('Ingrese letra a buscar: ');
     ReadLn (LetraVieja);
     Write ('Ingrese nueva letra: ');
     ReadLn (LetraNueva);
     Cad := CambiarLetra (Cad, LetraVieja, LetraNueva);
     Write ('La Cadena es: ', Cad);
     Readln;
End.

Otro Ejemplo:

Program IntercalaCarater;
Uses
     CRT;
Type
     Cadena : String[60];
     Caracter : String[1];
Var
     Cad1, Cadresultante : Cadena;
     Letra : Caracter;
     Intervalo : Integer;

Function Inserta-Caracter (CadA : Cadena; CadB : Caracter; Num : Integer) : Cadena;
Var
     Longcad, i : Integer;
     CadR : Cadena;
Begin
     Longcad := Length (CadA);
     CadR := ' ';
     For i := 1 to Longcad do
     Begin
          If (i mod Num) = 0 Then
               CadR := CadR + Copy (CadA, i, 1) + CadB
          Else
               CadR := CadR + Copy (CadA, i, 1)
     End;
     Inserta-Caracter := CadR;
End;

Begin
     CLRSCR;
     Write ('Ingrese Cadena: ');
     ReadLn (Cad1);
     Write ('Ingrese caracter a insertar: ');
     ReadLn (Letra);
     Write ('Ingrese intervalo: ');
     ReadLn (Intervalo);
     Cadresultante := Inserta-Caracter (Cad1, Letra, Intervalo);
     Write ('La Cadena resultante es: ', Cadresultante);
     Readln;
End.

 

 

Descargar gratis los programas y compiladores necesarios para aprender a programar

 
 

  ¿Buscas algo?

Google

 

Regresar al índice de turbo pascal

 

Regresar a la página principal