PythonCapítulos 1 al 5 del libro: How to Think Like a Computer Scientist<br />Por: Héctor L. Rodríguez,     <br />        ...
La Manera del Programa<br />La meta de este libro es enseñarnos a pensar como científicos de computadoras.La habilidad  má...
La Manera del Programa<br />Para resolver un problema se deben seguir ciertos pasos.<br /><ul><li>Recopilar toda la inform...
Establecer todas las posibles estrategias para resolver el problema.
Escoger la estrategia más adecuada de acuerdo a las circunstancias.</li></li></ul><li>La Manera del Programa<br />El proce...
¿Qué es un programa?<br />Un programa es una secuencia de instrucciones que la computadora ejecuta una a una para realizar...
¿Qué es un programa?<br />Existen muchos lenguajes de alto nivel tales como C++, Pascal, Basic y Fortran.<br />El lenguaje...
¿Qué es un programa?<br />Las instrucciones que usa un programa se dividen en cinco grupos:<br />A) Entrada – Son instrucc...
¿Qué es un programa?<br />	C) Matemáticas – Son instrucciones<br />        usadas para realizar operaciones<br />        m...
¿Qué es un depuración?<br />El proceso de depuración o ‘debugging’ es el proceso de localizar y corregir los errores que c...
¿Qué es un depuración?<br />	Existen tres tipos de errores en programación:<br />	A) Error de sintáxis – Ocurre cuando<br ...
¿Qué es un depuración?<br />B) Error de ejecución – Son errores<br />    causados por instrucciones que tratan<br />    de...
¿Qué es un depuración?<br />C) Error de semántica – En este caso, el<br />     programa corre bien, en el sentido de<br />...
Lenguajes Formales y Naturales<br />Lenguajes naturales – Son los que la gente usa para comunicarse como el español, inglé...
El Primer Programa<br />>> print ”Hello World!”<br />Hello World!<br />Este es el ejemplo de una instrucción ‘print’. Esta...
Variable – Es un nombre que identifica y almacena un valor.<br />Valor – Es un número o literal que puede ser almacenado e...
Asignando valor a una variable<br />>> message = “Hello World!”<br />>> n = 17<br />>> pi = 3.1416<br />La instrucción de ...
Verificando el tipo de una variable<br />>> type(message)<br /><type ‘str’><br />>> type(n)<br /><type ‘int’><br />>> type...
Nombres de Variables<br />Los nombres de las variables deben ser significativos y de acuerdo al tipo de valor que almacena...
Nombres de Variables<br />>> 76trombones = ‘Banda’<br />SyntaxError: invalid syntax<br />>> more$ = 10000<br />SyntaxError...
Keywords<br />En el ejemplo anterior ‘class’ no se puede usar como variable porque ‘class’ representa una instrucción inte...
Evaluando Expresiones<br />Una expresión es una combinación de valores, variables y operadores que al evaluarse producen u...
Orden de Operaciones<br />Python sigue las mismas reglas que se usan en matemáticas para realizar las operaciones:<br />	1...
Operaciones con Literales<br />Con variables alfanuméricas (strings) no se pueden realizar operaciones numéricas.<br />	A)...
Operaciones con Literales<br />	B) Operador(*) – Repite el valor literal el<br />	     número de veces que se multiplique....
Composición<br />Una instrucción se puede componer con varios tipos de expresiones mientras valide las reglas de sintáxis ...
Comentarios<br />Los comentarios en un programa ayudan a poder entender su lógica a personas que nunca lo han visto y tamb...
Funciones<br />
Function calls<br /><ul><li>Ejemplode un llamado de función (function call):</li></ul>>>> type("32")<br />	<type ’str’><br...
El valor o variable, el cualesllamado el argumento de la función, tieneque ser cerrado en paréntesis.  Es comúndecirqueuna...
En vez de obtener con print el valor devuelto, podemosasignarlo a una variable:</li></ul>	>>> betty = type("32")<br />	>>>...
<ul><li>Como otroejemplo, la funciónidtoma el valor  o una variable y devuelve un</li></ul>enteroqueactúacomoúnicoidentifi...
La funcióninttomacualquier valor y lo convierte en un entero, siesposible o de otra forma “protesta”:</li></ul>>>> int("32...
<ul><li>La funciónfloatconvierteenteros y strings a números con punto decimal (floating-point):</li></ul>>>> float(32)<br ...
Coerción de tipo<br />Division<br />Supongamosquedeseamoscalcular la fracciónde unahoraque ha transcurrido.  La  expresión...
Alternativamente, podemostomarventaja de lasreglasparaconversión de tipoautomática, la cualesllamadacoerción de tipo. Para...
Funciones matemáticas<br />En matemática, trabajamos con funcionescomo sin y log, y hemosaprendido a evaluarexpresionescom...
Antes de quepodamosusarlasfunciones de un módulo, tenemosqueimportarlas:<br />	>>> importmath<br />Para llamaruna de lasfu...
Porejemplo,<br />	Para conseguir el seno de 45 grados, primerocalcula el ángulo en radianes y luegotoma el seno:<br />>>> ...
Composición<br />Tal comolasfuncionesmatemáticas, lasfunciones de Pythonpueden ser compuestas, o sea queusamosunaexpresión...
Añadir nuevas funciones<br />Tambiénesposibleañadirnuevasfunciones. Crearnuevasfuncionespara resolver problemasparticulare...
La primerapareja de funcionesque describe el libro no tieneparámetros,  asíque la sintaxis se veasí:<br />defnewLine():<br...
La sintaxisparallamar la nuevafunciónes la mismaque la sintaxisparafuncionespreincluídas en  Phyton:<br />print "First Lin...
¿Quésiqueríamásespacio entre laslíneas? Podemosllamar la mismafunciónrepetidamente:<br />print "First Line."<br />newLine(...
Estafuncióncontienetresenunciados, todos de los cualesestánseparadospor dos espacios.<br />Como el próximoenunciado no est...
Las funcionespuedensimplificar un programaescondiendo un cómputocomplejodetrás de un sólocomado y usandopalabras en nuestr...
Definiciones y sus usos<br />Juntando los fragmentosestudiadoshastaahora,  el programacompleto se veasí:<br />defnewLine()...
Flujo de ejecuciones<br />Para asegurarqueunafunciónesdefinida antes de su primer uso,  tenemosque saber el orden en el qu...
Mientrasestá en el medio de unafunción , el programapuedetenerqueejecutar los enunciados en otrafunción. Peromientrasestáe...
Parámetros y argumentos<br />Algunas de lasfunciones pre incluídasque se hanpresentadorequierenargumentos, los valoresquec...
La funciónprintTwicetrabajaparacualquiertipo (type) quepueda ser impreso:<br />>>> printTwice(’Spam’)<br />SpamSpam<br />	...
Las mismasreglas de composiciónqueaplican a lasfuncionespreincluídastambiénaplicanparalasfuncionesdefinidaspor el usuario,...
Podemosademásusaruna variable comoargumento:<br />>>> michael = ’Eric, the half a bee.’<br />	>>> printTwice(michael)<br /...
Las variables y parámetros son locales<br />Cuandocreamosuna variable local dentro de unafunción, ésta solo existedentro d...
CuandocatTwicetermina, la variable cat esdestruiday. Si tratamos de imprimirla, obtendremos un error:<br />	>>> printcat<b...
(Stack Diagrams) Diagramas de pilas<br />Para mantenerrastreo de cuál de las variables puede ser usadodóde, esútil a veces...
El orden de laspilasmuestra el flujo de ejecución. printTwicefuellamadoporcatTwice y catTwicefuellamadopormain, el cuales ...
Porejemplo, sitratamos de accesarcatdesdeadentro de printTwice, obtenemos un  NameError:<br />Traceback (innermostlast):<b...
Estalista de funcionesesllamada un traceback. Estanos dice en quéarchivo de programafueque el error occurrió y quélínea y ...
Capítulo 4<br />Conditionals and recursion<br />
El operadorMódulo (Residuo)<br />El operador de módulo funciona con enteros. La operación nos da el residuo cuando el prim...
Expresiones Booleanas<br />Una expresión booleana es una expresión que puede ser verdadera o falsa.<br />Una forma de escr...
Expresiones Booleanas<br />En la primera declaración, los dos operandos son iguales, por lo que el valor de la expresiónes...
Expresiones Booleanas<br />El operador == es uno de los operadores de comparación, los otros son:<br />x != y 		# x no esi...
Expresiones Booleanas<br />Aunque estas operaciones son probablemente familiares para usted, los símbolos de Python son di...
Operadores Lógicos<br />Hay tres operadores lógicos: and, or y not. La semántica (significado) de estos operadores es simi...
Operadores Lógicos<br />Por último, el operador not niega una expresión booleana, tal que not(x > y) es verdadero si (x > ...
Ejecución Condicional<br />Para escribir programas útiles, casi siempre se necesita la capacidad de comprobar condiciones ...
Ejecución Condicional<br />La expresión lógica después de la declaración if se llama la condición. Si el if escierto, ento...
Ejecución Condicional Alternativa<br />Una segunda forma de la condición if es la ejecución de alternativas, en el que hay...
Ejecución Condicional Alternativa<br />Si el residuo cuando x es dividido por 2 es 0, entonces sabemos que x es par, yel p...
Ejecución Condicional Alternativa<br />Si usted necesita comprobar la paridad de números , es posible que "envolver" el có...
Ejecución Condicional Alternativa<br />Para cualquier valor de x, printParitymuestra en display, el mensajeapropiado. Cuan...
Cadena Condicional<br />A veces hay más de dos posibilidades y necesitamos más de dosramas. Una forma de expresar un cálcu...
Cadena Condicional<br />elif es una abreviatura de "elseif". Una vez más, exactamente una rama se ejecutará. No hay límite...
Cadena Condicional<br />Cada condición es verificada en orden. Si la primera es falsa, verifica la próxima, y así sucesiva...
Condicionales Anidadas<br />Una condicional también se pueden anidar dentro de otra. Podríamos haber escrito elejemplo tri...
Condicionales Anidadas<br />En algunas ocasiones operadores lógicos proveen formas de simplificar condiciones anidadas.  <...
Condicionales Anidadas<br />if 0 < x and x < 10:<br />print "x is a positive single digit.“<br />Este tipo de condiciones ...
El Enunciado de Regreso<br />El enunciado return le permite terminar la ejecución de una función antes de llegar al final....
La Recursión<br />Ya mencionamos que es legal para una función llamar a otra, y han vistovarios ejemplos de ello. Hemos ol...
La Recursión<br />Countdown espera que el parámetro, n, sea un entero positivo. Si n es 0, el output esla palabra, "Blasto...
La Recursión Infinita<br />También podemos encontrar casos donde la recursión sea infinita. Las recursiones infinitas no s...
Entradas de Teclado<br />Los programas antes presentados son un tanto estrictos a la hora de aceptar entradas de un usuari...
Entradas de Teclado<br />>>> input = raw_input ()<br />What are you waiting for?<br />>>> print input<br />What are you wa...
Capítulo 5<br />Funciones Fructíferas<br />
Valores devueltos<br />Algunas de las funciones incluidas en el sistema que ya hemos utilizado, como funciones matemáticas...
Valores devueltos<br />defarea(radius):<br />returnmath.pi * radius**2<br />
Desarrollo de Programas<br />Mientras realizamos ejercicios con funciones mas grandes, existe un aumento en la dificultad ...
Desarrollo de Programas<br />La meta del “incremental development” es evitar largas corridas de programas para encontrar e...
Desarrollo de Programas<br />Primero la fórmula a transformar en código.<br />distance = sqrt((x2 − x1)^2 + (y2 − y1)^2)<b...
Desarrollo de Programas<br />En el paso anterior todavía no recibimos resultado, pero ya vamos verificando errores.<br />d...
Desarrollo de Programas<br />defdistance(x1, y1, x2, y2):<br />dx = x2 - x1<br />dy = y2 - y1<br />dsquared = dx**2 + dy**...
Composición de Funciones<br />Como ya hemos visto, podemos llamar una función con otra. Esto se llama Composición.<br />Co...
Composición de Funciones<br />Lo primero es definir una función para la distancia del radio.<br />    radius = distance(xc...
Composición de Funciones<br />Ahorasi lo unimosobtenemos:<br />    def area2(xc, yc, xp, yp):<br />        radius = distan...
Funciones Booleanas<br />Las funciones pueden en ocasiones regresar valores booleanos, que en ocasiones es conveniente par...
Upcoming SlideShare
Loading in …5
×

Presentacion python final

1,439 views

Published on

Python

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,439
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
22
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Example&gt;&gt;&gt; type(“32”)&lt;type ‘str’&gt;
  • Presentacion python final

    1. 1. PythonCapítulos 1 al 5 del libro: How to Think Like a Computer Scientist<br />Por: Héctor L. Rodríguez, <br /> Rubén Quiñones y<br /> Alexander Hernández <br />Clase: Lógica Matemática<br />Profesor: Balbino García<br />
    2. 2. La Manera del Programa<br />La meta de este libro es enseñarnos a pensar como científicos de computadoras.La habilidad más importante de un científico es poder resolver problemas.<br />
    3. 3. La Manera del Programa<br />Para resolver un problema se deben seguir ciertos pasos.<br /><ul><li>Recopilar toda la información relacionada con el problema a resolver.
    4. 4. Establecer todas las posibles estrategias para resolver el problema.
    5. 5. Escoger la estrategia más adecuada de acuerdo a las circunstancias.</li></li></ul><li>La Manera del Programa<br />El proceso de aprender a programar<br />es una oportunidad excelente para<br />practicar el proceso de solucionar<br />problemas.<br />Por eso se le llama a esta parte ‘La<br />manera del programa’<br />
    6. 6. ¿Qué es un programa?<br />Un programa es una secuencia de instrucciones que la computadora ejecuta una a una para realizar una o más funciones.<br />El programa puede ser escrito en lenguaje de alto nivel, de bajo nivel o lenguaje de máquina.<br />
    7. 7. ¿Qué es un programa?<br />Existen muchos lenguajes de alto nivel tales como C++, Pascal, Basic y Fortran.<br />El lenguaje de alto nivel que estudiamos en este libro se llama Python<br />Los programas pueden ser ejecutados por un interprete o pueden ser compilados y convertidos a lenguaje de máquina para que el procesador de la máquina lo ejecute directamente.<br />Python es un lenguaje interpretado.<br />
    8. 8. ¿Qué es un programa?<br />Las instrucciones que usa un programa se dividen en cinco grupos:<br />A) Entrada – Son instrucciones que se<br /> usan para registrar data proveniente del<br /> teclado, de un archivo o cualquier otro<br /> dispositivo.<br />B) Salida – Se usan para mostrar data o<br /> información en la pantalla, en la impresora, para guardar data en un archivo o controlar algún dispositivo.<br />
    9. 9. ¿Qué es un programa?<br /> C) Matemáticas – Son instrucciones<br /> usadas para realizar operaciones<br /> matemáticas tales como suma,<br /> resta, multiplicación, etc.<br /> D) Condición – Estas instrucciones se<br /> ejecutan cuando se cumple alguna<br /> condición.<br /> E) Repetición – Se usan cuando hay que<br /> repetir ciertas partes de un programa<br /> con alguna variación.<br />
    10. 10. ¿Qué es un depuración?<br />El proceso de depuración o ‘debugging’ es el proceso de localizar y corregir los errores que contiene un programa.<br />Una de las habilidades más importantes de un programador es la de localizar y corregir errores en los programas.<br />Este es un proceso cíclico y contínuo de arreglo y prueba hasta obtener el resultado deseado.<br />
    11. 11. ¿Qué es un depuración?<br /> Existen tres tipos de errores en programación:<br /> A) Error de sintáxis – Ocurre cuando<br /> las instrucciones no se escriben<br /> correctamente y de acuerdo a las<br /> reglas estructurales del lenguaje.<br />
    12. 12. ¿Qué es un depuración?<br />B) Error de ejecución – Son errores<br /> causados por instrucciones que tratan<br /> de ejecutar una operación que no<br /> está permitida. Por ejemplo dividir por<br /> cero causaría un error de ‘Overflow’.<br />
    13. 13. ¿Qué es un depuración?<br />C) Error de semántica – En este caso, el<br /> programa corre bien, en el sentido de<br /> que no aparecen mensajes de error,<br /> pero no se obtiene el resultado<br /> esperado. Este tipo de error también<br /> se conoce como error de lógica.<br />
    14. 14. Lenguajes Formales y Naturales<br />Lenguajes naturales – Son los que la gente usa para comunicarse como el español, inglés y francés.<br />Lenguajes formales – Son lenguajes diseñados para aplicaciones específicas.<br /> Por ejemplo, la notación usada en las operaciones matemáticas, las equaciones que expresan las reacciones químicas y los lenguajes de programación son lenguajes formales.<br />
    15. 15. El Primer Programa<br />>> print ”Hello World!”<br />Hello World!<br />Este es el ejemplo de una instrucción ‘print’. Esta instrucción imprime en la pantalla “Hello World!”, una constante de valor alfanumérico o literal.<br />
    16. 16. Variable – Es un nombre que identifica y almacena un valor.<br />Valor – Es un número o literal que puede ser almacenado en una variable.<br />Tipos de variables – Las variables se pueden clasificar de acuerdo al valor que almacenan. Por ejemplo: int, Float, String.<br />¿Qué es una variable?<br />
    17. 17. Asignando valor a una variable<br />>> message = “Hello World!”<br />>> n = 17<br />>> pi = 3.1416<br />La instrucción de asignación crea nuevas variables y les asigna valores.<br />
    18. 18. Verificando el tipo de una variable<br />>> type(message)<br /><type ‘str’><br />>> type(n)<br /><type ‘int’><br />>> type(pi)<br /><type ‘float’><br />Podemos examinar el tipo de una variable preguntándole al interprete.<br />
    19. 19. Nombres de Variables<br />Los nombres de las variables deben ser significativos y de acuerdo al tipo de valor que almacenan.<br />Pueden tener un largo arbitrario y pueden contener letras, números y barritas ‘_’, aunque el primer carácter debe ser una letra.<br />Pedro y pedro son dos variables diferentes.<br />
    20. 20. Nombres de Variables<br />>> 76trombones = ‘Banda’<br />SyntaxError: invalid syntax<br />>> more$ = 10000<br />SyntaxError: invalid syntax<br />>> class = ‘’Computer Science’<br />SyntaxError: invalid syntax<br />76trombones es ilegal por empezar con un número y more$ porque el signo $ es ilegal.<br />
    21. 21. Keywords<br />En el ejemplo anterior ‘class’ no se puede usar como variable porque ‘class’ representa una instrucción interna del lenguaje así como ‘’print’. A estas instrucciones privadas del lenguaje se les conoce en inglés como ‘keywords’.<br />Python tiene 29 keywords: class, print, and, if, else, return, …, etc.<br />
    22. 22. Evaluando Expresiones<br />Una expresión es una combinación de valores, variables y operadores que al evaluarse producen un resultado.<br />>> x = 1 + 2<br />>> x<br />3<br />>><br />En esta expresión ‘+’ es un operador y ‘1’ y ‘2’ son los operandos.<br />
    23. 23. Orden de Operaciones<br />Python sigue las mismas reglas que se usan en matemáticas para realizar las operaciones:<br /> 1) Paréntesis<br /> 2) Exponenciación ‘3*1**3 = 3’<br /> 3) Multiplicación y División<br /> 4) Suma y Resta<br /> 5) Operadores con la misma prioridad<br /> se evalúan de izquierda a derecha.<br />
    24. 24. Operaciones con Literales<br />Con variables alfanuméricas (strings) no se pueden realizar operaciones numéricas.<br /> A) Operador (+) - Une dos valores literales, el<br /> fin del primero con el principio del segundo.<br /> Ejemplo:<br /> >> fruta = ‘Piña’<br /> >> preparacion = ‘colada’<br /> >> print fruta+preparación<br /> Piña colada<br />
    25. 25. Operaciones con Literales<br /> B) Operador(*) – Repite el valor literal el<br /> número de veces que se multiplique.<br /> Ejemplo:<br /> >> fruit = “pera ”<br /> >> n_peras = 3 * fruit<br /> >> print n_peras<br /> pera pera pera<br />
    26. 26. Composición<br />Una instrucción se puede componer con varios tipos de expresiones mientras valide las reglas de sintáxis del lenguaje.<br /> Ejemplo:<br /> >> hours = 37<br /> >> wage = 7.25<br /> >> print “Salary: ”,hours*wage<br /> Salary = 268.25<br /> >>_<br />
    27. 27. Comentarios<br />Los comentarios en un programa ayudan a poder entender su lógica a personas que nunca lo han visto y también a su creador luego que ha pasado mucho tiempo.<br />En el lenguaje python podemos expresar comentarios usando el signo ‘#’ o dos ‘//’<br /> Ejemplos:<br /> // Esta linea es un comentario<br /> # Esta también.<br />
    28. 28. Funciones<br />
    29. 29. Function calls<br /><ul><li>Ejemplode un llamado de función (function call):</li></ul>>>> type("32")<br /> <type ’str’><br /><ul><li>El nombre de la funciónestype y ellamuestra el tipo de valor o variable.
    30. 30. El valor o variable, el cualesllamado el argumento de la función, tieneque ser cerrado en paréntesis. Es comúndecirqueunafuncióntoma un argumento y devuelve un resultado. El resultadoesllamado el valor devuelto.
    31. 31. En vez de obtener con print el valor devuelto, podemosasignarlo a una variable:</li></ul> >>> betty = type("32")<br /> >>> printbetty<br /> <type ’str’><br />
    32. 32. <ul><li>Como otroejemplo, la funciónidtoma el valor o una variable y devuelve un</li></ul>enteroqueactúacomoúnicoidentificador del valor:<br />>>> id(3)<br /> 134882108<br /> >>> betty = 3<br /> >>> id(betty)<br /> 134882108<br /><ul><li>Cada valor tiene un id, el cuales un númeroúnicorelacionado a dondeésteestáguardado en la memoria de la computadora. El id de una variable es el id del valor al cual se refiere.</li></li></ul><li>Conversión de tipo (Type)<br /><ul><li>Pythonproveeunacolección de funciones pre-incluidasqueconviertenvalores de un tipo a otro.
    33. 33. La funcióninttomacualquier valor y lo convierte en un entero, siesposible o de otra forma “protesta”:</li></ul>>>> int("32")<br />32<br /> >>> int("Hello")<br />ValueError: invalid literal forint(): Hello<br /><ul><li>Inttambiénpuedeconvertirvaloresfloating point a enteros, perorecordemosqueesotrunca la parte fraccionaria:</li></ul>>>> int(3.99999)<br />3<br /> >>> int(-2.3)<br /> -2<br />
    34. 34. <ul><li>La funciónfloatconvierteenteros y strings a números con punto decimal (floating-point):</li></ul>>>> float(32)<br />32.0<br /> >>> float("3.14159")<br /> 3.14159<br /><ul><li>Finalmente,lafunciónstrconvierte a tipo string:</li></ul>>>> str(32)<br /> ’32’<br /> >>> str(3.14149)<br /> ’3.14149’<br />
    35. 35. Coerción de tipo<br />Division<br />Supongamosquedeseamoscalcular la fracciónde unahoraque ha transcurrido. La expresión,<br />minute / 60, hacearitmética de númerosenteros, asíque el resultadoserásiempre 0, aún a 59 minutos<br /> de una hora.<br />Unasoluciónesconvertirminuto a decimal (floating-point)y hacerdivisión de decimalesfloating-point:<br />>>> minute = 59<br /> >>> float(minute) / 60<br />0.983333333333<br />
    36. 36. Alternativamente, podemostomarventaja de lasreglasparaconversión de tipoautomática, la cualesllamadacoerción de tipo. Para los operadoresmatemáticos, sicualquieroperandoes un decimal (float), el otroesautomáticamenteconvertido en un decimal (float):<br /> >>> minute = 59<br /> >>> minute / 60.0<br /> 0.983333333333<br />Haciendo el denominador un decimal, forzamosPhyton a hacerdivisión de decimales.<br />
    37. 37. Funciones matemáticas<br />En matemática, trabajamos con funcionescomo sin y log, y hemosaprendido a evaluarexpresionescomo sin(pi/2) y log(1/x). <br />Primero, evaluamos la expresión en paréntesis (el argumento). <br />Porejemplo, pi/2 esaproximadamente 1.571 y 1/x es 0.1 (si x fuera10.0).<br />Entonces, evaluamos la función , lo mismobuscándolo en unatabla o realizandovarioscómputos. El seno de 1.571 es 1 y log of 0.1 is -1 (asumiendoqueeste log indica el logaritmo con base 10).<br />Este procesopuede ser aplicadorepetidamenteparaevaluarexpresionesmascomplicadas<br />como log(1/sin(pi/2)). Primero, evaluamos el argumento de la funciónmásinterna,<br />luegoevalúa la función, y asísucesivamente.<br />Pythontiene un módulomatemáticoqueprovee de lasfuncionesmatemáticasmásfamiliares.<br />Un móduloes un archivoquecontieneunacolección de funcionesrelacionadasagrupadas.<br />
    38. 38. Antes de quepodamosusarlasfunciones de un módulo, tenemosqueimportarlas:<br /> >>> importmath<br />Para llamaruna de lasfunciones, tenemosqueespecificar el nombre del módulo y el nombre de la función, separadospor un punto ( dot, tambiénconocidocomoperiod). Este formatoesllamadonotación de punto (dotnotation).<br />>>> decibel = math.log10 (17.0)<br /> >>> angle = 1.5<br /> >> height = math.sin(angle)<br />>El primerenunciado (statement)asigna decibel al logaritmo de 17, base 10. Tambiénhay unafunciónllamadalogquetomalogaritmo base e.<br />El tercerenunciadoconsigue el seno del valor del ángulo variable. siny lasotrasfuncionestrigonométricas (cos, tan, etc.) tomanargumentos en radianes. Para convertir de grados a radianes, divide entre 360 y multiplicapor 2*pi. <br />
    39. 39. Porejemplo,<br /> Para conseguir el seno de 45 grados, primerocalcula el ángulo en radianes y luegotoma el seno:<br />>>> degrees = 45<br /> >>> angle = degrees * 2 * math.pi / 360.0<br /> >>> math.sin(angle)<br /> 0.707106781187<br />La constante pi esademás parte del módulomatemático. Si queremos, podemosrevisarlocomparándolo con la raízcuadrada de dos dividido entre dos:<br />>>> math.sqrt(2) / 2.0<br /> 0.707106781187<br />
    40. 40. Composición<br />Tal comolasfuncionesmatemáticas, lasfunciones de Pythonpueden ser compuestas, o sea queusamosunaexpresióncomo parte de otra. <br />Porejemplo, podemosusarcualquierexpresióncomo un argumentoparaunafunción:<br /> >>> x = math.cos(angle + math.pi/2)<br />Este enunciadotoma el valor de pi, lo divide entre 2 y suma el resultado al valor del ángulo. La sumaesentoncespasadacomo un argumento a la funcióncos.<br />Tambiénpodemostomar el resultado de unafunción y pasarlocomo un argumentoparaotro:<br />>>> x = math.exp(math.log(10.0))<br />Este enunciadoconsigue la base log e de 10 y entonceseleva e a esapotencia. El resultadoesasignado a x.<br />
    41. 41. Añadir nuevas funciones<br />Tambiénesposibleañadirnuevasfunciones. Crearnuevasfuncionespara resolver problemasparticularesesuna de lascosasmásusadasacerca de un lenguage de programación general.<br />En el contexto de programación, unafunciónesnombradasecuencia de enunciadosquerealizanunaoperacióndeseada. Estaoperaciónesespecificada en unadefinición de función. <br />La sintaxisparaunafunciónes:<br />def NAME( LIST OF PARAMETERS ):<br />STATEMENTS<br />Podemos hacer cualquier nombre para las funciones que creamos, exceptoaquellosnombresusadoscomopalabras clave de Python. La lista de parámetrosespecificaquéinformación, sialguna, tenemosqueproveerparausar la nuevafunción.<br />Puedehabercualquiernúmero de enunciadosdentro de la función, perotienenqueestarseparados del margenizquierdo. En los ejemplos del libro, se usaunaseparación de dos espacios.<br />
    42. 42. La primerapareja de funcionesque describe el libro no tieneparámetros, asíque la sintaxis se veasí:<br />defnewLine():<br />print<br />EstafunciónesllamadanewLine. El paréntesisvacíoindicaque no tieneparámetros. Estocontiene un solo enunciado, que produce unanuevalínea (newline. (Esoes lo queocurrecuando se usa un comando de print sin algúnargumento.)<br />
    43. 43. La sintaxisparallamar la nuevafunciónes la mismaque la sintaxisparafuncionespreincluídas en Phyton:<br />print "First Line."<br />newLine()<br />print "Second Line."<br />La salidaparaeseprogramaes:<br />First line.<br />Second line.<br />Nota el espacio extra entre las dos líneas<br />
    44. 44. ¿Quésiqueríamásespacio entre laslíneas? Podemosllamar la mismafunciónrepetidamente:<br />print "First Line."<br />newLine()<br />newLine()<br />newLine()<br />print "Second Line.“<br />O podríamosescribirunanuevafunciónnombradathreeLinesqueimprimetresnuevaslíneas:<br />defthreeLines():<br />newLine()<br />newLine()<br />newLine()<br />print "First Line."<br />threeLines()<br />print "Second Line."<br />
    45. 45. Estafuncióncontienetresenunciados, todos de los cualesestánseparadospor dos espacios.<br />Como el próximoenunciado no estáseparado, Pythonsabequeéste no es parte de la función.<br />Hay algunascosas a notaracerca de esteprograma:<br />1. Se puedellamar al mismoprocedimientorepetidamente. De hecho, estoesmuycomúny útil.<br />2. Se puedetenerunafunciónllamando a otra; en estecasothreeLinesllama a newLine.<br />Este ejemplomuestrados de muchasrazonesparalasquesirvecrearnuevasfunciones:<br />• Crearunanuevafunciónnosda la oportunidad de nombrar un grupo de enunciados.<br />
    46. 46. Las funcionespuedensimplificar un programaescondiendo un cómputocomplejodetrás de un sólocomado y usandopalabras en nuestroidioma en lugar de un códigomisterioso.<br />• Crearunanuevafunciónpuedehacer a un programamáspequeñoeliminandocódigosrepetitivos. Porejemplo, una forma corta de imprimirnuevelíneasconsecutivasesllamandothreeLinestresveces.<br />
    47. 47. Definiciones y sus usos<br />Juntando los fragmentosestudiadoshastaahora, el programacompleto se veasí:<br />defnewLine():<br />print<br />defthreeLines():<br />newLine()<br />newLine()<br />newLine()<br />print "First Line."<br />threeLines()<br />print "Second Line.“<br />Este programacontiene dos definiciones de funciones: newLine y threeLines. Las definiciones de funciones son ejecutadasigual a otrosenunciados, pero el efectoescrear la nuevafunción. Los enunciadosdentro de la función no son ejecutadoshastaque la funciónesllamada, y la definición de la función no genera resultado (output).<br />Como es de esperar, tenemosquecrearunafunción antes de que se puedaejecutar. En otraspalabras, la definición de la funcióntieneque ser ejecutada antes de la primeravezqueesllamada.<br />
    48. 48. Flujo de ejecuciones<br />Para asegurarqueunafunciónesdefinida antes de su primer uso, tenemosque saber el orden en el que los enunciados son ejecutados, lo queesllamado el flujo de ejecuciones.<br />La ejecuciónsiemprecomienza en el primer enunciado del programa. Los enunciados son ejecutadosuno a la vez, en orden de arribahaciaabajo.<br />Las definiciones no alteran el flujo de ejecuciones del programa, pero hay querecordarque los enunciadosdentro de la función no son ejecutadoshastaque la funciónesllamada. Pese a que no escomún, podemosdefinirunafuncióndentro de otra.<br />En estecaso, la definiciónmásinterna no esejecutadahastaque la función de másafuera sea llamada.<br />Las llamadas a lasfunciones son como un desvío en el flujo de ejecuciones. En vez de ir al próximoenunciado, el flujobrincahacia la primeralínea de la funciónllamada, ejecutatodos los enunciadosallí y luegoregresa a recogerdondedejó.<br />Unafunciónpuedellamar a otra.<br />
    49. 49. Mientrasestá en el medio de unafunción , el programapuedetenerqueejecutar los enunciados en otrafunción. Peromientrasestáejecutandoesanuevafunción, el programa puede tener que ejecutar todavía otra función. Python mantienerastreo de dóndeestá, asíquecadavezqueunafuncióncompleta, el programarecogedonde se quedó en la funciónque lo llamó.<br />Cuandollega al final del programa, termina.<br />O sea. Cuando se lee un programa, no se lee de arriba a abajo. En vez, se sigue el flujo de ejecución.<br />
    50. 50. Parámetros y argumentos<br />Algunas de lasfunciones pre incluídasque se hanpresentadorequierenargumentos, los valoresquecontrolancómo la funciónhacesutrabajo. Porejemplo, siqueremoshallar el seno de un número, tenemosqueindicarquées el número. Así, sintoma un valor numéricocomoargumento.<br />Algunasfuncionestomanmásde un argumento. Porejemplo, powtoma dos argumentos, la base y el exponente. Dentro de la función, los valoresquehanpasado son asignados a variables llamadasparámetros.<br />Aquí hay un ejemplo de unafuncióndefinidapor el usuarioquetiene un parámetro:<br />defprintTwice(bruce):<br />printbruce, bruce<br />Estafuncióntoma un sóloargumento y lo asigna a un parámetrollamadobruce.<br />El valor del parámetro (hastaestepunto no tenemos idea de cuálserá) esimpreso dos veces, seguidoporunanuevalínea. El nombrebrucefueescogidoparasugerirque el nombrequese le de al parámetrodepende de uno, pero se debeescoger un nombrebastanteilustrativo.<br />
    51. 51. La funciónprintTwicetrabajaparacualquiertipo (type) quepueda ser impreso:<br />>>> printTwice(’Spam’)<br />SpamSpam<br /> >>> printTwice(5)<br /> 5 5<br /> >>> printTwice(3.14159)<br /> 3.14159 3.14159<br />En la primerallamada de función, el argumentoes un string. En el segundo, es un entero (integer).<br />En el tercero, esuna decimal (float).<br />
    52. 52. Las mismasreglas de composiciónqueaplican a lasfuncionespreincluídastambiénaplicanparalasfuncionesdefinidaspor el usuario, asíquepodemosusarcualquierclase de expresióncomoargumentoparaprintTwice:<br /> >>> printTwice(’Spam’*4)<br />SpamSpamSpamSpamSpamSpamSpamSpam<br /> >>> printTwice(math.cos(math.pi))<br /> -1.0 -1.0<br />Como es usual, la expresiónesevaluada antes de que la funcióncorra, asíprintTwiceimprime SpamSpamSpamSpamSpamSpamSpamSpam en vez de ’Spam’*4 ’Spam’*4.<br />
    53. 53. Podemosademásusaruna variable comoargumento:<br />>>> michael = ’Eric, the half a bee.’<br /> >>> printTwice(michael)<br /> Eric, the half a bee. Eric, the half a bee.<br />Notemosalgomuyimportante. El nombre de la variable quepasamoscomoargumento (michael) no tiene nada quever con el nombre del parámetro (bruce).<br />No importacómo el valor fuellamado de vuelta a casa (en el caller); aquí en printTwice, llamamos a todo el mundobruce.<br />
    54. 54. Las variables y parámetros son locales<br />Cuandocreamosuna variable local dentro de unafunción, ésta solo existedentro de la función y no podemosusarlaafuera. <br />Porejemplo:<br />defcatTwice(part1, part2):<br />cat = part1 + part2<br />printTwice(cat)<br />Estafuncióntoma dos argumentos, los enlaza o relaciona(concatena) y entoncesimprime los resultados dos veces. Podemosllamar a la función con dos strings:<br /> >>> chant1 = "Pie Jesu domine, "<br /> >>> chant2 = "Dona eisrequiem."<br /> >>> catTwice(chant1, chant2)<br />Pie Jesu domine, Dona eis requiem. Pie Jesu domine, Dona eis requiem.<br />
    55. 55. CuandocatTwicetermina, la variable cat esdestruiday. Si tratamos de imprimirla, obtendremos un error:<br /> >>> printcat<br />NameError: cat<br />Los parámetros son también locales. Porejemplo, afuera de la funciónprintTwice, no hay talcosacomobruce. Si intentáramosusarla, Python se quejaría. <br />
    56. 56. (Stack Diagrams) Diagramas de pilas<br />Para mantenerrastreo de cuál de las variables puede ser usadodóde, esútil a vecesdibujar un diagrama de apilamiento. Como los diagramas de estado, los diagramas de pilasmuestran el valor de cada variable, peroademásmuestran la función a la quecada variable pertenece.<br />Cadafunciónesrepresentadapor un marco. Un marcoesunacaja con el nombre de unafunción a sulado y los parametros y variables de la funciónadentro. El diagrama de pilaspara el ejemplo anterior se veasí:<br />
    57. 57. El orden de laspilasmuestra el flujo de ejecución. printTwicefuellamadoporcatTwice y catTwicefuellamadopormain, el cuales un nombre especial para la funciónprincipal(topmost). Cuandocreamosuna variable afuera de cualquierfunción, éstapertenece a main.<br />Cadaparámetro se refiere al mismo valor comosuargumentocorrespondiente. Así, part1 chant1, part2tiene el mismo valor quechant2 y brucetiene el mismo valor quecat.<br />Si un error ocuredurante la llamada a la función, Pythonimprime el nombre de la función y el nombre de la funciónquellamóa éstay el nombre de la funciónquellamóa aquella, hastaregresar a main.<br />
    58. 58. Porejemplo, sitratamos de accesarcatdesdeadentro de printTwice, obtenemos un NameError:<br />Traceback (innermostlast):<br /> File "test.py", line 13, in __main__<br />catTwice(chant1, chant2)<br /> File "test.py", line 5, in catTwice<br />printTwice(cat)<br /> File "test.py", line 9, in printTwice<br />printcat<br />NameError: cat<br />
    59. 59. Estalista de funcionesesllamada un traceback. Estanos dice en quéarchivo de programafueque el error occurrió y quélínea y quéfuncionesestabanejecutándose a la vez.<br />Estoademásmuestra la línea de códigoquecausó el error.<br />Notemos la similaridad entre el tracebacky el diagrama de pilas. Esto no esunacoincidencia.<br />
    60. 60. Capítulo 4<br />Conditionals and recursion<br />
    61. 61. El operadorMódulo (Residuo)<br />El operador de módulo funciona con enteros. La operación nos da el residuo cuando el primer numero es dividido por el segundo. En Python, el operador de módulo es el símbolo de porciento (%). <br />Ej:<br /> >>> quotient = 7 / 3<br /> >>> printquotient<br /> 2<br /> >>> remainder = 7 % 3<br /> >>> printremainder<br /> 1<br />7 dividido entre 3 es 2 con un residuo de 1.<br />
    62. 62. Expresiones Booleanas<br />Una expresión booleana es una expresión que puede ser verdadera o falsa.<br />Una forma de escribir una expresión lógica es utilizar el operador ==, que compara dos valores y produce un valor booleano:<br />Ej:<br /> >>> 5 == 5<br /> True<br /> >>> 5 == 6<br /> False<br />
    63. 63. Expresiones Booleanas<br />En la primera declaración, los dos operandos son iguales, por lo que el valor de la expresiónes cierto, en la segunda declaración, 5 no es igual a 6, así que conseguimos Falso. Verdadero y Falso son valores especiales que están incluidas en Python.<br />
    64. 64. Expresiones Booleanas<br />El operador == es uno de los operadores de comparación, los otros son:<br />x != y # x no esigual a y<br />x > y # x es mayor quey<br />x < y # x esmenorque y<br />x >= y # x es mayor o igualque y<br />x <= y # x esmenor o igualque y<br />
    65. 65. Expresiones Booleanas<br />Aunque estas operaciones son probablemente familiares para usted, los símbolos de Python son diferente de los símbolos matemáticos. Un error común es utilizar un solosigno (=) en lugar de un doble signo de igualdad (==). Recuerde que = es una asignación y == es un operador de comparación. Además, no hay tal cosa como = < o =>.<br />
    66. 66. Operadores Lógicos<br />Hay tres operadores lógicos: and, or y not. La semántica (significado) de estos operadores es similar a su significado en Español. <br />Ej:<br /> Por ejemplo, x> 0 y x <10 es cierto sólo si x es mayor que 0 y menor que 10.<br /> N%2 == 0 or n%3 == 0 es verdadero si alguna de las condiciones es verdadera, es decir, si elnúmero es divisible por 2 o 3.<br />
    67. 67. Operadores Lógicos<br />Por último, el operador not niega una expresión booleana, tal que not(x > y) es verdadero si (x > y) es falso, es decir, si x es menor o igual que y.<br />
    68. 68. Ejecución Condicional<br />Para escribir programas útiles, casi siempre se necesita la capacidad de comprobar condiciones y cambiar el comportamiento del programa. Una Declaración Condicional nos da esta capacidad. La forma más simple es la condición if.<br />Ej:<br />ifx > 0:<br />print"x is positive"<br />
    69. 69. Ejecución Condicional<br />La expresión lógica después de la declaración if se llama la condición. Si el if escierto, entonces la declaración condicional es ejecutada. Si no, no pasa nada.<br />
    70. 70. Ejecución Condicional Alternativa<br />Una segunda forma de la condición if es la ejecución de alternativas, en el que hay dosposibilidades y la condición determina cual es ejecutado. La sintaxis se parece a esto:<br />Ej:<br />ifx%2 == 0:<br />printx, "iseven"<br />else:<br />printx, "isodd"<br />
    71. 71. Ejecución Condicional Alternativa<br />Si el residuo cuando x es dividido por 2 es 0, entonces sabemos que x es par, yel programa muestra el mensaje “iseven”. Si la condición es falsa, la segundase ejecuta “isodd”. Dado que la condición debe ser verdadera o falsa, exactamenteuna de las alternativas será ejecutado. Las alternativas se llaman ramas, porque son las ramas en el flujo de ejecución.<br />
    72. 72. Ejecución Condicional Alternativa<br />Si usted necesita comprobar la paridad de números , es posible que "envolver" el código en una función:<br />Ej:<br />defprintParity(x):<br />ifx%2 == 0:<br />printx, "iseven"<br />else:<br />printx, "isodd"<br />
    73. 73. Ejecución Condicional Alternativa<br />Para cualquier valor de x, printParitymuestra en display, el mensajeapropiado. Cuando lo llamas puedesproveer un enterocomoargumento.<br />Ej: <br /> >>> printParity(17)<br /> 17 isodd<br /> >>> y = 17<br /> >>> printParity(y+1)<br /> 18 iseven<br />
    74. 74. Cadena Condicional<br />A veces hay más de dos posibilidades y necesitamos más de dosramas. Una forma de expresar un cálculo así es una cadena condicional:<br />Ej:<br />if x < y:<br />print x, "is less than", y<br />elif x > y:<br />print x, "is greater than", y<br />else:<br />print x, "and", y, "are equal"<br />
    75. 75. Cadena Condicional<br />elif es una abreviatura de "elseif". Una vez más, exactamente una rama se ejecutará. No hay límite al número de declaraciones elif, pero la última rama tiene que ser una declaración else:<br />Ej:<br />ifchoice == ’A’:<br />functionA()<br />elifchoice == ’B’:<br />functionB()<br />elifchoice == ’C’:<br />functionC()<br />else:<br />print"Invalidchoice."<br />
    76. 76. Cadena Condicional<br />Cada condición es verificada en orden. Si la primera es falsa, verifica la próxima, y así sucesivamente. Si una de ellas es cierta, la rama correspondiente es ejecutada y la declaración termina.<br />
    77. 77. Condicionales Anidadas<br />Una condicional también se pueden anidar dentro de otra. Podríamos haber escrito elejemplo tricotomía de la siguiente manera:<br />ifx == y:<br /> print x, "and", y, "are equal"<br />else:<br />ifx < y:<br /> print x, "is less than", y<br />else:<br /> print x, "is greater than", y<br />
    78. 78. Condicionales Anidadas<br />En algunas ocasiones operadores lógicos proveen formas de simplificar condiciones anidadas. <br />Ej:<br />if0 < x:<br />ifx < 10:<br /> print "x is a positive single digit.“<br />El print se ejecuta sólo si pasa las dos condiciones por lo tanto podemos utilizar el operador and:<br />
    79. 79. Condicionales Anidadas<br />if 0 < x and x < 10:<br />print "x is a positive single digit.“<br />Este tipo de condiciones son comunes, por lo tanto Python provee una alternativa de sintaxis muy similar a la notación matemática.<br />if0 < x < 10:<br /> print "x is a positive single digit."<br />
    80. 80. El Enunciado de Regreso<br />El enunciado return le permite terminar la ejecución de una función antes de llegar al final. Una razón para usarlo es si detecta una condición de error:<br />importmath<br />defprintLogarithm(x):<br />ifx <= 0:<br /> print "Positive numbers only, please."<br />return<br />result= math.log(x)<br /> print "The log of x is", result<br />
    81. 81. La Recursión<br />Ya mencionamos que es legal para una función llamar a otra, y han vistovarios ejemplos de ello. Hemos olvidado mencionar que también es legal para unafunción llamarse ella misma. Por ejemplo:<br />defcountdown(n):<br />ifn == 0:<br />print"Blastoff!"<br />else:<br />printn<br />countdown(n-1)<br />
    82. 82. La Recursión<br />Countdown espera que el parámetro, n, sea un entero positivo. Si n es 0, el output esla palabra, "Blastoff!" De lo contrario, el output es n y luego llama a una función llamadacountdown pasando a n-1 como un argumento.<br />Por lo tanto si llamaramos a la función countdown (3) obtendriamos el siguiente output:<br /> 3<br /> 2<br /> 1<br />Blastoff!<br />
    83. 83. La Recursión Infinita<br />También podemos encontrar casos donde la recursión sea infinita. Las recursiones infinitas no son infinitas realmente en Python, ya que el sistema esta diseñado para reportar cuando una recursión es repetida muchas veces.<br />
    84. 84. Entradas de Teclado<br />Los programas antes presentados son un tanto estrictos a la hora de aceptar entradas de un usuario. <br />Python provee instrucciones que acepten entradas del teclado.<br />La mas sencilla de ellas es raw_input.<br />Cuando la función es llamada, el programa se detiene y espera una entrada del usuario.<br />A continuación veremos un ejemplo:<br />
    85. 85. Entradas de Teclado<br />>>> input = raw_input ()<br />What are you waiting for?<br />>>> print input<br />What are you waiting for?<br />Este tipo de mensajes de entradas se llama prompt.<br />
    86. 86. Capítulo 5<br />Funciones Fructíferas<br />
    87. 87. Valores devueltos<br />Algunas de las funciones incluidas en el sistema que ya hemos utilizado, como funciones matemáticas, producen un resultado. Llamar a estas funciones generan nuevos valores, los cuales usualmente son asignados a variables o son usados como parte de una expresión.<br />Pero si nos fijamos ninguna de estas funciones regresan un valor.<br />A continuación escribiremos funciones que regresen valores, estas son las llamadas funciones fructíferas.<br />
    88. 88. Valores devueltos<br />defarea(radius):<br />returnmath.pi * radius**2<br />
    89. 89. Desarrollo de Programas<br />Mientras realizamos ejercicios con funciones mas grandes, existe un aumento en la dificultad de correr efectivamente los programas, esto es debido a que a mayor cantidad de instrucciones, aumenta la cantidad de posibles errores en el mismo.<br />Para trabajar con esto se muestra una técnica llamada “incremental development”<br />
    90. 90. Desarrollo de Programas<br />La meta del “incremental development” es evitar largas corridas de programas para encontrar errores, añadiendo y probando una cantidad del código a la vez.<br />Como un ejemplo: Suponga que queremos encontrar la distancia entre dos puntos, con las coordenadas dadas (x1,y1) y (x2,y2). Utilizaremos la formula matemática para distancia entre dos puntos.<br />
    91. 91. Desarrollo de Programas<br />Primero la fórmula a transformar en código.<br />distance = sqrt((x2 − x1)^2 + (y2 − y1)^2)<br />Definimos la función<br />defdistance(x1, y1, x2, y2):<br />return 0.0<br />Vamos confeccionando los procesos paso a paso:<br />defdistance(x1, y1, x2, y2):<br />dx = x2 - x1<br />dy = y2 - y1<br />print "dxis", dx<br />print "dyis", dy<br />return 0.0<br />
    92. 92. Desarrollo de Programas<br />En el paso anterior todavía no recibimos resultado, pero ya vamos verificando errores.<br />defdistance(x1, y1, x2, y2):<br />dx = x2 - x1<br />dy = y2 - y1<br />dsquared = dx**2 + dy**2<br />print "dsquaredis: ", dsquared<br />return 0.0<br />En este paso tampoco recibimos resultado.<br />
    93. 93. Desarrollo de Programas<br />defdistance(x1, y1, x2, y2):<br />dx = x2 - x1<br />dy = y2 - y1<br />dsquared = dx**2 + dy**2<br />result = math.sqrt(dsquared)<br />returnresult<br />Ya en este paso tenemos el programa completado. Si sustituimos valores en x1, y1, x2, y2 obtendríamos un resultado.<br />
    94. 94. Composición de Funciones<br />Como ya hemos visto, podemos llamar una función con otra. Esto se llama Composición.<br />Como ejemplo vamos a escribir una función que toma dos puntos, uno del centro del circulo y otro de un punto del perímetro y que calcule el área del circulo.<br />
    95. 95. Composición de Funciones<br />Lo primero es definir una función para la distancia del radio.<br /> radius = distance(xc, yc, xp, yp)<br />Podemoscomenzar con la siguienteidea:<br /> radius = distance(xc, yc, xp, yp)<br />result = area(radius)<br />returnresult<br />
    96. 96. Composición de Funciones<br />Ahorasi lo unimosobtenemos:<br /> def area2(xc, yc, xp, yp):<br /> radius = distance(xc, yc, xp, yp)<br />result = area(radius)<br />returnresult<br />Creamos area2 para distinguirlo de área.<br />Y como resultado obtenemos el siguiente programado.<br />def area2(xc, yc, xp, yp):<br />return area(distance(xc, yc, xp, yp))<br />
    97. 97. Funciones Booleanas<br />Las funciones pueden en ocasiones regresar valores booleanos, que en ocasiones es conveniente para esconder procesos complicados dentro de las funciones. Por ejemplo:<br />defisDivisible(x, y):<br />if x % y == 0:<br />return True<br />else:<br />return False<br />La función anterior responde si es divisible x entre y. Y la contesta en este caso con falso.<br />
    98. 98. Funciones Booleanas<br />Aquí tenemos un ejemplo cierto con las misma función:<br />>>> isDivisible(6, 3)<br />True<br />
    99. 99. “Leap of faith”<br />En un ejemplo anterior habíamos creado una función para verificar la divisibilidad entre dos números.<br />Luego simplemente la utilizamos llamando la función isDivisible.<br />De esta forma no tenemos que volver a redactar la función sino que simplemente la utilizamos llamándola sin tener que volver a redactarla. A esto le llamamos “Leap of faith”.<br />
    100. 100. Bibliografía<br />How to Think Like a Computer Scientist,LearningwithPython, Allen Downey,JeffreyElkner,ChrisMeyers<br />

    ×