Вы находитесь на странице: 1из 11

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

Facultad de Ingenieria de Minas, Geologica, Geografica, Civil y Ambiental


Escuela de Intgenieria Ambiental
Curso: Programacion
Prog. G. A. Salinas A.

S05Lab Programacion Modular


I. Objetivos
El presente laboratorio tiene por objetivos, resolver problemas a traves de la programación
modular, que consiste dado un problema subdividr en pequenos problemas denominados modulos a
las se denomina subprogramas y son de tres de tipos véase [Marzal 2014: cap. 6]:
 Funciones
 Predicados
 Procedimientos

II. Resumen
En esta practica usted debe implementar programas Python 3.x se dbe resolver problemas
aplicando la modulacion.
III. Implementacion de programas Python 3.x
Para cada uno de los ejemplos desarrollados analice y ejecute. Al analizar debe comentar el
significado lo que hace cada una de las instrucciones.
Para los problemas planteados haga el analisis y determine los datos entrada y salida, luego
con estos datos desarrolle el seudocodigo e implementacion en Python 3.x. (Vease
ejemplos)

1. Programacion Modular
La programacion modular la solucion consise en subdividir el problema en pequenos
subproblemas a los cuales se le denomina modulos. Cada modulo vendria a ser un
subprograma, producto de subdividir programas de manera organizada para mejorar la
legibilidad y aumentar la reutilización de código. [Marzal 2014, cap. 6.9]

El problema será resuelto por el programa principal, a partir de este subprograma se harán las
llamadas a los distintos subprogramas que al terminar su tarea devolverán el control al
programa principal.

1.1. Ventajas de la programación modular:


 Permite trabajar los módulos o subprogramas en forma independiente y
simultáneamente.
 La modificación de un módulo o subprograma no afecta a los demás.
 Los módulos son reutilizables en distintas ocasiones.
1.2. Variable local.
Son las variables que se declaran dentro del ámbito de un subprograma y solo son válidos
en él, solo existen cuando el subprograma es llamado o referenciado.
1.3. Variable Global.
Son las variables que se declaran fuera de los subprogramas y son válidos en todo el
programa incluso dentro de los subprogramas. No se recomienda su uso, salvo en caso
necesario.
1.4. Tipos de subprogramas
Son tres tipos de subprogramas, funciones, predicados, procedimientos y programa
principal.

1
1.4.1. Funciones
Es un subprograma que retorna un valor.
Formato seudocodigo:
ACCION nombreFuncion( lista de parametros formales separado por comas)
//Cuerpo de la funcion
RETORNAR(var)
FIN_ACCION

Python:
def nombreFuncion (lista de parametros separados por comas):
#Cuerpo de la funcion
return(var)
Ejemplo:

IGV=0.18
def calcularIGV():
precio=float(input("Ingrese precio "))
pvta=precio+precio*IGV
return (pvta)

#llamada a la funcion
print(calcularIGV( ))

Nota: La definicion de funcion menciona que devuelve UN VALOR, pero en


lenguaje Python puede devolver varias variables, en realidad devuelve sola una
variable, si son varias el crea implicitamente una TUPLA, entonces devuelve una
TUPLA, esto es una variable. Investigar.

1.4.2. Predicados
Es un subprograma que retorna un valor booleano (verdad o falso).
Formato seudocodigo:
ACCION nombrePredicado( lista de parametros formales )
//Cuerpo de la funcion
RETORNAR(varBooleano)
FIN_ACCION

Python
def nombrePredicado (lista de parametros formales):
#Cuerpo de la funcion
return(varBooleano)

Ejemplo:
def verificaPar(x):
if(x%2==0):
return(True)
else:
return(False)
#llamada a la funcion
print(verificaPar(333))

2
1.4.3. Precedimientos
Es un subprograma que no retorna valor.
Formato seudocodigo:
ACCION nombreProcedimiento( lista de parametros formales)
//Cuerpo del procedimiento
FIN_ACCION

Python:
def nombreProcedimiento (lista de parametros):
#Cuerpo del procedimiento

Ejemplo:
def suma(x, y):
s=x+y
print("suma = ",s)

#llamada a la funcion
print(suma(3, 5))

Nota: Todos los subprotramas en Python son funciones, puesto aquel subprograma
que no devuelve nada en realidad devuelve "none". Investigar.

1.4.4. Programa principal


A través del programa principal se hace las llamas a los subprogramas con el nombre
del subprograma seguidos de los parámetros actuales separados por comas.
Formato:
ACCION programaPrincipal( lista de parametros formales)
//Declaracon de variables locales o parámetros actuales
//Cuerpo del procedimiento
nombreSuprograma1(lista de parámetros actuales)
nombreSuprograma2(lista de parámetros actuales)

