¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí.
  1. Libros
  2. C++ - De los fundamentos del lenguaje a las aplicaciones

C++ De los fundamentos del lenguaje a las aplicaciones

  • 5% de descuento en todos los libros, con el código 5DESCUENTO
  • Disponible. Expedido en 24 horas
  • Envío gratis a partir de 25 € de compra
  • Versión online gratis por un año
  • 5% de descuento en todos los libros, con el código 5DESCUENTO
  • Acceso inmediato durante 10 años
  • Versión online digital, no descargable
  • Acceso ilimitado 24/7, durante 10 años
  • Acceso ilimitado 24/7, durante 10 años
  • Todos los libros online de ENI
  • Más de 5 novedades todos los meses
  • Novedades disponibles el mismo día de su publicación
  • Acceso 100% online

Presentación

Este libro está dirigido a cualquier desarrollador que desee aprender el lenguaje C ++, como parte de sus estudios o para consolidar su experiencia profesional.

El primer capítulo presenta los aspectos básicos de la sintaxis del lenguaje, así como la organización de los programas. El siguiente capítulo es una transición a C++. Explica los conceptos clave para crear sus primeras aplicaciones: estructuras, punteros, librería estándar, etc. El tercer capítulo detalla la programación orientada a objetos y los mecanismos específicos del lenguaje (herencia, modelos de clase, etc.). Luego viene el estudio de la STL (Standard Template Library), presentada a través de sus mecanismos más importantes: cadenas, estructuras de datos y rutas de recolección. Las evoluciones modernas de C++ como las expresiones lambda, los smart-pointers y la inferencia de tipos, también se estudian de manera previa a la librería boost. Un capítulo abre C++ en a universos, como el entorno gestionado.NET C++ CLI y las aplicaciones Win32.

Como ejemplo ilustrativo de las posibilidades de C ++ para crear todo tipo de aplicaciones, el autor ofrece un ejemplo completo de una hoja de cálculo gráfica, un intérprete de lenguaje tiny-Lisp o un programa de compresión de archivos.

El libro termina con un capítulo dedicado a la optimización, métodos de diseño orientados a objetos UML y design patterns, seguido de un capítulo que aplica algoritmos esenciales en C++ que tratan del reconocimiento de patrones, la búsqueda en un grafo y la compresión de datos.

