Presentacion python final
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Presentacion python final

on

  • 1,355 views

Python

Python

Statistics

Views

Total Views
1,355
Views on SlideShare
1,352
Embed Views
3

Actions

Likes
0
Downloads
15
Comments
0

1 Embed 3

http://ruquimath.blogspot.com 3

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Example>>> type(“32”)

Presentacion python final Presentation Transcript

  • 1. PythonCapítulos 1 al 5 del libro: How to Think Like a Computer Scientist
    Por: Héctor L. Rodríguez,
    Rubén Quiñones y
    Alexander Hernández
    Clase: Lógica Matemática
    Profesor: Balbino García
  • 2. La Manera del Programa
    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.
  • 3. La Manera del Programa
    Para resolver un problema se deben seguir ciertos pasos.
    • Recopilar toda la información relacionada con el problema a resolver.
    • 4. Establecer todas las posibles estrategias para resolver el problema.
    • 5. Escoger la estrategia más adecuada de acuerdo a las circunstancias.
  • La Manera del Programa
    El proceso de aprender a programar
    es una oportunidad excelente para
    practicar el proceso de solucionar
    problemas.
    Por eso se le llama a esta parte ‘La
    manera del programa’
  • 6. ¿Qué es un programa?
    Un programa es una secuencia de instrucciones que la computadora ejecuta una a una para realizar una o más funciones.
    El programa puede ser escrito en lenguaje de alto nivel, de bajo nivel o lenguaje de máquina.
  • 7. ¿Qué es un programa?
    Existen muchos lenguajes de alto nivel tales como C++, Pascal, Basic y Fortran.
    El lenguaje de alto nivel que estudiamos en este libro se llama Python
    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.
    Python es un lenguaje interpretado.
  • 8. ¿Qué es un programa?
    Las instrucciones que usa un programa se dividen en cinco grupos:
    A) Entrada – Son instrucciones que se
    usan para registrar data proveniente del
    teclado, de un archivo o cualquier otro
    dispositivo.
    B) Salida – Se usan para mostrar data o
    información en la pantalla, en la impresora, para guardar data en un archivo o controlar algún dispositivo.
  • 9. ¿Qué es un programa?
    C) Matemáticas – Son instrucciones
    usadas para realizar operaciones
    matemáticas tales como suma,
    resta, multiplicación, etc.
    D) Condición – Estas instrucciones se
    ejecutan cuando se cumple alguna
    condición.
    E) Repetición – Se usan cuando hay que
    repetir ciertas partes de un programa
    con alguna variación.
  • 10. ¿Qué es un depuración?
    El proceso de depuración o ‘debugging’ es el proceso de localizar y corregir los errores que contiene un programa.
    Una de las habilidades más importantes de un programador es la de localizar y corregir errores en los programas.
    Este es un proceso cíclico y contínuo de arreglo y prueba hasta obtener el resultado deseado.
  • 11. ¿Qué es un depuración?
    Existen tres tipos de errores en programación:
    A) Error de sintáxis – Ocurre cuando
    las instrucciones no se escriben
    correctamente y de acuerdo a las
    reglas estructurales del lenguaje.
  • 12. ¿Qué es un depuración?
    B) Error de ejecución – Son errores
    causados por instrucciones que tratan
    de ejecutar una operación que no
    está permitida. Por ejemplo dividir por
    cero causaría un error de ‘Overflow’.
  • 13. ¿Qué es un depuración?
    C) Error de semántica – En este caso, el
    programa corre bien, en el sentido de
    que no aparecen mensajes de error,
    pero no se obtiene el resultado
    esperado. Este tipo de error también
    se conoce como error de lógica.
  • 14. Lenguajes Formales y Naturales
    Lenguajes naturales – Son los que la gente usa para comunicarse como el español, inglés y francés.
    Lenguajes formales – Son lenguajes diseñados para aplicaciones específicas.
    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.
  • 15. El Primer Programa
    >> print ”Hello World!”
    Hello World!
    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.
  • 16. Variable – Es un nombre que identifica y almacena un valor.
    Valor – Es un número o literal que puede ser almacenado en una variable.
    Tipos de variables – Las variables se pueden clasificar de acuerdo al valor que almacenan. Por ejemplo: int, Float, String.
    ¿Qué es una variable?
  • 17. Asignando valor a una variable
    >> message = “Hello World!”
    >> n = 17
    >> pi = 3.1416
    La instrucción de asignación crea nuevas variables y les asigna valores.
  • 18. Verificando el tipo de una variable
    >> type(message)
    <type ‘str’>
    >> type(n)
    <type ‘int’>
    >> type(pi)
    <type ‘float’>
    Podemos examinar el tipo de una variable preguntándole al interprete.
  • 19. Nombres de Variables
    Los nombres de las variables deben ser significativos y de acuerdo al tipo de valor que almacenan.
    Pueden tener un largo arbitrario y pueden contener letras, números y barritas ‘_’, aunque el primer carácter debe ser una letra.
    Pedro y pedro son dos variables diferentes.
  • 20. Nombres de Variables
    >> 76trombones = ‘Banda’
    SyntaxError: invalid syntax
    >> more$ = 10000
    SyntaxError: invalid syntax
    >> class = ‘’Computer Science’
    SyntaxError: invalid syntax
    76trombones es ilegal por empezar con un número y more$ porque el signo $ es ilegal.
  • 21. Keywords
    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’.
    Python tiene 29 keywords: class, print, and, if, else, return, …, etc.
  • 22. Evaluando Expresiones
    Una expresión es una combinación de valores, variables y operadores que al evaluarse producen un resultado.
    >> x = 1 + 2
    >> x
    3
    >>
    En esta expresión ‘+’ es un operador y ‘1’ y ‘2’ son los operandos.
  • 23. Orden de Operaciones
    Python sigue las mismas reglas que se usan en matemáticas para realizar las operaciones:
    1) Paréntesis
    2) Exponenciación ‘3*1**3 = 3’
    3) Multiplicación y División
    4) Suma y Resta
    5) Operadores con la misma prioridad
    se evalúan de izquierda a derecha.
  • 24. Operaciones con Literales
    Con variables alfanuméricas (strings) no se pueden realizar operaciones numéricas.
    A) Operador (+) - Une dos valores literales, el
    fin del primero con el principio del segundo.
    Ejemplo:
    >> fruta = ‘Piña’
    >> preparacion = ‘colada’
    >> print fruta+preparación
    Piña colada
  • 25. Operaciones con Literales
    B) Operador(*) – Repite el valor literal el
    número de veces que se multiplique.
    Ejemplo:
    >> fruit = “pera ”
    >> n_peras = 3 * fruit
    >> print n_peras
    pera pera pera
  • 26. Composición
    Una instrucción se puede componer con varios tipos de expresiones mientras valide las reglas de sintáxis del lenguaje.
    Ejemplo:
    >> hours = 37
    >> wage = 7.25
    >> print “Salary: ”,hours*wage
    Salary = 268.25
    >>_
  • 27. Comentarios
    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.
    En el lenguaje python podemos expresar comentarios usando el signo ‘#’ o dos ‘//’
    Ejemplos:
    // Esta linea es un comentario
    # Esta también.
  • 28. Funciones
  • 29. Function calls
    • Ejemplode un llamado de función (function call):
    >>> type("32")
    <type ’str’>
    • El nombre de la funciónestype y ellamuestra el tipo de valor o variable.
    • 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. En vez de obtener con print el valor devuelto, podemosasignarlo a una variable:
    >>> betty = type("32")
    >>> printbetty
    <type ’str’>
  • 32.
    • Como otroejemplo, la funciónidtoma el valor o una variable y devuelve un
    enteroqueactúacomoúnicoidentificador del valor:
    >>> id(3)
    134882108
    >>> betty = 3
    >>> id(betty)
    134882108
    • 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.
  • Conversión de tipo (Type)
    • Pythonproveeunacolección de funciones pre-incluidasqueconviertenvalores de un tipo a otro.
    • 33. La funcióninttomacualquier valor y lo convierte en un entero, siesposible o de otra forma “protesta”:
    >>> int("32")
    32
    >>> int("Hello")
    ValueError: invalid literal forint(): Hello
    • Inttambiénpuedeconvertirvaloresfloating point a enteros, perorecordemosqueesotrunca la parte fraccionaria:
    >>> int(3.99999)
    3
    >>> int(-2.3)
    -2
  • 34.
    • La funciónfloatconvierteenteros y strings a números con punto decimal (floating-point):
    >>> float(32)
    32.0
    >>> float("3.14159")
    3.14159
    • Finalmente,lafunciónstrconvierte a tipo string:
    >>> str(32)
    ’32’
    >>> str(3.14149)
    ’3.14149’
  • 35. Coerción de tipo
    Division
    Supongamosquedeseamoscalcular la fracciónde unahoraque ha transcurrido. La expresión,
    minute / 60, hacearitmética de númerosenteros, asíque el resultadoserásiempre 0, aún a 59 minutos
    de una hora.
    Unasoluciónesconvertirminuto a decimal (floating-point)y hacerdivisión de decimalesfloating-point:
    >>> minute = 59
    >>> float(minute) / 60
    0.983333333333
  • 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):
    >>> minute = 59
    >>> minute / 60.0
    0.983333333333
    Haciendo el denominador un decimal, forzamosPhyton a hacerdivisión de decimales.
  • 37. Funciones matemáticas
    En matemática, trabajamos con funcionescomo sin y log, y hemosaprendido a evaluarexpresionescomo sin(pi/2) y log(1/x).
    Primero, evaluamos la expresión en paréntesis (el argumento).
    Porejemplo, pi/2 esaproximadamente 1.571 y 1/x es 0.1 (si x fuera10.0).
    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).
    Este procesopuede ser aplicadorepetidamenteparaevaluarexpresionesmascomplicadas
    como log(1/sin(pi/2)). Primero, evaluamos el argumento de la funciónmásinterna,
    luegoevalúa la función, y asísucesivamente.
    Pythontiene un módulomatemáticoqueprovee de lasfuncionesmatemáticasmásfamiliares.
    Un móduloes un archivoquecontieneunacolección de funcionesrelacionadasagrupadas.
  • 38. Antes de quepodamosusarlasfunciones de un módulo, tenemosqueimportarlas:
    >>> importmath
    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).
    >>> decibel = math.log10 (17.0)
    >>> angle = 1.5
    >> height = math.sin(angle)
    >El primerenunciado (statement)asigna decibel al logaritmo de 17, base 10. Tambiénhay unafunciónllamadalogquetomalogaritmo base e.
    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.
  • 39. Porejemplo,
    Para conseguir el seno de 45 grados, primerocalcula el ángulo en radianes y luegotoma el seno:
    >>> degrees = 45
    >>> angle = degrees * 2 * math.pi / 360.0
    >>> math.sin(angle)
    0.707106781187
    La constante pi esademás parte del módulomatemático. Si queremos, podemosrevisarlocomparándolo con la raízcuadrada de dos dividido entre dos:
    >>> math.sqrt(2) / 2.0
    0.707106781187
  • 40. Composición
    Tal comolasfuncionesmatemáticas, lasfunciones de Pythonpueden ser compuestas, o sea queusamosunaexpresióncomo parte de otra.
    Porejemplo, podemosusarcualquierexpresióncomo un argumentoparaunafunción:
    >>> x = math.cos(angle + math.pi/2)
    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.
    Tambiénpodemostomar el resultado de unafunción y pasarlocomo un argumentoparaotro:
    >>> x = math.exp(math.log(10.0))
    Este enunciadoconsigue la base log e de 10 y entonceseleva e a esapotencia. El resultadoesasignado a x.
  • 41. Añadir nuevas funciones
    Tambiénesposibleañadirnuevasfunciones. Crearnuevasfuncionespara resolver problemasparticularesesuna de lascosasmásusadasacerca de un lenguage de programación general.
    En el contexto de programación, unafunciónesnombradasecuencia de enunciadosquerealizanunaoperacióndeseada. Estaoperaciónesespecificada en unadefinición de función.
    La sintaxisparaunafunciónes:
    def NAME( LIST OF PARAMETERS ):
    STATEMENTS
    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.
    Puedehabercualquiernúmero de enunciadosdentro de la función, perotienenqueestarseparados del margenizquierdo. En los ejemplos del libro, se usaunaseparación de dos espacios.
  • 42. La primerapareja de funcionesque describe el libro no tieneparámetros, asíque la sintaxis se veasí:
    defnewLine():
    print
    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.)
  • 43. La sintaxisparallamar la nuevafunciónes la mismaque la sintaxisparafuncionespreincluídas en Phyton:
    print "First Line."
    newLine()
    print "Second Line."
    La salidaparaeseprogramaes:
    First line.
    Second line.
    Nota el espacio extra entre las dos líneas
  • 44. ¿Quésiqueríamásespacio entre laslíneas? Podemosllamar la mismafunciónrepetidamente:
    print "First Line."
    newLine()
    newLine()
    newLine()
    print "Second Line.“
    O podríamosescribirunanuevafunciónnombradathreeLinesqueimprimetresnuevaslíneas:
    defthreeLines():
    newLine()
    newLine()
    newLine()
    print "First Line."
    threeLines()
    print "Second Line."
  • 45. Estafuncióncontienetresenunciados, todos de los cualesestánseparadospor dos espacios.
    Como el próximoenunciado no estáseparado, Pythonsabequeéste no es parte de la función.
    Hay algunascosas a notaracerca de esteprograma:
    1. Se puedellamar al mismoprocedimientorepetidamente. De hecho, estoesmuycomúny útil.
    2. Se puedetenerunafunciónllamando a otra; en estecasothreeLinesllama a newLine.
    Este ejemplomuestrados de muchasrazonesparalasquesirvecrearnuevasfunciones:
    • Crearunanuevafunciónnosda la oportunidad de nombrar un grupo de enunciados.
  • 46. Las funcionespuedensimplificar un programaescondiendo un cómputocomplejodetrás de un sólocomado y usandopalabras en nuestroidioma en lugar de un códigomisterioso.
    • Crearunanuevafunciónpuedehacer a un programamáspequeñoeliminandocódigosrepetitivos. Porejemplo, una forma corta de imprimirnuevelíneasconsecutivasesllamandothreeLinestresveces.
  • 47. Definiciones y sus usos
    Juntando los fragmentosestudiadoshastaahora, el programacompleto se veasí:
    defnewLine():
    print
    defthreeLines():
    newLine()
    newLine()
    newLine()
    print "First Line."
    threeLines()
    print "Second Line.“
    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).
    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.
  • 48. Flujo de ejecuciones
    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.
    La ejecuciónsiemprecomienza en el primer enunciado del programa. Los enunciados son ejecutadosuno a la vez, en orden de arribahaciaabajo.
    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.
    En estecaso, la definiciónmásinterna no esejecutadahastaque la función de másafuera sea llamada.
    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ó.
    Unafunciónpuedellamar a otra.
  • 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ó.
    Cuandollega al final del programa, termina.
    O sea. Cuando se lee un programa, no se lee de arriba a abajo. En vez, se sigue el flujo de ejecución.
  • 50. Parámetros y argumentos
    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.
    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.
    Aquí hay un ejemplo de unafuncióndefinidapor el usuarioquetiene un parámetro:
    defprintTwice(bruce):
    printbruce, bruce
    Estafuncióntoma un sóloargumento y lo asigna a un parámetrollamadobruce.
    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.
  • 51. La funciónprintTwicetrabajaparacualquiertipo (type) quepueda ser impreso:
    >>> printTwice(’Spam’)
    SpamSpam
    >>> printTwice(5)
    5 5
    >>> printTwice(3.14159)
    3.14159 3.14159
    En la primerallamada de función, el argumentoes un string. En el segundo, es un entero (integer).
    En el tercero, esuna decimal (float).
  • 52. Las mismasreglas de composiciónqueaplican a lasfuncionespreincluídastambiénaplicanparalasfuncionesdefinidaspor el usuario, asíquepodemosusarcualquierclase de expresióncomoargumentoparaprintTwice:
    >>> printTwice(’Spam’*4)
    SpamSpamSpamSpamSpamSpamSpamSpam
    >>> printTwice(math.cos(math.pi))
    -1.0 -1.0
    Como es usual, la expresiónesevaluada antes de que la funcióncorra, asíprintTwiceimprime SpamSpamSpamSpamSpamSpamSpamSpam en vez de ’Spam’*4 ’Spam’*4.
  • 53. Podemosademásusaruna variable comoargumento:
    >>> michael = ’Eric, the half a bee.’
    >>> printTwice(michael)
    Eric, the half a bee. Eric, the half a bee.
    Notemosalgomuyimportante. El nombre de la variable quepasamoscomoargumento (michael) no tiene nada quever con el nombre del parámetro (bruce).
    No importacómo el valor fuellamado de vuelta a casa (en el caller); aquí en printTwice, llamamos a todo el mundobruce.
  • 54. Las variables y parámetros son locales
    Cuandocreamosuna variable local dentro de unafunción, ésta solo existedentro de la función y no podemosusarlaafuera.
    Porejemplo:
    defcatTwice(part1, part2):
    cat = part1 + part2
    printTwice(cat)
    Estafuncióntoma dos argumentos, los enlaza o relaciona(concatena) y entoncesimprime los resultados dos veces. Podemosllamar a la función con dos strings:
    >>> chant1 = "Pie Jesu domine, "
    >>> chant2 = "Dona eisrequiem."
    >>> catTwice(chant1, chant2)
    Pie Jesu domine, Dona eis requiem. Pie Jesu domine, Dona eis requiem.
  • 55. CuandocatTwicetermina, la variable cat esdestruiday. Si tratamos de imprimirla, obtendremos un error:
    >>> printcat
    NameError: cat
    Los parámetros son también locales. Porejemplo, afuera de la funciónprintTwice, no hay talcosacomobruce. Si intentáramosusarla, Python se quejaría.
  • 56. (Stack Diagrams) Diagramas de pilas
    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.
    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í:
  • 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.
    Cadaparámetro se refiere al mismo valor comosuargumentocorrespondiente. Así, part1 chant1, part2tiene el mismo valor quechant2 y brucetiene el mismo valor quecat.
    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.
  • 58. Porejemplo, sitratamos de accesarcatdesdeadentro de printTwice, obtenemos un NameError:
    Traceback (innermostlast):
    File "test.py", line 13, in __main__
    catTwice(chant1, chant2)
    File "test.py", line 5, in catTwice
    printTwice(cat)
    File "test.py", line 9, in printTwice
    printcat
    NameError: cat
  • 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.
    Estoademásmuestra la línea de códigoquecausó el error.
    Notemos la similaridad entre el tracebacky el diagrama de pilas. Esto no esunacoincidencia.
  • 60. Capítulo 4
    Conditionals and recursion
  • 61. El operadorMódulo (Residuo)
    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 (%).
    Ej:
    >>> quotient = 7 / 3
    >>> printquotient
    2
    >>> remainder = 7 % 3
    >>> printremainder
    1
    7 dividido entre 3 es 2 con un residuo de 1.
  • 62. Expresiones Booleanas
    Una expresión booleana es una expresión que puede ser verdadera o falsa.
    Una forma de escribir una expresión lógica es utilizar el operador ==, que compara dos valores y produce un valor booleano:
    Ej:
    >>> 5 == 5
    True
    >>> 5 == 6
    False
  • 63. Expresiones Booleanas
    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.
  • 64. Expresiones Booleanas
    El operador == es uno de los operadores de comparación, los otros son:
    x != y # x no esigual a y
    x > y # x es mayor quey
    x < y # x esmenorque y
    x >= y # x es mayor o igualque y
    x <= y # x esmenor o igualque y
  • 65. Expresiones Booleanas
    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 =>.
  • 66. Operadores Lógicos
    Hay tres operadores lógicos: and, or y not. La semántica (significado) de estos operadores es similar a su significado en Español.
    Ej:
    Por ejemplo, x> 0 y x <10 es cierto sólo si x es mayor que 0 y menor que 10.
    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.
  • 67. Operadores Lógicos
    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.
  • 68. Ejecución Condicional
    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.
    Ej:
    ifx > 0:
    print"x is positive"
  • 69. Ejecución Condicional
    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.
  • 70. Ejecución Condicional Alternativa
    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:
    Ej:
    ifx%2 == 0:
    printx, "iseven"
    else:
    printx, "isodd"
  • 71. Ejecución Condicional Alternativa
    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.
  • 72. Ejecución Condicional Alternativa
    Si usted necesita comprobar la paridad de números , es posible que "envolver" el código en una función:
    Ej:
    defprintParity(x):
    ifx%2 == 0:
    printx, "iseven"
    else:
    printx, "isodd"
  • 73. Ejecución Condicional Alternativa
    Para cualquier valor de x, printParitymuestra en display, el mensajeapropiado. Cuando lo llamas puedesproveer un enterocomoargumento.
    Ej:
    >>> printParity(17)
    17 isodd
    >>> y = 17
    >>> printParity(y+1)
    18 iseven
  • 74. Cadena Condicional
    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:
    Ej:
    if x < y:
    print x, "is less than", y
    elif x > y:
    print x, "is greater than", y
    else:
    print x, "and", y, "are equal"
  • 75. Cadena Condicional
    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:
    Ej:
    ifchoice == ’A’:
    functionA()
    elifchoice == ’B’:
    functionB()
    elifchoice == ’C’:
    functionC()
    else:
    print"Invalidchoice."
  • 76. Cadena Condicional
    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.
  • 77. Condicionales Anidadas
    Una condicional también se pueden anidar dentro de otra. Podríamos haber escrito elejemplo tricotomía de la siguiente manera:
    ifx == y:
    print x, "and", y, "are equal"
    else:
    ifx < y:
    print x, "is less than", y
    else:
    print x, "is greater than", y
  • 78. Condicionales Anidadas
    En algunas ocasiones operadores lógicos proveen formas de simplificar condiciones anidadas.
    Ej:
    if0 < x:
    ifx < 10:
    print "x is a positive single digit.“
    El print se ejecuta sólo si pasa las dos condiciones por lo tanto podemos utilizar el operador and:
  • 79. Condicionales Anidadas
    if 0 < x and x < 10:
    print "x is a positive single digit.“
    Este tipo de condiciones son comunes, por lo tanto Python provee una alternativa de sintaxis muy similar a la notación matemática.
    if0 < x < 10:
    print "x is a positive single digit."
  • 80. El Enunciado de Regreso
    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:
    importmath
    defprintLogarithm(x):
    ifx <= 0:
    print "Positive numbers only, please."
    return
    result= math.log(x)
    print "The log of x is", result
  • 81. La Recursión
    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:
    defcountdown(n):
    ifn == 0:
    print"Blastoff!"
    else:
    printn
    countdown(n-1)
  • 82. La Recursión
    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.
    Por lo tanto si llamaramos a la función countdown (3) obtendriamos el siguiente output:
    3
    2
    1
    Blastoff!
  • 83. La Recursión Infinita
    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.
  • 84. Entradas de Teclado
    Los programas antes presentados son un tanto estrictos a la hora de aceptar entradas de un usuario.
    Python provee instrucciones que acepten entradas del teclado.
    La mas sencilla de ellas es raw_input.
    Cuando la función es llamada, el programa se detiene y espera una entrada del usuario.
    A continuación veremos un ejemplo:
  • 85. Entradas de Teclado
    >>> input = raw_input ()
    What are you waiting for?
    >>> print input
    What are you waiting for?
    Este tipo de mensajes de entradas se llama prompt.
  • 86. Capítulo 5
    Funciones Fructíferas
  • 87. Valores devueltos
    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.
    Pero si nos fijamos ninguna de estas funciones regresan un valor.
    A continuación escribiremos funciones que regresen valores, estas son las llamadas funciones fructíferas.
  • 88. Valores devueltos
    defarea(radius):
    returnmath.pi * radius**2
  • 89. Desarrollo de Programas
    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.
    Para trabajar con esto se muestra una técnica llamada “incremental development”
  • 90. Desarrollo de Programas
    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.
    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.
  • 91. Desarrollo de Programas
    Primero la fórmula a transformar en código.
    distance = sqrt((x2 − x1)^2 + (y2 − y1)^2)
    Definimos la función
    defdistance(x1, y1, x2, y2):
    return 0.0
    Vamos confeccionando los procesos paso a paso:
    defdistance(x1, y1, x2, y2):
    dx = x2 - x1
    dy = y2 - y1
    print "dxis", dx
    print "dyis", dy
    return 0.0
  • 92. Desarrollo de Programas
    En el paso anterior todavía no recibimos resultado, pero ya vamos verificando errores.
    defdistance(x1, y1, x2, y2):
    dx = x2 - x1
    dy = y2 - y1
    dsquared = dx**2 + dy**2
    print "dsquaredis: ", dsquared
    return 0.0
    En este paso tampoco recibimos resultado.
  • 93. Desarrollo de Programas
    defdistance(x1, y1, x2, y2):
    dx = x2 - x1
    dy = y2 - y1
    dsquared = dx**2 + dy**2
    result = math.sqrt(dsquared)
    returnresult
    Ya en este paso tenemos el programa completado. Si sustituimos valores en x1, y1, x2, y2 obtendríamos un resultado.
  • 94. Composición de Funciones
    Como ya hemos visto, podemos llamar una función con otra. Esto se llama Composición.
    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.
  • 95. Composición de Funciones
    Lo primero es definir una función para la distancia del radio.
    radius = distance(xc, yc, xp, yp)
    Podemoscomenzar con la siguienteidea:
    radius = distance(xc, yc, xp, yp)
    result = area(radius)
    returnresult
  • 96. Composición de Funciones
    Ahorasi lo unimosobtenemos:
    def area2(xc, yc, xp, yp):
    radius = distance(xc, yc, xp, yp)
    result = area(radius)
    returnresult
    Creamos area2 para distinguirlo de área.
    Y como resultado obtenemos el siguiente programado.
    def area2(xc, yc, xp, yp):
    return area(distance(xc, yc, xp, yp))
  • 97. Funciones Booleanas
    Las funciones pueden en ocasiones regresar valores booleanos, que en ocasiones es conveniente para esconder procesos complicados dentro de las funciones. Por ejemplo:
    defisDivisible(x, y):
    if x % y == 0:
    return True
    else:
    return False
    La función anterior responde si es divisible x entre y. Y la contesta en este caso con falso.
  • 98. Funciones Booleanas
    Aquí tenemos un ejemplo cierto con las misma función:
    >>> isDivisible(6, 3)
    True
  • 99. “Leap of faith”
    En un ejemplo anterior habíamos creado una función para verificar la divisibilidad entre dos números.
    Luego simplemente la utilizamos llamando la función isDivisible.
    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”.
  • 100. Bibliografía
    How to Think Like a Computer Scientist,LearningwithPython, Allen Downey,JeffreyElkner,ChrisMeyers