CONTENIDO DE LA LECCIÓN 18

CONTENIDO DE LA LECCIÓN 18 CONTENIDO DE LA LECCIÓN 18

azul2.bnct.ipn.mx
from azul2.bnct.ipn.mx More from this publisher
06.05.2013 Views

MIGUEL Á. TOLEDO MARTÍNEZ Ejemplo 18.1 Escriba las definiciones para los siguientes arreglos: a. Un arreglo llamado enteros que almacenará 10 enteros. b. Un arreglo llamado reales que almacenará 5 valores de punto flotante. c. Un arreglo llamado caracteres que almacenará 11 caracteres. d. Un arreglo llamado clase que almacenará calificaciones de 25 estudiantes. Suponga que las calificaciones A, B, C, D y R se definen en una clase de datos enumerados denominada calificaciones. ¿Qué índice localiza el último elemento en cada uno de los arreglos anteriores? a. int enteros[10]; b. float reales[5]; c. char caracteres[11]; d. enum calificaciones {R, D, C, B, A}; e. calificaciones clase[25]; Solución El índice que localiza el último elemento en cada uno de los arreglos anteriores es uno menos que el tamaño definido del arreglo. En cada una de las definiciones anteriores se menciona primero la clase de datos del elemento, seguida por el identificador del arreglo, después el tamaño del arreglo encerrado en corchetes. Cada una de las definiciones es muy obvia, excepto quizá la definición del arreglo clase. En esta definición, la clase de datos del arreglo es la clase de datos enumerada llamada calificaciones, que deberá anunciarse antes de la definición del arreglo. Por tanto, diremos que el arreglo clase puede almacenar elementos cuya clase de datos sean calificaciones. De esta manera, los elementos que se pueden almacenar en el arreglo clase se limitan a los elementos de la clase de datos enumerados de R, D, C, B y A. Observe que el compilador no los considera como caracteres, sino como elementos de una clase de datos enumerados llamada calificaciones. EL ACCESO A LOS ARREGLOS Tener acceso al arreglo significa insertar elementos dentro del arreglo para almacenar u obtener elementos almacenados desde el arreglo. INSERCIÓN DE ELEMENTOS EN LOS ARREGLOS UNIDIMENSIONALES Hay básicamente 3 formas principales de insertar elementos dentro de un arreglo: mediante un enunciado de asignación directa, mediante lectura o usando ciclos. ASIGNACIÓN DIRECTA EXAMEN BREVE 35 El formato general para insertar un elemento, dentro un arreglo, con asignación directa es como sigue: FORMATO DE ASIGNACIÓN DIRECTA (INSERCIÓN DE ELEMENTOS EN UN ARREGLO) [índice del arreglo] = valor del elemento; ARREGLOS, APUNTADORES Y ESTRUCTURAS – LECCIÓN 18 18-6

