Programación de alto nivel con python

Documentos relacionados
import math # Importa la libreria math, que permite utilizar operaciones y funciones matematicas

Tema 2 Introducción a la Programación en C.

Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;)

Introducción a la Computación (Matemática)

Introducción a Python. Cecilia Manzino

GLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo:

Tema: Estructuras de Selección en C#.

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL

R/ El programa se ejecuta de la siguiente manera: python lab9.1 (coeficientes del polinomio) (valor incial) Ej: python lab9.

Introducción a Python

Evolución del software y su situación actual

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

INTRODUCCIÓN A LA MATEMÁTICA DISCRETA PRÁCTICA 1

Mario A. Castresana Avendaño A41267 Grupo 01

1. Computadores y programación

Junio 16 de Junio 2015

Introducción rápida a la programación (estructurada ) con C++

Diferentes Perspectivas de un Ordenador

podría devolver como resultado una imagen en la que se mostraran las diferencias así:

Programación Orientada a Objetos Profr. Pedro Pablo Mayorga

Tareas de matrices especiales

Programación para Ingeniería Eléctrica

SISTEMAS INFORMÁTICOS PROGRAMACION I - Contenidos Analíticos Ing. Alejandro Guzmán M. TEMA 2. Diseño de Algoritmos

Retículos y Álgebras de Boole

Introducción. Algoritmos y Complejidad. Algoritmos y Algoritmia. Introducción. Problemas e instancias. Pablo R. Fillottrani

Estructuras de Control

TUTORIAL PSEINT. Ing. Ronald Rentería Ayquipa. Fundamentos de Programación

UNIVERSIDAD DE ESPECIALIDADES ESPÍRITU SANTO

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Departamento de Informática Universidad Técnica Federico Santa María. Tema 1: Algoritmos

Área: INFORMÁTICA. Saber- Saber: Identificar DFD como herramienta para escribir los algoritmos de forma lógica.

Programación (PRG) PRÁCTICA 10. Algoritmos de búsqueda

Problemas fáciles, difíciles e imposibles

Unidad III Análisis Léxico. M.C. Juan Carlos Olivares Rojas

Algoritmos. Definiciones básicas y componentes de un algoritmo. Contenido

Computadora y Sistema Operativo

Algoritmos y Lenguajes de Programación

Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo

2. Codificar de forma sistemática la secuencia de instrucciones en un lenguaje.

Java para no Programadores

Universidad de Costa Rica

Lenguaje C. República Bolivariana de Venezuela Fundación Misión Sucre Aldea Fray Pedro de Agreda Introducción a la Programación III

Introducción a la programación: Contenido. Introducción

Es un lenguaje estructurado, tiene una abundante cantidad de operadores y tipos de datos.

Algoritmos y Programas

Nombre de la asignatura: Diseño Estructurado de Algoritmos. Carrera: Ingeniería en Sistemas Computacionales. Clave de la asignatura: SCB-9316

INFOTECH MÓDULO 1 CURSO. Conocimientos esenciales de programación. Lógica y Lenguaje de Programación

! Una variable declarada con final no puede volver a ser reinicializada. numero = 2;! ! Para definir constantes

Tema 2. Concepto de Algoritmo

Constante: Una constante es un dato numérico o alfanumérico que no cambia durante la ejecución del programa.

ESTIMACIÓN DE TIEMPO Y COSTO DE PRODUCTOS SOFTWARE

El lenguaje de programación PHP Tipos de Datos. Semestre: A-2010

PROGRAMACIÓN EN PYTHON 2. Clara Higuera Laboratorio Integrado de Biofísica y Bioinformática Nov-2015

Metodología de Desarrollo de Programas

DESCRIPCIÓN ESPECÍFICA NÚCLEO: COMERCIO Y SERVICIOS SUBSECTOR: INFORMÁTICA

Guía práctica de estudio 05: Pseudocódigo

4. Operadores Operador asignación

Estructuras de Repetición (Hacer-Mientras)

