Vous êtes sur la page 1sur 40

Programacin Orientada a Objetos en C++

Universidad Nacional de Chimborazo


Facultad de Ingeniera
Escuela de Ingeniera en Electrnica

- Programacin Orientada a Objetos en C++

INTRODUCCIN

Desde hace ms de 50 aos, los programadores de computadores han diseado e


implementado aplicaciones que resuelven los problemas del mundo real, es decir, han
tenido que realizar un proceso de abstraccin en donde representan las situaciones
cotidianas en modelos computacionales, pero en el transcursos de este tiempo se han creado
paradigmas de programacin que facilitan esta labor.
Hoy en da el paradigma de Programacin Orientada a Objetos ofrece nuevas alternativas
que permiten abstraer y conceptualizar mejor la realidad, mediante la unin e interaccin de
elementos ms simples (objetos) facilitando la creacin de software de calidad, que
potencian el mantenimiento, la extensin y la reutilizacin del cdigo existente. Esta
programacin trata de amoldarse al modo de pensar del hombre y no al de la mquina. Esto
es posible gracias a la forma racional con la que se maneja la abstraccin que representa a
las entidades del dominio del problema.
El enfoque que presenta la Programacin Orientada a Objetos permite disear aplicaciones
comerciales, educativas, financieras como: Sistemas de Informacin, Diseo de Interfaces
Grficas, Desarrollo Web, entre otros, rereflejando la realidad en un mayor porcentaje que
los otros paradigmas de programacin.
Inicialmente se har una breve descripcin de los conceptos que involucran este paradigma,
luego se abordarn los principios fundamentales como: encapsulamiento, herencia,
polimorfismo, sobrecarga de operadores, entre otros; utilizando ejemplos codificados en el
lenguaje de programacin C++. Todos los ejemplos fueron compilados y ejecutados sobre
el sistema operativo windowsX (a excepcin de Windows Xp) y se utilizo el programa
Turbo C++, cabe anotar que los programas se podran compilar y ejecutar desde el sistema
operativo Linux, pero sin incluir la librera conio.h y las funciones asociadas a esta, para
ello se utiliza el compilador de C para Linux gcc.
Este material ser de gran ayuda para los estudiantes que quieran incursionar en la
Programacin Orientada a Objetos dado que los conceptos manejados estn expresados en
un nivel bsico, que facilita la comprensin de los temas tratados.

Programacin Orientada a Objetos en C++

PROGRAMACIN ORIENTADA A OBJETOS (POO)


Es un paradigma de programacin1, que permite desarrollar soluciones computacionales
utilizando componentes de software (objetos), permitiendo descomponer fcilmente un
problema en varias partes relacionadas, que a su vez se reutilizan, haciendo mas eficaz la
tarea de programar y ms robusta la aplicacin desarrollada.
Una ventaja de la POO frente al paradigma estructurado, es la facilidad que brinda a travs
de sus herramientas el desarrollo de los procesos de anlisis, modelado, diseo e
implementacin del mundo, de tal forma que representa la realidad. Esto porque el mundo
est lleno de objetos, los cuales se pueden representar como tales en una solucin
computarizada y para ello se necesita de un lenguaje de programacin, por ejemplo: C++,
Java, Visual Basic.net, etc.
Objeto
La caracterstica ms importante de la POO es el objeto. Un objeto es simplemente una
entidad lgica que contiene datos (campo o atributo) y un cdigo que manipula estos datos
(funcin mtodo). Un objeto lo podemos concebir en el campo de la programacin como
una variable de tipo definida por el usuario.
Los objetos pueden ser:
x
x

Reales o tangibles: lpiz, cuaderno, automvil, animal, estudiante, roca, etc.


Intangibles (conceptos) : nmero, carrera_universitaria, cuenta, transaccin, etc.

Campo o Atributo
Es una caracterstica de un objeto, que ayuda a definir su estructura y permite diferenciarlo
de otros objetos. Se define con un nombre y un tipo de dato, el cual indica los valores que
puede almacenar. El conjunto de valores de los campos definen el estado del objeto.
Funcin Mtodo
Es la implementacin de un algoritmo que representa una operacin en un objeto va a
realizar. El conjunto de los mtodos de un objeto determinan el comportamiento del mismo.
Clase
Representa la agrupacin de aquellos objetos que presentan caractersticas similares. Para
poder realizar correctamente el proceso de clasificacin de los objetos es preciso identificar
previamente las cualidades o atributos de dichos objetos. En trminos generales una clase
en POO la podemos simbolizar grficamente as:

Conjunto de teoras, estndares, modelos y mtodos que permiten organizar el conocimiento.

Programacin Orientada a Objetos en C++

Figura No. 1. Representacin grfica de un objeto real

Nombre_clase
Atributos
Mtodos

Planeta
nombre, dimetro, distancia,
movimiento, etc.

leer(), calcular(),mostrar()

Figura No. 2. Representacin grfica de un objeto intangible

Nombre_clase

Cuenta
numero_cta, saldo, clave

Atributos
Mtodos

consignar(), retirar(),
consultar()

Instancia
Una instancia se refiere a la creacin de un objeto a partir de una clase en particular, por
ejemplo, para la clase planeta los objetos seran : Tierra, Marte, Jpiter, Mercurio, Venus,
entre otros.
Principios de la POO
Para el desarrollo de aplicaciones orientadas a objetos se deben tener en cuenta una serie de
principios que deben estar inmersos en el diseo e implementacin, estos corresponden a:
Abstraccin
Esta propiedad permite distinguir a un objeto de los dems, observando sus caractersticas y
comportamientos, pensando en qu es? y no en cmo? se codificara en un lenguaje. Con la
abstraccin se destaca lo importante y se ignora lo irrelevante, o sea, hay ocultamiento de
informacin.
Modularidad
Proceso de crear partes de un todo que se integran perfectamente entre s para que
funcionen por un objetivo general, y a las cuales se les pueden agregar ms componentes
que se acoplen perfectamente al todo, o extraerle componentes sin afectar su
funcionamiento. En el caso que se requiera actualizar un mdulo, no hay necesidad de
hacer cambios en otras partes del todo. Un ejemplo clsico es un conjunto de mdulos para
mueble, que al integrarlos conforman un armario, al cual puede agregrsele ms

Programacin Orientada a Objetos en C++

funcionalidades, si se agregan ms mdulos, o al contrario, tambin se puede cambiar su


finalidad si se acomodan esos mdulos para darle otro objetivo: volverlo una mesa.
Encapsulacin de informacin
El encapsulamiento permite el ocultamiento de la informacin, esto significa, que los
objetos saben comunicarse entre s a travs de interfaces2 (normalmente no se permite que
un objeto sepa como estn implementados otros objetos).El mbito de los datos y de los
mtodos puede ser pblico, privado o protegido. Un ejemplo de este principio es el motor
de un carro el cual realiza una funcin especifica: mover el carro, sin interesar como lo
hace mecnicamente.
Herencia
Propiedad que permite a los objetos ser construidos a partir de otros, es decir que una clase
puede recibir las caractersticas de una clase superior, tales como atributos o mtodos
(campos y mtodos o comportamientos), para usarlos en la clase actual. Un ejemplo comn
es la gentica humana ya que el hijo hereda caractersticas de los padres.
Polimorfismo
Esta propiedad indica que un elemento puede tomar distintas formas. Podemos definirlo
como el uso de varios tipos en un mismo componente o mtodo. Por ejemplo, la suma de
nmeros es un caso de polimorfismo, ya que el operador suma dos operandos ya sean
reales, enteros, binarios, entre otros, lo importante es que el resultado siempre va a ser un
solo valor.
Diferencias entre la POO y otros paradigmas.
Se puede decir que el Paradigma Orientado a Objetos es una evolucin de la programacin
imperativa o procedural, aunque esta a su vez mejor las tecnicas de programacin
secuencial con el manejo de las estructuras.
Los objetos facilitan el diseo de las aplicaciones, ya que por medio de estos se puede
representar con mayor veracidad las entidades que se manejan normalemente en cualquier
proceso real, es aqu donde se evidencia la potencialidad de la abstraccin, ya que dichas
entidades se pueden categorizar segn sus caractersticas ms comunes y adems se pueden
definir acciones generales llamadas mtodos, los cuales pueden ser reutilizados por otros
objetos. Adicionalemente, la POO permite el uso de patrones de diseo y lenguajes de
modelado como UML, que facilitan el diseo, la documentacin, implementacin y
refinamiento del cdigo.

