Está en la página 1de 28

Tutorial rapido de C

++
por Cesar Rodriguez

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

Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 1

1. Instrucciones Basicas
1.1 Estructura de un programa
1.2 Tipos de datos
1.3 Declaracion de variables
1.4 Constantes
1.5 Operadores
1.6 Precedencia y evaluacion de operadores
1.7 Arreglos
1.8 Clase string

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)

3. Punteros y cadena de caracteres
3.1 Definicion de puntero
3.2 Manejo dinamico de memoria
3.3 Cadenas de caracteres
3.4 Argumentos en la linea de comandos
3.5 Referencia

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

Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 2

numero con fraccion double . Ejemplo: int i = 0. Ejemplo: 'linea' es diferente de 'LINEA' y de 'Linea' Listado 1.sin valor 1.double.CPP // Desc.4.cpp // Programa : Primer. aunque ciertas declaraciones se realizan implícitamente por el contexto. Una función es una o mas instrucciones en C++ designadas para una tarea especifica.h> int main() { cout << "Este es mi primer programa en C++". float x = 3. 1 Instrucciones Básicas 1.2 Tipos de datos char .enteros long .1 texto completo de primer. : Convierte pesos a dolares #include <iostream. char c.1 Estructura de un programa Un programa en C++ puede verse como un grupo de bloques construidos llamados funciones.enteros largos float . El lenguaje C++ hace distinción entre minúsculas y mayúsculas.2 texto completo de condolar. y le sigue una lista de una o mas variables de ese tipo.h> void main(void){ int pesos. Listado 1. Una declaración especifica un tipo. b. return 0.3 Declaración de variables Todas las variables deben de ser declaradas antes de utilizarlas. Las variables también se pueden inicializar en su declaración.flotante. numero con fraccion void . float dolares.cpp // Programa: CONDOLAR. } 1.cpp // Descripcion: Escribe un mensaje en pantalla #include<iostream. Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 3 . Ejemplo: int a.caracteres int .

3 texto completo de lconst.5 Operadores Operadores aritméticos Operador Acción . cin >> pesos. cout << "Dolares = " << dolares.4 Constantes Las constantes de C++ son los valores fijos que el programa no puede alterar.cpp // Programa: lconst. resta y menos unario + suma * multiplicación / división % modulo de división Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 4 .h> main(){ cout << endl << 1/2. Ejemplos de constantes 'a'. : Ejemplo de constantes #include <iostream. Constantes de carácter no imprimibles CÓDIGO SIGNIFICADO \b retroceso \f alimentación de hoja \n nueva linea \r retorno de carro \t tabulador horizontal \" doble comilla \' apóstrofe o simple comilla \0 nulo \\ barra invertida \v tabulador vertical \a alerta \o constante octal \x constante hexadecimal 1. cout << endl << 1. } Nota: en la ultima linea se usa la construccion cast para forzar la conversión explícita del tipo de una dato.0/2. cout << endl << float(1)/2.cpp // Desc. Las constantes de carácter están encerradas entre apóstrofes ademas estas tienen un tipo de datos. dolares = pesos / 11. } 1. '%' constantes de tipo char 123L constante long 123.3 constante float Listado 1. cout << endl << "Cuantos pesos desea convertir a dolares? ".

4 texto completo de mas_mas. Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 5 . Listado 1. n = i. i = i +1. Es equivalente a: n = i. Operadores lógicos Operador Acción && and || or ! not Incremento ++ Incrementa en uno Decremento -.cpp //Programa : mas_mas.h> void main(void) { int i. n = ++i. en la forma pos fijo la variable primero se usa y después se incrementa o decrementa según sea el caso.cpp // Descripción: Desmostracion del operador unario ++ #include <iostream.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". Al usar la forma de prefijo la variable se incrementa o decrementa antes de ser usada. i++. Este símbolo se distingue de la condición de igualdad del simple = empleado en las asignaciones. i = 10. -. Es equivalente a: i = i +1. Decrementa en uno Ejemplo: n = i++.