UNIVERSIDAD DEL VALLE DE MÉXICO PROGRAMA DE ESTUDIO DE LICENCIATURA PRAXIS MES XXI

Algoritmos y solución de problemas. Fundamentos de Programación Otoño 2008 Mtro. Luis Eduardo Pérez Bernal

Universidad Central de Venezuela. Facultad de Ciencias. Escuela de Computación. Proyecto #1 (Simulación de caché)

Programación I: Matrices - Arreglos bidimensionales

23/09/2009. Introducción Hello word La familia Buendía Recursión Listas

Informática General 2016 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos

Introducción al Análisis Sintáctico

ALGORITMOS, ESTRUCTURAS Y PROGRAMACION

Programación de Ordenadores

Conceptos y definiciones básicos en computación

ANÁLISIS LÉXICO Ing. Ronald Rentería Ayquipa

El determinante de una matriz se escribe como. Para una matriz, el valor se calcula como:

Herramientas computacionales para la matemática MATLAB: Estructuras de control

Algoritmos y la Resolución de problemas

Guía práctica de estudio 05: Diagramas de flujo

Tema II: Metodología para la construcción de programas

Guía práctica de estudio 03: Algoritmos

Estructuras de Datos Declaraciones Tipos de Datos

como les va con las practicas?

LENGUAJE PHP Y CAKEPHP FRAMEWORK

Taller de programación shell

P1. Comandos básicos de Unix, editor de textos (joe) y procesos en C.

Evolución de la Programación Orientada a Objetos

Java Avanzado. Guía 1. Java Avanzado Facultad de Ingeniería. Escuela de computación.

Tema: Entorno a C# y Estructuras Secuenciales.

Curso de Java Introducción a la Programación I

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

Métodos numéricos para ingeniería Francisco Javier Delgado Cepeda

2.1 METODOLOGÍA PARA LA SOLUCIÓN DE PROBLEMAS

Tema: Análisis Léxico

INDICE Prologo Capitulo 1. Algoritmos y programas Capitulo 2. La resolución de los problemas con computadoras y las herramientas de programación

Fundamentos de Programación Visual Basic

Informe de Segunda Presentación

Programación en C. Algoritmo y Estructura de Datos. Ing. M. Laura López. Programación en C

Unidad I Introducción a la programación de Sistemas. M.C. Juan Carlos Olivares Rojas

Tema 7.- Fundamentos de la Programación Orientada a Objetos

Universidad Autónoma del Estado de México Facultad de Medicina

Solución de Ecuaciones Simultáneas por el Método de Matrices

Introducción. Universidad de Concepción, Chile Departamento de Geofísica Programación Científica con Software libre.

Elementos de un programa en C

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid.

Transcripción:

Programación de alto nivel con python Dr. Luis Gerardo de la Fraga E-mail: fraga@cs.cinvestav.mx http://cs.cinvestav.mx/~fraga Departamento de Computación Cinvestav 27 de septiembre, 2016 Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 1/63

Contenido 1. Por qué python? 2. Una breve introducción a Unix 3. Programando en python 4. Resolviendo problemas con python Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 2/63

Porqué aprender python? Es un lenguaje de alto nivel Es fácil construir programas rápidamente Es uno de los lenguajes más usandos Es el lenguaje sugerido para programar en RaspBerryPi Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 3/63

Lenguajes de alto nivel C es un lenguaje de nivel medio Los leguajes de alto nivel son interpretados No se definen tipos de datos Tienen una máquina de tiempo de ejecución (para uso de memoria con un recolector de basura) Se puede empotrar funciones en C dentro de Python si se necesita eficiencia. Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 4/63

Prototipado rápido Son ideales para realizar programas que procesan texto y generan texto Para generación dinámica de páginas WEB Si se tiene una idea, puede obtenerse un programa funcional en minutos u horas Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 5/63

