En la etapa de diseño, al especificar un pseudocódigo de un algoritmo utilizamos el tipo TEXTO para representar una cadena de caracteres. Una variable de este tipo se declara de la siguiente forma:
En este ejemplo, la variable mensaje es de tipo TEXTO. La variable asume un valor particular en la segunda línea a partir de la asignación. Y ese valor, es utilizado para mostrar por pantalla un mensaje al usuario.
El mensaje por pantalla produce un mensaje indicando: Número: 1, Número: 2, etc.
MóDULO ejemplo(ENTERO i) RETORNA ;
(*....*)
ENTERO x, j
x ← 1
PARA j ← 0 HASTA i PASO 1 HACER
ESCRIBIR("Número: ",x)
x ← x + 1
FIN PARA
FIN MóDULO ejRepetirParaLas cadenas de texto se representan en PHP mediante el tipo de dato string.
En PHP, una cadena de caracteres se representa con el tipo
string. Una cadena es una secuencia de caracteres que puede
almacenarse en una variable y manipularse mediante funciones
específicas. Las variables PHP comienzan con el signo
$.
Una cadena se puede asignar a una variable de la siguiente forma:
o:
También puede asignarse directamente un literal de cadena:
En PHP, las cadenas pueden delimitarse con comillas dobles o simples; las comillas dobles permiten interpolar variables y procesar ciertas secuencias de escape.
Para mostrar el contenido de una cadena utilizamos la siguiente instrucción:
##
## Warning: Undefined variable $saludo in F:\backup2023_10_18\ip\dummy.php on line 2
PHP utiliza el operador . (punto) para concatenar
cadenas de caracteres. En el siguiente ejemplo el resultado de la
concatenación es un nuevo String compuesto por las dos cadenas, una tras
otra. Por ejemplo:
da como resultado la cadena “Problemas y Algoritmos”.
Veamos otro ejemplo:
## Hola operador
También es posible concatenar cadenas con valores numéricos. Por ejemplo:
Cuando se usa el operador . con un número, PHP lo
convierte a texto para realizar la concatenación. Otro ejemplo:
## La temperatura es 72
PHP ofrece funciones para operar con cadenas. Por ejemplo,
strlen() retorna la longitud de una cadena en bytes. Para
las cadenas ASCII de estos ejemplos, coincide con la cantidad de
caracteres.
## 16
La salida por pantalla del fragmento de código anterior es: 16.
A continuaci´on describiremos en forma de tabla diferentes operaciones que pueden realizarse con el tipo TEXTO o cadenas de caracteres. Mostraremos las funciones de PHP equivalentes a las operaciones de cadenas en pseudocódigo. En los ejemplos siguientes se presenta el pseudocódigo junto con su implementación en PHP.
Nota: los ejemplos de acceso por posición,
strlen() y substr() se aplican directamente a
cadenas ASCII. Para caracteres Unicode multibyte (como vocales
acentuadas) deben utilizarse las funciones mb_* cuando esté
disponible la extensión mbstring.
Las variables de tipo TEXTO contienen una cadena de caracteres. Podr´ıamos decir que una variable de tipo TEXTO tiene componentes dentro de s´ı. Estos componentes se encuentran en distintas posiciones comenzando desde 0. Ejemplos: En “PHP es divertido” la “P” está en la posición 0. Otros ejemplos:
## vnvenid
Cuya salida por pantalla es:
En PHP, === permite comprobar si dos cadenas tienen
exactamente el mismo contenido y tipo. Para comparaciones sin distinguir
mayúsculas y minúsculas puede utilizarse strcasecmp(). En
PHP, == compara valores y permite conversiones automáticas
de tipos.
En PHP, para comparar exactamente dos cadenas se utiliza
==. Para compararlas sin distinguir mayúsculas y minúsculas
se utiliza strcasecmp().
Retorna la longitud de la cadena de caracteres.
Retorna true si el contenido de dos cadenas son iguales, sino retorna false.
Retorna true si el contenido de cadena1 y de cadena2 son iguales, considerando una letra en mayúscula y minúscula como iguales, sino retorna false.
Retorna un String con los mismos caracteres pero convertidos en minúscula.
Retorna un String con los mismos caracteres pero convertidos en mayúscula.
Retorna un String con los mismos caracteres que cadena, pero remueve los espacios por delante y detrás
Retorna el carácter que en cadena se encuentra en la posición pos. La posición se cuenta 0, 1, 2, etc.
Retorna la subcadena de cadena desde la posición indicada hasta el final.
Retorna la subcadena de cadena desde la posición inicial hasta otra posición final sin incluirla.
Retorna la posición de la primer ocurrencia de cadena2 dentro de cadena1. Las posiciones se cuentan 0,1,2, etc. Retorna -1 si cadena2 no existe dentro de cadena1.
Pseudocódigo
Retorna la posición de la primer ocurrencia de cadena2 dentro de cadena1, a partir de la posición ini. Las posiciones se cuentan 0,1,2, etc. Retorna -1 si cadena2 no existe dentro de cadena1.
Pseudocódigo
Retorna la posición de la última ocurrencia de cadena2 dentro de cadena1. Las posiciones se cuentan 0,1,2,etc. Retorna -1 si cadena2 no existe dentro de cadena1.
Compara cadena1 con cadena2 de acuerdo a su orden lexicográfico (que es equivalente al alfabético si las letras están todas en minúsculas o mayúsculas). Si el cadena1 es menor que cadena2 devuelve un valor negativo, si son iguales devuelve 0 y si cadena1 es mayor devuelve un número positivo.
Pseudocódigo
Pseudocódigo
Pseudocódigo
ALGORITMO recorrido() RETORNA ∅
(* solicita al usuario una cadena y
como desea el usuario descomponer
la cadena*)
TEXTO cadena, orden
ENTERO i, lon
ESCRIBIR("Ingrese una cadena")
LEER(cadena)
ESCRIBIR("Indique en que orden desea
descomponer la palabra (normal o inverso):")
LEER(orden)
lon <- longitud(cadena) - 1
SI igual(orden,"normal") ENTONCES
PARA i= 0 HASTA lon PASO 1 HACER
ESCRIBIR(caracterEnPosicion(cadena, i))
FIN PARA
SINO
SI igual(orden,"inverso") ENTONCES
PARA i= lon HASTA 0 PASO -1 HACER
ESCRIBIR(caracterEnPosicion(cadena, i))
FIN PARA
FIN SI
FIN SI
FIN ALGORITMOPHP
<?php
echo "Ingrese una cadena: ";
$cadena = trim(fgets(STDIN));
echo "Indique en qué orden desea descomponer la palabra (normal o inverso): ";
$orden = trim(fgets(STDIN));
$lon = strlen($cadena) - 1;
if ($orden == "normal") {
for ($i = 0; $i <= $lon; $i++) {
echo $cadena[$i] . "\n";
}
} elseif ($orden == "inverso") {
for ($i = $lon; $i >= 0; $i--) {
echo $cadena[$i] . "\n";
}
}
?>## Ingrese una cadena: Indique en qué orden desea descomponer la palabra (normal o inverso):
Pseudocódigo
MÓDULO obtenerPosiciónEnCadena(TEXTO cadena, CARACTER carac ) RETORNA ENTERO
(* devolver la primera posición de un caracter en una cadena, si no lo encuentra retorna -1
cadena: la cadena a recorrer
carac: el caracter del cual se desea obtener la posicion en la cadena*)
ENTERO iter, longitud, pos
LOGICO encontrado
pos ← -1
iter ← 0
encontrado ← FALSO
longitud ← longitud(cadena)
MIENTRAS ((iter < longitud) AND ! encontrado) HACER
SI ( caracterEnPosicion(cadena, iter) = carac ) ENTONCES
pos ← iter
Encontrado ← VERDADERO
SINO
iter ← iter+1
FIN SI
FIN MIENTRAS
RETORNA pos
FIN MÓDULO principal
ALGORITMO principal() RETORNA ∅
(* obtener la primera posición de un caracter en una cadena*)
TEXTO cadena
CARACTER caracABuscar
ENTERO posicion
ESCRIBIR(“Ingrese la cadena de caracteres”)
LEER(cadena)
ESCRIBIR(“Ingrese un caracter del cual se desea obtener su posición en la cadena”)
LEER(caracABuscar)
posicion ← obtenerPosiciónEnCadena(cadena, caracABuscar)
ESCRIBIR(“El caracter ”+ caracABuscar +” esta en la posición: “+ posicion)
FIN ALGORITMO principalPHP
<?php
function obtenerPosicion($cadena, $e) {
// Devuelve la primera posición de un carácter, o -1 si no existe.
$pos = -1;
$longitud = strlen($cadena);
$i = 0;
$encontrado = false;
while ($i < $longitud && !$encontrado) {
if ($cadena[$i] == $e) {
$pos = $i;
$encontrado = true;
} else {
$i++;
}
}
return $pos;
}
echo "Por favor ingrese una cadena: ";
$cadena = trim(fgets(STDIN));
echo "Por favor ingrese un carácter: ";
$carac = trim(fgets(STDIN));
$posicion = obtenerPosicion($cadena, $carac[0] ?? "");
echo "El carácter está en la posición: " . $posicion;
?>## Por favor ingrese una cadena: Por favor ingrese un carácter: El carácter está en la posición: -1
Pseudocódigo
MÓDULO cantOcurrencias(TEXTO cadena, CARACTER e) RETORNA ENTERO
(* obtiene la posición de la ocurrencia de un caracter
es un ejemplo de un recorrido TOTAL o
exhaustivo
cadena: cadena a evaluar
e: caracter del cual se desea obtener la
cantidad de ocurrencias *)
ENTERO cant, longitud, i
cant ← 0
longitud ← longitud(cadena) -1
PARA i ← 0 HASTA longitud PASO 1 HACER
SI (caracterEnPosicion(cadena, i) = e )
ENTONCES
cant ←cant + 1
FIN SI
FIN PARA
RETORNAR cant
FIN MÓDULO cantOcurrencias
ALGORITMO principal() RETORNA ∅
(* obtener la primera posición de un caracter en una cadena*)
TEXTO cadena
CARACTER caracABuscar
ENTERO posicion
ESCRIBIR(“Ingrese la cadena de caracteres”)
LEER(cadena)
ESCRIBIR(“Ingrese un caracter del cual
se desea obtener su posición en la cadena”)
LEER(caracABuscar)
posicion ← obtenerPosiciónEnCadena(cadena, caracABuscar)
ESCRIBIR(“El caracter ”+ caracABuscar +” esta en la posición: “+ posicion)
FIN ALGORITMO principalPHP
<?php
function cantOcurrencias($cadena, $e) {
// Recorrido total: cuenta las ocurrencias del carácter.
$cant = 0;
$longitud = strlen($cadena);
for ($i = 0; $i < $longitud; $i++) {
if ($cadena[$i] == $e) {
$cant++;
}
}
return $cant;
}
echo "Por favor ingrese una cadena: ";
$cadena = trim(fgets(STDIN));
echo "Por favor ingrese un carácter: ";
$carac = trim(fgets(STDIN));
echo "La cantidad de ocurrencias es: " . cantOcurrencias($cadena, $carac[0] ?? "");
?>## Por favor ingrese una cadena: Por favor ingrese un carácter: La cantidad de ocurrencias es: 0
Problema: Obtener el menor nombre en orden lexicográfico, de un número predeterminado de nombres ingresados por el usuario. Busqueda Menor Lexicográficamente Ejemplo original en Java (material pendiente de conversión)
Problema: Solicitar al usuario una cadena de caracteres. Luego obtener:
1. Su Longitud
2. El caracter en la posición 5.
3. Obtener la inversa de la cadena
4. Contar la cantidad de ocurrencias de un caracter en la cadena
5. Verificar la existencia de un caracter
6. Contar la cantidad de vocales en una cadenaEl archivo original .java muestra un ejemplo de modularización todavía pendiente de traducción a PHP. No se reemplaza el enlace porque no se proporcionó el código de ese archivo.