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

Algunas ideas básicas de C++

Embed Size (px)

DESCRIPTION

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 . - PowerPoint PPT Presentation

Citation preview

Page 1: Algunas ideas básicas de C++

1

Algunas ideas básicas de C++

Agustín J. GonzálezELO-320

Page 2: Algunas ideas básicas de C++

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.

Page 3: Algunas ideas básicas de C++

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 CDatos+procedimientos = programaTípico: funcion(parametros); Los datos son pasados a las acciones.

Computación en C++ objetos = programaObjeto = Nombre+Estado+comportamientoTípico: objeto.metodo(parametros)Se le pide a un objeto que haga una tarea.

Page 4: Algunas ideas básicas de C++

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

Page 5: Algunas ideas básicas de 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.

Page 6: Algunas ideas básicas de C++

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?

Page 7: Algunas ideas básicas de C++

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);

Page 8: Algunas ideas básicas de C++

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

Page 9: Algunas ideas básicas de C++

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

Page 10: Algunas ideas básicas de C++

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

Page 11: Algunas ideas básicas de C++

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();}

Page 12: Algunas ideas básicas de C++

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; }

Page 13: Algunas ideas básicas de C++

13

Asociatividad--->

--->--->--->--->--->--->--->--->---><---<---

---->

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.

Page 14: Algunas ideas básicas de C++

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.

Page 15: Algunas ideas básicas de C++

15

Vectores Pueden crecer según nuestra necesidad

vector <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++) // .....

Page 16: Algunas ideas básicas de C++

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]

Page 17: Algunas ideas básicas de C++

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.

Page 18: Algunas ideas básicas de 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 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)

Page 19: Algunas ideas básicas de C++

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 complexvalores booleanos bool.halgoritmos genéricos algorithmAbstracción vector vectorAbstracción lista listAbstracción conjunto setAbstracción mapa map