Prácticas de programación en C ± (Manuales) (Spanish Edition) [1 ed.] 848004957X, 9788480049573

Este libro es el complemento práctico del texto básico, del mismo autor y editorial, de la asignatura Fundamentos de Pro

580 80 18MB

Spanish Pages 168 [151] Year 2010

Report DMCA / Copyright

DOWNLOAD FILE

Polecaj historie

Prácticas de programación en C ± (Manuales) (Spanish Edition) [1 ed.]
 848004957X, 9788480049573

Table of contents :
punto de lectura
Índice general
1 Introducción
2 Instalación del entorno de prácticas
3 El entorno a vista de pájaro
4 Primera práctica: impresión de datos personales
5 Conceptos básicos del entorno
6 Segunda práctica: rombos
7 Depuración de programas
8 Tercera práctica: calendario
9 Manejo de proyectos con el entorno
10 Cuarta práctica: programación modular
11 Esto es sólo el principio
Bibliografía

Citation preview

r

PRÁCTICAS DE PROGRAMACiÓN en C± klsé A. Cerrada 50molinos Manuel E. Collado Machuca

Ismael Abad Cardiel

~ Edltori,¡l uni'o'tr5lurU

\II!.

b moo Am:es

,

PRACTICAS , DE PROGRAMACION en C±

JosÉ A. CERRADA SOMOLINOS Catedrático de Lenguajes y Sistemas Informáticos (UNED) MANUEL E. COLLADO MACHUCA Catedrático de Lenguajes y Sistemas Informáticos (UPM) ISMAEL ABAD CARDIEL Profesor Colaborador de Lenguajes y Sistemas Informáticos (UNED) RUBÉN HERADIO GIL Profesor Ayudante de Lenguajes y Sistemas Informáticos (UNED)

,

PRACTICAS , DE PROGRAMACION en C±

@

.~ditorial universitaria ~ Ramón Areces

Índice general 1 Introducción 1.1 Prácticas de la asignatura .. 1.2 Organización del texto . . 1.3 Cómo utilizar el libro . . . . . . .

1 3 3 6

.. . . . . . . . . . . . . . .. ...... . .. . . .. . . .

. .

.

2 Instalación del entorno de prácticas 2. 1

Code:: Blocks ú

9 9 9

.....

. . . ... . . ..

2.2 Requisitos de Code :: Blocksc:t 2.3 Ins talación del entorno .

..

10

3 El entorno a vista de pájaro

3.1 Cómo poner en marcha Code:: Blocksc:t .. 3.2 Cómo escribir un programa ... ... .. . . . 3.3 Cómo generar un programa ejecutable .. . . 3.4 Code::Blocks c , al rescate . . . . . . . . 3.4. 1 Errores de prccompiJ ación C± 3.4.2 Errores de compilación .. 3.4.3 Errores de ejecución , . . . . .

13 13

...... . . . .... . .

4 Primera práctica: impresión de datos personales 4.1 Enundado de la práctica. , . . . . . . . . . . . . . 4.2 Autocorrección de la práctica ........ .