Índice de Popularidad de los Lenguajes de Programación PYPL PopularitY of Programming Language index http://pypl.github.io/pypl.html Posición Cambio Lenguaje Porción Tendencia 1 Java 23.9 % -0.5 % 2 Python 12.8 % +2.1 % 3 PHP 10.5 % -0.8 % 4 C# 8.8 % -0.5 % 5 Javascript 7.7 % +0.6 % 6 C++ 7.2 % -0.4 % 7 C 7.1 % -0.1 % 8 C-Objectivo 4.7 % -0.6 % 9 R 3.1 % +0.5 % 10 Swift 3.0 % +0.4 % Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 6/63

PYPL PopularitY of Programming Language index https://sites.google.com/ site/pydatalog/pypl/pypl-popularity-of-programming-language Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 7/63

PYPL PopularitY of Programming Language index http://pypl.github.io/pypl.html Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 8/63

http://www.raspberrypi.org/ Se puede comprar en www.newark.com.mx Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 9/63

Python no lo recomendado para cómputo intensivo Comparacion de un programa intensivo en punto flotante en tres versiones, python, perl y C. $ time python chuabinx.py 0.1 1000 12 > secpy real 3m1.915s user 3m1.869s sys 0m0.048s $ time perl chuabinx.pl 0.1 1000 12 > secpl real 3m31.458s user 3m31.408s sys 0m0.050s $ time./chuabinx 0.1 1000 12 > secc real 0m0.982s user 0m0.968s sys 0m0.003s Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 10/63

Si se ejecutase 1000 veces el trabajo anterior: Python Perl C Tiempos de ejecucion 3 2" 3 31" 1" Veces más 182 211 1 Si fuesen 10^6 bits ^ ^ 10^6/10^3 = 10^3 1000" = 16 40" un poco más de 58 horas y media 50 horas y media Moraleja: No usar lenguajes interpretados en cómputo intensivo Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 11/63

Lenguaje Mapa caótico Tiempo (seg) C Corrimiento de Bernoulli 0.24 Mapa casa de campaña 0.40 Mapa Zigzag 0.48 Python Corrimiento de Bernoulli 7.68 Mapa casa de campaña 9.81 Mapa Zigzag 10.84 Matlab Corrimiento de Bernoulli 37.73 Mapa casa de campaña 38.7 Mapa Zigzag 38.55 Tiempos medidos por Esteban Torres en su trabajo de licenciatura Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 12/63

Una muy breve introducción a Unix Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 13/63

Algunos comandos básicos de Unix 1. ls lista el contenido del directorio 2. ls -l listado largo del contenido del directorio 3. mkdir nombre crea el directorio nombre 4. rmdir nombre borra el directorio nombre 5. cd nombre se cambia al directorio nombre 6. touch documento crea un archivo vacío llamado documento 7. mv documento doc1.txt cambia de nombre el archivo documento a doc1.txt 8. file doc1.txt identifica el archivo doc1.txt 9. rm doc1.txt borra el archivo doc1.txt Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 14/63

Hay que ser ordenados para trabajar Hay que crear siempre un espacio de trabajo, por ejemplo: cd mkdir CursoPython cd CursoPython ls -l nano hola.py Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 15/63

Mi primer programa en python print "Hola mundo!" El programa se ejecuta en la ĺınea de comandos como: $ python hola.py Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 16/63

Programando en python Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 17/63

Variables en python x = 123 # un entero x = 123L # un entero largo x = 3.14 # un real en doble precisión x = "hola" # una cadena x = [0,1,2] # una lista x = (0,1,2) # una tupla x = open( hello.py, r ) # un archivo Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 18/63

Sentencia if x = 4 if x < 5 : print "x es menor que cinco" else : print "x es mayor o igual que cinco" Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 19/63

Sentencia if x = 4 if x == 0 : print "x es igual a cero" elif x < 5 : print "x es menor que cinco" else : print "x es mayor que cinco" Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 20/63

# Una línea de comentarios comienza con un # a = 90 print a """ Varias líneas de comentarios Fraga 24/03/2014 """ Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 21/63

Ciclos Se puede usar la sentencia for, o también la sentencia while La sentencia for se usa para iterar en listas Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 22/63

