Você está na página 1de 12

Fundamentos de Software de Comunicaciones

E.T.S.I. Telecomunicacin
Curso 2011/2012
Prctica 0

Revisin de arrays, cadenas, punteros y estructuras

La prctica sirve para refrescar conceptos con los que trabajar con secuencias de bytes,
cadenas de caracteres, punteros y estructuras de datos. Tambin supone un acercamiento
a un entorno de desarrollo visual (Kdevelop).

1 Entorno de desarrollo:
La mquina virtual de laboratorio est disponible en

D:\FSC-JMCruz-Fedora16-x86_2C_2011_2012.

Tenis a vuestra disposicin un editor de texto con coloreado de sintaxis C/C++,


disponible en consola (kwrite), y un entorno de desarrollo visual que permite la
compilacin y las pruebas de depuracin paso a paso (kdevelop).

Para las prcticas, es indiferente utilizar la compilacin en lnea (gcc o g++) o el


entorno Kdevelop, pero ste ltimo permite asegurar de mejor forma que el cdigo
est libre de errores.

a) Prepara un programa que muestre por pantalla el famoso Hola mundo! y


complalo y ejectalo desde consola.
b) Abre Kdevelop y haz lo mismo pero ahora creando un proyecto de tipo C++

Apuntes descargados de wuolah.com


En la siguiente pantalla (seleccin de control de versiones), pulsa el botn finish.

2
A continuacin, se pide confirmar la ruta al gestor del proyecto (el comando
cmake, del que se hablar en otro momento). Pulsar OK.
Si todo ha ido bien, aparecer algo parecido a esta pantalla:

Ahora, siempre antes de ejecutar hay que compilar. El marco superior izquierdo
se denomina gestor de proyectos, y desplegando sobre el icono con la carpeta del
nombre del proyecto, aparecern varios iconos que representan ficheros del
mismo. El primer icono desplegado (una rueda dentada con un smbolo de
play azul) representa las posibilidades de compilacin y ejecucin. Si
pulsamos con el botn derecho sobre el mismo, aparecer un men contextual
con la opcin de compilacin resaltada en la siguiente imagen:

3
Pulsando, para iniciar la compilacin del proyecto debe aparecer este resultado:

4
Si no hay errores, entonces estamos listos para ejecutar la aplicacin. Hay dos
tipos de ejecucin: orientada a depuracin y orientada a produccin.
Normalmente utilizaremos la primera, en la que el compilador introduce cdigo
adicional para ayudar a depurar el cdigo: ejecucin guiada paso a paso,
inspeccin del valor de las variables, etc. En modo depuracin, un programa es
ms pesado (ocupa ms bytes en disco) y es ms lento. As que el programa en
modo depuracin solo es vlido para pruebas de laboratorio (como en esta
asignatura). Para los clientes finales, se tiene que dar un ejecutable sin smbolos
de depuracin y, obviamente, sin errores!

Ejecuta tu aplicacin de prueba para depuracin, de nuevo a travs del men


contextual que aparece con el botn derecho sobre el smbolo de la rueda (en el
gestor de proyectos). Mira la figura:

La ejecucin produce una salida como esta:

5
NOTA: El comando equivalente para generar la versin de depuracin en
consola: es g++/gcc -g o nombre_del_ejecutable archivos_fuente.c/cpp
No obstante, para realizar depuraciones en consola, como veremos a
continuacin, habra que utilizar el comando gdb. Afortunadamente, Kdevelop
esconde el trabajo directo con este comando de una forma visual y ms intuitiva.

Ejecucin paso a paso:

Sobre nuestro cdigo, vamos a ejecutar las instrucciones del programa una a
una. Para ello, hay que empezar solicitando al depurador que pare en una
instruccin concreta. A esto se le llama poner un punto de ruptura. Se pueden
poner tantos como se quieran, tanto en el main() como en otras funciones y
procedimientos.

Para poner un punto de ruptura en una sentencia, hay que irse al margen lateral
izquierdo (marcado en gris) y pulsar con el botn izquierdo del ratn. Debe
aparecer un icono con una mariquita:

