introduccio´n a algoritmos con python - grupo de … · la programacio´n orientada a objetos...

117
Universidad de Oviedo Departamento de F´ ısica Grado en F´ ısica Introducci´ on a la F´ ısica Computacional Introducci´ on a algoritmos con python Resoluci´ on de problemas en un ordenador Algoritmos Lenguajes de programaci´ on Bases de la programaci´ on imperativa

Upload: hoangtu

Post on 02-Aug-2018

227 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Universidad de Oviedo Departamento de Fısica

Grado en FısicaIntroduccion a la Fısica Computacional

Introduccion a algoritmos con python

Resolucion de problemas en un ordenadorAlgoritmosLenguajes de programacionBases de la programacion imperativa

Page 2: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Resolucion de problemas en un ordenador

Page 3: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Proceso en varios pasos

Se necesitan resolver varios sub-problemas:

Modelo fısicoModelo matematicoModelo informatico (algoritmo)Programa de ordenador

Page 4: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Modelo fısico

Se plantea el problema desde el punto de vista fısico(o quımico, biologico, sociologico, etc., dependiendode la disciplina de que se trate).

Se aplica la teorıa correspondiente, teniendoen cuenta sus limitaciones y realizando lassimplificaciones pertinentes.

Page 5: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Modelo matematico

Se describen las formulas algebraicas necesarias,si hay que resolver sistemas de ecuaciones, si senecesitan integrales, etc.

Se debe plantear el problema usando la matematicaadecuada.

Por ejemplo, la fısica cuantica necesita el uso denumeros complejos, pero la dinamica clasica usanumeros reales.

Page 6: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Modelo informatico

Los ordenadores no pueden (de momento) codificardirectamente el modelo matematico.

Se necesita desarrollar un algoritmo, que consisteen una descripcion de las instrucciones necesariaspara luego codificar la resolucion del problema en unordenador.

Un algoritmo es basicamente una ‘receta’.

Page 7: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Programa informatico

Consiste en la traduccion del algoritmo a un lenguajeconcreto de programacion, que realiza realmente lacomputacion.

La computacion puede ser algo matematico(solucionar un sistema de ecuaciones), pero tambienpuede ser una computacion simbolica (buscar yreemplazar el texto de un documento, o realizar unatraduccion de una lengua a otra).

Page 8: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Problema ejemplo

Se deja caer una piedra desde el brocal de un pozo yqueremos conocer la distancia al brocal de la piedrasegun cae para diferentes instantes de tiempo.

(Aunque de momento algunas partes en la resolucionde este ejemplo no las hemos visto, no es difıcilentender el metodo. Ya volveremos sobre ellas luego.)

Page 9: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Modelo fısico

La piedra sufre una caıda libre (aproximadamente).

La caıda libre es el movimiento de un cuerpo bajola accion de la gravedad.

Existen simplificaciones fısicas:

• en las cercanıas de la superficie terrestrese puede suponer la intensidad del campogravitatorio, g, constante;

• se desprecia el rozamiento del aire;• se supone el cuerpo puntual.

Page 10: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Modelo matematico

Definicion de algunas variables:

profundidad respecto a la superficie terrestre, y;tiempo, t;intensidad del campo gravitatorio (aceleracion dela gravedad), g.

Tomando y = 0, cuando t = 0, se tiene y = 1

2gt2.

Page 11: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Algoritmo informatico

Instante inicial ti = 0, instante final tf, con n pasos temporales.

definicion de datos:

g, tf, t : numero real

n, i : numero entero

parte ejecutable:

leer g, tf, n

asignar t = 0, dt = tf/n

para i = 1 hasta n hacer

asignar t = t+ dt

asignar y = 0.5gt2

imprimir t, y

fin para

Page 12: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Programa de ordenador (en python)

g = input("g ? ")

tf = input("tf ? ")

n = input("n ? ")

dt = tf/float(n)

t = 0

for i in range(n):

t = t+dt

y = 0.5*g*t**2

print("t = %10.5f y = %10.5f" % (t, y))

Page 13: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Salida del programa (por pantalla)

g ? 9.8

tf ? 2

n ? 10

t = 0.20000 y = 0.19600

t = 0.40000 y = 0.78400

t = 0.60000 y = 1.76400

t = 0.80000 y = 3.13600

t = 1.00000 y = 4.90000

t = 1.20000 y = 7.05600

t = 1.40000 y = 9.60400

t = 1.60000 y = 12.54400

t = 1.80000 y = 15.87600

t = 2.00000 y = 19.60000

Page 14: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Algoritmos