# Un ejemplo de uso del while # i=0 while i<10 : print i i = i + 1 # coding: utf-8 # # El mismo programa anterior pero con # una modificación en el print : # i=0 while i<10 : print i, i = i + 1 Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 23/63

# Un ejemplo del uso del for # lista = [2,3,5,9] for i in lista : print i Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 24/63

El comando pydoc La ayuda sobre cualquier sentencia se puede obtener con el comando pydoc. Dar, por ejemplo, pydoc if en la ĺınea de comandos. Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 25/63

Se pueden definir funciones (1/2): def suma(a, b) : return( a+b ) r = suma( 5, 6) print "5 + 6 =", r Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 26/63

Se pueden definir funciones (2/2): def f(x) : return( x*x ) i=0 while i<20 : y = f(i) print i, y i = i+1 Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 27/63

Las funciones matemáticas se encuentran en el módulo math: import math angulo = math.pi/2 print math.degrees(angulo), math.sin(angulo), \ math.cos(angulo) Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 28/63

El módulo numpy nos permite definir matrices: # coding: utf-8 import numpy A = numpy.zeros((3,2)) # ndim es el número de dimensiones # size es el número total de elementos # shape mxn print A.ndim, A.size, A.shape i=0 while i<3 : j=0 while j<2 : print A[i,j], j = j+1 print i = i+1 Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 29/63

Debe definirse desde el principio del tamaño de la matriz, o usar sus métodos asociados resize, reshape, por ejemplo. import numpy as np a = np.ones((3,3)) print a a.resize( (3,4 ) ) print a Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 30/63

Guardando datos en un archivo: def f(x) : return( x*x ) arch = open( "salida.txt", w ) i=0 while i<20 : y = f(i) arch.write( "{} {}\n".format(i, y) ) i = i+1 arch.close() Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 31/63

Argumentos en la ĺınea de comandos: # coding: utf-8 import sys n = len(sys.argv) print n if n!= 3 : print "Args: número1 número2" sys.exit(1) print sys.argv[1], sys.argv[2] Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 32/63

Excepciones: # coding: utf-8 import sys n = len(sys.argv) if n!= 2 : print "Args: nombre_archivo" sys.exit(1) nombre = sys.argv[1] try: arch = open( nombre, r ) except IOError: print "No pude abrir el archivo", nombre sys.exit(2) for linea in arch : print linea arch.close() Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 33/63

Para separar los tokens de una cadena: # coding: utf-8 a = "Esta es una prueba de una línea de texto" b = a.split() for palabra in b: print palabra c = b[3] print "Otro: ", c n = len(b) i=0 while i<n : print b[i] i = i+1 Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 34/63

Para leer un archivo de texto con comentarios: # coding: utf-8 # # El módulo de expresiones regulares en python: import re # Este es un comentario, en una línea a = "# El comienzo de una línea!" if re.match( "^\s*#", a )!= None : print a Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 35/63

Separacion del código en varios archivos: Archivo operaciones.py def suma( a, b ) : return( a+b ) def resta( a, b ) : return( a-b ) def multiplicacion( a, b ) : return( a*b ) # coding: utf-8 import operaciones import sys n = len( sys.argv ) if n!= 3 : print "Args: numero1 numero2" sys.exit(1) try: n1 = float( sys.argv[1] ) except ValueError: print "El primer argumento no es un número" sys.exit(2) try: n2 = float( sys.argv[2] ) except ValueError: print "El segundo argumento no es un número sys.exit(3) r1 = operaciones.suma( n1, n2 ) r2 = operaciones.resta( n1, n2 ) r3 = operaciones.multiplicacion( n1, n2 ) print r1, r2, r3 Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 36/63

De: https://docs.python.org/2/tutorial/classes.html# odds-and-ends Cuando se necesita una estructura ( struct ) como en C, para agrupar y proteger las variables en todo un programa, se puede utilizar en python la definición de una clase vacía. Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 37/63

