Está en la página 1de 36

UNIVERSIDAD NACIONAL JOS MARA ARGUEDAS

Ley de Creacin N 28372

Resolucin de Funcionamiento N 280-2006-CONAFU

CARRERA PROFESIONAL DE INGENIERIA DE SISTEMAS

IMPLEMENTACIN DE ALGORITMOS
EN DEV C++ USANDO MDULOS
- GUAS DE PRCTICA MATERIAL PREPARADO PARA EL CURSO:
ALGORITMOS Y ESTRUCTURA DE DATOS

ELABORADO POR:
ING. EDWIN OCTAVIO RAMOS VELSQUEZ

ANDAHUAYLAS PER

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

PRESENTACIN

El presente trabajo es un compilado de guas de laboratorio preparado para ser utilizado por los
alumnos de la Carrera profesional de Ingeniera de Sistemas o de Ingeniera Informtica en las
sesiones de un curso de Introduccin a la programacin. Nosotros, habilitamos este material para
los alumnos, de forma tal les sirva de gua en la resolucin de ejercicios de programacin.

La programacin modular y/o estructurada, concibe que un programa est compuesto por un
conjunto de mdulos o subprogramas;
especfica dentro de un software.

y, donde cada mdulo est a cargo de una funcin

Siendo que la forma ms cmoda de desarrollar software

complejo es a travs del uso de mdulos o procedimientos, en el presente material, se aborda la


implementacin de software desde esa ptica. El alumno notar que cada programa, ha sido
subdividido en por lo menos dos mdulos. Esperamos que el alumno se acostumbre al uso de
procedimientos y/o funciones en sus programas, ya que su uso le ha de facilitar la implementacin
de programas complejos.

Esperamos que el presente conjunto de guas de laboratorio sean de utilidad para absolver
muchas de las dudas que nuestros estudiantes nos han planteado en clase.

El profesor

Pgina 2 de 36

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

GUA DE LABORATORIO 01:


IMPLEMENTACIN DE ALGORITMOS EN DEV C++ 4.9.9.2
(USANDO PROCEDIMIENTOS)
OBJETIVO
El alumno podr crear una aplicacin bsica utilizando PROCEDIMIENTOS y/o
FUNCIONES en Dev C++ 4.9.9.2, tomando como referencia los diagrama de flujo.

DATOS PREVIOS
Para dar inicio a esta prctica, usted necesita contar con los siguientes elementos:
Paquete de software: devcpp-4.9.9.2_setup.exe (instalado)

METODOLOGIA
Se presentar al alumno ejemplos de algoritmos en la forma de diagramas de flujo, y se
les solicitar su implementacin en Dev C++.
Se absolvern preguntas en la sesin de esta prctica de laboratorio.
NOTA:
Previamente, usted debera de crear un directorio de trabajo para el almacenamiento del
cdigo fuente de sus programas (Podra ser por ejemplo D:\Applicaciones C).

DESARROLLO DE LA PRCTICA DE LABORATORIO


1. Implementar un programa que halle el promedio de dos nmeros
Algoritmo_Promedio( )
INICIO

void Algoritmo_Promedio()
{
//1. Declaracin de variables
int A,
float
intB;A,
B; C;
float C;
//2. Algoritmo

Leer A

printf("Leer el numero A: ");


scanf(%d,
&A); &A);
scanf(%d,

Leer B

printf("Leer el numero B: ");


scanf(%d,
&B); &B);
scanf(%d,

C = (A + B) / 2

C = (float(A) +float(B))/2;

Print:
C
FIN

Programa_Principal( )
INICIO

printf(El Resultado es %f, C);


}
//--------------------------------------int main(int argc, char *argv[])
{
Algoritmo_Promedio();
Algoritmo_Promedio();
Algoritmo_02();
//3. Congelar pantalla
printf("\n ");
system("PAUSE");
return EXIT_SUCCESS;

Algoritmo_Promedio( )

}
FIN

Pgina 3 de 36

Programa
principal

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

2. Implementar un programa que dados dos nmeros A y B, ambos ledos desde el teclado,
aplique el algoritmo de Euclides para hallar el Mximo Comn Divisor, y que muestre su
resultado en pantalla.
HallarMCD(A,B: Integer): Integer
Inicio

using namespace std;

IF
A>B

SI

#include <cstdlib>
#include <iostream>

NO
X=B
Y=A

X=A
Y=B

int HallarMCD(int A, int B)


{ //1. Declaracin de Variables
int x, y, R, MCD;

int x, y, R, MCD;

if (A > B)
if {
(Ax >= B)
A;
{ =
x B;
= A;
y
y
= B;
}
}
else { x = B;
else y
{ =
x A;
= B;
y
= A;
}
}

R = X mod Y

MCD = Y

WHILE
( R<>0)

R = x % y;
MCD = y;
while (R!= 0)
while
{ x(R
= !=
y; 0)
{yx==R;
y;
y
=
R = xR;
% y;
R ==xy;
% y;
MCD
MCD
=
y;
}
}

Hacer
X=Y
Y=R

R = X mod
Y
MCD = Y

return MCD;
}

return (MCD)
FIN

Programa Principal()

//------- Programa Principal ---------int main(int argc, char *argv[])