Es un mtodo que permite comunicar al exterior o al interior cierta informacin que almacenan las
caractersticas del objeto

Programacin Orientada a Objetos en C++

Cuadro comparativo
Aspectos

Programacin
Procedural

Representacin de Uso de Estructuras


Datos

Programacin
Estructurada

Programacin
Orientada a Objetos

TAD
(Tipos Clase (Estructura ms
abstractos de datos), funcionalidad)
Estructura
independiente de la
funcionalidad

Organizacin
cdigo

del Uso de funcines y Uso de mdulos


procedimientos

Las clases incorporan


la funcionalidad en
mtodos.

Reutilizacin
Cdigo

de Es prcticamente
imposible
aprovechar en una
aplicacin
nueva
las subrutinas que
se disearon para
otra.

Uso de la Herencia y el
polimorfismo. Mayor
facilidad
de
mantenimiento
y
reutilizacin.

Representacin

Se pueden reutilizar
los mdulos auque
existen dependencia
sobre los datos.

Diagramas de Flujo Diagramas de Flujo


de Datos

Lenguajes
Modelado UML

de

Acceso a los datos Todos los datos tienen acceso en cualquier Encapsulamiento,
parte de la aplicacin.
ocultamiento de la
complejidad interna y
detalles de los datos y
las operaciones
Enfoque

Orientada a la accin

Orientada a los objetos

Lenguajes de POO
Los conceptos de la programacin orientada a objetos tienen origen en Simula 67, un
lenguaje diseado para hacer simulaciones, creado por Ole-Johan Dahl y Kristen Nygaard
del Centro de Cmputo Noruego en Oslo. El trabajo que desarrollaron tena que ver con
simulaciones de naves. La idea ocurri para agrupar los diversos tipos de naves en diversas
clases de objetos, siendo responsable cada clase de objetos de definir sus propios datos y
comportamientos. Estos conceptos fueron refinados ms tarde en Smalltalk, que fue
desarrollado en Simula en Xerox PARC (y cuya primera versin fue escrita sobre Basic),
diseado para ser un sistema completamente dinmico, en el cual los objetos se podran
crear y modificar "en marcha" en lugar de tener un sistema basado en programas estticos.
La programacin orientada a objetos tom posicin como la metodologa de programacin
dominante a mediados de los aos ochenta, en gran parte debido a la influencia de C++ ,

Programacin Orientada a Objetos en C++

una extensin del lenguaje de programacin C. Su dominacin fue consolidada gracias al


auge de las Interfaces grficas de usuario, para los cuales la programacin orientada a
objetos est particularmente bien adaptada.
Las caractersticas de orientacin a objetos fueron agregadas a muchos lenguajes existentes
durante ese tiempo, incluyendo Ada, BASIC, Lisp, Pascal, y otros. La adicin de estas
caractersticas a los lenguajes que no fueron diseados inicialmente para ellas condujo a
menudo a problemas de compatibilidad y a la capacidad de mantenimiento del cdigo. Los
lenguajes orientados a objetos "puros", por otra parte, carecan de las caractersticas de las
cuales muchos programadores haban venido a depender. Para saltar este obstculo, se
hicieron muchas tentativas para crear nuevos lenguajes basados en mtodos orientados a
objetos, pero permitiendo algunas caractersticas procedurales de maneras "seguras". El
Eiffel de Bertrand Meyer fue un lenguaje con esos objetivos pero ahora ha sido
reemplazado por Java, en gran parte debido a la aparicin de Internet, y a la
implementacin de la mquina virtual de Java en la mayora de navegadores.
Lenguaje de programacion C++
El lenguaje C naci en los laboratorios Bell de AT&T y ha sido estrechamente asociado
con el sistema operativo UNIX, ya que su desarrollo se realiz en este sistema y debido a
que tanto UNIX como el propio compilador C y casi la totalidad de los programas y
herramientas de UNIX, fueron escritos en C. Su eficiencia y claridad han hecho que el
lenguaje ensamblador apenas haya sido utilizado en UNIX.
Este lenguaje est inspirado en el lenguaje B escrito por Ken Thompson en 1970 con
intencin de recodificar el UNIX, que en la fase de arranque estaba escrito en ensamblador,
en vista a su transportabilidad a otras mquinas. B era un lenguaje evolucionado e
independiente de la mquina, inspirado en el lenguaje BCPL concebido por Martin Richard
en 1967.
En 1972, Dennis Ritchie, toma el relevo y modifica el lenguaje B, creando el lenguaje C y
reescribiendo el UNIX en dicho lenguaje. La novedad que proporcion el lenguaje C sobre
el B fue el diseo de tipos y estructuras de datos.
Este lenguaje ha evolucionado paralelamente a UNIX. As, en 1980 se aaden al lenguaje
C, caractersticas como las clases (Tomado de Simula67), chequeo y conversin de los
tipos de argumentos de funcin, etc.; el resultado fue el lenguaje denominado "C con
Clases".
En 1983/84, "C con Clases" fue rediseado, extendido y nuevamente implementado. El
resultado se denomino "Lenguaje C++". Despus de algn otro refinamiento ms, C++
queda disponible en 1985. Este lenguaje fue inventado por Bjarne Stroustrup (AT&T Bell
Laboratories) y documentado por varios libros suyos.
El nombre C++ se debe a Rick Mascitti, significando "el carcter evolutivo de las
transformaciones de C" ('++' es el operador de incremento de C).

Programacin Orientada a Objetos en C++

ELEMENTOS BSICO DE LA PROGRAMACIN EN C++


Dentro de la estructura de un programa en C++, existen elementos bsicos tales como: tipos
de datos, operadores, expresiones, variables, constantes, directivas de preproceso, palabras
reservadas y caracteres especiales.
Tipos de Datos
Existen tipos de datos estndar que el compilador de C++ reconoce: enteros, coma flotante
y carcter. Los tipos de datos son:
Tabla 1. Tipos de Datos en C++
Tipo
char
int
long
float
double
void

Rango
-128 127 (ascii)
-32.768 32767
-2.147.483.648 2.147.483.647
3.4 x 10 -38 3.4 x 10 38
1.7 x 10 -308 1.7 x 10 308
Valor nulo

Bytes
1
2
4
4
8

Operadores y expresiones
Los programas en C++ constan de datos, sentencias de programas y expresiones. Una
expresin es una ecuacin matemtica, tal como 4+8. En esta expresin, el smbolo (+) es
el operador suma y los nmeros 4 y 8 se llaman operandos. C++ soporta diferentes tipos de
operadores: aritmticos, lgicos, de asignacin, relacionales.
Operadores Aritmticos
Se utilizan para crear expresiones aritmticas; estas pueden resultar de la
variables o constantes con operadores.

unin de

Tabla 2. Operadores Aritmticos


Operadores de
C++
Suma
Resta
Multiplicacin
Divisin
Residuo

Programacin Orientada a Objetos en C++

Operador

Expresin en C++

+
*
/
%

numero +7
numero -7
numero1 * numero2
numero1 / numero2
numero1 % numero2

Operadores de igualdad y relacionales (toma de decisiones)