15 [7

18 19

20 2S

.. . . . . . . . . . . .. . . .

5 Conceptos básicos del entorno 5.1 Estructura generaJ del entorno . 5.2 Gestión de archivos . . . . . . . . . . . . . . . . . . • . 5.2.1 Creación de nuevos archivos . . . . . . . . . . 5.2.2 Almacenamiento de archivos . . . . . . . . . . 5.2.3 Opciones para abrir archivos almacenados .

13

25 .

. .

27 33

34 36 36 39 40

ÍNDICE GENERAL

vtll

5.3 Opciones de edición . . . . . . . . . . 5.3.1 Introducción . . . . . . . . . . 5.3.2 Acciones de cdidón de texto 5.3.3 Apariencia del texto . . . . . . 5.3.4 Autocompletado de texto .. 5.3.5 Balanceo de delimitadores de texto 5.3.6 Otros comentarios básicos .. 5.4 Generación de archivos ejecutables . 5.5 Análisis de programas C± . . . . . . .

42 42 46 49 49 50 51

5.6 Tratamiento de errores en C± . . . . .

62 62

5.6.1 5.6.2 5.6.3 5.6.4 5.6.5 5.6.6 5.6.7

. .... . Errores relacionados con la función mai n ... . .. . Errores relacionados con el uso de expresiones ... . Errores relacionados con la declaración de constantes Errores relacionados con la declaradón de subprogramas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. Errores relacionados con la declaración de variables . Errores relacionados con el uso de f or, if, switch, whileydowhile ........ Otros errores . . .

6 Segunda práctica: rombos 6.1 Enunciado de la práctica . . . . . . . . . . . . . . . . . . . . . . 6.2 Metodología de desarrollo del algoritmo ...• . . . . . . _ . 6.2.1 División del rombo en triángulos ... • .... _ . . .. 6.2.2 División de un triángulo en líneas 6.3 Autocorrección de la práctica 7 Depuración de programas 7.1 Conceptos básicos sobre la depuración de programas. 7.2 Ejemplo de depuración simple con mensajes . 7.3 Operaciones de depuración . . . . . . . . . 7.4 Ventanas de depuración e información .. 7.5 Ejemplo de depuraCión .. .. . . . . . . . . 8 Tercera práctica: calendario 8.1 Enunciado . . . . . . . . . . .... . . . . . . 8.2 Metodología de desarrolJ o del algoritmo . 8.3 Autocorrección de la práctica . . . . . . . .

52 57

63 65 65 67 68

68 71 71 74 74 77

78

85 86 87 90

94 100 105 105 106 107

ÍNDICE GENERAL

8.3.1 Proceso de autocorrección . 8.3.2 Casos de prueba . . . . . . . . 8.4 Entrega telemática de las prácticas.

IX

107

111 113

9 Manejo de proyectos con el entorno 9.1 Un simulador del juego "Piedra, Papel o Tijera" .. 9.2 Solución del ejemplo . . . . . . . . . . . . . . . . 9.3 Escritura de la solución con Code: :Blocks c ± •• 9.4 Organización de un proyecto en MS Windows . 9.5 Menús para la gestión de proyectos ...

115 11 5

10 Cuarta práctica: programación modular 10.1 Normativa . . . . . . . . . . . . . . . . . 10.2 Ejemplo de enunciado de la cuarta práctica

133 133 134

11 Esto es sólo el principio

139 139 141 142 144 146

11.1 Complementos de Code: :Blocks c ± . . . • • 11.2 Complemento de búsqueda ThreadSearch . 11.3 Esquemas de edición . . . . . . . . . . 11.4 Navegación por el código . . . . . . . . 11.5 Configuración avanzada del entorno Bibliografía

116

122 129 130

151

Índice de cuadros Apariencia del texto en Code :: Blocks c :!: • • • • • • Errores relacionados con la función mai n . . .. Errores relacionados con el uso de expresiones. Errores relacionados con la declaración de constantes Errores relacionados con la declaración de subprogramas Errores relacionados con la declaración de variables . . . . Errores relacionados con el uso for, if, switch, while y dowhi l e . . . . . . . . . . . . . . 5.8 Otros errores comunes en C± . . . . . . . . . . . . . . . . . . ..

5.1 5.2 5.3 5.4 5.5 5.6 5.7

49

63 64 65 66 67 68 70

Capítulo 1 Introducción ey

sus sucesores (C++. C# y Java) en el d esarrollo de programas es incuestionable. La figura 1.1 muestra el ranking que TIOBE SOFTWARE publicó en marzo de 20 10. Según este ranking, el lenguaje de programación mas utilizado hoy clia es Java (1 7,596 de los proyectos informá ticos), seguido de e (17,2 896). C++ y C# ocupan la cuarta y la sexta posición (9,61 % Y 4,23 96 respectivamente). Es decir, el 46,62 % de las aplicaciones informáticas se realizan con algún lenguaje de "la familia

L

A importancia de

e". Lamentablemente, el coste de la flexibilid ad y potencia de es tos lenguajes es su enorme complejidad. Dada la dificultad de su aprendizaje, consideramos que estos lenguajes no son el mejor vehículo para iniciarse en la programación. Los autores del presente Libro, hemos hecho un esfuerzo por seleccionar el núcleo de la familia de lenguajes C que creemos más adecuado pedagógicamente para los alumnos de la asignatura de Fu ndamentos de Programación que se imparte en el primer año de Grado en Informática de la Universidad Nacional de Educación a Distancia (UNID). El resultado de este esfuer zo es el lenguaje C±.

Este libro es el complemento práctico del texto básico de la asignatura (consulte la referencia bibliogr áfica [1 ] al final de este libro), donde se explica detall adamen te el lenguaje C±.

Introducción

2

" "

14

"

ai~

,.:.5

Si

-

~~

-

.: ~ ~

No

.., E ~

e

- ~

~ .g

:a~

Si

E 8 ~-

Entrega automática de \as prádIca. Ydalos """",,,les deO alumno al servidor de la UNED

Entrega al tutor de su Centro Asociado de la UNED

Figura 1.2: Relación entre las prácticas y los temas del texto básico de la asignatura (1]

1.2 Organización del texto

5

• Capítulo 4: Primera Práctica: "Datos Personales". Incluye el enunciado de la primera práctica. Se trata de un problema sumamente sencillo que tiene como objetivo familiarizar al alumno con Code::Blocks c ±. Además, el capítulo describe el proceso de corrección automática de errores para la primera práctica. • Capítulo S: Conceptos básicos del entorno. Explica los fundamentos de Code::Blocksc .:!: , cubriendo las siguientes áreas: l. Gestión de archivos. 2. Edición de programas. 3. Compilación de programas C±. 4. Tratamiento de errores. 5. Ejecución de programas. • Capítulo 6: Segunda práctica: "Rombos". De dificultad creciente res· pecto a la primera practica, este capítulo propone otra práctica que exige el uso de nuevos elementos del lenguaje C±. En el capítulo se dan las pautas metodológicas para resolver la práctica, incidiendo en cuáles son las consecuencias negativas de no reflexionar suficientemente antes de codificar una solución y en cuál es la forma correcta de pensar para resolver problemas complejos. • Capítulo 7: Depuración de programas. Como suele decirse "errar es humano". Una estimación conservadora considera que se cometen 15 errores de programación por cada 1.000 lineas de código. No es de extrañar, por tanto, que cuando se comienza a programar por primera vez o se aprende un nuevo lenguaje se cometan muchos errores. Este capítulo describe cómo detectar y corregir errores de programación con Code::Blocks c ±. • Capítulo 8: Tercera práctica: "Calendario". Incluye el enunciado de la tercera práctica, las pautas metodológicas sobre cómo resolver la práctica, una descripción de su proceso de corrección automática y sob re su entrega telemática al equipo docente de la UNED. Además,

Introducción

6

con el objetivo de que el alumno reflexione sobre la variedad de problemas que contempla la práctica y aprenda los fundamentos de la prueba de programas, el capítulo incluye una breve introducción sobre la técnica de pruebas basada en la partición de clases de equiva-

lencia. • Capítulo 9: Manejo de proyectos con el entorno. Describe cómo implementar programas modulares utilizando proyectos.

• Capítulo 10: Cuarta práctica: programación modular. Tiene como objetivo que el alumno ejercite la descomposición modular de programas como herramienta para resolve r problemas com plejos. Frente al resto de las prácticas, esta última tiene las siguientes peculiaridades: 1. Es diferente cada año. Los enunciados se publicarán en la web

de la asignatura [5]. A modo de ejemplo, el capítulo incluye un enunciado de este tipo de práctica. 2. No se corrige automáticamente, sino que el alumno deberá entregarla al tutor de su centro asociado para su evaluación. • Capítulo 11: Esto es sólo el principio. Este manual trata de cubrir la prestaciones mínimas de Code::Blocksc±para realizar programas. Sin embargo, los entornos de programación modernos suelen incluir muchas más posibilidades. Es interesante que el lector indague por su cuenta y experimente con las opciones disponibles. Este capítulo presenta algunas prestaciones adicionales de Code::BlocksC±y re· sume los menú s donde el lector puede iniciar sus propias investigaciones.

1.3. Cómo utilizar el libro El libro se ha escrito con tres perfiles de lectores en mente: 1. Lector A. Estudiante que nunca ha utilizado un entorno de progra-

mación. Desea aprender progresivamente los fundamentos de C±

1.3 Cómo utilizar cllibro

7

y de Code :: Blocks c Aconsejarnos que estudi e todos los capítulos según su ord en de aparición en el libro. :!: .

2. Lector 8. Estudiante que está familiarizado con otros entornos de programación (Visual Studio, Eclipse, etc). Desea centrar su estudio en C±. Creemos que puede abordar la resolución de las prácticas direc lamentc. Por supuesto, si tiene dudas puntuales sobre Code :: Bl ocksc" puede dirigirse a los capítulos correspondientes. 3. Lector C. Estudiante que desea utilizar este libro como un manual de referencia de Code :: Blocks c ... .

í

Lector A 2Jnstalac:i6n

"" """'"

de pnicticas

3.8 enImlo a

~

_do

.....

11.Esto es

""'.

pm;ipio

~

.-

• •Primeta

-J

.- ...

-J

S."""""'"

""'""" ",lOmo

9.Manejode

tO.Coarta

S.Tercera

.-

."'....

"""'" roo

~ ~

5..--

7._!

do_

lectorC lectorB

I .-

4._

I .-

tO.Cuarta

I H.- I

H .-.¡.

6.Segtn:la

. _""

S.ConceptOS

7. Depuración

do """"",.

""""'"

8.Ten::ent

11.EsIo es

""'.

principio

Figura 1.3: Distintos itinerarios de aprendizaje para los lectores del libro

Capítulo 2 Instalación del entorno de prácticas capítulo describe los requisitos que debe cumplir nuestro ordenador para utilizar Code::Blocks c ±, así como los pasos necesarios para su instalación. STE

E

2.1. Code::Blocks c ± Code::Blocks es un entorno integrado de desarrollo l orientado principalmente a los lenguajes e y C++. Además, soporta la integración de muchos otros lenguajes, como C# ó Python. Code::Blocks puede ejecutarse en diversos sistemas operativos (Microsoft Windows, Unix/linux y Apple Mac) utilizando la librería de objetos gráficos mu1tiplataforma wxWidget 2 . Code::BlocksCtes una versión específica de Code::Blocks para C± desarrollada por los autores de este libro.

2.2. Requisitos de Code::Blocks c± Los requisitos necesarios para ejecutar Code:: Blocksc±son: 1 Este

tipo de entornos suelen denominarse IDEs (lnfegrared Developmenr Environ-

menls en inglés).

2La versión oríginal de wxWidget es una librería C++ multiplataforma de código libre Que puede oblencrse en 1

n

Instalación del entorno de prácticas

10

1. Utilizar como sistema operativo Microsoft Windows. Se ha verificado

el buen funcionamiento de Code::Blocksc.l. con: • Los sistemas operativos Windows XP, Windows Vista y Windows 7 (incluyendo las versiones de finales del año 2009) .

• Las Arquitecturas x32 y x64. 2. 512 Mbytes de memoria RAM.

3. Al menos 200 Mbytes de espacio libre en el disco duro donde se instalará Code: :Blocksc:t . 4. Para completar el proceso de autocorrccción y entrega de las tres primeras prácticas es imprescindible tener el entorno con conexión a Internet.

2.3. Instalación del entorno El programa de instalación del entorno está disponible en la wcb oficial de la asignatura [S]. Dicho programa está comprimido en el archivo cmasmenos . exe.

Guardaremos el archivo en una carpeta temporal de nuestro ordenador, por ejemplo en: C; \ insta 1aci on_cmasmenos A continuación, descomprimimos el archivo haciendo doble dic sobre cmasmenos _exe. Aparecerá una ventana que nos indica que la descompresión va a reali zarse en C: \ instal acion_cmasme no s. Pulsamos Instalar (ver figura 2. 1).

I

I

Finalizada la descompresión, ejecutaremos el archivo 3 instalar.exe. Aparecerá la ventana de la figura 2.2 , donde podremos espeCificar las sil:,TU1entes opciones de instalación: • Carpeta de destino donde deseamos instalar C±. 3Las versiones más recientes de Windows nos pueden solicilar la confirmación de la ejeCución del programa de instalación según la configuración que se utilice del sis lema.

2.3 Instalación del entorno

11

"''',~"",:,,

"

-

• Si La catpttI de dtsIioo "" cxi.te ....

int mainO { for (int k .. l; k< .. lO; k++) { prin tf("Hola"); ) )

Figura 3. 17: Primera versión de holal O HolaHolaHolaHolaHolaHolaHolaHolaHolaHola El proceso devolvio O (OxO) tiempo de ejecucion : 0.067 s Pulsar cualqu i er t e ela para continuar.

Fi¡-,rura 3.18: Resultado producido por el programa de la figura 3. 17 cliente). Como el lector puede imaginarse, "Code: :Btocks C :1. no hace magia":

el entorno carece de la capacidad telepática de adivinar cúal es el propósito que el programador tiene en mente cuando se pone a codificar. Así, tendremos que esforzarnos para localizar manualmente el error y subsanarlo (ver figura 3.19).

,I

'inelude

)

i nt. mainO { for ( int k.. l ; kn ..... -ctn' . .

ConMntor a>n ajo ~

..........

,"',

1r&1o ...... ~_o~ .

~.

CIl\.Shift·1I

-Figura 5_18: Menu- de EdlclOn l

I

~6 l""1-De-shace--rfR-e-ha-ce-r-'~ j ~l""-p-eg-a-r \

~"I .,fi

'1

~

Figura 5.19: Botones directos de edición

En este apartado comentaremos únicamente las operaciones de edi-

ción que se usan con mayor frecuencia en el trabajo habitual del programador.

46

Conceptos básicos del entorno

5.3.2. Acciones de edición de texto Las operaciones de ed ición de texto corresponden a las acciones natí2 vus Que están disponibles en los sistemas Windows. Estas acciones están disponibles sólo si se desencadena una acción de selección de texto en el área de edición. El esquema de funcionamiento básico para la edición consiste en una operación de selección de los elementos con )05 que se quiere operar (ver figura 5.20). A continuación se debe elegir cuál es la operación a realizar: copiar o cortar. Si se Quiere volver a situar los elementos en el área de edición, entonces posicionaremos el cursor en el destino y se realizará la operación de pegar. Si se ha elegido la operación de cortar y no se realiza otra acción se habrá realizado una operación de borrado.

I-

(.,,1

""'"

i

""'"

l .,. ~

l

"

-

-,

""""

1-+1

P"",

I

ElllTllnar

Figura 5.20: Esquema de edición

La edición de texto se realiza de la misma forma que en el resto del entorno Windows (por lo tanto, su fum:ionamiento está suj eto a la configuración que se haya elegido en cada entorno operativo concreto) con las siguientes operaciones: • Selección de texto: si se utiliza corno di spos itivo el ratón, pulsaremos el botón izquierdo para marcar el inicio a selecdonar y arrastraremos de arriba hacia abajo y de iZQUierda a derecha, para soltar el botón al fina l de la selección. También se puede realizar esta ope2Evenlos que se resuelven por parte del sistema operativo directamente sin la intervención de las aplicaCiones.

5.3 Opciones de edición

47

ración con el teclado realizando la siguiente secuencia de acciones: primero llevaremos el cursor hasta el punto de inicio que queremos seleccionar, y en este punto pulsaremos la tecla ~ (Mayúscula) y sin dejar de pulsarla moveremos el cursor por el texto hasta el final de la selección (ver figura 5.21).

, •, ,• •• " 1

,~

3

• • ,j . . . . . . . . . . . . .. . . . . . . . .

l '

,-

••• H

• • •• ~ ...... . .. . . .~ • • • , •••••••••• • •••• • • •• •••

..

,¡ ... . . . .. ... . . . . . . .... ....... . . . . .

.nO'O • .'\4

e·· ........ c··_ .. c .. _ . c··_ ... e·· ...... _ c··_ .. ....

lMlll2OlO ~~

t··_1Io

lJ,4;ll,l2C1Ol:lll ¡_1Oll..n

¡".,1,Il\I10Ul ,,~.

~-

:...--_---

. . . ..

•• "'~

"'-,

;) Oll4t401t: U U 6l i O 6d 15 '- IU U 20 25 U 20 Oto 00 0..(4402': 000'000 62 U 13 n "1st." H 12 " le 11 3.

'e



nol . am:So \ lpr 3000 < 1

mes

con 28 días con 30 días con 31 días > 12

Muchos programas se construyen codificando primero un tratamiento general y retocando luego el código para cubrir casos especiales. Por esta y otras razones es bastante normal que los errores tengan cierta tendencia a aparecer precisamente al operar en las fronteras o valores límite de los datos normales. Como puede observarse, los juegos de prueba que utili za el entorno hacen especial hincapié en las zonas del espacio de ejecución que están en el bord e de las clases de equivalencia (por ejemplo, los años 1.601 y 3.000).

8.4, Entrega telemática de las prácticas Si el resultado de ejecutar 1Practicas ~ Comprobar fa practica 31 es correcto, el entorno se conectará automáticamente al servidor de la UNED y enviará cncriptados los datos del alumno y de las prácticas al equipo docente.

Capítulo 9 Manejo de proyectos con el entorno ECÚN crece el tamaño de los programas, tener todo el código en un só lo fichero deja de ser práctico. Si dividimos nuestro programa en varios ficheros, las ventajas so n múlti ples: facilitamos Que varios programadores puedan trabajar en paralelo sobre distintas partes del programa, es más fácil localizar y corregir los errores que podamos cometer, favorecemos la reutili zación de cada fichero en otros programas ...

S

Code :: Bloc ks c !:, al igual que la mayoria de los en tornos de desarrollo (Visual Studio, Eclipse ...), utiliza el conce pto de proyecto para organi zar un programa mod uJ ar en varios ficheros. Utilizando un pequeño ejemplo, este capítulo describe cómo gestionar y procesar proyectos para obtener código ejec..'Utable.

9.1. Un simulador del juego "Piedra. Papel o Tijera" "Piedra, papel o tijera" es un juego infantil donde dos jugadores cuen tan juntos Jo•• 2 ... 3 ... ¡Piedra, papel o tijera ! y, justo al acabar. muestran al mismo tiempo una de sus manos, de modo que pueda ver se el arma que cada uno ha elegido: Piedra (un puño cerrado), Papel (todos los dedos extendidos, con la palma de la mano mirando hacia abajo) o Tijera (dedos índice y corazón extendidos y separados formando una 'v'), El objetivo del

Manejo de proyectos con el entorno

116

juego es vencer al oponente, seleccionando el arma que gana a la que ha elegido él. La figura 9.1 resume la precedencia entre las armas: • La piedra ap lasta o rompe a la tijera (gana la piedra) • La tijera corta al papel (gana la tije ra) • El papel envuelve a la p iedra (gana el papel)

• Si los jugadores eligen la misma arma, hay empate Vamos a rea ljzar un pequeño programa que simule aleatoriamente 5 partidas del juego, produciendo una salida del estilo de la figura 9.2.

Figura 9.1: Tijera gana a Papel, Papel gana a Piedra. Piedra gana a Tijera

9.2. Solución del ejemplo La figura 9.3 representa el ctiseño de nuestro simulador, que contiene

un módulo principal (Simulador) y tres módu los auxiliares Uugada, Jugador y Arb itro). las flechas indican relaciones de dependencia entre móduJos. Así, X - Y significa que el módulo X usa algún elemento del módulo Y. A niveJ de código, la dependencia se refleja escribiendo en X la sentencia de importadón #¡nelude NY.h H



