![Page 2: Clase 2: Tads en Python · Algoritmos y Programación Diseño de TADs en Python Especificación TAD alumno (almacena nombre, legajo, promedio y fecha ) Tad compuesto crearAlu():](https://reader030.vdocumento.com/reader030/viewer/2022040320/5e4ea078f6e2782b3e549e4c/html5/thumbnails/2.jpg)
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
![Page 3: Clase 2: Tads en Python · Algoritmos y Programación Diseño de TADs en Python Especificación TAD alumno (almacena nombre, legajo, promedio y fecha ) Tad compuesto crearAlu():](https://reader030.vdocumento.com/reader030/viewer/2022040320/5e4ea078f6e2782b3e549e4c/html5/thumbnails/3.jpg)
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
![Page 4: Clase 2: Tads en Python · Algoritmos y Programación Diseño de TADs en Python Especificación TAD alumno (almacena nombre, legajo, promedio y fecha ) Tad compuesto crearAlu():](https://reader030.vdocumento.com/reader030/viewer/2022040320/5e4ea078f6e2782b3e549e4c/html5/thumbnails/4.jpg)
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
![Page 5: Clase 2: Tads en Python · Algoritmos y Programación Diseño de TADs en Python Especificación TAD alumno (almacena nombre, legajo, promedio y fecha ) Tad compuesto crearAlu():](https://reader030.vdocumento.com/reader030/viewer/2022040320/5e4ea078f6e2782b3e549e4c/html5/thumbnails/5.jpg)
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
![Page 6: Clase 2: Tads en Python · Algoritmos y Programación Diseño de TADs en Python Especificación TAD alumno (almacena nombre, legajo, promedio y fecha ) Tad compuesto crearAlu():](https://reader030.vdocumento.com/reader030/viewer/2022040320/5e4ea078f6e2782b3e549e4c/html5/thumbnails/6.jpg)
# 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
![Page 7: Clase 2: Tads en Python · Algoritmos y Programación Diseño de TADs en Python Especificación TAD alumno (almacena nombre, legajo, promedio y fecha ) Tad compuesto crearAlu():](https://reader030.vdocumento.com/reader030/viewer/2022040320/5e4ea078f6e2782b3e549e4c/html5/thumbnails/7.jpg)
# 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
![Page 8: Clase 2: Tads en Python · Algoritmos y Programación Diseño de TADs en Python Especificación TAD alumno (almacena nombre, legajo, promedio y fecha ) Tad compuesto crearAlu():](https://reader030.vdocumento.com/reader030/viewer/2022040320/5e4ea078f6e2782b3e549e4c/html5/thumbnails/8.jpg)
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))
![Page 9: Clase 2: Tads en Python · Algoritmos y Programación Diseño de TADs en Python Especificación TAD alumno (almacena nombre, legajo, promedio y fecha ) Tad compuesto crearAlu():](https://reader030.vdocumento.com/reader030/viewer/2022040320/5e4ea078f6e2782b3e549e4c/html5/thumbnails/9.jpg)
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()
![Page 10: Clase 2: Tads en Python · Algoritmos y Programación Diseño de TADs en Python Especificación TAD alumno (almacena nombre, legajo, promedio y fecha ) Tad compuesto crearAlu():](https://reader030.vdocumento.com/reader030/viewer/2022040320/5e4ea078f6e2782b3e549e4c/html5/thumbnails/10.jpg)
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()
![Page 11: Clase 2: Tads en Python · Algoritmos y Programación Diseño de TADs en Python Especificación TAD alumno (almacena nombre, legajo, promedio y fecha ) Tad compuesto crearAlu():](https://reader030.vdocumento.com/reader030/viewer/2022040320/5e4ea078f6e2782b3e549e4c/html5/thumbnails/11.jpg)
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()
![Page 12: Clase 2: Tads en Python · Algoritmos y Programación Diseño de TADs en Python Especificación TAD alumno (almacena nombre, legajo, promedio y fecha ) Tad compuesto crearAlu():](https://reader030.vdocumento.com/reader030/viewer/2022040320/5e4ea078f6e2782b3e549e4c/html5/thumbnails/12.jpg)
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
![Page 13: Clase 2: Tads en Python · Algoritmos y Programación Diseño de TADs en Python Especificación TAD alumno (almacena nombre, legajo, promedio y fecha ) Tad compuesto crearAlu():](https://reader030.vdocumento.com/reader030/viewer/2022040320/5e4ea078f6e2782b3e549e4c/html5/thumbnails/13.jpg)
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
![Page 14: Clase 2: Tads en Python · Algoritmos y Programación Diseño de TADs en Python Especificación TAD alumno (almacena nombre, legajo, promedio y fecha ) Tad compuesto crearAlu():](https://reader030.vdocumento.com/reader030/viewer/2022040320/5e4ea078f6e2782b3e549e4c/html5/thumbnails/14.jpg)
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
![Page 15: Clase 2: Tads en Python · Algoritmos y Programación Diseño de TADs en Python Especificación TAD alumno (almacena nombre, legajo, promedio y fecha ) Tad compuesto crearAlu():](https://reader030.vdocumento.com/reader030/viewer/2022040320/5e4ea078f6e2782b3e549e4c/html5/thumbnails/15.jpg)
# 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
![Page 16: Clase 2: Tads en Python · Algoritmos y Programación Diseño de TADs en Python Especificación TAD alumno (almacena nombre, legajo, promedio y fecha ) Tad compuesto crearAlu():](https://reader030.vdocumento.com/reader030/viewer/2022040320/5e4ea078f6e2782b3e549e4c/html5/thumbnails/16.jpg)
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
![Page 17: Clase 2: Tads en Python · Algoritmos y Programación Diseño de TADs en Python Especificación TAD alumno (almacena nombre, legajo, promedio y fecha ) Tad compuesto crearAlu():](https://reader030.vdocumento.com/reader030/viewer/2022040320/5e4ea078f6e2782b3e549e4c/html5/thumbnails/17.jpg)
from TadAlu import *from TadCurso import *from datetime import *
c=crearCurso() #Crea el curso
Aplicación
![Page 18: Clase 2: Tads en Python · Algoritmos y Programación Diseño de TADs en Python Especificación TAD alumno (almacena nombre, legajo, promedio y fecha ) Tad compuesto crearAlu():](https://reader030.vdocumento.com/reader030/viewer/2022040320/5e4ea078f6e2782b3e549e4c/html5/thumbnails/18.jpg)
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
![Page 19: Clase 2: Tads en Python · Algoritmos y Programación Diseño de TADs en Python Especificación TAD alumno (almacena nombre, legajo, promedio y fecha ) Tad compuesto crearAlu():](https://reader030.vdocumento.com/reader030/viewer/2022040320/5e4ea078f6e2782b3e549e4c/html5/thumbnails/19.jpg)
#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
![Page 20: Clase 2: Tads en Python · Algoritmos y Programación Diseño de TADs en Python Especificación TAD alumno (almacena nombre, legajo, promedio y fecha ) Tad compuesto crearAlu():](https://reader030.vdocumento.com/reader030/viewer/2022040320/5e4ea078f6e2782b3e549e4c/html5/thumbnails/20.jpg)
#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)
![Page 21: Clase 2: Tads en Python · Algoritmos y Programación Diseño de TADs en Python Especificación TAD alumno (almacena nombre, legajo, promedio y fecha ) Tad compuesto crearAlu():](https://reader030.vdocumento.com/reader030/viewer/2022040320/5e4ea078f6e2782b3e549e4c/html5/thumbnails/21.jpg)
#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
![Page 22: Clase 2: Tads en Python · Algoritmos y Programación Diseño de TADs en Python Especificación TAD alumno (almacena nombre, legajo, promedio y fecha ) Tad compuesto crearAlu():](https://reader030.vdocumento.com/reader030/viewer/2022040320/5e4ea078f6e2782b3e549e4c/html5/thumbnails/22.jpg)
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
![Page 23: Clase 2: Tads en Python · Algoritmos y Programación Diseño de TADs en Python Especificación TAD alumno (almacena nombre, legajo, promedio y fecha ) Tad compuesto crearAlu():](https://reader030.vdocumento.com/reader030/viewer/2022040320/5e4ea078f6e2782b3e549e4c/html5/thumbnails/23.jpg)
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
![Page 24: Clase 2: Tads en Python · Algoritmos y Programación Diseño de TADs en Python Especificación TAD alumno (almacena nombre, legajo, promedio y fecha ) Tad compuesto crearAlu():](https://reader030.vdocumento.com/reader030/viewer/2022040320/5e4ea078f6e2782b3e549e4c/html5/thumbnails/24.jpg)
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)
![Page 25: Clase 2: Tads en Python · Algoritmos y Programación Diseño de TADs en Python Especificación TAD alumno (almacena nombre, legajo, promedio y fecha ) Tad compuesto crearAlu():](https://reader030.vdocumento.com/reader030/viewer/2022040320/5e4ea078f6e2782b3e549e4c/html5/thumbnails/25.jpg)
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
![Page 26: Clase 2: Tads en Python · Algoritmos y Programación Diseño de TADs en Python Especificación TAD alumno (almacena nombre, legajo, promedio y fecha ) Tad compuesto crearAlu():](https://reader030.vdocumento.com/reader030/viewer/2022040320/5e4ea078f6e2782b3e549e4c/html5/thumbnails/26.jpg)
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
![Page 27: Clase 2: Tads en Python · Algoritmos y Programación Diseño de TADs en Python Especificación TAD alumno (almacena nombre, legajo, promedio y fecha ) Tad compuesto crearAlu():](https://reader030.vdocumento.com/reader030/viewer/2022040320/5e4ea078f6e2782b3e549e4c/html5/thumbnails/27.jpg)
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)