Actualizado el 12 de Enero del 2021 (Publicado el 7 de Abril del 2018)
3.705 visualizaciones desde el 7 de Abril del 2018
2,8 MB
224 paginas
Creado hace 14a (09/03/2011)
Algoritmos y Programación I
Con lenguaje Python
9 de marzo de 2011
Contenidos
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 .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
4. Decisiones
4.1. Expresiones booleanas .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.1. Expresiones de comparación . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.2. Operadores lógicos .
.
2
7
7
8
9
13
13
15
15
17
18
19
20
21
21
22
24
24
25
26
27
27
28
29
30
30
31
32
34
35
38
39
41
41
42
42
4.2. Comparaciones simples
4.3. Múltiples decisiones consecutivas
4.4. Ejercicios .
4.5. Resumen .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
CONTENIDOS
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 .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
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 .
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
7. Tuplas y listas
.
7.1. Tuplas .
7.2. Listas .
7.5. Resumen .
.
.
.
.
.
.
.
.
.
.
.
.
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
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.3. Ordenar listas .
.
7.4. Listas y cadenas .
8. Algoritmos de búsqueda
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.1. El problema de la búsqueda .
8.2. Cómo programar la búsqueda lineal a mano . . . . . . . . . . . . . . . . . . . . .
8.3. Búsqueda lineal
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8.4. Buscar sobre una lista ordenada . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
8.5. Búsqueda binaria .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
8.6. Resumen .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
43
46
48
48
50
51
51
53
54
56
57
58
58
58
59
59
60
61
62
65
71
71
72
72
72
73
73
74
75
75
76
76
77
83
83
84
84
87
87
88
88
90
90
94
4
CONTENIDOS
9. Diccionarios
9.1. Qué es un diccionario .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.2. Utilizando diccionarios en Python . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.3. Algunos usos de diccionarios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9.4. Resumen .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
95
95
96
97
98
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 .
.
.
99
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
99
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
99
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
99
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
.
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
10.2.1. Comprobación de invariantes desde el código . . . . . . . . . . . . . . . . 102
10.3. Mutabilidad e Inmutabilidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
10.3.1. Parámetros mutables e inmutables . . . . . . . . . . . . . . . . . . . . . . . 103
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
10.4. Resumen .
.
10.5. Apéndice - Acertijo MU .
.
10.2. Invariantes de ciclo .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
11. Manejo de archivos
.
.
.
.
.
107
11.1. Cerrar un archivo .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
11.2. Ejemplo de procesamiento de archivos . . . . . . . . . . . . . . . . . . . . . . . . . 108
11.3. Modo de apertura de los archivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
11.4. Escribir en un archivo .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
11.5. Agregar información a un archivo . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
11.6. Manipular un archivo en forma binaria . . . . . . . . . . . . . . . . . . . . . . . . 112
11.7. Persistencia de datos .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
11.7.1. Persistencia en archivos CSV . . . . . . . . . . . . . . . . . . . . . . . . . . 115
11.7.2. Persistencia en archivos binarios . . . . . . . . . . . . . . . . . . . . . . . . 117
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
11.8. Directorios .
11.9. Resumen .
.
.
11
Comentarios de: Algoritmos y Programación I - Con lenguaje Python (0)
No hay comentarios