Algoritmos y Programación
Diseño de TADs en Python
www.unaj.edu.ar
Especificación TAD alumno (almacena nombre, legajo, promedio y fecha ) Tad compuestocrearAlu():#crea y retorna un alumno
cargarAlu(alumno,n,le,p,f):#Carga los datos de un alumno
verNom(alumno):#Retorna el nombre de un alumno
verLega(alumno):#Retorna el legajo de un alumno
verProm(alumno):#Retorna el promedio de un alumno
Algoritmos y Programación
Diseño de TADs en Python
www.unaj.edu.ar
Especificación
verFe(alumno):#retorna la fecha de ingreso de un alumno
modiProm(alumno,p):#Modifica el promedio de un alumno
modiNom(alumno,n):#Modifica el nombre de un alumno
modiLega(alumno,le): #Modifica el legajo de un alumno
Algoritmos y Programación
Diseño de TADs en Python
www.unaj.edu.ar
Especificación
modiFe(alumno,fe):#Modifica la fecha de ingreso de un alumno
asignarAlu(alumno1,alumno2):#Asigna los datos del alumno2 al alumno1
Algoritmos y Programación
Estructura interna
www.unaj.edu.ar
En nuestro caso como no tenemos el tipo de dato registro en Python, vamos a elegir como estructura interna el tipo de datos lista.
Así entonces se define:alumno=[ “ “, 0,0,0]
La lista tendrá 4 elementos: 1era posición para el nombre del alumno2da posición para el legajo3era posición para el promedio4ta posición para la fecha de ingreso
# Tad Alu
def crearAlu(): #Crea y retorna un alumno vacioalumno=["",0,0,0] lo define como lista y loreturn alumno inicializa en vacío
def cargarAlu(alumno,n,le,p,fe):#Carga los datos de un alumnoalumno[0]=nalumno[1]=lealumno[2]=palumno[3]=fe
def verNom(alumno):#Retorna el nombre de un alumnoreturn alumno[0]
IImplementación de TADs en Python
# Tad Alu
def verLega(alumno):#Retorna el legajo de un alumnoreturn alumno[1]
def verProm(alumno):#Retorna el promedio de un alumnoreturn alumno[2]
def verFe(alumno):#Retorna la fecha de ingreso de un alumnoreturn alumno[3]
def modiNom(alumno,n):#Modifica el nombre de un alumnoalumno[0]=n
def modiLega(alumno,le):#Modifica el legajo de un alumnoalumno[1]=le
def modiProm(alumno,p):#Modifica el promedio de un alumnoalumno[2]=p
def modiFe(alumno,fe):#Modifica la fecha de ingreso de un alumnoalumno[3]=fe
def asignarAlu(alumno1,alumno2):#Asigna los datos del alumno1 al alumno2modiNom(alumno1,verNom(alumno2))modiLega(alumno1,verLega(alumno2))modiProm(alumno1,verProm(alumno2))modiFe(alumno1, verFe(alumno2))
Aplicación
from datetime import *
a1=crearAlu() #Crea y carga los datos del alumno1n=raw_input("Ingrese un nombre ")l=input("Ingrese un legajo ")p=input("Ingrese un promedio ")d=input('día de ingreso')m=input('mes de ingreso, numérico')a=input('Año de ingreso')f=date(a,m,d)cargarAlu(a1,n,l,p,f)
print verNom(a1) #Imprime los datos del alumno1print verLega(a1)print verProm(a1)print verFe(a1)raw_input()
Aplicación
#Crea y carga los datos del alumno2a2=crearAlu()n=raw_input("Ingrese un nombre ")l=input("Ingrese un legajo ")p=input("Ingrese un promedio ")d=input('día de ingreso')m=input('mes de ingreso, numérico')a=input('Año de ingreso')f=date(a,m,d)cargarAlu(a2,n,l,p,f)
print verNom(a2) #Imprime los datos del alumno1print verLega(a2)print verProm(a2)print verFe(a2)raw_input()
Aplicación
#Imprime el nombre del alumno de menor legajoprint "El nombre del alumno de menor promedio es:"if (verProm(a1)<verProm(a2)):
print verNom(a1)else:
print verNom(a2)raw_input()
TADs Compuestos en Python
www.unaj.edu.ar
Especificación TAD curso (almacena un conjunto de alumnos) Tad triple
crearCurso():#Crea un curso vacio
agregarAlu(curso,a):#Agrega un alumno al curso
eliminarAlu(curso,a):#Elimina un alumno del curso
recuperarAlu(curso,i):#Retorna el alumno de la posición iésima
Diseño de TADs en Python
www.unaj.edu.ar
existeAlu(curso, a):#Retorna True o False si el alumno a pertenece al curso
tamanio(curso):#Retorna la cantidad de alumnos del curso
Algoritmos y Programación
Estructura interna
www.unaj.edu.ar
En nuestro caso vamos a elegir como estructura interna el tipo de datos lista.
Así entonces se define:curso=[ ]
La lista permitirá agregar tantos alumnos como desee cargar el usuario
# Tad Curso
def crearCurso():#Crea un curso vaciocurso=[]return curso
def agregarAlu(curso,a):#Agrega un alumno al cursocurso.append(a)
def eliminarAlu(curso,a):#Elimina un alumno del cursocurso.remove(a)
IImplementación de TADs en Python
def recuperarAlu(curso,i):#Retorna el alumno de la posicion iesimareturn curso[i]
def tamanio(curso):#Retorna la cantidad de alumnos del cursoreturn len(curso)
existeAlu(curso, a):#Retorna True o False si el alumno a pertenece al cursoreturn a in curso
IImplementación de TADs en Python
from TadAlu import *from TadCurso import *from datetime import *
c=crearCurso() #Crea el curso
Aplicación
for i in range(1,4): #Cargar el cursoa=crearAlu()n=raw_input("Ingrese un nombre ")l=input("Ingrese un legajo ")p=input("Ingrese un promedio ")d=input('día de ingreso')m=input('mes de ingreso, numérico')a=input('Año de ingreso')f=date(a,m,d)cargarAlu(a1,n,l,p,f)agregarAlu(c,a)
Aplicación
#Imprime los datos del curso print "Imprime los datos del curso“tam= len(c )for i in range(0,tam):
a=recuperarAlu(c,i)print "Imprime los datos de un alumno"print verNom(a)print verLega(a)print verProm(a)print verFe(a)print ‘__________’*3
#Recupera e imprime el segundo alumnoprint "Imprime los datos del 2do alumno"a=recuperarAlu(c,1)print "Imprime los datos de un alumno"print verNom(a)print verLega(a)print verProm(a)print verFe(a)print ‘__________’*3
print "Elimina el alumno recuperado"#Elimina el alumno recuperadoeliminarAlu(c,a)
#Imprime los alumnos que quedan en el cursoprint "Imprime los datos de los alumnos del curso“tam=len( c) for i in range(0, tam):
a=recuperarAlu(c,i)print "Imprime los datos de un alumno"print verNom(a)print verLega(a)print verProm(a)print verFe(a)print ‘__________’*3
EspecificacióncrearPila():#retorna una pila vacía
apilar(p,el):#agrega en el tope de la pila el elemento el
desapilar(p):#desapila y retorna el elemento del tope de p
esVacia(p):#retorna True o False si la pila tiene o no elementos
copiarPila(p1,p2):#copia todos los elementos de p1 en p2
Tad Pila
crearPila():#retorna una pila vacía
p=[]
apilar(p,el):#agrega en el tope de la pila el elemento el
p.append(el)
desapilar(p):#desapila y retorna el elemento del tope de p
el=p.pop()return el
esVacia(p):#retorna True o False si la pila tiene o no elementos
if p= = []:return True
else:return False
copiarPila(p1,p2):#copia todos los elementos de p1 en p2while not esVacia(p1):
desapilar(p1,el)apilar(p2,el)
EspecificacióncrearCola():#retorna una cola vacía
encolar(c,el):#agrega en el tope de la cola el elemento el
desencolar(c):#elimina el 1er elemento de c y lo retorna
esVacia(c):#retorna True o False si la cola tiene o no elementos
copiarCola(c1,c2):#copia todos los elementos de c2 en c1
Tad Cola
crearcola():#retorna una cola vacía
c=[]
encolar(co,el):#agrega en el tope de la cola el elemento el
co.append(el)
desencolar(co):#elimina el 1er elemento de la cola y lo retorna
el=co.pop(1)return el
esVacia(co):#retorna True o False si la cola tiene o no elementos
if co= = []:return True
else:return False
copiarCola(co1,co2):#copia todos los elementos de co1 en co2while not esVacia(co1):
desencolar(co1,el)encolar(co2,el)
Top Related