9.2 Solución del ejemplo

Pa rtida 1: Jugador 1: Tijera Jugador 2: Ti j era Resultado: Empate Par tida 2: Jugador 1: Papel J ugador 2: Papel Res ultado: Empate Partida 3: J ugador 1: Tijera Jugador 2: Papel Resultado: Gana Jugador 1 Partida 4: Jugador 1: Piedra Jugador 2: Piedra Res ultado: Empate Partida 5: Jugador 1: Piedra Jugador 2: Pape l Resultado: Gana Jugador 2

Figura g.L: Resul tado de ejecutar el simulador Piedra PapelTijera

11 7

118

Manejo de proyectos con el entorno

Figura 9.3: Diseño del programa

Todos los módulos están dis tribuidos en ficheros separados. Tal y como se indica en el tema 15 del libro básico de la asignatura [1], por cada módulo auxiliar hay dos ficheros l : 1. Un fi chero de interfaz NombreModulo.h, que comienza con la línea

#pragma once y describe la especificación del módulo. Es decir, todo lo que se necesita saber para poder usar los elementos definidos en el módulo (¿qué hace módulo?). 2. Un fichero de implementación NombreModulo.cpp, que comienza con la línea #include "NombreModulo.h" y describe la realización del módulo (¿cómo lo hace?).