6
Ahora vamos a repetir la operacin de Debug as... -> Native Application, y
debera suceder algo distinto, puesto que la aplicacin no termina, sino que se
queda esperando a ejecutar justo la instruccin donde nosotros hemos puesto el
punto de ruptura:

7
A partir de aqu, t controlas la ejecucin!

Tecla F10: Avanza sentencia


Tecla F11: Avanza pero entrando en una funcin
Tecla F12: Avanza saliendo de la funcin en la que ests (la ejecuta hasta el
final)
Estas teclas corresponden a las opciones del men Run. Hay ms.

Adems de parar en el momento que veas preciso, tambin es interesante


inspeccionar los valores de las variables. Hay dos formas. La primera es
desplegando el panel de variables que aparece pulsando la pestaa ms a la
izquierda en el margen de la pantalla (Variables). La segunda es pasando el
cursor directamente encima de alguna. En esta figura se ven los dos modos:

8
Pulsando varias veces la tecla F10, debera actualizarse el puntero de ejecucin y
salir del programa. al final.

Nota: Para eliminar puntos de ruptura existentes, basta con pulsar sobre el icono
de la mariquita.

Entradas al programa:

Por defecto, un programa depurado o ejecutado desde Kdevelop no acepta


ningn argumento adicional de entrada al ejecutable (argumentos del main), ni
tampoco permite la introduccin de datos por consola (cin/scanf/fgets). Para
cambiar esta configuracin, hay que cambiar el modo de ejecucin del proyecto,
yendo al men Run->Configure Launches, como indica la figura:

9
Para permitir la entrada por teclado, marca el uso de terminal externo para E/S.
Mira la siguiente figura:

10
Para incluir argumentos de entrada al ejecutable, introdcelos en la caja de texto
Arguments. Por ejemplo, si nuestro ejecutable se llama mi_ls, y se ejecuta con
argumentos:
$> mi_ls la,

entonces en la caja de texto Arguments tienes que introducir: -la

NOTA: Para que funcione la E/S por terminal, hay que habilitar al usuario
alumno, que es el que ejecuta Kdevelop, para que pueda abrir y controlar
terminales (consolas de tipo Unix tty). Para ello, cierra Kdevelop y abre una
consola e introduce estas lneas:

$> su
(te pide la password de super usuario, que es: alumno)
#> usermod G tty alumno
#>exit
$>exit

Ahora ya puedes volver a abrir Kdevelop y probar la depuracin con


cin/scanf/fgets. Cuando la ejecucin llegue, como antes, a la instruccin de
entrada por teclado, se parar la depuracin, pero la diferencia es que debe haber
una consola (en ocasiones sale minimizada), en donde se introducir la
informacin. Tras darle al retorno de carro, se desbloquear la depuracin y se
podr continuar con toda normalidad.

2 Revisin de C para programacin de sistemas:

a) Arrays: secuencia ordenada de valores de un tipo.


Cadenas: secuencia ordenada de valores de tipo char, cuyo ltimo valor es el
carcter terminador de cadena: \0. Recordatorio: en C no existe el objeto string

Practica con los cdigos disponibles en:

http://www.cplusplus.com/doc/tutorial/arrays/

http://www.cplusplus.com/doc/tutorial/ntcs/

b) Punteros: variables con valores de memoria donde residen otras variables

Practica todas las secciones del tutorial:

http://www.cplusplus.com/doc/tutorial/pointers/

Y presta mucha atencin a:


-Punteros y arrays
-Punteros a punteros

11
-Punteros a funciones

c) Memoria dinmica (operaciones en heap):

Practica todos los cdigos disponibles en:

http://www.cplusplus.com/doc/tutorial/dynamic/

Pero sustituye las llamadas a new/delete por sus equivalentes a malloc/free de C.


Recuerda que no se pueden mezclar new-free ni malloc-delete!

d) Estructuras de datos:

Practica con los cdigos disponibles en:

http://www.cplusplus.com/doc/tutorial/structures/

Y haz hincapi en los punteros a estructuras.

12

Você também pode gostar