Page 15: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Que es un algoritmo

Es un conjunto de instrucciones a aplicar a unos datosde entrada, y que termina en un numero finito depasos, proporcionandonos resultados.

Los algoritmos resuelven clases de problemas, o sea,problemas generales.

Ejemplo: disene un algoritmo para calcular el area deun cırculo de radio cualquiera.

Page 16: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Algoritmo para calcular el area de un cırculo

Se debe conocer el radio r del cırculo. Tendrıamos,por ejemplo:

definicion de datos:r, a : numero realπ : numero real, constante : 3.1415926535897932

parte ejecutable:leer rasignar a = πr2

imprimir a

Page 17: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Ejercicio A1 (para resolver en clase)

Describa un algoritmo para pasar de coordenadaspolares (r, θ) a coordenadas cartesianas (x, y).

ry

Nota: suponga que elcalculo de las funcionesmatematicas clasicas esconocido y que su uso esel habitual.

Page 18: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Solucion al ejercicio A1

definicion de datos:r, θ : numero realx, y : numero real

parte ejecutable:leer r, θasignar x = r cos θasignar y = r sin θimprimir x, y

Page 19: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Ejercicio propuesto A2

Prepare un algoritmo para calcular el area de unacorona circular a partir del radio interno, r, y delradio externo, R.

Page 20: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Lenguajes de programacion

Page 21: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Que es un lenguaje de programacion

Es un lenguaje formal disenado para expresar procesosque pueden ser llevados a cabo por maquinas comolas computadoras.

Esta formado por un conjunto de sımbolos y reglassintacticas y semanticas que definen su estructura yel significado de sus elementos y expresiones.

Page 22: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Que es un lenguaje informatico

Es un termino que engloba a los lenguajes deprogramacion y a otros mas, como por ejemploHTML (lenguaje para el marcado de paginas webque no es propiamente un lenguaje de programacion,sino un conjunto de instrucciones que permitenestructurar el contenido de los documentos).

Page 23: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Que es codigo fuente

El codigo fuente de un programa informatico (osoftware) es un conjunto de lıneas de texto que sonlas instrucciones que debe seguir la computadora paraejecutar dicho programa.

Por tanto, en el codigo fuente de un programa estaescrito por completo su funcionamiento.

Page 24: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Que es codigo maquina

El codigo maquina consiste en instruccionesejecutables, conocidas por el procesador sobre el queesta disenado el ordenador.

Cada procesador conoce solo su lenguaje propio, porlo que el codigo maquina debe ser preparado para sufuncionamiento en cada ordenador concreto.

La traduccion del codigo fuente a codigo maquinase realiza mediante ciertos programas denominadoscompiladores e interpretes.

Page 25: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Compiladores e interpretes

Los compiladores traducen de una vez el codigofuente a lenguaje de maquina. Esto da rapidez deejecucion pero el desarrollo del programa es lento.

Los interpretes traducen el codigo fuente instruccionpor instruccion a lenguaje de maquina. Esto permitedesarrollos mas rapidos pero ejecuciones lentas. Noobstante, se puede ir modificando continuamente elcodigo fuente, de tal manera que el codigo puedeescribirse a sı mismo.

Page 26: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Que es programar

Es el proceso por el cual se escribe, se prueba, sedepura, se compila (o interpreta) y se mantiene elcodigo fuente de un programa informatico.

Los errores en programacion (bugs en ingles) soncasi inevitables. Por ello, es muy importante elmantenimiento de las aplicaciones informaticas.

Lenguajes amigables, como python, facilitan esemantenimiento.

Page 27: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Que lenguaje usar

Existen miles de lenguajes de programacion, cadauno apropiado a una tarea concreta (generalmente),aunque existen lenguajes de proposito general comopython, que usaremos nosotros.

El uso del lenguaje adecuado a cada problemaes relevante: en una disciplina los algoritmosnecesarios son muy diferentes a los de otra disciplinay es probable que las rutinas pertinentes estenpre-programadas en un lenguaje y no en el otro.

Page 28: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Tipos de lenguajes de programacion

Principalmente existen estos (aunque hay lenguajes‘mixtos’):

DeclarativosImperativosOrientados a objetos

En todos ellos se utilizan sentencias, instrucciones ocomandos en modo texto (normalmente) para escribirlos programas.

Page 29: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Programacion declarativa (I/II)

En ella las sentencias que se utilizan describenel problema que se quiere solucionar, pero no lasinstrucciones necesarias para solucionarlo.

Esto ultimo se realiza mediante mecanismos internosde inferencia de informacion a partir de la descripcionrealizada.