Se utilizan para la toma de decisiones que se puedan necesitar dentro de un programa.

Tabla 3. Operadores de igualdad


Operadores de
Igualdad
=


C++

Ejemplo en C++

Significado en C++

==
!=

x==y
x!=y

X es igual a Y
X es diferente de Y

C++

Ejemplo en C++

Significado en C++

>
>=
<
<=

y>x
y>=x
y <x
y<=x

Y es mayor que X
Y es mayor o igual que X
Y es menor X
Y es menor o igual que X

Tabla 4. Operadores relacionales


Operadores
Relacionales
>
>=
<
=

Operadores de Incremento o Decremento


Estos operadores le permiten a C++ incrementar (++) decrementar (--) en una unidad (1)
el valor de una variable.
Ejemplos:
Tabla 5. Operadores de incremento o decremento
Ejemplo
Variable++
++Variable
Variable
--Variable

Significado
El valor de la variable se incrementa despus de hacer una operacin
El valor de la variable se incrementa antes de hacer una operacin
El valor de la variable se disminuye despus de hacer una operacin
El valor de la variable se disminuye antes de hacer una operacin

Tambin es posible crear variables de incremento o decremento mayores de una unidad de


la siguiente forma:
Tabla 6. Variables de incremento o decremento mayores de una unidad
Ejemplo
Variable+=3
Variable -=5

Significado
La variable incrementara su valor en 3 unidades
La variable decrementara su valor en 5 unidades

Programacin Orientada a Objetos en C++

10

Directiva de preproceso
Son sentencias que se sitan normalmente al principio del cdigo fuente, aunque pueden
aparecer en cualquier punto del programa. Estas directivas se identifican por ser lneas
precedidas por el smbolo #, que es el operador de preproceso, indicando que lo que sigue
es una lnea de control. Las directivas de preprocesado no necesitan punto y coma ( ; ) al
final de la sentencia.
#include
Le indica al compilador de C++ que incluya un archivo de texto existente (archivo de
cabecera).La sintaxis es:
#include <nombre de archivo> #include nombre de archivo

Ejemplos:
#0include <stdio.h> ;

#include math.h

#define
Esta directiva permite crear definiciones de macro; la ms comn de stas es la macro de
sustitucin sencilla, con est se define una sustitucin de un patrn particular por otro. Su
sisntaxis es:
#define nombre_constante valor_constante
Ejemplo:
(1) #define max 100

(2) #define p

printf

En el caso uno (1) el compilador al encontrar la palabra max lo reemplazara por el valor
100.
En el caso dos (2) el compilador al encontrar la letra p la reemplaza por el mtodo printf.
Declaracin de Variables
Para declarar una variable es necesario definir el tipo de dato y el nombre de la variable; las
variables se utilizan para almacenar, recuperar informacin o para cambiar su valor en
cualquier punto de un programa.
Su sintaxis es:
tipo_de_dato nombre_variable
tipo_de_dato nombre_variable = valor_inicial

Ejemplos:
char letra;
int valor;
double a,b,c;
float x;
char letra=a;
int valor=1;

Programacin Orientada a Objetos en C++

11

double a=b=c=0.0;
float x=20.78;

Declaracin de constantes
Una constante representa un espacio de almacenamiento con un valor fijo, es decir, su
contenido no varia en ninguna parte del programa; puede ser de cualquier tipo de dato.
Normalmente se definen las constantes utilizando las palabra reservada const, tambin se
puede hacer uso de la directiva #define.
Ejemplos:
const char letra_A=65;
const Dias_semana=7;
#define vr_minuto 60

Palabras reservadas de C++


Las palabras reservadas estn definidas como parte del lenguaje de programacin, es decir,
no se pueden utilizar como nombre de variables constantes. En la siguiente tabla se
relacionan.

Tabla 7. Palabras reservadas

asm
auto
break
case
catch
char
class
const
continue
default
delete
do

Palabras Reservadas de C++


Double
new
Else
operator
Enum
private
Extern
protected
Float
public
For
register
Friend
return
Goto
short
If
signed
Inline
sizeof
Int
static
Long
struct

switch
template
this
throw
try
typedef
union
unsigned
virtual
void
volatile
while

Caracteres Especiales
En el lenguaje C++ los caracteres especiales representan smbolos, como comillas dobles,
signo ?, entre otros y algunas secuencias de escape como un salto de lnea o una tabulacin.
A continuacin se definen algunos de estos.

Programacin Orientada a Objetos en C++

12

Tabla 8. Caracteres especiales

\a
\b
\f
\n
\r
\t
\v
\\
\?
\
\
\0

Caracteres especiales
carcter de alerta (beep)
carcter de retroceso
carcter de alimentacin de forma (papel)
carcter de lnea nueva
retorno de carro
carcter de tabulacin horizontal
carcter de tabulacin vertical
carcter diagonal invertida
carcter signo de interrogacin
carcter de apstrofe
carcter de comillas
carcter nulo

Creacin de un primer programa en C++


Para crear un programa orientado a objetos en C++ es necesario tener en cuenta los
siguientes aspectos:
1. En cada programa se debe definir como mnimo una clase utilizando la palabra
reservada "class", su sintaxis es:
class Nombre_clase
{
private:
datos y mtodos privados;
protected:
datos y mtodos protegidos;
public:
datos y mtodos publicos;
}lista de objetos;

2. Debe existir un mtodo principal llamada main().


3. Incluir como mnimo un archivo de cabecera, Ejemplo: # include <iostream.h>
4. Las palabras reservadas de C++ deben ir en minsculas
Archivos generados en C++
Cuando se crean programas en Lenguaje C++ se obtienen los siguientes archivos.
1. El cdigo fuente que contiene las instrucciones del programa en el lenguaje de
programacin, cuya extensin es .cpp . Ejemplo: Primero.cpp , Miprograma.cpp.
2. Cuando el cdigo fuente se compila se genera un archivo con el cdigo objeto, que
posee la extensin .obj , y otro archivo ejecutable con extensin .exe. Estos archivos
generados poseen el mismo nombre del archivo fuente.

Programacin Orientada a Objetos en C++

13

3. Tambin se crean archivos de cabecera o libreras que contienen mtodos pblicos


que pueden ser utilizados por varios programas. Dichos archivos tienen la extensin
.h.
Ejemplo 1: Hacer un programa orientado a objetos en C++ que muestre un mensaje en la
pantalla.
// el doble slash sirve para hacer comentarios dentro del programa
//Nombre del programa: leyenda.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13

#include <iostream.h>
#include <conio.h>
class Leyenda{
public:
void mostrar(void);
};
void Leyenda::mostrar(void)
{
cout <<Mi primer Programa en C++<<endl;
}
void main ()
{
Leyenda miobjeto;
miobjeto.mostrar();
getch ();
}

Ahora analicemos lnea por lnea (en un programa en C++ no es necesaria la numeracin
pero cada instruccin debe finalizar con un punto y coma).
Lnea 1: se incluye el archivo de cabecera iostream.h para manejar el flujo de
entrada/salida del programa. En el archivo iostream.h se encuentran definidos los
objetos cin y cout. El objeto cin utiliza al operador sobrecargado >> para tomar
datos desde la entrada estndar( habitualmente el teclado ). El objeto cout utiliza al
operador sobrecargado << para enviar datos hacia la salida estndar( normalmente
la pantalla).
Lnea 2: se incluye el archivo de cabecera conio.h, que permitira utilizar funciones para
el manejo de la pantalla por ejemplo: clrscr(), getch(), textcolor(),etc.
Lnea 3: se define la clase llamada Leyenda.
Lnea 4: la palabra reservada public indica que todos los datos y mtodos declarados
posteriormente son publicos.
Lnea 5: se define el prototipo de un mtodo. Un mtodo se declara para realizar una tarea
especfica.
Lnea 6: utilizando el operador de mbito (::) se implementa el mtodo, esto es, definir la
tarea que va a realizar. En este caso en la lnea 6 se utiliza el objeto cout para
mostrar un mensaje en la pantalla. El mtodo endl permite realizar un salto de
lnea en la pantalla.
Lnea 8: se define el mtodo principal main().

