primeros pasos en python 3ausanabria/files/2017iscursos/... · función en la cual está definida....

32
1 Primeros Pasos en Python 3 Introducción a la programación I semestre, 2016

Upload: others

Post on 11-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

1

Primeros Pasos en Python 3

Introducción a la programación

I semestre, 2016

Page 2: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

Escribir Programas en Python

Un programador debe utilizar expresiones, funciones y métodos de forma combinada para obtener soluciones a problemas.

Un programa en Python:

● Archivo con extensión .py (ejemplo: circulo.py)

● Archivo C o C++ compilados

● Un módulo cargado dinámicamente (import)

InterpretePython

Page 3: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

Escribir Programas en Python

#!/usr/bin/python3

#Archivo: area-circulo.py

#Calcular área de un circulo

# A = Pi * r **2

radio = 10

area = 3.141516 * radio ** 2

print(area)

… y ¿si después quiero volver a calcular el área de un circulo?

Page 4: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

Definición de una función

Una mejor forma para escribir programas es por medio de funciones.

def nombre_función(argumentos):

Cuerpo de la función

def: es una palabra reservada de python.

Nombre de la función es un identificador válido de python (usar un nombre significativo).

Los argumentos son las entradas que recibe el programa. Se presentan como nombres simbólicos o identificadores internos que serán sustituidos.

Cuerpo de la función: lógica de la solución. Expresiones, combinaciones de estructuras permitidas, podría contener invocaciones a otras funciones.

Notas de Sintaxis: dos puntos ( : ) e identación.

… ¿y las salidas? ¿y las restricciones?

Page 5: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

Invocar funciones

Las funciones pueden ejecutarse directamente desde el intérprete o desde otro programa.

Sintaxis para la ejecución desde el intérprete:

>>> nombre_función(valores_argumentos)

Resultado (si lo hubiera)

Los argumentos son los valores de entrada que serán asociados a los nombres simbólicos (identificadores internos que definimos)

La invocación de funciones dentro de otro programa se realiza igual, pero el resultado no se presentará en el intérprete sino que estará a disposición de “quien” invocó la función.

Page 6: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

Escribir Programas en Python (nivel 2)

#!/usr/bin/python3

#archivo: area-circulo2-v2.py

#Calcular área de un circulo

# A = Pi * r **2

def area_circulo(radio):

area = 3.141516 * radio ** 2

return area

resultado = area_circulo(10)

print(resultado)

Page 7: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

Escribir Programas en Python (v2)

#!/usr/bin/python3

#Archivo: area-circulo2-v2.py

#Calcular área de un circulo

# A = Pi * r **2

def area_circulo(radio):

area = 3.141516 * radio ** 2

return area

resultado = area_circulo(10)

print(resultado)

Variable local

Únicamente es conocida dentro del ámbito de la función en la cual está definida. Fuera de la función “area” no existe.

Page 8: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

Documentación interna del código

En Python tenemos dos formas de escribir comentarios en el código fuente:

● De una línea: se utiliza el símbolo #

● Multilínea: se definen con tres comillas dobles

#!/usr/bin/python3

# Archivo: area-circulo2-v3.py

# Función que calcula el área de un circulo

# Entradas: radio.

# Salidas: área del circulo

# Restricciones: el radio debe ser mayor que cero

def area_circulo(radio):

area = 3.141516 * radio ** 2 # Formula: A = Pi * r **2

return area

Page 9: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

Documentación interna del código

En Python tenemos dos formas de escribir comentarios en el código fuente:

● De una línea: se utiliza el símbolo #

● Multilínea: se definen con tres comillas (docstrings)

#!/usr/bin/python3

'''

Función que calcula el área de un circulo

Entradas: radio.

Salidas: área del circulo

Restricciones: el radio debe ser mayor que cero

'''

def area_circulo(radio):

Page 10: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

Documentación interna del código (print doc)

#!/usr/bin/python3

def area_circulo(radio):