class Cuadrado: pass def procesa( pd, vx, vy ) : pd.x = vx pd.y = vy def imprime( pd ) : print pd.x, pd.y Datos = Cuadrado() imprime( Datos ) Datos.x = 40 Datos.y = 20 imprime( Datos ) procesa( Datos, 1, 2 ) imprime( Datos ) Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 38/63

Objetos # coding: utf-8 class Empleado : pass listatodos = [] Juan = Empleado() Juan.nombre = "Juan Pérez" Juan.salario = 1000 listatodos.append(juan) Maria = Empleado() Maria.nombre = "María Hernández" Maria.salario = 1100 listatodos.append(maria) for obj in listatodos : print type(obj), obj.nombre, obj.salario print "Ok!" Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 39/63

Diferencia entre variables de la clase y del objeto class Cuadrado: p=0 def init ( self ) : self.p = [0.0, 0.0] def imprime( self ) : print Cuadrado.p, self.p c1 = Cuadrado() c2 = Cuadrado() c1.p[0] = 12 c2.p[1] = 24 c1.imprime( ) c2.imprime( ) Cuadrado.p = 221 c1.imprime( ) c2.imprime( ) Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 40/63

Otro ejemplo con objetos class punto2d : def init ( self, x, y ) : self.x = x self.y = y def add ( self, other ) : return( punto2d( self.x + other.x, self.y + other.y) ) def myprint( self ) : print self.x, self.y p1 = punto2d( 1.0, 0.0 ) print type(p1) p1.myprint( ) p2 = punto2d( 5.0, 4.0 ) p2.myprint( ) p3 = p1 + p2 print type(p3) p3.myprint( ) Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 41/63

De: https://docs.python.org/2/tutorial/classes.html# random-remarks Atributos de datos sobreescriben los atributos de métodos con el mismo nombre, para evitar conflictos accidentales en los nombres, que pueden causar bugs difíciles de encontrar en programas grandes, se debe usar alguna convención en los nombres. Un posible convención podría ser nombrar los métodos con la primera letra en mayúscula, y los datos con un prefijo (tal vez, el guión bajo). Otra convención podría ser usar verbos para los métodos y nombres para datos. Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 42/63

Resolviendo problemas con la computadora Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 43/63

Fases del desarrollo de software: 0. Entender el problema. 1. Análisis del problema y especificaciones. 2. Diseño del sistema. 3. Codificación e integración. 4. Verificación y validación. 5. Mantenimiento del sistema. Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 44/63

Algoritmo Es un procedimiento que se ejecuta en una computadora, y este procedimiento está compuesto por instrucciones que realizan: 1. Las entradas y salidas del algoritmo. 2. No debe ser ambiguas, de manera que es claro lo que cada instrucción representa cuando se ejecuta. 3. Deben ser simples para que puedan ser llevados a cabo por una computadora. 4. Deben de ser finitas, esto es, el algoritmo debe terminar después de un número finito de operaciones. Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 45/63

Pseudocódigo Es la representación de un algoritmo usando palabras comunes y álgebra. Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 46/63

Los algoritmos se diseñan usando tres estructuras de control básicas: 1. Secuencia: Los pasos son realizados de una manera estrictamente secuencial, cada paso siendo ejecutado exactamente una vez. 2. Selección: Una de varias acciones alternativas es seleccionada y ejecutada. 3. Uno o más pasos se realizan repetidamente. Estas tres mecanismos de control son muy simples individualmente pero, de hecho, la construcción de cualquier algoritmo con estas estructuras fue demostrado por Bohn y Jacopini en 1966 1. 1 C. Bohn and G. Jacopini, Flow Diagrams, Turing Machines, and Languages with Only Two Formation Rules, Communications of the ACM, Vol. 9, No. 5, Mayo 1966, pp. 336-371. Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 47/63

Problemas Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 48/63

Problema 1: Resolver una ecuación lineal (1/2) 1. Qué es una ecuación lineal? Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 49/63

Problema 1: Resolver una ecuación lineal (1/2) 1. Qué es una ecuación lineal? 2. Qué significa resolver una ecuación? Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 49/63

