SlideShare une entreprise Scribd logo
1  sur  97
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
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.
La Manera del Programa Para resolver un problema se deben seguir ciertos pasos. ,[object Object]
Establecer todas las posibles estrategias para resolver el problema.
Escoger la estrategia más adecuada de acuerdo a las circunstancias.,[object Object]
¿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.
¿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.
¿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.
¿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.
¿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.
¿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.
¿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’.
¿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.
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.
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.
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?
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.
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.
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.
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.
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.
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.
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.
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
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
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 	>>_
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.
Funciones
Function calls ,[object Object],>>> type("32") 	<type ’str’> ,[object Object]
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.
En vez de obtener con print el valor devuelto, podemosasignarlo a una variable:	>>> betty = type("32") 	>>> printbetty 	<type ’str’>
[object Object],enteroqueactúacomoúnicoidentificador del valor: >>> id(3) 	134882108 	>>> betty = 3 	>>> id(betty) 	134882108 ,[object Object],[object Object]
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 ,[object Object],>>> int(3.99999) 3 	>>> int(-2.3) 	-2
[object Object],>>> float(32) 32.0 	>>> float("3.14159") 	3.14159 ,[object Object],>>> str(32) 	’32’ 	>>> str(3.14149) 	’3.14149’
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
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.
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.
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.
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
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.
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.
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.)
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
¿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."
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.
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.
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.
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.
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.
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.
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).
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.
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.
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.
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.
(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í:
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.
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
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.
Capítulo 4 Conditionals and recursion
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.
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
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.
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
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 =>.
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.
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.
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"
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.
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"
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.
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"
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
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"
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."
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.
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
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:
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."
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
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)
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!
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.
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:
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.
Capítulo 5 Funciones Fructíferas
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.
Valores devueltos defarea(radius): returnmath.pi * radius**2
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”
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.
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
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.
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.
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.
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
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))
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.

Contenu connexe

Tendances

Modulo de algoritmo_-_programacion
Modulo de algoritmo_-_programacionModulo de algoritmo_-_programacion
Modulo de algoritmo_-_programacionadrianangel4
 
3 Conceptos progamacion-tema3
3 Conceptos progamacion-tema33 Conceptos progamacion-tema3
3 Conceptos progamacion-tema3Elba Sepúlveda
 
Nivel de programacion web_introduccion_11º3
Nivel  de programacion web_introduccion_11º3Nivel  de programacion web_introduccion_11º3
Nivel de programacion web_introduccion_11º3SebastianFrancoSotelo
 
Presentación pseudocódigo
Presentación pseudocódigoPresentación pseudocódigo
Presentación pseudocódigoStudent
 
Pseudocódigo
PseudocódigoPseudocódigo
Pseudocódigocoldclean
 
3. Elementos basicos de un programa
3.  Elementos basicos de un programa3.  Elementos basicos de un programa
3. Elementos basicos de un programamartell024
 
Conceptos básicos de programación y el entorno gráfico de pseint (1)
Conceptos básicos de programación  y  el entorno gráfico de pseint (1)Conceptos básicos de programación  y  el entorno gráfico de pseint (1)
Conceptos básicos de programación y el entorno gráfico de pseint (1)keisy vargas
 
Programacion lenguaje-c
Programacion lenguaje-cProgramacion lenguaje-c
Programacion lenguaje-cClariza
 
Programacion web introduccion 11 3
Programacion web introduccion 11 3Programacion web introduccion 11 3
Programacion web introduccion 11 3Garcia-12
 

Tendances (18)

Entrega1
Entrega1Entrega1
Entrega1
 
Pseint
PseintPseint
Pseint
 
Modulo de algoritmo_-_programacion
Modulo de algoritmo_-_programacionModulo de algoritmo_-_programacion
Modulo de algoritmo_-_programacion
 
3 Conceptos progamacion-tema3
3 Conceptos progamacion-tema33 Conceptos progamacion-tema3
3 Conceptos progamacion-tema3
 
Programacion
ProgramacionProgramacion
Programacion
 
