Академический Документы
Профессиональный Документы
Культура Документы
C++
NDICE 1. 2. 3. 4. 5. 6. 7. Compilador: g++ Directivas de compilacin Make Doxygen Utilidad de compresin tar UML Enunciado prctica 0
C++
COMPILADOR: G++
GCC es una coleccin de compiladores para varios lenguajes: C, C++, Objective C, Fortran y Java. Incluye las libreras para stos. Para C++ usaremos el compilador g++. Sintaxis $ g++ [opciones] nom_fichero... Opciones: con man gcc podemos ver todas.
-help Indica a gcc que muestre su salida de ayuda -o <fichero> El archivo ejecutable generado por gcc es por defecto a.out. Mediante este modificador, le especificamos el nombre del ejecutable. -Wall No omite la deteccin de ningn warning. Por defecto, gcc omite una coleccin de warnings ``poco importantes''. -c Preprocesa, compila y ensambla, pero no enlaza. -g Incluye en el binario informacin necesaria para utilizar un depurador (gdb o ddd) posteriormente.
3
C++
NDICE 1. 2. 3. 4. 5. 6. 7. Compilador: g++ Directivas de compilacin Make Doxygen Utilidad de compresin tar UML Enunciado prctica 0
C++
DIRECTIVAS DE COMPILACIN
C++ ofrece la posibilidad de compilacin condicional mediante la inclusin de ciertas directivas que controlan el comportamiento del preprocesador, de forma que este puede ignorar o compilar determinadas lneas del cdigo en funcin de ciertas condiciones que son evaluadas durante el preproceso.
#IFDEF, #IFNDEF
C++
DIRECTIVAS DE COMPILACIN
#ifdefendif, #ifndef#endif
Son condicionales especializadas en comprobar si un macroidentificador est definido (con #define) o no.
Un macro-identificador X se define con #define X y se anula su definicin con #undef X, con lo que podemos controlar a voluntad las zonas de cdigo en que X se considera definido e indefinido. Ejercicio:
Aade a rectangulo.cpp un segundo #include rectangulo.h. Intenta compilar el cdigo de nuevo. Qu ocurre? Modifica los ficheros rectangulo.h, rectangulo.cpp y main.cpp con las directivas,#ifdef, #ifndef, #endif que consideres necesarias. Compila y comprueba que todo funciona correctamente.
6
#IFDEF, #IFNDEF
C++
DIRECTIVAS DE COMPILACIN
La siguiente situacin es muy habitual en proyectos en C++:
El fichero B.h incluye a A.h El fichero C.h incluye a A.h El fichero D.cpp incluye a B.h y a C.h
Para evitar problemas al compilar por la doble inclusin de ficheros de declaraciones (.h) se inserta las siguientes directivas en cada .h:
#ifndef __A_H #define __A_H // declaraciones en el .h #endif <fin del fichero>
C++
NDICE 1. 2. 3. 4. 5. 6. 7. Compilador: g++ Directivas de compilacin Make Doxygen Utilidad de compresin tar UML Enunciado prctica 0
C++
MAKE
make: Utilidad que automatiza el proceso de compilacin Busca un fichero de configuracin makefile o Makefile (en ese orden) Ejemplos:
make make prog1 #crea el objetivo prog1" make -f mimakefile (fich. config. mimakefile) make -f mimakefile prog1"prog1"
C++
OBJ = main.o rectangulo.o OPC = -g -Wall Objetivo ficticio COMP = g++ objetivo rden de creacin del .PHONY = clean ejecutable main: $(OBJ) $(COMP) $(OPC) $(OBJ) -o main El propio fichero y los main.o: main.cpp rectangulo.h que se incluyan en l $(COMP) $(OPC) -c main.cpp rectangulo.o: rectangulo.cpp rectangulo.h rden de $(COMP) $(OPC) -c rectangulo.cpp creacin del .o clean: rm main Tabuladores rm -r *.o
10
C++
NDICE 1. 2. 3. 4. 5. 6. 7. Compilador: g++ Directivas de compilacin Make Doxygen Utilidad de compresin tar UML Enunciado prctica 0
11
C++
DOXYGEN
Herramienta para la generacin de documentacin (HTML entre otros formatos) a partir de comentarios en el cdigo fuente. Descargad y consultad tutorial de Doxygen en la seccin de materiales del C.V.
12
C++
NDICE 1. 2. 3. 4. 5. 6. 7. Compilador: g++ Directivas de compilacin Make Doxygen Utilidad de compresin tar UML Enunciado prctica 0
13
C++
TAR y MCOPY
Usar comando tar (comprimir) y mcopy para guardar los archivos en un disco:
$ tar cvzf prac1.tgz * $ mcopy prac1.tgz a:/ Si quiero copiar texto en lugar de binario:
14
C++
NDICE 1. 2. 3. 4. 5. 6. 7. Compilador: g++ Directivas de compilacin Make Doxygen Utilidad de compresin tar UML Enunciado prctica 0
15
Breve introduccin a
UML
UML es un lenguaje grfico que se utiliza para el anlisis y diseo de aplicaciones. Permite comunicar de forma precisa las ideas de diseo al equipo de desarrollo En POO usaremos nicamente el diagrama de clases Este diagrama especifica qu clases componen el sistema, sus atributos, su interfaz y sus relaciones con otras clases. En prcticas usaremos el diagrama de clases detallado 16
UML
Diagrama de clases
17
UML
El valor por defecto de un atributo es opcional La lista de argumentos de un mtodo se especifica del mismo modo que los atributos, separando los argumentos por comas. Se puede omitir el nombre de los argumentos e indicar nicamente su tipo.
18
UML
Mtodos constantes:
19
UML
Diagrama de clases
La especificacin de relaciones entre objetos y entre clases, as como otras caractersticas de los diagramas de clases se tratar en sesiones posteriores.
20
C++
NDICE 1. 2. 3. 4. 5. 6. 7. Compilador: g++ Directivas de compilacin Make Doxygen Utilidad de compresin tar UML Enunciado prctica 0
21
PRCTICA 0
ENUNCIADO Los objetivos de esta pequea prctica son: Introducirnos en la P.O.O. Implementar una clase sencilla diseada en UML Familiarizarnos con la estructura de directorios del cdigo fuente y el proceso de compilacin. Realizar una entrega de prueba en el servidor de prcticas del DLSI
22
PRCTICA 0
ENUNCIADO
23
PRCTICA 0
ENUNCIADO
Coordenada.h: declaracin de mtodos y variables. El fichero debe ubicarse en el directorio include Coordenada.cc: implementacin de mtodos. Este fichero debe ubicarse en el directorio lib
Cread un fichero main.cc con una funcin main() donde se pidan al usuario un par de nmeros con los que debis crear una coordenada que debis imprimir por pantalla. Escribid el cdigo necesario para que cada mtodo pblico de la clase sea utilizado al menos una vez. Este fichero debe ubicarse en el directorio src. El mtodo Coordenada::imprimir() debe imprimir los valores x e y de la coordenada separados por una coma.
24
PRCTICA 0
EVALUACIN DE LA PRCTICA
Los requisitos imprescindibles para considerar correcta la prctica son:
La prctica debe funcionar sin errores. En particular, no se debe producir ningn error del tipo segmentation fault, null pointer assignment, etc. No se deben utilizar variables globales La entrada de datos debe estar filtrada.
La prctica debe compilar correctamente con la orden make desde lnea de comandos.
25
PRCTICA 0
FICHERO MAKEFILE
# Este fichero no se debe modificar. Lo puedes encontrar en la seccin de materiales del CV. # La practica debe compilar con este fichero situado en el directorio raz del proyecto # (del cual cuelgan lib/ src/ e include/).
# COMP=g++ OPC=-g -Wall .PHONY=clean main: ./src/main.cc Coordenada.o ./include/Coordenada.h $(COMP) $(OPC) ./src/main.cc Coordenada.o -I ./include -o main Coordenada.o: ./lib/Coordenada.cc ./include/Coordenada.h $(COMP) $(OPC) -c ./lib/Coordenada.cc -I ./include clean: rm main rm -r *.o 26
PRCTICA 0
MODIFICACIN (opcional)
Cread un nuevo main() que genere dos nmeros aleatorios, uno para la coordenada x y otro para la coordenada y, ambos entre 0 y 100, los utilice para crear una coordenada y la muestre por pantalla.
27
PRCTICA 0
Permiten generar nmeros (pseudo)aleatorios. Los generadores de nmeros aleatorios (Random Number Generator, RNG) se inicializan con un nmero llamado semilla. Cada vez que se inicializa el RNG con la misma semilla, produce la misma secuencia de nmeros aleatorios. srand() inicializa el RNG. rand() produce un entero aleatorio entre 0 y RAND_MAX (definido en stdlib.h).
28
PRCTICA 0
29