Universidad de Antioquia Instituto de Física Computadores en Física Notas del Curso Jorge Zuluaga Documento 4
Algoritmos 1.Introducción Algoritmo
: lista de ordenes conectadas lógicamente que codifican una tarea
Ej. (Trivial) Algoritmo para hacer unas empanadas 1.Comprar los materiales 2.Preparar la masa 3.Preparar el contenido de todas las empanadas 4.Para cada empanada, 5.Elaborar la envoltura individual 6.Rellenar 7.Echar freír 8.Repetir desde 5 9.Sacar empanadas 10.Vender empanadas Cuando
se trata de un ser humano, expresar ordenes en esta forma no parece muy inteligente... pero ... Maquinas requieren especificación de cada paso que deben tomar para realizar incluso la tarea más simple.
EJ 1 La Balanza Elaborar un algoritmo para calcular el peso de un cuerpo dada su masa. Sln. Algoritmo: 1.Comience 2.Pida la masa 3.Calcule el peso
4/11/02
Notas Computadores en Física. Jorge Zuluaga
1
4.Presente el resultado 5.Termine Para
abreviar y estar más cerca al lenguaje de la máquina se puede escribir el anterior algoritmo usando una forma simplificada de lenguaje: pseudo código.
pseudo
código:
1.Inicie 2.Entre m en kg 3.Asigne g = 9.8 4.Calcule P = m g 5.Muestre ' El peso en N es : ' , P 6.Termine Las
palabras Inicio, Termine, Entre, Asigne, Calcule, Muestre se utilizan de manera estándar cuando se escriben algoritmos en pseudo código.
El
mismo algoritmo se puede representar gráficamente usando los denominados diagramas de flujo:
Figura 1. Diagrama de flujo del Ejemplo 1 En
los diagramas de flujo se usan regularmente 5 elementos gráficos para representar cada acción lógica distinta que puede ejecutarse:
4/11/02
Notas Computadores en Física. Jorge Zuluaga
2
Símbolo
Acción Inicio o comienzo del algoritmo
Inicio, Termine
pseudo código
Entrada o salida de información(E/S)
Entre, Muestre
Realización de cálculos o asignación de valor a variables
Calcule, Asigne
Condicional
Si...
Llamado a una rutina
Rutina
Tabla 1. Símbolos básicos presentes en diagrama de flujo Los
dos últimos símbolos se explicaran a continuación.
Toma de decisiones en algoritmos Estructuras
de decisión: en algoritmos son las estructuras lógicas que permiten realizar una tarea deacuerdo a la validez o no de una condición.
EJ 2: La Balanza Inteligente Elaborar un algoritmos que permita calcular el peso de un cuerpo dada su masa y expresar el resultado en N o kN deacuerdo a si el peso resultante supera o no los 1,000 N. Sln. Ver
tabla 2
Pruebas de Escritorio Siempre
que se elabora un algoritmo es importante probar que funcionara en diversas condiciones
Prueba
de escritorio: prueba escrita que se hace a algoritmo para comprobar su efectividad en diversas condiciones
Para
realizar prueba de escritorio básicamente es necesario ponerse en el lugar del computador y seguir al pie de la letra lo que indica el algoritmo.
Ver tabla 3 pseudo código
4/11/02
Diagrama de flujo
Notas Computadores en Física. Jorge Zuluaga
3
pseudo código
Diagrama de flujo
1. Inicio 2. Entre masa m (kg) 3. Asigne g = 9.8 4. Calcule P = m g 5. Calcule P' = P/1000 6. Si P' > 1, 7. Muestre ' Peso del cuerpo es:' , P' , ' kN ' 8. Sino 9. Muestre ' Peso del cuerpo es:' , P , ' N ' 10. Termine
Tabla 2. pseudo código y Diagrama de flujo de EJ 1
pseudo código 1. Inicio 2. Entre masa m (kg) 3. Asigne g = 9.8 4. Calcule P = m g 5. Calcule P' = P/1000 6. Si P' > 1, 7. Muestre ' Peso del cuerpo es:' , P' , ' kN ' 10. Termine
Prueba de Escritorio 1. 2. m = 110 3. g = 9.8 4. P = 1078 5. P' = 1.078 6. 1.078 > 1 7. Peso del cuerpo es: 1.078 kN 10. Termine
Tabla 3. Prueba de escritorio de Balanza Inteligente.
EJ 3: Tiempo de caída Dada la altura (ho) y velocidad (vo) inicial de un cuerpo calcular el tiempo que le toma alcanzar una altura h final.
4/11/02
Notas Computadores en Física. Jorge Zuluaga
4
Sln. Ecuación
de
de movimiento básica:
1 2 hh ovo t g t 2
aquí se resuelve para t de donde resulta la ecuación de segundo grado
1 2 g t v o thho 0 2 El diagrama de flujo correspondiente se presenta en la figura 2.
Estructuras de repetición En A
muchas tareas es necesario repetir una instrucción o instrucciones varias veces
las estructuras lógicas que permiten realizar estas tareas se las conoce como estructuras de repetición (ciclos, loops)
EJ 4: Caída Libre Un cuerpo se lanza desde una altura h con una velocidad inicial vo. Elaborar un algoritmo que muestre una lista de la altura del cuerpo cada 0.1 segundos hasta que toca el piso. Sln. pseudo A
código y diagrama de flujo en tabla 4.
la estructura de repetición usada en este ejemplo se la llama en pseudo código. la estructura haga ... mientras.
Básicamente
sirve para ejecutar repetidamente un conjunto de acciones con una condición de repetición evaluada al final de cada ciclo.
Existen
4/11/02
maneras alternativas de repetir una acción como se ilustra en pseudo código. de la tabla 5.
Notas Computadores en Física. Jorge Zuluaga
5
Figura 2. Diagrama de flujo de Ejemplo 3
4/11/02
Notas Computadores en FĂsica. Jorge Zuluaga
6
4/11/02
Notas Computadores en FĂsica. Jorge Zuluaga
7
Diagrama de Flujo
pseudo código 1. Inicio 2. Entre vo, h 3. Asigne g = 9.8 4. Asigne T = 0.0 5. haga, 6. Calcule Y = vo*T – (œ) g*T*T 7. Muestre T y Y 8. Asigne T = T + 0.1 9. Mientras Y > 0, repita 10. Muestre T
Tabla 4. Diagrama de flujo de Ejemplo 4
4/11/02
Notas Computadores en Física. Jorge Zuluaga
8
4/11/02
Notas Computadores en FĂsica. Jorge Zuluaga
9
pseudo código
Diagrama de Flujo
1. Inicio 2. Entre vo, h 3. Asigne g = 9.8 4. Asigne Ttot = Caida (ho, 0, vo) 5. Para T = 0, ∆T = 0.1, T < Ttot 6. Calcule Y = vo*T – (œ) g*T*T 7. Muestre T y Y 9. repita 10. Muestre Ttot
Tabla 5. Diagrama de flujo de Ejemplo 4 con forma alternativa La
diferencia con el uso de la estructura haga ... mientras es que en este caso se sabe exactamente cuántos ciclos se van a realizar ya que la variable del ciclo o el contador (en este caso T) toma un conjunto de valores muy específico.
La
estructura de repetición utilizada en este caso se conoce como la estructura para... repita.
El
para ... repita tiene la siguiente estructura: valor inicial, incremento, condición de ciclo.
En
este caso: valor inicial: T = 0, Incremento : ∆T = 0.1 , Condición de ciclo,T < Ttot Valores en ciclo para T : 0, 0.1, 0.2, 0.3,.... Ttot
4/11/02
Notas Computadores en Física. Jorge Zuluaga
10
Módulos o Rutinas Otra
novedad en la segunda versión del algoritmo del ejemplo 4 es la introducción de una rutina.
Modulo
o Rutina: algoritmo que realiza una tarea específica y que puede ser invocado desde otro algoritmo como una herramienta en la realización de tareas intermedias
En
el Ejemplo 4 se supuso la existencia de una rutina caída cuyas funciones coinciden con las del algoritmo del Ejemplo3.
Toda
rutina tiene: parámetros: valores que deben entregársele para la realización de la tarea que se le encomienda En el diagrama de flujo se representan como los símbolos que se dibujan sobre la caja de la rutina salida: generalmente representada por uno o varios valores que contienen el resultado de la tarea que le fue encomendada a la rutina (ver símbolos debajo de rutina en tabla 5).
En
El
el caso de la rutina caída: Parámetros: altura inicial, velocidad inicial, altura final. Salida: tiempo de caída.
uso de módulos o rutinas en algoritmos corresponde a una práctica de programación que se conoce como programación modular
La
programación modular permite dividir un problema grande en pequeños problemas resueltos por algoritmos independientes y especializados.
Ilustraremos
con dos ejemplos la creación y utilización de rutinas:
EJ 5: Rutina para masa relativista Elaborar una rutina que reciba la masa en reposo de una partícula y su velocidad y devuelva la masa en movimiento según como es predicha por la teoría especial de la relatividad: m
1
Sln. Ver
mo v
2
c2
figura3
4/11/02
Notas Computadores en Física. Jorge Zuluaga
11
Figura 3. Diagrama de flujo de Ejemplo 5. Rutina masa_relativista Nótese
el modo en el que se indica antes de la etiqueta de inicio y de terminar los parámetros que recibe la rutina y la salida que produce.
EJ 6: Masa vs. velocidad Elabore un algoritmo en el que dada la masa en reposo de un cuerpo muestre, valiéndose de la rutina del Ejemplo 5, una tabla con la masa en movimiento a velocidades 0.1, 0.2, ..., 0.9 c. Sln. Ver
figura4
4/11/02
Notas Computadores en Física. Jorge Zuluaga
12
Figura 4. Diagrama de flujo de Ejemplo 6. Más
ejemplos:
EJ 7: Desintegración Radioactiva Un núcleo puede considerarse inestable si contiene un número de protones o neutrones igual a aproximadamente una vez y media el número del otro nucleón. En ese caso los nucleones en exceso se convierten en el otro tipo de nucleón (N-> P ó P-> N) hasta que se alcanza la estabilidad con un equilibrio adecuado entre el número de protones y neutrones. Elaborar un algoritmo que dado el número de protones y neutrones de un núcleo determinar el núcleo final de la secuencia de descomposiciones radioactivas. Sln. Ver
tabla 5
En
este caso la estructura de repetición que se utiliza es la misma haga...mientras pero invirtiendo el orden en el que se evalúa la condición: en este caso la condición se evalúa al principio.
4/11/02
Notas Computadores en Física. Jorge Zuluaga
13
Llamaremos El
a esta forma alternativa, la estructura mientras...repita
conector a la izquierda que no tiene asociado ningún cajón indica la acción de repetir.
Nótese
la manera especial en la que se hacen pruebas de escritorio de algoritmos con estructuras de repetición.
pseudo código
Diagrama de Flujo
1. Inicio 2. Entre N y P 3. Mientras ( N > 1.5 P ó P > 1.5 N ) 4. Si N > P 5. Calcule N = N – 1 6. Calcule P = P + 1 7. Sino, 8. Calcule N = N + 1 9. Calcule P = P - 1 10. Muestre P y N
Prueba de escritorio: 1. 2. N = 100, P = 50 3. 100 > 1.5 * 50 4. 100 > 50? 5. N = 100 – 1 = 99 , P = 50 +1 = 51 3. 99 > 1.5 * 50 4. 99 > 51 5. N = 99 – 1 = 98, P = 51 + 1 = 52 (continuará...) Tabla 6. pseudo código, prueba de escritorio y diagrama de flujo del Ejemplo 7
EJ 8: Montículo de Hielo Un niño esta inicialmente en reposo sobre la cima de un montículo semiesférico de hielo. De repente empieza a deslizarse por el montículo. Elaborar un algoritmo que determine el ángulo recorrido por el niño y la fuerza normal sobre él cada 0.1 segundos y que con esta información estime el ángulo en el que la fuerza normal se anula, ángulo en el que el niño se despega del montículo de hielo. Sln. Ecuaciones
básicas: Fuerza normal: N = mg cos θ – m v2 / r
4/11/02
Notas Computadores en Física. Jorge Zuluaga
14
Velocidad: v =ω r Velocidad angular: ω = ωo + α ∆t Aceleración angular: α = mg sen θ / r Ángulo: θ = θ o + (œ) α ∆t2 Obviamente
se esta asumiendo que mientras el intervalo de tiempo se tome pequeño la aceleración angular permanece constante, aunque en la realidad no es del todo cierto.
Este
tipo de aproximaciones constituye lo que se conoce en la física como la solución de un problema numéricamente
Ver
figura 5
2.Ejercicios 1.Las cuatro variables cinemática s básicas asociadas a un cuerpo con movimiento con aceleración constante son x, v, a, t. Sabiendo las condiciones iniciales vo, do. Conocer tres de las cuatro variables permite determinar la faltante. a) Elaborar 3 rutinas para calcular: dado a, v y t calcular x dado a, v y x calcular t dado a, x y t calcular v b) Elabore un algoritmo que pregunte al usuario que variable del movimiento quiere calcular. Deacuerdo a elección pida al usuario las otras tres variables y con ayuda de las rutinas diseñadas en a. calcule la cantidad solicitada. 2.Un avión bombardero sobrevuela la base de un enemigo volando horizontalmente y cargado de bombas de caída libre. Elabore un algoritmo en el que dada la velocidad del avión, su altura y la distancia a la que se encuentre de un blanco determine si el lanzamiento de la bomba en el momento preciso en el que se encuentra a esa distancia sería exitoso o no. De no serlo el algoritmo debe indicar cuanto tiempo falta para alcanzar la distancia adecuada o de haber pasado el momento adecuado mostrar un mensaje correspondiente. 3.La distancia de los planetas al Sol puede aproximarse con la fórmula, d = [ 4 + 3 x 2^(i-2) ] / 10 donde d esta en Unidades Astronómicas (1 U.A. = 150 millones de km). i es el número del planeta (2-Venus, 3-Tierra, 4-Marte,...). Mercurio se encuentra a una distancia d = 0.4 U.A. y no satisface la regla. El supuesto planeta 5, que debería ser Júpiter, no existe realmente (en su lugar se encuentra el cinturón de asteroides). Elabore un algoritmo en el que dada una distancia arbitraria determine el número de planetas
4/11/02
Notas Computadores en Física. Jorge Zuluaga
15
verdaderos que se encuentran a distancias inferiores a ella.
Figura 5. Diagrama de flujo del Ejemplo 7
4.Cuando una pelota rígida se deja caer golpea el piso pierde un 10% de su energía total y rebota. Elabore un algoritmo en el que dada la altura de lanzamiento de la pelota, su masa y radio calcule cuánto tiempo le toma a la misma detenerse por completo. Suponga que la condición de detención se define como aquella en la que la nueva altura de rebote es inferior al radio de la pelota.
4/11/02
Notas Computadores en Física. Jorge Zuluaga
16
5.Las partículas de un gas se mueven a velocidades distintas. Existe sin embargo una relación matemática que indica cuántas partículas se mueven con una velocidad aproximadamente v: n(v) = N [m/(kT)]^(3/2) v^2 e^[-m v^2 / (kT)] donde N es el número de partículas, m es la masa de las mismas, T la temperatura y k una constante de valor 1.4x10^(-23) a) Elabore el algoritmo de una rutina para que dada m y T calcule por inspección cuál es la velocidad a la que se mueven la mayoría de las partículas. Ayuda: Puede encontrar el máximo de una función evaluándola en muchos puntos y encontrando aquel punto en el que toma su máximo valor. Utilice para esta búsqueda un intervalo de prueba para la velocidad como [0,3 kT]. Asuma un valor arbitrario para N. b) La anterior rutina podría utilizarse en la siguiente tarea. La condición para que un gas permanezca unido gravitacionalmente a un cuerpo planetario es la de que la velocidad de la mayoría de sus partículas sea menor o igual que un sexto de la velocidad de escape del planeta. Elabore un algoritmo en el que dadas Masa del planeta, Radio del planeta, masa de las partículas de un gas y Temperatura determine si el gas permanecerá o no unido al planeta. 6.La cacería de un murciélago se basa en el uso del efecto Doppler para ubicar y seguir sus presas. El murciélago emite un pulso de ultrasonido de frecuencia fo que viaja y rebota sobre su presa en movimiento. Midiendo el tiempo que tarda en ir y venir el pulso y la frecuencia f del sonido reflejado en la presa el murciélago puede reconstruir la distancia y la velocidad con la que se mueve esta última. a) Elabore el algoritmo de una rutina para la cual dada la frecuencia de un sonido emitido por una fuente en movimiento se determine la frecuencia del sonido escuchado por un observador en reposo. b) Elabore un algoritmo (el usado por el cerebro del murciélago) para el que dada la frecuencia emitida por el murciélago y el tiempo que el sonido tarda en ir y venir de la presa determine la distancia de la presa al murciélago y la velocidad con la que la presa se mueve. Ayuda: El murciélago se cree a sí mismo en reposo. Desprecie el movimiento del murciélago y de la presa mientras el sonido va y viene desde la presa. 7.La presión que puede soportar el casco de un dispositivo submarino es Pmax. Cuando se sumerge en el océano la presión aumenta con la profundidad del modo P = Po + r g h. Donde Po es una presión en un punto de referencia (en la superficie del océano Po = 1 atm), h es la profundidad y r es la densidad del agua que en la superficie es 1 g/cm^3. Sin embargo la densidad del agua varía también lentamente debido a cambios en la concentración de minerales y otros efectos. Cada 100 m la densidad se incrementa en 0.01 g/cm^3. Elabore un algoritmo en el dada la presión máxima que puede soportar un dispositivo submarino determine la presión del agua cada 10 m de profundidad y estime la máxima profundidad a la que puede llegar el submarino.
4/11/02
Notas Computadores en Física. Jorge Zuluaga
17
Ayuda: suponga que el agua esta formada por capas de 100 m de espesor y calcule la presión independientemente en cada capa y acumule estas presiones. 8.Una batería antiaérea esta interesada en desarrollar un programa de computador para determinar el ángulo con el que deben disparar las balas de sus cañones con el propósito de impactar blancos en movimiento que se aproximan a la base. El algoritmo debe pedir la velocidad del blanco y la distancia a la que se encuentra inicialmente y determinar el ángulo respecto a la horizontal con la que debe dispararse el cañón. Para ello las ecuaciones a resolver son: d - vt = vo cos q t h = vo sen q t - (œ) g t2 Donde d, h y v es la distancia altura y velocidad del blanco, vo y q son la velocidad de las balas y el ángulo de lanzamiento y t el tiempo de vuelo de la bala. Al eliminar t resulta una ecuación en q muy complicada que es difícil resolver analíticamente. El algoritmo debe por tanto probar lanzamientos para todos los ángulos posibles entre 0 y 180 grados hasta encontrar el ángulo que satisface las dos ecuaciones anteriores. 9.Un globo aerostático con sondas para el estudio de rayos cósmicos asciende por la atmósfera desde la superficie donde la presión es Po=1 atm y la temperatura es To=10 C. La presión atmosférica disminuye siguiendo la ley P (h) = Po e^(-h/hp), donde ho = 10 km. La temperatura del aire disminuye así T (h) = To ( 1 -h/ht), donde ht = 1000 m. Al ascender el globo se va hinchando por efecto de la disminución de la presión atmosférica. El volumen del globo en cada momento puede calcularse así: V = Vo (T/To) (Po/P). Elabore un algoritmo en el que dado el volumen inicial del globo muestre su volumen cada 100 m de ascenso desde la superficie hasta el límite inferior de la estratosfera a 20 km de altura. 10.Un computador sólo sabe sumar/restar, multiplicar y dividir. El cálculo de muchas funciones complicadas en la física se hace recurriendo al uso de las llamadas series de potencias. Por ejemplo, una función tan común como el sen(x) puede calcularse usando la suma infinita: sen(x) = x - x^3/3! + x^5/5! - x^7/7! + ... La suma produce un resultado finito si x (en radianes) es relativamente pequeño (x<1). Obviamente un computador nunca podrá realizar una suma infinita y lo que se hace regularmente es calcular la suma hasta el termino n-esimo y suponer que lo que queda de la misma es muy pequeño! Elaborar un algoritmo en el que dados x y el número de términos a utilizar de la serie calcule el seno de x.
4/11/02
Notas Computadores en Física. Jorge Zuluaga
18