Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tratamiento de Cadena de
Caracteres.
Profesor: Bachilleres:
Las cadenas de caracteres son vectores de tipo carácter (char) que reciben un
tratamiento especial para simular el tipo de datos “string”, presente en otros
lenguajes de programación. Para que un vector de caracteres pueda ser
considerado como una cadena de caracteres, el ´ultimo de los elementos útiles del
vector debe ser el carácter nulo (código ASCII 0).
Según esto, si se quiere declarar una cadena formada por N caracteres, deberá
declararse un vector con N + 1 elementos de tipo carácter. Por ejemplo, la
declaración char cadena, reserva suficiente espacio en memoria para almacenar
una cadena de 5 caracteres, como la palabra "casco". En C pueden definirse
constantes correspondientes a cadenas de caracteres. Se usan comillas dobles para
delimitar el principio y el final de la cadena, a diferencia de las comillas simples
empleadas con las constantes de tipo carácter
Debe notar que con las cadenas no hay que poner el caracter & del
identificador al usar scanf. Recordar: cadena[0] es un char, pero cadena, sin mas,
es la dirección de memoria en la que empieza el vector de caracteres. Al ejecutar
el programa introduciendo la cadena "una" se obtiene el siguiente resultado por
pantalla.
Hay un problema práctico con scanf: solo lee una (palabra), es decir, una
secuencia de caracteres no blancos. Si al ejecutar el programa tecleamos un par de
palabras (una prueba), sólo se muestra la primera. Por pantalla se obtendría lo
siguiente:
Entrada con gets: La función gets lee todos los caracteres que hay hasta
encontrar un salto de línea. Dichos caracteres, excepto el salto de línea, se
almacenan a partir de la dirección de memoria que se indique como
argumento y se añade un terminador. Ver anexo 9
Se Debe notar que el bucle recorre los 10 caracteres que realmente hay en original
pero, de hecho, solo se requieren copiar los caracteres que hay hasta el
terminador, incluyéndole a él. Ver anexo 12
Concatenación:
En C existe la posibilidad de concatenar cadenas con bucles. Este programa, por
ejemplo, pide dos cadenas y concatena la segunda a la primera: ver anexo 15
Manejo de cadenas
Funciones y procedimientos de manejo de cadenas.
1. Función Concat
Además del uso de “+” para concatenación, Turbo Pascal tiene la función concat
que permite concatenar una secuencia de cadenas.
Ejemplo: Cad := Concat (Cad1, Cad2);
2. Función Lenght (longitud)
La función lenght proporciona la longitud lógica de una cadena de caracteres y
devuelve un valor entero.
Ejemplo:
Length (‘esto es un ejemplo’) proporciona el valor 18
Length(“) proporciona cero (cadena vacía)
3. Función Pos (Posición)
Esta función permite determinar si una cadena está contenida en otra. La función
devuelve la posición donde comienza la cadena buscada en la cadena fuente. Si la
cadena no existe, se devuelve el resultado 0.
Formato
Pos (cadena buscada, cadena fuente)
Ejemplo:
Ch := ‘uno dos tres cuatro cinco’;
Writeln (Pos (‘tres’, Ch));
Writeln (Pos (‘seis’, ch));
Declaración E
Funciones
En un programa Pascal, las funciones deben ser definidas antes del begin que indica el comienzo de
La sintaxis para definir una función es la siguiente:
function nombre_funtion;(parámetros formales);
var
{variables locales}
begin
{código de la función}
end;
Procedimientos
La sintaxis para crear un procedimiento es la siguiente:
procedure nombre_procedimiento;(parametros formales);
var
{variables locales}
begin
{cuerpo del procedimiento}
end;
Ejemplo de un procedimiento
Program global; {Programa principal}
Var
X:integer; {Definición de variables locales}
Procedure cambiar; {Definición de procedimientos}
Begin
x:=1; {Cuerpo del procedimiento}
End;
begin
X:=0;
cambiar; {Llamar al procedimiento} } Cuerpo del programa principal
writeln(x);
End.
PROCEDIMIENTOS Y FUNCIONES
La resolución de problemas complejos se facilita considerablemente si se dividen
en problemas mas pequeños; y la resolución de estos subproblemas se realiza
mediante subalgoritmos.
Los subalgoritmos son unidades de programa o módulos que están diseñados para
ejecutar laguna tarea específica. Éstos, constituidos por funciones o
procedimientos, se escriben solamente una vez, pero pueden ser referenciados en
diferentes puntos del programa, de modo que se puede evitar la duplicación
innecesaria del código.
Las reglas de ámbito de un lenguaje son las reglas que controlan si un fragmento
de código conoce o tiene acceso a otro fragmento de código o de datos.
Una variable local es aquella cuyo ámbito se restringe a la función que la
ha declarado se dice entonces que la variable es local a esa función. Esto
implica que esa variable sólo va a poder ser manipulada en dicha sección,
y no se podrá hacer referencia fuera de dicha sección. Cualquier variable
que se defina dentro de las llaves del cuerpo de una función se interpreta
como una variable local a esa función.
Cuando una variable x es local a una función func1, significa que la
función func1 es la propietaria de dicha variable, y puede acceder a ella y
modificarla. Si cualquier otra función del programa necesita conocer el valor de la
variable x, es la función func1 la que debe transferir el valor de x a través del paso
de argumentos en la llamada a la función. Si además esta función desea modificar
el valor de dicha variable, entonces tendrá que devolver el nuevo valor a func1, y
será func1 quien se encargue de asignar el valor devuelto a su variable x.
El argumento formal (los veremos en la siguiente sección) ámbito de un
argumento formal es el mismo que el de una variable local; el argumento formal
definido en la cabecera de una función sólo podrá ser accedido dentro del cuerpo
de dicha función, y no en otros lugares del programa.
Una variable global es aquella que se define fuera del cuerpo de
cualquier función, normalmente al principio del programa, después de la
definición de los archivos de biblioteca (#include), de la definición de
constantes simbólicas y antes de cualquier función. El ámbito de una
variable global son todas las funciones que componen el programa,
cualquier función puede acceder a dichas variables para leer y escribir en
ellas. Es decir, se puede hacer referencia a su dirección de memoria en
cualquier parde del programa.
Ejemplo: Se muestra la diferencia entre las variables locales y globales, con la
consiguiente diferenciación en los ámbitos que abarcan abarcan:
El uso de variables globales no es aconsejable a pesar de que aparentemente nos
parezca muy útil, esto se debe a varias razones fundamentales:
Legibilidad menor.
Nos condiciona en muchos casos que el programa sólo sirvapara un
conjunto de casos determinados.
El uso indiscriminado de variables globales produce efectos
colaterales. Esto sucede cuando existe una alteración no deseada del
contenido de una variable global dentro de una función, bien por
invocación, bien por olvidar definir en la función una variable local o
un parámetro formal con ese nombre. La corrección de dichos errores
puede ser muy ardua.
Atenta contra uno de los principios de la programación, la
modularidad. El bajo acoplamiento supone no compartir espacios de
memoria con otras funciones, y potenciar el paso de información
(llamadas) para que la función trate la información localmente.
Las variables declaradas dentro de una función son automáticas por defecto, es
decir, sólo existen mientras se ejecuta la función. Cuando se invoca la función se
crean estas variables en la pila y se destruyen cuando la función termina. La única
excepción la constituyen las variables locales declaradas como estáticas ( static ).
En este caso, la variable mantiene su valor entre cada dos llamadas a la función
aún cuando su visibilidad sigue siendo local a la función.
Una función siempre es conocida por todo el programa, excepto cuando se
declara como estática, en cuyo caso sólo la podrán utilizar las funciones del
mismo módulo decompilacion
En C, todas las funciones están al mismo nivel de ámbito. Es decir, no se puede
definir una función dentro de otra función. Esto es por lo que C no es
técnicamente un lenguaje estructurado en bloques.
También puede suceder que en un mismo ámbito aparezcan variables locales y
globales con el mismo nombre. Cuando sucede esta situación, siempre son las
variables locales y argumentos formales los que tienen prioridad sobre las
globales. Para ver reflejado todo esto más gráficamente se muestra un ejemplo a
continuación:
Variables Locales y Globales en C - Diferencias y ejemplo
Una variable local es aquella cuyo ámbito se restringe a la función que se declaro.
Una variable global se define fuera del cuerpo de cualquier función.
CONCLUSION
A diferencia de otros lenguajes de programación que emplean un tipo denominado
cadena string para manipular un conjunto de símbolos, en C, se debe simular
mediante un arreglo de caracteres, en donde la terminación de la cadena se debe
indicar con nulo. Un nulo se especifica como '\0'. Por lo anterior, cuando se
declare un arreglo de caracteres se debe considerar un carácter adicional a la
cadena más larga que se vaya a guardar. Por ejemplo, si se quiere declarar un
arreglo cadena que guarde una.
En programación, una cadena de caracteres, o frase (string en inglés) es una
secuencia ordenada de longitud arbitraria (aunque finita) de elementos que
pertenecen a un cierto alfabeto. En general, una cadena de caracteres es una
sucesión de caracteres (letras, números u otros signos o símbolos).
Desde un punto de vista de la programación, si no se ponen restricciones al
alfabeto, una cadena podrá estar formada por cualquier combinación finita de todo
el juego caracteres disponibles (las letras de la 'a' a la 'z' y de la 'A' a la 'Z', los
números del '0' al '9', el espacio en blanco ' ', símbolos diversos '!', '@', '%', etc).
En este mismo ámbito (el de la programación), se utilizan normalmente como un
tipo de dato predefinido, para palabras, frases o cualquier otra sucesión de
caracteres. En este caso, se almacenan en un vector de datos, o matriz de datos de
una sola fila (array en inglés).
Un caso especial de cadena es la que contiene cero caracteres, a esta cadena se la
llama cadena vacía
Referencias electrónicas
http://decsai.ugr.es/~jfv/ed1/c/cdrom/cap6/cap62.htm
https://sites.google.com/site/portafoliodealgyprogdejgii/funciones-
y-procedimientos-definicion-y-declaracion
https://uniwebsidad.com/libros/algoritmos-python/capitulo-
6/operaciones-con-cadenas
https://paginadec.webcindario.com/old/cadenas-operaciones.html
https://cchtexcoco.wordpress.com/manejo-de-cadenas/
https://disenowebakus.net/variables-locales-globales.php
ANEXOS
Anexo 1
Anexo 2
Anexo 3
Anexo 4
Anexo 5
Anexo 6
Anexo 7
Anexo 8
Anexo 9
Anexo 10
Anexo 11
Anexo 12
Anexo 13
Anexo 14
Anexo 15