Programación, Algortimos y Estructuras de Datos

48
Programación, Algortimos y Estructuras de Datos Maestría en BioInformática

description

Programación, Algortimos y Estructuras de Datos. Maestría en BioInformática. Conceptos generales. Curso de introducción a la programación imperativa. Orientado a través de ejemplos a problemas vinculados con la biología. Lenguaje de scripting (Python). Características del curso. - PowerPoint PPT Presentation

Transcript of Programación, Algortimos y Estructuras de Datos

Page 1: Programación, Algortimos y Estructuras de Datos

Programación, Algortimos y Estructuras de Datos

Maestría en BioInformática

Page 2: Programación, Algortimos y Estructuras de Datos

Conceptos generales

• Curso de introducción a la programación imperativa.

• Orientado a través de ejemplos a problemas vinculados con la biología.

• Lenguaje de scripting (Python)

Page 3: Programación, Algortimos y Estructuras de Datos

Características del curso

• Docente: Pablo García ([email protected])

• Clases: Salón 501, Facultad de Ingeniería• web:

http://www.pedeciba.edu.uy/bioinformatica/paed/

• Evaluación: laboratorios y examen

Page 4: Programación, Algortimos y Estructuras de Datos

Bibliografía• Documentación de Python

(http://www.python.org/)– Tutorial - Introduce informalmente los conceptos y

propiedades básicas del lenguaje Python.– Bibliotecas - Describe todas las funciones y métodos

de la librería estándar de python– Referencia del Lenguaje - Describe con precisión la

sintaxis y semántica del lenguaje Python• Cursos del Instituto Pasteur– Introduction to Programming using Python Curso de

introducción a los conceptos de programación orientado a biólogos.

Page 5: Programación, Algortimos y Estructuras de Datos

Ambiente de programación

• Sistema operativo: windows o linux• Lenguaje de Progrmación: Python, versión

2.7.x (http://www.python.org/)• Entorno de desarrollo (IDE) : Idle

(http://docs.python.org/release/<vers>/library/idle.html)

Page 6: Programación, Algortimos y Estructuras de Datos

El lenguaje Python• Creado en 1989 por Guido van Rossum (CWI,

Amsterdam)• Lenguaje de propósito general de alto nivel.• Énfasis en la legibilidad del código• Multi paradigma• Orientado a indentación• Manejo automático de memoria• Tipado dinámico• Interpretado• Apropiado para scripting

Page 7: Programación, Algortimos y Estructuras de Datos

Introducción a la Programación

• Computadoras y Lenguajes• Organización de la Computadora– Dispositivos de entrada

• Teclado• Mouse

– Dispositivos de salida• Terminal• Impresora

– Memoria: interna, externa.– Unidad Central de Proceso (UCP)

Page 8: Programación, Algortimos y Estructuras de Datos

Lenguajes de alto nivel

• Lenguaje de Máquina: Instrucciones básicas del procesador de la máquina. Binario o hexadecimal. Muy difícil de escribir programas

• Lenguaje assembler: Similar al lenguaje de máquina pero con una sintaxis más cómoda.

• Lenguajes de alto nivel: Más cercanos a nuestra manera de razonar y de expresarnos.

• Compiladores e Intérpretes: Aplicaciones que permiten ejecutar un programa escrito en un lenguaje de alto nivel

Page 9: Programación, Algortimos y Estructuras de Datos

Compilación

• Lenguajes de alto nivel: Pascal, Java, C, Python, Perl, etcétera.

• La computadora no "entiende" los lenguajes de alto nivel.

• Un compilador es un programa que traduce a código de máquina:

Page 10: Programación, Algortimos y Estructuras de Datos

Lenguajes Interpretados

• Un intérprete es un programa que – toma como entrada un programa fuente (por ej.

python) – ejecuta las instrucciones del programa

• El intérprete está escrito en lenguaje de máquina• Lenguajes interpretados: Basic, Lisp, Perl,

JavaScript, Php, Python• Lisp, Java y Python permiten una compilación

intermedia (byte compilation)

Page 11: Programación, Algortimos y Estructuras de Datos

Programación en Python

Page 12: Programación, Algortimos y Estructuras de Datos

Identificadores en Python

• Usados para dar nombre a los diferentes objetos que componen un programa:– variables – funciones– clases– módulos– paquetes

• En el ejemplo anterior: altura, base, input

Page 13: Programación, Algortimos y Estructuras de Datos

Sintaxis de los identificadores

• Definición: Un identificador es una secuencia de caracteres alfanuméricos, el primero de los cuáles debe ser alfabético.

• Gramática BNF (Backus/Naur Form):

Page 14: Programación, Algortimos y Estructuras de Datos

Mayúsculas y Minúsculas

• Python es un lenguaje case sensitivo: distingue mayúsculas de minúsculas

• Así por ejemplo, los identificadores casa, CASA, Casa y cAsA son todos distintos.

• Lenguajes case insensitivos: Pascal, Basic, Fortran

• Lenguajes case sensitivos: C, Java, Perl, Python

Page 15: Programación, Algortimos y Estructuras de Datos

Palabras reservadas

• También llamadas keywords• Son ciertos identificadores cuyo uso se

prohíbe• Los utiliza el lenguaje con propósitos

particulares como parte de las instrucciones• En el ejemplo anterior se utiliza la palabra

reservada print, • Muchos editores colorean las palabras

reservadas (emacs, vim, gedit, kate, idle)

Page 16: Programación, Algortimos y Estructuras de Datos

Palabras reservadas en Python

Page 17: Programación, Algortimos y Estructuras de Datos

Memoria • El programa anterior utilizará tres variables: altura,

base, area• Una variable está formada por:– un nombre (identificador)– un valor – un tipo

• El valor y el tipo de una variable puede cambiar en el transcurso de un programa

• La memoria de un programa está constituida por el conjunto de variables utilizadas

• Más adelante: Espacio de nombres

Page 18: Programación, Algortimos y Estructuras de Datos

Instrucción de Asignación• El valor de una variable puede ser modificado en

el transcurso del programa.• La instrucción de asignación tiene esta forma:– identificador = expresión

• Asigna el valor a la variable correspondiente • Si ya tenía valor, se pierde (asignación

destructiva)• Si no tenía valor, la variable se crea con la

asignación (creación dinámica)• El valor puede ser una expresión a ser evaluada

Page 19: Programación, Algortimos y Estructuras de Datos

Instrucciones y Programas

• Un programa es una secuencia de instrucciones

• Dos tipos de instrucciones:– simples: expresión, asignación, break, continue y

otras – compuestas: if, while, for y otras@

Page 20: Programación, Algortimos y Estructuras de Datos

Ejemplos de asignaciones

Page 21: Programación, Algortimos y Estructuras de Datos

Sintaxis de la Asignación

Page 22: Programación, Algortimos y Estructuras de Datos

Asignación en cadena

Page 23: Programación, Algortimos y Estructuras de Datos

Asignación en Paralelo

Page 24: Programación, Algortimos y Estructuras de Datos

El Concepto de Tipo

• Los tipos permiten indicar la característica de los valores (datos) manipulados en un programa.

• Toda variable tiene asociado un tipo.• Esto ocurre también con los operadores y las

funciones.• Poseer tipos permite detectar ciertos errores de

construcción en el código (chequeo de tipos).• Por ejemplo:3 + 4 es correcto (integer)• 3 / 'a' es incorrecto• En Python el chequeo de tipos se hace en tiempo de

ejecución (tipado dinámico)

Page 25: Programación, Algortimos y Estructuras de Datos

Tipos Numéricos

• Números enteros– int números entre -2147483648 y 2147483647– long no acotado– boolean ({0,1})

• Números Reales– float representados en punto flotante de doble

precisión• Numeros Complejos– complex

Page 26: Programación, Algortimos y Estructuras de Datos

Literales y expresiones

• Cada tipo tiene su forma de literales (valores constantes)

• Booleanos: True False• Enteros: 14151234• Reales: 14.03.12 0.1 .10• Complejos: 4+3jcomplex(8.2,0.99)• La expresiones se construyen con los

operadores habituales: + - * /

Page 27: Programación, Algortimos y Estructuras de Datos

Expresiones Aritméticas• Las expresiones más simples son las variables y

los literales.• Las otras expresiones se construyen usando los

operadores + - * // / % **:• Ejemplos de expresiones– a (variable numérica)– 12– 13.4– 4 + 2– (a + 3) / x– (a + 8) / (b + 2.0) * (c -3.5 -b)

Page 28: Programación, Algortimos y Estructuras de Datos

Evaluando Expresiones en Python

Page 29: Programación, Algortimos y Estructuras de Datos

Conversión implícita (coerción)

• Si en una expresión aparece al menos un operando real, todo los otros operandos se transforman a real.

• Si se quiere evaluar 4 + 5.3 se hace 4.0 + 5.3• Esta transformación se llama coerción: un valor

es forzado a cambiar de tipo automáticamente.• Python provee operadores de conversión

explícitos: float(), long(), bool(), int(), complex()

Page 30: Programación, Algortimos y Estructuras de Datos

Tipo de una expresión

• El tipo de una expresión puede ser consultado con el operador type()

Page 31: Programación, Algortimos y Estructuras de Datos

Comparaciones

• Los operadores de comparación dan como resultado un boolean, estos son:< menor<= menor o igual > mayor>= mayor o igual<>, != distinto== igual

• Se pueden encadenar: x < y <= z se interpreta como (x < y) and (y <= z)

Page 32: Programación, Algortimos y Estructuras de Datos

Ejemplos de comparaciones

Page 33: Programación, Algortimos y Estructuras de Datos

Operadores booleanos

• Son operadores que permiten construir condiciones compuestas

• Todos los números se interpretan como booleanos: el 0 es False y todos los demás son True

• Los operadores and y or se evalúan en modalidad perezoza de izquierda a derecha

Page 34: Programación, Algortimos y Estructuras de Datos

Precedencia y asociatividad de operadores

• or• and• not• <, <=, >, >=, <>, !=, ==• +, -• /, //, %• +x, -x, ~x• **• Operadores de igual precedencia asocian de izquierda

a derecha (excepto comparadores que encadenan de izquierda a derecha)

Page 35: Programación, Algortimos y Estructuras de Datos

Ejemplos

• not a < b or c <> x +1• a = b + 2 * 3 and x <= 4 or b == 0• not 3 + 4 < 8 != 3 * 6 + 2 and 8 > x

Page 36: Programación, Algortimos y Estructuras de Datos

Cadenas de caracteres

• Las cadenas de caracteres (strings) se escriben con comillas dobles o simples

Page 37: Programación, Algortimos y Estructuras de Datos

Cadenas y líneas

• iste un carácter especial: fin de línea• Es un carácter de control que produce un

cambio de línea en la salida• Se representa como \n

Page 38: Programación, Algortimos y Estructuras de Datos

Continuación de cadena

• Una cadena se puede escribir en varias líneas sin incluir fin de línea:

Page 39: Programación, Algortimos y Estructuras de Datos

Comillas triples

• Las cadenas pueden encerrarse entre 3 comillas simples o dobles.

• En ese caso se incluyen los fines de línea

Page 40: Programación, Algortimos y Estructuras de Datos

Modo textual (raw)

• Si la cadena es precedida por el carácter r se interpreta como raw string

• Se pueden escribir varias líneas pero se requiere carácter de continuación

Page 41: Programación, Algortimos y Estructuras de Datos

Concatenación y repetición

• Las cadenas permiten las operaciones de:• concatenación: pegar dos cadenas, con el

operador +• repetición: repetir muchas veces la misma

cadena, con el operador *

Page 42: Programación, Algortimos y Estructuras de Datos

Concatenación de literales

• Dos cadenas literales consecutivas se concatenan automáticamente

• Solo funciona con literales

Page 43: Programación, Algortimos y Estructuras de Datos

Índices de cadenas

• Los caracteres de una cadena pueden obtenerse utilizando la operación de indizado

• Se pueden obtener rebanadas(slices) utilizando

Page 44: Programación, Algortimos y Estructuras de Datos

Inmutabilidad de las cadenas

• No es posible cambiar parcialmente una variable cadena

Page 45: Programación, Algortimos y Estructuras de Datos

Índices negativos

• Los índices negativos permiten contar desde el final de la cadena

Page 46: Programación, Algortimos y Estructuras de Datos

Esquema para rebanadas

• Un diagrama que ilustra como se comportan las rebanadas:– Los índices se asocian con bordes de las celdas– La rebanada de i a j consiste de todos los

caracteres comprendidos entre los bordes i , j

Page 47: Programación, Algortimos y Estructuras de Datos

Largo de una cadena

Page 48: Programación, Algortimos y Estructuras de Datos

Subcadena