{ // 1. Declaracin de variables
int A, B, MCD;

int A, B, MCD;

INICIO

// 2. Algoritmo
printf("\n Leer A:");
scanf("%d",
&A);&A)
scanf(%d,

Leer: A

Leer:

printf("\n Leer B:");


scanf("%d", &B);

scanf(%d, &B)

MCD
MCD =
= HallarMCD(A,
HallarMCD(A, B);
B);

C = HallarMCD (A, B)

printf("\nElElResultado
Resultadoes:
es:%d",
%d",MCD);
MCD);
printf("\n
system("PAUSE");
return EXIT_SUCCESS;

Print: MCD

}
FIN

Pgina 4 de 36

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

3. Implementar un programa que dados dos nmeros A y B, ambos ledos desde el teclado,
aplique el algoritmo de Euclides para hallar el Mnimo Comn Mltiplo (MCM), y que muestre
su resultado en pantalla.
HallarMCM(A, B: Integer): Integer
Inicio

SI

#include <cstdlib>
#include <iostream>
using namespace std;

IF
A>B

NO
X=B
Y=A

X=A
Y=B

int HallarMCM(int A, int B)


{ //1. Declaracin de Variables
int x, y, R, MCD;

int x, y, R, MCD;

if (A > B)
if {
(Ax >= B)
A;
{ =
x B;
= A;
y
y
= B;
}
}
else { x = B;
else y
{ =
x A;
= B;
y
= A;
}
}

R = X mod Y
MCD = Y

WHILE
( R<>0)

R = x % y;
MCD = y;
while (R!= 0)
while
{ x =(R!=
y; 0)
{
x
=
y = R;y;
R y
= =
x R;
% y;
R
=
MCD = x
y;% y;
MCD
=
y;
}
}

Hacer
X=Y
Y=R

R = X mod
Y
MCD = Y

MCD = MCD * x * y;
MCD = MCD * X * Y

return MCD;
}

return (MCD)

//------- Programa Principal ---------int main(int argc, char *argv[])


{ // 1. Declaracin de variables
int
MCM;
intA,A,B,B,
MCM;

FIN

Programa Principal()

// 2. Algoritmo
printf("\n Leer A:");
scanf("%d",
&A);
scanf(%d,
&A)

INICIO

Leer: A

Leer:

printf("\n Leer B:");


scanf("%d",
&B);
scanf(%d,
&B)

MCM = HallarMCM(A, B);


MCD = HallarMCD(A, B);
printf("\n El
El Resultado
Resultado es:
es: %d",
%d", MCM);
MCD);
printf("\n

C = HallarMCM (A, B)

Print: MCD

FIN

Pgina 5 de 36

system("PAUSE");
return EXIT_SUCCESS;
}

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

4. Implemente que lea desde el teclado un nmero N, y luego imprima en pantalla la siguiente
imagen:
1
1
1
1 2
1 2
1 2
1 2 3
1
1 2 3
1 2 3 4
1 2
1 2 3
1
Si N = 2
Si N = 3
1 2
Si N = 4
1
Solucin:
Imprimir_Fila (Fila:Integer)

#include <cstdlib>
#include <iostream>

INICIO

using namespace std;


Print: Eoln

For k = 1 --> Fila

void Imprimir_Fila(int N)
{ //1. Declarar variables
int
intk;
k;string
strings;
s;
//2. Algoritmo
printf("\n");

Print: k + ' '

for
for(k
(k==1;
1;kk<=
<=N;
N;k++)
k++)
printf("%d
printf("%d ",k);
",k);

FIN

Imprimir_Triangulo(N:Integer)
INICIO
For k = 1 --> N

}
//------------------------------------void Imprimir_Triangulo(int N)
{ //1. Declarar variables
int
int k;
k;
//2. Algoritmo
for (k
(k == 1;
1; kk <=
<= N;
N; k++)
k++)
for
Imprimir_Fila(k);
Imprimir_Fila(k);

Imprimir_Linea(k)

for (k = N-1; k >= 1; k--)


for (k = N-1; k >= 1; k--)
Imprimir_Fila(k);
Imprimir_Fila(k);

For k = N -1 --> 1
Bucle Decreciente

}
Imprimir_Linea(k)

FIN

// --- Programa principal --int main(int argc, char *argv[])


{
//1. Declarar Variables
int N;
int N;

Programa Principal ( )

// 2. Algoritmo
printf("\n Leer N: ");

INICIO

scanf(%d,
scanf("%d", &N);
&N);
Leer: N

Imprimir_Triangulo(N);
Imprimir_Triangulo(N);
Imprimir_Triangulo(N)

//3. Congelar la pantalla


printf("\n");
system("PAUSE");
return EXIT_SUCCESS;

FIN

Pgina 6 de 36

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

5. Implemente un programa que lea desde el teclado un nmero N, y obtenga el nmero romano
equivalente y lo imprima en pantalla.
A continuacin solo mostramos los diagramas de flujo. Sugerimos al estudiante implementar
el respectivo cdigo fuente en C++.

Programa Principal( )

IntToRomano(N:Integer ): String
Inicio

Inicio

N = LeerDatos( )

R = IntToRomanoDecada(N)

R = IntToRomano( N )

return R

Imprimir(R)

FIN

FIN

IntToRomanoDecada(N:Integer ): String
Inicio
Z = Integer( N/10 )

Parte entera de
la divisin N/10

CASE
(Z)

Z=0

Z=1

Z=2

Z=3

Z=4

Z=9

R = IntToRomanoUnidad(N - 0)
R = " X " + IntToRomanoUnidad(N -10)
R = " XX " + IntToRomanoUnidad(N - 20)
R = " XXX " + IntToRomanoUnidad(N - 30)
R = " XL " + IntToRomanoUnidad(N - 40)
R = " XC " + IntToRomanoUnidad(N - 90)

return R
FIN

Pgina 7 de 36

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

IntToRomanoUnidad(N:Integer ): String
Inicio

CASE
(N)

N=0

R=" "

N=1

R="I"

N=2

N=3

R = " II "

R = " III "

N=4

R = " IV "

N=9

R="I"

return R
FIN

TAREAS:
Disee Usted 5 programas con sus respectivos diagramas de flujo, y a continuacin realice su
implementacin en C++.

Pgina 8 de 36

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

GUA DE LABORATORIO 02:


IMPLEMENTACIN DE ALGORITMOS RECURSIVOS DEV C++ 4.9.9.2
(USANDO FUNCIONES)
OBJETIVO
El alumno podr crear una aplicacin donde se utilice la recursividad, tomando como
referencia los diagrama de flujo.

DATOS PREVIOS
Para dar inicio a esta prctica, usted necesita contar con los siguientes elementos:
Paquete de software: devcpp-4.9.9.2_setup.exe (instalado)

METODOLOGIA
Se presentar al alumno ejemplos de algoritmos en la forma de diagramas de flujo, y se
les solicitar su implementacin en Dev C++.
Se absolvern preguntas en la sesin de esta prctica de laboratorio.
NOTA:
Previamente, usted debera de crear un directorio de trabajo para el almacenamiento del
cdigo fuente de sus programas (Podra ser por ejemplo D:\Applicaciones C).

DESARROLLO DE LA PRCTICA DE LABORATORIO


1. Implementar un programa que calcule el valor factorial de un nmero N, el cual es ledo desde
el teclado, y que, imprima este valor en la pantalla.
Factorial (N:Integer ): Integer
INICIO

SI

IF
N=0

F=1

NO

F = N * Factorial(N - 1)

return F

FIN

int Factorial(int N)
{ //1. Declaracin de variables
int
intF;F;
//2. Algoritmo
if (N == 0)
if (NF ==
0)
= 1;
F
=
1;
else
else F = N * Factorial(N-1);
F = N * Factorial( N );
return F;

Programa
principal

}
//-----------------------------------int main(int argc, char *argv[])
{ // 1. Declaracin de variables
int N, F;

int N, F;

Programa_Principal( )
INICIO

Leer:
N
F = Factorial(N )

Print:
F

FIN

Pgina 9 de 36

// 2. Algoritmo
printf(\nLeer N:);

scanf(%d,
&N);
scanf(%d, &N);
FF == Factorial(N);
Factorial(N);
printf(El Resultado es %f, F);
//3. Congelar pantalla
printf("\n ");
system("PAUSE");
return EXIT_SUCCESS;
}

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

2. Implementar un programa que lea un valor N desde el teclado, y luego halle los N primeros
nmeros Fibonacci.
Solucin:
Fibonacci (N:Integer ): Integer
INICIO

SI

IF
(N= 0)
(N=1)

#include <cstdlib>
#include <iostream>
using namespace std;

NO

int Fibonacci(int N)
{ //1. Declaracin de variables

int F;
F;
int

F=N

//2. Algoritmo
if
if (N==0
(N==0 ||
|| N==1)
N==1)
N;
F F= =N;
else
else
Fibonacci(N-1)+Fibonacci(N-2);
Fibonacci(N-2);
F F= =Fibonacci(N-1)+

F = Fibonacci(N-1) + Fibonacci(N-2)

return F

FIN

return F;
}
Imprimir_Nros(N: Integer )
INICIO

for K =1 ---> N

//---------------------------void Imprimir_Nros(int N)
{ //1. Declaracion de variables
int
f; f;
intK,K,

F = Fibonacci(k )

for
for (K
(K == 1;
1; K<=N;
K<=N; K++)
K++)
{ {
f f
= =
Fibonacci(K);
Fibonacci(K);
printf(%d,
,,
f);
printf(%d,
f);
} }

Print:
F

}
FIN

Programa_Principal( )

//----- Programa principal ----int main(int argc, char *argv[])


{
//1. Declaracin de variables
int N;
int
N;

INICIO

// 2. Algoritmo
printf("\n Leer N:");
scanf("%d",
&N);
scanf(%d,
&N);

Leer:
N

Imprimir_Nros(N);
Imprimir_Nros(N);
Imprimir_Nros (N )

//3. Congelar pantalla


printf("\n ");
system("PAUSE");
return EXIT_SUCCESS;

FIN

}
3. Compile y ejecute la aplicacin
TAREAS:
Implemente 3 programas en donde se utilice recursividad.

Pgina 10 de 36

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

GUA DE LABORATORIO 03:


IMPLEMENTACIN DE LIBRERIAS DE PROCEDIMIENTOS/FUNCIONES
EN DEV C++ 4.9.9.2

OBJETIVO
El alumno podr crear una aplicacin donde se utilicen libreras de procedimientos en
C++.

DATOS PREVIOS
Para dar inicio a esta prctica, usted necesita contar con los siguientes elementos:
Paquete de software: devcpp-4.9.9.2_setup.exe (instalado)

METODOLOGIA
Se presentar al alumno ejemplos de algoritmos en la forma de diagramas de flujo, y se
les solicitar su implementacin en Dev C++.
Se absolvern preguntas en la sesin de esta prctica de laboratorio.
NOTA:
Previamente, usted debera de crear un directorio de trabajo para el almacenamiento del
cdigo fuente de sus programas (Podra ser por ejemplo D:\Applicaciones C).

DESARROLLO DE LA PRCTICA DE LABORATORIO


SECCION 01: CREAR EL PROYECTO PREDETERMINADO
1. Crear un nuevo proyecto Dev C++.
a) Al crear el proyecto Dev C++, escoger la plantilla Console Application

Seleccionar la plantilla
Console Application

b) Crear el directorio ProyLibreria

Pgina 11 de 36

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

1. Usar el cono Crear


nueva carpeta, para crear el
directorio ProyLibreria
2. directorio
ProyLibreria creado para
el nuevo proyecto

A continuacin seleccionar el directorio recin creado para all grabar todos los archivos
de este proyecto

3. Seleccionar el directorio
recin creado ProyLibreria

4. Presionar Guardar
para grabar el proyecto

c) Grabar todo.

Pgina 12 de 36

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

1. Presionar el botn
Guardar todo

Todos los archivos que se han de grabar, debern ser grabados en el directorio ProyLibreria,
el cual usted creo en el paso anterior.
SECCION 02: AGREGAR UN ARCHIVO DE CABECERA (Librera *.h)
2. Seleccionar el cono del proyecto ProyLibreria, y en el men contextual que se mostrare,
seleccionar la opcin Nuevo Cdigo Fuente

1. Seleccionar la opcin
Nuevo Cdigo Fuente

Luego de esta accin se habr creado un archivo denominado Sin Nombre1.

3. Cambiar el nombre del archivo SinNombre1, y asignarle el nuevo nombre MyLibreria.h.


Para hacer esto, seleccionar el cono Sin Nombre1, y en el men contextual seleccionar la
opcin Renombrar Archivo, y luego escribir el texto MyLibreria.h

Pgina 13 de 36

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

2. Escribir el nuevo
nombre MiLibreria.h

1. Seleccionar la opcin
Renombrar Archivo
3. Presionar el
botn OK

El aspecto de la interfaz ser similar a la que se muestra:

4. Modificar el contenido del archivo MyLibreria.h, de forma que debera contener lo siguiente:
Archivo MyLibreria.h
#ifndef _MYLIBRERIA_H
#define _MYLIBRERIA_H
// Seccin de cdigo fuente

#endif

5. Presionar el botn Guardar todo (en el men de la interfaz).

Pgina 14 de 36

Seccin
de
cdigo
fuente

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

SECCION 03: IMPLEMENTAR EL ALGORITMO EN LOS ARCHIVOS DEL PROYECTO


6. Implementar un programa que calcule el factorial de un nmero N, el cual es ledo desde el
teclado, y que lo imprima en la pantalla (Utilizando libreras).
Factorial (N:Integer ): Integer

Programa_Principal( )

INICIO

SI

F=1

INICIO

NO

Leer:
N

F = N * Factorial(N - 1)

F = Factorial(N )

IF
N=0

Print:
F
return F

FIN
FIN

Nota: Aplicaremos la siguiente lgica, el programa principal ser escrito


en el procedimiento principal (void main()), mientras que los
procedimientos y/o funciones sern escritos dentro de los archivos de
cabecera (archivos con extensin *.H)
Referencia al archivo Deber agregar un archivo de cabecera (archivo *.h) al proyecto,
donde se encuentran
y modificar el archivo tal cual se muestra a continuacin:
los procedimientos y/o
funciones a utilizar
Archivo: main.cpp
Archivo: MyLibreria.H
#include <cstdlib>
#include <iostream>

#includeMyLibreria.H
MyLibreria.H
#include
using namespace std;

int main(int argc, char *argv[])


{ // 1. Declaracin de variables
int N, F;
// 2. Algoritmo
printf(\nLeer N:);

#ifndef_MYLIBRERIA_H
_MYLIBRERIA_H
#ifndef
#define_MYLIBRERIA_H
_MYLIBRERIA_H
#define
/* ------------------------------NOTA: El nombre del archivo
debe coincidir con el encabezado
anterior
------------------------------*/
using namespace std;
int Factorial(int N)
{ //1. Declaracin de variables
int F;

scanf(%d, &N);

//2. Algoritmo

F = Factorial(N);
Llama a una funcin
//3. Congelar pantalla
definida en una librera
printf("\n ");
(en MyLibreria.h)
system("PAUSE");
return EXIT_SUCCESS;
}
}

if (N == 0)
F = 1;
else
F = N * Factorial( N );
return F;

#endif

Pgina 15 de 36

El texto MYLIBRERIA
debe estar sincronizado
con el nombre del archivo.
(Si el nombre del archivo
cambia, este encabezado
tambin debe cambiar)

Esto debe estar en la


ltima lnea de
cdigo del archivo
*.h

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

Nota: El encabezado:
#include MyLibreria.h
Se escribe as por cuanto el archivo Mylibreria.h se encuentra en el mismo directorio del
main.cpp. si acaso el archivo Mylibreria.h estuviera en el directorio include del
paquete Dev C++, entonces debera escribirse as:
#include <MyLibreria.h>

7. Implementar un programa que lea desde el teclado un nmero N, y que luego imprima en
pantalla: Es nmero PRIMO o No es nmero PRIMO segn corresponda.

ProgramaPrincipal( )

Es_Primo(N:Integer):Boolean

INICIO

INICIO

Leer:
N

E = true
For k = 2 -->N-1

H = EsPrimo( N )

SI
SI

IF
H = true ?

Print
"Es Primo"

NO

IF
(N % K) = 0

NO

E = false
Print:
"NO es primo"

return E
FIN

FIN

Nota: No olvide, todos los procedimientos y/o funciones deben ser escritos en un archivo de
cabecera (archivo *.h)

TAREAS
Escriba 05 programas donde se utilicen archivos de cabecera (*.h) creados por el mismo
usuario.

Pgina 16 de 36

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

GUA DE LABORATORIO 04:


IMPLEMENTACIN DE LIBRERIAS DE CLASES
EN DEV C++ 4.9.9.2

OBJETIVO

El alumno podr crear libreras de clases a partir de diagramas de clase

El alumno podr utilizar las libreras de clase de manera adecuada.

DATOS PREVIOS
Para dar inicio a esta prctica, usted necesita contar con los siguientes elementos:
Paquete de software: devcpp-4.9.9.2_setup.exe (instalado)

METODOLOGIA

Se propondr al alumno una estructura de clases para su implementacin en java


(diagrama de clases mostrado al final de esta gua de laboratorio).

Se plantearn una serie de pasos para implementar la estructura de clases


(diagrama de flujo presentado al final de esta gua de laboratorio).

Se presentara un nuevo diagrama de clases y se solicitar al alumno que lo


implemente.

Se absolvern preguntas en la sesin de esta prctica de laboratorio.


NOTA:
Previamente, usted debera de crear un directorio de trabajo para el almacenamiento del
cdigo fuente de sus programas (Podra ser por ejemplo D:\Applicaciones C).

DESARROLLO DE LA PRCTICA DE LABORATORIO


SECCION 01: CREAR EL PROYECTO PryClases
1. Crear un nuevo proyecto Dev C++ utilizando la plantilla Console application.
a) Al crear el proyecto Dev C++, escoger la plantilla Console Application

