Download - Curso de Nivelación de Algoritmos - Clase 2
Programación ProceduralTipos de Datos Abstractos fundamentales
Curso de Nivelación de AlgoritmosClase 2
Lic. Ernesto [email protected]
Maestría y Carrera de Especialización en Explotación de Datos y Descubrimientode Conocimiento
26 de marzo de 2008
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
Programación ProceduralTipos de Datos Abstractos fundamentales
Programación Procedural
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
Programación ProceduralTipos de Datos Abstractos fundamentales
Programación Procedural
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
Programación ProceduralTipos de Datos Abstractos fundamentales
Programación Procedural
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
Programación ProceduralTipos de Datos Abstractos fundamentales
Programación Procedural
>>> # Números enteros>>> 2+24>>> (50-5*6)/45>>> 7/32>>> 7/-3-3
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
Programación ProceduralTipos de Datos Abstractos fundamentales
Programación Procedural
>>> # Números reales
>>> 3 * 3.75 / 1.57.5>>> 7.0 / 23.5
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
Programación ProceduralTipos de Datos Abstractos fundamentales
Programación Procedural
Memoria ¿Dónde residen los datos?Variable ¿Es posible modificar los valores?
Codificación Unos y ceros. Tipo de datos. Enteros, reales,caracteres . . .
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
Programación ProceduralTipos de Datos Abstractos fundamentales
Programación Procedural
>>> # El signo = se usa para la asignaciónde un valor a una variable
>>> width = 20>>> height = 5*9>>> width * height900
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
Programación ProceduralTipos de Datos Abstractos fundamentales
Programación Procedural
>>> # Strings
>>> print "Hola mundo"Hola mundo
>>> mensaje = "Tengo sueño">>> print mensajeTengo sueño
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
Programación ProceduralTipos de Datos Abstractos fundamentales
Programación Procedural
>>> # Condiciones
>>> a = 1 # Ojo!, Asignación!>>> b = 2>>> a < bTrue>>> a <= b # Menor o igualTrue>>> a == bFalse>>> a < b and a > bFalse
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
Programación ProceduralTipos de Datos Abstractos fundamentales
Programación Procedural
>>> # Ciclos:
>>> i = 0>>> while i < 5:... print i... i = i + 1 #Ojo con los ciclos infinitos!...01234
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
Programación ProceduralTipos de Datos Abstractos fundamentales
Ejercicios
I Imprimir los objetos de una listaI Imprimir el primer elemento de una listaI Imprimir el último elemento de una listaI Imprimir los índices pares de una listaI Imprimir los objetos de una lista de manera reversaI Imprimir la sumatoria de una lista de números
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
Programación ProceduralTipos de Datos Abstractos fundamentales
Ejercicios
I Imprimir la tabla del 7I Imprimir la mayor potencia de 2 de 3 dígitosI Imprimir el número menor una listaI Imprimir la representación binaria de un númeroI Decir si una palabra es capicúaI Dado 2 palabras distintas, imprimir la palabra anterior en el
diccionario
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
Programación ProceduralTipos de Datos Abstractos fundamentales
Programación Procedural
>>> a = "aburrido">>> b = "aburrición">>> i = 0>>> while a[i] == b[i]:>>> i = i + 1>>> if a[i] < b[i]:>>> print a>>> else:>>> print b
# y si pueden ser iguales?
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
Programación ProceduralTipos de Datos Abstractos fundamentales
Programación Procedural
>>> # funciones
>>> def func1 (a):>>> return a + 1
>>> func1 (4)5
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
Programación ProceduralTipos de Datos Abstractos fundamentales
Programación Procedural
>>> # funciones
>>> def func2 (a,b):>>> return a + b
>>> func2 (10, 5)15
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
Programación ProceduralTipos de Datos Abstractos fundamentales
Ejercicios
I Escribir una función que devuelva la distancia (x,y) al (0,0)I Dado 2 listas, lat y long, imprimir cuál coordenada está más
cerca del (0,0)I Dada esas listas imprimir el par de coordenadas más cercanasI Intercalar 2 listas ordenadas para formar otra lista ordenadaI Sumar 2 polinomiosI Multiplicar 2 polinomios
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
Programación ProceduralTipos de Datos Abstractos fundamentales
Tipos de Datos Abstractos fundamentales
Listas Acceso a los elementos aleatoriamente, por un índiceSecuencias Acceso secuencial a los elementos
Pilas Acceso únicamente al TopeColas Acceso únicamente a la Cola
Conjuntos Sin orden y ni repetición! Acceso mediantecuantificadores: ∃, ∀ . . .
Diccionarios Acceso por clave
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
Programación ProceduralTipos de Datos Abstractos fundamentales
TDA fundamentales - Pilas
>>> stack = [3, 4, 5]>>> stack.append(6)>>> stack.append(7)>>> stack[3, 4, 5, 6, 7]>>> stack.pop()7>>> stack[3, 4, 5, 6]>>> stack.pop()6>>> stack.pop()5>>> stack[3, 4]
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
Programación ProceduralTipos de Datos Abstractos fundamentales
TDA fundamentales - Colas
>>> queue = ["Eric", "John", "Michael"]>>> queue.append("Terry") # Terry arrives>>> queue.append("Graham") # Graham arrives>>> queue.pop(0)’Eric’>>> queue.pop(0)’John’>>> queue[’Michael’, ’Terry’, ’Graham’]
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
Programación ProceduralTipos de Datos Abstractos fundamentales
TDA fundamentales - Conjuntos
>>> basket = [’apple’, ’orange’, ’apple’, ’pear’,’orange’, ’banana’]>>> fruit = set(basket)>>> fruitset([’orange’, ’pear’, ’apple’, ’banana’])>>> ’orange’ in fruitTrue>>> ’crabgrass’ in fruitFalse
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
Programación ProceduralTipos de Datos Abstractos fundamentales
TDA fundamentales - Conjuntos
>>> a = set(’abracadabra’)>>> b = set(’alacazam’)>>> aset([’a’, ’r’, ’b’, ’c’, ’d’])>>> a - bset([’r’, ’d’, ’b’])>>> a | bset([’a’, ’c’, ’r’, ’d’, ’b’, ’m’, ’z’, ’l’])>>> a & bset([’a’, ’c’])>>> a ^ b #o exclusivoset([’r’, ’d’, ’b’, ’m’, ’z’, ’l’])
Lic. Ernesto Mislej Curso de Nivelación de Algoritmos
Programación ProceduralTipos de Datos Abstractos fundamentales
TDA fundamentales - Diccionarios
>>> tel = {’jack’: 4098, ’sape’: 4139}>>> tel[’guido’] = 4127>>> tel{’sape’: 4139, ’guido’: 4127, ’jack’: 4098}>>> tel[’jack’]4098>>> del tel[’sape’]>>> tel[’irv’] = 4127>>> tel{’guido’: 4127, ’irv’: 4127, ’jack’: 4098}>>> tel.keys()[’guido’, ’irv’, ’jack’]>>> tel.has_key(’guido’)True>>> ’guido’ in telTrue Lic. Ernesto Mislej Curso de Nivelación de Algoritmos