1 / 19

Algunas ideas básicas de C++

Algunas ideas básicas de C++. Agustín J. González ELO-320. Introducción. Si ustedes han aprendido otro lenguaje, podrán ubicarse rápidamente Es un lenguaje Orientado a Objetos. Un objeto es una entidad que contiene: nombre, estado y comportamiento .

audra-lyons
Download Presentation

Algunas ideas básicas de C++

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Introducción • Si ustedes han aprendido otro lenguaje, podrán ubicarse rápidamente • Es un lenguaje Orientado a Objetos. • Un objeto es una entidad que contiene: nombre, estado y comportamiento. • Los programas se ven como interacción entre objetos, no como conjunto de datos y funciones separados.

  3. Cambio de visión • Aún cuando C++ es un superconjunto de C (i.e. lo válido en C también lo es en C++), lo más relevante es el manejo de objetos en C++. • Computación en C • Datos+procedimientos = programa • Típico: funcion(parametros); • Los datos son pasados a las acciones. • Computación en C++ •  objetos = programa • Objeto = Nombre+Estado+comportamiento • Típico: objeto.metodo(parametros) • Se le pide a un objeto que haga una tarea.

  4. Cambio de visión • Variables son a tipos en C como objetos son a clases en C++. • Los objetos son instancias de alguna clase. • Un programa típico define clases, y luego en el main crea objetos de esas clases y los pone a trabajar. • El main sigue la estructura de procedimientos/función de C. • Hay clases predefinidas en C++.

  5. Cosas nuevas que se pueden hacer en C++ • Podemos crear clases. Si hay clases relacionadas , podemos crear una en base a otra (herencia o relación es-un). • Polimorfismo: El prototipo de una función queda definido en forma unívoca con su nombre más la lista de parámetros, luego se permite:swap(int *a, int *b); y swap(float *a, float *b); en el mismo programa. • Se puede hacer ligado dinámico. Básicamente es definir la función a llamar en tiempo de ejecución. Se invoca un comportamiento, pero sobre el objeto de turno=> distinto código.

  6. Cosas nuevas que se pueden hacer en C++ • En C++ se puede definir el significado de los operadores cuando éstos actúan sobre nuestros objetos. Por ejemplo si Estudiante es una clase, podemos hacer;Estudiante a(“Eduardo”), b(“Ivan”);if (a > b) .... • Se pueden crear templates (plantillas). Éstas permiten definir modelos de funciones o clases similares.Ej: swap(int *a, int*b) y swap(float*a, float*b)Para qué hacer dos funciones?

  7. Cosas nuevas que se pueden hacer en C++ • Paso de parámetro por referencia:swap (int & a , int & b) {....} • Luego invoco: int x, y; swap(x,y);

  8. 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 0código comentado#endif • Hay mucho más que aprender sobre el preprocesador, ver: http://profesores.elo.utfsm.cl/~agv/elo329/miscellaneous/preprocessor.pdf

  9. 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

  10. Salida de Datos • #include <iostream>int main (void){ cout << “Hello, world” << endl; return 0;} • iostream debe ser incluido para hacer uso de las operaciones de entrada y salida. • Es posible enviar datos a la salida estándar y a archivos: • #include <fstream>ofstream os (“output.dat”);os << “The value of pi is approx. “ << 3.14.159 << endl;....

  11. Entrada de Datos #include <iostream> #include <fstream> using namespace std; // en ocasiones no exigido, para acceder a cout int main() { int i; ifstream fin; fin.open("test"); // test contains 3 ints for (int j=0;j<3;j++) { fin >> i; cout << i << endl; } fin.close(); }

  12. Lectura desde archivo #include <string> #include <fstream> #include <iostream> using namespace std; int main() { string s; ifstream fin; fin.open("/etc/passwd"); while(getline(fin,s)) cout << s << endl; }

  13. Operadores aritméticos Precedencia en orden decreciente () [] -> . ---> ! ~ ++ -- + (unario) - (unario) *(referencia) & (dirección) (tipo) sizeof * / % ---> + - << >> < <= > >= == != & ^ | && || ? : = += -= *= /= %= &= ^= |= >>= <<= , En principio podríamos usar and en lugar de && y or en lugar de ||; sin embargo, éstos no están soportados por todos los compiladores. Asociatividad ---> ---> ---> ---> ---> ---> ---> ---> ---> ---> <--- <--- ---->

  14. 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). Las plantillas es todo un tema en C++, pero su uso es muy simple:vector <X> a(n);crea un arreglo “astuto” de tipo X con espacio para n elementos. • El acceso es a[i] • Puede crecer a voluntad.

  15. Vectores • Pueden crecer según nuestra necesidadvector <double> 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 en:for (int i=0; i < a.size(); i++) // .....

  16. 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 12char ch = s[0];String t = s.substr(0,4); // Substring de s[0] a s[4]

  17. 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.

  18. 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 hacervoid 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)

  19. Archivos includes • Muchas estructuras de datos requieren que uno defina un archivo de inclusión antes que podamos usarlas. • Propósito Nombre stream input/output iostream funciones matemáticas math.h números complejos complex valores booleanos bool.h algoritmos genéricos algorithm Abstracción vector vector Abstracción lista list Abstracción conjunto set Abstracción mapa map

More Related