Seleccionar la plantilla
Console Application

Pgina 17 de 36

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

b) Crear el directorio PryClases

1. Usar el cono Crear


nueva carpeta, para crear
el directorio PryClases
2. directorio PryClases
creado para el nuevo
proyecto

A continuacin seleccionar el directorio recin creado para all grabar todos los archivos
de este proyecto

3. Seleccionar el directorio
recin creado PryClases

4. Presionar Guardar
para grabar el proyecto

c) Grabar todo.

Pgina 18 de 36

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

1. Presionar el botn
Guardar todo

Todos los archivos que se han de grabar, debern ser grabados en el directorio PryClases,
el cual usted creo en el paso anterior.
SECCION 02: CREAR TODAS LAS CLASES DEL MODELO (Archivos *.h)
a) Crear la clase TArena
2. Seleccionar el cono del proyecto PryClases, y en el men contextual que se
mostrare, seleccionar la opcin Nuevo Cdigo Fuente

1. Seleccionar la opcin
Nuevo Cdigo Fuente

Luego de esta accin se habr creado un archivo denominado Sin Nombre1.

3.

Cambiar el nombre del archivo SinNombre1, y asignarle el nuevo nombre


claseTArena.h. Para hacer esto, seleccionar el cono Sin Nombre1, y en el men
contextual seleccionar la opcin Renombrar Archivo, y luego escribir el texto
claseTArena.h