Problema 1: Resolver una ecuación lineal (1/2) 1. Qué es una ecuación lineal? 2. Qué significa resolver una ecuación? 3. Si ya entendemos los dos puntos anteriores podemos establecer el pseudocódigo para resolver el problema. Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 49/63

Problema 1: Resolver una ecuación lineal (2/2) 1. La entrada de los valores para las incógnitas será en la ĺınea de comandos 2. La ecuación de la ĺınea: y = mx + b 3. La resolvemos mx + b = 0, x = b m 4. Imprimimos el valor de x para el cual y será igual a cero. Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 50/63

La solución: # coding: utf-8 import sys # Los valores de m y b por la línea de comandos if len( sys.argv )!= 3 : print "Args: m b" sys.exit(1) m = float(sys.argv[1]) b = float(sys.argv[2]) x = -b/m print x Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 51/63

Problema 2: Solución a una ecuación cuadrática 1. La ecuación cuadrática ax 2 + bx + c = 0, Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 52/63

Problema 2: Solución a una ecuación cuadrática 1. La ecuación cuadrática ax 2 + bx + c = 0, 2. tiene las soluciones x = b± b 2 4ac 2a Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 52/63

Problema 3: Guardar datos en un archivo Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 53/63

Problema 4: Leer datos de un archivo Se tiene un archivo con datos Se tiene que crear un programa que maneje esos datos como una hoja de cálculo Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 54/63

Problema 5: El problema de n damas en el tablero de ajedrez 8 QZ0Z0Z0L 7 Z0Z0Z0Z0 6 0Z0Z0Z0Z 5 Z0ZQZ0Z0 4 0Z0Z0Z0Z 3 Z0Z0Z0Z0 2 0Z0Z0Z0Z 1 L0Z0Z0Z0 a b c d e f g h Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 55/63

Vamos a crear una solución al problema analizando todas las posibilidades Esta solución se conoce como de fuerza bruta Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 56/63

Una posición a evaluar: 8 QLQLQLQL 7 Z0Z0Z0Z0 6 0Z0Z0Z0Z 5 Z0Z0Z0Z0 4 0Z0Z0Z0Z 3 Z0Z0Z0Z0 2 0Z0Z0Z0Z 1 Z0Z0Z0Z0 a b c d e f g h Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 57/63

1. Para todas las posiciones posibles: 1.1 Si la posición no presenta un jaque entre damas, se imprime la posición Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 58/63

1. posicion=0 # para contar el número de posiciones válidas 2. Para todas las posiciones posibles: 2.1 Si la posición no presenta un jaque entre damas, 2.1.1 posicion = posicion + 1 2.1.2 se imprime la posición, que es la número posicion 3. El número de posiciones es posicion Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 59/63

Problema 6: Generación de números aleatorios (1/2) 0.02 0.018 0.016 0.014 0.012 0.01 0.008 0.006 0.004 0.002 0 40 60 80 100 120 140 160 ( Gráfica de la función f (x) = 1 σ exp 2π para µ = 100 y σ = 20 ), (x µ)2 2σ 2 Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 60/63

Problema 6: Generación de números aleatorios (2/2) # coding: utf-8 import random import sys if len(sys.argv)!= 2 : print "Args: número" sys.exit(1) veces = int(float(sys.argv[1])) media = 100 sigma = 20 indice0 = media-3*sigma indice1 = media+3*sigma print "# ", indice0, indice1 amplitud = indice1-indice0 + 1 varreglo = [0]*amplitud i=0 while i<veces : n = random.gauss(media, sigma) v = int(n+0.5) - indice0 if v>=0 and v<amplitud : varreglo[v] += 1 i += 1 i=0 while i<amplitud : v = i + indice0 norma = float(varreglo[i])/veces # print v, varreglo[i] print v, norma i += 1 Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 61/63

0.025 0.02 0.015 0.01 0.005 0 40 60 80 100 120 140 160 Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 62/63

Problema 7: Animación de gráficas usando gnuplot Dr. Luis Gerardo de la Fraga CCE 2016, Cinvestav Programación de alto nivel con python 63/63