Gracias a esta separación .hf.c pp se consigue la ocultación de la reali zación de los módulos. Es decir, el programa que u sa un elemento de un módulo sólo tiene visible la información de la interfaz, pero no la de la realización. Como se explica en el texto básico de la asignatura, gracias a la ocultación se consigue que los programas sean más fáciles de mantener. ISin embargo. el módulo principal sólo consta de un fichero .cpp (esto no es ninguna novedad: hasta el presente capítulo, todo los programas que se han escrito estaban compuestos por un único módulo principal).

9.2 Solución del ejemplo

lL9

A continuación, se resume el código de los fi cheros que componen el programa: 1. Módulo Jugada (figur as 9.4 y 9.5). Imp lementa con un tipo enumerado

las armas Que puede escoger un jugador (ver línea 3 de la figura 9.4). Incluye la función GenerarJugada, que devuelve un valor aleatorio del tipo enumerado. 2. Módulo Jugador (fi guras 9.6 y 9.7). Simula el comportamiento de un jugador. Puede elegir un arma (mediante el procedimiento Ju gar, que a su vez utiliza a Gen erarJugada), devolver el arma elegida (ConsultarJugada) e im primirla por pantalla (lmprimirJugada). 3. Módulo Arbitro (figuras 9.8 y 9.9). Decide, de entre dos jugadores, {.u al de ellos ha ganado la partida (o si hay empate). 4. Mód ulo Simulador (figura 9. 10). Contiene la función principal (maln), que controla la ejecución de los dos jugadores y el árbitro.

,1

' pragma once

, :¡

ty pedef en um TipoJ ugada { Pied r a, Papel, Ti jera };

s

TipoJ ugada Gene ra rJ ugada() ;

Figura 9.4: Jugada.h 1 ' i ncl ude "Jugada .h" 2 lincl ude 4 s

,

TipoJugada GenerarJugada() { re t ur n T ;poJ ugad a( r an d O~3)

:

)

Figura 9.5:Jugada. cpp

Manejo de proyectos con el entorno

120

1 'pragma once 2 11ncl ude "Jugada.h" •• 4 typedef struct Jugador { S void Jugare); (; Ti poJugada ConsultarJugada(); 7 void ImprimirJugada(); 11 private; 9 TipoJugada jugada;

111

};