Índice

  • Prólogo
    • 1. Objetivos de este libro
    • 2. Trabajos prácticos
  • Introducción
    • 1. Nociones clave
      • 1.1 Principales características del lenguaje C++
      • 1.2 Programación orientada a objetos
      • 1.3 Entorno de desarrollo y archivo makefile
        • 1.3.1 Elección de un EDI
        • 1.3.2 Construcción de un archivo makefile
      • 1.4 Organización de un programa C++
        • 1.4.1 Código fuente
        • 1.4.2 Módulos de objeto
        • 1.4.3 Librerías
        • 1.4.4 Ejecutable
      • 1.5 Preprocesador
      • 1.6 Elección de un compilador
      • 1.7 Enlazador
    • 2. Bases de la programación C++
      • 2.1 Declaración de variables
        • 2.1.1 Utilidad de las variables
        • 2.1.2 Ámbito de las variables
        • 2.1.3 Sintaxis de declaración
        • 2.1.4 Tipos de datos
      • 2.2 Instrucciones de pruebas y operadores
        • 2.2.1 Instrucciones de prueba
        • 2.2.2 Operadores
      • 2.3 Instrucciones de bucle
        • 2.3.1 El bucle for
        • 2.3.2 El bucle while
        • 2.3.3 El bucle do
        • 2.3.4 Las instrucciones de salto
      • 2.4 Arrays
      • 2.5 Funciones y prototipos
        • 2.5.1 Declaración de una función
        • 2.5.2 Funciones y procedimientos
        • 2.5.3 Llamada de las funciones
        • 2.5.4 Gestión de las variables locales
        • 2.5.5 Definición de funciones homónimas (polimorfismo)
        • 2.5.6 Funciones con número variable de argumentos
        • 2.5.7 Asignación de valores por defecto a los argumentos
        • 2.5.8 Funciones en línea
        • 2.5.9 Funciones externas de tipo C
        • 2.5.10 Funciones recursivas
        • 2.5.11 La función main()
      • 2.6 Punteros
        • 2.6.1 Punteros de variables
        • 2.6.2 Punteros y arrays
        • 2.6.3 Asignación de memoria
        • 2.6.4 Aritmética de los punteros
        • 2.6.5 Punteros de punteros
        • 2.6.6 Punteros de funciones
      • 2.7 Referencias
      • 2.8 Constantes
        • 2.8.1 Constantes simbólicas
        • 2.8.2 El tipo void
        • 2.8.3 Los alias de tipo: typedef
        • 2.8.4 Constantes y enumeraciones
    • 3. Excepciones
      • 3.1 Los enfoques de bajo nivel
        • 3.1.1 Banderas e interrupciones
        • 3.1.2 Tratamiento de los errores en lenguaje C
      • 3.2 Las excepciones son más seguras que los errores
      • 3.3 Propagación explícita
      • 3.4 Tipos de excepciones personalizadas
        • 3.4.1 Definición de clases de excepción
        • 3.4.2 Instanciación de clases
        • 3.4.3 Clases de excepción derivadas
      • 3.5 Manejo de una excepción y reactivación
      • 3.6 Excepciones no interceptadas
      • 3.7 Adquisición de recursos
    • 4. Trabajos prácticos
      • 4.1 Control del intérprete tiny-lisp
        • 4.1.1 Estructura de la solución
        • 4.1.2 La carpeta config
        • 4.1.3 La carpeta framework
        • 4.1.4 La carpeta jsonlib
        • 4.1.5 La carpeta language
        • 4.1.6 La carpeta modules
        • 4.1.7 La carpeta scriptboxes
      • 4.2 Utilizar el intérprete en modo interactivo
      • 4.3 Código del bucle principal
        • 4.3.1 La función main()
        • 4.3.2 El bucle eval_loop()
        • 4.3.3 Utilizar el depurador
      • 4.4 Utilizar el intérprete desde tinylisplab
  • De C a C++
    • 1. Programación estructurada
      • 1.1 Estructuras
        • 1.1.1 Constitución de una estructura
        • 1.1.2 Instanciación de estructuras
        • 1.1.3 Instanciación con el operador new
        • 1.1.4 Punteros y estructuras
        • 1.1.5 Organización de la programación
      • 1.2 Uniones
      • 1.3 Copia de estructuras
      • 1.4 Creación de alias de tipos de estructuras
      • 1.5 Estructuras y funciones
        • 1.5.1 Pasar una estructura por valor como argumento
        • 1.5.2 Pasar una estructura por referencia como argumento
        • 1.5.3 Pasar una estructura por dirección como argumento
        • 1.5.4 De la programación funcional a la programación orientada a objetos
    • 2. Gestión de la memoria
      • 2.1 Alineación de los datos
      • 2.2 Asignación de memoria interprocesos
    • 3. La librería estándar de C
      • 3.1 Las funciones comunes del lenguaje C <stdlib.h>
      • 3.2 Cadenas<string.h>
      • 3.3 Archivos<stdio.h>
    • 4. Trabajos prácticos
      • 4.1 Carga de scripts en tiny-lisp
      • 4.2 Eliminar los errores relacionados con la librería no segura
  • Programación orientada a objetos
    • 1. Clases e instancias
      • 1.1 Definición de clase
        • 1.1.1 Los modificadores de acceso
        • 1.1.2 Organización de la programación de las clases
      • 1.2 Instanciación
      • 1.3 Constructor y destructor
        • 1.3.1 Constructor
        • 1.3.2 El puntero this
        • 1.3.3 Destructor
        • 1.3.4 Destructor virtual
      • 1.4 Asignación dinámica
      • 1.5 Constructor de copia
    • 2. Herencia
      • 2.1 Derivación de clase (herencia)
        • 2.1.1 Ejemplo de derivación de clases
        • 2.1.2 Herencia pública, protegida y privada
        • 2.1.3 Llamada de los constructores
      • 2.2 Polimorfismo
        • 2.2.1 Métodos polimorfos
        • 2.2.2 Conversiones de objetos
      • 2.3 Métodos virtuales y métodos virtuales puros
      • 2.4 Herencia múltiple
        • 2.4.1 Notaciones particulares
        • 2.4.2 Consecuencias en la programación
    • 3. Otros aspectos de la POO
      • 3.1 Conversión dinámica
        • 3.1.1 Conversiones desde otro tipo
        • 3.1.2 Operadores de conversión
        • 3.1.3 Conversiones entre clases derivadas
      • 3.2 Campos y métodos estáticos
        • 3.2.1 Campos estáticos
        • 3.2.2 Métodos estáticos
      • 3.3 Sobrecarga de operadores
        • 3.3.1 Sintaxis
        • 3.3.2 Sobrecarga del operador de indexación
        • 3.3.3 Sobrecarga del operador de asignación
        • 3.3.4 Sobrecarga del operador de conversión
      • 3.4 Funciones amigas
      • 3.5 Direccionamiento relativo y punteros de miembros
        • 3.5.1 Notaciones
        • 3.5.2 Construcción de un middleware orientado a objetos
      • 3.6 Programación genérica
        • 3.6.1 Modelos de funciones
        • 3.6.2 Modelos de clases
    • 4. Trabajos prácticos
      • 4.1 Utilización de la herencia de clases en el intérprete tiny-lisp
      • 4.2 Punteros de miembros para las funciones callback
  • La librería Standard Template Library
    • 1. Introducción
    • 2. Organización de los programas
      • 2.1 Espacios de nombres
        • 2.1.1 Utilización completa de un espacio de nombres
        • 2.1.2 Espacio de nombres repartido entre diferentes archivos
        • 2.1.3 Relación entre clase y espacio de nombres
        • 2.1.4 Declaración de subespacios de nombres
      • 2.2 Presentación de la STL
    • 3. Flujo C++ (entradas-salidas)
      • 3.1 Generalidades
      • 3.2 Flujos integrados
      • 3.3 Estado de un flujo
      • 3.4 Formato
      • 3.5 Flujo de archivos
      • 3.6 Flujo de cadenas
      • 3.7 Argumentos locales
    • 4. Clase string para la representación de las cadenas de caracteres
      • 4.1 Representación de las cadenas en la STL
      • 4.2 Forma de utilización de la clase string
        • 4.2.1 Funciones de base
        • 4.2.2 Integración en el lenguaje C++
        • 4.2.3 Funciones específicas de las cadenas
    • 5. Contenedores dinámicos
      • 5.1 Contenedores
        • 5.1.1 Inserción de elementos y recorrido
        • 5.1.2 Iteradores
        • 5.1.3 Operaciones aplicables a un vector
      • 5.2 Secuencias
        • 5.2.1 Contenedores estándar
        • 5.2.2 Secuencias
        • 5.2.3 Adaptadores de secuencias
        • 5.2.4 Contenedores asociativos
      • 5.3 Algoritmos
        • 5.3.1 Operaciones de secuencia sin modificación
        • 5.3.2 Operaciones de secuencia con modificación
        • 5.3.3 Secuencias ordenadas
        • 5.3.4 Algoritmos de definición
        • 5.3.5 Mínimo y máximo
      • 5.4 Cálculo numérico
        • 5.4.1 Límites de los formatos ordinarios
        • 5.4.2 Funciones de la librería
        • 5.4.3 Funciones de la librería estándar y clase valarray
      • 5.5 Las aportaciones del C++ moderno
        • 5.5.1 Las expresiones lambda
        • 5.5.2 La inferencia de tipo
        • 5.5.3 Nuevos tipos de bucles
        • 5.5.4 Punteros inteligentes
      • 5.6 Introducción a la librería boost
        • 5.6.1 Instalación de la librería
        • 5.6.2 Un primer ejemplo con boost
        • 5.6.3 Dominios de aplicación
    • 6. Trabajos prácticos
      • 6.1 La clase Variant
      • 6.2 El método to_string
      • 6.3 La traducción JSON
        • 6.3.1 El método estático to_json_string()
        • 6.3.2 El método estático from_json_string()
  • Los universos de C++
    • 1. El entorno Windows
      • 1.1 Los programas Win32
      • 1.2 Elección del modo de compilación
      • 1.3 Funcionamiento de las aplicaciones de ventana Win32
        • 1.3.1 Creación de un proyecto de aplicación de ventana
        • 1.3.2 Los tipos de datos Win32
        • 1.3.3 Los handles y los mensajes
        • 1.3.4 El bucle de mensajes
        • 1.3.5 Los archivos de recursos
    • 2. El entorno .NET
      • 2.1 Le código gestionado y la máquina virtual CLR
      • 2.2 Las adaptaciones del lenguaje C++ CLI
        • 2.2.1 La norma CTS
        • 2.2.2 La clase System::String
        • 2.2.3 El recolector de basura
        • 2.2.4 Construcción y destrucción de objetos
        • 2.2.5 La referencia de seguimiento % y el handle ^
        • 2.2.6 El puntero interno y las zonas ancladas
        • 2.2.7 Los arrays y las funciones con número variable de argumentos
        • 2.2.8 Las propiedades
        • 2.2.9 Los delegados y los eventos
        • 2.2.10 Los métodos virtuales
        • 2.2.11 Las clases abstractas y las interfaces
      • 2.3 El framework .NET
        • 2.3.1 Las referencias de ensamblados
        • 2.3.2 El espacio de nombres System::IO
        • 2.3.3 El espacio de nombres System::Xml
        • 2.3.4 El espacio de nombres System::Data
        • 2.3.5 El espacio de nombres System::Collections
        • 2.3.6 El espacio de nombres System::Collections::Generic
        • 2.3.7 El ámbito de la STL para C++ CLI
      • 2.4 Las relaciones con el resto de lenguajes: C#
    • 3. Trabajos prácticos
      • 3.1 Realizar una aplicación de dibujo Win32
      • 3.2 Una aplicación en C++ para .NET: le hoja de cálculo InCell
        • 3.2.1 Arquitectura de la hoja de cálculo
        • 3.2.2 La hoja de cálculo
        • 3.2.3 El programador del cálculo
        • 3.2.4 Zoom sobre el evaluador
        • 3.2.5 La interfaz gráfica
      • 3.3 Un módulo de gestión de datos para tiny-lisp
        • 3.3.1 Creación de listas persistentes db_create
        • 3.3.2 Acceso a las listas persistentes db_use
        • 3.3.3 Inserción de items db_insert
        • 3.3.4 Registro de las listas persistentes db_save
        • 3.3.5 Selección de ítems en las listas persistantes db_select
  • Programas C++ eficaces
    • 1. Mejorar sus programas
      • 1.1 Olvidar los actos reflejos del lenguaje C
      • 1.2 Gestión de la memoria
      • 1.3 Diseñar clases con cuidado
      • 1.4 Ver más claramente entre las posibilidades de herencia
      • 1.5 Analizar la ejecución de un programa C++
    • 2. El diseño orientado a objetos (DOO)
      • 2.1 Relación entre la POO y el DOO
        • 2.1.1 El enfoque inicial de C++
        • 2.1.2 UML y C++
      • 2.2 Los design patterns
    • 3. Trabajos prácticos
      • 3.1 El objetivo del programa
      • 3.2 El diagrama de clases
      • 3.3 La fábrica SimpleFactory
      • 3.4 La inyección de dependencias
  • Algoritmos aplicados a C++
    • 1. Introducción
    • 2. Reconocimiento de patrones textuales
      • 2.1 Enfoque directo
      • 2.2 Lectura con desplazamiento: el algoritmo Boyer Moore
      • 2.3 Método para los patrones auto repetitivos: el algoritmo KMP
      • 2.4 Método para los patrones variables
    • 3. Búsqueda del camino más corto
      • 3.1 Presentación de los grafos
        • 3.1.1 Incidencia y adyacencia
        • 3.1.2 Camino de un grafo
        • 3.1.3 Implementación de los grafos orientados y no orientados
      • 3.2 El recorrido del grafo a lo ancho para empezar
      • 3.3 El algoritmo de Dijkstra
      • 3.4 Uso de un método heurístico: el algoritmo A*
        • 3.4.1 Implementación en C++
        • 3.4.2 Ejecución
    • 4. Comprimir archivos
      • 4.1 Enfoque por estadística: el algoritmo de Huffman
        • 4.1.1 Implementación de la codificación
        • 4.1.2 Compresión del archivo
        • 4.1.3 Descompresión
      • 4.2 Enfoque por diccionario: el algoritmo LZW
        • 4.2.1 Funcionamiento del algoritmo
        • 4.2.2 Implementación del diccionario
        • 4.2.3 Dimensionamiento y gestión del diccionario
        • 4.2.4 Programa de compresión
        • 4.2.5 Programa de descompresión
    • índice

Autor

Brice-Arnaud GUÉRINMás información

Brice-Arnaud Guérin es ingeniero ESIEA y director de programas en Kantar. Sus habilidades de desarrollo y su deseo de compartir sus conocimientos, lo llevaron de manera natural a escribir libros dedicados a la realización de aplicaciones (.NET, PHP, C ++) y a la gestión de proyectos.

Características

  • Nivel Experto a Medio
  • Número de páginas 480 páginas
  • Publicación diciembre 2021
    • Encuadernación rústica - 17 x 21 cm
    • ISBN: 978-2-409-03385-8
    • EAN: 9782409033858
    • Ref. ENI: RIT3CPP
  • Nivel Experto a Medio
  • Publicación diciembre 2021
    • HTML
    • ISBN: 978-2-409-03386-5
    • EAN: 9782409033865
    • Ref. ENI: LNRIT3CPP

Descargas

Al completar este formulario, acepta recibir información y comunicaciones comerciales sobre nuestros productos y servicios. Puede darse de baja de nuestra newsletter en cualquier momento. Si desea conocer más información acerca de nuestra política de protección de datos, pulse aquí.
  • Descargar los ejemplos del libro (6 903 Ko)