Programacin Orientada a Objetos en C++

14

Lnea 9 y 13: las llaves ({}) sirven para indicarle al mtodo principal main donde inicia y
termina el programa (estas llaves son obligatorias).
Lnea 10: se declara un objeto llamado miobjeto. Dicho objeto puede realizar un llamado a
todos los datos y mtodos pblicos de la clase Leyenda.
Lnea 11: se hace el llamado al mtodo mostrar().
Lnea 12: es un mtodo que permite detener la pantalla hasta que se pulse cualquier tecla.
Ejemplo 2: hacer un programa que capture un nmero entero por teclado y lo imprima en
pantalla.
//Nombre del programa: numero.cpp
1
#include <iostream.h>
2
#include <conio.h>
3
class Numero {
4
int num;
5
public:
6
void leernumero (void);
7
int mostrarnumero (void);
};
8
void Numero::leernumero (void)
{
9
cout<<Digite un nmero;
10
cin>>num;
}
11
int Numero::mostrarnumero (void)
{
12
return (num);
}
13
void main ()
{
14
clrscr ();
15
Numero natural;
16
natural.leernumero ();
17
cout<<endl<<El numero digitado fue:<<natural.mostrarnumero ();
18
getch ();
}

Anlisis
Lnea 4: Se declara una variable entera llamada num en la seccin privada de la clase.
Lnea 6: Se declara el mtodo leernumero().
Lnea 7: Se declara el mtodo mostrarnumero() el cual retornara un valor.
Lnea 9 y 10: se utiliza el objeto cout para visualizar en pantalla un texto y por medio del
objeto cin capturamos un valor en la variable num.
Lnea 12: se utiliza la palabra reservada return, para retornar el valor de la variable num.
Lnea 14: el mtodo clrscr() permite limpiar la pantalla cada vez que se ejecuta el
programa.
Lnea 17: se visualiza en pantalla el nmero que fue digitado el cual es retornado por el
mtodo mostrarnumero().
Programacin Orientada a Objetos en C++

15

Ejemplo 3: Hacer un programa que imprima la suma de dos enteros.


//Nombre del programa:suma.cpp
1
#include <iostream.h>
2
#include <conio.h>
3
class Suma{
4
public:
5
void hacersuma(int, int);
};
6
void Suma::hacersuma(int num1, int num2)
{
7
cout<<La suma es :<<num1 +num2<<endl;
}
8
void main()
{
9
clrscr();
10
int n1,n2;
11
Suma numeros;
12
cout<< Digite primer numero;
13
cin>>n1;
14
cout<< Digite segundo numero;
15
cin>>n2;
16
numeros.hacersuma(n1,n2);
17
getch();
}

Anlisis
Lnea 5: se declara el mtodo hacersuma(), el cual recibe dos parmetro enteros y no
retorna valores.
Lnea 7: se realiza en forma directa la suma de las dos variables y se imprimen en la
pantalla.
Lnea 16: se invoca al mtodo hacersuma() por medio del objeto numeros, enviando los dos
valores almacenados en las variables n1 y n2, para que ste, sume los dos valores e
imprima el resultado.

Programacin Orientada a Objetos en C++

16

ESTRUCTURAS DE CONTROL
Los programas vistos anteriormente son sencillos y lineales, donde se ejecutan las
instrucciones una tras otra. Sin embargo, en los programas generalmente se necesita hacer
cosas distintas dependiendo del estado de nuestras variables o realizar un mismo proceso
muchas veces sin escribir la misma lnea de cdigo una y otra vez.
Para realizar cosas ms complejas en los programas se utilizan las estructuras de control,
entre ellas se encuentran la de toma de decisiones y los ciclos.
Toma de Decisiones
Al tener programas ms complejos es necesario que se evalen algunos resultados para
determinar que proceso u operacin se debe ejecutar. Existen palabras reservadas de C++
que permiten tomar estas decisiones como son : if (si), if-else (si-sino), switch- case (segn
sea caso).
Sentencia if (Si)
Representa una toma de decisin sencilla, es decir, si la condicin que se evala es
verdadera se realizan las instrucciones que pertenezcan al if y continuara con el resto del
programa. Si la condicin es falsa no entrara al if y por consiguiente todas las instrucciones
que estn en el if no se ejecutaran. Su sintaxis puede ser:
1) if (condicin)
Instruccin;
Resto de programa

2) if (condicin)
{
Instrucciones;
}
Resto de programa

3)if(condicin)
{
if (condicin)
{
instrucciones;
}
}
Resto de programa

Formato 1: Si la condicin del if es verdadera se realiza la instruccin y contina con el


resto del programa.
Formato 2: Si la condicin del if es verdadera y se requiere realizar ms de una instruccin
se deben encerrar entre llaves { } .
Formato 3: Se pueden anidar varios if, es decir, uno entre otro, para ingresar cada vez al if
ms interno es necesario que la condicin sea verdadera.

Programacin Orientada a Objetos en C++

17

Ejemplos:
1)
#include<iostream.h>

2) // si.cpp
#include<iostream.h>

#include <conio.h>

#include <conio.h>

class Si{
public:
void versi(void);
};
void Si::versi(void)
{ int n=10;
i f(n>0)
cout<<"Nmero";
cout<<"Positivo";
}
void main()
{clrscr();
Si verdad;
verdad.versi();
getch();
}

class Si{
public:
void versi(void);
};
void Si::versi(void)
{ int n=10;
if(n<0)
cout<<"Nmero";
cout<<"Mayor";
}
void main()
{clrscr();
Si falso;
falso.versi();
getch();
}

Los anteriores programas imprimirn respectivamente en pantalla


Nmero Positivo
y
Mayor
Sentencia if else (Si Sino)
Es una estructura compuesta que evala una condicin. Si esta es verdadera realizara las
instrucciones contenidas en el if, en caso contrario ingresara por el else. El programa solo
tomara una de las dos alternativas y continuar con el resto del programa. Su sintaxis es la
siguiente:
1) if (condicin verdadera)
Instruccin_1;
else
Instruccin_2;
Resto de programa

2) if (condicin verdadera)
{
instrucciones_1;
}
else
{
Instrucciones_2;
}
Resto de programa

3)if(condicin verdadera)
{
if (condicin verdadera)
{
instrucciones_1;
}
else
{
instrucciones_2;
}
}
Resto de programa

Formato 1: Si la condicin del if es verdadera se realiza la instruccin_1 en caso contrario


realiza la instruccin_2 y contina con el resto del programa.
Formato 2: Si la sentencia de control if-else, necesita realizar ms de una instruccin se
deben encerrar entre llaves {} ambas sentencias.

Programacin Orientada a Objetos en C++

18

Formato 3: Se pueden anidar varios if-else, es decir, uno entre otro.


Ejemplos:
(1)
#include<iostream.h>
#include<conio.h>
class Uno{
public:
void mensajeSi(); };
void Uno::mensajeSi()
{ int n=10;
if(n<20)
cout<<"Verdadero"<<endl;
else
cout<<"Falso"<<endl; }
void main(){ Uno m;
m.mensajeSi();
getch(); }

(2) //sino.cpp
#include<iostream.h>
#include<conio.h>
class Uno{
public:
void mensajeSi(); };
void Uno::mensajeSi()
{ int n=10;
if(n<10)
cout<<"Verdadero"<<endl;
else
cout<<"Falso"<<endl; }
void main(){ Uno m;
m.mensajeSi();
getch(); }