MIGUEL Á. TOLEDO MARTÍNEZ Con las siguientes definiciones de arreglos: char caracteres[6]; int enteros[3]; las asignaciones directas pueden ser como estas: caracteres [0] ='H'; caracteres [5] ='\0'; enteros [0] = 16; enteros [2] = -22; En cada uno de estos ejemplos se coloca un elemento en la primera y en la última posición de almacenamiento del arreglo respectivamente. El carácter 'H' se coloca en la primera posición del arreglo caracteres y el terminador nulo se coloca en la última posición de este arreglo. Recuerde que la primera posición de este arreglo es siempre [0] y la última posición del arreglo es siempre uno menos que el tamaño del arreglo. El entero 16 se coloca en la primera posición del arreglo enteros y el entero -22 se coloca en la última posición de este arreglo. Observe que se menciona el nombre respectivo del arreglo, seguido por el índice del arreglo dentro de corchetes. Entonces se usa un operador de asignación (=) seguido por el elemento que se va a insertar. La clase de datos del elemento que se inserta deberá ser la misma que aquella definida para los elementos del arreglo; de otra manera, se obtendrán resultados impredecibles cuando se trabaje con los elementos del arreglo. SUGERENCIA DE DEPURACIÓN Recuerde que los índices de un arreglo en C++ son valores enteros. Esto significa que cualquier índice especificado se convierte en su equivalente entero. Por ejemplo, es posible especificar un índice como un carácter como este: arreglo['A’]; sin embargo, C++ trata esto como arreglo[65], porque, desde el código ASCII, el equivalente entero del carácter ‘A’ es 65. De la misma manera, se puede especificar un índice usando un valor de punto flotante, como este: arreglo[1.414], sin embargo, C++ lo ve como arreglo[1], porque la parte entera de 1.414 es 1. Los elementos de datos enumerados también se pueden usar como índices, porque el compilador iguala los elementos enumerados a enteros, de acuerdo con el orden listado en el enunciado de la clase de datos enumerados. Para evitar confusión y problemas potenciales, se sugiere utilizar siempre valores enteros en los índices, a menos que la aplicación específicamente indique otra cosa. LECTURA DE LOS ELEMENTOS DEL ARREGLO También es posible usar cualquiera de las funciones u objetos de entrada de C o C++ para insertar los elementos del arreglo desde un teclado, como sigue: cin > caracteres[1]; cin > enteros[0]; En este caso, el usuario deberá escribir el valor del elemento del arreglo respectivo desde el teclado y oprimir la tecla ENTER para ejecutar cada enunciado. Deberá escribir un carácter para el primer enunciado cin y un entero para el segundo cin. (¿Por qué?) El carácter escrito desde el teclado se almacenará en la segunda posición (índice[1]) del arreglo caracteres, mientras que el entero escrito desde el teclado se almacenará en la primera posición (índice[0]) del arreglo enteros. ARREGLOS, APUNTADORES Y ESTRUCTURAS – LECCIÓN 18 18-7

MIGUEL Á. TOLEDO MARTÍNEZ<br />

Con las siguientes definiciones de arreglos:<br />

char caracteres[6];<br />

int enteros[3];<br />

las asignaciones directas pueden ser como estas:<br />

caracteres [0] ='H';<br />

caracteres [5] ='\0';<br />

enteros [0] = 16;<br />

enteros [2] = -22;<br />

En cada uno de estos ejemplos se coloca un elemento en la primera y en la última<br />

posición de almacenamiento del arreglo respectivamente. El carácter 'H' se coloca en la primera<br />

posición del arreglo caracteres y el terminador nulo se coloca en la última posición de este<br />

arreglo. Recuerde que la primera posición de este arreglo es siempre [0] y la última posición del<br />

arreglo es siempre uno menos que el tamaño del arreglo. El entero 16 se coloca en la primera<br />

posición del arreglo enteros y el entero -22 se coloca en la última posición de este arreglo.<br />

Observe que se menciona el nombre respectivo del arreglo, seguido por el índice del<br />

arreglo dentro de corchetes. Entonces se usa un operador de asignación (=) seguido por el<br />

elemento que se va a insertar. La clase de datos del elemento que se inserta deberá ser la misma<br />

que aquella definida para los elementos del arreglo; de otra manera, se obtendrán resultados<br />

impredecibles cuando se trabaje con los elementos del arreglo.<br />

SUGERENCIA <strong>DE</strong> <strong>DE</strong>PURACIÓN<br />

Recuerde que los índices de un arreglo en C++ son valores enteros. Esto significa que cualquier índice<br />

especificado se convierte en su equivalente entero. Por ejemplo, es posible especificar un índice como un carácter<br />

como este: arreglo['A’]; sin embargo, C++ trata esto como arreglo[65], porque, desde el código ASCII, el<br />

equivalente entero del carácter ‘A’ es 65. De la misma manera, se puede especificar un índice usando un valor de<br />

punto flotante, como este: arreglo[1.414], sin embargo, C++ lo ve como arreglo[1], porque la parte entera de<br />

1.414 es 1. Los elementos de datos enumerados también se pueden usar como índices, porque el compilador iguala<br />

los elementos enumerados a enteros, de acuerdo con el orden listado en el enunciado de la clase de datos<br />

enumerados. Para evitar confusión y problemas potenciales, se sugiere utilizar siempre valores enteros en los<br />

índices, a menos que la aplicación específicamente indique otra cosa.<br />

LECTURA <strong>DE</strong> LOS ELEMENTOS <strong>DE</strong>L ARREGLO<br />

También es posible usar cualquiera de las funciones u objetos de entrada de C o C++ para<br />

insertar los elementos del arreglo desde un teclado, como sigue:<br />

cin > caracteres[1];<br />

cin > enteros[0];<br />

En este caso, el usuario deberá escribir el valor del elemento del arreglo respectivo desde<br />

el teclado y oprimir la tecla ENTER para ejecutar cada enunciado. Deberá escribir un carácter<br />

para el primer enunciado cin y un entero para el segundo cin. (¿Por qué?) El carácter escrito<br />

desde el teclado se almacenará en la segunda posición (índice[1]) del arreglo caracteres,<br />

mientras que el entero escrito desde el teclado se almacenará en la primera posición (índice[0])<br />

del arreglo enteros.<br />

ARREGLOS, APUNTADORES Y ESTRUCTURAS – <strong>LECCIÓN</strong> <strong>18</strong> <strong>18</strong>-7

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!