Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Este tutorial es gratuito, puedes distribuirlo libremente siempre que sea en forma gratuita y en forma
completa sin alteración alguna. La distribución en cualquier medio de este tutorial comercialmente queda
estrictamente prohibida sin consentimiento por escrito del autor.
© Copyright 2005, todos los derechos reservados por Rogelio Cesar Rodriguez Cervantes
Informacion de contacto:
e-mail 1 : cesarrdz@gmail.com
e-mail 2 : cesarrdz@excite.com
Sito web: http://cesar.crbyte.com
Visita:
http://cesar.crbyte.com para mas tutoriales, lenguaje C, programas con codigo fuente, etc.
http://crbyte.com para juegos de computadora que puedes bajar gratis
2. Control de flujo
2.1 Instrucciones de condicion (if-else)
2.2 Anidamiento de instrucciones
2.3 Instrucciones de repetición
2.4 Instrucciones de condicion (switch)
4. Modulos
4.1 Alcance de variables
4.2 Funciones definidas por el usuario
4.3 Argumentos de funciones
4.4 Modulos
5. Estructuras y clases
5.1 Estructuras
5.2 Clases
6. Archivos
6.1 Corrientes de flujo
6.2 Archivos
Bibliografia
int main() {
cout << "Este es mi primer programa en C++";
return 0;
}
Ejemplo:
int a, b;
char c;
Ejemplo:
int i = 0;
float x = 3.4;
Ejemplo:
'linea' es diferente de 'LINEA' y de 'Linea'
1.4 Constantes
Las constantes de C++ son los valores fijos que el programa no puede alterar. Las constantes de
carácter están encerradas entre apóstrofes ademas estas tienen un tipo de datos.
Ejemplos de constantes
'a', '%' constantes de tipo char
123L constante long
123.3 constante float
Nota: en la ultima linea se usa la construccion cast para forzar la conversión explícita del tipo de
una dato.
1.5 Operadores
Operadores aritméticos
Operador Acción
- resta y menos unario
+ suma
* multiplicación
/ división
% modulo de división
Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 4
-- decremento
++ incremento
Operadores relaciónales
Operador Acción
> mayor que
>= mayor que o igual que
< menor que
<= menor o igual que
== igual
!= no igual
Nota:
El doble signo igual == es la notación de C++ para "es igual a". Este símbolo se distingue de la
condición de igualdad del simple = empleado en las asignaciones.
Operadores lógicos
Operador Acción
&& and
|| or
! not
Incremento
++ Incrementa en uno
Decremento
-- Decrementa en uno
Ejemplo:
n = i++;
Es equivalente a:
n = i;
i = i +1;
n = ++i;
Es equivalente a:
i = i +1;
n = i;
Al usar la forma de prefijo la variable se incrementa o decrementa antes de ser usada; en la forma
pos fijo la variable primero se usa y después se incrementa o decrementa según sea el caso.
i = 10;
i++;
Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 5
cout << "i = " << i;
cout << "\nSalida en posfija de i++ = " << i++;
Namespaces
Un namespace es el alcance en el cual los tipos de datos pueden ser definidos para evitar la
sobrecarga del espacio de alcance global. Por omision cuando un nuevo tipo de dato es definido
este existe globalmente. Lo cual significa que esta disponible a cualquier funcion en la aplicacion.
Por ejemplo si declaramos una estructura como la siguiente:
struct Fecha {
}
int Fecha[] = { }
namespace abc {
struct Fecha {
};
};
namespace xyz {
int Fecha[] = { };
}
Para hacer referencia al tipo de datos que necesitemos usamos el operador de alcance ::
abc::Fecha
xyz::Fecha
En C++ todos los arreglos usan el cero como índice del primer elemento.
Ejemplo:
int lista[10]
Declara un arreglo llamado lista con diez elementos desde lista[0] hasta lista[9].
void main() {
int fecha[3];
fecha[0] = 8; // mes
fecha[1] = 21; // dia
fecha[2] = 2003;// año
int main() {
string strFileName;
system(strFileName.c_str());
return 0;
}
Nota: El lenguaje C++ no restricciona el tipo de expresiones a solo las que invocan operadores
relaciónales y lógicos. Todo lo que se requiere es que la expresión evaluada de cero o no cero.
void main(void) {
int n, pc;
int main(){
int a, b;
return 0;
Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 8
}
Forma general:
do
proposición;
while (condición);
int main(void) {
int n, pc;
char c, mc;
Iteracion while
Forma general:
while (condición) proposición;
int main() {
int i;
i = 0;
while (i < ASCII) {
// el caracter 26, puede borrar pantalla en DOS
cout << char(i) << " " << i << " ";
Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 9
i++;
}
return 0;
}
Iteración for
Forma general:
for (inicialización; condición; incremento)
proposición;
const TAM=5;
int main() {
int calif[TAM];
int suma, i;
float prom;
Forma General:
switch (variable) {
case constante1:
secuencia de sentencias;
case constante2:
secuencia de sentencias;
break;
.
.
.
default:
secuencia de sentencias;
}
case
Actúa como una etiqueta.
break
Opcional dentro de la sentencia switch. Se usa para terminar la secuencia que esta asociada con
cada constante. Si se omite, la ejecución continuara en las sentencias del siguiente case hasta
encontrar un break, un return o el final del switch.
default
Es opcional y se ejecuta si no se satisface ninguna opción.
MEMORIA
Área libre
Código del programa que esta en ejecución
Ejemplo:
int n, *pn;
n = 3;
pn = &n;
Direcciones en
memoria 1500 1501 1600 1601
Variables en 0 3 15 00
memoria
n *pn
La inicialización:
pn = &n
Se puede decir como: toma la dirección de la variable n y almacénala en la dirección de pn.
Indireccion
Es el proceso de accesar el contenido de una variable a través de una variable tipo puntero. Usando
el operador *
Ejemplo:
int n, *pn, x;
n = 3;
pn = &n;
x = *pn; ( x = 3)
apuntador_int = &actualint;
cout << "\n\nValor del puntero despues de asignacion " << apuntador_int;
cout << "\nValor de donde apunta el puntero " << *apuntador_int;
(*apuntador_int)++;
cout << "\n\nValor de actualint " << actualint;
actualint++;
cout << "\nValor de donde apunta el puntero " << *apuntador_int << endl;
}
new
Aloja memoria dinámicamente, regresa un apuntador a la memoria alojada. Si falla resulta una
excepcion bad_alloc. (Investigar manejo de excepciones)
delete
Desaloja un bloc de memoria dinámica que ha sido previamente alojado por el operador new. El
Desalojo de memoria la libera para reusamiento.
do {
for (i=0; i < total_asientos; i++)
cout << endl << "Asiento " << i << ": " << asiento[i];
delete []asiento;
}
Ejemplo:
char str[11];
Una constante de cadena es una lista de caracteres que se encierran entre comillas.
Ejemplo:
"HOLA"
int main() {
char cStr[] = "notepad cadena.cpp";
cStr[7] = '\0';
cout << endl << "Ejecutandose " << cStr;
system(cStr);
return 0;
}
argc
Es el numero de argumentos en la linea de comandos del sistema operativo con que se invoco el
programa.
argv
Es un apuntador a un arreglo de cadenas de caracteres. Cada cadena contiene un argumento.
if (argc < 2)
cout << "Uso: ver_texto archivo_de_texto\n";
else {
strcpy(cStr, "more /C "); // copia la cadena "more /C" a cStr
strcat(cStr, argv[1]); // concatena el contenido de cStr con argv[1]
system(cStr);
}
return 0;
}
3.4 Referencia
Listado 3.5 texto completo de referen1.cpp
#include <iostream.h>
main() {
int actualint = 123;
int &otroint = actualint;
otroint++;
cout << '\n' << actualint;
cout << '\n' << otroint;
actualint++;
cout << '\n' << actualint;
cout << '\n' << otroint;
}
Las variables definidas dentro de una función son variables locales dinámicas. (empiezan a existir
cuando la función es llamada y se destruyen al terminar).
Forma general:
especificador_tipo nombre_funcion(declaración de argumentos )
{
cuerpo de la función
}
La lista_de_argumentos es una lista de nombres de variables separados por comas que recibe los
valores de los argumentos cuando se llama la función.
Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 17
Las funciones terminan y devuelven automáticamente al procedimiento que la llamo cuando se
encuentra la ultima llave o mediante la sentencia return.
char mensaje[80];
void mayusculas(void) {
int i;
for (i = 0; mensaje[i] != '\0'; i++)
mensaje[i] = toupper(mensaje[i]);
}
int main() {
system("cls");
cout << "Ingresa un mensaje ";
cin.getline(mensaje, 79);
mayusculas();
cout << "\nEl mensaje en mayusculas es " << mensaje;
return 0;
}
return num;
}
main() {
int n, x;
int main(void) {
int x = 20, y = 10;
cambia(&x, &y);
cout << endl << x << " " << y;
return 0;
}
paso = *x;
*x = *y;
*y = paso;
}
paso = a;
a = b;
b = paso;
}
main() {
int x, y;
x = 10; y = 20;
cambia(x, y);
cout << endl << "X = " << x;
cout << endl << "Y = " << y;
}
4.4 Modulos
#include <string>
#endif // TIEMPO_H
fechaActual(sFecha);
Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 20
sFechaLarga = sFecha.substr(0, 2); // dia
int main(void) {
string sStr;
horaActual(sStr);
cout << sStr << endl;
fechaActual(sStr);
cout << sStr << endl;
fechaLargaActual(sStr);
cout << sStr << endl;
return 0;
}
Forma general:
struct etiqueta {
tipo nombre_variable;
tipo nombre_variable;
.
.
tipo nombre_variable;
} variables_de_estructura;
struct Fecha {
int dd;
string mm;
int aa;
};
int main() {
Fecha fecha;
cout << "\n\n" << fecha.dd << " de " << fecha.mm << " de " << fecha.aa;
return 0;
}
forma:
class nombre_de_la_clase {
etiqueta_de_nivel_de_permiso_1:
Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 22
miembros1;
etiqueta_de_nivel_de_permiso_2:
miembros2;
...
} nombre_del_objeto;
protected
Los miembros que le siguen a esta palabra reservada solo pueden ser accesados por las funciones
miembro dentro de la misma clase, y por las funciones miembro de las clases que son derivadas de
esta clase.
public
Los miembros que le siguen a esta palabra reservada pueden ser accesados en cualquier lugar
dentro del alcance de la clase.
class CCaracter {
private:
char c;
public:
// funciones constructor
CCaracter();
CCaracter(char ac);
~CCaracter() {
cout << "\nGood bye, cruel world! " << c;
}
// funciones miembro
void yoSoy(void) { cout << "\nYo soy " << c; }
void apariencia(char ac);
};
CCaracter::CCaracter() {
c = '@';
cout << "\nConstructor CCaracter(): " << c;
}
CCaracter::CCaracter(char ac) {
c = ac;
cout << "\nConstructor CCaracter(char ac): " << c;
}
void main(){
CCaracter c1; // Declara un caracter sin inicializadores
CCaracter c2('#'); // Declara un caracter
class CFecha {
private:
int mm, dd, aa;
public:
CFecha(int a_dd, int a_mm, int a_aa) {
mm = a_mm;
dd = a_dd;
aa = a_aa;
}
CFecha(); // Funcion de conversion constructor
void display(void);
void fullDisplay();
};
#endif // CFECHA_H
void CFecha::fullDisplay() {
char *meses[] = {"Enero", "febrero", "Marzo", "Abril", "Mayo", "Junio",
"Julio", "Agosto", "Septiembre", "Octubre", "Noviembre",
"Diciembre"};
cout << dd << " de " << meses[mm-1] << " del " << (2000 + aa);
}
int main(void) {
CFecha f1; // Invoca la conversion de constructor
Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 24
CFecha f2(24, 12, 03);
f1.display();
cout << "\n";
f2.fullDisplay();
}
Corrientes
Almacenamiento temporal de archivo para transformar los dispositivos físicos en un
almacenamiento lógico. Esto permite que las corrientes sean independientes de los dispositivos.
Existen dos tipos de corrientes: texto y binarias.
Corrientes de texto
Secuencia de caracteres organizadas en lineas terminadas por un carácter nueva linea. La
traducción del carácter nueva linea depende de la implementacion.
6.2 Archivos
Para utilizar archivos es necesario incluir el archivo fstream.h, (#include <fstream.h>) al incluir
este archivo de encabezado ya no es necesario incluir el iostream.h si utiliza cin/cout, por que el
fstream.h lo inluye automaticamente.
En este archivo estan definidas varias clases, incluyendo ifstream – flujo de entrada, ofstream –
flujo de salida, y fstream – flujo de entrada y salida.
if (argc < 3) {
cout << "Uso: encripta archivo_fuente archivo_destino [-d]\n";
cout << "\t[-d] desencripta\n";
exit(1);
}
fstream entrada(argv[1], ios::in); // | ios::out); para e/s
fstream salida(argv[2], ios::out);
return 0;
}
#include <fstream.h>
#include <stdlib.h> // exit()
#include <ctype.h>
if (argc < 3) {
cout << "Uso: texto_a_html archivo_texto archivo_html\n";
exit(1);
}
fstream entrada(argv[1], ios::in); // | ios::out); para e/s
fstream salida(argv[2], ios::out);
entrada.close();
salida.close();
return 0;
}
Para posicionarse en una parte del archivo se usa la funcion miembro seekg
por ejemplo:
archivo.seeekg(0, ios::end); // se posiciona exactamente al final del
archivo
archivo.seeekg(10, ios::beg); //se posiciona 10 caracteres despues del
inicio
Para archivos binarios (no formateados, para manejar byte por byte), se usa el modificador
ios::binary al abrir el archivo y no se usan los operadores <<, >>
● [Stroustrup 1993] Bjarne Stroustrup: “El lenguaje de programación C++” Segunda Edición Addison-
Wesley/Diaz de Santos 1993
● [Eckel 1993] Bruce Eckel: “C++ Inside & Out” Osborne McGraw-Hill 1993
● [Schildt 1990] Herlbert Schildt: “C The Complete Reference” second edition Osborne McGraw-Hill
1990