Pgina 19 de 36

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

2. Escribir el nuevo
nombre claseTArena.h

El aspecto de la interfaz ser similar a la que se muestra:

4.

3. Presionar el
3. Presionar
botn
OK el
botn OK

Modificar el contenido del archivo claseTArena.h, de forma tal como se muestra:


Archivo claseTArena.h

#ifndef _CLASETARENA_H
#define _CLASETARENA_H
Seccin
de
cdigo
fuente

// Seccin de cdigo fuente

#endif

5. Escribir en la seccin de cdigo fuente del archivo la declaracin del encabezado


de la clase TArena, tal como se muestra a continuacin:
//-- SECCION 1. Declaracin de referencias include
//------------------------------------------------//-- SECCION 2. Declaracin del Encabezado de la Clase
class TArena{

Nombre de la
clase TArena

}; // El encabezado termina en Punto y Coma


//------------------------------------------------//-- SECCION 3. Implementacin de las clases

b) Crear la clase TAsfalto


6. Repetir los pasos 2, 3, 4, y 5, pero en esta ocasin trabajar con la clase TAsfalto
c) Crear la clase THormigon
7. Repetir los pasos 2, 3, 4, y 5, pero en esta ocasin trabajar con la clase THormigon

d) Crear la clase TVidrio


8. Repetir los pasos 2, 3, 4, y 5, pero en esta ocasin trabajar con la clase TVidrio

Pgina 20 de 36

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

e) Crear la clase TEstacin


9. Repetir los pasos 2, 3, 4, y 5, pero en esta ocasin trabajar con la clase TEstacion

f)

Crear la clase TPista


10. Repetir los pasos 2, 3, 4, y 5, pero en esta ocasin trabajar con la clase TPista

g) Crear la clase TPared


11. Repetir los pasos 2, 3, 4, y 5, pero en esta ocasin trabajar con la clase TPared

h) Crear la clase TPiso


12. Repetir los pasos 2, 3, 4, y 5, pero en esta ocasin trabajar con la clase TPiso

i)

Crear la clase TVentana


13. Repetir los pasos 2, 3, 4, y 5, pero en esta ocasin trabajar con la clase TVentana

j)

Crear la clase TParabrisa


14. Repetir los pasos 2, 3, 4, y 5, pero en esta ocasin trabajar con la clase TParabrisa

k) Crear la clase TLente


15. Repetir los pasos 2, 3, 4, y 5, pero en esta ocasin trabajar con la clase TLente

16. Una vez terminado de crear las clases, modificar el archivo main.cpp, de forma tal que usando
la instruccin include, se haga referencia a todos los archivos *.h creados
Ejemplo:
#include claseTArena.h
#include claseTAsfalto.h
#include claseTHormigon.h
#include claseTVidrio.h
etc.
17. Compile todo el proyecto con la opcin del men EjecutarReconstruir todo. Si hubieran
errores de codificacin, deber corregirlo.
El aspecto del proyecto es el que se muestra:

Pgina 21 de 36

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

SECCION 03: RELACIONAR TODAS LAS CLASES DE ACUERDO AL MODELO (Archivos *.h)
De acuerdo al modelo:
TArena es la superclase
TVidrio tiene como padre a TArena
TAsfalto tiene como padre a TArena
THormigon tiene como padre a TArena
TEstacion tiene como padre a TAsfalto
TPista tiene como padre a TAsfalto
TPared tiene como padre a THormigon
TPiso tiene como padre a THormigon
TVentana tiene como padre a TVidrio
TParabrisa tiene como padre a TVidrio
TLente tiene como padre a TVidrio
Realizaremos la relacin en las clases hijo, modificando el encabezado de cada clase.

