Académique Documents
Professionnel Documents
Culture Documents
INTRODUCCIN
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:
Nombre_clase
Atributos
Mtodos
Planeta
nombre, dimetro, distancia,
movimiento, etc.
leer(), calcular(),mostrar()
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
Es un mtodo que permite comunicar al exterior o al interior cierta informacin que almacenan las
caractersticas del objeto
Cuadro comparativo
Aspectos
Programacin
Procedural
Programacin
Estructurada
Programacin
Orientada a Objetos
TAD
(Tipos Clase (Estructura ms
abstractos de datos), funcionalidad)
Estructura
independiente de la
funcionalidad
Organizacin
cdigo
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.
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
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++ ,
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
Operador
Expresin en C++
+
*
/
%
numero +7
numero -7
numero1 * numero2
numero1 / numero2
numero1 % numero2
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
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
Significado
La variable incrementara su valor en 3 unidades
La variable decrementara su valor en 5 unidades
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;
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
asm
auto
break
case
catch
char
class
const
continue
default
delete
do
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.
12
\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
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().
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
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.
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
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();
}
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
18
(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(); }
19
(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(); }
20
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;
2) do {
instrucciones;
instruccin;
do{
instrucciones;
}while(cond verdadera);
}while(cond. Verdadera);
}while(condicin verdadera);
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() ;
}
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++)
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();
}
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.
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
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();
}
26
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();
}
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();
}
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
30
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.
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];
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;
32
for(i=0;i<10;i++)
{
if(m[i]>promedio)
cout<<m[i]<< - ;
}
}
void main()
{
Lista objeto;
objeto.leer();
objeto.mostrar();
getch();
}
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];
}
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();
}
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
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();
}
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.
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] ;
37
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();
};
38
void Cadena::leer()
{
cout<<Digite su nombre;
gets(nombre);
}
void Cadena::mostrar()
{
cout<<nombre;
}
void main()
{ Cadena objeto;
objeto.leer();
objeto.mostrar();
getch();
}
39
40