Los anteriores programas imprimirn respectivamente en pantalla


Verdadero
y
Falso
Sentencia Switch case (Segn sea- hacer caso n )
Es una toma de decisin con varias opciones, esto es, segn sea el valor (entero o caracter)
de una variable escoger un caso entre varias alternativas. Su sintaxis es:
switch (expresin)
{
case constante 1:
<una o ms instrucciones>
break;
case constante 2:
<una o ms instrucciones>
break;
case constante 3:
<una o ms instrucciones>
break;
...
...
...
case constante n:
<una o ms instrucciones>
break;
default :
<una o ms instrucciones>
break;
}

Programacin Orientada a Objetos en C++

19

Para el uso de esta estructura se debe tener en cuenta lo siguiente:


1) El switch requiere de un valor entero o caractr. Este valor puede ser una constante, una
variable, el resultado de un mtodo una expresin alfanumrica.
2) El valor en cada case debe ser constante.
3) Se utiliza la palabra reservada break al final de cada case para terminar la bsqueda de
alternativas.
4) La palabra default es opcional, se usa cuando al recorrer las alternativas no encuentra
una verdadera o cuando se quiere dar respuesta a cualquier otro valor que tenga la
expresin de la estructura.
Ejemplos:
(1) //caso1.cpp
#include<iostream.h>
#include<conio.h>

(2) //caso2.cpp
#include<iostream.h>
#include<conio.h>

class Caso{
public:
void funcin(); };
void Caso::funcin()
{
int n;
cout<<Digite nmero:;
cin>>n;
switch(n) {
case 1:
cout<<Es el nmero 1;
break;
case 2:
cout<<Es el nmero 2;
break;
case 3:
cout<<Es el nmero 3;
break;
...

class Caso{
public:
void funcin(); };
void Caso::funcin()
{
char n;
cout<<Digite Caracter:;
cin>>n;
switch(n) {
case 'a':
cout<<Es la letra A;
break;
case 'b':
cout<<Es La letra B;
break;
case 'c':
cout<<Es la letra C;
break;
...
...
...
case n:
cout<<Es la letra n;
break;
}
}
}
void main(){ Caso uno;
uno.funcin();
getch();
}

...
case n:
cout<<Es el nmero n;
break;
}
}
}
void main(){ Caso uno;
uno.funcin();
getch(); }

Ejemplo 1: la constante del case es numrica.


Ejemplo 2: la constante es de tipo carcter por lo tanto en cada case la constante debe ir
encerrada entre comillas sencillas.

Programacin Orientada a Objetos en C++

20

Ciclos (estructuras repetitivas)


Los ciclos permiten repetir varias veces una o ms instrucciones, en C++ se usan las
estructuras: while (mientras ), do- while (haga mientras) y for (para).
while (mientras)
Sirve para repetir una secuencia de instrucciones siempre que la condicin evaluada sea
verdadera. Su sintaxis es:
a) while(condicin )
instruccin;

b) while (condicin )
c) while(condicin)
{
{
while(condicin)
instrucciones;
{
}
instrucciones;
}
}

Ejemplos:
1)n=10;
while(n<20)
{
cout<<hola;
n++;
}
cout<<Topo gigio;

2)n=10;
while(n<10)
cout<<hola;
cout<<topo gigio;

Ejemplo 1: como la condicin es verdadera imprimir 10 veces la palabra hola y luego


Topo gigio.
Ejemplo 2: como la condicin es falsa no ingresara al ciclo y por lo tanto solo imprimir la
palabra Topo gigio.
do- while (haga mientras)
Existen muchas situaciones en las que se desea que un ciclo se ejecute al menos una vez
antes de comprobar la condicin de repeticin. En la estructura mientras si el valor de la
expresin booleana es inicialmente falso, las instrucciones del ciclo no se ejecutarn; por
ello, se necesitan otros tipos de estructuras repetitivas como do-while, que se ejecuta por lo
menos una vez. Su sintaxis es:
1) do {

2) do {
instrucciones;

instruccin;

do{
instrucciones;
}while(cond verdadera);
}while(cond. Verdadera);

}while(condicin verdadera);

Programacin Orientada a Objetos en C++

21

Ejemplo: Hacer un programa que imprima los nmeros del 1 al 10 inclusive, utilizando el
ciclo do - while:
//Nombre del programa:dowhile.cpp
#include <conio.h>
#include<iostream.h>
class Hacer{
public:
void imprimir(); };
void Hacer::imprimir()
{ int n=1;
do {
cout<<n<<endl;
n=n+1;
}while(n<11); }
void main()
{ Hacer objeto
Objeto.imprimir();
getch() ;
}

for (Desde para)


Sirve para repetir una o varias instrucciones, usando una variable que por lo general es
llamada contador; esta estructura inicializa el contador y evala su valor por medio de una
condicin, si esta es verdadera se ejecutaran las instrucciones del ciclo y aumentar o
disminuir el contador automticamente, de lo contrario se finalizar el ciclo. Su sintaxis
es:
1) for (inicializacin de variables; condicin (s) ; incrementos decrementos)
2) for (inicializador; condicin; incremento)
{
for (inicializador; condicin; incremento)
{
instrucciones;
}
}

A continuacin se presentan las formas ms comunes que puede tener un for. Se puede
observar que en todos los ciclos for siempre entre los parntesis se utiliza como separador
el punto y coma (;), por lo tanto, a un ciclo for no le pueden faltar estos. En el caso de que
solo lleve los puntos y comas se creara un ciclo infinito o sea que nunca terminar. A
continuacin se presentan algunas formas de utilizar est estructura:
for(n=0;n<10;n++)
for(;n<10;n++)
for(;;n++)
for(; ; )
for(n=0,y=0;y<10;n++)
for(n=0,y=20;y>10,n<10;y--,n++)

Programacin Orientada a Objetos en C++

22

Ejemplo 1: Hacer un programa que imprima la suma de los nmeros del 1 al 10, utilizando
el ciclo for.
//Nombre del programa:for.cpp
#include<iostream.h>
#include<conio.h>
class For{
public:
void sumar();
};
void For::sumar()
{
int n, suma=0;
for(n=1; n<11;n++)
suma=suma+n;
cout<<la suma del 1 al 10 es:<<suma;
}
void main()
{
For objeto;
objeto.sumar();
getch();
}

Ejemplo 2: Hacer un programa que imprima los factoriales del 2 al 10


//Nombre del programa: for2.cpp
#include <conio.h>
#include<iostream.h>
class Numero{
public:
void hacer(); };
void Numero::hacer()
{
int f, n,x;
for(n=2;n<=10;n++)
{
f=1;
for(x=n; x>0; x--)
{
f= f * x;
}
cout<<\nEl factorial de:<<n<<es :<<f;
}
}
void main()
{
Numero objeto;
objeto.hacer();
getch();
}

Programacin Orientada a Objetos en C++

23

Como se puede observar en el ejemplo 2 el for se puede anidar cuantas veces se requiera,
primero termina el for ms interno y continua con los ms externos.

