Este libro sobre algoritmia se dirige a cualquier persona que quiera controlar y dominar los aspectos principales de la programación. Para aprender a programar, en primer lugar es necesario entender qué es realmente un ordenador, cómo funciona y sobre todo, cómo puede hacer que los programas puedan funcionar, cómo manipula y almacena los datos y las instrucciones y cuál es su lógica. Poco a poco, a medida que se van entendiendo estos conceptos, el...
Este libro sobre algoritmia se dirige a cualquier persona que quiera controlar y dominar los aspectos principales de la programación. Para aprender a programar, en primer lugar es necesario entender qué es realmente un ordenador, cómo funciona y sobre todo, cómo puede hacer que los programas puedan funcionar, cómo manipula y almacena los datos y las instrucciones y cuál es su lógica. Poco a poco, a medida que se van entendiendo estos conceptos, el resto se hace evidente: variables, pruebas, condiciones, bucles, tablas, funciones, archivos, hasta las nociones más avanzadas, como la compresión de las listas y los objetos.
El lenguaje algorítmico (o la sintaxis del pseudo-código de los algoritmos), recoge lo que se usa más habitualmente en las escuelas de informática y el primer año de ingeniería. A los alumnos de estas formaciones es a quién se destina y aconseja principalmente este libro. Cuando se han adquirido las nociones principales y básicas, el lector encontrará en este libro cómo evolucionar hacia las nociones más avanzadas: hay un capítulo sobre los objetos, que abre las puertas de la programación en los lenguajes más evolucionados y potentes como C, C++ y sobre todo, Python.
Al final de cada capítulo, el autor ofrece numerosos ejercicios corregidos, que permiten consolidar sus conocimientos adquiridos.
Todos los algoritmos de este libro se escriben en Python y los códigos fuente se pueden utilizar directamente. Se pueden descargar en el sitio web www.ediciones-eni.com.
Los capítulos del libro:
Prefacio – Introducción a la algoritmia – Las variables y los operadores – Pruebas y lógica buleana – Los bucles – Las tablas y las estructuras – Los sub-programas – Los archivos – Nociones avanzadas – Un enfoque a la orientación a objetos – Ejercicios corregidos
1.3 Representación interna de las instrucciones y de los datos
1.3.1 El binario
1.3.2 Los bytes y las palabras
1.3.3 El hexadecimal
2. La algoritmia
2.1 Programar, es un arte
2.2 Definición: el algoritmo es una receta
2.3 ¿ Por qué utilizar un algoritmo ?
2.4 El formalismo
2.4.1 Los esquemas algorítmicos
2.4.2 El algoritmo en forma de texto
2.5 La complejidad
2.6 Las estructuras algorítmicas
3. Los lenguajes de implementación
3.1 ¿ Qué lenguaje ?
3.2 Clasificaciones de los lenguajes
3.2.1 Alto nivel, bajo nivel
3.2.2 Diversas clasificaciones
3.2.3 Compilado o interpretado
3.3 La máquina virtual
3.4 Python
3.4.1 Las ventajas
3.4.2 Un primer programa Python
4. Ejercicios
Las variables y los operadores
1. La variable
1.1 Principio
1.2 Declaración
1.3 Los tipos
1.3.1 Los números
1.3.2 Otros tipos numéricos
1.3.3 Los caracteres
1.3.4 El tipo buleano
1.4 Asignación
1.4.1 Asignación de valores
1.4.2 Asignación de variables
1.5 Introducir información y visualizarla
1.5.1 La función print()
1.5.2 La función input()
1.6 Las constantes
2. Operadores y cálculos
2.1 Las asignaciones
2.2 Los operadores aritméticos
2.3 Los operadores buleanos
2.4 Los operadores de comparación
2.4.1 La igualdad
2.4.2 La diferencia
2.4.3 Inferior, superior
2.5 El caso de las cadenas de caracteres
2.6 La precedencia de los operadores
3. Para ir más allá
3.1 Los números negativos
3.2 La representación de los números reales
3.3 Las fechas
3.4 Los caracteres
4. Tipos y lenguajes
4.1 Lenguajes tipados o no
4.2 La gestión de la memoria
5. Los tipos específicos de Python
5.1 Las listas
5.2 Las tuplas
5.3 El tipo set
5.4 Los diccionarios
6. Ejercicios
Pruebas y lógica buleana
1. Las pruebas y condiciones
1.1 Principio
1.2 ¿ Qué probar ?
1.3 Pruebas SI
1.3.1 Forma sencilla
1.3.2 Forma compleja
1.4 Pruebas anidadas
1.5 Opciones múltiples
1.6 Ejemplos completos
1.6.1 El día siguiente a una fecha
1.6.2 La validez de una fecha
1.6.3 La hora en n segundos
2. El álgebra buleana
2.1 El origen de las pruebas
2.2 Pequeños errores, grandes consecuencias
2.2.1 Ariane 5
2.2.2 Mars Climate Orbiter
2.3 George Boole
2.4 El álgebra
2.4.1 Establecer una comunicación
2.4.2 La verdad
2.4.3 La ley Y
2.4.4 La ley O
2.4.5 El contrario
2.4.6 Las propiedades
2.4.7 Algunas funciones lógicas
2.4.8 Con más de dos variables
2.5 Una última precisión
3. Ejercicios
Los bucles
1. Las estructuras iterativas
1.1 Definición
1.2 Algunos usos sencillos
2. MientrasQue
2.1 Estructura general
2.2 Bucles infinitos y "break"
2.3 Dos ejemplos
2.3.1 Una tabla de multiplicación
2.3.2 Un factorial
2.3.3 x a la potencia y
2.3.4 Todas las tablas de multiplicación
2.3.5 Introducir notas y cálculo de medias
2.3.6 Cantidad monetaria
2.3.7 Tres bucles
3. Repetir ... Hasta
3.1 Diferencias fundamentales
3.2 Algunos ejemplos adaptados
3.2.1 El factorial
3.2.2 Los tres bucles
4. Para ... Fin Para
4.1 Una estructura para contar...
4.2 ... pero no indispensable
4.3 ¿ Qué estructura elegir ?
4.4 Un trampa que debe evitar
4.5 Algunos ejemplos
4.5.1 De nuevo tres bucles
4.5.2 El factorial
4.5.3 Raíz cuadrada con precisión
4.5.4 Cálculo del número PI
5. Ejercicios
Las tablas y las estructuras
1. Presentación
1.1 Principio y definición
1.1.1 Simplificar los variables
1.1.2 Las dimensiones
1.1.3 Los tipos
1.1.4 Declaración
1.1.5 Uso
1.1.6 Las tablas dinámicas
1.2 Python y las tablas
1.3 Representación en memoria
1.3.1 Representación lineal
1.3.2 Representación por referencia
2. Operaciones sencillas
2.1 Búsqueda de un elemento
2.2 El más grande/pequeño y la media
2.3 Las tres en raya
3. Algoritmos avanzados
3.1 Los algoritmos de las ordenaciones
3.1.1 El principio
3.1.2 La ordenación por creación
3.1.3 La ordenación por selección
3.1.4 La ordenación de burbuja
3.1.5 La ordenación por inserción
3.1.6 La ordenación Shell
3.2 Búsqueda por dicotomía
4. Estructuras y registros
4.1 Principio
4.2 Declaración
4.2.1 Tipo estructurado
4.2.2 Registro
4.3 Utilizar los registros
4.3.1 Utilizar los campos
4.3.2 Un registro en una estructura
4.3.3 Una tabla en una estructura
4.4 Las tablas de registros
4.4.1 Las tablas
4.4.2 Una tabla como campo
4.5 ¿ Y Python ?
5. Ejercicios
Los subprogramas
1. Presentación
1.1 Principio
1.2 Declaración y definición
1.2.1 En un algoritmo
1.2.2 En Python
1.3 Llamada
1.4 Funciones y procedimientos
1.4.1 Los procedimientos
1.4.2 Las funciones
1.5 Variables locales y globales
1.5.1 Locales
1.5.2 Globales
1.5.3 Variables globales y Python
1.6 Los argumentos
1.6.1 Los procedimientos
1.6.2 Las funciones
1.6.3 Argumento y Python
1.6.4 Pequeña aplicación funcional
1.7 Subprogramas predeterminados
1.7.1 Una elección importante
1.7.2 Algunos ejemplos
1.8 Último caso: las tablas
2. Los subprogramas recursivos
2.1 Principio
2.2 Un primer ejemplo: el factorial
2.3 Un ejemplo práctico: las torres de Hanoï
3. Ejercicios
Los archivos
1. Los diferentes archivos
1.1 Preámbulo
1.2 Problemática
1.3 Definición
1.4 Los formatos
1.4.1 Tipos de contenidos
1.4.2 El archivo binario
1.4.3 El archivo de texto
1.4.4 ¿ Qué formato utilizar ?
1.5 Los accesos a los archivos
1.5.1 Secuencial
1.5.2 Acceso directo
1.5.3 Indexación
1.5.4 ¿ Otro ?
2. Los registros
2.1 Los delimitadores
2.2 Longitud fija
2.3 Principios de acceso
2.3.1 Etapas básicas
2.3.2 Identificadores de archivos y canales
2.3.3 Los modos de apertura
3. Archivo de texto secuencial
3.1 Abrir y cerrar un archivo
3.2 Leer y escribir registros
3.2.1 Lectura
3.2.2 Escritura
3.3 Los registros estructurados
3.4 Ejemplo en Python
4. Los archivos binarios
4.1 Nuevas instrucciones
4.2 Ejemplo
5. Ejercicios
Nociones avanzadas
1. Los punteros y referencias
1.1 Recordatorio sobre la memoria y los datos
1.1.1 Estructura de la memoria
1.1.2 Python: los límites que no lo son
1.1.3 Breves ejemplos en C
1.2 El puntero
1.2.1 Principio y definición
1.2.2 El C rey de los punteros
1.2.3 Aplicaciones
1.3 Notación algorítmica
1.3.1 Declarar y utilizar punteros
1.3.2 Asignación dinámica
1.4 Python y las referencias
1.4.1 Diferencias entre C y Python
1.4.2 Referencias a los objetos
1.4.3 Los tipos primitivos
1.4.4 Referencias sobre estructuras
1.4.5 La trampa en Python
2. Las listas encadenadas
2.1 Listas encadenadas simples
2.1.1 Principio
2.1.2 Creación
2.1.3 Recorrido de la lista
2.1.4 Búsqueda
2.1.5 Añadir elemento
2.1.6 Eliminación de un elemento
2.1.7 Eliminar toda la lista
2.1.8 Recorrido recursivo
2.2 La implementación en Python
2.3 Otros ejemplos de listas
2.3.1 Listas circulares
2.3.2 Lista de elementos ordenados
2.3.3 Listas doblemente encadenadas
2.3.4 Filas y pilas
3. Los árboles
3.1 Principio
3.2 Definiciones
3.2.1 Principios básicos
3.2.2 Terminología
3.2.3 Descripción horizontal
3.2.4 Descripción vertical
3.2.5 El árbol binario
3.3 Recorrido de un árbol
3.4 Árbol binario ordenado
3.4.1 Principio
3.4.2 Búsqueda de un elemento
3.4.3 Añadir un elemento
3.4.4 Eliminación de un nodo
4. Ejercicios
Un enfoque a la orientación a objetos
1. Principio de objeto, una noción evidente
1.1 Antes de continuar
1.2 Recoratorio sobre la programación procedural
1.2.1 Los datos
1.2.2 Las operaciones
1.3 El objeto
1.3.1 En la vida corriente
1.3.2 En informática
1.4 Clase, objetos
1.5 Declaración y acceso
1.6 Los métodos
1.7 Ámbito de los miembros
1.8 Encapsulación de los datos
1.9 La herencia
1.9.1 Principio
1.9.2 Comercio
1.9.3 Jerarquía
1.9.4 Simple o múltiple
1.10 El polimorfismo
1.10.1 Principio
1.10.2 El polimorfismo ad hoc
1.10.3 El polimorfismo de herencia
1.10.4 El polimorfismo paramétrico
2. Manipular los objetos
2.1 Los constructores
2.1.1 Declaración
2.1.2 Llamada implícita
2.1.3 La herencia
2.2 Los destructores
2.3 Los miembros estáticos
2.4 Clases y métodos abstractos
2.5 Interfaces
3. El objeto en Python
3.1 Los lenguajes orientados a objetos
3.2 Declaración de las clases y los objetos
3.3 Herencia
3.4 Interfaces
4. Ejercicios
Ejercicios corregidos
1. Introducción a la algoritmia
2. Las variables y los operadores
3. Pruebas y lógica buleana
4. Los bucles
5. Las tablas y las estructuras
6. Los subprogramas
7. Los archivos
8. Nociones avanzadas
9. Un enfoque a la orientación a objetos
índice
Excelente material que no se encuentra en otros textos. Gracias!
Marcelo V
Muy buena opción para introducirse quera al arte de la programación desde los fundamentos
Anónimo
Franck EBEL
Franck EBEL - Es profesor de la Universidad de Valenciennes y teniente-coronel en la reserva de la Gendarmería y especialista en la lucha contra el ciberdelito. Experto en vulnerabilidades de aplicación, creó la licenciatura profesional CDAISI, la única en Francia en la llamada seguridad ofensiva. Posee el Certificado CEH, OSCP y Wifu, forma a los Ntech de la Gendarmería de la región Nord-Pas de Calais y CICERT de Côte de Ivoire. Como presidente de la asociación ACISSI, organiza cada año las RSIL y el Hacking challenge "Hacknowledge". Es miembro de AFPY, asociación de habla francesa para Python y da conferencias en Europa y África sobre Python, software libre y seguridad informática.
Tras diplomarse en una prestigiosa escuela francesa de ingenieros en informática, trabajar como responsable técnico de un equipo DevOps dentro de un gran grupo francés, y tras haber obtenido el título de ingeniero DPE (Diplomado por el Estado en Francia), Sébastien ROHAUT ejerce hoy de responsable de seguridad de una plataforma Cloud dentro del mismo grupo. Asimismo, ha dado clases preparatorias y de ingenieros durante 11 años para preparar para los exámenes Linux. Esta vasta experiencia técnica y pedagógica le permite proponer a los lectores un libro muy eficaz sobre la administración de un sistema Linux.