'''

Función que calcula el área de un circulo

Entradas: radio.

Salidas: área del circulo

Restricciones: el radio debe ser mayor que cero

'''

return 3.141516 * radio ** 2 # Formula: A = Pi * r **2

>>> print(area_circulo.__doc__)

Page 11: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

Ejercicio: Área y Perímetro de un rectángulo

Escriba un programa de python que contenga dos funciones para operar con rectángulos:

● Área = Base * Altura

● Perímetro = Base + Base + Altura + Altura

→ Utilice return para retornar el valor resultante de las operaciones.

→ Asegúrese de hacer pruebas de su programa (diseñe un plan de pruebas).

Entender elproblema

Pensar un algoritmo

Código Pruebas

ComentariosDiagrama de flujoEntradasSalidasRestricciones

Page 12: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

Errores.... (pulgas o bugs)

Dos tipos de errores:

● Sintácticos: se da por incumplimiento de las reglas definidas para el lenguaje.

● Semánticos: se dan en tiempo de ejecución y representar fallos en la lógica del programa. Si hay resultados pero no son los esperados.

Page 13: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

Ejercicio: Conversión de grados

Escriba dos funciones, bien documentas, para convertir grados centígrados a farenheit.

Formulas:

● Farenheit = 9 /5 * centígrados + 32

● Centígrados: ( Farenheit – 32 ) / 1,8

Más práctica:

● Construya una función para cada una de las conversiones que aparecen en esta tabla: http://es.wikipedia.org/wiki/Grado_Fahrenheit#Conversi.C3.B3n_a_otras_unidades

Page 14: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

Más Información

Funciones:

● http://docs.python.org/release/3.1.3/tutorial/controlflow.html#defining-functions

Errores:

● http://docs.python.org/release/3.1.3/tutorial/errors.html

Page 15: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

Referencias y Lecturas Complementarias

● Material suministrado por el profesor Jeff Schmidt, Instituto Tecnológico de Costa Rica. I semestre 2011.

Page 16: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

22

Las presentaciones para el curso IC-1800: "Introducción a la Programación" por Ing. En Computación Alajuela se distribuyen bajo una

Licencia Creative Commons Atribución-Compartir Igual 3.0 Costa Rica.

http://creativecommons.org/licenses/by-sa/3.0/cr/http://creativecommons.org/licenses/by-sa/3.0/cr/ *La licencia de la presentación no cubre las imágenes utilizadas*

Page 17: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

1

Primeros Pasos en Python 3

Introducción a la programación

I semestre, 2016

Page 18: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

Escribir Programas en Python

Un programador debe utilizar expresiones, funciones y métodos de forma combinada para obtener soluciones a problemas.

Un programa en Python:

● Archivo con extensión .py (ejemplo: circulo.py)

● Archivo C o C++ compilados

● Un módulo cargado dinámicamente (import)

InterpretePython

Expresiones: combinaciones de operadores, métodos, funciones, datos

Formular del área: A = pi * r2

Con los conocimientos adquiridos hasta ahora: ¿cómo podemos escribir un programa de Python que nos permita calcular el área de un círculo?.

Page 19: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

Escribir Programas en Python

#!/usr/bin/python3

#Archivo: area-circulo.py

#Calcular área de un circulo

# A = Pi * r **2

radio = 10

area = 3.141516 * radio ** 2

print(area)

… y ¿si después quiero volver a calcular el área de un circulo?

OJO: Este ejemplo es antes de utilizar funciones.

Aprovechar para explicar que si bien esta es una forma de solucionar el problema, es poco reutilizable porque para cada vez que quiero utilizarla necesito cambiar la codificación del programa.

La primera línea es para indicarle al sistema operativo cual python debe utilizar.

- De modo que yo podría utilizar el programa como un script que ejecuta directamente el S.O.

$chmod z+x NOMBRE_PROGRAMA → esto para hacerlo ejecutable$./NOMBRE_PROGRAMA→ lo ejecuto.

Page 20: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