Ejercicios Propuestos
1. Escriba un programa que pida al usuario digitar dos nmeros, e imprima las operaciones
con los operadores aritmticos, los operadores relacionales y los operadores de
igualdad.
2. Realizar un programa que pida al usuario digitar dos nmeros enteros, e imprima l
numero mayor seguido del texto "Es mayor".
3. Escriba un programa que capture tres nmeros enteros, e imprima l numero mayor, el
del medio y el menor.
4. Hacer un programa que convierta una temperatura dada en grados celsius a grados
fahrenheit. La formula de conversin es F=9/5c +32
5. Realizar un programa que pida al usuario digitar la hora, los minutos y los segundos e
imprima la hora, los minutos y los segundos un segundo despus.
6. Capturar 10 nmeros e imprimir el mayor y el menor.
7. Sumar los nmeros enteros de 1 a 100 usando las estructuras: for, while, do while.
8. Imprimir todos los nmeros primos entre 2 y 1000 inclusive.
9. Una estacin climtica proporciona un par de temperaturas diarias (mxima, mnima)
(no es posible que alguna o ambas temperaturas sea 0 grados). La pareja fin de
temperaturas es 0,0. Se pide determinar el nmero de das, cuyas temperaturas se
proporcionaron, las medias mximas y mnima, el nmero de errores temperaturas de
0 grados y el porcentaje que representan.
10. Los nmeros astromg o cubos perfectos, son aquellos que sumados los cubos de cada
uno de sus dgitos nos dan el mismo nmero. Por ejemplo 153 es un cubo perfecto, pues
(1) elevado a 3 + (5) elevado a 3 + (3) elevado a 3 es igual a 153. Escriba un programa
que dado un nmero entero, diga si es o no es, un cubo perfecto.

Programacin Orientada a Objetos en C++

24

MTODOS
Un mtodo se define como un conjunto de instrucciones agrupadas bajo un nombre que
cumple una tarea especfica dentro de un programa. Para invocar o llamar a un mtodo slo
es necesario especificar el nombre y entre parntesis la lista de parmetros. Su sintaxis es:
tipo_de_ retorno
nombre_del_ mtodo (lista de parmetros)
{
instrucciones;
}

Ejemplo:
void metodo1(void)
{
instrucciones;
}

Para crear los mtodos en C++, se pueden implementar de dos formas, como se presentan a
continuacin:
x

Definida dentro de una clase e implementados fuera de la clase


class Proceso
{public:
void metodo(void);
};
void Proceso::funcion(void)
{
instrucciones;
}
void main()
{
Proceso objeto;
objeto.metodo();
}

Definida e implementada dentro de una clase


class Proceso
{public:
void metodo(void)
{
instrucciones;
}
};
void main()
{
Proceso objeto;
objeto. metodo();
}

Programacin Orientada a Objetos en C++

25

Tipos de Mtodos
Mtodos que no retornan valores ni reciben parmetros
Estos mtodos, tanto en el tipo de retorno como en la lista de parmetros utilizan ir la
palabra reservada void, indicando al compilador que el retorno ser un valor de nulo.
Ejemplo: hacer un programa que imprima un mensaje en pantalla.
//Nombre del programa:funcion1.cpp
#include <conio.h>
#include<iostream.h>
class Uno
{
public: //declaracin de la parte pblica de la clase uno
void mensaje(void)
{
cout<<esta es un mtodo que no retorna ni recibe valores;
}
}; //terminacin de la clase
void main(void)
{
clrscr();
Uno objeto1; //Declaracin de un objeto (objeto1) de la clase uno
//llamado al mtodo mensaje a travs del objeto y el operador punto(.)
objeto1.mensaje();
getch();
}

En el ejemplo anterior al ejecutar y compilar el programa el mtodo principal main()


invocar al mtodo mensaje() e imprimir en pantalla el texto que se encuentra en el cuerpo
del mtodo, cabe anotar, que en la lista de parmetros no es indispensable colocar la
palabra reserrvada void.
Mtodos que reciben parmetros pero que no retornan valores
Para stos mtodos, el tipo de retorno es nulo, por lo cual se utiliza la palabra reservada
void, y en la lista de parmetros se definen cada uno de los tipos de datos que se recibirn.
Ejemplo: hacer un programa donde se reciban tres valores en un mtodo y se impriman en
pantalla.
//Nombre del programa:funcion2.cpp
#include <conio.h>
#include<iostream.h>
class Valor{
public:
void metodo(int a, float b, double c)
{

Programacin Orientada a Objetos en C++

26

cout<<los valores recibidos fueron:<<a<< <<b<< <<c<<endl;


}
};
main()
{
clrscr();
Valor objeto;
int x; float y; double z;
cout<<"Digite tres valores"<<endl;
cin>>x;
cin>>y;
cin>>z;
objeto.metodo (x,y,z);
getch();
}

En el ejemplo anterior desde el main() se envan tres valores, almacenados en las variables
x,y,z respectivamente y el mtodo los reciben en ese orden en las variables a,b,c, por
consiguiente la variable a recibir el valor de x, la variable b el valor de y, la variable c el
valor de z.
Mtodos que reciben parmetros y retornan valores
En estos mtodos, el retorno debe ser un tipo de dato diferente de void (int, float, double,
etc.) y en la lista de parmetros cada uno de los tipos de datos que se deseen. Se debe
incluir como instruccin de retorno la palabra reservada return; en este tipo de mtodos
solo puede retornarse un valor.
Ejemplo: hacer un programa donde se reciban tres valores en un mtodo y sta realice la
sumatoria de los tres valores y los retorne al mtodo main.
//Nombre del programa:funcion3.cpp
#include <conio.h>
#include<iostream.h>
class Calculadora{
public:
int funcion(int a, int b, int c);
};
int Calculadora:: metodo (int a, int b, int c)
{
int suma;
suma=a+b+c;
return (suma);
}
void main()
{
Calculadora objeto;
int x=2,y=3,z=4;
cout<<La suma de los tres valores es:<<objeto. metodo (x,y,z)<<endl;
getch(); }
Programacin Orientada a Objetos en C++

27

En el ejemplo anterior desde el main() se envan tres valores enteros, en las variables x,y,z
respectivamente, el mtodo los recibe en ese orden en las variables de tipo entero a,b,c. En
el mtodo crea una variable suma que sirve para retornar la sumatoria de los tres nmeros.
Mtodos que no reciben parmetros y retornan un valor
Para stos mtodos, en el retorno debe ir el tipo de dato que devolver el mtodo (int, char,
float, etc.) y en la lista de parmetros la palabra void.
Ejemplo: hacer un programa donde se lean dos valores desde un mtodo y ste calcule y
retorne el cociente de la divisin de los valores.
//Nombre del programa:funcion2.cpp
#include <conio.h>
#include<iostream.h>
class Valor{
private:
int a, b;
public:
void metodo1( )
{ cout<<Digite dos valores :;
cin>>a;
cin>>b;
}
float metodo2( )
{ float cociente;
cociente=a/b;
return(cociente);
}
};
main()
{
clrscr();
valor objeto;
objeto. metodo1();
cout<<"El cociente es:"<<objeto. metodo2()<<endl;
getch();
}

En el ejemplo anterior desde el main() se invoca a metodo1(), que solicitar y almacenar


dos valores enteros en las variables a,b respectivamente y metodo2() retorna al main() el
cociente de la division de las variables a y b.
Mtodos homnimos
Los mtodos homnimos son aquellos que tiene el mismo nombre del mtodo pero es
distinta la lista de parmetros (cantidad tipos de datos).

Programacin Orientada a Objetos en C++

28

Ejemplo: hacer un programa donde se capture tres valores. En un mtodo se debe retornar
la sumatoria de los tres valores y en otra la sumatoria de los dos primeros valores.
//Nombre del programa: homo.cpp
#include <conio.h>
#include<iostream.h>
class Homo{
public:
int funcion(int, int);
int funcion(int, int, int);
};
int Homo:: metodo(int a, int b)
{
return (a+b);
}
int Homo:: metodo (int a, int b, int c)
{
return (a+b+c);
}
void main()
{ Homo objeto;
int x,y,z;
cout<<digite primer numero :;
cin>>x;
cout<<digite segundo numero :;
cin>>y;
cout<<digite tercer numero :;
cin>>z;
cout<<la suma de X y Y es:<<objeto. metodo (x,y)<<endl;
cout<<la suma de X,Y y Z es:<<objeto. metodo (x,y,z)<<endl;
getch();
}

