Вы находитесь на странице: 1из 6

Taller de Informtica I

Dpto. Computacin F.C.E. y N. - UBA

2011

CICLOS
Repasando: Operador : Se trata de una de las formas de definir vectores y matrices ms usada y ms fcil de utilizar, dada la rpida visualizacin de la salida sin necesidad de ver el resultado:

>> x=1:1:10; >> x x = 1 2 3 4 5 6 7 8 9 10

De alguna manera, el : representa un rango, en este caso desde 1 hasta 10 y en el centro se coloca el paso (o sea con qu incremento se llega desde 1 hasta 10). Por defecto el paso es 1 pero puede ser cualquier nmero entero o real, positivo o negativo:

>> x=10:-1:1 x = 10 9 8 7 6 5 4 3 2 1 >> x=1:0.5:10 x = 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6 6.5 7 7.5 8 8.5 9 9.5 10

Las estructuras repetitivas, tambin llamadas bucle (loop, en ingls) controlan un conjunto de instrucciones que deben repetirse cierto nmero de veces, mientras se cumple una condicin que debe ser claramente especificada. La condicin podr ser verdadera o falsa, y se comprobar en cada paso o iteracin del bucle. Todo bucle consta de tres partes bsicas, a saber: Decisin: donde se evala la condicin y, en caso de ser cierta, se ejecuta el cuerpo del bucle. Cuerpo del bucle: son las instrucciones que se ejecutarn repetidamente, un nmero determinado de veces, siempre que la decisin sea verdadera. Salida del bucle: es la condicin que indica cuando terminan las iteraciones.

Pgina | 1

Taller de Informtica I

Dpto. Computacin F.C.E. y N. - UBA

2011

Grficamente:

Condicin Se vuelve a la decisin para evaluar nuevamente la condicion

Decisin Verdadera Conjunto de instrucciones

Decisin Falsa

Conjunto de instrucciones

CICLO

Hay diferentes formas de realizar ciclos en programacin. En Matlab, veremos dos de las ms comunes: ciclo for y ciclo while Ciclo for En este tipo de ciclo, ya se sabe cuntas veces se realizar el bucle, es decir, cuantas veces se ejecutar el conjunto de instrucciones dentro del ciclo. La cantidad de veces est determinada en la seccin de decisin del ciclo. La sintaxis del ciclo for en Matlab es la siguiente: for variable=valor_inicial:incremento:valor_final conjunto_sentencias end La primera lnea constituye la decisin. Aqu la condicin indica que la variable debe tomar valores entre el valor inicial y el valor final para que se ejecute el conjunto de sentencias del ciclo.

Pgina | 2

Taller de Informtica I

Dpto. Computacin F.C.E. y N. - UBA

2011

Ejemplo bsico for i=1:10 disp(El valor de i es ) disp(i) end for i=1:2:10 disp(El valor de i es ) disp(i) end Otra variante: la condicin puede ser una expresin vectorial o matricial. Es decir, por lo visto al principio se puede definir un vector como: >>x=1:2:10 x 13579 Aprovechamos esto para realizar el ciclo utilizando los elementos del vector, o dicho de otro modo, recorriendo cada celda del vector. La sintaxis en este caso cambia: for variable=vector_o_matriz conjunto_sentencias end Si se coloca un vector, la variable toma, en cada iteracin del ciclo, un valor del vector, hasta recorrerlo completamente. Si se coloca una matriz, la variable toma una columna de la matriz, es decir, la variable ser en cada iteracin, un vector que tendr el valor de una columna de la matriz Ejemplos: x=10:-1:1 for i=x disp(El valor de i es ) disp(i) end Este ejemplo usando la nomenclatura anterior: x=10:-1:1 for i=1:length(x) disp(El valor de elemento del vector es ) disp(x(i)) disp(El valor del ndice del vector es ) disp(i) end
Pgina | 3

Taller de Informtica I

Dpto. Computacin F.C.E. y N. - UBA

2011

con una matriz: matriz = [ 1 2 3 4; 1 2 3 4; 1 2 3 4; 1 2 3 4] for x = matriz n = x(1)*x(2)*x(3)*x(4) end