Definición de una función

Una mejor forma para escribir programas es por medio de funciones.

def nombre_función(argumentos):

Cuerpo de la función

def: es una palabra reservada de python.

Nombre de la función es un identificador válido de python (usar un nombre significativo).

Los argumentos son las entradas que recibe el programa. Se presentan como nombres simbólicos o identificadores internos que serán sustituidos.

Cuerpo de la función: lógica de la solución. Expresiones, combinaciones de estructuras permitidas, podría contener invocaciones a otras funciones.

Notas de Sintaxis: dos puntos ( : ) e identación.

… ¿y las salidas? ¿y las restricciones?

Las salidas usualmente son dadas con un return, para que otra parte del programa pueda utilizar esos valores. ( return )

Las restricciones, utilizamos comentarios para indicarle al programados de éstas y validaciones para hacer que el programa se asegure que los datos de entrada cumplen con las restricciones.

Los argumentos en otros lenguajes se les conoce como parámetros.

Ojo con los argumentos: Python permite una funciones con un número de argumentos variable, o argumentos por omisión (predeterminados). Revisen eso...

Ojo que en python no se define el tipo de valor que se retornará, inclusive podría ser que para el programador no retorne nada, en esos casos Python retorna None.

Page 21: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

Invocar funciones

Las funciones pueden ejecutarse directamente desde el intérprete o desde otro programa.

Sintaxis para la ejecución desde el intérprete:

>>> nombre_función(valores_argumentos)

Resultado (si lo hubiera)

Los argumentos son los valores de entrada que serán asociados a los nombres simbólicos (identificadores internos que definimos)

La invocación de funciones dentro de otro programa se realiza igual, pero el resultado no se presentará en el intérprete sino que estará a disposición de “quien” invocó la función.

Page 22: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

Escribir Programas en Python (nivel 2)

#!/usr/bin/python3

#archivo: area-circulo2-v2.py

#Calcular área de un circulo

# A = Pi * r **2

def area_circulo(radio):

area = 3.141516 * radio ** 2

return area

resultado = area_circulo(10)

print(resultado)

¿de dónde a donde va la función?Incluye únicamente la línea que comienza con def, la

instanciación de la variable y el return. Lo demás es para ejecutar la función con un argumento particular, pero podría hacer lo mismo usando el shell de python.

Page 23: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

Escribir Programas en Python (v2)

#!/usr/bin/python3

#Archivo: area-circulo2-v2.py

#Calcular área de un circulo

# A = Pi * r **2

def area_circulo(radio):

area = 3.141516 * radio ** 2

return area

resultado = area_circulo(10)

print(resultado)

Variable local

Únicamente es conocida dentro del ámbito de la función en la cual está definida. Fuera de la función “area” no existe.

¿de dónde a donde va la función?Incluye únicamente la línea que comienza con def, la

instanciación de la variable y el return. Lo demás es para ejecutar la función con un argumento particular, pero podría hacer lo mismo usando el shell de python.

Explicar el concepto de variable local, acá área es una variable local que únicamente será válida dentro del cuerpo del programa.

Page 24: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

Documentación interna del código

En Python tenemos dos formas de escribir comentarios en el código fuente:

● De una línea: se utiliza el símbolo #

● Multilínea: se definen con tres comillas dobles

#!/usr/bin/python3

# Archivo: area-circulo2-v3.py

# Función que calcula el área de un circulo

# Entradas: radio.

# Salidas: área del circulo

# Restricciones: el radio debe ser mayor que cero

def area_circulo(radio):

area = 3.141516 * radio ** 2 # Formula: A = Pi * r **2

return area

La primera línea del comentario es para indicarle al SO qué versión de python debe utilizar. (buena práctica)

La segunda línea es para identificar el nombre del archivo.

– se podría agregar la fecha y el nombre del autor.

Obligatoriamente utilizaremos:- descripción (se omite decirlo explícito)- entradas, salidas, restricciones

Page 25: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