cout << "\nSalida en posfija de i++ = " << i++. Por ejemplo si declaramos una estructura como la siguiente: struct Fecha { } Despues no podemos declarar un arreglo como el siguiente: int Fecha[] = { } Al menos que lo declaremos en un namespace diferente. cout << "\n\nalida de i = " << i. derecha a izquierda 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. } 1. }. izquierda a derecha << >> izquierda a derecha < <= > >= izquierda a derecha == != izquierda a derecha & izquierda a derecha ^ izquierda a derecha | izquierda a derecha && izquierda a derecha || izquierda a derecha ?: derecha a izquierda = += -= etc. Lo cual significa que esta disponible a cualquier funcion en la aplicacion. izquierda a derecha .6 Precedencia y orden de evaluación de operadores Operador Asociatividad_____ () [] -> . namespace xyz { int Fecha[] = { }. cout << "i = " << i.(tipo) * & sizeof derecha a izquierda * / % izquierda a derecha + . } Para hacer referencia al tipo de datos que necesitemos usamos el operador de alcance :: abc::Fecha xyz::Fecha Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 6 . cout << "\nSalida prefija de ++i = " << ++i. izquierda a derecha ! ~ ++ -. Por omision cuando un nuevo tipo de dato es definido este existe globalmente. por ejemplo: namespace abc { struct Fecha { }..

cpp // run_prog.// año cout << "Fecha ". Listado 1. Ejemplo: int lista[10] Declara un arreglo llamado lista con diez elementos desde lista[0] hasta lista[9]. un string es un clase del tipo template llamada basic_string.8 Clase string Un string es básicamente una secuencia de caracteres que puede ser indexada.cpp #include <iostream> #include <string> using namespace std. En la librería de C++ estándar. cout << "Ejecutandose Aplicacion " << strFileName << endl. Si se sobrepasa el final durante una operación de asignación.cpp // fecha. cout << "Aplicacion a ejecutar? ". Los programas que usen la clase string deben incluir el archivo de encabezado: #include <string> Listado 1.5 texto completo de fecha. void main() { int fecha[3].length() << " letras". return 0. system(strFileName. cin >> strFileName. fecha[0] = 8. entonces se asignaran valores a otras variables en memoria o memoria usada por el propio código del programa.c_str()). // dia fecha[2] = 2003.cpp #include <iostream> using namespace std. } 1. } Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 7 .6 texto completo de run_prog.1. cout << "El nombre de la aplicacion tiene " << strFileName. El lenguaje C++ no realiza comprobación de contornos en los arreglos. // mes fecha[1] = 21. int main() { string strFileName.7 Arreglos Forma general de un arreglo unidimiensional: tipo nombre_variable[tamaño] En C++ todos los arreglos usan el cero como índice del primer elemento. cout << fecha[0] << '/' << fecha[1] << '/' << fecha[2].

return 0.1 Instrucciones de condicion (if-else) Para tomar decisiones. La parte else es opcional. cin >> a. if (a == b) cout << "Los numero son igueles". si la condición es falsa. Todo lo que se requiere es que la expresión evaluada de cero o no cero. cin >> n.h> #include <time. cin >> b. Nota: El lenguaje C++ no restricciona el tipo de expresiones a solo las que invocan operadores relaciónales y lógicos. cout << "\nDame un numero ". pc = rand() % 5.cpp #include <iostream> #include <stdlib. se ejecuta la sentencia-1. else cout << endl << "Intenta otra vez". 2 Control de flujo 2. else sentencia-2. cout << "Dame otro numero ". else cout << "El numero " << b << " es mayor que " << a. srand( (unsigned)time( NULL ) ). b.2 Anidamiento de instrucciones Listado 2.h> using namespace std. if (n == pc) cout << "Adivinaste!". Listado 2. void main(void) { int n. igual a cero se ejecuta la sentencia-2.h> int main(){ int a.2 texto completo de mayor.1 texto completo de adivina. Si la condición es verdadera. else if (a > b) cout << "El numero " << a << " es mayor que " << b. } 2.cpp // adivina. cout << "\nAdivina el numero que pienso (0-4) " << endl. distinta de cero.cpp // lea dos numeros y dice si son iguales o cual es el mayor #include <iostream. pc. Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 8 . Forma general: if (condición) sentencia-1.

cpp #include <iostream> #include <string> #include <stdlib. Forma general: do proposición. i = 0. puede borrar pantalla en DOS cout << char(i) << " " << i << " ". pc. else cout << "NO ES!!!" << endl. Y este se ejecuta al menos una vez.4 texto completo de ascii.h> using namespace std. do { cout << "\nAdivina el numero que pienso (0-4) " << endl. mc = toupper(c). mc. } 2.cpp // Descripcion: Despliega la tabla Ascii #include<iostream.3 texto completo de doadivina. while (condición). while (i < ASCII) { // el caracter 26. pc = rand() % 5. Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 9 . cin >> n. Listado 2.cpp // Programa : Ascii. srand( (unsigned)time( NULL ) ). } Iteracion while Forma general: while (condición) proposición. } while (mc != 'N').h> #include <time. if (n == pc) cout << "ADIVINSATE!!!" << endl. Listado 2. char c. cout << endl << "Intenta otra vez? (S/N)". return 0.h> const int ASCII=255. cin >> c.cpp // doadivina. int main() { int i.3 Instrucciones de repetición Iteracion do-while Hace la comprobación al final después de cada pasada a través del cuerpo del ciclo. int main(void) { int n.

3 Instrucciones de condicion (switch) Sentencia switch Herramienta especial para decisiones múltiples que comprueba si una expresión iguala uno entre varios valores constantes. i < TAM.5 texto completo de for_prom. i. } Iteración for Forma general: for (inicialización. i++) { cout << "Calificacion " << i << " ? ". . y se bifurca a partir de ellos. cin >> calif[i]. incremento. int suma. condición.cpp #include <iostream. Forma General: switch (variable) { case constante1: secuencia de sentencias. . while (condición) { proposición. } 2. } Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 10 . for (i = 0. Listado 2. break. suma = 0.cpp // for_prom. i++. return 0. } prom = suma / TAM. cout << endl << "El promedio es " << prom. incremento) proposición. case constante2: secuencia de sentencias. default: secuencia de sentencias. } La proposición for es equivalente a: inicialización. cout << "Dame 5 calificaciones " << endl.h> const TAM=5. suma = suma + calif[i]. . float prom. int main() { int calif[TAM]. } return 0.

Listado 2. break. break. case 7: cout << "julio". switch(fecha[1]) { case 1: cout << "enero". mientras que la expresión condicional del if puede ser de cualquier tipo. 1. break Opcional dentro de la sentencia switch. 2. break. case 5: cout << "mayo". case Actúa como una etiqueta. 2004}. El switch difiere del if porque la primera solo puede comprobar por igualdad. break.6 texto completo de fechaSwitch. break. case 11: cout << "noviembre". break. case 2: cout << "febrero". case 6: cout << "junio". Se usa para terminar la secuencia que esta asociada con cada constante. break. case 10: cout << "octubre". No pueden tener dos constantes case con idénticos valores en el mismo switch. Si se omite. // dd/mm/aa cout << fecha[0] << " de ". case 12: cout << "diciembre". Una sentencia switch que esta encerrada por otro switch puede tener constantes case que son las mismas. case 8: cout << "agosto". break. 12.h> #define LON 2 int main(){ int fecha[] = {1. default Es opcional y se ejecuta si no se satisface ninguna opción. break. la ejecución continuara en las sentencias del siguiente case hasta encontrar un break. case 9: cout << "septiembre". case 4: cout << "abril". break. break. break. Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 11 . case 3: cout << "marzo". un return o el final del switch.cpp #include <iostream.

default: out << " *error*". return 0. } cout << " del " << fecha[2]. } Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 12 .

