You are on page 1of 6

Práctico Estructura de Repetición

Punto 3 - Trabajo con datos de tipo Texto


Para los ejercicios de manejo de texto se pueden usar las siguientes primitivas:
- LONGITUD(Cadena) que devuelve la longitud de la cadena de caracteres.
- COPIAR(Cadena, Inicio, Cantidad) devuelve la subcadena que comienza en la
posición dada por Inicio y la longitud de la misma está determinada por Cantidad.
Ejemplos:
Texto  ‘Este es un texto’
Long  LONGITUD(Texto) { devuelve 16 en Long}
Cadena  COPIAR(Texto, 12, 5) { devuelve ‘texto’ en Cadena}
Letra  COPIAR(Texto, 12, 1) { devuelve ‘t’ en Letra}

Ejercicio Nº 1
Contar la cantidad de letras de un telegrama recibido en la variable Telegrama.
Algoritmo ContarLetras
DE: Telegrama є Texto
DS: Cant є Z
Bosquejo

Prof. Laura Kees – Año 2011


Cantidad de caracteres inicial = 0.
REPETIR para cada carácter del texto del telegrama
Obtener un carácter del texto del telegrama.
Si el carácter es una letra, aumentar el contador en 1.

Algoritmo ContarLetras
DE: Telegrama є Texto
DS: Cant є Z
DA: Car є Texto
Pos є Z
Comienzo
Cant  0
{ Obtener cada caracter del texto }
REPETIR DESDE Pos = 1 A LONGITUD(Telegrama)
Car  COPIAR(Telegrama, Pos, 1)
{ Ver si es una letra }
SI ((Car >= ‘A’) y (Car >= ‘Z’)) o ((Car >= ‘a’) y (Car >= ‘z’))
ENTONCES
Cant  Cant + 1
FIN-SI
FIN-REPETIR DESDE
Fin-Algoritmo

1
Práctico Estructura de Repetición

Ejercicio Nº 2
Contar la cantidad de palabras, separadas por uno o más espacios, de un telegrama dado.
Algoritmo ContarPalabras
DE: Telegrama є Texto
DS: Cant є Z
Bosquejo
Cantidad de palabras inicial = 0.
Posición inicial del primer caracter = 1
Obtener la cantidad total de caracteres del texto.
REPETIR MIENTRAS haya caracteres en el texto
Obtener un caracter del texto.
Si el caracter es un espacio
Aumentar el contador de palabras en 1.
Recorrer el texto mientras haya espacios para encontrar la próxima palabra
Incrementar en uno la posición para leer el próximo caracter

Algoritmo ContarPalabras

Prof. Laura Kees – Año 2011


DE: Telegrama є Texto
DS: Cant є Z
DA: Car є Texto
Long, Pos є Z
Comienzo
Cant  0
Pos  1
Long  LONGITUD(Telegrama)
{ Obtener c/u de los caracteres del texto }
REPETIR MIENTRAS (Pos <= Long)
Car  COPIAR(Telegrama, Pos, 1)
{ Ver si es un espacio }
SI (Car = ‘ ’)
ENTONCES
Cant  Cant + 1
{ Obtener los siguientes espacios si es que los hay }
REPETIR MIENTRAS (Car = ‘ ’) y (Pos <= Long)
Pos  Pos + 1
Car  COPIAR(Telegrama, Pos, 1)
FIN-MIENTRAS
SINO
Pos  Pos + 1
FIN-SI
FIN-REPETIR DESDE
Fin-Algoritmo

Pero… ¿Qué sucede si el texto empieza con varios espacios en blanco?


¿Cómo resolveríamos esta situación?

2
Práctico Estructura de Repetición

Ejercicio Nº 3
Dada una letra y un texto, determinar cuántas veces aparece dicha letra en el texto.

Algoritmo ContarApariciones
DE: Letra, MiTexto є Texto
Restricción: ((Letra >= ‘A’) y (Letra >= ‘Z’)) o ((Letra >= ‘a’) y (Letra >= ‘z’))
DS: Cant є Z
Bosquejo
Cantidad de apariciones inicial = 0.
REPETIR para cada carácter del texto
Obtener un carácter del texto.
Si el caracter es igual a la letra, aumentar el contador en 1.

Algoritmo ContarApariciones
DE: Letra, MiTexto є Texto
Restricción: ((Letra >= ‘A’) y (Letra >= ‘Z’)) o ((Letra >= ‘a’) y (Letra >= ‘z’))
DS: Cant є Z

Prof. Laura Kees – Año 2011


DA: Car є Texto
Pos є Z
Comienzo
Cant  0
{ Obtener cada caracter del texto }
REPETIR DESDE Pos = 1 A LONGITUD(MiTexto)
Car  COPIAR(MiTexto, Pos, 1)