18. Abrir el archivo claseTVidrio.h, y modificar el encabezado de la clase, de forma tal que se
haga referencia a la clase de la cual es descendiente
//-- SECCION 1. Declaracion de referencias include
#include "claseTArena.h"
//------------------------------------------------//-- SECCION 2. Declaracin del Encabezado de la Clase
class TVidrio: public TArena {

Nombre de la clase
Padre TArena
}; // El encabezado termina en Punto y Coma
//------------------------------------------------//-- SECCION 3. Implementacin de las clases

19. Abrir el archivo claseTAsfalto.h, y modificar el encabezado de la clase, de forma tal que se
haga referencia a la clase de la cual es descendiente
//-- SECCION 1. Declaracion de referencias include
#include "claseTArena.h"
//------------------------------------------------//-- SECCION 2. Declaracin del Encabezado de la Clase
class TAsfalto: public TArena {

Nombre de la clase
Padre TArena
}; // El encabezado termina en Punto y Coma
//------------------------------------------------//-- SECCION 3. Implementacin de las clases

20. Repetir el paso anterior, pero esta ocasin, para todas las dems clases del modelo
SECCION 04: SECCIONAR EL ENCABEZADO DE TODAS LAS CLASES EN TRES
SECCIONES (Archivos *.h)
a) las secciones de cdigo son: prvate, protected y public
b) personalizaremos la seccin public, y las segmentaremos en tres secciones:
Seccin Propiedades
Seccin Constructores y Destructores
Seccin Procedimientos y Funciones

Pgina 22 de 36

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

21. Modificar el encabezado de la clase TArena (archivo claseTArena.h) dejndolo tal como se
muestra:
class TArena{
private:
protected:
public:
//--- 1. Seccin Propiedades
//--- 2. Seccin Constructores y Destructores
//--- 3. Seccin Procedimientos y Funciones
};
22. Modificar el encabezado de la clase TVidrio (archivo claseTVidrio.h) para dejarlo tal como se
muestra:
class TVidrio{
private:
protected:
public:
//--- 1. Seccin Propiedades
//--- 2. Seccin Constructores y Destructores
//--- 3. Seccin Procedimientos y Funciones
};

23. Repetir el paso anterior para las dems clases del modelo.

SECCION 05: PLANIFICAR LA IMPLEMENTACION DE CLASES SEGN EL MODELO DE


HERENCIAS
24. Bosquejar a manera de listado la secuencia que se seguir para implementar todas las clases
del modelo.
Revisando el modelo de clases, empezando por el nodo raz (clase TArena),
terminaremos en los nodos hojas (Clases que no tienen descendientes). La secuencia que
vamos a seguir es la siguiente:
a) Implementar la clase TArena
b) Implementar la clase TAsfalto
c) Implementar la clase THormigon
d) Implementar la clase TVidrio
e) Implementar la clase TEstacion
f) Implementar la clase TPista
g) Implementar la clase TPared
h) Implementar la clase TPiso
i) Implementar la clase TVentana
j) Implementar la clase TParabrisa
k) Implementar la clase TLente

SECCION 06: IMPLEMENTAR ITERATIVAMENTE TODAS LAS CLASES DEL MODELO


Para iniciar este paso, consideramos la secuencia estipulada en la planificacin de clases( paso
anterior).

Pgina 23 de 36

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

25. Implementar la clase TArena.


Paso 6.0: Seleccionar la clase a implementar: La clase TArena.
TArena
#Densidad: Integer
-Color: String
+TArena()
+TArena(Densidad: Integer, Color: String)
+getDensidad(): Integer
+setDensidad(Value: Integer)
+getColor(): String
+setColor(Value: String)
+print(String s)
+println(String s)

Paso 6.1 Escribir las propiedades de la clase


Modificar la clase TArena (archivo claseTArena.h) y en la seccin propiedades escribir
todas las propiedades de la clase.
class TArena {
//Seccin 1. Propiedades
private:
string Color;
protected:
int Densidad;
public:
//--- 1. Seccin Propiedades
//--- 2. Seccin Constructores y Destructores
//--- 3. Seccin Procedimientos y Funciones
};
Nota: para utilizar el tipo de datos string se debe referenciar al espacio de
trabajo std. Esto se hace escribiendo la referencia en la parte superior del
archivo, de la forma siguiente:
//-- SECCION 1. Declaracion de referencias include
using namespace std;

Paso 6.2 y 6.3 Implementar el constructor sin parmetros, y el que tiene parmetros
class TArena {
//Seccin 1. Propiedades
private:
string Color;
protected:
int Densidad;
public:
//--- 1. Seccin Propiedades
//--- 2. Seccin Constructores y Destructores
TArena();
TArena(int Densidad, string Color);
//--- 3. Seccin Procedimientos y Funciones
};
//------------------------------------------------//-- SECCION 3. Implementacin de las clases
TArena::TArena()
{ this->Densidad = 0 ;
this->Color
= "";
}
TArena::TArena(int Densidad, string Color)
{ this->Densidad = Densidad ;
this->Color
= Color;
}

Pgina 24 de 36

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

Paso 5.4 Implementar los procedimientos y funciones de la clase


class TArena {
//Seccin 1. Propiedades
private:
string Color;
protected:
int Densidad;
public:
//--- 1. Seccin Propiedades
//--- 2. Seccin Constructores y Destructores
TArena();
TArena(int Densidad, string Color);
//--- 3. Seccin Procedimientos y Funciones
int getDensidad();
void setDensidad(int value);
string getColor();
void setColor(string value);
void print(string s);
void println(string s);
};
//------------------------------------------------//-- SECCION 3. Implementacin de las clases
TArena::TArena()
{ this->Densidad = 0 ;
this->Color
= "";
}
TArena::TArena(int Densidad, string Color)
{ this->Densidad = Densidad ;
this->Color
= Color;
}
//-- Procedimientos y funciones
int TArena::getDensidad()
{ return this->Densidad;
}
void TArena::setDensidad(int value)
{ this->Densidad = value;
}
string TArena::getColor()
{ return this->Color;
}
void TArena::setColor(string value)
{ this->Color = value;
}
void TArena::print(string s)
{ printf("%s", s.c_str());
}
void TArena::println(string s)
{printf("\n%s", s.c_str());
}
26. Implementar la clase TVidrio.
Paso 6.0: Seleccionar la clase a implementar: La clase TVidrio.

Pgina 25 de 36

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

TVidrio
-Opacidad: Integer
-Grosor: Integer
+TVidrio()
+TVidrio(Densidad: Integer, Color: String, Opacidad: Integer, Grosor: Integer)
+getOpacidad(): Integer
+setOpacidad(Value: Integer)
+getGrosor(): Integer
+setGrosor(Value: Integer)
+Traslucir()
+TraspasarImagen()
+getArea(): double
+getVolumen(): double

Paso 6.1 Escribir las propiedades de la clase


