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

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 />

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

Saved successfully!

Ooh no, something went wrong!