Programacion

Solo disponible en BuenasTareas
  • Páginas : 11 (2703 palabras )
  • Descarga(s) : 0
  • Publicado : 23 de junio de 2010
Leer documento completo
Vista previa del texto
Antes de entrar en el tema de los arrays también conocidos como arreglos, tablas o matrices, veremos un caso especial de ellos. Se trata de las cadenas de caracteres, frecuentemente nombrados en inglés como strings.

Nota: en informática es frecuente usar términos en inglés, sobre todo cuando la traducción puede inducir a errores, como en este caso, en que string se suele traducir como cuerda ocadena.
Aunque array también se puede traducir como ristra o sarta, que en este caso parece más apropiado, en ningún texto de programación verás que se hable jamás de ristras o sartas de caracteres o enteros.

Una cadena en C++ es un conjunto de caracteres, o valores de tipo char, terminados con el carácter nulo, es decir el valor numérico 0. Internamente, en el ordenador, se almacenan enposiciones consecutivas de memoria. Este tipo de estructuras recibe un tratamiento muy especial, ya que es de gran utilidad y su uso es continuo.

La manera de definir una cadena es la siguiente:

char [];

Nota: En este caso los corchetes no indican un valor opcional, sino que son literalmente corchetes, por eso están en negrita.

Cuando se declara una cadena hay que tener en cuenta quetendremos que reservar una posición para almacenar el carácter nulo terminador, de modo que si queremos almacenar la cadena "HOLA", tendremos que declarar la cadena como:

char Saludo[5];

Las cuatro primeras posiciones se usan para almacenar los caracteres "HOLA" y la posición extra, para el carácter nulo.

También nos será posible hacer referencia a cada uno de los caracteres individuales quecomponen la cadena, simplemente indicando la posición. Por ejemplo el tercer carácter de nuestra cadena de ejemplo será la 'L', podemos hacer referencia a él como Saludo[2].

Es muy importante tener presente que en C++, los índices tomarán valores empezando siempre en cero, así el primer carácter de nuestra cadena sería Saludo[0], que es la letra 'H'.

En un programa C++, una cadena puedealmacenar informaciones en forma de texto, como nombres de personas, mensajes de error, números de teléfono, etc.

La asignación directa sólo está permitida cuando se hace junto con la declaración.

El siguiente ejemplo producirá un error en el compilador, ya que una cadena definida de este modo se considera una constante, como veremos en el capítulo de "arrays" o arreglos.

char Saludo[5];Saludo = "HOLA"

La manera correcta de asignar una cadena es:

char Saludo[5];
Saludo[0] = 'H';
Saludo[1] = 'O';
Saludo[2] = 'L';
Saludo[3] = 'A';
Saludo[4] = 0;

O bien:

char Saludo[5] = "HOLA";

Si te parece un sistema engorroso, no te preocupes, existen funciones que facilitan la manipulación de cadenas.

De hecho, existen muchas de tales funciones, que permiten compararlas,copiarlas, calcular su longitud, imprimirlas, visualizarlas, guardarlas en disco, etc. Además, frecuentemente nos encontraremos a nosotros mismos creando nuevas funciones que básicamente hacen un tratamiento de cadenas.

En C existe una biblioteca estándar (disponible en todos los compiladores), llamada precisamente string. En C++ también existe una biblioteca para manipular cadenas, aunque en estecaso se trata de una biblioteca de clases.

[pic]

1 ¿Qué es una cadena de caracteres?

En el caso específico de la palabra inglesa "array" concerniente a este curso de C, no haremos la traducción de la misma. En C, nos referimos a un array como un conjunto de datos todos del mismo tipo, siendo la cadena de caracteres un tipo especial de array pues se trata de un conjunto de datos de tipochar que termina con un caracter nulo, a este tipo de cadenas también se les conoce como "cadenas ASCII-Z" y será la que trataremos en primer lugar. Empezamos por definir un array de tipo char y especificamos el tamaño del mismo con un número, llamado subíndice, encerrado entre corchetes. Este número le indica al sistema la cantidad de espacios para caracteres que contendrá la cadena en cuestión....
tracking img