Aclaracin importante: El uso de los ciclos for dentro de Matlab debe restringirse a operaciones que no vengan integradas con el programa, ya que una funcin que lo contenga, se hace ineficiente en trminos de tiempo de ejecucin, si se utilizan muchos ciclos for. Por ejemplo, se puede calcular la suma de los componentes de un vector mediante el siguiente ciclo: X = [10 20 30 40 50]; a = 0; for i=1:length(X) a = a + X(i); end pero resulta ms eficiente: a=sum(X) Ejemplos: 1) Escribir un programa que calcule las N primeras fracciones del tipo 1/i para i = 1; 2; :::;N, tras pedir N al usuario 2) Ingresar un vector de orden n y calcular su norma eucldea. La norma eucldea de un vector x = (x1; x2; :::xn) viene dada por la frmula sqrt((x1)2 + (x2)2 + . + (xn)2) 3) Generar un vector de n elementos con nmeros aleatorios entre 0 y 1. Pedir al usuario dos nmeros reales entre 0 y 1 LS y LI, que representan los lmites superior e inferior de un intervalo, respectivamente. Recorrer el vector e indicar cuales elementos se encuentran dentro de los lmites dados. 4) Dado un vector, hacer un programa que genere el vector inverso. Dado x=[1 2 3] generar y=[3 2 1] 5) Dada una cadena, generar la inversa. Resolverlo: a. Con disp. (lo muestra en vertical) b. Inicializando y= y concatenando cada elemento del vector en cada iteracin del ciclo

Pgina | 4

Taller de Informtica I

Dpto. Computacin F.C.E. y N. - UBA

2011

Ciclo while En este tipo de ciclo, NO se sabe cuntas veces se realizar el bucle, es decir, cuantas veces se ejecutar el conjunto de instrucciones dentro del ciclo. La cantidad de veces NO est determinada en la seccin de decisin del ciclo. En esta seccin se determina la condicin, que deber ser verdadera, para que el ciclo siga funcionando. La sintaxis del ciclo while en Matlab es la siguiente: while condicion sentencias end Las sentencias se siguen ejecutando mientras haya elementos distintos de cero en condicion, es decir, mientras haya algn o algunos elementos true. El bucle se termina cuando todos los elementos de condicion son false (es decir, cero). Ejemplo 1: a=3; while a < 5 disp ('a es menor que 5 ya que vale') disp (a) a = a + 1; end Ejemplo 2: Podemos mezclar en un programa varias sentencias de este estilo. Aqu podemos ver un programa que escribe por pantalla los primos del 1 al 100 usando las sentencias if, while y for.
disp('Estos son los nmeros primos menores de 100') disp(2) for i=2:100 n=2; while n <= sqrt(i) if rem(i,n)==0 n=i; else n=n+1; end end if n~=i disp(i) end end

Pgina | 5

Taller de Informtica I

Dpto. Computacin F.C.E. y N. - UBA

2011

Ejemplo 3: Conjetura de Collatz Elijamos un nmero natural, digamos n, y realicemos los siguientes clculos: * Si n es par dividmoslo por 2 * Si n es impar multipliqumoslo por 3 y summosle 1 al resultado Con el nmero obtenido repitamos el proceso, y as sucesivamente. Hagmoslo con un ejemplo: n = 6 , la secuencia que obtenemos es: 6, 3, 10, 5, 16, 8, 4, 2, 1 n = 11 obtenemos: 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1 n=27, obtenemos: 27, 82, 41, 124, 62, 31, 94, 47, 142, 71, 214, 107, 322, 161, 484, 242, 121, 364, 182, 91, 274, 137, 412, 206, 103, 310, 155, 466, 233, 700, 350, 175, 526, 263, 790, 395, 1186, 593, 1780, 890, 445, 1336, 668, 334, 167, 502, 251, 754, 377, 1132, 566, 283, 850, 425, 1276, 638, 319, 958, 479, 1438, 719, 2158, 1079, 3238, 1619, 4858, 2429, 7288, 3644, 1822, 911, 2734, 1367, 4102, 2051, 6154, 3077, 9232, 4616, 2308, 1154, 577, 1732, 866, 433, 1300, 650, 325, 976, 488, 244, 122, 61, 184, 92, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1 Ejercicio: Realizar un programa Matlab que dado un nmero que se le pide al usuario, determine todos los nmeros de la serie.

Pgina | 6

Вам также может понравиться