El gran libro de programación en C
Sinopsis del producto
ĀæSe ha preguntado en quĆ© lenguaje estĆ”n programados los sistemas que gobiernan nuestra tecnologĆa moderna? n nTiene a su alcance la puerta de entrada a uno de los lenguajes mĆ”s poderosos y versĆ”tiles del mundo de la programación, el lenguaje C. Si quiere descubrir el potencial de este lenguaje desde un nivel inicial, ha llegado al libro indicado. n nEl lenguaje C llega a todo tipo de Ć”mbitos, pues es compatible con los sistemas operativos mĆ”s populares, como Linux y Windows, con los videojuegos, los Ćndices del buscador de Google, las aplicaciones complejas en el Ć”mbito de la fĆsica cuĆ”ntica y la aeronĆ”utica (como Dassault, Lockheed-Martin Aero), los sistemas de telecomunicaciones de Nokia, Alcatel, T-Mobile, Ericsson e incluso con los modelos financieros como Bloomberg y Morgan Stanley. n nEscrita con un enfoque prĆ”ctico y una orientación maker, esta guĆa le permitirĆ” sumergirse en el desarrollo real desde el primer momento. Con ejemplos descargables y aplicaciones en tecnologĆas avanzadas como Blockchain, sistemas embebidos y mĆ”s, tendrĆ” las herramientas necesarias para aprender con la prĆ”ctica, el mĆ©todo mĆ”s efectivo para dominar el arte de la programación. nAprender C no es solo un paso fundamental para cualquier programador, sino que es la clave para comprender los lenguajes que forman la base de las innovaciones tecnológicas actuales y futuras. Con este libro, descubrirĆ” los secretos de un lenguaje que ha sido esencial en el desarrollo de sistemas y aplicaciones crĆticas durante dĆ©cadas. n nPrepĆ”rese para explorar el lenguaje que impulsa la tecnologĆa que emplea cada dĆa. Ā”Aprenda C y forme parte del presente y del futuro de la programación! n nCONTENIDO nPrefacio n nCAPĆTULO 1 nInstalando un entorno de desarrollo para el libro n1.1. ĀæQuĆ© es un entorno de desarrollo? n1.1.1. ĀæQuĆ© es un entorno de desarrollo? n1.1.2. ĀæQuĆ© nos proporciona un entorno de desarrollo? n1.1.3. Compiladores de C/C++ n1.1.4. Herramientas de virtualización n1.1.4.1. Configuración del networking entre sistemas virtuales y fĆsicos n1.1.5. Escoger herramientas para cada lector n1.1.6. La herramienta de Visual Studio Code n1.2. Instalación del entorno de desarrollo aconsejado n1.2.1. Orden de instalación de los elementos de entorno de desarrollo n1.2.2. Paso 1: descargar los ejemplos de código fuente del libro n1.2.3. Paso 2: instalar el compilador MinGW n1.2.3.1. Comprobar que MinGW estĆ” bien instalado n1.2.4. Paso 3: instalar Visual Studio Code (VSCode) n1.2.4.1. Acoplando los plugins a VSCode n1.2.5. Comprobando el funcionamiento de VSCode n1.2.6. Paso 4: instalar VirtualBox n1.2.7. Paso 5: obtener una versión de Ubuntu Linux n1.2.7.1. Comprobar que funciona la mĆ”quina virtual Linux n1.2.8. Paso 6: instalar Eclipse n1.2.9. Paso 7: instalando Visual Studio 2022 Community Edition n1.3. Conclusión del capĆtulo 1 n nCAPĆTULO 2 nNuestro primer programa en lenguaje C n2.1. HolaMundo: nuestro primer programa en C n2.1.1. Las librerĆas de include n2.1.2. Sumario de la función main n2.1.3. La función printf n2.1.4. ĀæQuĆ© cambios tenemos en este nuevo código fuente? n2.1.5. Cómo imprimir los parĆ”metros de lĆnea de comando n2.1.5.1. ĀæQuĆ© novedades vemos? n2.1.5.2. ĀæQuĆ© es el código spaghetti? n2.1.6. Depurar programas en C n2.1.7. En depuración, ĀæquĆ© significa un breakpoint? n2.1.8. ĀæCómo se pone en marcha la depuración (debugging)? n2.1.9. ĀæCómo se configura la depuración en VSCode? n2.1.9.1. Arrancando el modo depuración n2.1.10. La barra de herramientas de debug n2.1.11. La configuración de ventanas del modo debug n2.1.12. Cambios en el punto del breakpoint n2.1.13. Cómo enviar argumentos de lĆnea de comando al depurar n2.1.14. En el próximo capĆtulo n nCAPĆTULO 3 nVariables alfanumĆ©ricas n3.1. Tipos de datos alfanumĆ©ricos n3.1.1. El tipo de variable char n3.1.2. Cadenas de caracteres y sus punteros n3.1.2.1. Errores tĆpicos y catastróficos con las cadenas de texto n3.1.2.2. Cómo inicializar cadenas de texto n3.1.2.3. ĀæQuĆ© novedades tenemos en este programa? n3.1.2.4. Un programa para pasar de mayĆŗsculas a minĆŗsculas n3.1.2.5. Una pĆ”gina de códigos equivale a Ā”una margarita! n3.1.2.6. Las impresoras de margarita y las pĆ”ginas de códigos n3.1.2.7. Trabajar con caracteres en chino con UTF-16 n3.1.3. Idiomas y culturas: el ejemplo chino n3.1.4. Representar pictogramas con caracteres occidentales n3.1.4.1. La escritura Wade-Giles n3.1.4.2. El sistema de escritura Pinyin n3.1.5. Ventajas del sistema de pictogramas n3.1.6. El Ć”rea CJKV n3.1.6.1. La escritura en Japón n3.1.6.2. La escritura en Corea n3.1.6.3. La escritura en Vietnam n3.1.6.4. Las diĆ”sporas históricas desde Asia n3.1.7. La simplificación o reforma de los caracteres chinos n3.1.8. Y llegó la tecnologĆa Unicode con los 32 bits n3.1.8.1. Diferencias prĆ”cticas con Unicode entre chino simplificado y chino tradicional n3.1.9. Culturas y programación informĆ”tica n3.1.10. ĀæEn quĆ© aƱo vives? n3.1.11. La función setlocale n3.1.11.1. Conversión de UTF-16 a UTF-8 n3.1.11.2. Llegaron las cadenas de caracteres Unicode n3.1.11.3. Recapitulando sobre los punteros a caracteres n3.1.11.4. Stack y heap, Āædónde guardamos nuestras variables? n3.1.11.5. Pilas contra montones n3.1.12. ĀæVeis cómo los montones son mejores? n3.1.12.1. Cómo declarar, inicializar y asignar cadenas de caracteres dinĆ”micas n3.1.12.2. Dos formas de recorrer una cadena de texto n3.1.12.3. Función de bĆŗsqueda de texto mediante puntero-cursor n3.1.13. Stack y heap: funciones y procesadores n nCAPĆTULO 4 nTipos de datos numĆ©ricos. Coma flotante y binarios n4.1. Los tipos bĆ”sicos numĆ©ricos n4.1.1. Enteros, punteros a enteros y copias de enteros n4.1.1.1. LĆmites de cĆ”lculo de los nĆŗmeros enteros de diferentes formatos n4.1.1.2. El tipo numĆ©rico entero sin signo n4.1.1.3. AnĆ©cdota de un regulador de velocidad. ĀæCon signo o sin signo? n4.1.2. Modificadores n n4.1.2.1. El modificador unsigned n4.1.2.2. El modificador const n4.1.2.3. El modificador constexpr n4.1.2.4. El modificador static n4.1.3. El tipo float y los nĆŗmeros decimales n4.1.3.1. Coma fija y coma flotante n4.1.3.2. Estructura de un coma flotante en memoria n4.1.4. El tipo long double o doble precisión n4.1.5. El tipo long double o cuĆ”druple precisión n4.1.6. AnĆ©cdota histórica: fallo en el cĆ”lculo de coma flotante del Pentium de Intel n4.1.7. Tipos numĆ©ricos mĆ”scara binaria: BYTE, WORD y DWORD n4.1.7.1. El sistema binario de numeración n4.1.7.2. Conversiones a hexadecimal n4.1.7.3. Ćlgebra de Bool para nĆŗmeros binarios n4.1.8. La operación NOT n4.1.9. La operación OR n4.1.10. La operación NOR n4.1.11. La operación AND n4.1.12. La operación NAND n4.1.13. La operación XOR n4.1.14. Aplicación de puertas XOR y AND para un semisumador de 1 bit n4.1.14.1. La operación de desplazamiento SHL (multiplicación por 2) n4.1.14.2. La operación de desplazamiento SHR (división por 2) n4.1.15. Transformación de puertas OR en puertas AND y viceversa n4.1.15.1. Puerta NOR construida con transistores n4.1.15.2. Puerta AND construida con transistores n4.1.16. La tecnologĆa TTL y cómo esto nos influyó desde los aƱos 60 n4.1.17. Orden Endian de los bytes n4.1.17.1. Endianidad en el procesador n4.1.18. Cómo dividir un WORD en byte alto y byte bajo n4.1.19. La resta, el signo y el complemento a 1 n4.1.19.1. Investigando cómo se hace la resta n4.1.20. El complemento a 1 n4.1.21. Operadores de mĆ”scara de bits en C n4.1.22. Función en C para hallar el complemento a 1 n4.1.22.1. El programa de resta binaria con mĆ”scaras binarias en lenguaje C n4.1.23. La directiva asm y las mĆ”scaras binarias n4.1.23.1. La arquitectura escalada de Intel y su influencia en los sistemas operativos n4.1.23.2. Memoria y multitarea mejoradas n nCAPĆTULO 5 nStructs, unions y typedefs n5.1. El tipo de dato struct y su complementario union n5.1.1. Ejemplo bĆ”sico de un struct n5.1.2. Ejemplo de creación de un nuevo tipo de dato con typedef struct n5.1.3. Ejemplo de ordenación de una matriz de clientes n5.1.3.1. Ahora, ĀæquĆ© vamos a hacer con esta matriz de 10 clientes? n5.1.3.2. ĀæCómo queda la función de ordenación? n5.1.3.3. Función de liberación de cadenas de texto n5.1.3.4. Función de impresión de listado n5.1.3.5. El cuerpo de programa principal n5.1.4. Ejemplo de struct y unión: un emulador de 2 procesadores a la vez n5.1.4.1. Ā”Que vuelven los indios! n5.1.4.2. La instrucción MOV en ensamblador n5.1.4.3. Codificando MOV en lenguaje mĆ”quina n5.1.4.4. Simulando un MOV paso a paso n5.1.4.5. ĀæQuĆ© hemos conseguido? n5.1.4.6. El programa de prueba de structs y unions n5.1.4.7. La tentación vive abajo n5.1.4.8. Importancia de unions y emuladores en sistemas operativos n5.1.4.9. Del sistema operativo a la virtualización y la nube (Cloud Computing) n5.1.5. El struct como base para crear las clases en C++ n5.1.5.1. La necesidad era manejar ordenadamente la creciente complejidad n nCAPĆTULO 6 nCreando funciones: Ć”mbitos, parĆ”metros y retorno n6.1. ĀæPara quĆ© sirven las funciones? n6.1.1. LibrerĆas de funciones n6.1.2. ĀæQuĆ© es un prototipo de función? n6.1.2.1. El orden de las funciones sĆ que altera el producto n6.1.2.2. Declaraciones de prototipo n6.1.3. Creando una librerĆa externa n6.1.4. ĀæCómo fusionar todos estos archivos en un proyecto? n6.1.4.1. Solucionando errores de gestión de proyecto n6.1.4.2. Cómo pasar parĆ”metros por valor a las funciones n6.1.5. Dos enfoques para el valor de retorno de una función n6.1.5.1. Bajando hasta los infiernos de la excepción n6.1.5.2. ĀæCómo llamar al desensamblador de Visual Studio Code? n6.1.6. Conclusión sobre las funciones que retornan punteros nulos n6.1.7. Protegiendo las funciones que reciben punteros n6.1.8. Aclaración sobre los valores de retorno vĆ”lidos n6.1.9. PrĆ”cticas poco ortodoxas para salvar un puntero loco n6.1.9.1. La función definida como static n6.1.9.2. Cómo asustar al compilador para que no libere una variable local n6.1.10. Arreglando el diseƱo de la función ObtenerTextoIdioma n6.1.11. Pasando parĆ”metros por referencia n6.1.12. La función ObtenerTextoIdiomaExt arreglada n6.1.13. ĀæCómo quedarĆa ahora el programa principal? n nCAPĆTULO 7 nLibrerĆas de funciones clĆ”sicas de entrada/salida (I/O) n7.1. Tres grupos de funciones de entrada/salida n7.1.1. ĀæPor quĆ© estos tipos de funciones de entrada/salida? n7.1.2. ĀæDónde se encuentran las librerĆas de estas funciones? n n7.1.3. Un ejemplo de entrada/salida para pantalla y teclado n7.1.4. Función printf (#include ) n7.1.5. La función scanf n7.1.5.1. Controlar la longitud de una cadena de texto n7.1.6. Funciones de entrada de caracteres individuales n7.1.7. Entrada de caracteres dobles n7.1.7.1. Captura de las teclas de función n7.1.8. La función getch() n7.1.9. La función getche() n7.1.10. La función putch() n7.1.11. El teclado n7.1.11.1. El buffer (o memoria) de teclado n7.1.11.2. CaracterĆsticas del buffer de teclado n7.1.11.3. El error de buffer overrun n7.1.12. Las lecturas de teclado a muy bajo nivel desaparecen n nCAPĆTULO 8 nBlockchain como librerĆa de funciones externas n8.1. Un ejemplo de librerĆa de funciones Blockchain n8.1.1. Introducción n8.1.2. ĀæVamos a vender criptomonedas? n8.1.3. ĀæQuĆ© es Blockchain? n8.2. CaracterĆsticas de Blockchain n8.2.1. CaracterĆsticas de las Blockchain a nivel polĆtico n8.2.2. El dilema de las modificaciones y cómo se soluciona n8.3. El universo Blockchain n8.3.1. Activos digitales, criptoactivos, tokens fungibles y NFT n8.4. Uso de los criptoactivos a nivel financiero y de negocio n8.4.1. ĀæPor quĆ© son interesantes a nivel financiero/contable? n8.4.2. A nivel de contabilización y control de activos n8.4.3. Como moneda de cambio entre empresas de grupos y de terceros n8.4.3.1. Como incremento de solidez financiera de filiales n8.4.3.2. Ejemplo de desacople financiero mediante activos digitales n8.5. De vuelta al mundo tecnológico n8.5.1. La encriptación como requisito de ciberseguridad n8.6. Hashes y la librerĆa externa de encriptación SSL n8.6.1. La librerĆa OpenSSL como librerĆa externa n8.6.2. ĀæQuĆ© es un hash? ĀæQuĆ© es un bloque? n8.6.3. Similitudes y relaciones entre hashes y encriptaciones n8.6.4. Comprobación de propiedad: demostrar ser el owner n8.6.5. Hashes truculentos o Hecha la ley, hecha la trampa n8.6.6. ĀæQuĆ© es un bloque? n8.6.7. Concatenación o encabalgamiento de hashes n8.6.8. Blockchain es relativamente caro n8.6.9. Tipos de cadenas Blockchain y costes por transacción n8.6.10. Sobre el volumen de transacciones n8.6.11. La figura del minador de criptoactivos n8.6.12. Minadores y Fintechs diversas n8.6.13. Empresas mĆ”s tranquilas basadas en Blockchain n8.6.14. TamaƱos de redes Blockchain y recursos de implementación n8.6.14.1. Recursos necesarios en empresas Fintech globales n8.6.14.2. Recursos necesarios en energĆ©ticas y telecos n8.6.14.3. Recursos necesarios en empresas logĆsticas grandes n8.6.14.4. Oficinas de notarĆas y servicios legales n8.7. Los objetivos del capĆtulo n8.8. Ejercicio Ćŗnico de este capĆtulo: la blockchain n8.8.1. Entendiendo las listas dinĆ”micas n8.8.2. De elementos a bloques de Blockchain n8.8.3. Funcionamiento del programa de ejemplo de Blockchain n8.8.3.1. Niveles de funciones: n8.8.3.2. Reparto de las funciones por niveles n8.8.4. Repaso de las opciones de programa n8.8.4.1. Dar de alta nuevo bloque n8.8.4.2. Generar N bloques aleatorios n8.8.4.3. Contar bloques n8.8.4.4. Falsificar bloque N n8.8.4.5. Listado de todos los bloques n8.8.4.6. Verificar blockchain n8.8.4.7. Reconstruir todo el blockchain recalculando bloques falsos n8.8.4.8. Imprimir el hash de un bloque n8.8.4.9. Imprimir solo los bloques falsos n8.8.4.10. Salir (y, sobre todo, liberar bloques con free) n8.8.4.11. Indiana Jones en busca de la memoria perdida n8.8.4.12. La función LiberarBlockchain n8.8.5. Conclusión n nCAPĆTULO 9 nLibrerĆas de funciones de entrada/salida para consola de Windows n9.1. Aplicación de ejemplo para pantallas de texto avanzadas n9.2. Funciones de entrada/salida propias de la Consola de Windows n9.2.1. MS-DOS ya no existe: es una emulación de consola n9.2.2. ĀæCuĆ”ndo programar con printf y cuĆ”ndo usar consola de Windows? n9.2.3. Construyendo aplicaciones de Consola de Windows n9.2.4. La tabla de caracteres semigrĆ”ficos n9.2.5. Escribiendo una función para entrada de texto: EntraString n9.2.5.1. Sintaxis de EntraString Código fuente de EntraString n9.2.6. Uso de EntraString en el contexto del programa n9.2.6.1. El resto de las funciones auxiliares, de mayor a menor n9.2.6.2. La función GestionarTeclasEspeciales n9.2.6.3. La función GoToXY n n9.2.6.4. ĀæY cómo se obtiene el handle del buffer de consola? n9.2.6.5. La función SetFGColor para cambiar colores de texto n9.2.7. Funciones de transformación de códigos de pĆ”gina de texto n9.2.7.1. Código fuente de la función UnicodetoAnsi n9.2.7.2. Código fuente de la función AnsiToUnicode n9.2.7.3. La función PrintCPLabel n9.2.8. Gestionar ventanas indoloras y pintar recuadros n9.2.8.1. Cómo pintar una ventana con la función PintarVentana n9.2.8.2. La función PintarVentana n9.2.8.3. Implementando ventanas indoloras (painless Windows) n9.2.9. Posibles mejoras para copiar y restaurar ventanas n9.3. Lectura de ratón y eventos especiales n9.3.1. El bucle de mensajes n9.3.2. Los manejadores de eventos n9.3.2.1. El manejador de teclado n9.3.2.2. El manejador de ratón n9.3.2.3. El manejador de redimensionamiento de ventana n9.3.2.4. El manejador de eventos de paso de foco n9.3.2.5. El manejador de eventos de menĆŗ n9.3.3. El programa principal del testeador de eventos n9.3.4. Descargar el código fuente del testeador de eventos n9.3.5. En el siguiente capĆtulo n nCAPĆTULO 10 nLibrerĆas de funciones de entrada/salida para ficheros (archivos) n10.1. AƱadiendo funciones para gestión de ficheros n10.2. Construyendo la parte de grabación de archivos n10.2.1. La persistencia n10.2.2. Persistencia mediante bases de datos n10.2.3. Persistencia mediante archivos n10.2.4. Archivos secuenciales n10.2.5. Registros y campos n10.2.6. Algoritmo tĆpico para un sistema de acceso secuencial n10.2.7. ĀæSe usan mucho los ficheros secuenciales hoy dĆa? n10.2.7.1. Ficheros secuenciales como archivos de configuración n10.2.7.2. El formato CSV: un archivo secuencial de datos compatible con Excel n10.2.7.3. Los archivos de Log como archivos de acceso secuencial n10.2.7.4. El formato XML como archivo secuencial n10.2.7.5. El tipo JSON como archivo secuencial n10.2.7.6. El formato DBF de dBase III, Clipper y FoxPro n10.2.7.7. MĆ”s y mĆ”s formatos secuenciales n10.2.8. Los archivos de acceso aleatorio (random) n10.2.8.1. CĆ”lculo del posicionamiento random n10.2.8.2. Randoms con cabecera y sin cabecera n10.2.9. Los archivos de acceso indexado n10.2.9.1. El nĆŗmero de accesos para encontrar una clave n10.2.9.2. El Ć”rbol binario equilibrado B+ o AVL n10.2.9.3. Ćrboles y sarmientos n10.2.9.4. El mecanismo de equilibrado n10.2.9.5. El equilibrado on demand n10.2.9.6. El equilibrado automĆ”tico n10.3. Función para crear logs en ficheros secuenciales n10.3.1. Llamando a la función de Logging n10.3.2. Explicación de la función WriteLog n10.3.3. Escritura del fichero de datos de acceso aleatorio n10.3.4. La solución del registro de cabecera en registro = 0 n10.3.4.1. Planteamiento del registro 0 n10.3.4.2. El cĆ”lculo de espacio y el alineamiento de structs n10.3.4.3. Un problema tĆpico del alineamiento n10.3.4.4. La opción del modo de alineamiento del compilador n10.3.4.5. El operador alignof() n10.3.5. La misión del archivo secuencial de configuración n10.3.5.1. El sistema clave Ć valor n10.3.5.2. Las funciones de trimado n10.3.6. La función GetConfigParamValue n10.3.6.1. Inicialización del Registro 0 n10.3.6.2. La función CreateEmptyDataFile n10.3.6.3. Funciones importantes empleadas para el fichero n10.3.6.4. Verificar carga de registro 0 y usar metadatos n10.3.7. Grabación de un registro de datos en fichero random n10.3.7.1. Modos de edición de registro n10.3.8. Funciones de cursorización n10.3.9. Borrado, compactación y truncado de registros n10.3.9.1. QuĆ© hay que hacer antes de borrar un registro n10.3.9.2. QuĆ© hay que hacer despuĆ©s de borrar un registro n10.3.9.3. La función de truncado n10.3.9.4. La función de compactación n10.3.9.5. Gestión de la petición de borrado con F5 n10.3.10. Lo que hemos visto son las operaciones CRUD n nCAPĆTULO 11 nListas dinĆ”micas persistentes con Blockchain y ficheros n11.1. Persistencia de Blockchain en ficheros n11.1.1. Repaso introductorio n11.2. Dos nuevas formas de hackear Blockchain n11.2.1. El hacking por inserción de punteros n11.2.2. El hacking por escritura directa o recifrado del fichero de Blockchain n11.2.3. Analizando el problema de la inserción de un bloque falso n n11.3. Funciones de la capa de persistencia Blockchain n n11.3.1. ExistsFile n11.3.2. CrearFicheroBlockchain n11.3.3. ContarBloquesDesdeFichero n11.3.4. LeerBloque n11.3.5. LeerCadenaBloquesEnteraDesdeFichero n11.3.6. EscribirBloque n11.3.7. EscribirCadenaBloquesEnteraHaciaFichero n11.4. Código fuente comentado del programa principal n11.5. Conclusión n nCAPĆTULO 12 nRecursividad, Ć”rboles binarios, traversas y punteros a funciones n12.1. Introducción a los procesos recursivos n12.1.1. ĀæTodos los procesos se pueden hacer recursivos? n12.1.2. El cĆ”lculo de factorial como ejemplo bĆ”sico n12.1.3. Código fuente de la factorial de coma flotante, 64 bits n12.1.4. Dónde se encuentra el código fuente de las factoriales n12.2. Programación recursiva de determinantes n12.2.1. ĀæQuĆ© es un determinante? n12.2.2. Organizar las tareas del determinante n12.2.2.1. El acceso bidimensional a los elementos de la matriz n12.2.3. El programa principal n12.3. Introducción a los Ć”rboles binarios n12.3.1. ĀæQuĆ© son los Ć”rboles binarios? n12.3.2. Comparación de listas con Ć”rboles n12.3.3. Listas doblemente enlazadas n12.3.4. El Ć”rbol binario de bĆŗsqueda (BST o Binary Search Tree) n12.3.5. Los Ć”rboles en Prolog n12.4. Un ejemplo de diseƱo de Ć”rbol en C n12.5. Insertando datos en un Ć”rbol n12.5.1. Preparar el Ć”rbol n12.5.2. Insertamos una clave y un valor en un Ć”rbol vacĆo n12.5.3. Insertamos clave y valor en un Ć”rbol con datos preexistentes n12.5.3.1. Creamos la función de inserción de tipo recursivo n12.5.4. Experimentando con la secuencia de inserción n12.6. Introducción a las rotaciones n12.6.1. Paso 1 n12.6.2. Paso 2 n12.6.2.1. Transición del paso 2 al paso 3 n12.6.3. Paso 3 n12.7. Insertando todos los elementos de prueba n12.8. Buscando elementos dentro del Ć”rbol n12.8.1. Código fuente de BuscarNodo n12.8.2. Comprobación del nĆŗmero de comparaciones n12.9. Traversa In Order y punteros a funciones n12.9.1. Los mĆ©todos de traversas (traversal) n12.9.2. La traversa in order n12.9.3. Punteros a funciones n12.9.3.1. Cómo declarar un prototipo de puntero a función n12.9.3.2. Asignar una función genĆ©rica a este puntero n12.9.4. Función para contar elementos basada en traversa n12.10. Función para liberar nodos y el Ć”rbol en sĆ n12.11. La traversa post order para eliminar el Ć”rbol n12.11.1. Código fuente de la traversa post order n12.11.2. La función LiberarNodo n12.12. Código fuente final n12.13. Conclusión
9786075763927
$80.900,00 $68.765,00 -15%
99999 disponibles
Especificaciones
QuizƔs te interese
ĀæYa lo leĆste? ValorĆ” “El gran libro de programación en C”
Debes acceder para publicar una valoración.

Viento tras los ojos 

Valoraciones
No hay valoraciones aĆŗn.