Programacion
ProgramacionProgramacion
Programacion
 
Nivel de programacion web_introduccion_11º3
Nivel  de programacion web_introduccion_11º3Nivel  de programacion web_introduccion_11º3
Nivel de programacion web_introduccion_11º3
 
Pseudocodigo
PseudocodigoPseudocodigo
Pseudocodigo
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Presentación pseudocódigo
Presentación pseudocódigoPresentación pseudocódigo
Presentación pseudocódigo
 
PESEINT MANUAL
PESEINT MANUALPESEINT MANUAL
PESEINT MANUAL
 
Software PseInt
Software PseIntSoftware PseInt
Software PseInt
 
Lógica de programación
Lógica de programaciónLógica de programación
Lógica de programación
 
Pseudocódigo
PseudocódigoPseudocódigo
Pseudocódigo
 
3. Elementos basicos de un programa
3.  Elementos basicos de un programa3.  Elementos basicos de un programa
3. Elementos basicos de un programa
 
Conceptos básicos de programación y el entorno gráfico de pseint (1)
Conceptos básicos de programación  y  el entorno gráfico de pseint (1)Conceptos básicos de programación  y  el entorno gráfico de pseint (1)
Conceptos básicos de programación y el entorno gráfico de pseint (1)
 
Programacion lenguaje-c
Programacion lenguaje-cProgramacion lenguaje-c
Programacion lenguaje-c
 
Programacion web introduccion 11 3
Programacion web introduccion 11 3Programacion web introduccion 11 3
Programacion web introduccion 11 3
 

En vedette

沙雕 Sculptures de sable
沙雕 Sculptures de sable沙雕 Sculptures de sable
沙雕 Sculptures de sablelys167
 
Adobe - Tactiques d’optimisation du marketing numérique
Adobe - Tactiques d’optimisation du marketing numériqueAdobe - Tactiques d’optimisation du marketing numérique
Adobe - Tactiques d’optimisation du marketing numériqueNicolas Bariteau
 
Ejercicios de interés tipos de mercado
Ejercicios de interés tipos de mercadoEjercicios de interés tipos de mercado
Ejercicios de interés tipos de mercadoLuz García
 
Pp carrieres
Pp carrieresPp carrieres
Pp carrieres96bobcat
 
Paper cut technique--
Paper cut technique--Paper cut technique--
Paper cut technique--lys167
 
Le gicam en quelques mots
Le gicam en quelques motsLe gicam en quelques mots
Le gicam en quelques motsPenn Hardikhan
 
Calendrier du pecheur_20124
Calendrier du pecheur_20124Calendrier du pecheur_20124
Calendrier du pecheur_20124kawa83
 
Nantes, castle
Nantes, castleNantes, castle
Nantes, castleARCHOUK
 
Visita de la Virgen de Alharilla a Escañuela
Visita de la Virgen de Alharilla a EscañuelaVisita de la Virgen de Alharilla a Escañuela
Visita de la Virgen de Alharilla a EscañuelaGuadalinfo Escañuela
 
Diccionario universal de términos parlamentarios
Diccionario universal de términos parlamentariosDiccionario universal de términos parlamentarios
Diccionario universal de términos parlamentariosLilia G. Torres Fernández
 
Maison du Design - Présentation des services
Maison du Design - Présentation des servicesMaison du Design - Présentation des services
Maison du Design - Présentation des servicesBarbara Sylvester
 

En vedette (20)

沙雕 Sculptures de sable
沙雕 Sculptures de sable沙雕 Sculptures de sable
沙雕 Sculptures de sable
 
Síntesis didáctica junio 2014
Síntesis didáctica junio 2014Síntesis didáctica junio 2014
Síntesis didáctica junio 2014
 
Adobe - Tactiques d’optimisation du marketing numérique
Adobe - Tactiques d’optimisation du marketing numériqueAdobe - Tactiques d’optimisation du marketing numérique
Adobe - Tactiques d’optimisation du marketing numérique
 
Teatro romano
Teatro romanoTeatro romano
Teatro romano
 
