Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
✐<br />
✐<br />
✐<br />
“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 168 — #206<br />
✐<br />
Capítulo 4. Abstracción de Datos<br />
<strong>en</strong>lace el programa usando el compilador C, y vea que ocurre cuando se ejecuta.<br />
Explique el comportami<strong>en</strong>to.<br />
10. Averigüe cómo g<strong>en</strong>erar l<strong>en</strong>guaje <strong>en</strong>samblador con su compilador C y <strong>C++</strong>. Escriba<br />
una función <strong>en</strong> C y una struct con un único miembro <strong>en</strong> <strong>C++</strong>. G<strong>en</strong>ere la<br />
salida <strong>en</strong> l<strong>en</strong>guaje <strong>en</strong>samblador para cada una de ellas y <strong>en</strong>cu<strong>en</strong>tre los nombres<br />
de ambas funciones, de modo que pueda ver qué tipo de «decoración» aplica<br />
el compilador a dichos nombres.<br />
11. Escriba un programa con código condicionalm<strong>en</strong>te-compilado <strong>en</strong> main(), para<br />
que cuando se defina un valor del preprocesador, se muestre un m<strong>en</strong>saje,<br />
pero cuando no se defina, se imprima otra m<strong>en</strong>saje distinto. Compile este experim<strong>en</strong>tando<br />
con un #define <strong>en</strong> el programa, después averigüe la forma de<br />
indicar al compilador definiciones de preprocesador <strong>en</strong> la línea de comandos y<br />
experim<strong>en</strong>te con ello.<br />
12. Escriba un programa que use assert() con un argum<strong>en</strong>to que siempre sea<br />
falso (cero) y vea que ocurre cuando lo ejecuta. Ahora compílelo con #define<br />
NDEBUG y ejecútelo de nuevo para ver la difer<strong>en</strong>cia.<br />
13. Cree un tipo abstracto de dato que repres<strong>en</strong>te un cinta de vídeo <strong>en</strong> una ti<strong>en</strong>da<br />
de alquiler. Considere todos los datos y operaciones que serían necesarias para<br />
que el tipo Video funcione con el sistema de gestión de la ti<strong>en</strong>da. Incluya un<br />
método print() que muestre información sobre el Video<br />
14. Cree un objeto Pila que almac<strong>en</strong>e objetos Video del Ejercicio 13. Cree varios<br />
objetos Video, guárdelos <strong>en</strong> la Stack y <strong>en</strong>tonces muéstrelos usando Video-<br />
::print().<br />
15. Escriba un programa que muestre todos los tamaños de los tipos de datos fundam<strong>en</strong>tales<br />
de su computadora usando sizeof.<br />
16. Modifique Stash para usar vector como estructura de datos subyac<strong>en</strong>te.<br />
17. Cree dinámicam<strong>en</strong>te espacio de almac<strong>en</strong>ami<strong>en</strong>to para los sigui<strong>en</strong>te tipos usando<br />
new: int, long, un array de 100 char, un array de 100 float. Muestre sus<br />
direcciones y libérelos usando delete.<br />
18. Escriba una función que tome un argum<strong>en</strong>to char*. Usando new, pida alojami<strong>en</strong>to<br />
dinámico para un array de char con un tamaño igual al argum<strong>en</strong>to<br />
pasado a la función. Usando indexación de array, copie los caracteres del argum<strong>en</strong>to<br />
al array dinámico (no olvide el terminador nulo) y devuelva el puntero<br />
a la copia. En su main(), pruebe la función pasando una cad<strong>en</strong>a estática <strong>en</strong>tre<br />
comillas, después tome el resultado y páselo de nuevo a la función. Muestre<br />
ambas cad<strong>en</strong>as y punteros para poder ver que ti<strong>en</strong><strong>en</strong> distinta ubicación. Mediante<br />
delete libere todo el almac<strong>en</strong>ami<strong>en</strong>to dinámico.<br />
19. Haga un ejemplo de estructura declarada con otra estructura d<strong>en</strong>tro (un estructura<br />
anidada). Declare atributos <strong>en</strong> ambas structs, y declare y defina<br />
métodos <strong>en</strong> ambas structs. Escriba un main() que pruebe los nuevos tipos.<br />
20. ¿Cómo de grande es una estructura Escriba un trozo de código que muestre<br />
el tamaño de varias estructuras. Cree estructuras que t<strong>en</strong>gan sólo atributos y<br />
otras que t<strong>en</strong>gan atributos y métodos. Después cree una estructura que no t<strong>en</strong>ga<br />
ningún miembro. Muestre los tamaños de todas ellas. Explique el motivo<br />
del tamaño de la estructura que no ti<strong>en</strong>e ningún miembro.<br />
168<br />
✐<br />
✐<br />
✐<br />
✐