clase6(repasoresumen)

Upload: santiago-londono-garzon

Post on 02-Jun-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/10/2019 Clase6(RepasoResumen)

    1/18

    Repaso/resumen

    1. lectura/escritura y asignacin

    2. funciones3. seleccin de instrucciones (instruccin if)

    4. repeticin de instrucciones (instruccin while)

    5. recursin

  • 8/10/2019 Clase6(RepasoResumen)

    2/18

    Lectura/escritura y asignacinProblema. Calcular el rea y permetro de la figura:

    print Crculo y cuadrado inscrito

    r=input(radio?)

    a=r*1.41 #lado cuadrado

    printpermetro=,2*3.14*r+4*a

    printrea=,3.14*r*r-a*a

    Nota. Programa lineal o secuencial

    (instrucciones se ejecutan en orden de aparicin)

  • 8/10/2019 Clase6(RepasoResumen)

    3/18

    %: operador de resto de divisin

    #invertir entero de 3 dgitos

    n=input(N 3 dgitos?)

    d1=n/100; d3=n%10

    d2=n%100/10 #d2=n/10%10

    printinverso=,100*d3+10*d2+d1#cajero automtico

    d=input(Cunto dinero necesita?)

    print d/20000,de $20.000; d=d%20000

    print d/10000,de $10.000; d=d%10000print d/5000,de $5.000); d=d%5000

    print d/2000,de $2.000); d=d%2000

    print d/1000,de $1.000)

  • 8/10/2019 Clase6(RepasoResumen)

    4/18

    Funciones predefinidas

    import math #incluye funciones/constantes matemtic

    print tringulo:lados a,b,y angulo alfa

    #obtener datos

    a=input(a ? )

    b=input(b ? )

    alfa=input(alfa? )*math.pi/180

    #calcular tercer lado

    c=math.sqrt(math.pow(a*math.sin(alfa),2) + \

    math.pow(b-a*math.cos(alfa),2))

    #calcular y mostrar perimetro y area

    printPermetro=,a+b+c

    s=(a+b+c)/2 #semi-perimetro

    print Area=,math.sqrt(s*(s-a)*(s-b)*(s-c)))

  • 8/10/2019 Clase6(RepasoResumen)

    5/18

    Funciones definidas por el programador

    #convertir fecha ddmmaaaa a la forma aaaammdddef aaaammdd(x):

    dd=x/1000000; mm=x/10000%100; aaaa=x%10000

    return aaaa*10000 + mm*100 + dd

    #convertir fecha aaaammdd a la forma ddmmaaaa

    def ddmmaaaa(x):

    dd=x%100; mm=x%10000/100; aaaa=x/10000

    return dd*1000000 + mm*10000 + aaaa

    #seleccionar mayor entre dos fechas

    f1=input(fecha1(ddmmaaaa)?)f2=input(fecha2(ddmmaaaa)?)

    printmayor=,ddmmaaaa(max(aaaammdd(f1),aaaammdd(f2)))

  • 8/10/2019 Clase6(RepasoResumen)

    6/18

    Seleccin de instrucciones: Instruccin ifimport random

    n=random.randint(1,3)#n al azar entre 1 y 3

    if n==1:

    printpiedraelif n==2:

    print papel

    else:

    print tijeras

    Sintaxis Semnticaif cond1:

    insts1 cond1 insts1

    elif cond2: F T

    insts2 cond2 insts2 . . . F T

    ...

    else: F

    insts insts

  • 8/10/2019 Clase6(RepasoResumen)

    7/18

    Instruccin if

    print resolver ecuacin axx+bx+c=0

    a=input(a?); b=input(b?); c=input(c?)

    print resultado:,

    ifa==0 and b==0:

    print indefinido

    elifa==0:

    printx=,-c/belse:

    d=b**2-4*a*c

    ifd==0:

    print x=,-b/(2*a)

    elifd>0

    raiz=math.sqrt(d)

    print x=,(-b+raiz)/(2*a),(-b-raiz)/(2*a)

    else:

    print raices complejas

  • 8/10/2019 Clase6(RepasoResumen)

    8/18

    def diasMes(m,a):

    ifm==1 or m==3 or m==5 or m==7 \#continuaor m==8 or m==10 or m==12:

    return 31

    elifm==4 or m==6 or m==9 or m==11:

    return 30

    elifm==2:

    ifbisiesto(a):return 29

    else:return 28

    else:

    return 0 #mes incorrecto

  • 8/10/2019 Clase6(RepasoResumen)

    9/18

    Funciones de tipo boolean

    defbisiesto(x):

    if x%400==0: #si es divisible por 400?

    return True # es bisiesto

    elif x%100==0: #si es divisible por 100

    return False # no es bisiesto

    elif x%4==0: #si es divisible por 4

    return True # es bisiestoelse: #sino

    return False # no es bisiesto

    defbisiesto(x):

    return x%400==0 or x%100!=0 and x%4==0

    defbisiesto(x):

    return x%4==0 and x%100!=0 or x%400==0

  • 8/10/2019 Clase6(RepasoResumen)

    10/18

    Seleccin de instrucciones: Instruccin while#cuenta regresiva desde 10

    n=10

    while n>0:

    print n

    n=n-1

    print fuera

    Sintaxis

    while condicin:instrucciones

    Semntica

    Mientras condicin se cumpla (sea True) ejecutar instruccin(es)

    condicinTrue

    instrucciones

    False

  • 8/10/2019 Clase6(RepasoResumen)

    11/18

    Instruccin while#tabla celsius - fahrenheit

    g=-20

    while g

  • 8/10/2019 Clase6(RepasoResumen)

    12/18

    Patrones (esquemas) para proceso de listas

    #inicializar #inicializarmayor=0; mayor=0;

    #leer 1 #repetir siempre

    n=input(n?) while True:

    #repetir mientras #leer

    whilen!=0: n=input(n?)

    #procesar #condicin de trmino

    if n>mayor: mayor=n if n==0:break

    #leer sgte #procesar

    n=input(n?) mayor=max(mayor,n)

    #finalizar #finalizar

    printmayor=,mayor print mayor=,mayor

  • 8/10/2019 Clase6(RepasoResumen)

    13/18

    Funciones con whiledef digitos(x):

    nd=1

    whileabs(x)>=10

    nd=nd+1

    x=x/10 #eliminar ltimo dgitoreturn nd

    #numero con ms digitos

    masLargo=0

    n=input(n)

    whilen!=0: #equivale a while n

    if digitos(n)>digitos(masLargo): masLargo=n

    n=input(n)

    print n de ms dgitos =,masLargo

    #numero con ms digitosmasLargo=0

    whileTrue:

    n=input(n)

    if n==0: break

    if digitos(n)>digitos(masLargo): masLargo=n

    print n de ms dgitos =,masLargo

  • 8/10/2019 Clase6(RepasoResumen)

    14/18

    Funciones con whiledefprimo(x):

    n=2

    whilen

  • 8/10/2019 Clase6(RepasoResumen)

    15/18

    Solucin 2. probando slo con imparesdefprimo(x):

    if x==2: return True #2 es primo

    if x%2==0: return False #otro par no es primoi=3

    while i tambin hay

  • 8/10/2019 Clase6(RepasoResumen)

    16/18

    Funciones recursivas

    def factorial(x):if x==0:

    return 1 #caso baseelse:return x*factorial(x-1) #recursin

    def digitos(x):if x

  • 8/10/2019 Clase6(RepasoResumen)

    17/18

    Funciones Recursivas

    #suma(x,y): x + (x+1) + + y

    def suma(x,y):

    if x>y: return 0return x + suma(x+1,y)

    #suma(x,y): x + (x+1) + + y

    def suma(x,y):

    if x>y: return 0

    return suma(x,y-1) + y

    #nmeros de fibonacci: 0,1,1,2,3,5,8,13,21,

    def fibonacci(i): #i-simo n de fibonacci

    if i

  • 8/10/2019 Clase6(RepasoResumen)

    18/18

    procedimientos (no devuelven resultado) recursivos

    defmisterio():

    n=input(n?)

    if n==0: returnmisterio()

    print n

    Qu hace misterio() con los sgtes datos?n?6

    n?3

    n?5

    n?0