Ejercicios de interés tipos de mercado
Ejercicios de interés tipos de mercadoEjercicios de interés tipos de mercado
Ejercicios de interés tipos de mercado
 
Gestión del Conocimiento
Gestión del ConocimientoGestión del Conocimiento
Gestión del Conocimiento
 
Pp carrieres
Pp carrieresPp carrieres
Pp carrieres
 
Paper cut technique--
Paper cut technique--Paper cut technique--
Paper cut technique--
 
Lymphoedeme post test
Lymphoedeme post testLymphoedeme post test
Lymphoedeme post test
 
Le gicam en quelques mots
Le gicam en quelques motsLe gicam en quelques mots
Le gicam en quelques mots
 
Boletin final interactivo vjv
Boletin final interactivo vjvBoletin final interactivo vjv
Boletin final interactivo vjv
 
Calendrier du pecheur_20124
Calendrier du pecheur_20124Calendrier du pecheur_20124
Calendrier du pecheur_20124
 
Sphinx
SphinxSphinx
Sphinx
 
Nantes, castle
Nantes, castleNantes, castle
Nantes, castle
 
Visita de la Virgen de Alharilla a Escañuela
Visita de la Virgen de Alharilla a EscañuelaVisita de la Virgen de Alharilla a Escañuela
Visita de la Virgen de Alharilla a Escañuela
 
La tour eiffel
La tour eiffelLa tour eiffel
La tour eiffel
 
Projet delirium de l’USI ouest
Projet delirium de l’USI ouestProjet delirium de l’USI ouest
Projet delirium de l’USI ouest
 
Diccionario universal de términos parlamentarios
Diccionario universal de términos parlamentariosDiccionario universal de términos parlamentarios
Diccionario universal de términos parlamentarios
 
Maison du Design - Présentation des services
Maison du Design - Présentation des servicesMaison du Design - Présentation des services
Maison du Design - Présentation des services
 
Educando
EducandoEducando
Educando
 

Similaire à Presentacion python final

Conceptos básicos de programación, fundamentos de programación pseint.
Conceptos básicos de programación, fundamentos de programación pseint.Conceptos básicos de programación, fundamentos de programación pseint.
Conceptos básicos de programación, fundamentos de programación pseint.ValentinaGarcia89
 
Estructuras básicas_ Conceptos básicos de programación. 10-1.pdf
Estructuras básicas_ Conceptos básicos de programación. 10-1.pdfEstructuras básicas_ Conceptos básicos de programación. 10-1.pdf
Estructuras básicas_ Conceptos básicos de programación. 10-1.pdfSofiaMoreno74
 
02 algoritmo clase
02 algoritmo clase02 algoritmo clase
02 algoritmo clasenelson0007
 
Estructuras básicas conceptos básicos de programación (1)
Estructuras básicas  conceptos básicos de programación (1)Estructuras básicas  conceptos básicos de programación (1)
Estructuras básicas conceptos básicos de programación (1)daniel lozada cutiva
 
Python_Introduccion_a_la_programacion.pptx
Python_Introduccion_a_la_programacion.pptxPython_Introduccion_a_la_programacion.pptx
Python_Introduccion_a_la_programacion.pptxFedericoMartearena
 
Estructuras básicas conceptos básicos de programación
Estructuras básicas  conceptos básicos de programaciónEstructuras básicas  conceptos básicos de programación
Estructuras básicas conceptos básicos de programacióncarlinauribe
 
CONCEPTOS DE PROGRAMACIÓN, MÉTODOS ESTADÍSTICOS 11-6
CONCEPTOS DE PROGRAMACIÓN, MÉTODOS ESTADÍSTICOS 11-6CONCEPTOS DE PROGRAMACIÓN, MÉTODOS ESTADÍSTICOS 11-6
CONCEPTOS DE PROGRAMACIÓN, MÉTODOS ESTADÍSTICOS 11-6AnaSofiaLpezMilln
 