Modificar la clase TVidrio.h, (archivo claseTVidrio.h) y en la seccin propiedades escribir
todas las propiedades de la clase.
class TVidrio: public TArena {
//Seccin 1. Propiedades
private:
int Opacidad;
int Grosor;
protected:
public:
//--- 1. Seccin Propiedades
//--- 2. Seccin Constructores y Destructores
//--- 3. Seccin Procedimientos y Funciones
};
Nota: para utilizar el tipo de datos string se debe referenciar al espacio de
trabajo std. Esto se hace escribiendo la referencia en la parte superior del
archivo, de la forma siguiente:
//-- SECCION 1. Declaracion de referencias include
using namespace std;

Paso 6.2 y 6.3 Implementar el constructor sin parmetros, y el que tiene parmetros
class TVidrio: public TArena {
//Seccin 1. Propiedades
private:
int Opacidad;
int Grosor;
protected:
public:
//--- 1. Seccin Propiedades
//--- 2. Seccin Constructores y Destructores
TVidrio();
TVidrio(int Densidad, string Color,
int Opacidad, int Grosor);
//--- 3. Seccin Procedimientos y Funciones
};
//-- SECCION 3. Implementacin de las clases
TVidrio::TVidrio():TArena()
{ this->Opacidad =0 ;
this->Grosor
= 0;
}
TVidrio::TVidrio(int Densidad, string Color, int Opacidad,
int Grosor):TArena(Densidad, Color)
{ this->Opacidad = Opacidad ;
this->Grosor
= Grosor;
}

Pgina 26 de 36

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

Paso 6.4 y 6.5, Implementar los procedimientos y funciones de la clase


class TVidrio: public TArena {
//Seccin 1. Propiedades
private:
int Opacidad;
int Grosor;
protected:
public:
//--- 1. Seccin Propiedades
//--- 2. Seccin Constructores y Destructores
TVidrio();
TVidrio(int Densidad, string Color,
int Opacidad, int Grosor);
//--- 3. Seccin Procedimientos y Funciones
int getOpacidad();
void setOpacidad(int value);
int getGrosor();
void setGrosor(int value);
void Traslucir();
void TraspasarImagen();
double getArea();
double getVolumen();
};
//------------------------------------------------//-- SECCION 3. Implementacin de las clases
TVidrio::TVidrio():TArena()
{ this->Opacidad =0 ;
this->Grosor
= 0;
}
TVidrio::TVidrio(int Densidad, string Color, int Opacidad,
int Grosor):TArena(Densidad, Color)
{ this->Opacidad = Opacidad ;
this->Grosor
= Grosor;
}
//-- Procedimientos y funciones
int TVidrio::getOpacidad()
{ return this->Opacidad;
}
void TVidrio::setOpacidad(int value)
{ this->Opacidad = value;
}
int TVidrio::getGrosor()
{ return this->Grosor;
}
void TVidrio::setGrosor(int value)
{ this->Grosor = value;
}
void TVidrio::Traslucir()
{
}
void TVidrio::TraspasarImagen()
{
}
double TVidrio::getArea()
{ return 0;
}
double TVidrio::getVolumen()
{ return 0;
}

Pgina 27 de 36

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

Paso 6.1 Escribir las propiedades de la clase


Modificar el archivo TArena.h, y en la seccin propiedades escribir todas las propiedades
de la clase.
public class TArena {
//Seccin 1. Propiedades
private:
string Color;
protected:
int Densidad;
public:
//--- 1. Seccin Propiedades
//--- 2. Seccin Constructores y Destructores
//--- 3. Seccin Procedimientos y Funciones
}
27. Repetir el paso anterior (Pasos 6.0, 6.1, 6.1, 6.2, 6.3, 6.4, 6.5) pero esta vez, para todas las
dems clases del modelo. Respetar la secuencia de implementacin.

SECCION 07: CREACION DE LOS OBJETOS


28. Agregue los mtodos getClassName y getClassName_full a todas las clases segn se
indica:
a) A la superclase TArena. Agregar los mtodos indicados en el encabezado, y luego
implementarlos (utilizar la palabra reservada virtual). Solamente en esta clase
agregaremos tambin el mtodo InstanceOf, por cuanto es la superclase.
class TArena{
//-----virtual string getClassName();
virtual string getClassName_full();
//---bool InstanceOf(string class_name);
};
//-- SECCION 3. Implementacin de las clases
string TArena::getClassName(){
return "TArena";
}
string TArena::getClassName_full(){
return "TArena";
}
bool TArena::InstanceOf(string class_name)
{ size_t found;
found = this->getClassName_full().find(class_name);
if (found!=string::npos)
return true;
else
return false;
}

b) A la clase TVidrio, agregarle los mtodos indicados en el encabezado, y luego


implementarlos.
class TVidrio: public TArena{
//-----string getClassName();
string getClassName_full();
};

Pgina 28 de 36

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

//-- SECCION 3. Implementacin de las clases


string TVidrio::getClassName(){
return "TVidrio";
}
string TArena::getClassName_full(){
return TArena::getClassName_full() +" " +TVidrio::getClassName();
}

c) A la clase TAsfalto, agregarle los mtodos indicados en el encabezado, y luego


implementarlos.
class TAsfalto: public TArena{
//-----string getClassName();
string getClassName_full();
};
//-- SECCION 3. Implementacin de las clases
string TAsfalto::getClassName(){
return "TAsfalto";
}
string TAsfalto::getClassName_full(){
return TArena::getClassName_full() + " " + TAsfalto::getClassName();
}

Clase Padre TArena

Clase Actual

d) A la clase THormigon, agregarle los mtodos indicados en el encabezado, y luego


implementarlos.
class THormigon: public TArena{
//-----string getClassName();
string getClassName_full();
};
//-- SECCION 3. Implementacin de las clases
string THormigon::getClassName(){
return "THormigon";
}
string THormigon::getClassName_full(){
return TArena::getClassName_full() + " " + THormigon::getClassName();
}

Clase Padre TArena

Clase Actual

e) A la clase TLente, agregarle los mtodos indicados en el encabezado, y luego


implementarlos.
class TLente: public TVidrio{
//-----string getClassName();
string getClassName_full();
};
//-- SECCION 3. Implementacin de las clases
string TLente::getClassName(){
return "TLente";
}
string TLente::getClassName_full(){
return TVidrio::getClassName_full() + " " + TLente::getClassName();

Pgina 29 de 36

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

f)

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

}
A la clase TParabrisa, agregarle los mtodos indicados en el encabezado, y luego
implementarlos.
class TParabrisa: public TVidrio{
//-----string getClassName();
string getClassName_full();
};
//-- SECCION 3. Implementacin de las clases
string TParabrisa::getClassName(){
return "TParabrisa";
}
string TParabrisa::getClassName_full(){
return TVidrio::getClassName_full() +" "+ TParabrisa::getClassName();
}

Clase Padre TVidrio

Clase Actual

