Beruflich Dokumente
Kultur Dokumente
IMPLEMENTACIÓN DE ALGORITMOS
EN DEV C++ USANDO MÓDULOS
- GUÍAS DE PRÁCTICA -
MATERIAL PREPARADO PARA EL CURSO:
ALGORITMOS Y ESTRUCTURA DE DATOS
ELABORADO POR:
ANDAHUAYLAS – PERÚ
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
PRESENTACIÓN
El presente trabajo es un compilado de guías de laboratorio preparado para ser utilizado por los
alumnos de la Carrera profesional de Ingeniería de Sistemas o de Ingeniería Informática en las
sesiones de un curso de Introducción a la programación. Nosotros, habilitamos este material para
los alumnos, de forma tal les sirva de guía en la resolución de ejercicios de programación.
La programación modular y/o estructurada, concibe que un programa está compuesto por un
conjunto de módulos o subprogramas; y, donde cada módulo está a cargo de una función
específica dentro de un software. Siendo que la forma más cómoda de desarrollar software
complejo es a través del uso de módulos o procedimientos, en el presente material, se aborda la
implementación de software desde esa óptica. El alumno notará que cada programa, ha sido
subdividido en por lo menos dos módulos. 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 implementación
de programas complejos.
Esperamos que el presente conjunto de guías de laboratorio sean de utilidad para absolver
muchas de las dudas que nuestros estudiantes nos han planteado en clase.
El profesor
Página 2 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
OBJETIVO
El alumno podrá crear una aplicación básica 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 práctica, usted necesita contar con los siguientes elementos:
METODOLOGIA
Se presentará al alumno ejemplos de algoritmos en la forma de diagramas de flujo, y se
les solicitará su implementación en Dev C++.
Se absolverán preguntas en la sesión de esta práctica de laboratorio.
NOTA:
Previamente, usted debería de crear un directorio de trabajo para el almacenamiento del
código fuente de sus programas (Podría ser por ejemplo “D:\Applicaciones C”).
FIN
}
//---------------------------------------
int main(int argc, char *argv[])
Programa_Principal( ) {
Algoritmo_Promedio();
INICIO
Algoritmo_Promedio();
Algoritmo_02();
Programa
//3. Congelar pantalla principal
Algoritmo_Promedio( ) printf("\n ");
system("PAUSE");
return EXIT_SUCCESS;
}
FIN
Página 3 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
2. Implementar un programa que dados dos números A y B, ambos leídos desde el teclado,
aplique el algoritmo de Euclides para hallar el Máximo Común Divisor, y que muestre su
resultado en pantalla.
#include <cstdlib>
HallarMCD(A,B: Integer): Integer #include <iostream>
Inicio
using namespace std;
return MCD;
return (MCD) }
MCD
MCD =
= HallarMCD(A,
HallarMCD(A, B);
B);
C = HallarMCD (A, B)
printf("\nElElResultado
printf("\n Resultadoes:
es:%d",
%d",MCD);
MCD);
Página 4 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
3. Implementar un programa que dados dos números A y B, ambos leídos desde el teclado,
aplique el algoritmo de Euclides para hallar el Mínimo Común Múltiplo (MCM), y que muestre
su resultado en pantalla.
#include <cstdlib>
HallarMCM(A, B: Integer): Integer #include <iostream>
Inicio
using namespace std;
R = X mod
R y= =
x R;
% y;
Y MCD = x
R = y;% y;
} MCD = y;
MCD = Y }
MCD = MCD * x * y;
MCD = MCD * X * Y
return MCD;
return (MCD)
}
system("PAUSE");
return EXIT_SUCCESS;
Print: MCD
}
FIN
Página 5 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
4. Implemente que lea desde el teclado un número N, y luego imprima en pantalla la siguiente
imagen:
1 1 1
1 2 1 2 1 2
1 1 2 3 1 2 3
1 2 1 2 3 4
Si N = 2 1 Si N = 3 1 2 3
1 2
1 Si N = 4
Solución:
void Imprimir_Fila(int N)
{ //1. Declarar variables
For k = 1 --> Fila
int
intk;
k;string
strings;
s;
Print: k + ' ' //2. Algoritmo
printf("\n");
for
for(k
(k==1;1;kk<=
<=N;
N;k++)
k++)
printf("%d
printf("%d ",k);
",k);
FIN
}
//-------------------------------------
Imprimir_Triangulo(N:Integer)
void Imprimir_Triangulo(int N)
INICIO
{ //1. Declarar variables
int
int k;
k;
For k = 1 --> N
//2. Algoritmo
Imprimir_Linea(k) for (k
for (k == 1;
1; kk <=
<= N;
N; k++)
k++)
Imprimir_Fila(k);
Imprimir_Fila(k);
for (k = N-1; k >= 1; k--)
for (k = N-1; k >= 1; k--)
For k = N -1 --> 1 Imprimir_Fila(k);
Imprimir_Fila(k);
Bucle Decreciente
}
Imprimir_Linea(k)
scanf(“%d”,
scanf("%d", &N);
&N);
Leer: N
Imprimir_Triangulo(N);
Imprimir_Triangulo(N);
Imprimir_Triangulo(N)
//3. Congelar la pantalla
printf("\n");
FIN
system("PAUSE");
return EXIT_SUCCESS;
}
Página 6 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
5. Implemente un programa que lea desde el teclado un número N, y obtenga el número romano
equivalente y lo imprima en pantalla.
Inicio Inicio
N = LeerDatos( )
R = IntToRomanoDecada(N)
R = IntToRomano( N )
return R
Imprimir(R) FIN
FIN
IntToRomanoDecada(N:Integer ): String
Inicio
CASE
(Z)
R = IntToRomanoUnidad(N - 0)
return R
FIN
Página 7 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
IntToRomanoUnidad(N:Integer ): String
Inicio
CASE
(N)
R=" " R="I" R = " II " R = " III " R = " IV " R="I"
return R
FIN
TAREAS:
Diseñe Usted 5 programas con sus respectivos diagramas de flujo, y a continuación realice su
implementación en C++.
Página 8 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
OBJETIVO
El alumno podrá crear una aplicación donde se utilice la recursividad, tomando como
referencia los diagrama de flujo.
DATOS PREVIOS
Para dar inicio a esta práctica, 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 implementación en Dev C++.
Se absolverán preguntas en la sesión de esta práctica de laboratorio.
NOTA:
Previamente, usted debería de crear un directorio de trabajo para el almacenamiento del
código fuente de sus programas (Podría ser por ejemplo “D:\Applicaciones C”).
Print:
//3. Congelar pantalla
F printf("\n ");
system("PAUSE");
FIN
return EXIT_SUCCESS;
}
Página 9 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
2. Implementar un programa que lea un valor N desde el teclado, y luego halle los N primeros
números Fibonacci.
Solución:
#include <cstdlib>
Fibonacci (N:Integer ): Integer #include <iostream>
INICIO
using namespace std;
SI IF NO int Fibonacci(int N)
(N= 0) ò { //1. Declaración de variables
(N=1)
F=N
int F;
int F;
FIN
return F;
}
Imprimir_Nros(N: Integer )
INICIO
//----------------------------
void Imprimir_Nros(int N)
{ //1. Declaracion de variables
for K =1 ---> N
int
intK,K,
f; f;
F = Fibonacci(k )
for
for (K
(K == 1;
1; K<=N;
K<=N; K++)
K++)
{ {f f
= =Fibonacci(K);
Fibonacci(K);
Print: printf(“%d, ”,”,f);
F
printf(“%d, f);
} }
}
FIN
//----- Programa principal -----
int main(int argc, char *argv[])
{
//1. Declaración de variables
Programa_Principal( ) int N;
int N;
INICIO // 2. Algoritmo
printf("\n Leer N:");
Leer: scanf("%d",
scanf(“%d”, &N);
&N);
N
Imprimir_Nros(N);
Imprimir_Nros(N);
Imprimir_Nros (N )
TAREAS:
Implemente 3 programas en donde se utilice recursividad.
Página 10 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
OBJETIVO
El alumno podrá crear una aplicación donde se utilicen librerías de procedimientos en
C++.
DATOS PREVIOS
Para dar inicio a esta práctica, 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 implementación en Dev C++.
Se absolverán preguntas en la sesión de esta práctica de laboratorio.
NOTA:
Previamente, usted debería de crear un directorio de trabajo para el almacenamiento del
código fuente de sus programas (Podría ser por ejemplo “D:\Applicaciones C”).
Seleccionar la plantilla
“Console Application”
Página 11 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
2. directorio
“ProyLibreria” creado para
el nuevo proyecto
A continuación seleccionar el directorio recién creado para allí grabar todos los archivos
de este proyecto
3. Seleccionar el directorio
recién creado “ProyLibreria”
4. Presionar “Guardar”
para grabar el proyecto
c) Grabar todo.
Página 12 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
1. Presionar el botón
“Guardar todo”
Todos los archivos que se han de grabar, deberán ser grabados en el directorio “ProyLibreria”,
el cual usted creo en el paso anterior.
1. Seleccionar la opción
“Nuevo Código Fuente”
Página 13 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
2. Escribir el nuevo
nombre “MiLibreria.h”
1. Seleccionar la opción
“Renombrar Archivo”
3. Presionar el
botón “OK”
4. Modificar el contenido del archivo “MyLibreria.h”, de forma que debería contener lo siguiente:
Archivo “MyLibreria.h”
#ifndef _MYLIBRERIA_H
#define _MYLIBRERIA_H
Sección
// Sección de código fuente
de
código
fuente
#endif
Página 14 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
INICIO INICIO
SI IF NO Leer:
N=0 N
Print:
F
return F
FIN
FIN
Nota: Aplicaremos la siguiente lógica, el programa principal será escrito El texto ”MYLIBRERIA”
en el procedimiento principal (“void main()”), mientras que los debe estar sincronizado
procedimientos y/o funciones serán escritos dentro de los archivos de con el nombre del archivo.
cabecera (archivos con extensión *.H)
(Si el nombre del archivo
Referencia al archivo Deberá agregar un archivo de cabecera (archivo “*.h”) al proyecto, cambia, este encabezado
donde se encuentran y modificar el archivo tal cual se muestra a continuación: también debe cambiar)
los procedimientos y/o
funciones a utilizar Archivo: main.cpp Archivo: MyLibreria.H
#include”MyLibreria.H”
#include “MyLibreria.H” /* -------------------------------
NOTA: El nombre del archivo
using namespace std; debe coincidir con el encabezado
anterior
-------------------------------
int main(int argc, char *argv[]) */
{ // 1. Declaración de variables using namespace std;
int N, F;
int Factorial(int N)
// 2. Algoritmo { //1. Declaración de variables
printf(“\nLeer N:”); int F;
F = Factorial(N); if (N == 0)
F = 1;
else
Llama a una función
//3. Congelar pantalla F = N * Factorial( N );
definida en una librería
printf("\n ");
system("PAUSE"); (en “MyLibreria.h”) return F;
Esto debe estar en la
return EXIT_SUCCESS;
última línea de
} }
código del archivo
#endif *.h
Página 15 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
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 debería escribirse así:
#include <MyLibreria.h>
7. Implementar un programa que lea desde el teclado un número N, y que luego imprima en
pantalla: “Es número PRIMO” o “No es número PRIMO” según corresponda.
ProgramaPrincipal( ) Es_Primo(N:Integer):Boolean
INICIO INICIO
Leer: E = true
N
For k = 2 -->N-1
H = EsPrimo( N )
SI IF NO
SI IF NO (N % K) = 0
¿ H = true ?
E = false
Print Print:
"Es Primo" "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.
Página 16 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
OBJETIVO
El alumno podrá crear librerías de clases a partir de diagramas de clase
El alumno podrá utilizar las librerías de clase de manera adecuada.
DATOS PREVIOS
Para dar inicio a esta práctica, 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 implementación en java
(diagrama de clases mostrado al final de esta guía de laboratorio).
Se plantearán una serie de pasos para implementar la estructura de clases
(diagrama de flujo presentado al final de esta guía de laboratorio).
Se presentara un nuevo diagrama de clases y se solicitará al alumno que lo
implemente.
Se absolverán preguntas en la sesión de esta práctica de laboratorio.
NOTA:
Previamente, usted debería de crear un directorio de trabajo para el almacenamiento del
código fuente de sus programas (Podría ser por ejemplo “D:\Applicaciones C”).
Seleccionar la plantilla
“Console Application”
Página 17 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
2. directorio “PryClases”
creado para el nuevo
proyecto
A continuación seleccionar el directorio recién creado para allí grabar todos los archivos
de este proyecto
3. Seleccionar el directorio
recién creado “PryClases”
4. Presionar “Guardar”
para grabar el proyecto
c) Grabar todo.
Página 18 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
1. Presionar el botón
“Guardar todo”
Todos los archivos que se han de grabar, deberán 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 opción “Nuevo Código Fuente”
1. Seleccionar la opción
“Nuevo Código Fuente”
Página 19 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
2. Escribir el nuevo
nombre “claseTArena.h”
3. Presionar el
3. Presionar
botón “OK” el
El aspecto de la interfaz será similar a la que se muestra: botón “OK”
#ifndef _CLASETARENA_H
#define _CLASETARENA_H
Sección
// Sección de código fuente
de
código
fuente
#endif
//-------------------------------------------------
//-- SECCION 2. Declaración del Encabezado de la Clase
class TArena{
Nombre de la
clase “TArena”
Página 20 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
16. Una vez terminado de crear las clases, modificar el archivo main.cpp, de forma tal que usando
la instrucción “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 opción del menú “EjecutarReconstruir todo”. Si hubieran
errores de codificación, deberá corregirlo.
Página 21 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
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 relación 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 2. Declaración del Encabezado de la Clase
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. Declaración del Encabezado de la Clase
20. Repetir el paso anterior, pero esta ocasión, para todas las demás clases del modelo
Página 22 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
21. Modificar el encabezado de la clase TArena (archivo claseTArena.h) dejándolo tal como se
muestra:
class TArena{
private:
protected:
public:
//--- 1. Sección Propiedades
};
22. Modificar el encabezado de la clase TVidrio (archivo claseTVidrio.h) para dejarlo tal como se
muestra:
class TVidrio{
private:
protected:
public:
//--- 1. Sección Propiedades
};
23. Repetir el paso anterior para las demás clases del modelo.
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 raíz (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
Página 23 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
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.2 y 6.3 Implementar el constructor sin parámetros, y el que tiene parámetros
class TArena {
//Sección 1. Propiedades
private:
string Color;
protected:
int Densidad;
public:
//--- 1. Sección Propiedades
//--- 2. Sección Constructores y Destructores
TArena();
TArena(int Densidad, string Color);
//--- 3. Sección Procedimientos y Funciones
};
//-------------------------------------------------
//-- SECCION 3. Implementación de las clases
TArena::TArena()
{ this->Densidad = 0 ;
this->Color = "";
}
TArena::TArena(int Densidad, string Color)
{ this->Densidad = Densidad ;
this->Color = Color;
}
Página 24 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
class TArena {
//Sección 1. Propiedades
private:
string Color;
protected:
int Densidad;
public:
//--- 1. Sección Propiedades
//--- 2. Sección Constructores y Destructores
TArena();
TArena(int Densidad, string Color);
//-------------------------------------------------
Página 25 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
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.2 y 6.3 Implementar el constructor sin parámetros, y el que tiene parámetros
class TVidrio: public TArena {
//Sección 1. Propiedades
private:
int Opacidad;
int Grosor;
protected:
public:
//--- 1. Sección Propiedades
//--- 2. Sección Constructores y Destructores
TVidrio();
TVidrio(int Densidad, string Color,
int Opacidad, int Grosor);
//--- 3. Sección Procedimientos y Funciones
};
//-- SECCION 3. Implementación 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;
}
Página 26 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
Página 27 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
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
demás clases del modelo. Respetar la secuencia de implementación.
};
Página 28 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
Página 29 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
}
f) A la clase “TParabrisa”, agregarle los métodos indicados en el encabezado, y luego
implementarlos.
class TParabrisa: public TVidrio{
//------
string getClassName();
string getClassName_full();
};
29. Abrir el archivo main.cpp, y escribir en el programa principal una aplicación que sirva para
crear objetos de las clases del diagrama.
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();
}
Página 30 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
if (O->InstanceOf("TLente"))
{ TLente *L = (TLente *) O;
print("Su número 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();
}
Página 31 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
}
int main(int argc, char *argv[])
{ //1. Declarar las variables
TArena *A, *B, *C, *D, *E, *F, *G;
system("PAUSE");
return EXIT_SUCCESS;
}
TAREAS:
Implementar la siguiente estructura de clases.
Página 32 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
TMetal
TAparato THerramienta
-Material: String
-Marca: String -Solidez: double -Uso: String
-Peso: double -Antiguedad: Integer
+TMetal()
+TAparato() +TMetal(Material: String, Solidez: double) +getUso(): String
+TAparato(Material: String, ... Completar...) +getMaterial(): String +setUso(Value: String)
+getMarca(): String +setMaterial(Value: String) +getAntiguedad(): Integer
+setMarca(Value: String) +getSolidez(): double +setAntiguedad(Value: Integer)
+getPeso(): double +setSolidez(Value: double) +Levantar()
+setPeso(Value: double) +Tensar() +Utilizar()
+Apartar() +Endurecer()
TTanque TCanyon
-Calibre: double TLampa
-Modelo: String
-Ruedas: Integer -Largo: double
#Largo: Integer
+TCanyon() -Ancho: Integer
+TTanque()
+TTanque(Material: String, ...Completar ...) +TCanyon(Material: String, ...Completar...)
+TLampa()
+getModelo(): String +getCalibre(): double
+TLampa(Material: String, ...Completar...)
+setModelo(Value: String) +setCalibre(Value: double)
+getLargo(): Integer
+getRuedas(): Integer +getLargo(): double
+setLargo(Value: Integer)
+setRuedas(Value: Integer) +setLargo(Value: double)
+getAncho(): Integer
+Circular() +setAncho(Value: Integer)
+Atacar() +Lampear()
+Cargar()
TVajilla
TPicota
-Color: String
TCuchillo
-Pico: String
+TVajilla()
-Filo: String
+TPicota() +TVajilla(Material: String, ...Completar...)
+TPicota(Material: String, ...Completar...) +getColor(): String +TCuchillo()
+getPico(): String +setColor(Value: String) +TCuchillo(Materia: String, ...Completar...)
+setPico(Value: String) +Lavarse() +getFilo(): String
+Picotear() +Secarse() +setFilo(Value: String)
+Clavar() +Cortar()
+Enfilar()
TCuchara TPlato
Página 33 de 36
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
6
Para k = 1 ----> N N = Número total de clases del modelo
6.1
Escribir las propiedades -En la sección propiedades, definir todas las
de la clase variables de la clase
6.5
Declarar e Implementar las -Todos las funciones empiezan con la palabra
funciones de la clase reservada "int" , "float", "string", ... etc. Toda
"TMyClase" función debe contener la palabra reservada
"return"
FIN
Página 34 de 36
TVi dr io TA r e n a
-Op a c i da d: Int ege r #D e ns i da d: Int ege r
-Gr os or : Int ege r -Co l or : St ring
Página 35 de 36
+T Vi dr io( ) +T A r ena ( )
+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 ) +T A r ena ( De ns i da d: Int ege r , Co l or : St ring)
+g e t Op a c i da d( ): Int ege r +g e t De ns i da d( ): Int ege r
+s et Op a c i da d( Va l ue : Int ege r ) +s et De ns i da d( Va l ue : Int ege r )
+g e t Gr os or (): Int ege r +g e t Co l or (): St ring
+s et Gr os or (Va l ue : Int ege r ) +s et Co l or (Va l ue : St ring)
+T r as l uc i r() +p r int (St ring s)
+T r as pa s ar Ima ge n( ) +p r int ln( St ring s)
+g e t Ar ea ( ): do ubl e
+g e t Vo l ume n( ): do ubl e
TA s f al to
+T A s f al to( )
-Nu me r o: do ubl e +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)
#D i ame t ro: do ubl e +g e t Ti po Pe t rol eo ( ): 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) TEs t a c i on
Implementación de Algoritmos en Dev C++ usando módulos
+C h o r rea r se( )
+g e t Di ame t ro( ): do ubl e -Ar ea : 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( ) +g e t Ar ea ( ): do ubl e
+C e nt rar Ima ge n( )
+g e t Ar ea ( ): do ubl e
TPi st a
TPa r e d
-Longi tud: Int ege r
-Ub i cac i on: St ring -An c ho : Int ege r
TPa r a b r isa TVe n t a n a TPi so
-Al tur a: Int ege r
+g e t Longi tud( ): Int ege r
-Ma r ca: St ring -Lar go : Int ege r -Us o: St ring +s et Longi tud( Va l ue : Int ege r )
+D a r So po r te( )
-Lar go : Int ege r -An c ho : Int ege r -An t igue da d: Int ege r +g e t An c ho ( ): Int ege r
+P r ot ege r ()
-An c ho : Int ege r
+g e t Us o( ): St ring +g e t Ub i cac i on( ): St ring+s et An c ho ( Va l ue : Int ege r )
+B l oque a r El Vi ent o( )
+C e r rar Ve nt ana ( ) +g e t Al tur a( ): Int ege r +A v a nz ar Ve hi cul o( )
+g e t Po s i ci on( ): Int ege r +g e t An t igue da d( ): Int ege r +E mi tirSe ny a l es ()
+A b r irVe nt ana ( ) +g e t Ar ea ( ): do ubl e +R e s ba l ar ()
+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 Ar ea ( ): do ubl e
+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
Estructura de clases a implementar utilizada en esta guía de prácticas
+g e t An c ho ( ): Int ege r
declaración de los constructores de manera incompleta. Usted debe completarlos.
NOTA: A excepción de las clases TArena, TVidrio, TAsfalto, todas las clases tienen la
Univ. Nac. José María Arguedas
Docente: Ing. Edwin O. Ramos Velásquez
Implementación de Algoritmos en Dev C++ usando módulos Univ. Nac. José María Arguedas
Carrera Profesional de Ingeniería de Sistemas Docente: Ing. Edwin O. Ramos Velásquez
BIBLIOGRAFÍA
Página 36 de 36