{ Ver si es igual a la letra }


SI (Car = Letra)
ENTONCES
Cant  Cant + 1
FIN-SI

FIN-REPETIR DESDE
Fin-Algoritmo

3
Práctico Estructura de Repetición

Ejercicio Nº 4
Determinar cuál es la vocal que aparece con mayor frecuencia en un texto dado.
Algoritmo VocalMaximaFrecuencia
DE: MiTexto є Texto
DS: Vocal є Texto
Bosquejo
Inicializar cantidades en cero.
Inicializar la cantidad máxima en cero.
REPETIR para cada caracter del texto
Obtener un caracter del texto.
En caso de que el caracter sea
‘a’, ‘A’: Aumentar el contador de A en 1. Ver si se cambia el mayor.
‘e’, ‘E’: Aumentar el contador de E en 1. Ver si se cambia el mayor.
‘i’, ‘I’: Aumentar el contador de I en 1. Ver si se cambia el mayor.
‘o’, ‘O’: Aumentar el contador de O en 1. Ver si se cambia el mayor.
‘u’, ‘U’: Aumentar el contador de U en 1. Ver si se cambia el mayor.

Prof. Laura Kees – Año 2011

4
Práctico Estructura de Repetición

Algoritmo VocalMaximaFrecuencia
DE: MiTexto є Texto
DS: Vocal є Texto
DA: Car є Texto
Pos є Z
CantA, CantE, CantI, CantO, CantU, CantMax є Z
Comienzo
CantA 0
CantE  0
CantI  0
CantO  0
CantU  0
{ Obtener cada caracter del texto }
REPETIR DESDE Pos = 1 A LONGITUD(MiTexto)
Car  COPIAR(MiTexto, Pos, 1)
{ Ver a qué vocal es igual el caracter }
EN CASO QUE Car SEA
‘a’, ‘A’: CantA  CantA + 1

Prof. Laura Kees – Año 2011


Si CantA > CantMax
ENTONCES
CantMax  CantA
FIN-SI
‘e’, ‘E’: CantE  CantE + 1
Si CantE > CantMax
ENTONCES
CantMax  CantE
FIN-SI
‘i’, ‘I’: CantI  CantI + 1
Si CantI > CantMax
ENTONCES
CantMax  CantI
FIN-SI
‘o’, ‘O’: CantO  CantO + 1 ¿Este algoritmo resuelve el
Si CantO > CantMax problema planteado?
ENTONCES
Completar/adaptar.
CantMax  CantO
FIN-SI
‘u’, ‘U’: CantU  CantU + 1
Si CantU > CantMax
ENTONCES
CantMax  CantU
FIN-SI
FIN-CASO
FIN-REPETIR DESDE
Fin-Algoritmo

5
Práctico Estructura de Repetición

Ejercicio Nº 5
Dado un texto cualquiera, determinar qué cantidad de letras tiene la palabra más larga.
Algoritmo ContarPalabras
DE: MiTexto є Texto
DS: MaxCant є Z
Bosquejo
Cantidad de letra de una palabra = 0.
Cantidad máxima = 0
Posición inicial del primer carácter = 1
Obtener la cantidad total de caracteres del texto.
REPETIR MIENTRAS haya caracteres en el texto
Obtener un caracter del texto.
Si el caracter es un espacio
Aumentar el contador de palabras en 1.
Recorrer el texto mientras haya espacios para encontrar la próxima palabra
Incrementar en uno la posición para leer el próximo caracter
Algoritmo ContarPalabras
DE: MiTexto є Texto
DS: CantMax є Z
DA: Car є Texto

Prof. Laura Kees – Año 2011


Long є Z
Cant є Z
Pos є Z
Comienzo
Cant  0
CantMax  0
Pos  1
Long  LONGITUD(MiTexto)
{ Obtener cada caracter del texto }
REPETIR MIENTRAS ( Pos <= Long)
Car  COPIAR(MiTexto, Pos, 1)
{ Ver si es un espacio }
SI (Car = ‘ ’)
ENTONCES
Cant  Cant + 1
{ Ver si hay que cambiar el mayor }
SI Cant > CantMax
ENTONCES
CantMax  Cant
FIN-SI
{ Obtener los siguientes espacios si es que los hay }
REPETIR MIENTRAS (Car = ‘ ’) y (Pos <= Long)
Pos  Pos + 1
Car  COPIAR(MiTexto, Pos, 1)
FIN-MIENTRAS
Cant  0 { Se comienza una nueva palabra }
SINO
Pos  Pos + 1
FIN-SI
FIN-MIENTRAS
Fin-Algoritmo

You might also like