Figura 9.6: Jugador.h

, 4 ,,s 2

8 '1 11)

" 12

13 14 ¡;

1(; 17 IK

19 20 21

linclude "Jugador.h" linclude void Jugador; ;JugarO { j ugada. GenerarJugadaO; )

TipoJugada Jugador: :Consultar]ugadaO { return jugada; }

void Jugador; ;ImprimirJugada() { swi tch ( jugada) { case Piedra; pri ntfe" \ tPi edra\n") ; break; ca se Papel; printfe"\tPapel \ n"); break; default; printf("\ tTi jera\ n");

2~

!J

} }

~----------------------------~ Figura 9.7: Jugador.cpp

2

'pragma once linclude ")ugador.h "

4 typedef struct Arbitro { S void OecidirResultadoPartida(Jugador JI, Jugador j2); (;

};

Figura 9.8: Arbitro.h

9.2 Solución del ejemplo 1

2

5 6 7 11 9 10 11

12 13

"

#include #include "ArbitrO.h" #include "Jugada.h" void Arbitro::DecidirResultadoPartida(Jugador jI, Jugador j2) { printfC'Resultado: "): i f (jl.ConsultarJugadaO ~ = j2.ConsultarJugadaO) { printf("Empate\n\n"); } else i f (jl.ConsultarJugadaO ~= Piedra) { if (j2 . ConsultarJugadaO ~_ Tijera) { pri ntf("Gana Jugador 1\n\n"): }else{ printf("Gana Jugador 2\n\n");

15 16 17 18

}