Usando el operador * Ejemplo: int n. Indireccion Es el proceso de accesar el contenido de una variable a través de una variable tipo puntero. Si una variable contiene la dirección de otra variable. Esta dirección es usualmente la localidad de otra variable en memoria. Toma a lo que este apuntando el puntero (Usando *) cout << “pn esta apuntando a “ << *pn. Define el puntero (Usando el *) int *pn. n = 3. x. n = 3. Ejemplo: int n. Punteros y cadena de caracteres 3. 3. ( x = 3) El operador & solo se puede aplicar a variables y a elementos de un arreglo.1 Definición de Puntero Un puntero es una variable que almacena una dirección de memoria. *pn. pn = &n. MEMORIA Área libre Código del programa que esta en ejecución Pasos a seguir al usar punteros 1. pn = &n. 2. Inicializa el puntero para apuntar a algo (Usando &) pn = &n. *pn. Son ilegales construcciones como: &(x+1) &3 Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 13 . entonces se dice que la primera variable apunta a la segunda. 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. 3. x = *pn.

cout << "\nValor de donde apunta el puntero " << *apuntador_int << endl.2 Manejo dinámico de memoria Operadores new y delete new Aloja memoria dinámicamente. // Aloja el arreglo do { for (i=0. apuntador_int = &actualint. (Investigar manejo de excepciones) delete Desaloja un bloc de memoria dinámica que ha sido previamente alojado por el operador new. cout << "Nombre ". int *apuntador_int. i++) cout << endl << "Asiento " << i << ": " << asiento[i]. cout << endl << "Numero de Asiento? ". // Toma la longitud del arreglo asiento = new string[total_asientos].h> #include <string> using namespace std. cout << "\n\nValor de actualint " << actualint. actualint++. numero. void main() { int total_asientos. cin >> asiento[numero]. (*apuntador_int)++.2 texto completo de asientos. cout << "\nDireccion de actualint " << &actualint.h> int main() { int actualint = 123. i. delete []asiento.cpp #include <iostream. string *asiento. Si falla resulta una excepcion bad_alloc. if (numero < 0) break. El Desalojo de memoria la libera para reusamiento. cout << "\nCantidad de asientos con que cuenta el local? ". cin >> total_asientos. cout << "\n\nValor del puntero despues de asignacion " << apuntador_int. } Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 14 .cpp #include <iostream. i < total_asientos. Listado 3. cout << "\nValor de actualint " << actualint. } while(1). regresa un apuntador a la memoria alojada. Listado 3. cout << "\nValor de donde apunta el puntero " << *apuntador_int. } 3. cout << "\nValor del puntero antes de asignacion " << apuntador_int.1 texto completo de apunta. cin >> numero.

