Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
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 />
✐