Curso de Nivelación de Algoritmos - Clase 2

Preview:

Citation preview

Programación ProceduralTipos de Datos Abstractos fundamentales

Curso de Nivelación de AlgoritmosClase 2

Lic. Ernesto Mislejemislej@dc.uba.ar

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

Recommended