No existen asignaciones.

Page 30: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Programacion declarativa (II/II)

Existen tres subtipos de lenguajes declarativos:

Logico, ejemplo de lenguaje: Prolog.

Algebraico, ejemplo de lenguaje: SQL.

Funcional, ejemplo de lenguaje: Haskell.

Page 31: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Programacion imperativa

En ella se describe paso a paso un conjunto deinstrucciones que deben ejecutarse para variar elestado del programa y hallar la solucion.

Ejemplos de lenguaje: Fortran, C, Python.

Nos centraremos en este tipo de programacion,usando python como lenguaje.

Page 32: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Programacion orientada a objetos (I/II)

La programacion orientada a objetos (POO) utilizaobjetos como elementos fundamentales en laconstruccion de la solucion.

Un objeto es una abstraccion de algun hecho o entedel mundo real, con atributos que representan suscaracterısticas o propiedades, y metodos que emulansu comportamiento o actividad.

Page 33: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Programacion orientada a objetos (II/II)

Todas las propiedades y metodos comunes a losobjetos se encapsulan o agrupan en clases.

Una clase es una plantilla, un prototipo para crearobjetos; en general, se dice que cada objeto es unainstancia o ejemplar de una clase.

Ejemplos de lenguaje: C++, Java, Python.

(No usaremos las caracterısticas OO de python.)

Page 34: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Bases de la programacion imperativa

Page 35: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Comandos en programacion imperativa

Las instrucciones tienen una apariencia distinta enlenguajes de programacion diferentes, pero existenalgunas funcionalidades basicas que se presentan encasi todo lenguaje:

Declaracion de tipos de dato.Entrada y salida.Operaciones con datos.Subrutinas y funciones.Condicionales.Bucles.

Page 36: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Calculo secuencial y calculo paralelo

Existen computadores donde se pueden realizarcalculos en paralelo (por ejemplo, los clusters deprocesadores para calculo masivo).

No obstante, nosotros abordaremos solo el calculo enserie o secuencial, mas sencillo y adecuado al nivel denuestro curso.

Page 37: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Algoritmos con estructura secuencial

En calculo en serie, cada instruccion se ejecutacompletamente antes de pasar a ejecutarse lasiguiente.

Los algoritmos disenados de esta manera sedenominan en serie.

Por tanto, los programas preparados para este tipode algoritmos tienen estructura secuencial.

Page 38: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Constantes y variables (I/II)

A veces, al manejar numeros fijos como π ≈3.14159, se necesitan constantes. Algunos lenguajesde programacion permiten declarar explıcitamenteconstantes. Otras veces su uso es interno.

Sin embargo, lo normal es que los datos que semanejan sean modificados de acuerdo al algoritmo.

Para ello se utilizan variables. La accion de modificarlos datos contenidos en una variable se denominaasignacion.

Page 39: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Constantes y variables (II/II)

En programacion una variable es un espacio enmemoria al que se accede mediante un identificador,que tiene asociado el tipo de dato, su manejo, etc.

En el espacio de memoria esta almacenado un valor(posiblemente con mas informacion interna asociadael tipo de dato).

En python se asigna una variable usando el signoigual:a = dato

Page 40: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Ejemplo de algoritmo secuencial (en python)

# Esta lınea es un comentario

# Ademas, las lıneas en blanco se saltan

pi = 3.1415926535897932

# El radio, r, es conocido previamente

# Calculo del area del cırculo

a = pi*r*r

# Calc. de la longitud de la circunferencia

l = 2*pi*r

Page 41: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Ejercicio A3 (para resolver en clase)

Prepare un trozo de codigo en python, para calcularel semiperımetro, p, y el area, A, de un triangulomediante la formula de Heron a partir de laslongitudes de los lados a, b y c:

p = (a+b+c)/2, A =√

p(p− a)(p− b)(p− c).

Suponga que los lados del triangulo son conocidospreviamente.

(En python la potenciacion se calcula usando eloperaror **.)

Page 42: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Solucion al ejercicio A3

# a, b y c son conocidos previamente

# Calculo del semiperımetro del triangulop = (a+b+c)/2.0

# Calculo del area del trianguloA = (p*(p-a)*(p-b)*(p-c))**0.5

Page 43: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Comandos en programacion imperativa

Declaracion de tipos de dato.Entrada y salida.Operaciones con datos.Subrutinas y funciones.Condicionales.Bucles.

Page 44: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Declaracion de tipos de dato (I/II)

Los computadores manejan muchos tipos de datos:numeros enteros y reales, tiras de caracteres,agrupaciones de datos homogeneas y heterogeneas,etc.

En muchos lenguajes, se necesita declarar que tipotiene un dato.

Por ejemplo, en C, un entero se define anteponiendoint a la variable o constante a la que afecte.

Page 45: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Declaracion de tipos de dato (II/II)

En python no es necesario declarar las variables:cuando se realiza la asignacion de un dato a unavariable, a, mediante:

a = dato

El tipo de dato de la variable coincide con el tipo delo que hay a la derecha del signo igual.

Page 46: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Comandos en programacion imperativa

Declaracion de tipos de dato.Entrada y salida.Operaciones con datos.Subrutinas y funciones.Condicionales.Bucles.

Page 47: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Instrucciones de entrada y salida

Estas instrucciones suelen conllevar el uso de ficheros(o archivos), que se pueden manejar en modo lecturay/o escritura.

Por ejemplo, en python, leer de un fichero, f, serıa:

x = f.read()

Tambien existen otras instrucciones ligadas a obtenerinformacion adicional sobre los ficheros, abrirlos ycerrarlos, etc.

Page 48: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Entrada y salida simples en python

De momento, para su uso en lo que sigue, en python

la lectura simple de una variable (con un mensajeexplicativo) se puede hacer por teclado:

v = input("Introduzca velocidad ")

La salida por pantalla de varias variables, a, b y c, sehace mediante:

print(a, b, c)

Page 49: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Comandos en programacion imperativa

Declaracion de tipos de dato.Entrada y salida.Operaciones con datos.Subrutinas y funciones.Condicionales.Bucles.

Page 50: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Operaciones con datos (I/II)

Con los datos, ya sean expresados directamente(como el numero 33) o a traves de una variable, sepueden hacer operaciones.

Las operaciones permitidas dependen del tipo dedato. Por ejemplo, con los numeros se puedenhacer las operaciones aritmeticas conocidas enmatematicas.

Page 51: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Operaciones con datos (II/II)

Se denominan operadores a sımbolos (como *, +)que indican que con los datos se debe realizar ciertaoperacion.

En python los operadores son infijos, esto es, secolocan entre los datos sobre los que opera. Ejemplo:

3 * 4

En algunos lenguajes se puede extender el uso deoperadores a tipos de datos definidos por el usuario.

Page 52: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Precedencia de las operaciones

Las operaciones se escriben en una sola lınea,y se realizan generalmente de izquierda a derecha(excepto las potenciaciones en la mayorıa de loslenguajes).

Existe una precedencia de unos operadores sobreotros. Cada lenguaje tiene sus reglas de precedencia,pero en general se realizan primero la potenciacion(**), luego las multiplicaciones (*) y divisiones (/),y luego las sumas (+) y restas (-).

Page 53: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Uso de los parentesis

Las operaciones se pueden agrupar usando parentesis(como en las operaciones aritmeticas).

Esto sirve para indicar que operaciones se realizanprimero (se van quitando los parentesis mas interioresal realizarse esas operaciones).

En una expresion el numero de parentesis de abrir (debe ser igual al numero de parentesis de cerrar ).(Los editores de texto suelen tener un destacado deparentesis.)

Page 54: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Ejemplos de operaciones

Por ejemplo: 3a7b

se puede codificar

3*a/7/b y NO: 3*a/7*b

Otros ejemplos (con llamadas a funciones):

13*log(x)+sin(y)

24+12+6*7*z

y0+v0*t+0.5*g*t**2

Page 55: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Ejemplos de operaciones con parentesis

La expresion: se codifica:

(

2 sin x+ cos y3 cos x− sin y

)4

((2*sin(x)+cos(y))/(3*cos(x)-sin(y)))**4

ab(c+ d)log(a+ log b)

sqrt(a*b*(c+d))/log(a + log (b))

f

g + h

2 sinx

2 + y

f/(g+h)/(2 *sin(x/(2+y)))

Page 56: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Comandos en programacion imperativa

Declaracion de tipos de dato.Entrada y salida.Operaciones con datos.Subrutinas y funciones.Condicionales.Bucles.

Page 57: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Subrutinas y funciones

Una subrutina o subprograma (tambien llamadaprocedimiento o funcion), codifica un subalgoritmoque permite resolver una tarea especıfica.

Esto permite modularizar el codigo, haciendolomas facil de entender. Ademas, se usan subrutinaspreviamente desarrolladas por otros programadores,que estan bien disenadas y probadas.

Pueden devolver o no un valor de retorno.

Page 58: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Definiendo subrutinas y funciones

Para definir una subrutina se necesita:

Un identificador que le da nombre.Tipo(s) de dato(s) de retorno que sedevuelve(n) al terminar su ejecucion.Una lista de parametros: conjunto de argumentos(pueden ser cero, uno o mas) que la funciondebe recibir para realizar su tarea.El codigo: conjunto de ordenes y sentencias quese deben ejecutar.

Page 59: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Algunas consideraciones sobre subrutinas

Existe diversidad en la definicion de funciones ysubrutinas en los diversos lenguajes de programacion.

Por ejemplo, los argumentos (parametros) pueden seraccedidos por valor, por referencia o por nombre.

Ademas, las variables que se usan en las funciones ysubrutinas pueden tener caracter local o global.

Glosaremos el tema con python.

Page 60: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Ejemplo de funcion (en python)

(Notese el indentado y el caracter :)

def circunferencia (r):# El radio, r, es un argumento

pi = 3.1415926535897932a = pi*r*rl = 2*pi*r

return a, l

Page 61: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Ejercicio A4 (para resolver en clase)

Prepare una funcion en python que transforme lascoordenadas polares en coordenadas cartesianas yque devuelve esta ultimas.

Page 62: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Solucion al ejercicio A4

def pol a rect (r, th):# El radio, r, y el angulo, th,# son argumentos (numeros reales)

x = r*cos(th)y = r*sin(th)

return x, y

Page 63: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Ejercicio propuesto A5

(Este ejercicio se propone como tarea a entregar porel estudiante.)

Prepare una funcion en python que utilice la formulade Stirling para aproximar el factorial de un numeroentero n (que se pasa como argumento).

La funcion debe retornar el logaritmo neperiano delfactorial de n.

Page 64: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Bibliotecas de subrutinas y funciones

Aparte de las funciones definidas por el usuario,existen bibliotecas (a veces denominadas “librerıas”,mala traduccion del ingles library ).

Contienen funciones y subrutinas predefinidaspreviamente, con el objeto de realizar calculos otareas de interes para muchos usuarios del lenguaje.

Ejemplos: funciones matematicas, para manejargrandes cantidades de texto, para comunicarordenadores a distancia, etc.

Page 65: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Comandos en programacion imperativa

Declaracion de tipos de dato.Entrada y salida.Operaciones con datos.Subrutinas y funciones.Condicionales.Bucles.

Page 66: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Cambiando la ejecucion secuencial

La estructura secuencial solo permite codificaralgoritmos simples pues no se puede cambiar laejecucion del codigo en base a valores concretos delas variables.

Por eso mismo los lenguajes poseen instruccionescondicionales, que permiten bifurcar la ejecuciondependiendo del valor de alguna variable.

Page 67: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Instrucciones condicionales

Este tipo de instrucciones trabajan con datos de tipologico (tambien llamado booleano).

Existen diversas instrucciones condicionales, como if(presente en casi todos los lenguajes), y case (oswitch...case) que esta en muchos lenguajes (perono en python, pero puede simularse facilmente concondicionales multiples).

Page 68: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Necesidad de las instrucciones condicionales

Ejemplo:

si llueve entoncesvamos al cine

en caso contrariovamos a dar un paseo

fin si

‘llueve’ es una condicion logica (verdadero si estalloviendo y falso si no).

Page 69: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Instrucciones condicionales en python (I/II)

En el caso mas simple, se chequea un valor logico: sies verdadero se ejecuta una parte del codigo y si esfalso no (a veces se ejecuta otra parte del codigo).

si ... entonces

se codifica en python:

if ... :

Page 70: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Instrucciones condicionales en python (II/II)

en caso contrario se codifica en python (y otroslenguajes) usando else (no olvidarse del caracter :despues en python).

fin si no hace falta codificarlo en python: acaba elfragmento de codigo desindentando.

En python el indentado de las lıneas es parte de lasintaxis.

Page 71: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Condicional simple

(Notese el indentado y el caracter :)

if condicion:# codigo que se ejecuta# si condicion es verdadera.........

# codigo que se ejecuta despues

Page 72: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Condicional doble

if condicion:# codigo que se ejecuta# si condicion es verdadera...

else:# codigo que se ejecuta# si condicion es falsa...

# codigo que se ejecuta despues

Page 73: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Ejemplo de condicional (en python)

Convierte un numero en 0.0 si es negativo,multiplicandolo por 2.0 en otro caso:

if x < 0.0:x = 0.0

else:x = 2.0*x

Page 74: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Condicional multiple

if condicion1:

# codigo que se ejecuta

# si condicion1 es verdadera

...

elif condicion2:

# se ejecuta si condicion1 es falsa

# y condicion2 es verdadera

...

else:

# codigo que se ejecuta

# si ambas condiciones son falsas

...

# codigo que se ejecuta despues

Page 75: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Ejercicio A6 (para resolver en clase)

Prepare una funcion en python que devuelva el signode un numero: −1.0 si es negativo, 0.0 si es nulo, y1.0 si es positivo.

Page 76: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Solucion al ejercicio A6

def signo (x):# devuelve el signo de x

if x == 0.0:return 0.0

elif x < 0.0:return -1.0

else:return 1.0

Page 77: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Ejercicio A7 (para resolver en clase)

Prepare un fragmento de codigo en python con lafuncion definida a trozos siguiente:

f(x, a, b, c) =

0, x ≤ a,x−ab−a

, a < x ≤ b,c−xc−b

, b < x ≤ c,

1, c < x.

Page 78: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Solucion al ejercicio A7

def f (x, a, b, c):

# Debe ser a < b < c

if x <= a:

return 0

elif x <= b:

return (x-a)/(b-a)

elif x <= c:

return (c-x)/(c-b)

else:

return 1

Page 79: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Ejercicio propuesto A8 (I/III)

(Este ejercicio se propone como tarea a entregar porel estudiante.)

Despreciando el rozamiento del aire, la velocidad deescape de un cuerpo lanzado desde la superficie terrestrees:

vE =√

2gR,

donde g es la aceleracion de la gravedad en la superficie

y R el radio terrestre.

Page 80: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Ejercicio propuesto A8 (II/III)

Cuando lanzamos un cuerpo con velocidad inicial v < vEdesde la superficie (despreciando el rozamiento del aire)alcanza una altura maxima:

h =R

1− (v/vE)2.

Cuando v ≥ vE , entonces a una gran distancia de laTierra su velocidad final es:

vf =√

v2 − v2E .

Page 81: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Ejercicio propuesto A8 (III/III)

Prepare un programa en python que, tomando comodatos conocidos g y R (asignados directamente), nospida v por teclado, que calcule la velocidad de escape (yla imprima), y que

si la velocidad es menor que la de escape imprimala altura maxima que alcanza;si la velocidad es igual a la de escape que lo diga;si la velocidad es mayor que la de escape, que digaque el cuerpo escapa de la Tierra y que imprimala velocidad final.

Page 82: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Ejercicio complementario 1

¿Cual es el resultado final de la variable z?

x=2

if x != 3:

if x==1:

z=10

else:

z=x

else:

z=0

Page 83: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Ejercicio complementario 2

Para la ecuacion ax2 + bx + c = 0 de segundogrado, prepare un algoritmo en el que dados lostres parametros a, b y c nos determine el signodel discriminante ∆ = b2 − 4ac y segun el mismocalcule las raıces reales o complejas conjugadas de laecuacion y las imprima.

Page 84: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Ejercicio complementario 3

Defina una funcion en python que lea los centros(x1, y1) y (x2, y2) y los radios r1 y r2 de doscircunferencias, e indique el numero de puntosen comun que tienen ambas. Para ello calcule ladistancia entre los centros. La funcion debera retornar0 para cero puntos, 1 para un punto, 2 para dospuntos y -1 para infinitos puntos.

Page 85: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Comandos en programacion imperativa

Declaracion de tipos de dato.Entrada y salida.Operaciones con datos.Subrutinas y funciones.Condicionales.Bucles.

Page 86: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Repitiendo la ejecucion de codigo (bucles)

En ocasiones debe repetirse parte del codigo unnumero de veces (conocido a priori o no). Para ellose utilizan los bucles.

Page 87: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Necesidad de los bucles (I/II)

Ejemplo, para ir al cine se necesita:

nos ponemos en la colahacer (cola)si llegamos a la ventanilla entoncescompramos la entradasalimos de hacer (cola)

fin sifin hacerentramos al cine

Page 88: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Necesidad de los bucles (II/II)

Como vemos, existe la necesidad de verificar unacondicion logica (en el ejemplo, ‘si llegamos a laventanilla’) para salir del bucle. (En otro caso el bucleserıa infinito.)

Cada repeticion del bucle se denomina iteracion.

Page 89: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Tipos de bucles

Existen dos tipos (principalmente) de bucles:

los que se repiten un numero indeterminado deveces: while y repeat. . . until (o en su formaequivalente do. . . while).de los que se conoce previamente el numero deiteraciones, o bucle con contador: for.

Page 90: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Saliendo la ejecucion de un bucle

A veces, la salida del bucle no se realiza al principio ofinal del bucle (depende evidentemente del algoritmocodificado).

En esas ocasiones se necesita usar otras instrucciones,como break (salida del bucle directamente) ycontinue (continua con la siguiente iteracion,saltandose el codigo que falta hasta el final del bucle).

Page 91: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Bucle while (I/II)

El bucle con un numero indeterminado de iteraciones masutilizado codifica:

mientras condicion hacer

codigo del interior del buclefin hacer

En python es:

while condicion :

codigo del interior del bucle

Page 92: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Bucle while (II/II)

El chequeo de la condicion se realiza al principio: si lacondicion es falsa ya no se ejecuta el bucle, y se salta alcodigo que esta despues del bucle.

Lo habitual es que la condicion dependa de una variable

que va modificandose en el interior de bucle, pues sino

el bucle serıa infinito (no acaba nunca).

Page 93: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Ejemplo de bucle while (en python)

# imprime los numeros enteros# cuyo cubo es menor que un lımite dado

n3max = input("Introduzca el lımite ")n, n3 = 1, 1

while n3 < n3max:print(n)n = n+1n3 = n**3

Page 94: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Ejercicio A9 (para resolver en clase)

Prepare un fragmento de codigo en python queimprima las diez primeras longitudes de la serie deBalmer del hidrogeno (en nanometros):

λ = 364.6n2

n2 − 4, n > 2.

Page 95: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Solucion al ejercicio A9

# Serie de Balmer del hidrogenon, nt = 3, 12

while n <= nt:n2 = n**2 # n2 es una variable auxiliarprint(364.6*n2/(n2-4))n = n+1

Page 96: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Ejercicio propuesto A10

Prepare un programa en python que repita un buclepara simular una evolucion temporal, variando eltiempo t desde un instante inicial, ti , con un intervalodt , mientras que el tiempo sea menor o igual que tf .

Dentro del bucle se imprimira el valor de t.

Page 97: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Bucle repeat ... until (repetir ... hasta que)

Este bucle chequea la condicion al final, y se ejecuta almenos una vez:

repetir

codigo del interior del buclehasta que condicion (fin repetir)

En python se puede codificar usando un bucle infinito:

while True :

codigo del interior del bucleif condicion : break

Page 98: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Ejercicio A11 (para resolver en clase)

Prepare un programa que imprima los numeros cuyocubo es menor que un lımite dado usando un buclecon chequeo de condicion al final.

Page 99: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Solucion al ejercicio A11

# imprime los numeros enteros# cuyo cubo es menor que un lımite dado

n3max = input("Introduzca el lımite ")n = 1

while True:print(n)n = n+1if n**3 > n3max: break

Page 100: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Bucle con salida intermedia

En un bucle con salida intermedia existe unacondicion por el medio que saca la ejecucion del bucle(y la pasa a la instruccion que sigue al final del bucle).

Ejemplo:

while cond1 :codigo del bucle primera parteif cond2 : breakcodigo del bucle segunda parte

Page 101: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Ejercicio propuesto A12

Se quiere sumar la serie: S =∑

n=0z−n, |z| > 1,

tomando un numero de terminos n tal que |z−n| < EPS,siendo este ultimo un valor pequeno, pongamos 10−10.

Prepare un programa en python que nos pida z por

teclado y que imprima la suma obtenida mediante el

criterio anterior. Use un bucle infinito con una condicion

intermedia para salir de el.

Page 102: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Uso de continue

El comando continue nos permite saltarnos desde unpunto dado de un bucle hasta el final y empezar otraiteracion nueva del bucle.

while cond1 :

codigo del bucle primera parteif cond2 : continue

codigo del bucle segunda parte

Si la condicion cond2 es verdadera se salta la segunda

parte. Si es false se continua con la segunda parte.

Page 103: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Ejercicio A13 (para resolver en clase)

Prepare un programa en python que nos pida porteclado un numero lımite, nmax, y que imprima losnumeros que son multiplos de 7 entre 1 y nmax.

Use el comando continue.

(En python la operacion a %b devuelve el resto dedividir a entre b.)

Page 104: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Solucion al ejercicio A13

# multiplos de 7nmax = input("nmax ")n = 0

while n < nmax:n = n+1if n %7 != 0: continueprint(n)

Page 105: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Bucle con contador (I/III)

Este bucle esta controlado por una variable que se vacambiando segun un patron y se chequea frente a unvalor final.

En algunos lenguajes, como C, el cambio en lavariable en el bucle for puede ser realizado de lamanera en que desee el programador.

Realmente, en C no existe el bucle controladopor variable con un numero conocido a priori deiteraciones.

Page 106: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Bucle con contador (II/III)

En muchos lenguajes existe un tipo de bucle cuyonumero de iteraciones es conocido a priori.

Las iteraciones estan controladas por una variableque no se debe (en algunos lenguajes no se puede)modificar en el interior del bucle, sino solo al final delbucle de manera automatica.

Un ejemplo de este bucle es el DO de las ultimasversiones de Fortran, y el bucle FOR...NEXT dellenguaje Basic.

Page 107: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Bucle con contador (III/III)

Tendrıamos (NO es codigo python):

para i = inicio hasta final incremento delta hacer

codigo del buclefin hacer

La variable i toma los valores: inicio, inicio + delta,inicio+2delta , . . . , mientras que su valor sea i ≤ final .Por defecto delta = 1.

Si delta > 0 e inicio > final , o si delta < 0 e

inicio < final , no se realizan las iteraciones.

Page 108: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Bucle con contador en python

En python se puede ‘simular’ este bucle con contador

clasico mediante una funcion que nos devuelve una lista

fija de valores que cumple un patron.

La funcion es range(inicio, final , delta), teniendo en

cuenta que en este caso no se llega a final . Se usa

for i in range(inicio, final , delta):interior del bucle

La variable i toma los valores: inicio, inicio + delta,

inicio+2delta , . . . , mientras que su valor sea i < final .

Por defecto inicio = 0, delta = 1.

Page 109: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Ejercicio A14 (para resolver en clase)

Repita el ejercicio A9 pero usando un bucle for.

Prepare un fragmento de codigo en python queimprima las diez primeras longitudes de la serie deBalmer del hidrogeno (en nanometros):

λ = 364.6n2

n2 − 4, n > 2.

Page 110: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Solucion al ejercicio A14

# Serie de Balmer del hidrogenont = 12

for n in range(3, nt+1):n2 = n**2print(364.6*n2/(n2-4))

Page 111: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Ejercicio propuesto A15

Pida por teclado un numero entero postivo, n.

Luego imprima los numeros n, n − 1, n − 2,. . . , 1usando un bucle for y range de la manera adecuada.

Page 112: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Bucle for generico en python

En python el bucle for esta preparado para que unavariable tome, en cada iteracion, los valores de loselementos de una lista:

for x in L:interior del bucle

En la primera iteracion x toma el valor de L[0] (primerelemento), en la segunda x toma el valor de L[1], . . . ,hasta que se acabe la lista.

Page 113: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Ejercicio A16 (para resolver en clase)

Determine la suma de los elementos positivos de unalista de numeros, L.

Tome, por ejemplo, la lista:

L = [12, -3.0, 1, 0.0, -6.8]

Page 114: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Solucion al ejercicio A16

# L es una lista conocidaL = [12, -3.0, 1, 0.0, -6.8]

suma = 0.0

for x in L:if x > 0:suma = suma+x

print(suma)

Page 115: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Ejercicio propuesto A17

(Este ejercicio se propone como tarea a entregar porel estudiante.)

Sea una progresion geometrica, de razon r, conprimer termino a, con n terminos (incluyendo elprimero). Estos datos se piden por teclado.

Prepare un programa que calcule e imprima la sumade los terminos de la progresion.

Page 116: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Ejercicio propuesto A18 (I/II)

(Este ejercicio se propone como tarea a entregar porel estudiante.)

Un metodo de resolucion de ecuaciones de la formaf(x) = 0, mediante iteraciones a partir de un valoraproximado x0 de la raız, se obtiene poniendo lafuncion en la forma x = g(x) e iterando:

xn+1 = g(xn)

hasta que |xn+1 − xn| < EPS, siendo este ultimo unvalor pequeno, pongamos 10−10.

Page 117: Introduccio´n a algoritmos con python - Grupo de … · La programacio´n orientada a objetos (POO) utiliza objetos como elementos fundamentales en la construccio´n de la solucion

Ejercicio propuesto A18 (II/II)

El metodo no siempre converge (y hay que despejarla x de otra forma).

Disene un programa en python que nos resuelvax3 = sin x, partiendo de un valor x0 = 1.0 usandoel metodo iterativo propuesto. El programa debeimprimir la raız por pantalla.

Para evitar bucles infinitos haga como mucho n =100 iteraciones y si se llega a ellas sin convergencia,que imprima un aviso de falta de convergencia.