Está en la página 1de 81

2

PRINCIPIOS DE
PROGRAMACIN EN C++.
Luis Aldana.

bubok.com
2009. Todos los derechos reservados.
Prohibida la reproduccin parcial o total de esta obra sin previa
autorizacin del autor.

ndice
PRESENTACIN...........................................................................7
OBJETIVO GENERAL...................................................................8
UNIDAD I.......................................................................................9
1.1. INTRODUCCIN AL LENGUAJE C++...............................9
1.2. PROGRAMACIN ORIENTADA A OBJETOS..................11
1.3. ESTRUCTURA BSICA DE UN PROGRAMA..................15
1.4. VARIABLES......................................................................19
1.5. OPERACIONES BSICAS...............................................29
UNIDAD II....................................................................................36
2.1. MANEJO DE DATOS Y ESTRUCTURAS DE CONTROL.36
2.2. SALIDA DE DATOS..........................................................36
2.3. ENTRADA DE DATOS......................................................38
2.4. ENTRADA Y SALIDA DE CARACTERES.........................42
2.5. ESTRUCTURA DE CONTROL IF.....................................46
2.6. ESTRUCTURA DE CONTROL SWITCH..........................56
2.7. ESTRUCTURA DE CONTROL WHILE.............................60
2.8. SENTENCIA DE CONTROL FOR.....................................64
UNIDAD III...................................................................................66
3.1. FUNCIONES....................................................................66
3.2. MACROS..........................................................................71
3.3. RECURSIVIDAD..............................................................74
BIBLIOGRAFA............................................................................77
ACERCA DEL AUTOR.................................................................79

PRESENTACIN.
_____________________________________________________
El presente manual tiene como finalidad que el lector desarrolle
las habilidades necesarias para comenzar a desarrollar sistemas
mediante el uso del lenguaje de programacin C++. Las prcticas
estn diseadas para seguirse de manera secuencial, sin omitir
ninguna.
Este manual no tiene la intencin de sustituir el trabajo extraclase,
ya que sta complementar el trabajo desarrollado. Adems, a lo
largo de todo el manual, se proponen diversos actividades que el
lector podr realizar como parte del trabajo en casa.
Realizar las prcticas y las tareas le ser de gran utilidad al lector
para comprender el complejo proceso de disear aplicaciones de
calidad.
Ing. Luis Aldana.

OBJETIVO GENERAL.
_____________________________________________________
El lector ser capaz de resolver problemas de base cientfica
mediante el diseo, codificacin e implantacin de programas de
computadora en lenguaje C++.
El lector ser capaz de identificar las principales estructuras
control y bifurcacin de la programacin orientada a objetos,
disear estructuras de datos apropiadas para la solucin
problemas y reconocer la semntica y la sintaxis del lenguaje
programacin C++.

de
de
de
de

UNIDAD I
_____________________________________________________

1.1. INTRODUCCIN AL LENGUAJE C++.


Qu diferencia hay entre C y C++?

El comit para el estndar ANSI C fue formado en 1983


con el objetivo de crear un lenguaje uniforme a partir del C
original, desarrollado por Kernighan y Ritchie en 1972, en la ATT.
Hasta entonces el estndar lo marcaba el libro escrito en 1978 por
estos dos autores.
El lenguaje C++ se comenz a desarrollar en 1980. Su autor fue
B. Stroustrup, tambin de la ATT. Al comienzo era una extensin
del lenguaje C que fue denominada C with classes. Este nuevo
lenguaje comenz a ser utilizado fuera de la ATT en 1983. El
nombre C++ es tambin de ese ao, y hace referencia al carcter
del operador incremento de C (++). Ante la gran difusin y xito
que iba obteniendo en el mundo de los programadores, la ATT
comenz a estandarizarlo internamente en 1987. En 1989 se
form un comit ANSI (seguido algn tiempo despus por un
comit ISO) para estandarizarlo a nivel americano e internacional.
En la actualidad, el C++ es un lenguaje verstil, potente y general.
Su xito entre los programadores profesionales le ha llevado a
ocupar el primer puesto como herramienta de desarrollo de
aplicaciones. El C++ mantiene las ventajas del C en cuanto a
riqueza de operadores y expresiones, flexibilidad, concisin y
eficiencia. Adems, ha eliminado algunas de las dificultades y
limitaciones del C original. La evolucin de C++ ha continuado con
la aparicin de Java, un lenguaje creado simplificando algunas
cosas de C++ y aadiendo otras, que se utiliza para realizar

aplicaciones en Internet.
En estas Notas se van a presentar los fundamentos del lenguaje
C++ tradicional a partir del lenguaje C.

10

1.2. PROGRAMACIN ORIENTADA A OBJETOS.


Qu es la Programacin Orientada a Objetos?

 La Programacin Orientada a Objetos (POO) permite


realizar grandes programas mediante la unin de elementos ms
simples, que pueden ser diseados y comprobados de manera
independiente del programa que va a usarlos. Muchos de estos
elementos podrn ser reutilizados en
otros programas.
A estas "piezas", "mdulos" o "componentes", que interactan
entre s cuando se ejecuta un programa, se les denomina objetos.
Estos objetos contienen tanto datos como las funciones que
actan sobre esos datos.
De ordinario, cada uno de estos objetos corresponde a algn
elemento que debe utilizar el programa. Algunos de estos
elementos representan entidades del mundo real (matrices,
personas, cuentas de banco, elementos mecnicos o
elctricos, ...) y otros pueden ser componentes del ordenador
(tanto de software como de hardware: otro programa, un fichero
de disco, una impresora conectada en un puerto, una ventana
abierta en la pantalla, ...). Tambin pueden ser estructuras de
datos: colas, pilas, ... Durante la ejecucin del programa, los
objetos interactan pasndose mensajes y respuestas.
Es fundamental darse cuenta de que un objeto no necesita
conocer el funcionamiento interno de los dems objetos para
poder interactuar con ellos (igual que el hombre no necesita
conocer cmo funciona por dentro un televisor o un ordenador
para poder utilizarlos), sino que le es suficiente con saber la forma
en que debe enviarle sus mensajes y cmo va a recibir la
respuesta (al hombre le puede ser suficiente con saber cmo
11

funcionan el interruptor, el dial del volumen y los botones de


cambio de canal para utilizar un televisor).
Sucede a menudo que hay que utilizar varios ejemplares anlogos
de un determinado elemento u objeto (por ejemplo varias
ventanas en la pantalla del PC, varios usuarios, varios clientes,
varias cuentas corrientes de un banco, etc.). La definicin
genrica de estos objetos anlogos se realizar mediante la clase.
As, una clase contiene una completa y detallada descripcin de la
informacin y las funciones que contendr cada objeto de esa
clase. Las clases de C++ se pueden ver como una generalizacin
de las estructuras de C.
En C++ las clases son verdaderos tipos de datos definidos por el
usuario y pueden ser utilizados de igual manera que los tipos de
datos propios del C++, tales como int o float. Los objetos son
a las clases como las variables a los tipos de variables. Un objeto
tiene su propio conjunto de datos o variables miembro, aunque no
de funciones, que aunque se aplican a un objeto concreto son
propias de la clase a la que pertenece el objeto.