cout << endl << "Ejecutandose " << cStr.3 texto completo de cadena. Un nulo se especifica como '\0' y es cero. system(cStr).3.cpp // Programa : cadena. Una constante de cadena es una lista de caracteres que se encierran entre comillas. argc Es el numero de argumentos en la linea de comandos del sistema operativo con que se invoco el programa.cpp // Descripcion: Cadenas de caracteres #include<iostream> using namespace std. La cadena "HOLA" se vera en memoria así: H O L A \0 Listado 3. cout << endl << "Ejecutandose " << cStr. Ejemplo: "HOLA" Al declarar una constante de cadena el compilador de C++ agregara automáticamente el carácter nulo al final. Si se quiere definir un a cadena de 10 elementos se debe definir de 11 para soportar el carácter nulo. int main() { char cStr[] = "notepad cadena. Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 15 . } 3.2 Cadenas de caracteres Una cadena de caracteres consiste en un arreglo de caracteres terminado en un nulo. system(cStr). Ejemplo: char str[11]. argv Es un apuntador a un arreglo de cadenas de caracteres. cStr[7] = '\0'. return 0.cpp". Cada cadena contiene un argumento.3 Argumentos en la linea de comandos Es la informacion que sigue incluyendo el nombre del programa en la linea de comandos del sistema operativo separada por espacios.

