- Editorial:
- ANAYA, COMERCIAL GRUPO
- Año de edición:
- 2004
- ISBN:
- 978-84-415-1544-4
- Páginas:
- 720
- Colección:
- VARIAS
GNU / LINUX. PROGRAMACION
PROGRAMACIÓN
CHARTE, O.
Introducción
Programación en Linux
Objetivos de este libro
Requisitos previos
1. Lenguajes y bibliotecas
Lenguajes de programación
Lenguajes de la shell
Lenguajes de guiones
Lenguajes procedimentales
Lenguajes orientados a objetos
Otros lenguajes
Bibliotecas de servicios
Resumen
2. Herramientas de desarrollo
Editores de código
Vi
Opciones de puesta en marcha
Inserción de texto
Comandos de desplazamiento
Eliminación de caracteres
Operaciones con archivos
Trabajo con múltiples archivos
Edición de códigos
Otras operaciones
Emacs
Interfaces de Emacs
Tareas de edición
Operaciones con archivos
Trabajo con múltiples archivos
Acceso al menú de opciones
Edición de código
Otras posibilidades de Emacs
Otros editores
Compiladores y enlazadores
La colección de compiladores GNU
Ensamblador y enlazador
La herramienta make
Archivos makefile
Dependencias y objetivos
Uso de variables
Reglas y variables predefinidas
Control del código fuente
RCS
Estructura de directorios
Iniciación del registro de un archivo
Depósito y obtención de archivos
Control de las versiones
Consolidación de revisiones
make y RCS
CVS
Preparación del depósito de código
Registro de un nuevo proyecto
Recuperación de una copia local
Adición y confirmación de cambios
Control de las versiones
Depuración con GDB
Información para depuración
Ejecución paso a paso
Comprobación y manipulación de valores
Examen de la pila
Registros y memoria
Resumen
3. Entornos IDE y RAD
Tan sólo necesita Emacs
Entornos IDE en modo texto
Xwpe
La interfaz de texto
La interfaz gráfica
RHIDE
Motor
Entornos gráficos
Glade
Qt Designer
KDevelop
Lazarus
Otros entornos
Resumen
4. Automatización de tareas con guiones
Tipos de comandos
Un guión sencillo
Ejecución del guión
Indicación del intérprete de comandos
Uso de variables
Sustitución de variables
Variables predefinidas
Variables con múltiples elementos
Condicionales
Bucles
Solicitud de datos
Errores y señales
Comprobación, desvío y emisión de errores
Interceptación de señales
Evaluación de expresiones
Estructuración del código
Variables locales
Código de retorno de una función
Sustitución de comandos de Bash
Otros comandos útiles
Mejora de la presentación
Colores de texto y fondo
Control del cursor
Almacenamiento y recuperación de datos
Apertura de archivos
Uso de herramientas externas
Resumen
5. Programación en C/C++
Estructura de un proyecto
Uso del compilador GCC
Compilación básica
Opciones de control del proceso
Opciones para el preprocesador
Opciones para el compilador
Opciones para el enlazador
Bibliotecas estándar
Iniciación a C y C++
Estructura general
El punto y el punto y coma
Archivos de cabecera y la directiva include
Comentarios
Constantes y variables
Identificadores
Tipos
Declaración de variables
Arreglos o matrices
Definición de nuevos tipos
Constantes y literales
Inicialización en la declaración
Ámbito de los identificadores
Identificadores locales
Ámbito de módulo
Identificadores globales
Problemas de accesibilidad
Expresiones
Operadores aritméticos
Operadores relacionales
Operadores lógicos
Operadores de bits
Operadores de trabajo con punteros
Orden de prioridad
Estructuras de control
Condicionales
Bucles
Funciones
Definición
Parámetros de entrada
Parámetros de salida
Prototipos
En resumen
Programación orientada a objetos
¿Qué es un objeto?
Encapsulación
Una clase simple
Uso de un objeto
Partes públicas, privadas y protegidas
Constructores y destructores
Miembros estáticos
El objeto this
Herencia
Limitaciones de acceso
Transitividad de la herencia
Construcción de un objeto
TEntidad y TCirculo
Redefinición de métodos
Polimorfismo
Métodos virtuales
Métodos virtuales puros y clases abstractas
La jerarquía TVehiculo
Información de tipos en ejecución (RTTI)
Destructores virtuales
Mayor información de tipo
Más sobre constructores
El constructor por defecto
El constructor de copia
Parámetros por defecto en los constructores
Sobrecarga
Sobrecarga de funciones
Sobrecarga de operadores
Ámbitos con nombre o namespaces
Definición de un ámbito con nombre
Ámbitos anónimos
Resumen
6. Servicios de propósito general
Manipulación de cadenas de caracteres
Asignación de cadenas
Longitud actual y máxima
Concatenación de cadenas
Comparación de cadenas
Funciones de búsqueda
Clasificación de caracteres
Funciones de conversión
Cadenas en C++
Reserva y liberación de memoria
Asignación dinámica clásica
Asignación con liberación automática
Gestión de memoria en C++
Funciones para manipular bloques de memoria
Fechas, horas y tiempos
Fecha y hora actuales
Hora local y universal
Codificación y diferencias entre fechas
Otras funciones de tiempo
Funciones matemáticas
Información del sistema
Resumen
7. Servicios de entrada y salida
Operaciones básicas
Apertura y cierre de un flujo
Lectura y escritura
Posición en el archivo
El sistema de archivos
Manipulación de directorios
Contenido de un directorio
Otras operaciones con archivos
Archivos en memoria
Entrada y salida con formato
Cadenas de formato
La familia de funciones printf()
La familia de funciones scanf()
Entrada y salida en C++
Generalidades de las clases
Operadores de inserción y extracción
Establecimiento del formato
Manipuladores
Métodos de entrada y salida
Trabajo con archivos
Posición en el flujo de datos
Estado del flujo
Flujos de datos en memoria
Resumen
8. Procesos
Ejecución de un programa
Redirección de la entrada y salida
Creación de un nuevo proceso
Identificación de procesos
Sustitución de la imagen del ejecutable
Funciones de espera
Comunicación entre procesos
Tuberías
Interrupción de un proceso hijo
Resumen
9. Gestión de múltiples hilos
Generalidades sobre aplicaciones multihilo
Creación de un nuevo hilo
Punto de entrada
Finalización del hilo principal
Atributos del nuevo hilo
Sincronización de hilos
Uso de variables compartidas como señalizadores
Recursos compartidos
Semáforos
Resumen
10. Servicios de sockets
Creación de un socket
Tipos de direcciones
Estilos de socket
Protocolos
Cierre del socket
Construcción de un servidor
Establecimiento de la dirección
Conversión de datos
Ponemos el socket a la escucha
Proceso de las peticiones entrantes
Interpretación de direcciones IP
Construcción de un cliente
Establecimiento de la dirección
Conexión con el servidor
Envío y recepción de datos
Un ejemplo práctico
Resumen
11. Interfaces basadas en texto
Archivos de cabecera y bibliotecas
Primeros pasos
Inicialización
Obtención de datos de configuración
Funciones de salida y actualización
Creación de ventanas
Funciones de salida y posicionamiento
Ventanas y paneles
Otras operaciones con paneles
Construcción de menús
Gestión de los elementos del menú
Creación y visualización del menú
Navegación por el menú
Conducción por teclado
Opciones que dan paso a otras opciones
Formato del menú
Menús y ventanas
Identificación de las opciones
Petición de datos
Fundamentos
Definición de campos
Tipos de datos
Otros atributos de los campos
División entre páginas
Formularios
Proceso de los campos
Resumen
12. Gráficos y multimedia
SVGAlib
Instalación y configuración de SVGAlib
Asegurarse la vuelta al modo de texto
Primeros pasos
Inicialización
Selección de un modo de vídeo
Colores, puntos y líneas
Un sencillo ejemplo
Obtener información de configuración
Contextos gráficos
Manipulación de contextos gráficos
Dibujar en un contexto
Copia de contextos
Un sencillo ejemplo
SDL
Inicialización de subsistemas
Compilación y enlace
Servicios de vídeo
Creación y liberación de superficies
Acceso a los puntos de una superficie
Formatos de color
Actualización de la pantalla
Gestión de eventos
Eventos de teclado
Eventos de ratón
Otros eventos
Control del CD-ROM
Información sobre el CD-ROM
Funciones de control
Resumen
13. Aplicaciones X
Archivos de cabecera y bibliotecas
Primeros pasos
Conexión con el servidor
Obtención de información
Creación de una ventana
Visualización de la ventana en pantalla
Gestión de eventos
Eventos y propiedades de la ventana
Atributos de la ventana
Estilos visuales y colores
Cursores
Configuración de otras propiedades
Contenido de la ventana
Contexto gráfico
Dibujo de entidades simples
Texto y tipos de letra
Ventanas que contienen otras ventanas
Resumen
14. Tcl/Tk
Introducción a Tcl
Un guión sencillo
Asignación y sustitución de variables
Evaluación de expresiones
Estructuras de control
Definición de funciones
Introducción a Tk
Uso interactivo del intérprete wish
Un guión sencillo
La ventana principal y el gestor de ventanas
Widgets de Tk
Opciones generales de los controles
Uso de múltiples ventanas
Respuesta a eventos
Distribución de los controles en la ventana
Resumen
15. Qt
Archivos de cabecera y bibliotecas
La jerarquía de clases de Qt
Primeros pasos
La clase QApplication
Creación de una ventana
Un ejemplo sencillo
Generación del archivo Makefile
El mecanismo de señales y receptores de Qt
Señales
Receptores
Conexión entre señales y receptores
Compilación de las extensiones de Qt
Widgets de Qt
Generalidades sobre QWidget
Botones
Textos, imágenes e introducción de datos
Otros componentes
Un ejemplo más complejo
Resumen
16. GTK+
Archivos de cabecera y bibliotecas
Primeros pasos
Inicialización del programa
Creación de una ventana
El bucle de proceso de eventos
Señales y funciones de gestión
Un ejemplo sencillo
Compilación del proyecto
El sistema de señales de GTK+
Widgets de GTK+
Generalidades sobre GtkWidget
Botones
Textos, imágenes e introducción de datos
Otros componentes
Distribución del contenido
Un ejemplo más complejo
Resumen
17. Programación en Java
La plataforma Java
Herramientas Java para Linux
El JDK de Sun
Proyecto Blackdown
Kaffe
GCC Java
Entornos de desarrollo
Compilación y ejecución
Uso del JDK
Uso del compilador GCJ
Fundamentos de Java
Estructuración del código
Referencias a paquetes existentes
Clases
Definición de una clase
Visibilidad y ámbito de los miembros
Subclases
Otros tipos de clases
Tipos de datos y variables
Operadores
Definición e implementación de métodos
Estructuras de control
Paquetes Java
Interfaces de usuario
Distribución del contenido
Elementos de interfaz
Gestión de los eventos
Un sencillo ejemplo
Resumen
18. Programación en ensamblador
Ensambladores
Nuestro primer programa en ensamblador
Ensamblado y enlazado
Registros y manipulación de datos
Asignación de valores
Valores inmediatos
Asignación entre registros
Lectura de datos de la memoria
Escritura de datos en la memoria
Definición de datos en el programa
Operaciones básicas
Instrucciones aritméticas
Condicionales
Otras instrucciones
Definición de macros
Servicios de Linux
Devolución del control al sistema
Entrada y salida por consola
Macros de ayuda
Trabajo con archivos
Apertura y creación de archivos
El puntero de lectura/escritura
Constantes y macros
Acceso a la memoria de pantalla
Guardar el contenido de la pantalla en un archivo
Manipulación del contenido de la pantalla
Acceso a discos
Resumen
19. Creación de CGI
Conceptos sobre aplicaciones Web
Protocolos y lenguajes
Servidores Web
Contenido estático y dinámico
Pasos previos
Archivos de configuración de Apache
Control del servidor
Nuestro primer CGI
Un CGI con Bash
Un CGI con C
Un CGI con Perl
Formularios HTML
Lectura de los datos de un formulario
Variables de entorno CGI
Extracción del contenido del formulario
Breve introducción a Perl
Fundamentos
Expresiones regulares
Lectura de la entrada estándar
Resumen
20. PHP
Configuración de PHP
Nuestra primera página PHP
Delimitar el código PHP
Sintaxis de PHP
El código de la página
Acceso a variables de entorno
Proceso de formularios
Resumen
A. Contenido del CD-ROM
Índice alfabético
GNU/Linux es un sistema operativo con una amplia difusión, una plataforma para el desarrollo de aplicaciones aceptada mundialmente por usuarios, instituciones y gobiernos para la cual hay disponibles multitud de lenguajes, bibliotecas y herramientas que, en su mayor parte, siguen la filosofía de código de uso libre.
Linux es posiblemente el sistema operativo para el que existe un mayor número de lenguajes, compiladores, bibliotecas y otras herramientas de desarrollo disponibles, lo cual permite a los programadores elegir lo que más se adecúa a los conocimientos y necesidades de cada proyecto en particular. El lenguaje de programación por excelencia en Linux es C, ya que gran parte del sistema, como ocurriera con Unix, se ha escrito con ese lenguaje. En cualquier instalación de Linux siempre existe un compilador de C, así como archivos de cabecera y bibliotecas estáticas y dinámicas. No necesitamos, por tanto, más que un editor simple y algo de documentación, normalmente también incluida en el sistema, para comenzar a programar con el lenguaje C.
El objetivo de este libro es introducirle de forma amplia al mundo de la programación en Linux, mostrándole qué opciones hay disponibles y cuál es su aplicación concreta.
Incluye CD-ROM con los ejemplos del libro, bibliotecas y herramientas de desarrollo para GNU/Linux.