Estructuras básicas conceptos básicos de programación
Estructuras básicas  conceptos básicos de programaciónEstructuras básicas  conceptos básicos de programación
Estructuras básicas conceptos básicos de programaciónNataliaVicua1
 
Estructuras básicas conceptos básicos de programación
Estructuras básicas  conceptos básicos de programaciónEstructuras básicas  conceptos básicos de programación
Estructuras básicas conceptos básicos de programaciónlaurapolindara1
 
Introducción a la Programación en Javascript. Clase 1
Introducción a la Programación en Javascript. Clase 1Introducción a la Programación en Javascript. Clase 1
Introducción a la Programación en Javascript. Clase 1xjordi
 
ALGORITMOS DE PROGRAMACION (1).pdf
ALGORITMOS DE PROGRAMACION (1).pdfALGORITMOS DE PROGRAMACION (1).pdf
ALGORITMOS DE PROGRAMACION (1).pdfladybovis
 
03 Intro Programacion C
03 Intro Programacion C03 Intro Programacion C
03 Intro Programacion CEdwinRicardo
 
Guía de Algoritmo y Programación en C
Guía de Algoritmo y Programación en CGuía de Algoritmo y Programación en C
Guía de Algoritmo y Programación en CPablo Chiesa
 

Similaire à Presentacion python final (20)

Algoritmos y programacion en C++
Algoritmos y programacion en C++Algoritmos y programacion en C++
Algoritmos y programacion en C++
 
Tecnología PseInt
Tecnología PseIntTecnología PseInt
Tecnología PseInt
 
Conceptos básicos de programación, fundamentos de programación pseint.
Conceptos básicos de programación, fundamentos de programación pseint.Conceptos básicos de programación, fundamentos de programación pseint.
Conceptos básicos de programación, fundamentos de programación pseint.
 
Estructuras básicas_ Conceptos básicos de programación. 10-1.pdf
Estructuras básicas_ Conceptos básicos de programación. 10-1.pdfEstructuras básicas_ Conceptos básicos de programación. 10-1.pdf
Estructuras básicas_ Conceptos básicos de programación. 10-1.pdf
 
Tecnología Periodo 2.pdf
Tecnología Periodo 2.pdfTecnología Periodo 2.pdf
Tecnología Periodo 2.pdf
 
02 algoritmo clase
02 algoritmo clase02 algoritmo clase
02 algoritmo clase
 
Estructuras básicas conceptos básicos de programación (1)
Estructuras básicas  conceptos básicos de programación (1)Estructuras básicas  conceptos básicos de programación (1)
Estructuras básicas conceptos básicos de programación (1)
 
Python_Introduccion_a_la_programacion.pptx
Python_Introduccion_a_la_programacion.pptxPython_Introduccion_a_la_programacion.pptx
Python_Introduccion_a_la_programacion.pptx
 
Estructuras básicas conceptos básicos de programación
Estructuras básicas  conceptos básicos de programaciónEstructuras básicas  conceptos básicos de programación
Estructuras básicas conceptos básicos de programación
 
CONCEPTOS DE PROGRAMACIÓN, MÉTODOS ESTADÍSTICOS 11-6
CONCEPTOS DE PROGRAMACIÓN, MÉTODOS ESTADÍSTICOS 11-6CONCEPTOS DE PROGRAMACIÓN, MÉTODOS ESTADÍSTICOS 11-6
CONCEPTOS DE PROGRAMACIÓN, MÉTODOS ESTADÍSTICOS 11-6
 
Estructuras básicas conceptos básicos de programación
Estructuras básicas  conceptos básicos de programaciónEstructuras básicas  conceptos básicos de programación
Estructuras básicas conceptos básicos de programación
 
Estructuras básicas conceptos básicos de programación
Estructuras básicas  conceptos básicos de programaciónEstructuras básicas  conceptos básicos de programación
Estructuras básicas conceptos básicos de programación
 
Introducción a la Programación en Javascript. Clase 1
Introducción a la Programación en Javascript. Clase 1Introducción a la Programación en Javascript. Clase 1
Introducción a la Programación en Javascript. Clase 1
 