4 texto completo de ver_texto. cout << '\n' << actualint. char *argv[]) { char cStr[80]. otroint++. "more /C "). argv[1]). cout << '\n' << otroint. } Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 16 . // copia la cadena "more /C" a cStr strcat(cStr.cpp #include <iostream.4 Referencia Listado 3. } 3. cout << '\n' << actualint. actualint++. cout << '\n' << otroint.h> main() { int actualint = 123. int &otroint = actualint. Listado 3. } return 0.h> int main(int argc. if (argc < 2) cout << "Uso: ver_texto archivo_de_texto\n". else { strcpy(cStr. Nota: argc siempre será 1 porque el primer argumento es el nombre del programa (algunos sistemas operativos incluyen el path). cout << '\n' << actualint. // concatena el contenido de cStr con argv[1] system(cStr). cout << '\n' << otroint.cpp #include <iostream.5 texto completo de referen1.

h> 2. #include <iostream. 9.cpp 1. Listado 4. se utiliza el operador de alcance :: Variables externas. { 10. 4.1 texto completo de bloques. 13. int main() { 5. este código es privado a la función y no puede ser acezado por ninguna declaración en ninguna otra función excepto a través de argumentos y variables globales Las variables definidas dentro de una función son variables locales dinámicas. 4. 11. Notese que las funciones en si son bloques de codigo con un nombre asignado. 6. } 14. En la linea 8.2 Funciones definidas por el usuario Una función es un bloque de codigo con un nombre asignado. cout << a << endl. Variables automáticas.1 Alcance de variables Las variables declaradas dentro de un bloque de codigo son locales a ese bloque. Estas variables no conservan su valor entre dos llamadas sucesivas. 7. cout << ::a << endl. int a = 10. 12. Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 17 . no pueden ser accesadas por otro bloque o afuera de este. 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. 3.} La linea 14 esta como comentario porque marca un error. x++. 8. Forma general: especificador_tipo nombre_funcion(declaración de argumentos ) { cuerpo de la función } El especificador_de_tipo especifica el tipo de valor que la función devolver mediante el return. tambien llamadas globales Se definen fuera de las funciones estas son externas a todas las funciones. Cuando son declaradas en otro archivo se debe usar la palabra reservada extern. int a = 0. //cout << x. 4 Modulos 4. 15. (empiezan a existir cuando la función es llamada y se destruyen al terminar). de variable no encontrada. tambien llamadas locales dinamicas Cada variable local comienza a existir cuando se executa el bloque donde fue declarada y desaparece cuando el bloque de codigo acaba. cout << x << endl. esto es variables globales a las que puede acceder cualquier función mediante su nombre. int x = 20.

cpp // Programa : mayusculas.2 texto completo de mayusculas. cout << "Ingresa un numero ".CPP // Descripcion: Usa una funcion que recibe y regresa un valor entero #include <iostream. x.Los parametros formales de la función son las declaraciones de las variables que aceptan los valores de los argumentos.3 texto completo de sqr. cout << endl << "El cuadrado de " << n << " es " << x. Listado 4. cin >> n. } 4. Por referencia Llamada por valor Este método copia el valor del argumento dentro de los parametros formales de la función y todos los cambios que sufran los parámetros no afectan el valor del argumento usado para llamar la función.cpp // Convierte una cadena de caracteres a mayusculas #include <iostream. cin.getline(mensaje.cpp // Programa : SQR. mensaje[i] != '\0'. Las funciones terminan y devuelven automáticamente al procedimiento que la llamo cuando se encuentra la ultima llave o mediante la sentencia return. return num. void mayusculas(void) { int i. Listado 4. } main() { int n.h> int sqr(int num) { num = num * num. cout << "\nEl mensaje en mayusculas es " << mensaje. return 0.h> char mensaje[80]. Por valor 2. Por puntero 3. i++) mensaje[i] = toupper(mensaje[i]). 79). } Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 18 . cout << "Ingresa un mensaje ". for (i = 0.3 Argumentos de funciones Hay tres tipos de argumentos para las funciones 1. x = sqr(n). } int main() { system("cls"). mayusculas().

