El Arte de Programar - C++
El Arte de Programar - C++
0
Acerca del Autor
Capítulo 5 Funciones
Capítulo 6 Clases
Capítulo 8 Punteros
Capítulo 9 Referencias
Capítulo 10 Herencias
Capítulo 12 Polimorfismo
Capítulo 17 El Fin
Acerca del Autor
Mi Nombre es Alvaro Tejada, soy de Lima, Perú, tengo 25 años
y junto con mi novia Milly, estudio Computación e Informática
en Cibertec, y curso el Quinto Ciclo. Soy experto de la
categoría de programación en Xpertia, bajo el pseudónimo de
Blag. Y dueño de mi propia "compañía" (Ficticia por el momento)
desarrolladora de software multimedia, SinglePath games design.
Mis inicios en la programación datan aproximadamente del año 1991, cuando
vivía en el DF, en México. Allí lleve un curso de introducción al Pascal,
aunque claro, en esos tiempos a pesar de que me llamaban la atención las
computadoras, no tenía claro que quería hacer. Fue recién cuando vi por
primera vez el juego Mortal Kombat de Midway que decidí que quería ser
programador. En ese entonces tenía, si no me equivoco, una Macintosh Plus
con Think Pascal. Para ser sinceros, no entendía nada y el único programa
que logré hacer fue uno que venía como ejemplo en el manual de usuario y
que nunca pude modificar. Luego el tiempo pasó y en el año 1997 ingresé a la
Universidad de Lima en la cual llevé el curso de "Técnicas de Programación
I", en el cual tuve mi primer contacto con C++, aunque aún no con los
resultados que yo esperaba (Siempre la programación es difícil al principio).
Fue a principios de 1998, en febrero más o menos, que mi papá me compró
un libro de Visual Basic "Visual Basic 6 Bible" y uno de C++ "Teach Yourself
C++ in 21 Days". Y así comencé mi carrera en el mundo de la programación.
No voy a negar que al principio me costó bastante y que mis primeros
programas eran bastantes simples, pero sentía la satisfacción de haberlos
hecho yo mismo.
#include <iostream.h>
#include <conio.h>
int main()
{
clrscr();
cout<<"Hola Mundo";
getch();
}
Los comentarios, son partes del código que sirven como referencia para
otros programadores que desean modificar el código fuente. Además, si un
día formulas un código complejo, a los tres meses podrías no saber como
funciona, pero si lo has comentado no tendrás problemas.
Los comentarios son de dos tipos:
#include <iostream.h>
#include <conio.h>
int main()
{
/*Este es un comentario
continúa hasta que se cierre
el slash*/
clrscr();
cout<<"Hola Mundo";
//Este es otro tipo de comentario, que solo comenta una línea
getch();
}
Capítulo 3 - Variables y Constantes
Que es una Variable:
Tipos de Variables:
Para declarar una variable, primero debe escogerse su tipo, ya sea int, long,
o short int. Luego, hay que darle un nombre que, sea de preferencia
relacionado con la función que va a realizar. Las variables deben ser
llamadas tal como han sido declaradas. Edad no es lo mismo que EDAD o que
EdaD. Por ejemplo:
#include<iostream.h>
#include<conio.h>
int main()
{
unsigned short clases;
long total;
int alumnos;
total=clases*alumnos;
//cout<<”El total es: “<<total;
getch();
}
#include<iostream.h>
#include<conio.h>
int main()
{
unsigned int miEdad,tuEdad;
long Dia,Mes,Anho;
getch();
}
#include<iostream.h>
#include<conio.h>
int main()
{
unsigned short clases=5;
long total;
int alumnos=25;
total=clases*alumnos;
getch();
}
Otro ejemplo:
#include<iostream.h>
#include<conio.h>
int main()
{
unsigned short int Ancho=5,Largo;
Largo=10;
Usando typedef:
#include<iostream.h>
#include<conio.h>
typedef unsigned short int USHORT;
int main()
{
USHORT Ancho=5;
USHORT Largo=2;
USHORT Area=Ancho*Largo;
cout<<"Area: "<<Area<<endl; //endl, cumple la función de "\n"
getch();
}
Caracteres especiales:
Constantes:
Constantes Literales:
int miEdad=23;
Constantes Simbólicas:
Utilizar const es muy útil, ya que se le puede dar un tipo a las variable y
volverla constante.
Constantes Enumeradas:
Ejemplo:
#include<iostream.h>
#include<conio.h>
int main()
{
enum Dias {Domingo,Lunes,Martes,Miercoles,Jueves,Viernes,Sabado};
int opcion;
cout<<"Ingresa un día (0-6): ";
cin>>opcion;
if(opcion==Domingo || opcion==Sabado)
cout<<"Ya estás en el fin de semana";
else cout<<"\nTodavía sigues en clases";
getch();
}
Capítulo 4 - Expresiones y Secuencias
x = a + b;
En cualquier lugar que puedas poner una secuencia, puedes poner una
secuencia compuesta. Una secuencia compuesta, ejecuta una serie de
expresiones. Comienza con una { y termina con una }.
{
temp=a;
a=b;
b=temp;
}
Expresiones:
Una expresion debe devolver un valor, por lo tanto 3+2 devuelve el valor 5.
Todas las expresiones son sequencias.
3.2 //Devuelve el valor 3.2
PI //Devuelve el valor 3.14
SegundosPorMinuto //Constante entera que devuelve el valor 60
Operadores:
x = a + b;
z = 10 - x;
Operadores Aritméticos:
x = 5 + 5; //10
y = 10 – 8; //2
z = 6 * 4; //24
x = 10 / 5; //2
y = 10 % 5; //0
z = 6 % 4 ; //2
Incremento y Decremento:
c++;
c = c + 1;
//Son equivalentes
Prefix y Postfix:
Otro ejemplo:
#include <iostream.h>
#include <conio.h>
int main()
{
int miEdad = 23;
int tuEdad = 23;
cout<<"Yo tengo: "<<miEdad<<" años de edad.\n";
cout<<"Tu tienes: "<<tuEdad<<" años de edad.\n";
miEdad++;
++tuEdad;
cout<<"Un año pasó...\n";
cout<<"Yo tengo: "<<miEdad<<" años de edad.\n";
cout<<"Tu tienes: "<<tuEdad<<" años de edad.\n";
cout<<"Un año pasó...\n";
cout<<"Yo tengo: "<<miEdad++<<" años de edad.\n";
cout<<"Tu tienes: "<<++tuEdad<<" años de edad.\n";
cout<<"Escribamoslo de nuevo.\n"; cout<<"Yo tengo: "<<miEdad<<" años de
edad.\n";
cout<<"Tu tienes: "<<tuEdad<<" años de edad.\n";
getch();
}
Operadores Relacionales:
Son usados para determinar cunado dos números son iguales o si uno es
mayor que el otro:
El operador IF:
#include <iostream.h>
#include <conio.h>
int main()
{
int miNum=5,tuNum;
cout<<"Ingresa un número:";
cin>>tuNum;
if(tuNum>miNum)
cout<<"\nGanaste, tu número es mayor que el mio";
getch();
}
El operador ELSE:
#include <iostream.h>
#include <conio.h>
int main()
{
int miNum=5,tuNum;
cout<<"Ingresa un número:";
cin>>tuNum;
if(tuNum>miNum)
cout<<"\nGanaste, tu número es mayor que el mio";
else
cout<<"Gané!, Mi número es mayor que el tuyo";
getch();
}
#include <iostream.h>
#include <conio.h>
int main()
{
int miNum=5,tuNum;
cout<<"Ingresa un número:";
cin>>tuNum;
if(tuNum>miNum){
cout<<"\nGanaste, tu número es mayor que el mio\n";
cout<<"Que te parece si empezamos otra vez";
}
else{
if(tuNum<1)
cout<<"El cero y los números negativos no juegan!";
else
cout<<"Gané!, Mi número es mayor que el tuyo";
}
getch();
}
Operadores Lógicos:
AND:
OR:
Basta que una expresión sea verdadera para que sea verdadero:
if((5==5) || (6==8))
NOT:
if(5!=5) ó if(!(x==5))
El operador condicional(Ternario):
Es un IF-ELSE automático:
(expresión1)?(expresión2):(expresión3)
#include <iostream.h>
#include <conio.h>
int main()
{
int x,y,z;
cout<<"Ingresa dos números.\n";
cout<<"Primero: ";
cin>>x;
cout<<"Segundo: ";
cin>>y;
if(x>y)
z=x;
else
z=y;
cout<<"z: "<<z;
z=(x>y)?x:y; //Operador Ternario
cout<<"z: "<<z;
getch();
}
Capítulo 5 - Funciones
¿Qué es una función?
#include <iostream.h>
#include <conio.h>
int main()
{
int largoTerreno, anchoTerreno, areaTerreno;
clrscr();
cout<<"\nQue tan ancho es tu terreno? ";
cin>>anchoTerreno;
cout<<"\nQue tan largo es tu terreno? ";
cin>>largoTerreno;
areaTerreno=Area(largoTerreno,anchoTerreno);
cout<<"\Tu terreno tiene ";
cout<<areaTerreno;
cout<<" pies cuadrados\n\n";
getch();
}
#include <iostream.h>
#include <conio.h>
Una clase es una declaracion que sirve como un contenedor para nuevas
variables creadas por nosotros mismos.
Las clases pueden representar situaciones o elementos de la vida real, lo
cual nos ayuda a elaborar mejores programas y que son por ende más fáciles
de mantener y actualizar. Cada elemento que forma la clase, es llamado
Objeto.
class Estudiante
{
unsigned int codigo;
unsigned int edad;
void Comentarios();
}
Definir un objeto
Alvaro.codigo = 108;
Alvaro.edad = 24;
Todos los miembros de una clase, son privados por default, es decir, que si
no se especifica lo contrario, van a ser privados.
Para poder acceder y asignar valores a los miembros de la clase, estos
deben ser publicos.
#include <iostream.h>
#include <conio.h>
class Estudiante
{
public:
unsigned int codigo;
unsigned int edad;
void Comentarios();
};
int main()
{
Estudiante Alvaro;
Alvaro.edad = 24;
cout<<"El estudiante Alvaro, tiene "<<Alvaro.edad<<" años";
getch();
}
Para un mejor control del programa, se deben dejar algunos datos como
privados y crear funciones que accesen a ellos y nos permitan trabajar.
#include <iostream.h>
#include <conio.h>
class Estudiante
{
public:
unsigned int gCodigo();
void sCodigo(unsigned int Cod);
void Comentarios();
private:
unsigned int Codigo;
unsigned int Edad;
};
Estudiante Alvaro;
Alvaro.sCodigo(108);
#include <iostream.h>
#include <conio.h>
class Estudiante
{
public:
unsigned int gCodigo();
void sCodigo(unsigned int Cod);
void Comentarios();
private:
unsigned int Codigo;
};
unsigned int Estudiante::gCodigo()
{
return Codigo;
}
void Estudiante::Comentarios()
{
cout<<"Alvaro Tejada. Programador\n";
}
int main()
{
Estudiante Alvaro;
Alvaro.sCodigo(108);
cout<<"El código de Alvaro es: "<<Alvaro.gCodigo()<<"\n";
Alvaro.Comentarios();
getch();
}
Constructores y Destructores
class Estudiante
{
public:
Estudiante(int Codigo);
~Estudiante();
unsigned int gCod();
unsigned int sCod(int cod);
void Comentarios();
private:
unsigned int vCod;
};
//Constructor
Estudiante::Estudiante(int Codigo)
{
vCod = Codigo;
}
//Destructor
Estudiante::~Estudiante()
{
}
int main()
{
clrscr();
Estudiante Alvaro(108);
cout<<"El código de Alvaro es: "<<Alvaro.gCod();
Alvaro.sCod(250);
cout<<"\nEl nuevo código de Alvaro es: "<<Alvaro.gCod();
getch();
}
Estructuras
While o Mientras
#include <iostream.h>
#include <conio.h>
int main()
{
int counter=0;
int main()
{
clrscr(); //Para borrar la pantalla.
int num;
cout<<"Ingresa un número del 1 al 10: ";
cin>>num;
while(num>0 && num<11) //Mientras num sea mayor a 0 y menor que 11
{
cout<<"\nTu número es num: "<<num;
num++;
}
getch();
}
Do...While o Hacer...Mientras
#include <iostream.h>
#include <conio.h>
int main()
{
clrscr(); //Para borrar la pantalla.
int num;
For o Para
#include <iostream.h>
#include <conio.h>
int main()
{
clrscr(); //Para borrar la pantalla.
int num;
for(num=0;num<6;num++)
cout<<"\nEl número es: "<<num;
getch();
}
Switch o Casos
#include <iostream.h>
#include <conio.h>
int main()
{
clrscr();
int opcion;
do
{
cout<<"1)\n";
cout<<"2)\n";
cout<<"3)\n";
cout<<"Escoja una opción: ";
cin>>opcion;
}while(opcion<0 || opcion>4); //si opcion es menor que 0 ó mayor que 4
#include <iostream.h>
#include <conio.h>
int main()
{
unsigned short shortVar = 5;
cout<<"shortVar: "<<shortVar;
cout<<"Direccion de shortVar: "<<&shortVar;
getch();
}
/*El símbolo & delante del shortVar, nos dá la dirección que tiene
en memoria shortVar*/
Los punteros son muy usados, para manejar datos en el área libre de
memoria, acceder a datos y funciones de clases, pasar variables por
referencia a las funciones, etc.
Operador New
El operador Delete
delete pPointer;
Ejemplo
#include <iostream.h>
#include <conio.h>
int main()
{
int lVal = 8;
int * pLocal = &lVal;
int * pStore = new int;
*pStore = 5;
cout<<"lVal: "<<lVal<<"\n";
cout<<"*pLocal: "<<*pLocal<<"\n";
cout<<"*pStore: "<<*pStore<<"\n";
delete pStore;
pStore = new int;
*pStore = 3;
cout<<"*pStore: "<<*pStore<<"\n";
delete pStore;
getch();
}
Estudiante::~Estudiante()
{
cout<<"LLamando al destructor.\n";
}
int main()
{
cout<<"Estudiante Alvaro...\n";
Estudiante Alvaro;
cout<<"Estudiante *pSid = new Estudiante...\n";
Estudiante *pSid = new Estudiante;
cout<<"delete pSid...\n";
delete pSid;
cout<<"Terminando la demostración...\n";
getch();
}
Accesando a los miembros de Datos
#include <iostream.h>
#include <conio.h>
class Estudiante
{
public:
Estudiante() {vCode = 108;} //Declaración con función en línea.
~Estudiante() {}
unsigned int gCode() const {return vCode;} //Al ser constante, no se
//puede modificar
void sCode(unsigned int cod) {vCode = cod;}
private:
unsigned int vCode;
};
int main()
{
Estudiante * pAlvaro = new Estudiante;
cout<<"El código de Alvaro es: "<<pAlvaro->gCode();
pAlvaro->sCode(205);
cout<<"El nuevo código de Alvaro es: "<<pAlvaro->gCode();
delete pAlvaro;
getch();
}
#include <iostream.h>
#include <conio.h>
class Estudiante
{
public:
Estudiante();
~Estudiante();
unsigned int gCode() const {return *vCode;}
void sCode(unsigned int cod) {*vCode = cod;}
private:
unsigned int *vCode;
};
Estudiante::Estudiante()
{
vCode = new unsigned int(108);
}
Estudiante::~Estudiante()
{
delete vCode;
}
int main()
{
Estudiante * Alvaro = new Estudiante;
cout<<"El código de Alvaro es: "<<Alvaro->gCode();
Alvaro->sCode(205);
cout<<"El nuevo código de Alvaro es: "<<Alvaro->gCode();
delete Alvaro;
getch();
}
Capítulo 8 - Referencias
¿Qué son las referencias?
Las referencias son alias que se le pueden dar una variable, es como un
sobrenombre y todo lo que se le haga al alias le ocurrirá a la variable y
viceversa. Se reconocen porque al comenzar el nombre de la variable, se les
antepone el simbolo &.
#include <iostream.h>
#include <conio.h>
int main()
{
int miNum;
int &rNewNum = miNum;
miNum = 14;
cout<<"miNum: "<<miNum<<"\n";
cout<<"rNewNum: "<<rNewNum<<"\n";
NewNum = 24;
cout<<"miNum: "<<miNum<<"\n";
cout<<"rNewNum: "<<rNewNum<<"\n";
getch();
}
referenciar Objetos
Al igual que las variables se pueden referenciar, los objetos de una clase
también.
#include <<iostream.h>
#include <<conio.h>
class Estudiante
{
public:
Estudiante(int code,int edad);
~Estudiante() {}
int gCode() {return vCode;}
int gEdad() {return vEdad;}
private:
int vCode;
int vEdad;
};
int main()
{
Estudiante Alvaro(108,24);
Estudiante & rAlv = Alvaro;
getch();
}
Retornando multiples valores
Como sabemos, una función solo puede retornar un valor, pero que pasa si
necesitamos retornar más de uno, talves dos o tres... Con las referencias
podemos hacerlo.
#include <iostream.h>
#include <conio.h>
int main()
{
int numero,cuadrado,cubo;
cout<<"numero: "<<numero<<"\n";
cout<<"cuadrado: "<<cuadrado<<"\n";
cout<<"cubo: "<<cubo<<"\n";
getch();
}
Las referencias no pueden ser reasignadas, tampoco pueden ser nulas. Por lo
general, recomiendo utilizar Referencias, porque son más sencillas y más
seguras, pero si cumple alguna de las dos limitaciones es necesario utilizar
punteros.
Capítulo 9 - Herencia
¿Qué es la Herencia?
Ejemplo de Herencia
#include <iostream.h>
#include <conio.h>
class Mamiferos
{
public:
//Constructores
Mamiferos():vEdad(2),vPeso(4){}
~Mamiferos(){}
protected:
int vEdad;
int vPeso;
};
class Gato:public Mamiferos
{
public:
Gato() {}
~Gato() {}
int main()
{
clrscr();
Gato Cheko;
Cheko.Hablar();
Cheko.Dormir();
cout<<"Cheko tiene "<<Cheko.gEdad()<<" años y pesa "<<Cheko.gPeso();
cout<<" kilos.";
getch();
}
Los miembros de datos de una clase que son declarados como Private, no
pueden ser accesados por las clases derivadas (En Herencia), por lo cual se
utiliza el comando Protected: , esto hace que los miembros de datos
continuen privados pero sean visibles para las clases derivadas.
Métodos Virtuales
Los métodos virtuales, sirven para poder tener metodos con nombre iguales,
tanto en la clase madre como en la clases derivada, sin que estos entren en
conflicto, el compilador sabe a cual llamar dependiendo del contexto,
también permiten la utilización de punteros, que declaren una clase derivada
como nueva instancia de la clase madre.
#include <iostream.h>
#include <conio.h>
class Mamiferos
{
public:
Mamiferos():vEdad(2) {cout<<"Constructor Mamiferos...\n";}
virtual ~Mamiferos() {cout<<"Destructor Mamiferos...\n";}
void Mover() const {cout<<"Mamiferos avanzan un paso\n";}
virtual void Hablar() const {cout<<"Mamiferos hablando\n";}
protected:
int vEdad;
};
int main()
{
Mamiferos *pGato = new Gato;
pGato->Mover();
pGato->Hablar();
getch();
}
as, tampoco
Capítulo 10 - Arreglos o Matrices
¿Qué son los Arreglos o Matrices?
#include <iostream.h>
#include <conio.h>
int main()
{
int Array[5],i;
for(i=0;i<5;i++)
{
cout<<"Ingresa valores para el Arreglo: ";
cin>>Array[i];
}
for(i=0;i<5;i++)
cout<<i<<": "<<Array[i]<<"\n";
getch();
}
Al igual que las variables o caracteres, los objetos también pueden ser
almacenados en un arreglo o matriz.
#include <iostream.h>
#include <conio.h>
class Gato
{
public:
Gato() {vEdad = 2; vPeso = 4;}
~Gato() {}
int main()
{
Gato Gatitos[5];
int i;
for(i=0;i<5;i++)
Gatitos[i].sEdad(2*1+1);
for(i=0;i<5;i++)
{
cout<<"\nGatito# "<<i+1<<" tiene: "<<Gatitos[i].gEdad()<<" años";
}
getch();
}
#include <iostream.h>
#include <conio.h>
int main()
{
int Array[2][2];
int i,j;
for(i=0;i<2;i++)
for(j=0;j<2;j++)
{
cout<<"Ingresa valores a la matriz: ";
cin>>Array[i][j];
}
for(i=0;i<2;i++)
for(j=0;j<2;j++)
{
cout<<"Los valores son["<<i<<"]"<<"["<<j<<"]:"
<<Array[i][j]<<"\n";
}
getch();}
Arreglos o Matrices de Punteros
Estos son utilizados para poder almacenar los objetos en el área libre de
memoria.
#include <iostream.h>
#include <conio.h>
class Gato
{
public:
Gato() {vEdad = 2; vPeso = 4;}
~Gato() {}
int main()
{
Gato * Gatitos[20];
int i;
Gato * pCheko;
for(i=0;i<20;i++)
{
pCheko = new Gato;
pCheko->sEdad(2*i+1);
Gatitos[i] = pCheko;
}
for(i=0;i<20;i++)
{
cout<<"Cheko# "<<i+1<<": "<<pCheko->gEdad();
}
getch();
}
#include <iostream.h>
#include <conio.h>
int main()
{
char cadena[20];
cout<<"Ingresa la cadena de caracteres: ";
cin>>cadena;
cout<<"\nAquí está la cadena de caracteres: "<<cadena;
getch();
}
Capítulo 11 - Polimorfismo
¿Qué es el Polimorfismo?
#include <iostream.h>
#include <conio.h>
class Caballo
{
public:
Caballo() {}
~Caballo() {}
virtual void Galopar() const {cout<<"El caballo galopa 2 pasos";}
};
class Ave
{
public:
Ave() {}
virtual ~Ave() {}
virtual void Volar() const {cout<<"El Ave Vuela 2 metros...";}
};
class Pegaso:public Caballo,public Ave
{
public:
Pegaso() {}
virtual ~Pegaso() {}
virtual void Galopar() const {cout<<"El pegaso Galopa 2 pasos";}
virtual void Volar() const {cout<<"El pegaso Vuela 2 metros...";}
};
int main()
{
clrscr();
int choice;
do
{
cout<<"(1)Caballo\n"<<"(2)Ave\n"<<"(3)Pegaso \n";
cin>>choice;
}while(choice<1 || choice>5);
if(choice==1)
{
Caballo * Horse = new Caballo;
Horse->Galopar();
}
else if(choice==2)
{
Ave * Bird = new Ave;
Bird->Volar();
}
else if(choice==3)
{
Pegaso * Pegasus = new Pegaso;
Pegasus->Galopar();
cout<<"\n";
Pegasus->Volar();
}
getch();
}
Conclusión
Como podemos ver, Pegaso hereda tanto de Caballo como de Ave, y por lo
tanto puede galopar y volar. Una prueba interesante para comprobar esto,
puede ser comentar los dos métodos de Pegaso, con lo cual se ve de manera
más clara que hereda ambos métodos.
comiendo utilizar Referencias, pero si cumple alguna de las dos limitaciones
es necesario utilizar punteros.
Capítulo 12 - Clases especiales y Funciones
#include <iostream.h>
#include <conio.h>
class Gato
{
public:
Gato() {CuantosGatos++;}
virtual ~Gato() {CuantosGatos--;}
static int CuantosGatos;
};
int Gato::CuantosGatos = 0;
int main()
{
const int MaxGatos = 5;
int i;
Gato * Gatitos[MaxGatos];
for(i=0;i<MaxGatos;i++)
Gatitos[i] = new Gato;
for(i=0;i<MaxGatos;i++)
{
cout<<"\nQuedan: ";
cout<<Gato::CuantosGatos;
cout<<" diciendo Miau!!!";
delete Gatitos[i];
Gatitos[i] = 0;
}
getch();
}
Capítulo 13 - Cadenas de Caracteres
Miembros de Cin
Este comando retorna el valor del caracter encontrado hasta que encuentre
el final del archivo. No se pueden concatenar varias instancias de
caracteres en el get() sin parámetros.
#include <iostream.h>
#include <conio.h>
int main()
{
char ch;
char = Hola;
while((ch=cin.get())!=EOF) //EOF, End of File.
{
cout<<"ch: "<<ch;
}
getch();
}
#include <iostream.h>
#include <conio.h>
int main()
{
char a,b,c;
cout<<"Ingresa tres letras: ";
cin.get(a).get(b).get(c);
cout<<"a: \n"<<a<<" b: \n"<<b<<" c: "<<c;
getch();
}
#include <iostream.h>
#include <conio.h>
int main()
{
char ch;
cout<<"Ingresa una cadena de caracteres: ";
while(cin.get(ch))
{
if(ch=='a')
cin.putback('$');
else
cout<<ch;
while(cin.peek()=='e')
cin.ignore(1,'e');
}
getch();
}
Miembros de Cout
width() y fill()
#include <iostream.h>
#include <conio.h>
int main()
{
cout<<"Ejemplo: ";
cout.width(15);
cout.fill(‘$’);
cout<<""; //de width() y fill();
getch();
}
Flags
setf()
#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
int main()
{
const int num = 138;
cout<<"El número es: "<<num;
cout<<"El número es: "<<hex<<num;
cout<<"El número es: ";
cout.width(10);
cout.setf(ios::left);
cout<<oct<<num;
getch();
}
Lista de Modificadores
No necesitan iomanip.h
Lista de Modificadores
Necesitan iomanip.h
Ejemplo
#include <conio.h>
#include <stdio.h> //Para gets();
#include <fstream.h> //Para fout y fin
void ImprimirN();
void Ingresar();
char nombre[20];
float sueldo,salario,sueldoneto;
int dias,i,j;
int main()
{
clrscr();
for(i=0;i<2;i++)
Ingresar();
for(j=0;j<2;j++)
ImprimirN();
getch();
}
void Ingresar()
{
cout<<"\nNombre: ";
gets(nombre); //Va a tomar todos los caracteres, incluyendo espacios
cout<<"\nSueldo: ";
cin>>sueldo;
cout<<"\nSalario: ";
cin>>salario;
cout<<"\nDias que trabajo: ";
cin>>dias;
cout<<"\nSueldo Neto: ";
cin>>sueldoneto;
void ImprimirN()
{
int num;
ifstream fin("c:\\trabajad.txt"); //Abre el archivo para lectura
char ch;
while(fin.get(ch)) //Mientras hayan datos, leelos
cout<<ch; //e imprimelos
ofstream fix("c:\\trabajad.txt"); //Escribe los datos en el archivo
fix<<ch; //para evitar su repeticion
fin.close(); //Cierra el archivo
}
Comportamiento de Ofstream
Espero que este tutorial les sea útil como una pequeña introducción al
lenguaje de programación C++. Obviamente, queda mucho camino por
recorrer, uno no puede abarcar todas las posibilidades que posee un
lenguaje, en un tutorial, ni en diez libros. Lo importante ahora, es que
busque otros tutoriales con los que pudean complementarse y bajen códigos
y lo revisen hasta comprenderlos a la perfección. Demás está decir que
cuentan conmigo para cualquier duda que tengan.
Escribirme un mail:
[email protected]
O ingresar a:
Xpertia (http://www.xpertia.com)
Nombre de experto: blag
y consultarme a mi o a los más de 65 expertos disponibles en el área de
"Programación".
Bibliografía y Agradecimientos
Bibliografía:
Agradecimientos: