Programación de los problemas de Física en . TEMA 1: INTRODUCCIÓN A LA PROGRAMACIÓN 1.2. ORDENADOR COMO CALCULADORA 1.3.ORDENADOR COMO CALCULADORA PROGRAMABLE 1.4. DIAGRAMAS DE FLUJO 1.5. CODIFICAR O PROGRAMAR 1.6. Estructuras de control de flujo 1: Condicional: if … end y switch…case 1.7. Estructuras de control de flujo 2: Repeticiones: for…end y while …end Cristina Roldán Segura correo: croldan@ugr.es 1 Estructuras de control de flujo Secuencia: if y switch permiten ejecutar grupos específicos de comandos o saltarselos. simple: if….end Condicional múltiple: switch…case..end case 1 acción 1 case 2 acción 2 case 3 acción 3 while y for permiten repetir secuencias de comandos varias veces seguidas Bucles o repeticiones: while …end for …end 2 1.6. Estructuras de control de flujo: Condicional if y switch permiten ejecutar grupos específicos de comandos o saltarselos. true condición acción 1, 2, 3… false simple: if…end Decisión o Condición múltiple: witch…case case 1 acción 1 case 2 acción 2 case 3 acción 3 3 PROGRAMACIÓN en OCTAVE-MATLAB Para escribir una (condición) se comparan los valores de las variables mediante los operadores lógicos y relacionales. operadores relacionales: operadores lógicos: & y | ~ o no < menor que > <= >= == ~= mayor que menor o igual mayor o igual Igual distinto 4 Secuencias condicionales if (condición) grupo de comandos end (condición)=expresión condicional consistente en operadores relacionales y lógicos. Ejemplos: variables con valores asignados previamente if (a<b) if (c>= 5) if a== b if a~= 0 if (a < b) & ( x > 5) if (a~= 10) | (y < 0) 5 Condicional una opción: if…end Sintaxis: if (condición) acción 1 acción 2 …….. end %ejemplo: n=5; if (n>0) printf(‘numero positivo’) end true condición acción 1, 2… false Como funciona if: • Si la condición es verdadera (true) se ejecutan las acciones 1,2,3,… • Si la condición es falsa (false) no se ejecutan (se OMITEN) las acciones 1,2,3… 6 Condicional con dos opciones: if…else…end Sintaxis: if (condición) acción 1 else acción 2 end %ejemplo: n=5; if (n>0) printf(‘número positivo’) else printf(‘número negativo’) end false acción 2 condición true acción 1 Como funciona if: • Si la condición es verdadera (true) se ejecuta la acción 1 • Si la condición es falsa (false) se ejecuta la acción 2 7 Condicional con dos opciones: if…else…end Sintaxis: if (condición) acción 1 else acción 2 end false true condición acción 1 acción 2 true condición CUIDADO: un if con un end acción 1 false acción 2 8 Condición o decisión: if…end Programa que nos diga si un número introducido por el usuario es positivo o negativo. Inicio Leer n Si N>0 No El número es negativo ¿Tiene en cuenta todas las posibilidades? El número es positivo Fin 9 Condicional múltiple: if…end if…end Ejemplo 10 Condicional múltiples: if anidados Sintaxis: if (condición 1) if (condición 2) acción 1 else acción 2 end else acción 3 end false Condición 1 true Condición 2 false acción 3 acción 2 true acción 1 11 Condicional con tres opciones: if…elseif…end Sintaxis: if (condición1) acción 1 elseif (condición 2) acción 2 else acción 3 end if false Condición 1 true acción 1 elseif Condición 2 false acción 3 true acción 2 12 Condicional con tres opciones: if…elseif…end Sintaxis: if (condición1) acción 1 elseif (condición 2) acción 2 elseif (condición 3) acción 3 else acción 4 end false if Condición 1 acción 1 elseif false false elseif Condición 3 acción 4 Condición 2 true true true acción 2 acción 3 else es la opción por defecto para cuando no se cumplan ninguna de las condiciones 1, 2 y 3, puede ponerse o no, es opcional. 13 Condicional múltiples: if anidados Sintaxis: if (condición 1) if (condición 2) acción 1 else acción 2 end else if (condición 3) acción 3 else acción 4 end end false Condición 1 true Condición 2 Condición 3 false true false true acción 2 acción 3 acción 2 acción 1 ¡Difícil de leer! 14 Condicional múltiple: switch…case Es una alternativa a if anidados cuando comparamos datos sencillos ordinales. Sintaxis: switch variable case valor, acción 1 case valor, acción 2 …. otherwise, acción 3 end case 1 acción 1 case 2 acción 2 case 3 acción 3 Como funciona switch: La variable puede tomar distintos valores y dependiendo del valor se ejecuta una acción 15 diferente. Condicional múltiple: switch…case Sintaxis: switch variable case valor, acción 1 case valor, acción 2 …. otherwise, acción 3 end variable = de tipo cardinal, se puede contar otherwise, es opcional y se ejecuta cuando no se realiza ninguno de los casos anteriores Las comas se pueden omitir si se escriben las acciones en el renglón siguiente. 16 Ejemplo: switch…case Dado un número entero entre 1 y 5 mostrar el día de la semana. % día de la semana d=input(‘Numero del dia’); switch d case 1, disp(‘Lunes’); case 2, disp(‘Martes’); case 3, disp(‘Miercoles’); case 4, disp(‘Jueves’); case 5, disp(‘Viernes’); end % día de la semana d=input(‘Numero del dia’); switch d case 1, disp(‘Lunes’); case 2, disp(‘Martes’); case 3, disp(‘Miercoles’); case 4, disp(‘Jueves’); case 5, disp(‘Viernes’); otherwise, disp(‘Error’); end Observa las diferencias 17 Condicional múltiple: switch…case Ejemplo: Dado un número entero entre 1 y 5 mostrar el día de la semana. % día de la semana d=input(‘Numero del dia’); switch d case 1, disp(‘Lunes’); case 2, disp(‘Martes’); case 3, disp(‘Miercoles’); case 4, disp(‘Jueves’); case 5, disp(‘Viernes’); otherwise, disp(‘Error’); end % día de la semana d=input(‘Numero del dia’); switch d case 1, disp(‘Lunes’); case 2, disp(‘Martes’); case 3, disp(‘Miercoles’); case 4, disp(‘Jueves’); case 5, disp(‘Viernes’); case (6,7), disp(‘fin de semana’); otherwise, disp(‘Error’); end Observa las diferencias 18 Ejercicio propuesto 1 Realizar un diagrama de flujo y un programa (o script) en el que se pide al usuario los valores de a,b,c de la ecuación de segundo grado ax2+bx+c=0 y el programa debe calcular las soluciones para cualquier valor de a,b y c, y realizar una representación gráfica de la parábola. Vértice de la parábola: V=(-b/2a, (4ac-b2)/4a) 19 Ejercicio propuesto 2 Realizar un diagrama de flujo y un programa correspondiente en el que se pidan tres números al usuario y el programa te diga cual es el número mayor y cual es el menor. 20 Ejercicio propuesto 3 Realizar un diagrama de flujo y un programa en el que se lea el valor de la temperatura t y su código p que puede ser 1 o 2. • Si el código es 1 convierta la temperatura t de grados F a grados C con la fórmula: C=5/9(t-32) • Si el código es 2 convierta la temperatura t de grados C a F con la fórmula: F=32+9t/5 21 Ejercicio propuesto 4 Realizar un diagrama de flujo y un programa en el que se calcule el precio de una pizza. El precio de una pizza depende del tamaño: Tamaño 1: 5€ Tamaño 2: 8€ Tamaño 3: 12€ Cada ingrediente adicional cuesta 1.5€. Realiza un programa que lea el tamaño de la pizza y el número de ingredientes y muestre el precio que debe pagar. 22 Ejercicio propuesto 5 Realice un diagrama de flujo y un programa que determine el nivel de sobrepeso de una persona de 25 a 34 años. Dado el peso P en Kg de una persona y su talla T en metros. El índice de masa corporal IMC se calcula con la fórmula P/T2. IMC Nivel Menos de 18.5 Peso bajo 18.5 a 25.5 Peso normal 25.5 a 30.5 Sobrepeso grado 1 30.5 a 35.5 Sobrepeso grado 2 35.5 a 40.5 Obesidad grado 3 Más de 40.5 Obesidad grado 4 23 Ejercicio propuesto 6 Escribe un diagrama de flujo y un programa que pida al usuario que le introduzca un mes del año en número (1-12) y el ordenador tiene que escribir de que estación del año se trata: primavera, verano, otoño o invierno. 24 Ejercicio propuesto 7 Escribir un programa que convierta una cantidad de energía dada (trabajo) en J (julios), cal (calorias) o eV (electronvoltios) a la cantidad equivalente en otra unidad diferente especificada por el usuario. El programa pedirá al usuario que introduzca la cantidad de energía y su unidad, así como la unidad a la que se quiere realizar la conversión. La salida será la cantidad introducida convertida a la nueva unidad de energía elegida. Factores de conversión: 1J= 0,239 cal = 6,24*10^18 eV Utilizar el programa para: a) convertir 2800 cal a J b) convertir 2,7 eV a cal c) convertir 0.5 J en eV 25