Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Poor's man C++ presentation

Poor's man C++ presentation

Ezequiel Garcia

December 14, 2013
Tweet

More Decks by Ezequiel Garcia

Other Decks in Programming

Transcript

  1. Vi luz y entré Vi luz y entré • No

    es un curso de programación • No es un curso de OO • No es un curso de wikipedia ni de google
  2. Vi luz y entré Vi luz y entré • No

    es un curso de programación • No es un curso de OO • No es un curso de wikipedia ni de google • … no es un curso
  3. Vi luz y entré Vi luz y entré • No

    es un curso de programación • No es un curso de OO • No es un curso de wikipedia ni de google • … no es un curso • Es un rasguño de C++
  4. Hello world Hello world #include <iostream> int main() { std::cout

    << "Hello world!" << std::endl; return 0; }
  5. A los bifes! A los bifes! $ git clone \

    https://bitbucket.org/emiliolopez/cppcrashcourse.git $ cd cppcrashcourse $ make $ ${EDITOR} intro.cpp
  6. Un poco de (pre) historia... Un poco de (pre) historia...

    • 1972 Ken Thompson y Dennis Ritchie empiezan a trabajar en una idea que llamaron Unix... • 1972 … y en una sucesión de lenguajes que resultarían en el lenguaje C. • 1973 Unix se re-escribe en lenguaje C
  7. Ritchie y Thompson trabajando en su pequeña compu Ritchie y

    Thompson trabajando en su pequeña compu
  8. Más historia Más historia • 1983 Nace C++, creado por

    Bjarne Stroustrup • 1992 Linus Torvalds libera Linux v0.99 • 1994 Guido Van Rossumn libera Python v1.0 • 2013 Acá estamos...
  9. C más qué ?!?! C más qué ?!?! • En

    el lenguaje C se define el operador de incremento con el símbolo ++. • El nombre C++ vendría a ser C y uno más • Un pedazo de código en C, también es (casi) un pedazo de código en C++. • ¡Tenemos que empezar con C!
  10. La sintaxis de C (a los apurones) La sintaxis de

    C (a los apurones) • Variables • Operadores • Control de flujo • Tipos definidos por el usuario
  11. La sintaxis de C (a los apurones) La sintaxis de

    C (a los apurones) • Variables • Operadores • Control de flujo • Tipos definidos por el usuario
  12. La sintaxis de C (a los apurones) La sintaxis de

    C (a los apurones) • Variables • Operadores • Control de flujo • Tipos definidos por el usuario
  13. Operadores Operadores • Asignación compuesta a += 1; b *=

    2; • Incremento y decremento count++; money--;
  14. Operadores Operadores • Comparación filesize > 1024; weight >= 60;

    ready != false • … esto y mucho más en: https://en.wikipedia.org/wiki/Operators_in_C_and_C++
  15. La sintaxis de C (a los apurones) La sintaxis de

    C (a los apurones) • Variables • Operadores • Control de flujo • Tipos definidos por el usuario
  16. Ejecución condicional Ejecución condicional if (a == b) { a

    = 0; } if (a > b) { c = 1; } else { c = -1; }
  17. Bucles Bucles for (int i=0; i < 10; i++) {

    c = c + 2; } while (is_done != true) { a--; }
  18. La sintaxis de C (a los apurones) La sintaxis de

    C (a los apurones) • Variables • Operadores • Control de flujo • Tipos definidos por el usuario
  19. Definir un nuevo tipo Definir un nuevo tipo • Las

    estructuras permiten la definición de nuevos tipos de datos. struct person { char gender; unsigned int age; };
  20. Definir un nuevo tipo Definir un nuevo tipo // emiliano

    es una persona! person emiliano = { 'M', 18 }; // … y puede beber if (emiliano.age > 18) can_drink = true;
  21. C++ C++ • Soporte explícito para OO • Excepciones •

    Programación genérica • Sobrecarga de operadores
  22. C++ C++ • Soporte explícito para OO – Clases –

    Herencia • Excepciones • Programación genérica • Sobrecarga de operadores • Soporte de referencias explícitas
  23. Bonus track Bonus track • Los conceptos de OO no

    son exclusivos de un lenguaje que los soporte explicítamente. Se puede diseñar mucho software object-oriented en C puro. • Lectura recomendada: – http://lwn.net/Articles/444910/ – http://lwn.net/Articles/446317/
  24. Modificadores de acceso Modificadores de acceso • http://en.wikipedia.org/wiki/Access_modifiers • public

    La variable o función se puede acceder desde cualquier contexto. • private ... solamente se puede acceder desde otro miembro de la clase.
  25. Modificadores de acceso Modificadores de acceso class Window { private:

    int x, y; public: void Show(); void Hide(); };
  26. Herencia Herencia class Window { private: int _x, _y; public:

    virtual void Show(); virtual void Hide(); };
  27. Los punteros (son jodidos) Los punteros (son jodidos) • Los

    punteros son un concepto del lenguaje C que nos permite definir una referencia indirecta a una variable. • En C++ podemos apuntar a instancias de una clase y pasarlas como argumento por referencia.
  28. Preparen, apunten, ... Preparen, apunten, ... • Puntero a variable

    primitiva: int a = 2; int* p_to_a = &a; • Puntero a instancia Calc* mycalc: mycalc = new Calc();
  29. new new • C++ introduce un operador new para instanciación

    de clases. • Antes de finalizar la instanciación, C++ invoca el constructor de la clase. Este debe dar valores a todos los miembros de la clase. • Bugs inexplicables y clientes furiosos son el resultado de no hacerlo.
  30. delete delete • Cuando una instancia ya no es necesaria,

    el operador delete nos permite su destrucción explícita e inmediata. • C++ invoca al destructor para liberar todos los recursos alocados. • Las instancias con scope automático, van a invocar su constructor y destructor automáticamente.
  31. El puntero this El puntero this class Window { public:

    ~Window() { this->Hide(); Release(_surface); } };
  32. Variables automáticas Variables automáticas void foo() { Window win; win.Show();

    } // Al salir de la función, el destructor va a invocar Hide()
  33. Variables automáticas Variables automáticas void foo() { Window win; win.Show();

    } // Al salir de la función, el destructor va a invocar Hide()