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

Lenguajes de Programación C / C++ - Inteligencia Artificial

Lenguajes de Programación C / C++ - Inteligencia Artificial

Una introducción a los lenguajes de programación C y C++ cuyos aportes fueron el inicio de la revolución tecnológica que vivimos hoy en día.

En esta presentación encontrará una sección sobre la sintaxis y ejemplos de ambos lenguajes de programación; librerías C++ relacionados a la Inteligencia Artificial y un ejemplo del algoritmo de búsqueda A* (A* Search Algorithm) .

Source Code: https://github.com/gchacaltana/Sintaxis-C-CPP-A-Search-Algorithm

Elaborado por:
Gonzalo Chacaltana Buleje
Arnaldo Ramírez Fernández

Gonzalo Chacaltana

October 20, 2019
Tweet

More Decks by Gonzalo Chacaltana

Other Decks in Programming

Transcript

  1. Agenda 1. Introducción 1. Historia de C / C++ 2.

    C / C++ en Cifras 3. Comparación C / C++ 4. Instalación 5. Hola Mundo 6. Compilación 2. Sintaxis C / C++ 1. Tipos de Datos 2. Variables 3. Operadores 4. Estructuras de control 5. Funciones 6. Clases y Objetos 3. IA y Aplicación C++ 1. Proyectos de AI en C++. 2. Presentación de la aplicación. desarrollada en C++ 3. Ejecución en vivo.
  2. Introducción Historia de C / C++ 1. Historia de C

    / C++ 2. C / C++ en cifras 3. Comparación C y C++ 4. Instalación 5. Hola Mundo 6. Compilación
  3. ¿Qué es C? Es un lenguaje de programación multiplataforma e

    imperativo de propósito general, aunque es ampliamente usado para el desarrollo de sistemas operativos, sistemas embebidos y compiladores. . Creador Dennis Ritchie 1941 - 2011 Su diseño fue una evolución de los lenguajes de programación: B y BCPL
  4. ¿Qué es C++? Es un lenguaje de programación multiplataforma, multiparadigma,

    funcional e imperativo, ampliamente utilizado en muchas industrias a nivel mundial. Su diseño combina las mejoras características de dos lenguajes de programación: SIMULA y C. Creador Bjarne Stroustrup 1950 - Actualidad Billing Module Fuente: Software built-in C++
  5. 2000 1995 1990 Bjarne Stroustrup diseña “C with Classes”. 1985

    1980 1975 1970 1965 1960 1979 1983 Lanzamiento de Simula 67. Por Ole Johan Dahl y Kristen Nygaard. Simula fue el primer lenguaje de programación en incluir los conceptos de la POO (1962) Dennis Ritchie crea el lenguaje C. Se re-escribe el S.O Unix en C. 1972 1967 “C with Classes” cambia de nombre a Lenguaje de Programación C++ Kenneth Thompson crea el lenguaje B 1969 Se desarrolla el lenguaje BCPL, por Martin Richards 1966 1978 D. Ritchie y Brian Kernighan publican el libro “The C Programming Language” B. Stroustrup publica el libro “The C++ Programming Language”. 1985 Lanzamiento de compilador Turbo C++ por Borland Software Corporation 1990 Se estandariza el Lenguaje C++ bajo la ISO 14882:1998 1998 1990 Se estandariza el lenguaje C bajo la ISO 9899:1999. Considerado como el último cambio más importante del lenguaje C 1999 Se estandariza el lenguaje C bajo la ISO 9899:1990 Cronología C / C++ (1960 - 2000)
  6. 2000 2017 2018 2020 2014 2011 Lanzamiento versión C++ 11.

    ISO/IEC 14882:2011. Se agregan las funciones Lambda Lanzamiento versión C++ 14. ISO 14882:2014. Inicio de CPPCon Lanzamiento versión C++ 17. ISO 14882:2017 (Última versión estable) Proximamente: C++20. Lanzamiento versión C18. ISO 9899:2018 (Última versión estable) Lanzamiento versión C 11. ISO/IEC 9899:2011 https://www.youtube.com/watch?v=QDvic0QNtOY https://www.youtube.com/watch?v=u_ij0YNkFUs Cronología C / C++ (2000 - 2020)
  7. Introducción C / C++ en Cifras 1. Historia de C

    / C++ 2. C / C++ en cifras 3. Comparación C y C++ 4. Instalación 5. Hola Mundo 6. Compilación
  8. C / C++ en Cifras Cantidad de Pull Request de

    proyectos en Github Cantidad de Push de código en proyectos Github RANKING GITHUB 2019 - 2DO TRIMESTRE Fuente: https://madnight.github.io/githut/#/pull_requests/2019/1
  9. C / C++ en Cifras TIOBE INDEX - OCTUBRE 2019

    El índice TIOBE Programming Community es un indicador de la popularidad de los lenguajes de programación. El índice se actualiza una vez al mes. Es importante tener en cuenta que el índice TIOBE no se trata del mejor lenguaje de programación o del lenguaje en el que se han escrito la mayoría de las líneas de código. Fuente: https://www.tiobe.com/tiobe-index/
  10. Demanda laboral de C / C++ Fuente: HackerEarth (2017), es

    uno de los sitios web de reclutamiento de profesionales TI de mayor tráfico en los Estados Unidos y en más de 50 países del mundo. URL: https://cutt.ly/XwK5EtG
  11. Demanda laboral de C / C++ Fuente: HackerEarth (2017), es

    uno de los sitios web de reclutamiento de profesionales TI de mayor tráfico en los Estados Unidos y en más de 50 países del mundo. URL: https://cutt.ly/XwK5EtG
  12. Demanda laboral de C / C++ Fuente: HackerEarth (2017), es

    uno de los sitios web de reclutamiento de profesionales TI de mayor tráfico en los Estados Unidos y en más de 50 países del mundo. URL: https://cutt.ly/XwK5EtG
  13. Demanda laboral de C / C++ Fuente: HackerEarth (2017), es

    uno de los sitios web de reclutamiento de profesionales TI de mayor tráfico en los Estados Unidos y en más de 50 países del mundo. URL: https://cutt.ly/XwK5EtG
  14. Introducción Comparación C / C++ 1. Historia de C /

    C++ 2. C / C++ en cifras 3. Comparación C y C++ 4. Instalación 5. Hola Mundo 6. Compilación
  15. Comparación Es un lenguaje netamente imperativo. Soporta la programación imperativa

    y orientada a objetos. Lenguaje con un nivel más bajo de abstracción. Lenguaje con un nivel bajo de abstracción Gestión manual de la memoria. Gestión manual de la memoria. Es un lenguaje compilado, muy ligero, con bajo uso de memoria. Es un lenguaje compilado, ligero. Tiene un rendimiento muy rápido. Rendimiento rápido Es Multiplataforma Es Multiplataforma Muy utilizado en sistemas embebidos, desarrollo de compiladores y sistemas operativos. Muy utilizado en el desarrollo backend de aplicaciones de negocio, drivers de dispositivos, juegos y componentes de telecomunicaciones.
  16. Introducción Instalación 1. Historia de C / C++ 2. C

    / C++ en cifras 3. Comparación C y C++ 4. Instalación 5. Hola Mundo 6. Compilación
  17. Instalación Ubuntu Linux 1. $ apt-get-upgrade 2. $ apt-get-update 3.

    $ apt-get-install build-essential Microsoft Windows 1. Descargar MinGW - https://osdn.net/projects/mingw/downloads/68260/mingw-get- setup.exe/ 2. Seguir los pasos del instalador. 3. PATH=%PATH%; C:\MinGW\bin\
  18. Introducción Hola Mundo C / C++ 1. Historia de C

    / C++ 2. C / C++ en cifras 3. Comparación C y C++ 4. Quienes usan C / C++ 5. Instalación 6. Hola Mundo 7. Compilación
  19. Hola Mundo en C y en C++ Lenguaje C 1.

    #include <stdio.h> 2. int main(void) 3. { 4. // printf() imprime la cadena 5. // entrecomillada 6. printf("Hello, World!"); 7. return 0; 8. } Lenguaje C++ 1. #include <iostream> 2. using namespace std; 3. int main() 4. { 5. /* cout muestra la cadena 6. entrecomillada */ 7. cout << "Hello, World!"; 8. return 0; 9. }
  20. Introducción Compilación 1. Historia de C / C++ 2. C

    / C++ en cifras 3. Comparación C y C++ 4. Quienes usan C / C++ 5. Instalación 6. Hola Mundo 7. Compilación
  21. Compilación Linux Se invoca al compilador g++ con el nombre

    del archivo a compilar y se especifica el nombre del archivo de salida con la opción -o $ g++ programa.cpp -o programa $ ./programa
  22. Sintaxis C / C++ Tipo de datos 1. Tipo de

    datos 2. Variables y Constantes 3. Operadores 4. Estructuras de control 5. Funciones 6. Clases y Objetos
  23. Tipos de datos Lenguaje C - int - float -

    double - char - void Lenguaje C++ - unsigned char, char - short int - unsigned int, int - unsigned long, long - float - double - long double - void
  24. Sintaxis C / C++ Variables y Constantes 1. Tipo de

    datos 2. Variables y Constantes 3. Operadores 4. Estructuras de control 5. Funciones 6. POO
  25. Variables y Constantes Lenguaje C <tipo_dato> <identificador>; <tipo_dato> <identificador> =

    <valor>; const <tipo_dato> <identificador>; const <tipo_dato> <identificador> = <valor>; EJEMPLO https://tinyurl.com/urp-ia-00-01 Lenguaje C++ <tipo_dato> <identificador>; <tipo_dato> <identificador> = <valor>; <tipo_dato> <id_1>, <id_2> ; const <tipo de dato> <identificador>; const <tipo_dato> <identificador> = <valor>; EJEMPLO https://tinyurl.com/urp-ia-00-02
  26. Sintaxis C / C++ Operadores 1. Tipo de datos 2.

    Variables y Constantes 3. Operadores 4. Estructuras de control 5. Funciones 6. Clases y Objetos
  27. Operadores De asignación = Aritméticos + - * / %

    ++ -- Relacionales > >= < <= == != Lógicos && || ! Compuestos += -= *= /= %= EJEMPLO https://tinyurl.com/urp-ia-00-03
  28. Sintaxis C / C++ Estructuras de control 1. Tipo de

    datos 2. Variables y Constantes 3. Operadores 4. Estructuras de control 5. Funciones 6. Clases y Objetos
  29. De decisión simple if (<expresión_1>){ // sentencias si V }

    else if(<expresión_2>){ // sentencias si // expresion_1 es falsa y // expresion_2 es verdadera } else{ // sentencias si todas // las expresiones son falsas. } Estructuras de Control EJEMPLO https://tinyurl.com/urp-ia-00-04
  30. De decisión múltiple switch(<expresión>){ case <valor_1>: // si expresion =

    valor_1 break; case <valor_2>: // si expresion = valor_2 break; default: // si expresion != valor_1 // y expresion != valor_2 } Estructuras de Control EJEMPLO https://tinyurl.com/urp-ia-00-05
  31. Estructuras de Control for for(int i = 0; i <

    N; i++) { cout << i << endl; } while - do int i = 0; while(i < N) { cout << i << endl; i++; } do - while int i = 0; do { cout << i << endl; i++; }while(i < N); EJEMPLO https://tinyurl.com/urp-ia-00-06
  32. Sintaxis C / C++ Funciones 1. Tipo de datos 2.

    Variables y Constantes 3. Operadores 4. Estructuras de control 5. Funciones 6. Clases y Objetos
  33. Funciones - reutilización de código PROTOTIPO <tipo_ret> <id>(<lista_tipos_args>); float raiz_cubica(

    float ); IMPLEMENTACIÓN <tipo_ret> <id> ( <lista_tipos_args> ){ <sentencias> return <valor_ret>; } float raiz_cubica(float numero) { return pow(numero,1.0/3); } INVOCACIÓN //--- <id> ( <lista_valores> ) //--- //--- cout << raiz_cubica(50); //--- EJEMPLO https://tinyurl.com/urp-ia-00-07
  34. Sintaxis C / C++ Clases y Objetos 1. Tipo de

    datos 2. Variables y Constantes 3. Operadores 4. Estructuras de control 5. Funciones 6. Clases y Objetos
  35. Clases y Objetos C++ Declaración de una clase class TFraccion

    { private: int num, den; public: TFraccion(int, int); TFraccion suma(const TFraccion& f); void imprimir(); protected: //… solo para las clases derivadas } ; Implementación de las funciones miembro //Constructor TFraccion::TFraccion(int n, int d){ num = n; den = d; } //Destructor TFraccion::~TFraccion(){ //… liberar memoria y otros. } //Funciones void TFraccion::imprimir() { cout << num << '/' << den; }
  36. Clases y Objetos C++ Instancia de una clase //f1: objeto

    pertenece a la clase TFraccion TFraccion f1(1, 2); //pf: apuntador a un objeto TFraccion TFraccion* pf = new TFraccion(3, 4); Invocando a una función f1.imprimir(); pf->imprimir(); Sobrecarga de operadores //operador suma sobrecargado TFraccion operator+(const TFraccion& f); //operador << sobrecargado friend ostream& operator<<(ostream& os, TFraccion f); ; EJEMPLO https://tinyurl.com/urp-ia-00-08
  37. Funciones Lambda C++ Funciones Lambda C++ Son funciones anónimas que

    son creadas en tiempo de ejecución y no en tiempo de compilación. Las funciones lambda se introdujeron en la versión C++ 11
  38. IA y C++ Proyectos de AI en C++ 1. Proyectos

    AI en C++ 2. Librerías AI en C++ 3. Aplicación C++
  39. Proyectos de IA en C++ Armadillo Librería C ++ para

    álgebra lineal y computación científica. Brood War API: framework C ++ Open Source que permite crear agentes de IA que juegan en tiempo real de Star Craft. BWAPI Leela Chess Zero is a free, opensource and neural network- based chess engine. Shark C++ Librería que ofrece métodos de optimización lineal y no lineal. Basada en el aprendizaje de los algoritmos de redes neuronales Boost C++ Libraries Conjunto de librerías C ++ utilizada en grandes operaciones matemáticas.
  40. Aplicación C++ Búsqueda A* Se plantea un algoritmo A* implementado

    en C++ para hallar la ruta entre dos puntos aleatoriamente inicializados en una matriz de 60x60. Se incluye un obstáculo en forma de cruz en el centro de la matriz. Se consideran los 8 movimientos posibles a partir de un punto, numerados en sentido horario, a partir del 0 (03:00 en punto). El algoritmo muestra los pasos desde el punto inicial S hasta el punto final F.