g) A las dems clases del modelo, agregarle los mtodos indicados en el encabezado, y
luego implementarlos(los mtodos getClassName y getClassName_full). Proceder
de acuerdo al patrn propuesto.
29. Abrir el archivo main.cpp, y escribir en el programa principal una aplicacin que sirva para
crear objetos de las clases del diagrama.
using namespace std;
//-----------------------------------------------void print(string s)
{ printf("%s", s.c_str());
}
void println(string s)
{ printf("%s \n", s.c_str());
}
void println(int n)
{ printf(" %d \n", n);
}
void println(double d)
{ printf(" %f \n", d );
}
//-----------------------------------------------void Imprimir(TArena *O){
println("-------------------------------------- ");
print("la clase: "); println(O->getClassName());
print("la clase: "); println(O->getClassName_full());
if (O->InstanceOf("TArena")==true)
{ TArena *A = (TArena *) O;
print("El objeto es de color"); println(A->getColor());
print("Su densidad es: ");
println(A->getDensidad());
}
if (O->InstanceOf("TVidrio"))
{
TVidrio *Vi = (TVidrio *) O;
print("Su opacidad es: " ); println(Vi->getOpacidad());
print("Su grosor es: " ); println(Vi->getGrosor());
print("El area es: "
);
println(Vi->getArea());
print("El volumen es: ");
println(Vi->getVolumen());
Vi->Traslucir();
Vi->TraspasarImagen();
}

Pgina 30 de 36

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

if (O->InstanceOf("TLente"))
{ TLente *L = (TLente *) O;
print("Su nmero es: ");
println(L->getNumero());
print("Su diametro es: "); println(L->getDiametro());
L->AumentarImagen();
L->CentrarImagen();
}
if (O->InstanceOf("TParabrisa"))
{TParabrisa *P = (TParabrisa *) O;
print("Su Marca es: "); println(P->getMarca());
print("Su Largo es: "); println(P->getLargo());
print("Su Ancho es: "); println(P->getAncho());
P->CerrarVentana();
P->AbrirVentana();
}
if (O->InstanceOf("TVentana"))
{ TVentana *V = (TVentana *) O;
print("Su Largo es: ");
println(V->getLargo());
print("Su Ancho es: ");
println(V->getAncho());
print("La posicion es: "); println(V->getPosicion());
V->BloquearElViento();
}
if (O->InstanceOf("TPiso"))
{ TPiso *X = (TPiso *) O;
print("Se usa en: ");
println(X->getUso());
print("Su Antiguedad es:"); println(X->getAntiguedad());
X->Resbalar();
X->Quebrarse();
}
if (O->InstanceOf("TAsfalto"))
{ TAsfalto *Y = (TAsfalto *) O;
print("El petroleo es: "); println(Y->getTipoPetroleo());
}
if (O->InstanceOf("THormigon"))
{ THormigon *H = (THormigon *) O;
H->Chorrearse();
H->Mezclar();
}
if (O->InstanceOf("TEstacion"))
{ TEstacion *E = (TEstacion *) O;
print("El area es: "); println(E->getArea());
}
if (O->InstanceOf("TPared"))
{ TPared *Pa = (TPared *) O;
print("La ubicacion es: "); println(Pa->getUbicacion());
print("La altura es: ");
println(Pa->getAltura());
Pa->DarSoporte();
Pa->Proteger();
}
if (O->InstanceOf("TPista"))
{ TPista *Z = (TPista *) O;
print("La longitud es: "); println(Z->getLongitud());
print("El ancho es: ");
println(Z->getAncho());
print("El area es: ");
println(Z->getArea());
Z->AvanzarVehiculo();
Z->EmitirSenyales();
}

Pgina 31 de 36

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

}
int main(int argc, char *argv[])
{
//1. Declarar las variables
TArena *A, *B, *C, *D, *E, *F, *G;
// 2.
A =
B =
C =
D =
E =
F =
G =

Crear los objetos


new TPista(18,"Verde","Negro", 3, 10);
new TPiso(20, "Plomo", "Patio de casa", 5);
new TParabrisa(30, "Transparente",0,2,"Michelin", 3,1);
new TPared(12,"Azul","Perimetro", 2);
new TEstacion(15, "Amarillo", "Negro", 2.5);
new TVentana(12,"Transparente",1,3,5,2);
new TLente(11,"Transparente", 0,1,45,2);

// 3. Usar los objetos


Imprimir(A);
Imprimir(B);
Imprimir(C);
Imprimir(D);
Imprimir(E);
Imprimir(F);
Imprimir(G);

// 4. Destruir los objetos


delete A;
delete B;
delete C;
delete D;
delete E;
delete F;
delete G;
system("PAUSE");
return EXIT_SUCCESS;
}

30. Grabar todo y ejecutarlo.

TAREAS:
Implementar la siguiente estructura de clases.

Pgina 32 de 36

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

TAparato
-Marca: String
-Peso: double
+TAparato()
+TAparato(Material: String, ... Completar...)
+getMarca(): String
+setMarca(Value: String)
+getPeso(): double
+setPeso(Value: double)
+Apartar()

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

TMetal
-Material: String
-Solidez: double

-Uso: String
-Antiguedad: Integer

+TMetal()
+TMetal(Material: String, Solidez: double)
+getMaterial(): String
+setMaterial(Value: String)
+getSolidez(): double
+setSolidez(Value: double)
+Tensar()
+Endurecer()

TLampa

-Modelo: String
-Ruedas: Integer

-Calibre: double
-Largo: double

+TTanque()
+TTanque(Material: String, ...Completar ...)
+getModelo(): String
+setModelo(Value: String)
+getRuedas(): Integer
+setRuedas(Value: Integer)
+Circular()
+Atacar()

+TCanyon()
+TCanyon(Material: String, ...Completar...)
+getCalibre(): double
+setCalibre(Value: double)
+getLargo(): double
+setLargo(Value: double)

TVajilla
-Pico: String
+TPicota()
+TPicota(Material: String, ...Completar...)
+getPico(): String
+setPico(Value: String)
+Picotear()
+Clavar()
TCuchara
+Peso: double
+TCuchara()
+TCuchara(Material: String, ...Completar...)
+getPeso(): double
+setPeso(Value: double)
+Cargar()

Pgina 33 de 36

+getUso(): String
+setUso(Value: String)
+getAntiguedad(): Integer
+setAntiguedad(Value: Integer)
+Levantar()
+Utilizar()

TCanyon

TTanque

TPicota

THerramienta

#Largo: Integer
-Ancho: Integer
+TLampa()
+TLampa(Material: String, ...Completar...)
+getLargo(): Integer
+setLargo(Value: Integer)
+getAncho(): Integer
+setAncho(Value: Integer)
+Lampear()
+Cargar()

-Color: String

TCuchillo

+TVajilla()
+TVajilla(Material: String, ...Completar...)
+getColor(): String
+setColor(Value: String)
+Lavarse()
+Secarse()

TPlato
-Diametro: double
-Volumen: double
+TPlato()
+TPlato(Material: String, ...Completar...)
+getDiametro(): double
+setDiametro(Value: double)
+getVolumen(): double
+setVolumen(Value: double)
+Servir()
+TomarElPlato()

-Filo: String
+TCuchillo()
+TCuchillo(Materia: String, ...Completar...)
+getFilo(): String
+setFilo(Value: String)
+Cortar()
+Enfilar()

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

DESCRIPCION DE LOS PASOS A APLICAR


PARA LA IMPLEMENTACION DE CLASES

INICIO
1
Crear el proyecto
2

Crear todas las clases del