Clases, mtodos y objetos.

En ANSI C las funciones son algo relativamente independiente de


las variables, y constituyen el centro del lenguaje. Se dice por eso
que C es un lenguaje algortmico (o procedural, en ingls).
Cualquier funcin se puede comunicar con las dems a travs de
variables globales, del valor de retorno y de los argumentos,
pasados por valor o por referencia. Esta facilidad para
comunicarse con otras funciones hace que se puedan producir
efectos laterales no deseados.
En un Lenguaje Orientado a Objetos tal como el C++, el centro del
lenguaje no son las funciones sino los datos, o ms bien los
objetos, que contienen datos y funciones concretas que permiten
manipularlos y trabajar sobre ellos. Esto hace que la mentalidad
12

con la que se aborda la realizacin de un programa tenga que ser


muy diferente.
Para proteger a las variables de modificaciones no deseadas se
introduce el concepto de encapsulacin, ocultamiento o
abstraccin de datos. Los miembros de una clase se pueden
dividir en pblicos y privados. Los miembros pblicos son
aquellos a los que se puede acceder libremente desde fuera de la
clase. Los miembros privados, por el contrario, solamente
pueden ser accedidos por los mtodos de la propia clase.
De ordinario una clase ofrece un conjunto de funciones pblicas a
travs de las cuales se puede actuar sobre los datos, que sern
privados. Estas funciones o mtodos pblicos constituyen la
interface de la clase. De esta forma se garantiza que se hace
buen uso de los objetos, manteniendo la coherencia de la
informacin. Esto sera imposible si se accediera libre e
independientemente a cada variable miembro. Al usuario le es
suficiente con saber cmo comunicarse con un objeto, pero no
tiene por qu conocer el funcionamiento interno del mismo. En C+
+ los mtodos de una clase pueden ser funciones u operadores.
Todo esto se estudiar en detalle ms adelante.

13

ACTIVIDAD EXTRACLASE 1.1.

Responde las siguientes preguntas con tus propias palabras de


acuerdo a las lectura de los dos temas anteriores:
1. Cmo se define el Lenguaje C++?

2. Qu diferencia hay entre el Lenguaje C y el C++?

3. Qu es una clase?

4. Qu es un objeto?

5. Qu es un mtodo?

6. Qu es un miembro privado?

7. Qu es un miembro pblico?

14

1.3. ESTRUCTURA BSICA DE UN PROGRAMA.


Cul es la estructura bsica de un programa?

ACTIVIDAD EN CLASE 1.1.

Realice el siguiente programa en C++, el cual muestra un mensaje


en pantalla.
#include <iostream.h>
int main(void){
cout<<"hola mundo"<<endl;
getchar();
return 0;
}

RESPONDA:

1. Justifique con sus propias palabras el funcionamiento del


programa:

15

2. Cul es la versin de este programa en Lenguaje C?

Analicemos cada parte de nuestro primer programa.


