13.01.2015 Views

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

✐<br />

✐<br />

✐<br />

“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 167 — #205<br />

✐<br />

4.10. Ejercicios<br />

m<strong>en</strong>sajes a objetos.<br />

Aunque empaquetar datos y funciones juntos es un b<strong>en</strong>ificio significativo para<br />

la organización del código y hace la librería sea más fácil de usar porque previ<strong>en</strong>e<br />

conflictos de nombres ocultando los nombres, hay mucho más que se puede hacer<br />

para t<strong>en</strong>er programación más segura <strong>en</strong> <strong>C++</strong>. En el próximo capítulo, apr<strong>en</strong>derá<br />

cómo proteger algunos miembros de una struct para que sólo el programador<br />

pueda manipularlos. Esto establece un límite claro <strong>en</strong>tre lo que puede cambiar el<br />

usuario de la estructura y lo que sólo el programador puede cambiar.<br />

4.10. Ejercicios<br />

Las soluciones a los ejercicios se pued<strong>en</strong> <strong>en</strong>contrar <strong>en</strong> el docum<strong>en</strong>to electrónico<br />

titulado «The Thinking in <strong>C++</strong> Annotated Solution Guide», disponible por poco<br />

dinero <strong>en</strong> www.BruceEckel.com.<br />

1. En la librería C estándar, la función puts() imprime un array de caracteres a<br />

la consola (de modo que puede escribir puts("Hola")). Escriba un program<br />

C que use puts() pero que no incluya o de lo contrario declare<br />

la función. Compile ese programa con su compilador de C. (algunos compiladores<br />

de <strong>C++</strong> no son programas distintos de sus compiladores de C, es ese<br />

caso puede que necesite averiguar que opción de línea de comando fuerza una<br />

compilación C.) Ahora compílelo con el compilador <strong>C++</strong> y preste at<strong>en</strong>ción a la<br />

difer<strong>en</strong>cia.<br />

2. Cree una declaración de struct con un único método, <strong>en</strong>tonces cree una definición<br />

para ese método. Cree un objeto de su nuevo tipo de dato, e invoque el<br />

método.<br />

3. Cambie su solución al Ejercicio 2 para que la struct sea declarada <strong>en</strong> un fichero<br />

de cabecera conv<strong>en</strong>i<strong>en</strong>tem<strong>en</strong>te «guardado», con la definición <strong>en</strong> un fichero<br />

cpp y el main() <strong>en</strong> otro.<br />

4. Cree una struct con un único atributo de tipo <strong>en</strong>tero, y dos funciones globales,<br />

cada una de las cuales acepta un puntero a ese struct. La primera función<br />

ti<strong>en</strong>e un segundo argum<strong>en</strong>to de tipo <strong>en</strong>tero y asigna al <strong>en</strong>tero de l struct el<br />

valor del argum<strong>en</strong>to, la segunda muestra el <strong>en</strong>tero de la struct. Prueba las<br />

funciones.<br />

5. Repita el Ejercicio 4 pero mueva las función de modo que sean métodos de la<br />

struct, y pruebe de nuevo.<br />

6. Cree una clase que (de forma redundante) efectúe la selección de atributos y<br />

una llamada a método usando la palabra reservada this (que indica a la dirección<br />

del objeto actual)<br />

7. Cree una Stach que mant<strong>en</strong>ga doubles. Rellénela con 25 valores double, después<br />

muéstrelos <strong>en</strong> consola.<br />

8. Repita el Ejercicio 7 con Stack.<br />

9. Cree un fichero que cont<strong>en</strong>ga una función f() que acepte un argum<strong>en</strong>to <strong>en</strong>tero<br />

y lo imprima <strong>en</strong> consola usando la función printf() de escribi<strong>en</strong>do:<br />

printf("%d\n", i) donde i es el <strong>en</strong>tero que desea imprimir. Cree un<br />

fichero separado que cont<strong>en</strong>ga main(), y este fichero declare f() pero aceptando<br />

un argum<strong>en</strong>to float. Invoque f() desde main(). Int<strong>en</strong>te compilar y <strong>en</strong>lazar<br />

el programa con el compilador <strong>C++</strong> y vea qué ocurre. Ahora compile y<br />

167<br />

✐<br />

✐<br />

✐<br />

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

Saved successfully!

Ooh no, something went wrong!