nombreSuprogramaN(lista de parámetros actuales)
FIN_ACCION

Tengan presente que los parámetros actuales deben coincidir en número, posición y
tipo con los parámetros formales de cada uno de los subprogramas.

1.5. Parámetros o argumentos.


Para invocar o llamar a una función se escribe el nombre del mismo seguidos de los
parámetros actuales entre paréntesis separados por comas. La entrada de información a
estos subprogramas es a través de los parámetros una vez procesados estos datos se retorna
un valor.
Los procedimientos realizan una tarea específica pero no retorna ningún resultado, La
entrada, salida o entrada/salida de la información se realiza a través de los parámetros.
Para invocar o llamar a un procedimiento se escribe en el programa principal su nombre
seguidos de los parámetros actuales separados por comas.
Python 3.x tiene tipos de datos mutables e inmutables. Los mutables son los que pueden
cambiar sus valores o elementos como las listas y los diccionarios. Los inmutables son los
que no pueden cambiar sus valores como los enteros, reales, cadenas y las tuplas.

3
1.5.1. Paso de parámetros.
Para invocar a los subprogramas debe haber una correspondencia entre los
parámetros formales y los parámetros actuales.
1.5.1.1. Correspondencia por nombre. La correspondencia en los parámetros
formales y parámetros actuales se indican explícitamente en la llamada a los
subprogramas
1.5.1.2. Correspondencia en número, posición y tipo de dato de parámetros. Los
parámetros formales y actuales se emparejan según su posición, en número y en
tipo de dato en la definición del subprograma y en la llamada realizada con los
parámetros actuales.
1.5.1.3. Paso de parámetros por Valor.
Los parámetros formales reciben una copia de los valores de los parámetros
actuales.
1.5.1.4. Paso de parámetros por referencia.
Los parámetros formales reciben las direcciones de memoria que referencian a los
valores de los parámetros actuales. En Python 3.x todas las estructuras son objetos
o sea apuntan a una dirección de memoria donde se inicia dicho objeto, por
ejemplo lista a y podrán ser modificados en la función sin son mutables, véase
ejercicios 320, 318, 319, 321, …, de [Marzal 2014, cap.6]

a 3 1 5 9

1.6. Programas Recursivos [Marzal 2014, cap. 6.8]


Son aquellos sub programas que se llaman a si mismos o intervienen en su propia
defincion. Todo subprograma recursivo puede ser convertido en iterativo.
Ejemplo. La sucesión de números Fibonacci se define como sigue:
Fib0  0
Fib1  1
FibN  fiboN-1 + fiboN-2, para n > 1

ACCION fibo(ENTERO n)
ENTERO termi
SI(n > 2)
Termi  n
SINO
Termi  fibo(n-1) + fibo(n-2)
FIN_SI
RETORNAR(termi)
FIN_ACCION

Se presentan varios ejercicos con las estructuras FOR y WHILE:


1. Aplicando programacion modular muestre los n primeos numeos pares
2. Implemente un procedimiento para hallar el promedio para un determinado numeros de
calificaciones.
3. Dada una lista de enteros implemente una funcion que sume los elementos de la lista.
4. Implemennte una calculadora con las cuatro operaciones basicas utilizando subprogramas.
5. Se tiene el diccionario lengua se pide mostrar sus elementos utilizando una función que tiene
como parámetro dicho diccionario. Analice las soluciones. ¿Crear una función para busca un

4
elemento?

Ejemplo:

def mostrarDic(x):
for clave in x.values():
print(clave, end=" ")

lengua={"Apple":"manzana", "Dog":"perro", "Pencil":"lapiz"}


print(mostrarDic(lengua) )
#print("lengua: ",lengua)

lista={100:"Juan", 102:"Lucha", 106:"Felipe", 108:"Ericko"}


print(mostrarDic(lista))

Ejemplo:
def mostrarDic(x):
for clave, info in x.items():
print(clave,": ", info)

lengua={"Apple":"manzana", "Dog":"perro", "Pencil":"lapiz"}


print(mostrarDic(lengua) )
#print("lengua: ",lengua)

lista={100:"Juan", 102:"Lucha", 106:"Felipe", 108:"Ericko"}


print(mostrarDic(lista))

5
6. mmm

Analisis Codigo en lenguaje Python


Ejemplo 1: Se recomienda al alumno analizar paso
calculaPar a paso cada elemento y su transcripcion
al codigo en lenguaje Python. De lo
N pares contrario no sera asimilado.
VerificaPar

def verificaPar(x):
Modulo verificaPar(x) if(x%2==0):
Parametro: x // numero a verificar return(True)
Dato entrada: x else:
Proceso: verifica si x es par o impar return(False)
Salida: retorna VERDAD si es par y FALSO en
def calculaPar():
otro caso ci=0
i=1
Modulo calculaPar() n=int(input("Numero de pares : "))
Parametros no tiene while(ci<n):
if(verificaPar(i)==True):
ENTRADA: print(i)
ENTERO i //secuencia de enteros ci=ci+1
ENTERO: ci //Contador de enteros i=i+1
ENTERO: n // numero de pares
Proceso: a partir de i determina si es par calculaPar()
utilizando el modulo anterior
Salida: Muestra el dato par
Solucion: De la solucion se deduce:

ACCION verificaPar( x ) Ventajas de la programacion modular


SI(x MOD 2 = 0)  Los modulos son reutilizables
RETORNAR (VERDAD)  Facilita la programacion de
SINO grandes sistemas
RETORNAR (VERDAD)  Facilita la correccion
FIN_SI
Indique las ventajas para cada uno de
FIN_ACCION los casos como se da en el ejemplo.
 ¿...?
ACCION calculaPar()  ¿...?
ENTERO ci ← 0, i ← 1, n
 ¿...?
LEER(n)
MIENTRAS (ci<n)
SI(verificaPar(i)=VERDAD)
ESCRIBIR(i)
ci ← ci+1
FIN_SI
i← i+1
FIN_MIENTRAS
FIN_ACCION

6
Analisis Codigo Python
Ejemplo 2. Calcula el promedio de una i=0
secuencia de numeros enteros. suma=0
n=int(input("Numero enteros a sumar "))
Variable: n // numero de enteros a leer while (i<n)
Variable: i contador de num num=int(input("Ingrese un entero "))
Variable: num // numero a sumar suma = suma+num
Variable: suma // acumulador de num i = i+1
Variable prom=suma/n print("Suma = ", suma)
Datos de entrada: n y num
Proceso: suuma ← suma + num Corrija el programa para que determine el
i←i+1 promedio.
prom=suma/n
Salida: prom
ACCION calculaPromedio(calif )
ENTERO i=0, n, num, suma=0
LEER(n)
MIENTRAS(i < n)
LEER(num)
suma ← suma + num
i←i+1
FIN MIENTRAS
ESCRIBIR ("Suma = ", suma)
FIN_ACCION

Ejemplo 3
Escriba un programa para la suma de los n primeros enteros

Analisis Codigo Python


Variable: n+1 // n primeros enteros suma= 0
Variable: nums //numeros enteros n=int(input("N primeros enteros "))
Variable: num //numero entero n=n+1
Variable suma // Acumular de num nums = range(n) # Que es range?
ACCION sumaN ( ) for num in nums:
ENTERO n, nums, num, suma suma=suma+num
suma ← 0
nums = 1, 2, 3, ..., n+1 prin("Suma = ", suma)
suma ← 0
PARA num en nums
suma=suma+num
FIN_PARA
ESCRIBIR ("Suma = ", suma)
FIN_ACCION

7
Ejercicio 4
Analice el codigo pyton y construya el analisis. Aplique a solucion de problemas
Analisis Codigo Pytthon
Ejemplo 3.1
opcion = "si"
while(opcipon=="si"):
print("Hola...")
opcion=input("Desea continuar <si/no> ")

Ejemplo 3.2
i=0
pc=[9, 11, 04, 14, 10, 15]
for nota in pc:
if(nota>=10):
print("nota ", i, ": ", nota)
i=i+1
print( "Has aprobado solo ", i, "practicas")

Ejemplo 3.3
opcion=true
while(opcion):
# Es un bucle infinifo presionae: CTRL+C
print("Hola ...!")

Ejemplo 3.4
while(True):
opcion= input("Desea terminar <s/n > ")
if(opcion =="s"):
break; #Pruebe con: continue y pass
print("Hola ...!")

Ejemplo 3.5

8
Codigo Python
# Analise y ejecute el progama.
# nombreProg: vector01.py El programa es una aplicacion acerca de
# dewscripcion: Operaciones basicas de leer y operaciones basicas de vectores en este caso
# mostrar solo cuenta con SALIR que termina el programa
# ,leerVetor que carga el vector y mostrarVector es
# Autor: GASA un subprograma que muestra el vector
# Fecha:22042017
# TAREA. Crear una nueva version de la
import sys aplicacion:
def leerVector():
i=0 1) Modifique el suprograma leerVector de tal
x=[] forma que el usuario sea el que decide el numero
while (i < 3): de elementos.
print("elemento No: ", i+1)
num=int (input("Ingrese un entero ")) 2) Modifique mostrar vector para que como
x.append(num) sigue por ejmplo: v = [2,3,4]
i=i+1
return (x) 3).Agregue los subproramas para buscar un
elemento, para insertar un elemento al final, para
def mostrarVector(x): insertar un elemento en una determinada
for i in x: posicion, para eliminar un elemento de una
print(i) determina posicion, para hallar el maximo o
minimo valor, para el promedio. Revise las
def menu(): operaciones basicas de listas de Python y
opc=-1 algunos instrucciones le pueden facilitar la
while(opc<0 or opc>2): solucion.
print("0. TERMINAR ")
print("1. Leer vector ") 4. Con la experienca, resuelva los ejercicios que
print("2. Mostrar ") utilizan menu de opciones.
print("Digite su opcion: ",end="")
opc=int(input()) Recomendaciones:
return opc Estudie y resuelva los problemas libro de
Marzal Python 3.x.
def operacionesVector():
opc=menu()
while(opc!=3):
if(opc==0):
print("El programa ha terminado")
sys.exit(0)
elif(opc==1):
a=leerVector()
else:
mostrarVector(a)
opc=menu();

operacionesVector()

9
Ejecicios
Analice, diseñe e implemente las soluciones de ejercicios entregados, revise los ejecicios de los
libros textos.Tenga presente que cada módulo realiza una sola operación, por tanto se debe reutilizar
otro modulo para el caso de algún modulo realiza más de una operación.

1. Implemente un subprograma para crear una lista con los n primeros enteros, luego otro
subprograma para mostrar los elementos de dicha lista.,
2. Implemente un subprograma, dada una lista de elementos enteros, implemente un programa
para buscar un elemento determinado (No aplica librerias).
3. Implemente un programa para hallar la suma de los n primeros números impares, debe
utilizar el modulo verifica impar.
4. Implemente un programa para hallar la suma de los n primeros números primos, debe
utilizar un módulo denominado verifica primo.
5. Cosntruya una aplicacion para hallar el area y el volumen de un cilindro utilizando
utilizando al menos 3 subprogramas con un menu de opciones. Aquí debe utilizar un modulo
denominado programa principal desde donde se referencias a todos los módulos.
6. Construya una aplicacion para las cuatro operaciones basicas aritmeticas utilizando un
menu de opciones donde cada operacion es un subprograma.
7. Implemente una funcion para determinar el menor elemento en un vector de enteros pasado
por parámetro, por ejemplo: def menorElemento(vector)
8. Construya una aplicacion para crear un vector de numeros primos utilizando un predicado
que verifica si un numero es primo.
9. Se tiene un vector de calificaciones del curso de programación. Se pide crear un
subprograma que reciba como parametro el vector de calificaciones y cree un vector de
aprobados y un vector de desaprobados.
10. Implementa un programa para crear un vector de lecturas de temperaturas de un mes, y
determine la mínima y máxima temperatura del mes, por semanas y por días. ¿Que otras
operaciones puede implementar?
11. Implemente subprogramas para determinar el factorial, el cuadrado y el cubo de un numero,
dado.
12. Implemente un subprograma para hallar el valor de PI mediante la serie PI = 4/1 – 4/3 + 4/5
– 4/7 + ... con una paroximacion de 0.0000001. Se pide que muestre el valor de PI y el
número de terminos utilizados para el cálculo.
13. Implemente una funcion para determinar el valor de ex, con una determinada aproximación.
(Atajo: debe investigar acerca de la serie que permite calcular).
14. Implementre un procedimiento para determinar e valor del seno mediante la serie de Taylor
donde seno (x) = x/1! - x3/3! + x5/5! - x7/7! + ... donde x esta dado en radianes.

10
Bibliografia.

A. Marzal, I. Gracia, P. Garcia (2014) Introduccion a la programacion con Python 3. Departamento


de Lenguajes y Sistemas Informaticos. Universidad deJaume. Espana.

L Joyanes A. (2008) Fundamentos de la Programacion. Prentice Hall. Madrid. Espana.


http://www.compuclasico.com/pl/McGraw_Hill-Luis_Joyanes_Aguilar-
Fundamentos_de_Programacion_Libro_de_Problemas.pdf

11