Actualizado el 21 de Marzo del 2018 (Publicado el 9 de Octubre del 2017)
5.473 visualizaciones desde el 9 de Octubre del 2017
2,7 MB
248 paginas
Creado hace 11a (27/05/2013)
Algoritmos y Programación I
Aprendiendo a programar usando Python como
herramienta
Contenidos
Prólogo
1. Conceptos básicos
.
1.1. Computadoras y programas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2. El mito de la máquina todopoderosa . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3. Cómo darle instrucciones a la máquina usando Python . . . . . . . . . . . . . . .
1.4. Devolver un resultado .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.5. Una instrucción un poco más compleja: el ciclo definido . . . . . . . . . . . . . . .
1.5.1. Ayuda desde el intérprete . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.6. Construir programas y módulos
1.7. La forma de un programa Python . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.8. Estado y computación .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.9. Depuración de programas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.10. Ejercicios .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
2. Programas sencillos
.
2.3.1. Nombres .
.
2.3.2. Expresiones .
2.1. Construcción de programas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2. Realizando un programa sencillo . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3. Piezas de un programa Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4. No sólo de números viven los programas . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
2.5.
.
.
2.6. Ciclos definidos .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.7. Una guía para el diseño .
2.8. Ejercicios .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Instrucciones .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3. Funciones
Imprimir versus Devolver .
3.1. Documentación de funciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3. Cómo usar una función en un programa . . . . . . . . . . . . . . . . . . . . . . . .
3.4. Más sobre los resultados de las funciones . . . . . . . . . . . . . . . . . . . . . . .
3.5. Un ejemplo completo .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.6. Devolver múltiples resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.7. Resumen .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.8. Ejercicios .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2
8
10
10
11
12
16
16
18
19
20
21
23
24
25
25
26
28
28
29
30
31
31
32
33
34
34
35
36
38
39
42
43
45
4. Decisiones
CONTENIDOS
.
4.1. Expresiones booleanas .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.1. Expresiones de comparación . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.2. Operadores lógicos .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.2. Comparaciones simples
4.3. Múltiples decisiones consecutivas
4.4. Ejercicios .
4.5. Resumen .
4.6. Ejercicios .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5. Más sobre ciclos
.
.
.
.
5.1. Ciclos indefinidos .
.
5.2. Ciclo interactivo .
.
.
.
5.3. Ciclo con centinela .
.
5.4. Cómo romper un ciclo .
.
5.5. Ejercicios .
.
5.6. Resumen .
5.7. Ejercicios .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6. Cadenas de caracteres
.
.
6.1. Operaciones con cadenas .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.1.1. Obtener el largo de una cadena . . . . . . . . . . . . . . . . . . . . . . . . .
6.1.2. Recorrer una cadena . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.1.3. Acceder a una posición de la cadena . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
6.2. Segmentos de cadenas .
6.3. Las cadenas son inmutables .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.4. Procesamiento sencillo de cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6.5. Nuestro primer juego .
6.6. Ejercicios .
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
6.7. Resumen .
6.8. Ejercicios .
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7. Tuplas y listas
.
7.1. Tuplas .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.1.1. Elementos y segmentos de tuplas . . . . . . . . . . . . . . . . . . . . . . . .
7.1.2. Las tuplas son inmutables . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.1.3. Longitud de tuplas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.1.4. Empaquetado y desempaquetado de tuplas . . . . . . . . . . . . . . . . . .
7.1.5. Ejercicios con tuplas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2.1. Longitud de la lista. Elementos y segmentos de listas . . . . . . . . . . . .
7.2.2. Cómo mutar listas
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2.3. Cómo buscar dentro de las listas . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.4.1. Ejercicios con listas y cadenas . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7.2. Listas .
.
7.3. Ordenar listas .
.
7.4. Listas y cadenas .
7.5. Resumen .
7.6. Ejercicios .
3
46
46
47
47
48
51
53
53
55
57
58
58
60
61
63
64
65
67
67
67
68
68
69
70
71
74
80
80
81
83
83
83
84
84
85
86
86
87
87
88
94
94
95
95
98
4
CONTENIDOS
8. Algoritmos de búsqueda
100
8.1. El problema de la búsqueda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
8.2. Cómo programar la búsqueda lineal a mano . . . . . . . . . . . . . . . . . . . . . 101
8.3. Búsqueda lineal
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
8.4. Buscar sobre una lista ordenada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
8.5. Búsqueda binaria .
8.6. Resumen .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
.
8.7. Ejercicios .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
9. Diccionarios
109
9.1. Qué es un diccionario .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
9.2. Utilizando diccionarios en Python . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
9.3. Algunos usos de diccionarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
9.4. Resumen .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
9.5. Ejercicios .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
10. Contratos y Mutabilidad
.
.
.
.
.
.
10.1. Pre y Postcondiciones .
.
10.1.1. Precondiciones .
10.1.2. Postcondiciones .
.
10.1.3. Aseveraciones .
10.1.4. Ejemplos .
.
.
.
.
114
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
.
10.2.1. Comprobación de invariantes desde el código . . . . . . . . . . . . . . . . 117
10.3. Mutabilidad e Inmutabilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
10.3.1. Parámetros mutables e inmutables . . . . . . . . . . . . . . . . . . . . . . . 118
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
10.4. Resumen .
.
10.5. Apéndice - Acertijo MU .
.
10.2. Invariantes de ciclo .
.
.
.
.
.
.
.
.
.
.
.
.
.
11. Manejo de archivos
.
.
.
.
.
122
11.1. Cerrar un archivo .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
11.2. Ejemplo de procesamiento de archivos . . . . . . . . . . . . . . . . . . . . . . . . . 123
11.3. Modo de apertura de los archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
11.4. Escribir en un archivo .
. . . . .
Comentarios de: Algoritmos y Programación I - Aprendiendo a programar usando Python como herramienta (0)
No hay comentarios