cpp // Prog: CambiaRf. y = 10. } main() { int x.h> void cambia(int *x.cpp // Descripcion: intercambia dos numeros con una funcion #include <iostream.h #ifndef TIEMPO_H #define TIEMPO_H #include <string> Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 19 . Los apuntadores son pasados a la función como cualquier otro valor pero declarando los parámetros como del tipo apuntador. paso = a. &y). a = b. } Llamada por referencia Listado 4. Llamada por apuntadores En este método.5 texto completo de cambiarf. int main(void) { int x = 20. Listado 4.4 Modulos Listado 4. la dirección en memoria del argumento es copiada dentro del parametro de la función.h> void cambia(int &a. return 0. cambia(x. x = 10. int &b) { int paso.4 texto completo de cambia.. paso = *x.cpp // Programa. cambia(&x. y. } 4. *y = paso. int *y). cout << endl << "X = " << x. y = 20. la dirección es usada para accesar el valor en memoria de la variable usada en la llamada. b = paso. y).Cpp // Desc: Usa una funcion que intercambia los valores de sus argumentos // utilizando paso por Referencia #include <iostream. cout << endl << x << " " << y. Para usar este método pasamos un apuntador de el argumento.. *x = *y. } void cambia(int *x.6 texto completo de tiempo. cout << endl << "Y = " << y. int *y) { int paso.: cambia.

#endif // TIEMPO_H Listado 4. sHora = sHora + cString. sHora = sHora + ":". sFecha = sFecha + "/". sHora = sHora + cString + ":". sFecha = sFecha + cString. "Agosto". sFecha = cString. 10). cString. 10). itoa(tblock->tm_sec. // lee la fecha/hora // convierte la fecha/hora a una estructura tblock = localtime(&timer). 10). Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 20 . "Marzo". sFecha = sFecha + cString + "/". void horaActual(string &sHora). itoa(tblock->tm_mday. cString. timer = time(NULL). "Junio". 10). "Abril". itoa(tblock->tm_mon + 1. cString. "Noviembre". struct tm *tblock. string sFecha. // lee la fecha/hora // convierte la fecha/hora a una estructura tblock = localtime(&timer). 10). // paso por referencia // se espera cFechaCorta como: dd/mm/aa void fechaLargaActual(string &sFechaLarga). } // se espera cFechaCorta como: dd/mm/aa void fechaLargaActual(string &sFechaLarga){ char *meses[] = {"Enero". itoa(tblock->tm_year-100.cpp #include <time. itoa(tblock->tm_min. "Julio". itoa(tblock->tm_hour. struct tm *tblock. cString. cString. int iTemp. using namespace std. "Septiembre". "febrero". // paso por referencia void fechaActual(string &sFecha).h" using namespace std. time_t timer. time_t timer.h> #include "tiempo. void horaActual(string &sHora) { // paso por referencia char cString[25]. "Mayo". cString.7 texto completo de tiempo. "Octubre". } void fechaActual(string &sFecha) { // paso por referencia char cString[25]. sHora = cString. "Diciembre"}. 10). fechaActual(sFecha). timer = time(NULL).

substr(6. } Listado 4. cout << sStr << endl. iTemp = atoi(sFecha.substr(6. 2). return 0. 2). } Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 21 . 2). horaActual(sStr). else sFechaLarga = sFechaLarga + " del 20" + sFecha.data()). int main(void) { string sStr.data()). // dia iTemp = atoi(sFecha.8 texto completo de testTiempo.substr(0. fechaLargaActual(sStr). sFechaLarga = sFecha.substr(6. // mes sFechaLarga = sFechaLarga + " de " + meses[iTemp-1]. 2). 2).substr(3. cout << sStr << endl. cout << sStr << endl. if (iTemp < 10) sFechaLarga = sFechaLarga + " del 200" + sFecha.h" using namespace std. fechaActual(sStr).cpp #include <iostream> #include <string> #include "tiempo.

