3. Ver más…
Guttag, John. Introduction to
Computation and
Programming Using Python:
With Application to
Understanding Data Second
Edition. MIT Press, 2016.
ISBN: 9780262529624.
3
4. ¿Qué hace una computadora?
● Fundamentalmente,
○ realiza cálculos
○ un billón de cálculos por segundo
○ “memoriza” los resultados (100s de gigabytes de almacenamiento!)
● ¿Qué tipos de cálculos?
○ Los que nos ofrece el lenguaje de programación
○ Definidos por programación
● …las computadoras solo saben lo que se les “dice”
Traducido de: Ana Bell, Eric Grimson, and John Guttag. 6.0001 Introduction to Computer Science and Programming in Python. Fall 2016. Massachusetts
Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu. License: Creative Commons BY-NC-SA.
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lectu
re-slides-code/MIT6_0001F16_Lec1.pdf 4
5. Tipos de Conocimiento
● El conocimiento declarativo es un enunciado de hechos
○ “Hoy elegiremos delegad@”
● El conocimiento imperativo es un “tutorial” o receta:
○ 1 - El profesor solicita voluntari@s
○ 2 - L@s estudiantes voluntari@s se identifican
○ 3 - Se realiza una votación
○ 4 - Se elige a quién obtenga una mayor votación
Basado en: Ana Bell, Eric Grimson, and John Guttag. 6.0001 Introduction to Computer Science and Programming in Python. Fall 2016. Massachusetts
Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu. License: Creative Commons BY-NC-SA.
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lectu
re-slides-code/MIT6_0001F16_Lec1.pdf 5
6. Un ejemplo numérico
● La raíz cuadrada de un número x es y tal que y*y = x
● Una “receta” para deducir la raíz cuadrada de un número x (16)
○ 1. Adivinemos un número g
○ 2. Si g*g está lo suficientemente cerca a x, detenerse y decir
que g es la respuesta
○ 3. Caso contrario, proponer una nueva estimativa al promediar g
y x/g
○ 4. Usando la nueva propuesta, repetir el proceso hasta que esté
lo suficientemente cerca
Basado en: Ana Bell, Eric Grimson, and John Guttag. 6.0001 Introduction to Computer Science and Programming in Python. Fall 2016. Massachusetts
Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu. License: Creative Commons BY-NC-SA.
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lectu
re-slides-code/MIT6_0001F16_Lec1.pdf 6
7. Un ejemplo numérico
Tomado de: Ana Bell, Eric Grimson, and John Guttag. 6.0001 Introduction to Computer Science and Programming in Python. Fall 2016. Massachusetts
Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu. License: Creative Commons BY-NC-SA.
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lectu
re-slides-code/MIT6_0001F16_Lec1.pdf
g g*g x/g (g+x/g)/2
x = 16
7
8. Un ejemplo numérico
Tomado de: Ana Bell, Eric Grimson, and John Guttag. 6.0001 Introduction to Computer Science and Programming in Python. Fall 2016. Massachusetts
Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu. License: Creative Commons BY-NC-SA.
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lectu
re-slides-code/MIT6_0001F16_Lec1.pdf
g g*g x/g (g+x/g)/2
3 9 16/3 4.17
x = 16
8
9. Un ejemplo numérico
Tomado de: Ana Bell, Eric Grimson, and John Guttag. 6.0001 Introduction to Computer Science and Programming in Python. Fall 2016. Massachusetts
Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu. License: Creative Commons BY-NC-SA.
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lectu
re-slides-code/MIT6_0001F16_Lec1.pdf
g g*g x/g (g+x/g)/2
3 9 16/3 4.17
x = 16
9
10. Un ejemplo numérico
Tomado de: Ana Bell, Eric Grimson, and John Guttag. 6.0001 Introduction to Computer Science and Programming in Python. Fall 2016. Massachusetts
Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu. License: Creative Commons BY-NC-SA.
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lectu
re-slides-code/MIT6_0001F16_Lec1.pdf
g g*g x/g (g+x/g)/2
3 9 16/3 4.17
4.17 17.36 3.837 4.0035
x = 16
10
11. Un ejemplo numérico
Tomado de: Ana Bell, Eric Grimson, and John Guttag. 6.0001 Introduction to Computer Science and Programming in Python. Fall 2016. Massachusetts
Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu. License: Creative Commons BY-NC-SA.
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lectu
re-slides-code/MIT6_0001F16_Lec1.pdf
g g*g x/g (g+x/g)/2
3 9 16/3 4.17
4.17 17.36 3.837 4.0035
x = 16
11
12. Un ejemplo numérico
Tomado de: Ana Bell, Eric Grimson, and John Guttag. 6.0001 Introduction to Computer Science and Programming in Python. Fall 2016. Massachusetts
Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu. License: Creative Commons BY-NC-SA.
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lectu
re-slides-code/MIT6_0001F16_Lec1.pdf
g g*g x/g (g+x/g)/2
3 9 16/3 4.17
4.17 17.36 3.837 4.0035
x = 16
12
13. Un ejemplo numérico
Tomado de: Ana Bell, Eric Grimson, and John Guttag. 6.0001 Introduction to Computer Science and Programming in Python. Fall 2016. Massachusetts
Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu. License: Creative Commons BY-NC-SA.
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lectu
re-slides-code/MIT6_0001F16_Lec1.pdf
g g*g x/g (g+x/g)/2
3 9 16/3 4.17
4.17 17.36 3.837 4.0035
4.0035 16.0277 3.997 4.000002
x = 16
13
14. Un ejemplo numérico
Tomado de: Ana Bell, Eric Grimson, and John Guttag. 6.0001 Introduction to Computer Science and Programming in Python. Fall 2016. Massachusetts
Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu. License: Creative Commons BY-NC-SA.
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lectu
re-slides-code/MIT6_0001F16_Lec1.pdf
g g*g x/g (g+x/g)/2
3 9 16/3 4.17
4.17 17.36 3.837 4.0035
4.0035 16.0277 3.997 4.000002
x = 16
14
15. Un ejemplo numérico
Tomado de: Ana Bell, Eric Grimson, and John Guttag. 6.0001 Introduction to Computer Science and Programming in Python. Fall 2016. Massachusetts
Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu. License: Creative Commons BY-NC-SA.
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lectu
re-slides-code/MIT6_0001F16_Lec1.pdf
g g*g x/g (g+x/g)/2
3 9 16/3 4.17
4.17 17.36 3.837 4.0035
4.0035 16.0277 3.997 4.000002
x = 16
15
16. ¿Qué es una receta?
1. Una secuencia de pasos simples
2. Un proceso de control de flujo que especifica cuándo es que
debemos realizar cada paso
3. Tener una forma de determinar cuándo detenerse
1+2+3 = es un algoritmo!
Basado en: Ana Bell, Eric Grimson, and John Guttag. 6.0001 Introduction to Computer Science and Programming in Python. Fall 2016. Massachusetts
Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu. License: Creative Commons BY-NC-SA.
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lectu
re-slides-code/MIT6_0001F16_Lec1.pdf 16
17. The exact
instructions
challenge
Basado en: Ana Bell, Eric Grimson, and John Guttag. 6.0001 Introduction to Computer Science and Programming in Python. Fall 2016. Massachusetts
Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu. License: Creative Commons BY-NC-SA.
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lectu
re-slides-code/MIT6_0001F16_Lec1.pdf 17
18. Las computadoras son máquinas
● ¿Cómo capturar una receta en un
proceso mecánico?
● computadoras de programa fijo
○ por ej. calculadora
● computadoras con programa
almacenado
○ la máquina guarda y ejecuta
instrucciones
Basado en: Ana Bell, Eric Grimson, and John Guttag. 6.0001 Introduction to Computer Science and Programming in Python. Fall 2016. Massachusetts
Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu. License: Creative Commons BY-NC-SA.
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lectu
re-slides-code/MIT6_0001F16_Lec1.pdf 18
19. Arquitectura básica de una computadora
Basado en: Ana Bell, Eric Grimson, and John Guttag. 6.0001 Introduction to Computer Science and Programming in Python. Fall 2016. Massachusetts
Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu. License: Creative Commons BY-NC-SA.
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lectu
re-slides-code/MIT6_0001F16_Lec1.pdf
Memoria
Unidad de Control
contador del
programa
Unidad aritmética
lógica
operaciones
primitivas
input output
19
20. Computadoras de programa almacenados (1/2)
● La secuencia de instrucciones almacenadas dentro de la
computadora
○ construidas sobre un conjunto de instrucciones
primitivas
■ aritméticas y lógicas
■ pruebas simples (por ej. comparaciones)
■ mover datos
Basado en: Ana Bell, Eric Grimson, and John Guttag. 6.0001 Introduction to Computer Science and Programming in Python. Fall 2016. Massachusetts
Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu. License: Creative Commons BY-NC-SA.
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lectu
re-slides-code/MIT6_0001F16_Lec1.pdf 20
21. Computadoras de programa almacenados (2/2)
● un programa especial (“intérprete”) ejecuta cada
instrucción en orden
○ usa pruebas (por ej. comparaciones) para cambiar el
control de flujo a lo largo de la secuencia
○ se detiene al terminar
Basado en: Ana Bell, Eric Grimson, and John Guttag. 6.0001 Introduction to Computer Science and Programming in Python. Fall 2016. Massachusetts
Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu. License: Creative Commons BY-NC-SA.
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lectu
re-slides-code/MIT6_0001F16_Lec1.pdf 21
22. Primitivas básicas
● Turing mostró que se puede calcular todo usando
6 primitivas
● Los lenguajes de programación modernos tienen
un conjunto de primitivas más convenientes
● Se pueden “abstraer” métodos para crear nuevas
primitivas
● Algo computable en un lenguaje es computable
en cualquier lenguaje
Basado en: Ana Bell, Eric Grimson, and John Guttag. 6.0001 Introduction to Computer Science and Programming in Python. Fall 2016. Massachusetts
Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu. License: Creative Commons BY-NC-SA.
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lectu
re-slides-code/MIT6_0001F16_Lec1.pdf 22
23. Creando recetas
● un lenguaje de programación ofrece un conjunto de
operaciones primitivas
● las expresiones son combinaciones “legales” elaboradas
(permitidas) en un lenguaje de programación
● Las expresiones y la computación tienen valores y
significado en un lenguaje de programación
Basado en: Ana Bell, Eric Grimson, and John Guttag. 6.0001 Introduction to Computer Science and Programming in Python. Fall 2016. Massachusetts
Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu. License: Creative Commons BY-NC-SA.
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lectu
re-slides-code/MIT6_0001F16_Lec1.pdf 23
24. Aspectos de los lenguajes (1/4)
● constructos primitivos
○ Español: palabras
○ Lenguaje de programación: números, cadenas,
operadores simples
Basado en: Ana Bell, Eric Grimson, and John Guttag. 6.0001 Introduction to Computer Science and Programming in Python. Fall 2016. Massachusetts
Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu. License: Creative Commons BY-NC-SA.
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lectu
re-slides-code/MIT6_0001F16_Lec1.pdf 24
25. Aspectos de los lenguajes (2/4)
● sintaxis
○ español:
■ “voy computadora clases” → no válido sintácticamente
■ “voy a clases” → válido sintácticamente
○ lenguaje de programación:
■ “hi”5 → no válido sintácticamente
■ 3.2 * 5 → válido sintácticamente
Basado en: Ana Bell, Eric Grimson, and John Guttag. 6.0001 Introduction to Computer Science and Programming in Python. Fall 2016. Massachusetts
Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu. License: Creative Commons BY-NC-SA.
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lectu
re-slides-code/MIT6_0001F16_Lec1.pdf 25
26. Aspectos de los lenguajes (3/4)
● semántica estática son las cadenas válidas sintácticamente que
además tienen significado
○ español:
■ “Yo tener hambre” → sintácticamente válido
pero tiene un error de semántica estática
○ lenguaje de programación:
■ 3.2 * 5 → válido sintácticamente
■ 3+”hola” → error de semántica estática
Basado en: Ana Bell, Eric Grimson, and John Guttag. 6.0001 Introduction to Computer Science and Programming in Python. Fall 2016. Massachusetts
Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu. License: Creative Commons BY-NC-SA.
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lectu
re-slides-code/MIT6_0001F16_Lec1.pdf 26
27. Aspectos de los lenguajes (4/4)
● semántica es el significado asociado a cadenas de
símbolos sintácticamente correctos sin errores de
semántica estática
○ español:
■ …puede tener múltiples significados “te
esperé en el banco del parque”
○ lenguaje de programación:
■ … tienen un único significado, pero podría ser
diferente al que queríamos
Basado en: Ana Bell, Eric Grimson, and John Guttag. 6.0001 Introduction to Computer Science and Programming in Python. Fall 2016. Massachusetts
Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu. License: Creative Commons BY-NC-SA.
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lectu
re-slides-code/MIT6_0001F16_Lec1.pdf 27
28. ¿Dónde cometemos errores? (1/2)
● errores sintácticos
○ fáciles de detectar
● errores de semántica estática
○ algunos lenguajes de programación revisan estos
potenciales errores
○ pueden generar comportamiento no previsto
Basado en: Ana Bell, Eric Grimson, and John Guttag. 6.0001 Introduction to Computer Science and Programming in Python. Fall 2016. Massachusetts
Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu. License: Creative Commons BY-NC-SA.
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lectu
re-slides-code/MIT6_0001F16_Lec1.pdf 28
29. ¿Dónde cometemos errores? (2/2)
● sin errores semánticos, pero con un significado diferente a
nuestra intención
○ el programa se cae, se detiene la ejecución
○ el programa se ejecuta por siempre
○ el programa retorna una respuesta diferente a la
esperada
Basado en: Ana Bell, Eric Grimson, and John Guttag. 6.0001 Introduction to Computer Science and Programming in Python. Fall 2016. Massachusetts
Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu. License: Creative Commons BY-NC-SA.
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lectu
re-slides-code/MIT6_0001F16_Lec1.pdf 29
30. Programas en Python
● un programa es una secuencia de definiciones y comandos
○ las definiciones son evaluadas
○ los comandos son ejecutados por el intérprete de python
en un shell
● los comandos (o “statements”) indican al intérprete que debe
hacer algo
● puede ser tipeado directamente en el shell o guardado en un
archivo que es leído por el shell.
Basado en: Ana Bell, Eric Grimson, and John Guttag. 6.0001 Introduction to Computer Science and Programming in Python. Fall 2016. Massachusetts
Institute of Technology: MIT OpenCourseWare, https://ocw.mit.edu. License: Creative Commons BY-NC-SA.
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/lectu
re-slides-code/MIT6_0001F16_Lec1.pdf 30
31. Python: un lenguaje de programación en crecimiento
https://news.codecadem
y.com/why-learn-python/
31
33. Desarrollo de Python
● Diseñado por Guido van Rossum en 1991
● El soporte para Python 2.x finalizó el 1 de
enero del 2020
● La versión actual con soporte es la rama 3.x y
comenzó en Diciembre del 2008.
https://www.geeksforgeeks.org/history-of-python/ 33
34. Entrevista a Guido van Rossum
https://www.youtube.com/watch?v=J0Aq44Pze-w 34