#include <iostream.h>
La parte del #include se refiere a la biblioteca de funciones que
vamos a utilizar. Es decir, para llamar a una biblioteca en particular
debemos hacer lo siguiente:
#include <librera_solicitada>
El estndar de C++ incluye varias bibliotecas de funciones, y
dependiendo del compilador que se est usando, puede aumentar
el nmero.
int main(void){
Todo programa en C++ comienza con una funcin main(), y slo
puede haber una.

16

En C++ el main() siempre regresa un entero, es por eso se


antepone int a la palabra main. Los parntesis que le siguen
contienen lo que se le va a mandar a la funcin. En este caso se
puso la palabra void que significa vaco, es decir que a la funcin
main no se le est mandando nada, podra omitirse el void
dentro de los parntesis, el compilador asume que no se enviar
nada. La llave que se abre significa que se iniciar un bloque de
instrucciones.
cout<<hola mundo<<endl;
Esta es una instruccin. La instruccin cout est definida dentro
de la biblioteca iostream.h, que previamente declaramos que
bamos a utilizar. Una funcin, en este caso main() siempre
comienza su ejecucin con una instruccin (la que se encuentra
en la parte superior), y contina as hasta que se llegue a la ltima
instruccin (de la parte inferior). Para terminar una instruccin
siempre se coloca punto y como (;). Pero adems de
instrucciones se pueden invocar funciones definidas por el usuario
(por supuesto diferentes de main) como se ver mas adelante.
return 0;
Esta es otra instruccin, en este caso la instruccin return
determina que es lo que se devolver de la funcin main().
Habamos declarado que main devolvera un entero, as que la
instruccin return devuelve 0. Lo cual a su vez significa que no
han ocurrido errores durante su ejecucin.
}
La llave de cierre de la funcin main() indica el termino del
bloque de instrucciones.
En algunos programas de ejemplo, notars el uso de dobles
diagonales (//). Estas diagonales se usan para escribir
comentarios de una lnea dentro del cdigo del programa. Adems
podrs encontrar el uso de /* */ estos caracteres encierran un
17

comentario de varias lneas y cualquier cosa que se escriba dentro


de ella no influenciar en el desempeo del programa.
Tambin vers que muchas veces utilizaremos una diagonal
invertida (\). Este signo se utiliza cuando una instruccin ocupar
varias lneas y por razones de espacio en la hoja es mejor dividirla
en partes.

18

1.4. VARIABLES.
Qu es y para que sirve una variable?
En la seccin anterior vimos la forma general de un programa, un
programa sumamente sencillo. Ahora veamos un programa muy
parecido al anterior:

ACTIVIDAD EN CLASE 1.2.

Realice el siguiente programa en C++:


#include <iostream.h>
int main( ){
int variable;
variable=5;
cout<<variable;
getchar();
return 0;
}

RESPONDA:

1. Qu hace y cmo funciona el programa anterior?

2. Cul es la salida del programa?

19

3. Qu sucede si se elimina la linea int variable?

Notemos en esta ocasin slo la parte: int variable; . A esta


seccin se le denomina declaracin. Se trata de la declaracin de
una variable de nombre variable.
Una variable es una posicin de memoria con nombre que se usa
para mantener un valor que puede ser modificado por el
programa. Las variables son declaradas, usadas y liberadas. Una
declaracin se encuentra ligada a un tipo, a un nombre y a un
valor.
Bsicamente, la declaracin de una variable presenta el siguiente
aspecto:
tipo nombre [=valor];
Los corchetes significan que esa parte es opcional. Por ejemplo, la
declaracin:
int mi_variable=5;
Declara una variable tipo entero de nombre mi_variable y le
asigna el valor 5.
C++ es sensible a maysculas y minsculas, as que si el nombre
de nuestra variable empieza con una letra en maysculas,
debemos de asegurarnos que durante el resto del cdigo nos
refiramos a ella exactamente como la escribimos. Los nombres de
20

las variables no pueden usar signos de puntuacin, slo


caracteres A-Z, a-z, _, 09, aunque ningn nombre debe comenzar con un nmero (0-9).
Adems no se deben de repetir nombres de variables en el mismo
contexto.
Adems de las restricciones anteriores, existe otra, y esta tiene
que ver con las palabras reservadas del lenguaje, que no son
muchas a comparacin de otros lenguajes. Las palabras que se
presentan en la siguiente lista, no pueden ocuparse como
nombres de variables, funciones, u otras instrucciones definidas
por el programador.
and, and_eq, asm, auto,bitand, bitor, bool,
break, case, match, char, class,compl., const,
const_cast,
continue,
default,
delete,
do,
Double,dynamic_cast,
else,
enum,
explicit,
export, extern, false, float,for, friend, goto,
if, inline, int, long, mutable,namespace, new,
not,
not_eq,
operator,
or,
or_eq,
private,protected,
public,
register,
reinterpret_cast,
return,
short,
signed,
sizeof,static,
static_cast,
struct,
switch,
template, this, throw, true,try, typedef, typeid,
typename, union, unsigned, using, virtual, void,
volatile, wchar_t ,while,xor, xor_eq.
Las variables se pueden declarar en tres sitios bsicos: dentro de
las funciones (ya sea la funcin main u otras creadas por el
programador), estas variables son llamadas locales; en la
definicin de parmetros de una funcin, como se ver ms
adelante; y fuera de todas las funciones, variables globales.

21

ACTIVIDAD EN CLASE 1.3.

Realice el siguiente programa en C++:


#include <iostream.h>
int variable_global=10;
int main(){
int variable_local=20;
cout<<"\nprograma que muestra los usos de
variables "\
"globales y locales\n"<<endl;
cout<<"la variable global tiene asignado un:
"\
<<variable_global<<endl;
cout<<"\nla variable local tiene asignado
un: "\
<<variable_local<<endl;
getchar();
return 0;
}

RESPONDA:

1. Cul es y qu valor tiene la variable global?

2. Cul es y qu valor tiene la variable local?

22

Una variable global puede ser modificada en cualquier parte del


programa, mientras que una variable local slo puede ser
modificada y utilizada dentro de la funcin en la que se ha
declarado. Por supuesto, antes de utilizar una variable y hacer
operaciones con ella, hay que declararla.
Por lo general, siempre se trata de utilizar lo menos posible la
declaracin de variables globales. El siguiente ejemplo muestra
que se pueden declarar variables en cualquier parte del programa,
siempre y cuando se declaren antes de usarlas.

23

ACTIVIDAD EN CLASE 1.4.

Realice el siguiente programa:


#include <iostream.h>
int main( ){
int variable1=10;
cout<<"la variable 1 local tiene almacenado
un: "\
<<variable1<<endl;
variable1=50;
int variable2=variable1+30;
cout<<"\nla variable 2 almacena un: "\
<<variable2<<endl;
getchar();
return 0;
}

RESPONDA:

1. Qu valor tiene la variable 1?


2. Qu valor tiene la variable 2?
3. La variable 1 es global o local?
4. La variable 2 es global o local?
En un programa puede que necesitemos declarar un dato y
24

asignarle un nombre, pero que ste no pueda ser modificado. En


este caso debemos declarar una constante.
Por ejemplo, el siguiente programa calcula el rea de un crculo.

25

ACTIVIDAD EN CLASE 1.5.

#include <iostream.h>
int main( ){
const float pi=3.141592;
int radio=5;
float area;
area=pi*radio*radio;
cout<<"el
"<<area<<endl;

area

del

circulo

es:

getchar();
return 0;
}

RESPONDA:

1. Cul es la constante en el programa anterior y qu valor


guarda?

2. Cul es la salida del programa?

26

Los diferentes tipos de datos, es decir, los tipos de variables que


podemos declarar son los siguientes:

27

ACTIVIDAD EXTRACLASE 1.2.

Responda las siguientes preguntas de acuerdo a lo visto en clase:


1. Cul es la utilidad de una variable?

2. Cul es la utilidad de una constante?

3. Describa brevemente al menos tres tipos de datos diferentes?

4. Corrija los errores en el siguiente fragmento de cdigo:


#include <strem.h>
int main(){
cout>> "Hola mundo"
getchar;
return;
{
El programa corregido debe ser:

28

1.5. OPERACIONES BSICAS.


En qu casos son tiles los operadores aritmticos en
programacin?
En ejemplos anteriores ya hicimos uso de algunos operadores, +
y *, suma y multiplicacin respectivamente.

 ACTIVIDAD EN CLASE 1.6.


Realice el siguiente programa:
#include <iostream.h>
int main( ){
int a=5, b=10, c=20, r;
r=a+b; a=c%r; //aqu a valdr 5(resto de
20/15)
c=b-a;
a=a*2;

29

cout<<"a="<<a<<"
r="<<r<<endl;

b="<<b<<"

c="<<c<<"

cout<<"la suma de a y b es: "<<a+b<<endl;


getchar();
return 0;
}

30

RESPONDA:

1. Cul es la salida del programa anterior?

2. Qu significa la expresin a=c%r;?

3. Cules son los valores de a, b, c y r, respectivamente?

Estos operadores no son exclusivos de los tipos de datos


numricos. Un dato tipo char tambin es modificable mediante
operadores. Recuerda que lo que se guarda es el cdigo ASCII.

ACTIVIDAD EXTRACLASE 1.3.

Realiza la lectura del siguiente link referente al cdigo ASCII:


http://es.wikipedia.org/wiki/ASCII. La tabla completa de dicho
cdigo imprimela o guardala para poder realizar la siguiente
actividad en clase.

31

ACTIVIDAD EN CLASE 1.7.

Realice el siguiente programa:


#include <iostream.h>
int main( ){
char car1='a', car2;
car2=car1+15;
cout<<"car2="<<car2<<endl;
car1=car2-10;
cout<<"car1="<<car1<<endl;
cout<<"la
es:"<<car1+car2<<endl;

suma

de

los

dos

car1=car1-car2;
cout<<"car1="<<car1<<endl;
getchar();
return 0;
}

RESPONDA:

1. Cul es la salida del programa anterior y por qu se obtienen


esos resultados (apoyate en tu tabla ASCII)?

32

En estos dos ltimos ejemplos, note las siguientes instrucciones:


a=a*2;
car1=car1-car2;
Ambas pueden escribirse de una mejor forma:
a*=2;
car1-=car2;
Podra decirse que es una abreviatura de cdigo. El operador
seguido de la asignacin.
Ahora conozcamos a otros operadores muy tiles. ++ y --.
stos tienen la funcin de aumentar y disminuir en uno al dato que
opera. Pero su comportamiento depende de si sea en prefijo
(antes del operando) o sufijo (despus de).

ACTIVIDAD EN CLASE 1.8.

Realice el siguiente programa:


#include <iostream.h>
int main( ){
int a,b,c;
a=17*5+2;
multiplicacin

//primero

resuelve

la

cout<<"a="<<a<<endl;

33

b=a++ - 7;
//a-7=80, luego se incrementa la variable a
cout<<"b="<<b<<endl;
c=++b * --a;
//se incremente b a 81,
//luego disminuye a a 87, luego evala b*a
cout<<"c="<<c<<endl;
getchar();
return 0;
}

RESPONDA:

1.Cul es la salida del programa y por qu se obtienen dichos


resultados?

2. Haz una tabla en donde especifique los valores de a, b y c,


antes y despus de ser modificados?

34

ACTIVIDAD EXTRACLASE 1.4.

Responda las siguientes preguntas de acuerdo a lo visto en clase:


1. Cul es la versin compacta de a = a * 5?
2. Cul es la versin compacta de a = a - b?
3. En el cdigo int a = 5; a *= 5, el valor de a es:
4. En el cdigo int a = 0; a += 10, el valor de a es:
5. En el cdigo int a = 9; a -= 3, el valor de a es:

35

UNIDAD II
_____________________________________________________

2.1. MANEJO DE DATOS Y ESTRUCTURAS DE


CONTROL.
Qu es un dato y cmo se puede manipular?
En los programas hechos hasta el momento, hemos utilizado la
instruccin cout<< para mandar mensajes a la pantalla.
La mayora de los programas en C++ incluyen el archivo de
encabezado
<iostream.h>, el cual contiene la informacin bsica requerida
para todas las operaciones de entrada y salida (E/S) de flujo.

2.2. SALIDA DE DATOS.


Cuando usamos la instruccin:
cout<<"Mensaje a la pantalla"<<endl;
Estamos enviando una cadena de caracteres (Mensaje a la
pantalla) al dispositivo de salida estndar (la pantalla). Luego, el
manipulador de flujo endl da el efecto de la secuencia de escape
\n.

ACTIVIDAD EN CLASE 2.1.

Realice el siguiente programa:

36

#include <iostream.h>
int main(){
cout<<"cadena de caracteres"<<endl;
cout<<2+2<<endl; //imprime un entero
cout<<9/2<<endl; //imprime un flotante
cout<<(int)(3.141592+2)<<endl; //imprime un
entero
getchar();
return 0;
}

RESPONDA:

1. Cul es la salida del programa anterior?

2. Cul es el funcionamiento del programa?

La instruccin cout<< puede imprimir tanto nmeros enteros


como flotantes sin necesidad de decirle especficamente el tipo de
datos del que se trata, pero, por supuesto notemos que al enviarle
una cadena de caracteres esta debe de estar entre comillas.

37

2.3. ENTRADA DE DATOS.


Qu importancia tiene la informacin que proporciona
el usuario a un programa?
La interaccin con el usuario es algo muy importante en la
programacin, imaginemos que en este preciso momento y con
los conocimientos que tenemos hasta ahora, necesitamos hacer
un programa que calcule la distancia a la que caer un proyectil
lanzado a determinada velocidad y ngulo, o simplemente un
programa que calcule las races de una ecuacin cuadrtica. Sera
muy molesto estar cambiando los valores de las variables
directamente en el cdigo para cada caso que queramos calcular.
Por eso debemos ver cuanto antes la forma de leer datos desde
el teclado.
La principal funcin para leer desde el teclado es cin>>, pero es
mejor ver un ejemplo para tener la idea clara.

38

ACTIVIDAD EN CLASE 2.2.

Realice el siguiente programa:


#include <iostream.h>
int main(){
int numero;
char car;
float otroNum;
cout<<"escribe un numero:"<<endl;
cin>>numero;
cout<<"\nel
"<<numero<<endl;

numero

que

tecleaste

es:

cout<<"dame una letra"<<endl;


cin>>car;
cout<<"\ntecleaste: "<<car<<endl;
cout<<"escribe un numero flotante"<<endl;
cin>>otroNum;
cout<<"\neste es: "<<otroNum;
getchar();
getchar();
return 0;
}

39

RESPONDA

1. Cmo funciona la instruccin cin<<?

2. Cmo trabaja el programa anterior?

En resumen, cin es el flujo de entrada asociado al teclado, cout


es el flujo de salida estndar asociado a la pantalla.

40

ACTIVIDAD EXTRACLASE 2.1.

Responda las siguientes preguntas de acuerdo a lo visto en clase:


1. Para qu sirve la expresin cout?

2. Para qu sirve la expresin endl?

3. La expresin cout sirve para mostrar cualquier tipo de dato?


Si, no, por qu?

4. Cmo puede unir varios datos con una sentencia cout?

5. Para qu sirve la expresin cin?

6. La expresin cin sirve para pedir cualquier tipo de dato? Si,


no, por qu?

41

2.4. ENTRADA Y SALIDA DE CARACTERES.


La funcin de lectura desde el teclado cin no es la nica que
existe. Hay otros mtodos de lectura desde el teclado para la
lectura de caracteres.
Ahora veamos un ejemplo.

ACTIVIDAD EN CLASE 2.3.

#include <iostream.h>
int main(){
char caracter,nombre[20], apellido[20];
char seg_apellido[20];
cout<<"Teclea tu nombre por favor"<<endl;
cin.get(caracter);
cin.get(nombre,20,' ');
cin.get();
cin.get(apellido,20,' ');
cin.get();
cin.get(seg_apellido,20);
cout<<caracter<<"Tu
es:"<<caracter<<endl;

letra

inicial

42

cout<<"tu
"<<caracter<<nombre<<endl;

nombre

es:

cout<<"tu
"<<apellido<<endl;

apellido

paterno

es:

cout<<"tu
"<<seg_apellido<<endl;

apellido

materno

es:

cout<<"Escribe el nombre de tu empresa:


"<<endl;
cin.ignore();
cin.getline(nombre,20);
cout<<"el nombre de tu empresa: "<<nombre<<"
tiene " <<cin.gcount()<<" caracteres"<<endl;
cin.get(); //espera que oprimas enter para
terminar
return 0;
}

RESPONDA:

1. Cmo funciona el programa?

2. Para qu sirve la instruccin cin.get();?

43

3. Qu sucede si cambias cin.get() por getchar();?

4. Qu diferencia hay entre cin.get() y getchar();?

Primero declaramos una variable char, y 3 variables de cadenas


de caracteres.
Pide al usuario que teclee su nombre completo, para luego leer
inmediatamente el primer carcter que teclea y lo almacena en la
variable caracter. Sigue leyendo y almacena lo que escribe en
la variable nombre hasta que encuentre un espacio o llegue a 20
caracteres. Luego, otra instruccin get se encarga de leer y
desechar el
carcter espacio, para nuevamente leer hasta encontrar otro
espacio.
Deja de leer hasta que se presione enter, hayas escrito o no tus
dos apellidos. As que cuando oprimes enter, carecer tiene tu
letra inicial y la presenta en pantalla, para aparecer tu nombre
imprime caracter seguido de nombre, porque a sta ltima no
almacen el primer carcter. Las siguientes instrucciones son
parecidas hasta que pide el nombre de tu empresa.
La funcin ignore descarta del flujo el carcter de terminacin,
para luego permitir a getline() leer el nombre de tu empresa
con un mximo de 20 caracteres o hasta que oprimas enter (pero
no lo guarda). Se escribe el nombre y con gcount() presenta
los caracteres ledos. Finalmente espera que oprimas enter para
terminar el programa.

44

ACTIVIDAD EXTRACLASE 2.2.

Responde las siguientes preguntas con tus propias palabras:

1. Para qu sirve la instruccin cin.get();?

2. Para qu sirve la instruccin cin.ignore();?

3. Qu hace la instruccin cin.getline(nombre,20);?

4. Qu hace la instruccin cin.gcount();?

45

2.5. ESTRUCTURA DE CONTROL IF.


En nuestra vida cotidiana qu es una condicin y que
similitud hay en programacin?

En nuestra vida cotidiana, todos tenemos una lgica a


seguir, continuamente tomamos decisiones, y estas decisiones
repercuten en nuestra accin siguiente. Por ejemplo, supongamos
el caso de un estudiante de nivel preparatoria que cursa el sexto
semestre, l est pensando en presentar el examen para la
universidad, sin embargo, sus calificaciones no le han dado
mucho aliento ltimamente, y est en riesgo de tener que repetir
ese semestre, si ocurre eso, el resultado que tenga en el examen
no importar. Lo que valla a pasar marcar el camino a seguir en
su vida.
Analicemos de una forma general este caso:
Curso el sexto semestre, entonces
Presento el examen de admisin
Si paso el examen y adems paso el semestre, entonces
Estar en la universidad
Si paso el semestre pero no paso el examen, entonces
Estar trabajando
Si no paso el semestre, entonces
Curso el sexto semestre (es decir, regresa al principio)
Estas son las opciones que l se plantea, aunque algunos
pensarn en otras ms.
Puede estudiar, trabajar o repetir todos los pasos anteriores.
46

En la programacin tambin se tienen que tomar decisiones que


influirn en el comportamiento del programa, y tambin se pueden
repetir series de pasos hasta obtener un resultado.
Se trata de una estructura de seleccin. Es decir que si se cumple
el condicional se ejecutarn varias instrucciones ms. En el
ejemplo anterior, observamos que:
Si paso el examen y adems paso el semestre
estar en la universidad
Si podemos interpretarlo como el if de cdigo C++
paso el examen y adems paso el semestre es la condicin.
estar en la universidad es la accin a ejecutar.

47

ACTIVIDAD EN CLASE 2.4.

Realice el siguiente programa en C++:


#include <iostream.h>
int main(){
char examen[2],semestre[2];
cout<<"Contesta
preguntas"<<endl;

si

no

las

cout<<"Pasaste el examen?"<<endl;
cin.get(examen,2);
cin.ignore(20,'\n');
cout<<"Pasaste el semestre?"<<endl;
cin.get(semestre,2);
cin.ignore(20,'\n'); //ignora el enter
if((examen[0]=='s')&&(semestre[0]=='s')){
cout<<"estas en la universidad"<<endl;
}
cout<<"fin del programa"<<endl;
cin.get(); //espera a que oprimas enter
return 0;
}

48

RESPONDA:

1. Cul es la salida del programa?

2. Justifique el funcionamiento del programa?

Analicemos lo que nos importa, la sentencia if.


La
condicin
a
cumplir
es:
(examen[0]=
=s)&&(semestre[0]= =s), en realidad se trata de dos
condiciones que se deben de cumplir: que la variable examen
tenga el carcter s y que la variable semestre tenga el carcter s
. Si la primera condicin se cumple, entonces comprueba la
segunda condicin (gracias a la conjuncin lgica &&).
Un condicional regresa 1 en caso de ser verdadero y un 0 en caso
de ser falso, esto dos valores, en C++ estn definidos como tipos
de datos booleanos, true y false respectivamente, as que si el
condicional resulta true (verdadero), se evala la siguiente
instruccin dentro del bloque if, en caso contrario no hace nada.
En el ejemplo anterior el bloque de instrucciones a ejecutar en
caso de ser verdadera la condicin se encuentra dentro de llaves,
pero no es necesario cuando slo se trata de una sola lnea de
cdigo.
Cuando queremos, adems controlar las opciones en caso de que
la condicin resulte falsa, tenemos que incluir aquellas
instrucciones en un bloque else.
49

Por ejemplo, en el cdigo anterior podemos aadir un else a la


sentencia if, de manera que nos quede de la siguiente forma:
if((examen[0]=='s')&&(semestre[0]=='s')){
cout<<"estas en la universidad"<<endl;
}
else{
cout<<"no estas en la universidad"<<endl;
}
Igualmente el bloque de instrucciones a ejecutar se estructura
dentro de llaves, aunque tampoco es necesario cuando se trata de
una sola instruccin.
En ocasiones necesitaremos construir bloques de instrucciones
if y else ms complejos, es decir anidamientos. El ejemplo del
estudiante tambin nos ayudar a visualizar este concepto.
Si paso el examen y adems paso el semestre
Estar en la universidad
Si paso el semestre pero no paso el examen
Estar trabajando
Si no paso el semestre
Curso el sexto semestre
Construyendo mejor esta serie de decisiones, podemos
acomodarla de la siguiente forma, al estilo seudocdigo.
if paso el examen y adems paso el semestre
Estar en la universidad
else
if paso el semestre pero no paso el examen
Estar trabajando
else

50

Curso el sexto semestre


De esta manera controlamos las posibles respuestas que pudiese
dar. En caso de que pase el examen y el semestre estar en la
universidad, si pasa el semestre pero no pasa el examen estar
trabajando, y en cualquier otro caso, cursar el semestre.
Nuestro cdigo ya terminado quedar de la siguiente manera:

51

ACTIVIDAD EN CLASE 2.5.

Realiza el siguiente programa:


#include <iostream.h>
int main(){
char examen[2],semestre[2];
cout<<"Contesta
preguntas"<<endl;

si

no

las

cout<<"Pasaste el examen?"<<endl;
cin.get(examen,2);
cin.ignore(20,'\n');
cout<<"Pasaste el semestre?"<<endl;
cin.get(semestre,2);
cin.ignore(20,'\n'); //ignora el enter
if((examen[0]=='s')&&(semestre[0]=='s'))
cout<<"estas en la universidad"<<endl;
else
if((examen[0]=='n')&&(semestre[0]=='s')
)
cout<<"estaras trabajando"<<endl;
else
cout<<"cursa

el

sexto

semestre"<<endl;

52

cout<<"fin del programa"<<endl;


cin.get(); //espera a que oprimas enter
return 0;
}
En esta ocasin se eliminaron las llaves que no eran necesarias.

53

RESPONDA:

1. Cul es la salida del programa?

2. Justifique el funcionamiento del programa?

ACTIVIDAD EXTRACLASE 2.3.

Responde las siguientes preguntas con tus propias palabras?


1. Qu utilidad tiene la sentencia if?

2. Qu utilidad tiene la sentencia else?

3. Qu diferencia hay entre los cdigos de las actividades 2.5 y


2.4?

54

4. Cules son los errores en el siguiente fragmento de cdigo?


if ( valor == 0 )
cout>>"valor es igual a 1";
else
cout>>"valor es diferente de 0";
El cdigo corregido es:

5. De un ejemplo de dnde utilizar la sentencia if y else, como


el mostrado al inicio de esta seccin.

55

2.6. ESTRUCTURA DE CONTROL SWITCH.


Qu sucede cundo necesitamos usar varios if's?

Muchas veces nos metemos en aprietos cuando


necesitamos tener el control sobre muchas opciones que pudiese
tomar el usuario, porque resulta muy complicado pensar en varios
if/else anidados, para esos casos tenemos otra herramienta
muy cmoda, la estructura de seleccin mltiple switch.
La forma general es:
switch (parmetro a evaluar o comparar){
case a : //cuando el parmetro tiene un
valor a
Acciones a ejecutar;
case b: //cuando el parmetro tiene un valor
b
Acciones a ejecutar
.
.
.
caso por default;
}

ACTIVIDAD EN CLASE 2.6.

Realice el siguiente programa:


#include <iostream.h>
int main(){

56

int opcion;
cout<<"Menu de opciones"<<endl;
cout<<"1.Opcion 1"<<endl;
cout<<"2.Opcion 2"<<endl;
cout<<"3.Opcion 3"<<endl;
cout<<"elige una opcion"<<endl;
cin>>opcion;
switch(opcion){
case 1:
cout<<"ejecucion 1"<<endl;
break;
case 2:
cout<<"ejecucion 2"<<endl;
break;
case 3:
cout<<"ejecucion 3"<<endl;
break;
default:
cout<<"es una opcion no valida"<<endl;
break;
}

cout<<"presiona enter para salir"<<endl;


cin.ignore();
cin.get();
return 0;
}

57

RESPONDA:

1. Cul es el funcionamiento del programa?

Notemos que opcion es una variable de tipo entero, as que


case 1 , se refiere a que la variable opcion tiene un valor de 1.
Si se tratase de una variable de tipo carcter, entonces debera de
escribirse case '1'.
Encontramos una nueva instruccin, break. Esta se encarga de
alterar el flujo de control. Cuando se encuentra un break,
inmediatamente se salta el resto de la estructura. No es exclusiva
de la estructura switch, tambin se puede colocar en bloques
if, for, while o do while (que se vern a continuacin). Sin
embargo es mejor no depender demasiado del break.

58

ACTIVIDAD EXTRACLASE 2.4.

Responda las siguientes preguntas con sus propias palabras:


1. Para qu sirve la instruccin switch?

2. Para qu sirve la instruccin case?

3. Para qu sirve la instruccin default?

4. Para qu sirve la instruccin break?

59

2.7. ESTRUCTURA DE CONTROL WHILE.


Qu es un ciclo?

La sentencia de control while se encarga de repetir un


bloque de cdigo mientras se cumpla una condicin. El bloque de
cdigo se debe de encontrar entre llaves, excepto si es una sola
lnea.
La forma general de esta instruccin es la siguiente:
while (condicin a cumplir) {
acciones a ejecutar;
}
Un ejemplo de ste lo podemos ver en el clculo del promedio de
10 nmeros, pensemos que son las calificaciones del semestre.
Mirando rpidamente la forma de estructurar nuestro programa
(algo que se debe de hacer siempre, y antes de sentarse frente a
nuestro ordenador), podemos pensar en la siguiente solucin:
Declarar variables e inicializarlas
Mientras (no se hagan 10 iteraciones){
Leer una calificacin
Sumarla al total
Determinar que se ha hecho una iteracin
}
calcular el promedio
mostrar el promedio

60

El programa queda como sigue:

ACTIVIDAD EN CLASE 2.7.

#include <iostream.h>
int main(){
int calificacion, suma=0, iteracion=1;
float promedio;
while(iteracion<=10){
cout<<"teclea
"<<iteracion<<endl;
cin>>calificacion;
suma+=calificacion;
++iteracion;
}

tu

calificacion

promedio=(float)suma/(iteracion-1);
cout<<"el promedio de calificaciones es:
"<<promedio<<endl;
cin.ignore();
cin.get();
return 0;
}

RESPONDA.

1. Cul es el funcionamiento del programa?

61

2. Si observas, puedes introducir en el programa cualquier nmero


(negativos o mayores a 10) Cmo haras para que el programa
slo acepte nmeros entre 5 y 10?

62

ACTIVIDAD EXTRACLASE 2.5.

Responda las siguientes preguntas con sus propias palabras:


1. Qu ventajas tiene el uso de la sentencia while?

2. Investiga en Internet qu es y cmo se usa la sentencia dowhile?

63

2.8. SENTENCIA DE CONTROL FOR.


Qu es una operacin secuencial?

El ciclo for es al que ms se recurre cuando se requiere


realizar operaciones secuenciales, en donde se conoce el nmero
de iteraciones o la condicin a comprobar.
La forma general de esta sentencia es:
for(asignacin
inicial
;
instruccin ) {
bloque de instrucciones;
}

condicin

Veamos un ejemplo sencillo:

ACTIVIDAD EN CLASE 2.8.

#include <iostream.h>
int main(){
int i;
for( i = 1; i <= 10; i++ )
cout<<"El doble
"<<i*2<<endl;

de

"<<i<<"

es:

cin.get();
return 0;
}

64

RESPONDA.

1. Haga una tabla en la que se muestre el valor de i en cada


iteracin:

2. Cul es la salida del programa?

3. Cmo haras para que en vez de ser 10 el nmero de veces


que calcula un nmero, sea un nmero determinado por el
usuario?

El programa anterior inicializa la variable i en 1, la incrementa


hasta llegar a diez, en cada incremento calcula el doble de ese
nmero y lo muestra en pantalla.

65

UNIDAD III
_____________________________________________________

3.1. FUNCIONES.
Qu es una funcin?

Cuando tratamos de resolver un problema, resulta muy til


utilizar la filosofa de divide y vencers. Esta estrategia consiste
en dividir nuestro problema en otros ms sencillos.
Cuando realizamos un programa, por ejemplo, en el que se
repetirn varias instrucciones pero con distintos valores que
definan los resultados, podemos construir el programa a base de
funciones. Una funcin es un bloque de instrucciones a las que se
les asigna un nombre. Entonces, cada que necesitemos que se
ejecuten esa serie de instrucciones, haremos una invocacin a la
funcin por medio de ese nombre.
Prototipos.
El prototipo de una funcin se refiere a la informacin contenida
en la declaracin de una funcin. Una funcin debe de estar
definida o al menos declarada antes de hacer uso de ella.
Cuando se declara una funcin debe de especificarse el tipo de
dato que va a devolver, el nombre de la funcin, y los parmetros.
La siguiente declaracin:
int suma(int a, int b);
Especifica una funcin que devuelve un tipo de dato entero, tiene
por nombre suma, y al invocarla, recibe 2 parmetros de tipo

66

entero.
Esta declaracin debe de escribirse antes de la funcin main, y su
definicin puede escribirse despus de sta.
Veamos un ejemplo:

67

ACTIVIDAD EN CLASE 3.1.

Realiza el siguiente programa:


#include <iostream.h>
int suma(int x, int y); //Este es el prototipo
int main(){
int dato1,dato2;
cout<<"calculare la suma de 2 numeros"<<endl;
cout<<"escribe
dos"<<endl;

el

dato

luego

el

cin>>dato1;
cin>>dato2;
cout<<"la
"<<suma(dato1,dato2)<<endl;

suma

es:

cin.ignore();
cin.get();
return 0;
}
int suma(int a, int b){ //Esta es la declaracin
de la funcin
return a+b;
}

68

RESPONDA.

1. Si tecleas los valores 3 y 5 Cul es la salida del programa?

2. Qu sucede si quitas el prototipo de la funcin (la segunda


lnea de cdigo)? A qu se debe?

Observamos que primeramente declaramos la funcin suma para


usarla en el bloque main, y al final del cdigo la definimos.
Podamos haber escrito la funcin completa antes del main.
Paso de argumentos.
Cuando hablamos de argumentos, nos referimos a los valores que
aparecen en la llamada a la funcin. En el ejemplo anterior los
argumentos fueron dato1 y dato2.
Y los parmetros son a y b, los que reciben los datos.
Notemos que el prototipo de la funcin tiene los nombres de los
parmetros distintos a los de la definicin, esto no afectar el
comportamiento del programa, pero se vera mejor si fueran
iguales. Lo que no puede cambiar es el tipo de datos que va a
recibir.

Valores de retorno.
Una funcin puede regresar cualquier tipo de valor excepto tablas
u otras funciones.

69

ACTIVIDAD EXTRACLASE 3.1.

Responde las siguientes preguntas con tus propias palabras:


1. Qu ventajas tiene la utilizacin de funciones?

2. Para qu sirve el argumento de una funcin?

3. Se puede omitir el prototipo de una funcin? Si, no y por


qu?

4. Para qu sirve el valor de retorno de una funcin?

5. Se puede omitir el valor de retorno de una funcin? Si, no,


por qu? y cmo?

70

3.2. MACROS.
Qu es una macro y qu similitud tiene con las
funciones?

Una macro es una parte del cdigo que puede parecer y


actuar como una funcin, se define despus de las libreras
mediante un #define.

Se denominan instrucciones de preproceso porque se ejecutan al


comienzo de la compilacin.
Sin embargo, no hay que abusar de ellas, porque podran
entorpecer el cdigo y hacer lento el programa.

71

ACTIVIDAD EN CLASE 3.2.

Realiza el siguiente programa:


#include <iostream.h>
#define mayor(a,b) (a>b)? a: b
int main(){
int a,b;
cout<<"teclea 2 numeros distintos"<<endl;
cin>>a;
cin>>b;
cout<<"el mayor
<<(mayor(a,b))<<endl;
cin.ignore();

de

esos

numeros

es:

"

cin.get();
return 0;
}

RESPONDA:

1. Cul es la lnea de cdigo que define la macro?

2. Cul es la salida del programa?

Debemos tener cuidado si vamos a usar macros, las macros, al


compilar el programa, se sustituyen directamente en donde se
invocan, es decir, que en este ejemplo, es como si se introdujera
directamente los condicionales dentro del cout. As, debemos
72

tener cuidado en introducir bloques grandes de cdigo en una


macro (algo nada recomendable), sobre todo, cuidado con los
puntos y comas.
Podemos ver que las macros al igual que las funciones pueden
tener parmetros, sin embargo, tienen que escribirse con cuidado.

ACTIVIDAD EXTRACLASE 3.2.

Responde las siguientes preguntas con tus propias palabras:


1. Qu es una macro?

2. Qu ventajas tiene la utilizacin de macros?

3. Cules son las desventajas de las macros?

4. Qu diferencia hay entre macros y funciones?

5. En tu opinin qu es ms fcil usar, una macro o una funcin y


por qu?

73

3.3. RECURSIVIDAD.
Qu es la recursividad?

La recursividad se presenta cuando una funcin se invoca


a si misma. Distintamente a las iteraciones (bucles), las funciones
recursivas consumen muchos recursos de memoria y tiempo.
Una funcin recursiva se programa simplemente para resolver los
casos ms sencillos, cuando se llama a una funcin con un caso
ms complicado, se divide el problema en dos partes, la parte que
se resuelve inmediatamente y la que necesita de ms pasos, sta
ltima se manda de nuevo a la funcin, que a su ves la divide de
nuevo, y as sucesivamente hasta que se llegue al caso base.
Cuando se llega al final de la serie de llamadas, va recorriendo el
camino de regreso, hasta que por fin, presenta el resultado.
Un ejemplo clsico para este problema es calcular el factorial de
un nmero, (n!).
El factorial de un nmero se define como el producto de todos los
nmeros enterios anteriores a l, por ejemplo:

5! = 1*2*3*4*5 = 120,
3! = 1*2*3 = 6,
7! = 1*2*3*4*5*6*7 = 5040.

Conocemos los casos base, 0!=1, 1!=1. Sabemos que la funcin


factorial puede definirse como n!=nn1!. Entonces, 5! = 5*4! =
5*4*3! = 5*4*3*2! = 5*4*3*2*1! = 120.
Nuestro programa quedara como sigue:

74

ACTIVIDAD EN CLASE 3.3.

#include <iostream.h>
long factorial(long numero); //prototipo
int main(){
long numero;
cout<<"nmero
para
calcular
factorial:"<<endl;
cin>>numero;
cout<<"el
factorial
"<<factorial(numero)<<endl;
cin.ignore();
cin.get();
return 0;
}

el

es:

long factorial(long numero){


if(numero<=1)
return 1;
else
return numero*factorial(numero-1);
}

RESPONDA:

1. Cul es el factorial de 8?
2. Cul es el factorial de 9?
3. Cul es el factorial de 10?
4. Cul es el factorial de 11?
5. Cul es el factorial de 12?

75

ACTIVIDAD EXTRACLASE 3.3.

Responda las siguientes preguntas con sus propias palabras:


1. Qu es la recursividad?

2. Qu ventajas tiene el uso de la recursividad?

3. Qu desventajas tiene el uso de la recursividad?

4. Investiga en Internet algn problema matemtico que requiera


el uso de recursividad para solucionarlo? Explica brevemente cul
es el problema y cmo se soluciona.

76

BIBLIOGRAFA.
_____________________________________________________
1. Manual bsico de programacin en C++. Apoyo a la
investigacin C.P.D. Servicios Informticos U.C.M. 2009.
2. C++ for dummies. Stephen Randy Davis. Wiley
Publishing, Inc. 5ta. Edicin. 2004.
3. C++ Timesaving Technique For Dummies. Matthew
Telles. Wiley Publishing, Inc. 2005.
4. Aprenda C++ Bsico. Paul Bustamante. TECNUM. 2004.
5. Aprenda C++. Javier Garca de Jaln. TECNUM. 1998.
6. Aprenda C++ Avanzado. Paul Bustamante. TECNUM.
2004.
7. Tutorial de C++ o el diario de Peter Class. Peter Class y
Pello Xabier Altadill Izura. Sin editorial. 2004.
8. C++ Manual terico-prctico. Alan D. Osorio Rojas. http://
slent.iespana.es/programacion/index.html. 2006.

77

78

ACERCA DEL AUTOR.


_____________________________________________________
Nace en la Ciudad de Puebla, Mxico, el 10 de
Abril de 1984. Titulado como Ingeniero en Ciencias
de la Computacin por parte de la Benemrita
Universidad Autnoma de Puebla. Sus trabajos
ms importantes en los ltimos aos son los
siguientes:

Principios de Data Mining (2005).


Principios de Geometra Analtica y lgebra Lineal (2004).
La Integral: Un enfoque computacional (2004).
Transmisin y Comunicacin de Datos (2005).
La Historia de un Gran Hombre (2008).
Ventajas y Desventajas del Plan Puebla-Panam (2003).
10 panistas a los que hay que odiar (2009).
Paisajes Poblanos, muestra fotogrfica (2009).
Principios de programacin en C++ (2009).

79

Este libro fue distribuido por cortesa de:

Para obtener tu propio acceso a lecturas y libros electrnicos ilimitados GRATIS


hoy mismo, visita:
http://espanol.Free-eBooks.net

Comparte este libro con todos y cada uno de tus amigos de forma automtica,
mediante la seleccin de cualquiera de las opciones de abajo:

Para mostrar tu agradecimiento al autor y ayudar a otros para tener


agradables experiencias de lectura y encontrar informacin valiosa,
estaremos muy agradecidos si
"publicas un comentario para este libro aqu".

INFORMACIN DE LOS DERECHOS DEL AUTOR


Free-eBooks.net respeta la propiedad intelectual de otros. Cuando los propietarios de los derechos de un libro envan su trabajo a Free-eBooks.net, nos estn dando permiso para distribuir dicho
material. A menos que se indique lo contrario en este libro, este permiso no se transmite a los dems. Por lo tanto, la redistribucin de este libro sn el permiso del propietario de los derechos, puede
constituir una infraccin a las leyes de propiedad intelectual. Si usted cree que su trabajo se ha utilizado de una manera que constituya una violacin a los derechos de autor, por favor, siga nuestras
Recomendaciones y Procedimiento de Reclamos de Violacin a Derechos de Autor como se ve en nuestras Condiciones de Servicio aqu:

http://espanol.free-ebooks.net/tos.html

También podría gustarte