PRÁCTICA 4

Estructuras condicionales

Las estructuras condicionales nos permiten establecer opciones en nuestro programa, es decir, si estamos programando para un hecho determinado en el que se pueden dar distintas situaciones, podemos incluir todas estas posibilidades en nuestro script, de tal manera que si no ocurre la opción A, podemos comprobar la opción B, y si la opción B cumple los requisitos de nuestro programa, ejecutar una determinada operación, si no los cumple, nuestro programa irá la siguiente opción, la C (y, así, sucesivamente).

CONDICIONES

Tienen la forma:

if (Condición 1){

proceso 1

} else if (Condición 2){

proceso 2

} else if (Condición 3){

proceso 3

} ... else if (Condición n){

proceso n

}

Después de la teoría, toca entender de verdad para qué sirve esto. Te propongo tres ejemplos de andar por casa:

1. Tenemos un rebaño de ovejas en una nave. El número de ovejas va aumentando en función del tiempo y llega un momento en el que el aforo de la nave es máximo, por lo que hay que sacar varias ovejas del recinto.

Ahora lo transcribimos:

if (número_de_ovejas>aforo_máximo) {

Sacamos varias ovejas del recinto


Básicamente estas estructuras se resumen en: si se cumple lo de dentro del paréntesis se hace la operación de dentro de las llaves, si no se cumple, no se hace nada.

2. Es la hora de cenar, tienes mucho hambre y vas a lo rápido y fácil: un huevo frito. Llevas años haciendo huevos fritos y estás hecho un experto. Como todo experto sabe, si te pasas dos horas haciendo el huevo se te va a quedar más negro que tu futuro así que cuando lleva el tiempo justo apagas la vitrocerámica.

Ahora lo transcribimos de forma que cuando el tiempo cocinando sea igual al tiempo recomendado, la vitrocerámica se apague sola (básicamente estamos describiendo el programa de un temporizador [los microondas suelen llevarlos]):

if (tiempo_cocinando=tiempo_recomendado) {
Vitrocerámica apagada
}

BUCLES CONDICIONALES

Los bucles condicionales o bucles while nos permiten ejecutar el bucle siempre y cuando se cumpla una determinada condición. Su estructura es la siguiente:

while (Condición) {

proceso

}

Sin embargo, este bucle es un tanto especial. mientras que en los bucles for realizaba automáticamente un incremento de una unidad desde vinic hasta vfin, en los bucles while nosotros debemos introducir el incremento como una operación más incluida en el bucle. A pesar de que esto pueda parecer un inconveniente a primera vista, nos permite incluir el incremento que nosotros queramos en el bucle

Pongamos ejemplos de bucles while:

1. Sabes que cuando estás cocinando nunca debes pasarte del tiempo de cocinado recomendado, por lo pones el cronómetro hasta que el tiempo que ha pasado llega al recomendado. Es decir, en este caso, tienes la vitro encendida siempre y cuando el tiempo que llevas cocinando sea menor o igual al tiempo recomendado.

while(tiempo_cocinando<=tiempo_recomendado){

Vitrocerámica encendida

tiempo_cocinando=tiempo_cocinando+1

}

2. ¿Qué tiene un portero de discoteca cuando deja entrar a la gente? (Dando por hecho que todos somos mayores de edad, por supuesto jejej) El portero tiene en la cabeza el aforo máximo de la discoteca, y va sumando las personas que entran hasta que la discoteca alcanza el aforo máximo, y pone el dichoso cordón, no? Bueno pues el algoritmo que tiene en su cabeza sería el siguiente:

aforo_máximo=250

personas_dentro=0

while(personas_dentro<=aforo_máximo){

personas_dentro=personas_dentro+1

}

Ahora te mostramos un ejemplo numérico:

Por ejemplo, supongamos que tenemos una función definida a trozos, tal que para valores mayores o iguales que 0, la función es f(x)=2x-5 y para valores menores que 0, la función es g(x)=cos(x^2), y queremos representarla para sus valores desde -100 hasta 100 con un incremento de 0,5

f=function(x){

2*x-5

 #Definimos la función f(x)

g=function(x){

cos(x^2)

}   #Definimos la función g(x)

i=-100

j=1

x=c(0)

while(i<=100){

x[j]=i

j=j+1

i=i+0.5

}    #Determinamos que hasta que el -100 inicial se iguale a 100, cada componente del vector tendrá el valor que sigue, y luego introducimos manualmente los incrementos de j e i

i=1

Img=c(0)

while(i<=j){

if(x[i]<0){

Img[i]=g(x[i])

}else{

Img[i]=f(x[i])

}

i=i+1

}    #asignamos en un vector cualquiera la imagen de los valores calculados anteriormente en x, en función de su valor para respetar la función definida a trozos

plot(x,Img)

¡Descarga los apuntes de la Práctica 4!

Ejercicios Práctica 4

¡Descarga los ejercicios en R de la Práctica 4! 

Test R Práctica 4

¡Pon a prueba tus conocimientos haciendo este test sobre los contenidos de la Lección 4!   
¡Crea tu página web gratis! Esta página web fue creada con Webnode. Crea tu propia web gratis hoy mismo! Comenzar