Mtodos con parmetros predefinidos


A estos mtodos se les puede asignar valores predefinidos a la lista de parmetros que
recibe, permitiendo cambiar los valores de las variables del mtodo.
Ejemplo: Hacer un programa que imprima los siguientes valores en pantalla utilizando un
mtodo con valores predefinidos:
a=100 b=200 c=300
a=2 b=200 c=300
a=2 b=3 c=300
a=2 b=3 c=4
//Nombre del programa: valores.cpp
#include <conio.h>
#include<iostream.h>

Programacin Orientada a Objetos en C++

29

class Valores
{
public:
int metodo (int a=100, int b=200, int c=300);
};
int valores:: metodo (int a=100, int b=200, int c=300)
{
cout<<a=<<a<< b=<<b<< c=<<c<<endl;
}
main()
{
Valores objeto;
objeto. metodo ();
objeto. metodo (2);
objeto. metodo (2,3);
objeto. metodo (2,3,4);
getch();
}

Mtodos Recursivos
Un mtodo recursivo es aquel que se llama a s mismo ya sea directa o indirectamente a
travs de otro mtodo. As que para cada repeticin hay una nuevo llamado al mtodo
original.
- Ejemplo: Utilizando recursividad crear un POO que realice la serie de fibonacci, la cual
se define:
Fibonacci(0)=0
Fibonacci(1)=1
Fibonacci(n)=Fibonacci(n-1)+Fibonacci(n-2)
//Nombre del programa: fibonacci.cpp
#include <conio.h>
#include<iostream.h>
class Recursividad
{ int dato;
public:
void leer()
{
cout<< Digite un numero: ;
cin>>dato;
}
void mostrar ()
{ cout<< El numero fibonacci de <<dato<< es: <<fibonacci(dato);
}
long fibonacci(long n)
{
if(n==0 || n==1)
return n;
else

Programacin Orientada a Objetos en C++

30

return fibonacci(n-1)+fibonacci(n-2); // caso recursivo


}
};
void main()
{
Recursividad objeto;
objeto. leer();
objeto. mostrar();
getch();
}

Nota: en el mtodo fibonacci() se realiza la recursividad, dado que este se llama asi mismo
directamente, por ejemplo s digitamos el numero 3 y evaluamos fibonacci(3) se realizaran
dos llamadas recursivas: fibonacci(2) y fibonacci(1).
Ejercicios Propuestos
1. Realizar un programa que utilice mtodos que capture un nmero e imprima el factorial
de este.
2. Utilizando mtodos realizar un programa que capture tres nmeros e imprima la media
de los nmeros en el programa principal.
3. Utilizando mtodos realizar un programa que capture dos nmeros por medio de un
mtodo e imprima el mayor de los dos en otro mtodo.
4. Utilizando mtodos realizar un programa que capture un numero e imprima si es
perfecto o no. Un nmero es perfecto si la suma de sus factores incluyendo el 1 es igual
al nmero. Ej: 6= 3+2+1.
5. Realizar un programa que capture los valores de a,b,c y por medio de un mtodo halle
las races de una ecuacin de segundo grado.
6. Utilizando mtodos realizar un programa que capture dos numeros enteros y retorne la
multiplicacin de estos por medio de sumas sucesivas.
7. Utilizando mtodos recursivas realizar un programa que genere la siguiente serie:
1,3,4,7,11,18,29,47........
8. Crear un programa que contenga un mtodo que reciba un nmero entero y retorne el
nmero con sus dgitos invertidos. Ejemplo: dado el nmero 7631 el mtodo deber
retornar 1367.
9. Realizar un programa que contenga mtodos para obtener el cambio ptimo (minimo
numero de monedas posible) de una cantidad entera positiva en monedas de 100, 50,
25, 5 y 1 peso.
10. Realizar un programa que decida si dos nmeros son amigos. Dos nmeros son amigos
si la suma de los divisores del primer numero, excluido el, es igual al segundo numero,
y viceversa; es decir, si la suma de los divisores del segundo numero, excluido el, es
igual al primer numero.

Programacin Orientada a Objetos en C++

31

ARREGLOS
Un arreglo es un grupo de posiciones de memoria contiguas, que poseen el mismo nombre
y el mismo tipo de dato. Para referirnos a un elemento del arreglo especificamos el nombre
del arreglo y el nmero de la posicin del elemento en el arreglo. El primer elemento del
arreglo es el elemento numero cero (0). l numero de la posicin en corchetes recibe el
nombre de subndice, un subndice debe ser un entero.
Arreglos de una Dimension o Unidimensionales
Un arreglo de una dimension se conoce como vector, para la declaracion de un vector en
C++ se tiene la siguiente sintaxis:
<Tipo de dato> <nombre del arreglo> [<numero de elementos>];
int
mercanca
[12];

Tambin podemos inicializar los vectores, de la siguiente manera:


int ventas[5]={100,254,478,125,458};
float ventas[5]={100.0,254.25,36.23,25.2,258.47};

Ejemplo: Hacer un programa que lea diez nmeros e imprima la suma de estos, el
promedio y los nmeros mayores del promedio.
//Nombre del programa: lista.cpp
#include <conio.h>
#include<iostream.h>
class Lista
{ int m[10],suma,i;
public:
void leer();
void mostrar( );
};
void Lista::leer()
{ suma=0;
for(i=0;i<10;i++)
{
cout<<Digite un numero entero:;
cin>>m[i] ;
suma=suma+m[i];
}
}
void Lista::mostrar()
{ float promedio;
cout<<La suma de los nmeros es:<<suma<<endl;
promedio=suma/10;
cout<<El promedio es:<<promedio<<endl;
cout<<Los nmeros mayores del promedio son:<<endl;

Programacin Orientada a Objetos en C++

32

for(i=0;i<10;i++)
{
if(m[i]>promedio)
cout<<m[i]<< - ;
}
}
void main()
{
Lista objeto;
objeto.leer();
objeto.mostrar();
getch();
}

Arreglos de ms de una dimensin Multidimensionales


Un arreglo puede ser definido de dos, tres o ms dimensiones, este tipo de arreglos se
denominan matrices. La sintaxis para declarar una matriz es:
<tipo de dato> <Nombre de la matriz> [fila][columna];
int
matriz [4][5];

Tambin podemos inicializar las matrices, de la siguiente forma:


int ventas[2][3]={10,25,47,
12,45,38};

Ejemplo: Hacer un programa que capture numeros enteros en una matriz de 3 filas por 2
columnas e imprima la suma de cada fila y de cada columna.
//Nombre del programa: matriz.cpp
#include<iostream.h>
#include<conio.h>
class Matriz{
private:
int i,j,a[3][2];
public:
void capturar();
void mostrar();
};
void Matriz::capturar()
{
for(i=0;i<3;i++)
{
for(j=0;j<2;j++)
{ cout<<"Digite nmero";
cin>>a[i][j];
}

Programacin Orientada a Objetos en C++

33

}
}
void Matriz::mostrar()
{ int filas=0,columnas=0;
for(i=0;i<3;i++)
{ filas=0;
for(j=0;j<2;j++)
{
cout<<a[i][j] <<"\t";
filas+=a[i][j];
}
cout<< " La suma de la fila es:"<<filas;
cout<<endl;
}
for(i=0;i<2;i++)
{ columnas=0;
for(j=0;j<3;j++)
columnas+=a[j][i];
cout<<" La suma de la columna es:"<<columnas;
cout<<endl;
}
}
void main()
{clrscr();
Matriz objeto;
objeto.capturar();
objeto.mostrar();
getch();
}

Envio de Arreglos a Mtodos


Para enviar arreglos a un mtodo debemos pasar el nombre del arreglo y l numero de
elementos de este. El mtodo lo recibe con el mismo tipo de dato con el que fue creado y
con el nmero de elementos del arreglo.
-