19 20 }

22 13 24 25

28

}

e lse i f (jl.ConsultarJugadaO z= Papel) { i f (j2.ConsultarJugadaO =~ Piedra) { printf{"Gana Jugador l\n\n"); }else{ pri ntf("Gana Jugador 2\n\n"): }

21

" "

121

else { / * jl.ConsultarJugadaO ...... Tijera */ if (j2.Cons ultarJugadaO .... Papel) { printf("Gana Jugador 1\n\n"); }el se{ printf{"Gana Jugador 2\n\ n"); }

}

}

Figura 9.9: Arbitro.cpp 2

, J

6 7 11 9 10 11 12

13 14

15

Hi 17

18 19 20 21

#include #include "Jugador.h" #include "Arbitro .h " int main O { Jugador jI; Jugador j2: Arbitro a; for (int partida.. D; partida ...

4

lo

Mari

MatriculaA.biem

Mis Ejemplos

~~·~·~,~""" ~·~'.-m ~~~ ~~·..'~~~~i:. ¡¡¡¡-~-¡~~f~~~·~~--ii¡¡¡¡........~ ~

Ju9ada.cpp

"'tip« fkheros eIe'_l- Code:III-);

lit

·' · ,,' ·' N

lnduif" punto de intefTUpOOn

Borrar marca

I

LI

Figura 11.10: Borrado de una marca

marcados puntos de ficheros abiertos. Al cerrar o reabrir un fichero las marcas existentes se perderán.

11.5. Configuración avanzada del entorno Las opciones de configuración de Code::Blocksc:tse encuentran en el menú de Configuración (ver figura 11.11). Estas opciones se organizan del siguiente modo:

I

I

l. Configuración general del entorno:

11.5 Configuración avanzada del entorno a)

Confib'llración general (ver figura 11.12).

b)

Opciones de vista.

147

e) Aspectos de la edición. d)

Sistema de paneles.

e)

Gestión de mensajes de confirmación.

n Configuración de red. g)

Seleccionar programas para extensión. Configuración MIME.

h)

Configuración del complemento de búsqueda.

il Configuración del complemento de la lista to-do.

JI Configuración del complemento de autoguardado. 2. Configuración de la edición de texto: a)

Configuraciones básicas de la edición (ver figura 11.13).

b)

Opciones de esquematización (contracción/ expansión) de bloques.

e) Márgenes y visualización del cursor activo. d)

Resaltado de sintaxis según el lenguaje de programación.

e)

Configuración del complemento de Auto-completar.

n Mensaje por defecto. g)

Configuración del complemento de proponer código y manejar símbolos.

h)

Configuración del complemento sobre estilo de programación.

3. Configuración de la generación y depuración de programas: ejecutables y de la depuración a)

Configuraciones globales. Aplicable a la hora de realizar compilaciones de ficheros, fuera de proyectos (ver figura 11.14).

b) Generaciones batch.

e) Configuración de inicio del depurador 4. Configuración de las variables globales del entorno.

Esto es 'sólo el principio

148

COI'I

raóon

A~

Enlorno G«o«__ Editor_ Compilador y ~r.oon.... Vln.bIH ~

I

Figura 11 .11: Menú Configuración

-_ -

I

......

-~

I

Conflgurdclones yenerales

17 _ _ _

" ' _ 1_ _ 01_1

[Z C - y _ _ " ' - " It. ~

cn...- __

_

_

• __

1(. _ _ _

"'OI.-H_ ___ ........... _

~ '""" __ ·""'.... _...... __ _N_

---

• _ _ ... ....., . . . . . . . . . . . . . . 100 _ _ -

1-d.-J ...- !: ,

,

.'

Figura 11.1 2: Configuraciones general es

11.5 Configuración avanzada del entorno

-

_... ...

()oo