U8 Repetición controlada por expresión lógica y cadenas 1 Flexibilidad.

Slides:



Advertisements
Presentaciones similares
Capítulo 2 Algoritmos.
Advertisements

ESTRUCTURAS DE CONTROL
Estrella 0 - Fundamentos de la Programación
Lenguaje PHP Capítulo 4.
Pippy (Python para niños)‏ 1.
Fundamentos de Programación I Agradecimientos al Ing. Namuel Solórzano Peralta por el contenido de esta presentación.
Te presento a Python Qué es Python? Lenguaje interpretado
Metodología de la Programación
Estructuras de Control
Desarrollo de Aplicaciones para Internet
Concepto de programa. Directorio Concepto de programa. Analisis del problema. Resolucion del problema. Desarroollo de un programa. Partes constitutivas.
Tema 2: Lenguaje PHP básico
Módulo 5: Estructuras de Decisión y Bucles
1.2 Sintaxis del lenguaje Java.
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Fundamentos de Programación
Tema 4: Sentencias de control
ESTRUCTURAS DE CONTROL
Semana 5 Subprogramas..
Programación en Matlab
Matrices Es una estructura homogénea, compuesta por varios elementos, todos del mismo tipo y almacenados consecutivamente en memoria A cada elemento se.
FUNDAMENTOS DE PROGRAMACIÓN
Tema 1: Lenguaje PHP básico Ing. Tulio Nel Benavides Peña
Algoritmos.
Pulse para añadir texto Desarrollo de sitios web con PHP y MySQL Tema 2: Lenguaje PHP básico Elaborado por: José Mariano González Romano
Capítulo 2 – Estructuras de Control
PHP TODO SOBRE PHP.
Programación en Pascal
Sesión 5 Sentencias de Selección y repetición Prof:Eridan Otto Programación de Computadores Lenguaje Pascal.
Introducción al lenguaje de programación SLE 2
Arreglos: Controles e Indicadores
1002 JM while not detener: adivina = int(raw_input('Ingrese un entero : ')) if adivina == numero: print 'Felicitaciones, haz adivinado!.' detener = True.
Ciclos (Loops, Repeticiones) Permiten ejecutar una secuencia de sentencias mas de una vez. Hay 2 tipos de loops:  WHILE repite la acción un número indefinido.
El Lenguaje C++. Creación de programas simples de C++ Builder como ejercicios en C++. Los elementos de control fundamentales en C++, incluyendo operadores.
Teoría – Alejandro Gonzalez
Figure: Algoritmos Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.
VBA – Elementos del Lenguaje
FILTROS. Un filtro es un programa que recibe una entrada, la procesa y devuelve una salida. Relacionando filtros simples podemos hacer prácticamente cualquier.
Estructuras de Control.
EI, Profesor Ramón Castro Liceaga Agosto de 2005 UNIVERSIDAD LATINA (UNILA) PROGRAMACION ORIENTADA A OBJETOS EN JAVA (Optativa) ESTRUCTURA DEL LENGUAJE.
IDENTIFICADORES Un identificador es un "nombre" que nos permite dirigirnos específicamente a una de las entidades propias del lenguaje, es decir, son los.
Objetivo Mostrar los fundamentos de la programación a través de ejemplos y prácticas utilizadas cotidianamente en el desarrollo de aplicaciones.
Sesión 14: Python (5) – Aplicaciones. 2009/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Circuitos Digitales III 2010/1 Informática.
ELEMENTOS DE COMPUTACIÓN Profesor: Guillermo Figueroa
UNIVERSIDAD TECNICA PERTICULAR DE LOJA