00000
0000000000
00000
 
Tecnoooo00000000000
Tecnoooo00000000000Tecnoooo00000000000
Tecnoooo00000000000
 
Tecnología pseint (1)
Tecnología pseint (1)Tecnología pseint (1)
Tecnología pseint (1)
 
ALGORITMOS DE PROGRAMACION (1).pdf
ALGORITMOS DE PROGRAMACION (1).pdfALGORITMOS DE PROGRAMACION (1).pdf
ALGORITMOS DE PROGRAMACION (1).pdf
 
03 Intro Programacion C
03 Intro Programacion C03 Intro Programacion C
03 Intro Programacion C
 
Tema n° 1
Tema n° 1Tema n° 1
Tema n° 1
 
Guía de Algoritmo y Programación en C
Guía de Algoritmo y Programación en CGuía de Algoritmo y Programación en C
Guía de Algoritmo y Programación en C
 

Plus de Alex

Presentacion python final
Presentacion python finalPresentacion python final
Presentacion python finalAlex
 
The fisher assumptions and how to check them
The fisher assumptions and how to check themThe fisher assumptions and how to check them
The fisher assumptions and how to check themAlex
 
Randomization
RandomizationRandomization
RandomizationAlex
 
Gerencia De Proyectos
Gerencia De ProyectosGerencia De Proyectos
Gerencia De ProyectosAlex
 
Ejercicio 1 Programacion Lineal
Ejercicio 1 Programacion LinealEjercicio 1 Programacion Lineal
Ejercicio 1 Programacion LinealAlex
 
Programación Lineal
Programación LinealProgramación Lineal
Programación LinealAlex
 
Programación Lineal
Programación LinealProgramación Lineal
Programación LinealAlex
 
Programación Lineal
Programación LinealProgramación Lineal
Programación LinealAlex
 
Programación Lineal
Programación LinealProgramación Lineal
Programación LinealAlex
 

Plus de Alex (9)

Presentacion python final
Presentacion python finalPresentacion python final
Presentacion python final
 
The fisher assumptions and how to check them
The fisher assumptions and how to check themThe fisher assumptions and how to check them
The fisher assumptions and how to check them
 
Randomization
RandomizationRandomization
Randomization
 
Gerencia De Proyectos
Gerencia De ProyectosGerencia De Proyectos
Gerencia De Proyectos
 
Ejercicio 1 Programacion Lineal
Ejercicio 1 Programacion LinealEjercicio 1 Programacion Lineal
Ejercicio 1 Programacion Lineal
 
Programación Lineal
Programación LinealProgramación Lineal
Programación Lineal
 
Programación Lineal
Programación LinealProgramación Lineal
Programación Lineal
 
Programación Lineal
Programación LinealProgramación Lineal
Programación Lineal
 
Programación Lineal
Programación LinealProgramación Lineal
Programación Lineal
 

Dernier

Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)JuanStevenTrujilloCh
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armadob7fwtwtfxf
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024u20211198540
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointValerioIvanDePazLoja
 
Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nóminacuellosameidy
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDAVIDROBERTOGALLEGOS
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxhasbleidit
 
PROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y masPROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y maslida630411
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptxHugoGutierrez99
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdfBetianaJuarez1
 
Clasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxClasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxCarolina Bujaico
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 

Dernier (20)

Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armado
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power Point
 
Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nómina
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptx
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
 
PROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y masPROYECCIÓN DE VISTAS planos de vistas y mas
PROYECCIÓN DE VISTAS planos de vistas y mas
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
 
Clasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxClasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptx
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
El camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVPEl camino a convertirse en Microsoft MVP
El camino a convertirse en Microsoft MVP
 

Presentacion python final

  • 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.
  • 4. Establecer todas las posibles estrategias para resolver el problema.
  • 5.
  • 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.
  • 29.
  • 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.
  • 33.
  • 34.
  • 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

Notes de l'éditeur

  1. Example&gt;&gt;&gt; type(“32”)&lt;type ‘str’&gt;