1 Algunas ideas básicas de C++ Agustín J. González ELO-329.

1 1 Algunas ideas básicas de C++ Agustín J. González ELO-...
Author: Javier Plaza Vidal
0 downloads 0 Views

1 1 Algunas ideas básicas de C++ Agustín J. González ELO-329

2 2 Archivos de encabezado Son necesarios para hacer uso de constantes predefinidas. Son incluidos con la directiva de l procesador #include Ejemplo: #include #include #include “setup.h” la búsqueda se hace en lugares “estándares” En Visual C++ \ MSDEV \ INCLUDE En Linux, Mirar man gcc. –/usr/include standard directory for #include files –LIBDIR/include standard gcc directory for #include files –LIBDIR/g++-include additional g++ directory for #include –LIBDIR is usually /usr/local/lib/machine/version. Pero en Aragorn está en: /usr/include/g++-3

3 3 Comentarios // Para comentarios de una línea /*......... */ Para comentarios de múltiples líneas No se permiten los comentarios alineados. Éstos son extraídos por el preprocesador, el cual no tiene capacidad de reconocer estas estructuras gramaticales. #if 0 código comentado #endif Hay mucho más que aprender sobre el preprocesador, ver: http://profesores.elo.utfsm.cl/~agv/elo329/miscellaneous/preprocessor.pdf

4 4 Tipos de Variable Int short in ( o short) long int (o long) unsigned int (o unsigned) unsigned long int (o unsigned long) unsigned short int (unsigned short) char float double long double bool

5 5 Salida de Datos #include int main (void) { cout

6 6 Entrada de Datos #include using namespace std; int main() { int i; ifstream fin; fin.open("test"); // test contains 3 ints for (int j=0;j> i; cout

7 7 Lectura desde archivo #include using namespace std; int main() { string s; ifstream fin; fin.open("/etc/passwd"); while(getline(fin,s)) cout

8 8 Operadores aritméticos Precedencia en orden decreciente () [] ->. ---> ! ~ ++ -- + (unario) - (unario) *(referencia) & (dirección) (tipo) sizeof * / % ---> + - > >= == != & ^ | && || ? : = += -= *= /= %= &= ^= |= >>=

9 9 Asignaciones, Arreglos y Vectores Todas asignación tiene un valor, aquel asignado. ANSI C++ usa el mismo constructor de arreglo que C Como los arreglo de C no son particularmente poderosos, C++ incorpora los vectores. Los vectores son una forma de plantilla (template). Su creación la veremos más adelante, pero su uso es muy simple: vector a(n); crea un arreglo “astuto” de tipo X con espacio para n elementos. El acceso es a[i]

10 10 Vectores Pueden crecer según nuestra necesidad vector a; Inicialmente a está vacío. Para hacerlo crecer: a.push_back(0.3); a.push_back(56.2); También podemos hacer que el vector crezca en varios elementos: a.resize(10); podemos preguntar por el tamaño de un vector con a.size(); como es: for (int i=0; i < a.size(); i++) //.....

11 11 Strings En ANSI C++ tenemos acceso a una poderosa clase para string. Ésta tiene definido el operador copia =, el operador concatenación + y operadores relacionales ==, !=,, >=, entre otros. El operador [ ] provee acceso a elementos individuales. Existen muchos métodos en esta clase como substr para extraer un substring: String s = “Hola a todos”; int n = s.length(); // n es 12 char ch = s[0]; String t = s.substr(0,4); // Substring de s[0] a s[4]

12 12 Control de Flujo Se dispone de de las opciones comunes en C. If (condición) block1 // Un bloque se delimita con { } else block2 La parte else es opcional. While (condición) block do block while (condición); for(expresión; expresión2; expresión3) instrucción_a_repetir switch : análoga a C.

13 13 Paso por referencia En C++ tenemos un nuevo tipo de paso de argumentos, el paso por referencia. Equivale a la opción C en que usamos punteros para obtener el mismo efecto. Ejemplo: En C++ podemos hacer void swap (int & x, int & y) { int tmp = x; x=y; y=tmp; } El llamado se hace swap(a,b); Equivalentemente en C: void cswap(int * px, int * py) { int tmp = *x; *x = *y; *y=tmp; } El llamado se hace cswap(&a, &b)

14 14 Fin