Otrogar el prestamo si El pedido es menor que 100 Para importes mayores de 100 se necesita que el cliente sea mayor de 18 y tenga trabajo Para importes.
“variables , sentencia if y bucles”
Fundamentos de Programación
Práctica Profesional PHP.
Estructuras de Decisión
Algoritmo.
CICLOS EN C – PARTE 3.
int cantidad, horas, cuota; float precio, peso; cantidad = 5; // Le asigno un número a la variable Cantidad; horas = // Le asigno 30 a la variable.
Elementos básicos.  Fuertemente tipeado.  Sintaxis similar a C/C++.  Sin punteros: garbage collection.  Portable.  Integra librerías para objetos.
PROGRAMACIÓN Grupo de Modelamiento de Sistemas
LENGUAJE DE PROGRAMACIÓN
U6 Ejercicios ¡¡¡¡PREPARANDO LA PEC1!!!!. ERRORES FRECUENTES EN test de 8/10/2015 Nombre de la función no muy bueno : debe ser ImprimeNombreMes o ImprimeMesEnLetra.
U11: Recursividad Otra manera de hacer bucles Dicen algunos pedagogos que conceptualmente mas sencilla.
Resolución de problemas con Python
U2 Tipos de datos, referenciación y errores 1. Datos problema simple enteroreal carácter booleano Ingeniero = Oreja+catalejo modelo ordenador solución.
U3 Subprogramación 1 Probablemente el tema mas importante del curso ¡¡¡A por el reuso!!!
U9 Estructuras: Agrupación de elementos de distinto tipo 1 Barajar complejidad.
U10 ¡¡¡¡YA TENEMOS TODOS LOS RECURSOS!!!! ¡¡A JUGAR!!
U5 tipos de datos secuencias y bucle definido 1 ¡¡¡¡Abstracción!!!!
PROGRAMACION DE APLICACIONES EN MEMORIA DEL COMPUTADOR = ALGORITMOS Y ESTRUCTURAS DE DATOS.
Tema 8: Programación estructurada Introducción La importancia del conocimiento de programación es mucho mayor de lo que se piensa. Aprender a programar.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Paso de parámetros Diseño de programas iterativos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 7 Versión.
Transcripción de la presentación:

U8 Repetición controlada por expresión lógica y cadenas 1 Flexibilidad

Datos problema simple enteroreal carácter booleano Ingeniero = Oreja+catalejo modelo ordenador solución asignación/ referencia Llamada procedimiento while for Do while if c: bloque1 [ else: bloque2] n bucles 0 o 1 alternativas 1 o n 0 o n iterativo n conocido recursivo n desconocido case gestión excepciones Subprogramación procedimiento barajar complejidad Proceso hacer función 2 Disponible en todos los lenguajes Frecuente en otros lenguajes y no disponible en Python Disponible en Python, no frecuente en otros lenguajes compuesto arreglo Lista/tupla Estructura tuplaNombre /record/clase fichero cadena 1 secuencias

Repetición controlada por expresión lógica Sintaxis : while expresion_booleana: cuerpo n = 10 while n<=10: print (n) n = n-1 (1674) Gregory algoritmo: la raíz cuadrada de un número n>=0, mientras ABS(aprox-nuevaAprox) >=precision nuevaAprox=(aprox+n/aprox)/2 ab Integral de x2, entre 1 y 2, paso= 0,01 Problema? Estudio de la convergencia: Casos posibles vieja>r; vieja<r; vieja=r Ojo comparación de floats r

4 raizNewtonRapson.py 1 """probador del cálculo de la raiz cuadrada de n iterativo """ 2 3 def sqrtNR(n, precision): 4 """ num,float-->float 5 OBJ: raiz cuadrada de n, con precisión >= precision 6 PRE: n>0, 0<precision<=n """ 7 aprox = n/2.0 #me vale cualquier positivo 8 cambio = n # como mínimo su propio valor 9 while cambio>=precision: 10 nAprox = (aprox+n/aprox)/ cambio = abs(aprox-nAprox) 12 aprox = nAprox 13 print( 'traza', aprox) #trazador. Quitar 14 return aprox print('raiz =', sqrtNR(9,0.1)) traza 3.25 traza traza raíz =

5 integralX2_v1.py 1 """ Probador de integral X2 entre a y b """ 2 3 def integralX2(a,b,inc): 4 """ float,float,float  float 5 OBJ: integral definida entre a y b, en inc incrementos: 6 método de los rectángulos 7 PRE: a<=b, 0<inc<= b-a """ 8 i = 0 # acumulador de integral 9 x = a # valor de la abcisa 10 while x!=< b: 11 i = i+x*x*inc # acumula el área de un rectángulo 12 x = x+inc 13 print(x, i) 14 return i print(integralX2(1.0,2.0,0.1))

Esquemas de programación Bucle con condición múltiple y discriminación a la salida Pos de primera aparición de elemento en una lista (si es que está) El esquema centinela 6