1 texto completo de structFecha. cout << "\nMes en letra ". . Se declara usando la la palabra reservada class. int main() { Fecha fecha. pero con la posibilidad de incluir funciones ademas de datos.dd.mm. forma: class nombre_de_la_clase { etiqueta_de_nivel_de_permiso_1: Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 22 . 5 Estructuras y clases 5. string mm. agrupadas bajo un mismo nombre. } 5. cout << "\n\n" << fecha. tipo nombre_variable. . la funcionalidad es similar a la palabra reservada struct.cpp // Programa : structFecha.mm << " de " << fecha. } variables_de_estructura. Referenciando los elementos de la estructura: nombre_estructura.2 Clases (class) Una clase es un metodo logico de organizar datos y funciones en una misma estructura.1 Estructuras Una estructura es un conjunto de una o mas variables.cpp // Descripcion: Estructuras #include <iostream> #include <string> using namespace std. cout << "Dia ". cout << "\nA#o ". Forma general: struct etiqueta { tipo nombre_variable. return 0.aa.nombre_elemento Listado 5. posiblemente de tipos. }.dd << " de " << fecha. cin >> fecha. cin >> fecha.aa. cin >> fecha. struct Fecha { int dd. int aa. diferentes. tipo nombre_variable.

Listado 5.. cruel world! " << c. cout << "\nConstructor CCaracter(char ac): " << c. } // funciones miembro void yoSoy(void) { cout << "\nYo soy " << c. // Declara un caracter cout << "\n\n". } void main(){ CCaracter c1. Control de acceso de los miembros del objeto private Los miembros que le siguen a esta palabra reservada solo pueden ser accesados por las funciones miembro declaradas dentro de la misma clase.h> class CCaracter { private: char c. public Los miembros que le siguen a esta palabra reservada pueden ser accesados en cualquier lugar dentro del alcance de la clase..cpp #include <iostream. ~CCaracter() { cout << "\nGood bye. miembros1. } CCaracter::CCaracter(char ac) { c = ac. }.yoSoy(). } void CCaracter::apariencia(char ac) { c = ac. } void apariencia(char ac). // Declara un caracter sin inicializadores CCaracter c2('#'). CCaracter(char ac).2 texto completo de caracter. Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 23 . . etiqueta_de_nivel_de_permiso_2: miembros2. CCaracter::CCaracter() { c = '@'. c1.yoSoy(). c2. cout << "\nConstructor CCaracter(): " << c. public: // funciones constructor CCaracter(). y por las funciones miembro de las clases que son derivadas de esta clase. protected Los miembros que le siguen a esta palabra reservada solo pueden ser accesados por las funciones miembro dentro de la misma clase. } nombre_del_objeto.