Modelo (Escribir los
encabezados de cada clase)

3
Relacionar las clases
de acuerdo al Modelo

En C++ debe crear un archivo de librera (archivo


*.h) por cada clase (Le asignar al archivo el
mismo nombre de la clase pblica, y le agregar la
extension "h", con el prefijo"class_")

La clase X tiene como padre a la clase Y. En


C++ se trata de usar las instrucciones:
- refencia: es decir include "class_Padre.h"
- relacion de 2 clases
Ej: class TClaseHijo: public TClasePadre {
};

Seccionar todas los encabezados de todas las


clases en 3 secciones:
"Seccin 1. Propiedades"
"Seccin 2. Constructores/Destructores"
"Seccin 3. Procedimientos y Funciones"

Planificar la implementacin de clases


de acuerdo a las jerarquas definidas
5
del modelo

Iniciar en el Nodo Raiz (Superclase


superior) y terminar en los nodos
hoja (Clases sin descendendientes)

6
Para k = 1 ----> N

TMyClase = Clase(k)
6.1

Escribir las propiedades


de la clase

6.2
Declarar e Implementar el
Constructor sin parmetros
Ej: TMyClase()

-En la seccin propiedades, definir todas las


variables de la clase
-Inicializar cada variable (Propiedad)
declarada en la clase
-Utilizar la instruccin "super()" para el
llamado al constructor del padre de la clase

Declarar e Implementar el
Constructor con parmetros
Ej: TMyClase(par1, par2, ...)

Declarar e Implementar los


procedimientos de la clase
"TMyClase"

-Todos los procedimientos empiezan con


la palabra reservada "void"

Declarar e Implementar las


funciones de la clase
"TMyClase"

-Todos las funciones empiezan con la palabra


reservada "int" , "float", "string", ... etc. Toda
funcin debe contener la palabra reservada
"return"

6.4

FIN

Pgina 34 de 36

-Las clases estn ordenadas por la jerarqua


definida por la ascendencia de clases

-Declarar un parmetro por cada Propiedad


de la clase
-Inicializar cada variable (Propiedad) declarada
en la clase con el parmetro de contraparte
-Utilizar la instruccin
"TClasePadre(param1,para2, ...)" para el llamado
al constructor del padre de la clase. Transferirle
los parmetros que deben inicializar propiedades
de la clase padre y ascendientes

6.3

6.5

N = Nmero total de clases del modelo

Pgina 35 de 36
-Lar go : Int ege r
-An c ho : Int ege r

TVe n t a n a

-Us o: St ring
-An t igue da d: Int ege r

TPi so

Estructura de clases a implementar utilizada en esta gua de prcticas


NOTA: A excepcin de las clases TArena, TVidrio, TAsfalto, todas las clases tienen la
declaracin de los constructores de manera incompleta. Usted debe completarlos.

-Longi tud: Int ege r


-An c ho : Int ege r

TPi st a

+g e t Longi tud( ): Int ege r


+s et Longi tud( Va l ue : Int ege r )
+D a r So po r te( )
+g e t An c ho ( ): Int ege r
+P r ot ege r ()
+g e t Ub i cac i on( ): St ring+s et An c ho ( Va l ue : Int ege r )
+g e t Al tur a( ): Int ege r +A v a nz ar Ve hi cul o( )
+E mi tirSe ny a l es ()
+g e t Ar ea ( ): do ubl e

-Ub i cac i on: St ring


-Al tur a: Int ege r

TPa r e d

+g e t Ar ea ( ): do ubl e

-Ar ea : do ubl e

TEs t a c i on

+T A s f al to( )
+T A s f al to( De ns i da d: Int ege r , Co l or : St ring, Ti po Pe t rol eo : St ring)
+g e t Ti po Pe t rol eo ( ): St ring

TA s f al to

+T A r ena ( )
+T A r ena ( De ns i da d: Int ege r , Co l or : St ring)
+g e t De ns i da d( ): Int ege r
+s et De ns i da d( Va l ue : Int ege r )
+g e t Co l or (): St ring
+s et Co l or (Va l ue : St ring)
+p r int (St ring s)
+p r int ln( St ring s)

-Ti po Pe t rol eo : St ring

+g e t Us o( ): St ring
+B l oque a r El Vi ent o( )
+C e r rar Ve nt ana ( )
+g e t Po s i ci on( ): Int ege r +g e t An t igue da d( ): Int ege r
+A b r irVe nt ana ( )
+R e s ba l ar ()
+g e t Ar ea ( ): do ubl e
+g e t Ar ea ( ): do ubl e +g e t Lar go ( ): Int ege r +Q u e br ar se( )
+g e t Ma r ca( ): St ring +g e t An c ho ( ): Int ege r
+g e t Lar go ( ): Int ege r
+g e t An c ho ( ): Int ege r

-Ma r ca: St ring


-Lar go : Int ege r
-An c ho : Int ege r

TPa r a b r isa

TA r e n a
#D e ns i da d: Int ege r
-Co l or : St ring

+T Lent e( )
+T Lent e( De ns i da d: Int ege r , Co l or : St ring, Op a c i da d: Int ege r , Gr os or : Int ege r ,THo
. . . )r mi go n
+g e t Nu me r o( ): do ubl e
+s et Nu me r o( Va l ue : do ubl e)
+C h o r rea r se( )
+g e t Di ame t ro( ): do ubl e
+Me z cl ar ()
+s et Di ame t ro( Va l ue : do ubl e)
+A u me nt ar Ima ge n( )
+C e nt rar Ima ge n( )
+g e t Ar ea ( ): do ubl e

-Nu me r o: do ubl e
#D i ame t ro: do ubl e

TL e n t e

+T Vi dr io( )
+T Vi dr io( De ns i da d: Int ege r , Co l or : St ring, Op a c i da d: Int ege r , Gr os or : Int ege r )
+g e t Op a c i da d( ): Int ege r
+s et Op a c i da d( Va l ue : Int ege r )
+g e t Gr os or (): Int ege r
+s et Gr os or (Va l ue : Int ege r )
+T r as l uc i r()
+T r as pa s ar Ima ge n( )
+g e t Ar ea ( ): do ubl e
+g e t Vo l ume n( ): do ubl e

-Op a c i da d: Int ege r


-Gr os or : Int ege r

TVi dr io

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas
Univ. Nac. Jos Mara Arguedas
Docente: Ing. Edwin O. Ramos Velsquez

Implementacin de Algoritmos en Dev C++ usando mdulos


Carrera Profesional de Ingeniera de Sistemas

Univ. Nac. Jos Mara Arguedas


Docente: Ing. Edwin O. Ramos Velsquez

BIBLIOGRAFA
CEVALLOS SIERRA, Francisco Javier. Enciclopedia del lenguaje C++. Mxico,
Alfaomega Grupo Editor, S.A. de C.V., 2004.
FARRELL, Joyce. Introduccin a la programacin: Lgica y diseo. Mxico,
International Thomson Editores, S.A. de C.V., 2000.
JOYANES AGUILAR, Luis. Fundamentos de Programacin. Mxico, McGraw
Hill. 1999.

Pgina 36 de 36