Bucles (1- n) OpciónCódigo ejemplo (en bucle1_n.py) #1 repetir cuerpo del bucle e= input('Introduce inicial de nombre de estación del año: ') while e.lower() not in ('p', 'v', 'o','i'): e = input('Introduce inicial de nombre de estación del año: ') #2 Sub- programar cuerpo del bucle def estacionPedida (): e = input('Introduce inicial de nombre de estación del año: ') error = e.lower() not in ('p', 'v', 'o','i') if error: print( e, 'no es el nombre de una estación del año') print('vuelve a intentarlo.') return error,e error,e = estacionPedida () while error: error,e = estacionPedida () print('hecho') #3 forzado artificial de entrada pedir = True while pedir: e = input('Introduce inicial de nombre de estación del año: ') pedir = e.lower() not in ('p', 'v', 'o','i') if pedir: print( e, 'no es el nombre de una estación del año') print('vuelve a intentarlo.') print('hecho') 7 Cuerpo 1 vez Cuerpo 0-n def subprograma Pedir mejor que error

Bucles (1- n) 8 condicion= False while True: if condicion: break print('hacer lo que sea') condicion = True print('me sali') condicion= False while not condicion: print('hacer lo que sea') condicion = True print('me sali') DA TERROR Y era INNECESARIO

Esquema pedir datos al usuario 9 def esCosa (cosa): """tipo de cosa --> booleano OBJ: True si es "cosa" valida """ return cosa cumple condicionParaSerCosa? def cosaPedida (): #restricciones si las hay + msg solicitud """str --> tipo de cosa OBJ: pide cosa hasta que cumpla restricciones del mundo real""" cosa = noEsCosa while not esCosa(cosa): cosa = input('dame una cosa:') return cosa lectivos=('lunes','martes','miércoles','jueves','viernes') def esLectivo(dia): """str-->bool OBJ: True si dia es lectivo PRE: lectivos definido """ return dia in lectivos def lectivoPedido(msg): """str-->str OBJ: solicita al usuario dia hasta que sea un lectivo """ dia='' while not esLectivo(dia): dia=input(msg) return dia print(lectivoPedido('¿que lectivo?: ')) Cosa= DNI Contraseña Fecha Color Hora Entero,…. Si esCosa es simple se puede no subprogramar Si esCosa es trivial no subprogramar

Esquema pedir datos al usuario 10 def enteroPedido (min,max, msg): """ int,int, str,str-->int OBJ: pide entero a usuario, entre min y max, mostrando msg PRE: min<=max """ pedir = True while pedir or not (min<=n<=max): try: n = int(input(msg)) pedir = False except:print('debe ser un entero. ', end='') return n Pedir un entero es tan genérico que no he querido poner un número no válido. min-1 o max+1 valdrían (podría desbordar)

Esquema menú 11 Desarrolla la aplicación de combinatoria que ofrece un menú en el que el usuario selecciona la operación a ejecutar. Le pide los datos que necesite y le muestra el resultado. La interfaz de usuario deseada es: COMBINATORIA ============== 1.-Variaciones 2.-Combinaciones 3.-Permutaciones 4.- Salir Teclee la opción elegida: __ Recordatorio: V(m,n)=m!/(m-n)!; P(n)=n!; C(m,n)=V(m,n)/P(n); n,m>=0. combinatoria variaciones pintaMenu salida CentrarRotulo enteroPedido combinaciones permutaciones factorial

Combinatoria 12 pintaMenu() opcion = enteroPedido(1,4,'') if opcion==1: m = enteroPedido(1,20,'elementos totales: ','') n = enteroPedido(1,m,'elementos a agrupar: ','') print('variaciones',m,'de', n,'=', libMat.variaciones(m,n)) elif opcion==2: m = enteroPedido(1,20,'elementos totales: ','') n = enteroPedido(1,m,'elementos a agrupar: ','') print('combinaciones',m,'de', n,'=', libMat.combinaciones(m,n)) elif opcion==3: m = enteroPedido(1,20,'elementos totales: ','') print('permutaciones', m,'=',libMat.permutaciones(m)) elif print('cerrando la aplicación') Un condicional está diseñado para hacer cosas distintas en cada pata… sacad factor común

