Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
Ejercicios Resueltos
Preparación PEP 1
Introducción
También posee problemas planteados durante el semestre pasado, pero esta vez
resueltos en Python.
Esta guía fue desarrollada y revisada por los profesores Cristóbal Acosta y Felipe
Fuentes.
Observación:
Los ejercicios no representan a la respuestas solicitadas en las guías, sino que son la
solución de la parte de programación de algunos ejercicios.
1
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
Pregunta 1
Enunciado
Escriba la secuencia de instrucciones para calcular el promedio y la desviación estándar
de las edades, en meses, de los integrantes del grupo. Haga que al final se despliegue el
mensaje “La edad promedio del grupo es P mas/menos SD meses” (no use tildes, porque
Python podría reclamar).
∑ ( )
√
Donde ei son las edades de los miembros del grupo y N es el número de integrantes del
grupo.
Solución
Análisis
Lo primero que debemos hacer es ver qué cosas son resultados de funciones o son
elementos que el usuario y/o programador deben realizar. Entonces, ¿Qué cosas debe
definir el usuario, y que cosas es(son) resultado(s) de la(s) función (es)?
Luego de haber respondido la pregunta anterior, nos preguntamos, ¿Qué valores serán
distintos para cada grupo?
2
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
Entonces, ya tenemos que la constante global de nuestro problema será N, nuestras
funciones deberán calcular el Promedio y la Desviación Estándar, y que nuestras edades
serán variables.
● Entrada: Las edades de los integrantes (ei), estás deberán estar en meses.
● Salida: Un número entero o real1 que sea el promedio de las edades.
● Lógica: Sumo los números ingresados en los parámetros formales de mi función y
lo divido por mi constante N.
Para la función que calcule la desviación estándar tenemos:
● Entrada: Las edades de los integrantes (ei), estás deberán estar en meses.
● Salida: Un número entero o real que sea la desviación estándar de las edades.
● Lógica: Calculo la raíz cuadrada de la suma el cuadrado la diferencia entre los
números ingresados en los parámetros formales de mi función y el promedio entre
ellos y ese resultado lo divido por mi constante N.
Programa
####################################################
##
## Curso: Fundamentos de Computacion y Programacion
## Guia: Ejercicios resueltos para la PEP 1
## Semestre: 1-2013
## Autor: Felipe Fuentes - Cristobal Acosta
##
## Problema: Problema 1
## Objetivo: Calcular y retornar el promedio y
## desviacionestandar de las edades.
####################################################
####################################################
## Declaracion de constantes
####################################################
####################################################
## Declaracion de funciones
####################################################
1
Se habla de número real ya que es en teoría, pero debemos tener en claro que para
programación será un número de punto flotante. En programación solo se aproximan a números
reales.
3
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
## Funciones Promedio
## Entrada: Tres números enteros
## Salida: Número flotante
## Lógica: Sumo los numeros, divido por N y retornamos
def promedio(e1, e2, e3, e4):
suma = float(e1+e2+e3+e4)
valorPromedio = suma/N
return valorPromedio
####################################################
## Declaracion de Cuerpo principal
####################################################
4
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
Pregunta 2
Enunciado
( ( ) ( ) ( )) ( ( ) ( ) ( ))
Además del resultado, anote todo el código requerido para obtener el resultado,
incluyendo los módulos importados.
Solución
Programa
####################################################
##
## Curso: Fundamentos de Computacion y Programacion
## Guia: Ejercicios resueltos para la PEP 1
## Semestre: 1-2013
## Autor: Felipe Fuentes - Cristobal Acosta
##
## Problema: Problema 2
## Objetivo:
####################################################
####################################################
## Declaración de constantes
####################################################
####################################################
## Declaración de funciones
####################################################
####################################################
## Declaración de Cuerpo principal
####################################################
5
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
x = 1
y = 2
6
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
Problema 3
Enunciado
Escriba una función que calcule la fórmula g( ) completa para un cierto valor de x y que
utilice la función calculaExponente().
( ) ( ) ( )
( )
Función calculaExponente()
def calculaExponente(x):
valorExponente = 2 * (x - 1) ** 2
return valorExponente
Solución
Programa
####################################################
##
## Curso: Fundamentos de Computacion y Programacion
## Guia: Ejercicios resueltos para la PEP 1
## Semestre: 1-2013
## Autor: Felipe Fuentes - Cristobal Acosta
##
## Problema: Problema 3
## Objetivo: Calcular el valor de la funcion
## utilizando calculaExponente
####################################################
####################################################
## Declaracion de constantes
####################################################
####################################################
## Declaracion de funciones
####################################################
## Funcion: calculaExponente
## Entrada: numero entero x
## Logica: Calcula el valor que toma el exponente de la funcion (1)
## El exponente esta evaluado segun la formula
## 2(x-1)^2
## Salida: Valor del exponente dependiendo del valor de x
def calculaExponente(x):
valorExponente = 2 * (x - 1) ** 2
return valorExponente
7
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
## Funcion: funcion1
## Entrada: numero entero x
## Logica: Calcula el valor de la funcion 1 evaluada con x, la
funcion 1 es:
## 2^(2(x-1)^2) + 3^(2(x-1)^2) + 4^(2(x-1)^2)
## Existen tres valores a sumar
## Salida: Valor de la funcion 1 evaluada con x. Esto sera igual a
la suma de los tres valores
def funcion1(x):
valorExponente = calculaExponente (x)
resultado = 2**valorExponente + 3**valorExponente + 4**valorExponente
return resultado
####################################################
## Cuerpo principal
####################################################
8
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
Problema 4
Enunciado
Escriba una función que defina una variable local con el mismo nombre que una variable
global, pero que utilice la variable global en la primera sentencia de su cuerpo. ¿Qué le
parece al intérprete de Python al intentar ejecutarla?
Solución
Programa
####################################################
##
## Curso: Fundamentos de Computacion y Programacion
## Guia: Ejercicios resueltos para la PEP 1
## Semestre: 1-2013
## Autor: Felipe Fuentes - Cristobal Acosta
##
## Problema: Problema 4
## Objetivo:
####################################################
####################################################
## Declaracion de constantes
####################################################
####################################################
## Declaracion de funciones
####################################################
## Funcion: funcion1
## Entrada: numero entero x
## Logica: En la primera sentencia de mi funcion utilizo la
## variable global
## En la segunda sentencia declaro una variable local
## con el mismo nombre de la variable global
## Salida: retorno el numero x que me entregaron como parametro
formal
def funcion1(x):
variableLocal = VARIABLE_GLOBAL + x
VARIABLE_GLOBAL = x * 2
return x
####################################################
## Cuerpo principal
9
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
####################################################
Respuesta código
10
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
Problema 5
Enunciado
( ) ( ) ( ) ( ) ( ) ( )
( ) ( )
Solución
Análisis
Para calcular el exponente podemos utilizar una misma función, ya que lo único que varía
es el parámetro de entrada de la función.
Programa
####################################################
##
## Curso: Fundamentos de Computacion y Programacion
## Guia: Ejercicios resueltos para la PEP 1
## Semestre: 1-2013
## Autor: Felipe Fuentes - Cristobal Acosta
##
## Problema: Problema 5
## Objetivo:
####################################################
####################################################
## Declaracion de constantes
####################################################
####################################################
## Declaracion de funciones
####################################################
##Importo las funciones necesarias desde la biblioteca math
from math import sin, tan
## Funcion: Exponente
## Entrada: Numero entero a
## Logica: Evalua la funcion: sin(a)+tan^2(a)
## Salida: Retorna el valor de la funcion evaluada con a
def exponente (a):
11
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
resultado = sin(a) + (tan(a))**2
return resultado
## Funcion: funcion1
## Entrada: numeros entero x e y
## Logica: Evalua la formula de la pregunta 4 de la clase 4
## Salida: Retorno el valor de la función evaluada con x e y
def funcion1(x,y):
resultado1 = x**exponente(y)
resultado2 = y**exponente(x)
resultado3 = (x*y)**exponente(y)
resultadoFinal = resultado1 + resultado2 + resultado3
return resultadoFinal
####################################################
## Cuerpo principal
####################################################
12
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
Problema 6
Enunciado
¿Cuál es el propósito del programa? Discuta y escriba algunas alternativas.
Programa
Solución
Análisis
El propósito que tiene este programa es multiplicar la variable a con b, y también obtener
el resultado del doble de la suma entre a y b. Matemáticamente una de las opciones de
posible problema que solucionen es el cálculo del área de un rectángulo (la cual se
calcula como la multiplicación de base por altura) y el perímetro de éste (la suma de todos
sus lados).
13
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
Problema 7
Enunciado
Código
x = input("v1:")
def p(z, y, x):
return (x + y + z) / 3.0
z = input("v2:")
y = input("v3:")
print p(x, z, y)
Solución
Análisis
Según las buenas prácticas de programación, primero se debe definir las constantes,
luego las funciones y finalmente hago el cuerpo principal. También los nombres deben ser
representativos, y el nombre de la función no lo es. Pero viendo que es lo que retorna,
esta suma los parámetros formales y los divide por 3.0, que es la cantidad de parámetros,
por lo que ésta calculando el promedio entre los parámetros formales.
14
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
Código
####################################################
##
## Curso: Fundamentos de Computacion y Programacion
## Guia: Ejercicios resueltos para la PEP 1
## Semestre: 1-2013
## Autor: Felipe Fuentes - Cristobal Acosta
##
## Problema: Problema 7
## Objetivo:
####################################################
####################################################
## Declaracion de constantes
####################################################
####################################################
## Declaracion de funciones
####################################################
def promedio(z, y, x):
return (x + y + z) / 3.0
####################################################
## Cuerpo principal
####################################################
# pido la información
# Muestro el resultado
print “El resultado del promedio es:”, resultado
15
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
Problema 8
Enunciado
Solución
Análisis
Se tiene que desarrollar una opción múltiple que sea capaz de decidir que opción tomar.
Tenemos tres opciones:
Programa
####################################################
##
## Curso: Fundamentos de Computacion y Programacion
## Guia: Ejercicios resueltos para la PEP 1
## Semestre: 1-2013
## Autor: Felipe Fuentes - Cristobal Acosta
##
## Problema: Problema 8
## Objetivo:
####################################################
####################################################
## Declaracion de constantes
####################################################
####################################################
16
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
## Declaracion de funciones
####################################################
def escalon(x):
if x <= -1:
return 0
elif x >= 1:
return 1
else:
return (x + 1)/2
####################################################
## Cuerpo principal
####################################################
# pido la información
# Muestro el resultado
print "El resultado de la funcion es:", resultado
17
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
Problema 9
Enunciado
En Chile, los ciudadanos que tiene una renta imponible anual menor o igual a $6.513.372
no pagan impuestos. Quienes tengan una renta superior a este monto, pagan un impuesto
global complementario equivalente al 5% de la renta imponible menos $325.668,6.-
Escriban una función en Python que calcule el impuesto global complementario de un
ciudadano chileno.
Solución
Análisis
Podemos ver que para la solución de este problema solo tenemos dos opciones cuando la
renta es menor o igual a $6.513.372 y la otra opción es cuando sea mayor.
Programa
####################################################
##
## Curso: Fundamentos de Computacion y Programacion
## Guia: Ejercicios resueltos para la PEP 1
## Semestre: 1-2013
## Autor: Felipe Fuentes - Cristobal Acosta
##
## Problema: Problema 8
## Objetivo:
####################################################
####################################################
## Declaracion de constantes
####################################################
# Constante de limite de quienes pagan y no pagan impuestos
RENTA_CORTE = 6513372
PORCENTAJE_IMPUESTOS = 0.05
DESCUENTO_IMPUESTOS = 325668.6
####################################################
## Declaracion de funciones
####################################################
def pagoImpuestos(renta):
18
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
if renta > RENTA_CORTE:
return renta*PORCENTAJE_IMPUESTOS-DESCUENTO_IMPUESTOS
else:
return 0
####################################################
## Cuerpo principal
####################################################
# pido la información
# Muestro el resultado
print "El total de impuestos a pagar es de:", impuestos
19
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
Problema 10
Enunciado
Un colegio de Estación Central está enseñando a los niños de quinto básico el cálculo de
área y perímetro de diferentes figuras geométricas, y requiere de un programa escrito en
Python para que sus alumnos puedan verificar los resultados que obtienen. En particular,
están solicitando que el programa maneje círculos, triángulos rectángulos, rectángulos y
cuadrados. La siguiente tabla resume la materia vista por los alumnos:
20
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
Solución
Análisis
Debemos hacer un menú, y según el menú la opción que debamos desarrollar. Y luego
desarrollamos funciones para el cálculo de cada una de las cosas.
Programa
####################################################
##
## Curso: Fundamentos de Computacion y Programacion
## Guia: Ejercicios resueltos para la PEP 1
## Semestre: 1-2013
## Autor: Felipe Fuentes - Cristobal Acosta
##
## Problema: Problema 10
## Objetivo:
####################################################
####################################################
## Declaracion de constantes
####################################################
# Constante de limite de quienes pagan y no pagan impuestos
from math import pi
area=0
perimetro=0
####################################################
## Declaracion de funciones
####################################################
#Importo la raiz cuadrada
from math import sqrt
# Para el circulo
def areaCirculo (radio):
return pi*radio**2
# Para el triangulo
def areaTriangulo (base, altura):
return base*altura/2
# Para el rectangulo
def areaRectangulo (base, altura):
return base*altura
# Para el cuadrado
def areaCuadrado (lado):
return lado**2
def perimetroCuadrado (lado):
21
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
return 4*lado
#menu
def menu():
print "____________________________________________"
print " MENU"
print "____________________________________________"
print ""
print ""
print "Opcion 1: Calcular Area y perimetro de un circulo"
print "Opcion 2: Calcular Area y perimetro de un triangulo rectangulo"
print "Opcion 3: Calcular Area y perimetro de un rectangulo"
print "Opcion 4: Calcular Area y perimetro de un cuadrado"
print "Opcion 5: Salir"
print ""
print ""
opcionMenu = input ("Seleccione una opcion:")
return opcionMenu
####################################################
## Cuerpo principal
####################################################
# pido la información
opcion = -1
while opcion != 5:
opcion = menu()
if opcion == 1:#Se quiere calcular para un circulo
radioCirculo = input ("Ingrese el radio del circulo")
area = areaCirculo(radioCirculo)
perimetro = perimetroCirculo(radioCirculo)
elif opcion == 2:#Se quiere calcular para un triangulo
baseTriangulo = input ("Ingrese la base del triangulo:")
alturaTriangulo = input ("Ingrese la altura del triangulo:")
area = areaTriangulo(baseTriangulo, alturaTriangulo)
perimetro = perimetroTriangulo(baseTriangulo, alturaTriangulo)
elif opcion == 3:#Se quiere calcular para un rectangulo
baseRectangulo = input ("Ingrese la base del rectangulo:")
alturaRectangulo = input ("Ingrese la altura del rectangulo:")
area = areaRectangulo(baseRectangulo, alturaRectangulo)
perimetro = perimetroRectangulo(baseRectangulo, alturaRectangulo)
elif opcion == 4:#Se quiere calcular para un Cuadrado
ladoCuadrado = input ("Ingrese el lado del cuadrado:")
area = areaCuadrado(ladoCuadrado)
perimetro = perimetroCuadrado(ladoCuadrado)
elif opcion == 5:#Se quiere salir
print "Saliendo del programa"
else:
print "Opcion invalida, intente nuevamente"
# Muestro el resultado
if opcion >0 and opcion < 5:
print "El area de la figura es: ",area,"y su perimetro
es:",perimetro
print "Adios"
22
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
Problema 11
Enunciado
Creen un programa que muestre los números pares desde 0 hasta un n que el usuario
ingrese.
Solución
Programa
####################################################
##
## Curso: Fundamentos de Computacion y Programacion
## Guia: Ejercicios resueltos para la PEP 1
## Semestre: 1-2013
## Autor: Felipe Fuentes - Cristobal Acosta
##
## Problema: Problema 10
## Objetivo:
####################################################
####################################################
## Declaracion de constantes
####################################################
####################################################
## Declaracion de funciones
####################################################
def paresIterativa(n):
contador = 0
while contador <= n:
print contador,
contador = contador+2
print "Fin"
return 0
####################################################
23
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
## Cuerpo principal
####################################################
# pido la información
numero = input("¿Hasta que numero quiere obtener los pares?")
24
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
Problema 12
Enunciado
Creen una función en Python que realice, utilizando un ciclo while, el cálculo de la suma
de los primeros n enteros.
Solución
Programa
####################################################
##
## Curso: Fundamentos de Computacion y Programacion
## Guia: Ejercicios resueltos para la PEP 1
## Semestre: 1-2013
## Autor: Felipe Fuentes - Cristobal Acosta
##
## Problema: Problema 11
## Objetivo:
####################################################
####################################################
## Declaracion de constantes
####################################################
####################################################
## Declaracion de funciones
####################################################
def sumaIterativa(n):
resultado = 0
contador = 0
while contador <= n:
resultado = resultado + contador
contador = contador+1
return resultado
def sumaRecursiva(n):
if n == 1:
return 1
else:
return n+sumaRecursiva(n-1)
####################################################
## Cuerpo principal
####################################################
# pido la información
numero = input("¿Hasta que numero quiere obtener la suma?")
25
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
#Llamo a mis funciones y muestro el resultado
print "Iterativamente nos da:", sumaIterativa(numero)
print "recursivamente nos da:", sumaRecursiva(numero)
26
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
Problema 14
Enunciado
Usando como base Recursivo.py, cree una función Fibonacci(n), que calcule el n-ésimo
número en la sucesión de Fibonacci, la cual se define por:
Solución
Análisis
Este programa se resuelve en el ejercicio siguiente, ya que se utiliza para poder calcular
el número áureo. De esa forma se permite ver el código de forma recursiva e iterativa a la
vez.
27
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
Problema 15
Enunciado
i ona i(n )
mero ureo (n) p i(n)
i ona i(n )
Entre mayor sea el valor n, mejor es la aproximación de . Necesitamos que cree un
programa para obtener aproximaciones de con un valor de n dado por el usuario. Usted
deberá usar una función recursiva para calcular del n-ésimo término de la secuencia de
Fibonacci para valores bajos de n, y una función iterativa para valores altos. El programa
debe determinar cuándo usar cada una, no el usuario.
Solución
Programa
# Funciones
28
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
antecesor = valor
contador += 1
return valor
# Función que implementa fibonacci (x)
# recursivo.
# Entrada: x
# Salida: fibonacci (x)
# Requiere: x se considera número
# natural
def calculaFibonacciRecursivo (x):
if x == 0 or x == 1:
return x
else:
# x > 1
return calculaFibonacciRecursivo (x - 1) +
calculaFibonacciRecursivo (x - 2)
29
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
Problema 16
Enunciado
Construye un programa que, de forma recursiva, determine el máximo común divisor o
MCD (el mayor entero positivo que divide a ambos números de forma exacta) de dos
números mediante el algoritmo de Euclides y muestre el resultado por pantalla.
Solución
Programa
####################################################
##
## Curso: Fundamentos de Computacion y Programacion
## Guia: Ejercicios resueltos para la PEP 1
## Semestre: 1-2013
## Autor: Felipe Fuentes - Cristobal Acosta
##
## Problema: Problema 16
## Objetivo:
####################################################
####################################################
## Declaracion de constantes
####################################################
####################################################
## Declaracion de funciones
####################################################
def euclides(m,n):
if m>n:
resto = m%n
if resto == 0:
return n
else:
return euclides (n,resto)
else:
print "error"
####################################################
## Cuerpo principal
####################################################
# pido la información
numeroM = input("Ingrese el numero m para calcular el MCD:")
numeroN = input("Ingrese el numero n para calcular el MCD:")
#Llamo a mis funciones y muestro el resultado
30
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
print "El MCD entre", numeroM,"y",numeroN,"es:",euclides(numeroM,numeroN)
31
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
Pregunta 17
Enunciado
( )
{
( )
Ejemplo para
Solución
Programa
# OPCION 1
def calculaDobleFactorial_1 (n):
paridad = n%2
factor = 1
contador = 1
acumulador = 1
while (factor < n):
factor = 2*contador - paridad
acumulador *= factor
contador += 1
return acumulador
# OPCION 2
def calculaDobleFactorial_2 (n):
factor = 1
contador = 1
acumulador = 1
if n%2 == 0:
while (factor < n):
factor = 2*contador
acumulador *= factor
contador += 1
else:
while (factor < n):
factor = 2*contador - 1
acumulador *= factor
contador += 1
return acumulador
32
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
Pregunta 18
Enunciado
Ejemplo para
Solución
Programa
def esPrimo (n):
contador = 1
acumulador = 0
while contador <= n:
if n%contador == 0:
acumulador += 1
contador += 1
if acumulador == 2:
return True
else:
return False
def calculaPrimorial (n):
contador = 1
contadorPrimos = 1
acumulador = 1
while contadorPrimos < n:
if (esPrimo (contador)):
acumulador *= contador
contadorPrimos += 1
contador += 1
return acumulador
33
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
Pregunta 19
Enunciado
( ) {
∑
Ejemplo para ( )
Solución
Programa
def calculaFuncion (n):
contador = 1
acumulador = 0
if (n == 0):
return 1
while (contador <= n):
acumulador += 1.0/contador
contador += 1
return round (n * acumulador, 3)
34
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
Pregunta 20
Enunciado
Construya una función en python que entregue el resultado de la serie de MacLaurin para
la función exponencial como se define a continuación:
Como la serie es infinita, la función debe recibir por parámetro n. Para construir su
programa utilice la función calculaFactorial (n) que retorna el factorial de n.
Ejemplo para
Solución
Programa
35
Universidad de Santiago de Chile
Facultad de Ingeniería
Fundamentos de Computación y Programación
Autores: Cristóbal Acosta J. – Felipe Fuentes B.
Pregunta 22
Enunciado
( ) ∏
Ejemplo para ( ) ( )
Solución
Programa
# --------------------------------------------
# OPCION 1: A través de iteración
# --------------------------------------------
def calculaFuncionIterativa (x, y, n):
contador = 1
acumulador = 1
while contador <= n:
acumulador *= x*y
contador += 1
return acumulador
# --------------------------------------------
# OPCION 2: A través de recursión
# --------------------------------------------
def calculaFuncionRecursiva (x, y, n):
if n == 1:
return x*y
else:
n -= 1
return x*y * calculaFuncionRecursiva (x, y, n)
# --------------------------------------------
# OPCION 3: Analizando la función, es posible
# utilizar xy^n
# --------------------------------------------
def calculaFuncion_3 (x, y, n):
return (x*y)**n
# --------------------------------------------
36