void fullDisplay().h> #include <time. dd = a_dd.h> // ----. cout << "\nFin del programa\n". "Marzo". "Octubre". dd = tiempo->tm_mday. #endif // CFECHA_H Listado 5.yoSoy(). } Listado 5. c1.3 texto completo de cfecha. } CFecha(). // Hora y fecha de hoy struct tm *tiempo = localtime(&ahora). dd. "Noviembre". "Julio". } Listado 5.h" int main(void) { CFecha f1.h> #include "cfecha. } void CFecha::fullDisplay() { char *meses[] = {"Enero". aa = a_aa. aa = tiempo->tm_year . public: CFecha(int a_dd. // Funcion de conversion constructor void display(void). "Junio".h #ifndef CFECHA_H #define CFECHA_H class CFecha { private: int mm.Miembro de fecha para deplegarla void CFecha::display() { cout << dd << '/' << mm << '/'<< aa. int a_aa) { mm = a_mm. "Abril". } // ----. "Agosto". "Mayo".4 texto completo de cfecha. "Diciembre"}. mm = tiempo->tm_mon + 1.h" #include <iostream. }. // Invoca la conversion de constructor Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 24 .Funcion de conversion constructor CFecha::CFecha(){ time_t ahora = time(NULL). c1. "febrero".100.apariencia('*').cpp #include "cfecha. cout << dd << " de " << meses[mm-1] << " del " << (2000 + aa).cpp #include <iostream. cout << "\n\n".5 texto completo de testcfecha. int a_mm. "Septiembre". aa.

} Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 25 . f1. 03). 12. CFecha f2(24.display().fullDisplay(). cout << "\n". f2.

ios::in). // encripta else salida.h> #include <stdlib.h lo inluye automaticamente. para e/s fstream salida(argv[2]. if (argc < 3) { cout << "Uso: encripta archivo_fuente archivo_destino [-d]\n". char *argv[]) { char c. } if (salida. ios::out).h>) al incluir este archivo de encabezado ya no es necesario incluir el iostream.h> // exit() #include <ctype. Listado 6.cpp // Programa : encripta. // | ios::out). cout << "\t[-d] desencripta\n".get(c). una abstracción entre el programador y el dispositivo que se usa.cpp //#include <iostream. y fstream – flujo de entrada y salida. if (argc == 3) // si no tiene 4 parametros es encriptacion .1 texto completo de encripta. exit(1). La traducción del carácter nueva linea depende de la implementacion. Esto permite que las corrientes sean independientes de los dispositivos. Existen dos tipos de corrientes: texto y binarias.h> #include <fstream. exit(1). ofstream – flujo de salida.h> int main(int argc. esto es. } fstream entrada(argv[1]. exit(1).put(c+1). 6 Archivos 6. En este archivo estan definidas varias clases.fail()) { cout << "Error al abrir archivo! Abortando". por que el fstream. // desencripta } Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 26 .1 Corrientes de Flujo Corrientes y archivos El sistema de E/S de C++ proporciona una interfaz independiente del dispositivo real al que se accede.put(c-1). 6.) salida. incluyendo ifstream – flujo de entrada. } while (!entrada.fail()) { // tambien-> if (!entrada) cout << "Error al abrir archivo! Abortando".2 Archivos Para utilizar archivos es necesario incluir el archivo fstream.h.eof()){ entrada.h si utiliza cin/cout. Corrientes Almacenamiento temporal de archivo para transformar los dispositivos físicos en un almacenamiento lógico. (#include <fstream. Esta abstracción se llama corriente y el dispositivo real se llama archivo. if (entrada. Corrientes de texto Secuencia de caracteres organizadas en lineas terminadas por un carácter nueva linea.

salida << "<PLAINTEXT>\n".close(). return 0.fail()) { // tambien-> if (!entrada) cout << "Error al abrir archivo! Abortando". if (argc < 3) { cout << "Uso: texto_a_html archivo_texto archivo_html\n". >> Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 27 .txt”. exit(1).h> // exit() #include <ctype.cpp // Descripcion: formatea un archivo de texto a html #include <fstream. // se posiciona exactamente al final del archivo archivo. } if (salida.2 texto completo de texto_a_html. para manejar byte por byte). entrada. se usa el modificador ios::binary al abrir el archivo y no se usan los operadores <<.put(c). ios::end). ios::out). entrada. } Para posicionarse en una parte del archivo se usa la funcion miembro seekg por ejemplo: archivo.seeekg(10. // | ios::out). //se posiciona 10 caracteres despues del inicio Para archivos binarios (no formateados. } fstream entrada(argv[1]. salida. char *argv[]) { char c. exit(1).eof()) { entrada. ios::in).seeekg(0.close(). para e/s fstream salida(argv[2]. salida.get(c).fail()) { cout << "Error al abrir archivo! Abortando". salida << "<H3>" << argv[1] << "</H3>\n". } Para abrir un archivo para entrada y salida usar: fstream archivo(“nombre_archivo. return 0. } salida << "</PLAINTEXT>\n".close(). salida.cpp // texto_a_html.close(). } salida << "<HTML><BODY>". ios::in | ios::out). while (!entrada. ios::beg). Listado 6. salida << "</BODY></HTML>". if (entrada.h> int main(int argc.h> #include <stdlib. exit(1).

Ritchie: “El lenguaje de programación C” segunda edición Prentice Hall 1991 ● [Schildt 1990] Herlbert Schildt: “C The Complete Reference” second edition Osborne McGraw-Hill 1990 ● [Rodriguez 2004] Cesar Rodriguez: “Tutorial de Lenguaje C”.com. Kernighan y Dennis M. Bibliografia ● [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 ● [Kernighan 1991] Brian W. 2004 Tutorial rapido de C++ Rogelio Cesar Rodríguez Cervantes 28 . http://cesar.crbyte.