Cadenas: Creación general, vacía, unitaria Acceso a elementos: a[0..n-1]; hacia atrás a[-n..-1]; aborto i>=n, operador slice Operaciones: concatenar; is, comparación, in Funciones: len, min, max Métodos: s.index(x,[i,j]), s.count(x) help(str) 13 MétodoDevuelve una… s.upper()copia de s con todas las letras en mayúsculas s.lower()copia de s con todas las letras en minúsculas s.replace(old, new[, count]) copia de s con las count ocurrencias primeras de old sustituidas por new. Todas si no especificado s.strip([chars=˽])copia de s eliminados los caracteres char de cabecera y cola. Por defecto, espacio blanco ‘˽’ s.swapcase()copia de s intercambiando minúsculas y mayúsculas s.title()copia de s con primera letra de cada palabra en mayúscula y resto en minúscula s.rsplit(sep=None)lista de palabras en s, considerando sep como separador común a tulas, listas

U6 NumPy para implementar array en Python Además de tuplas, listas ¿por qué? Interpretado/compilado 14

U9 Estructuras: Agrupación de elementos de distinto tipo 15 Barajar complejidad

Datos problema simple enteroreal carácter booleano Ingeniero = Oreja+catalejo modelo ordenador solución asignación/ referencia Llamada procedimiento while for Do while if c: bloque1 [ else: bloque2] n bucles 0 o 1 alternativas 1 o n 0 o n iterativo n conocido recursivo n desconocido case gestión excepciones Subprogramación procedimiento barajar complejidad Proceso hacer función 16 Disponible en todos los lenguajes Frecuente en otros lenguajes y no disponible en Python Disponible en Python, no frecuente en otros lenguajes compuesto arreglo Lista/tupla Estructura tuplaNombre /record/clase fichero cadena 1 secuencias

STRUCT/STRUCTURE/RECORD Elementos todos del mismo tipo  acceso por orden: ARRAY ¿sin orden?  acceso por nombre: Tipos definidos por el usuario: Constructores de tipo. Listas y tuplas son tipos en Python. Pero ahora tengo que dar nombres. Necesito un constructor Alternativas en Python  namedTuple, la clase Record, “clases pobres” Nuestro interés diseño de la solución más que la forma de implementación en un lenguaje concreto 17

NamedTuples from collections import namedtuple La sintaxis de la declaración: nombreDelTipo= namedtuple(externo, [campo 1,…,campo n ]) Ejemplo: tPunto = namedtuple('Punto',['x','y']) Creación objeto y acceso a elementos : namedtuple especialización de tipo tupla ( vale todo lo que hacía con tuplas ) Convenio: Tipos creados x programador empiezan por t: tFecha, tAlumno 18 >>> p1 = tPunto(2.0,3.0) >>> p1.x #acceso notación punto 2.0 >>>p1[1] #acceso por posición 3.0

Recorrido de los elementos Modificación de elementos : Los elementos pueden ser de cualquier tipo 19 >>> p = tPunto(11.0,22.0) >>> p = tPunto(p.x,33.0) #mantengo el valor de x, cambio el de y >>> p Punto(x=11.0, y=33.0) >>>p = tPunto(33.0,44.0) >>>p = p._replace(x=2.0,y=3.0) # devuelve copia con valores cambiados >>>p Punto(x=2.0, y=3.0) NamedTuples for coordenada in p: print(coordenada) tSegmento = namedtuple('Segmento','pIni, pFin')

20 Haz un subprograma que calcule la distancia entre dos puntos. Calcula con el tamaño de un segmento pasándole los puntos que lo definen. En el lenguaje ordinario hablamos del tamaño de un segmento, no de la distancia entre sus extremos. Haz un subprograma que calcule el tamaño de un segmento. Apoyándote en el módulo punto, haz un programa que aproxime Π por el m étodo de Montecarlo, areaArco=Πr 2 /4 areaCuadrado=r*r puntos dentro/puntos totales= Πr2/4r2 ; despejando Π=4 *puntos dentro/puntos totales Incluye en el módulo punto una función que calcule si un punto (x,y) está inscrito en una circunferencia de radio r, con centro en el eje de coordenadas. Pista: teorema de Pitágoras. def puntoAleatorio(): """ nada --> tPunto OBJ: crea un punto aleatorio 0<=x,y<=1 """ from random import random x = random() y = random() return tPunto(x,y)

21