Creacin del Arreglo

Paso al mtodo

Recibo en el mtodo

int m[5];
Funcion(m,5);
Funcion(int m[],int x)

Ejemplo: Realizar un programa que capture 10 nmeros enteros y los ordene de mayor a
menor.
//Nombre del programa: arrefunc.cpp
#include <conio.h>
#include<iostream.h>
class Numero

Programacin Orientada a Objetos en C++

34

{
public:
void lee(int a[],int n);
void ordenar(int a[],int n);
void mostrar(int a[],int n);
};
void Numero::lee(int a[],int n)
{
int i;
for(i=0;i<n;i++)
{
cout<<Digite un numero entero:;
cin>>a[i] ;
}
}
void Numero:: ordenar(int a[], int n)
{
int i,j,aux;
for(i=0;i<n;i++)
{
for(j=i;j<n;j++)
{
if(a[i]<a[j])
{
aux=a[i];
a[i]=a[j];
a[j]=aux;
}
}
}
}
void Numero::mostrar(int a[],int n)
{
int i;
cout<<Arreglo ordenado<<endl;
for(i=0;i<n;i++)
{
cout<<a[i]<< ;
}
}
main()
{
int m[10],x;
Numero objeto;
cout<<"Digite el tamao"<<endl;
cin>>x;
objeto.lee(m,x);
objeto. ordenar (m,x);
objeto.mostrar(m,x);
getch();
}

Programacin Orientada a Objetos en C++

35

Ejercicios Propuestos
1. Escribir un programa que permita obtener el nmero de elementos positivos de un
vector de 10 elementos.
2. Calcular el nmero de elementos negativos, cero y positivos de un vector dado 20
elementos.
3. Calcular la suma de los elementos de sus diagonales en una matriz cuadrada. Se debe
capturar la dimensin de la matriz.
4. Se dispone de las notas de 40 alumnos. Cada uno de ellos puede tener una o varias
notas. Escribir un programa que permita obtener la media de cada alumno y la media de
la clase a partir de la entrada de las notas desde el teclado.
5. Se dispone de una lista de 100 nmeros enteros. Calcular su valor mximo y el orden
que ocupan en el vector.
6. Hacer un programa que le permita insertar o eliminar elementos de un arreglo (los
elementos deben mostrarse como se ingresaron).
7. Leer una matriz cuadrada A. Calcular si la matriz es simtrica. Se considera una matriz
simtrica si A[i,j]=A[j,i] y esto se cumple para todos los elementos i, j de la matriz.
8. Sean A[m,n] y B[n], una matriz y un arreglo respectivamente, haga un programa que
asigne valores a A , a partir de B teniendo encuenta los siguientes criterios
a) A[i,j]=[i] si i<=J
b) A[i,j]=0 si i>j
9. Haga un programa que intercambie las filas de una matriz. Los elementos de la fila 0
deben intercambiarse con los de la fila N, la fila 1 con los de la fila N-1 y as
sucesivamente. Imprimir las dos matrices.
10. Se Tiene un arreglo unidimensional C de N elementos, calcular:
x El numero de datos repetidos en el arreglo
x El numero de valores impares
x El numero de valores pares
x La cantidad de ceros.

Programacin Orientada a Objetos en C++

36

CADENA DE CARACTERES
En algunos programas es necesario utilizar cadenas de caracteres para guardar nombres de
usuario, nombres de archivos y alguna otra informacin basada en caracteres. Para declarar
una cadena de caracteres dentro de un programa solamente es necesario crear un arreglo de
tipo char con los suficientes elementos para guardar la informacin requerida. El primer
elemento ira en la posicin cero (0) y l ultimo elemento ser un carcter nulo, el cual, no
se debe contar como informacin sino como un elemento que permite saber hasta donde
existe informacin en el arreglo y se simboliza por \0. Este carcter nulo es necesario para
recorrer el arreglo carcter por carcter.
Ejemplo:
char nombre[64] ;

Este arreglo guarda 64 caracteres del 0 al 63 y la posicin 63 deber contener el carcter


nulo. Si no se alcanza a llenar el arreglo, el carcter nulo debe ir en la siguiente posicin
donde termina la informacin.
Ejemplo: Hacer un programa que capture una cadena de caracteres y la imprima por
pantalla.
//Nombre del programa: cadena.cpp
#include <conio.h>
#include<iostream.h>
class Cadena{
char nombre[64];
public:
void leer();
void mostrar();
};
void Cadena::leer()
{
cout<<Digite su nombre;
cin>>nombre;
}
void Cadena::mostrar()
{
cout<<nombre;
}
void main()
{ Cadena objeto;
objeto.leer();
objeto.mostrar();
getch();
}

En el anterior ejemplo se captura una cadena de caracteres y al pulsar enter se guarda el


carcter nulo en la siguiente posicin donde termina la informacin. Si al digitar la

Programacin Orientada a Objetos en C++

37

informacin utiliz espacios, solamente se imprimir en pantalla la informacin hasta


donde se realizo el primer espacio.
- Si digito: CLASEDEC++
- Imprimir: CLASEDEC++
- Si digito: CLASE FCIL
- Imprimir: CLASE
Si se desea imprimar la informacin y que se incluyan los espacios se puede corregir el
programa de dos formas:
Ejemplo A:
//Nombre del programa: cadena2.cpp
#include <conio.h>
#include<iostream.h>
class Cadena{
char nombre[64];
public:
void leer();
void mostrar();
};
void Cadena::leer()
{
cout<<Digite su nombre;
cin.getline(nombre,sizeof(nombre));
}
void Cadena::mostrar()
{
cout<<nombre;
}
void main()
{ Cadena objeto;
objeto.leer();
objeto.mostrar();
getch();
}

Ejemplo B:
//Nombre del programa: cadena3.cpp
#include <conio.h>
#include<stdio.h>
#include<iostream.h>
class Cadena{
char nombre[64];
public:
void leer();
void mostrar();
};

Programacin Orientada a Objetos en C++

38

void Cadena::leer()
{
cout<<Digite su nombre;
gets(nombre);
}
void Cadena::mostrar()
{
cout<<nombre;
}
void main()
{ Cadena objeto;
objeto.leer();
objeto.mostrar();
getch();
}

En el Ejemplo A se utiliza el metodo cin.getline(), el cual permite imprimir en pantalla


todos caracteres incluidos los espacios.
En el Ejemplo B se utiliza el metodo gets() que pertenece a la librera stdio.h (se debe
incluir en el programa) y permite imprimir una cadena de caracteres incluidos sus espacios.
Envio de cadena de caracteres a mtodos
Para pasar cadena de caracteres a un mtodo es semejante a pasar un arreglo como
parmetro. Dentro del mtodo simplemente se especifica el tipo de dato (char) el nombre y
las llaves. No es necesario definir el tamao del arreglo.
Ejemplo: Hacer un programa que utilice paso de cadenas a mtodos y permita capturar una
cadena e imprima carcter por carcter, como tambin la longitud de esta.
#include<iostream.h>
#include<conio.h>
#include<stdio.h>
//Nombre del programa : cadena4.cpp
class Cadena
{
public:
void leer(char cad[]);
void mostrar(char cad[]);
};
void Cadena::leer(char cad[])
{
cout <<"Digite cadena"<<endl;
gets(cad);
}
void Cadena::mostrar(char cad[])
{
for(int i=0;cad[i]!='\0';i++)
cout<<cad[i];
cout<<endl;
Programacin Orientada a Objetos en C++

39

cout<<"La longitud es :"<<i<<endl;


}
void main(void)
{
clrscr();
char c[100];
Cadena objeto;
objeto. leer(c);
objeto.mostrar(c);
getch();
}

Programacin Orientada a Objetos en C++

40

Vous aimerez peut-être aussi