clase 2: tads en python · algoritmos y programación diseño de tads en python especificación...

27
www.unaj.edu.ar Clase 2: Tads en Python

Upload: others

Post on 10-Feb-2020

20 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 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():

www.unaj.edu.ar

Clase 2:

Tads en Python

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():

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():

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():

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():

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():

# 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():

# 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():

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():

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():

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():

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():

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():

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():

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():

# 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():

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():

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():

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():

#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():

#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():

#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():

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():

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():

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():

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():

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():

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)