Documentación interna del código

En Python tenemos dos formas de escribir comentarios en el código fuente:

● De una línea: se utiliza el símbolo #

● Multilínea: se definen con tres comillas (docstrings)

#!/usr/bin/python3

'''

Función que calcula el área de un circulo

Entradas: radio.

Salidas: área del circulo

Restricciones: el radio debe ser mayor que cero

'''

def area_circulo(radio):

Acá no hay identación en el comentario multliinea porque se asume que está encima de la función y no adentro.

Page 26: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

Documentación interna del código (print doc)

#!/usr/bin/python3

def area_circulo(radio):

'''

Función que calcula el área de un circulo

Entradas: radio.

Salidas: área del circulo

Restricciones: el radio debe ser mayor que cero

'''

return 3.141516 * radio ** 2 # Formula: A = Pi * r **2

>>> print(area_circulo.__doc__)

Acá hay una identación en el comentario interno de la función porque sino hay un error.

Si se hace un programa así:#!/usr/bin/python3#Filename: area-circulo.py''' Este programa es tuanis!'''

>>> print(__doc__)

Page 27: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

Ejercicio: Área y Perímetro de un rectángulo

Escriba un programa de python que contenga dos funciones para operar con rectángulos:

● Área = Base * Altura

● Perímetro = Base + Base + Altura + Altura

→ Utilice return para retornar el valor resultante de las operaciones.

→ Asegúrese de hacer pruebas de su programa (diseñe un plan de pruebas).

Entender elproblema

Pensar un algoritmo

Código Pruebas

ComentariosDiagrama de flujoEntradasSalidasRestricciones

las funciones input y print, para solicitar los parámetros y para imprimir el resultado de los cálculos en pantalla.

La solución en python necesitaría hacer algo como:1. recibir argumentos2. validarlos (contra las restricciones) – en caso de error indicarlo.3. generar las salidas

Page 28: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

Errores.... (pulgas o bugs)

Dos tipos de errores:

● Sintácticos: se da por incumplimiento de las reglas definidas para el lenguaje.

● Semánticos: se dan en tiempo de ejecución y representar fallos en la lógica del programa. Si hay resultados pero no son los esperados.

Herramientas para corrección de errores: depurador o debugger

→ El depurador no solo es utilizado ante la presencia de errores, también cuando queremos mejorara la eficiencia de un programa.

● El depurador se puede utilizar de forma gráfica o utilizando funciones del módulo pdb o el módulo trace.

Page 29: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

Ejercicio: Conversión de grados

Escriba dos funciones, bien documentas, para convertir grados centígrados a farenheit.

Formulas:

● Farenheit = 9 /5 * centígrados + 32

● Centígrados: ( Farenheit – 32 ) / 1,8

Más práctica:

● Construya una función para cada una de las conversiones que aparecen en esta tabla: http://es.wikipedia.org/wiki/Grado_Fahrenheit#Conversi.C3.B3n_a_otras_unidades

Page 30: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

Más Información

Funciones:

● http://docs.python.org/release/3.1.3/tutorial/controlflow.html#defining-functions

Errores:

● http://docs.python.org/release/3.1.3/tutorial/errors.html

Page 31: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

Referencias y Lecturas Complementarias

● Material suministrado por el profesor Jeff Schmidt, Instituto Tecnológico de Costa Rica. I semestre 2011.

Page 32: Primeros Pasos en Python 3ausanabria/files/2017IScursos/... · función en la cual está definida. Fuera de la función “area” no existe. ¿de dónde a donde va la función? Incluye

22

Las presentaciones para el curso IC-1800: "Introducción a la Programación" por Ing. En Computación Alajuela se distribuyen bajo una

Licencia Creative Commons Atribución-Compartir Igual 3.0 Costa Rica.

http://creativecommons.org/licenses/by-sa/3.0/cr/http://creativecommons.org/licenses/by-sa/3.0/cr/ *La licencia de la presentación no cubre las imágenes utilizadas*