Está en la página 1de 8

Unidad 2.

Práctica 2

Sentencias de Control de Flujo

Software para Ingeniería

Carlos Arley Mendez. 1100888946

Tutor

Steven Bedoya

Grupo

203036_1

Universidad Nacional Abierta y a Distancia

Escuela de Ciencias Básicas, Tecnología e Ingeniería

Ingeniería Electrónica

Bogotá D.C.

Junio 02 de 2020
Obtención de información

Marco Teórico

 Estructura repetitiva WHILE

While expression, statements, end evalúa una expresión y repite la ejecución de

un grupo de instrucciones en un bucle mientras que la expresión es verdadera. Una

expresión es verdadera cuando su resultado no está vacío y contiene solo elementos no

nulos (numéricos reales o lógicos). De lo contrario, la expresión es falsa.[ CITATION Cen20 \l

9226 ]

Si se quiere repetir un conjunto de instrucciones no un número determinado de

veces, sino hasta que se cumpla una determinada condición, lo más adecuado es usar la

sentencia WHILE. Las instrucciones que contiene el WHILE se repiten hasta que se

satisfaga la condición. Si ´esta no se verifica, se produce un salto hasta la orden que sigue

al WHILE. Para que el bucle no sea indefinido, las instrucciones del WHILE modifican la

condición, de modo que en algún momento deje de verificarse. (López, J., & Hueso, J.

2015).

Ejemplo:
Repetir instrucciones hasta que la expresión sea falsa

n = 10;
f = n;
while n > 1
n = n-1;
f = f*n;
end
disp(['n! = ' num2str(f)])
En este ejemplo permite evidenciar un bucle con la función WHILE que una

vez obtenga un dato verdadero o falso dependiendo la orden emitida por el programador,

ingresa en el, hasta que esa información sea inversa a la de ingreso, satisfaga algún criterio

o el usuario desee cancelar esta función.

• Estructura repetitiva FOR

La estructura del bucle for es simple. La primera línea identifica el bucle y

define un índice, que es un número que cambia en cada paso a través del bucle. Después de

la línea de identificación viene el grupo de comandos que se quiere ejecutar. Finalmente, la

terminación del bucle se identifica mediante el comando end. (Moore, H., 2012)

For index = valuesstatements, end ejecuta un grupo de declaraciones en un

ciclo por un número específico de veces. Si se utiliza una colonoperación con fiobjetos

como índice, entonces los fiobjetos deben ser números enteros..[ CITATION Cen20 \l 9226 ]

En resumen, se tiene

For index = [matrix]


Comandos a ejecutar
end

 Estructuras tipo CASE

La estructura switch/case se usa con frecuencia cuando existe una serie de

opciones de ruta de programación para una variable dada, dependiendo de su valor.

Switch/case es similar a if/else/elseif. De hecho, cualquier cosa que pueda hacer con
switch/case se podría hacer con if/else/elseif. Sin embargo, el código es un poco más fácil

de leer con switch/case, una estructura que le permite elegir entre múltiples salidas, con

base en ciertos criterios. Ésta es una importante distinción entre switch/case y elseif. Los

criterios pueden ser un escalar (un número) o una cadena. (Moore, H., 2012).

Switch switch_expression, case case_expression, end evalúa una expresión y

elige ejecutar uno de varios grupos de instrucciones. Cada elección es un caso.

El bloque switch prueba cada caso hasta que una de las expresiones Case sea

true. Un caso es verdadero cuando:

 Para los números, case_expression == switch_expression.


 Para los vectores de caracteres, strcmp(case_expression,switch_expression) == 1.
 Para los objetos que admiten la función eq , case_expression == switch_expression.
 Para una matriz de celdas case_expression, al menos uno de los elementos de la
matriz de celdas coincide con switch_expression, como se define anteriormente
para los números, los vectores de caracteres y los objetos.

Cuando una expresión de caso es true, MATLAB® ejecuta las instrucciones

correspondientes y sale del bloque switch .

Un switch_expressionevaluado debe ser un vector escalar o de carácter. Un

case_expressionevaluado debe ser un escalar, un vector de carácter o una matriz de celdas

de escalares o vectores de caracteres.

El bloque otherwise es opcional. MATLAB ejecuta las instrucciones sólo

cuando ningún caso es verdadero.


En la práctica se usa más con cadenas que con números. La estructura
de switch/case es

switch variable
case option 1
código a ejecutar si la variable es igual a la opción 1
case option n
código a ejecutar si la variable es igual a la opción 1
otherwise
código a ejecutar si la variable no es igual a ninguna de las opciones
end

 Lógica de vectores

Vector: matriz compuesta de una sola fila o una sola columna (Moore, H., 2012).

Usando vectorización

MATLAB ® está optimizado para operaciones que involucran matrices y

vectores. El proceso de revisión de código basado en bucles y orientado a escalar para usar

la matriz MATLAB y las operaciones de vector se llama vectorización . Vale la pena

vectorizar su código por varias razones:

 Apariencia : el código matemático vectorizado se parece más a las expresiones

matemáticas que se encuentran en los libros de texto, lo que hace que el código sea

más fácil de entender.


 Menos propenso a errores : sin bucles, el código vectorizado suele ser más corto.

Menos líneas de código significan menos oportunidades para introducir errores de

programación.

 Rendimiento : el código vectorizado a menudo se ejecuta mucho más rápido que el

código correspondiente que contiene bucles.

Código de vectorización para computación general

Este código calcula el seno de 1.001 valores que van de 0 a 10:

i = 0;

para t = 0: .01: 10

i = i + 1;

y(i) = sin(t);

final

Esta es una versión vectorizada del mismo código:

t = 0: .01: 10;

y = sin(t);

El segundo ejemplo de código generalmente se ejecuta más rápido que el

primero y es un uso más eficiente de MATLAB. Pruebe la velocidad de ejecución en su

sistema creando scripts que contengan el código que se muestra y luego use las funciones

ticy tocpara medir su tiempo de ejecución.[ CITATION Cen20 \l 9226 ]


Aportes de código para posterior solución del problema

function X = twister(n,Nave) %Esta función toma los valores del tamaño de


cada una de las fichas y el tamaño de la matriz, para generar el campo de
batalla
X=z(n,n); %Se crea una matriz de tamaño n x n y llena de ceros

for j=1:3 %se establece un ciclo for de 1 a 3 para ubicar cada uno de las
fichas a jugar
Verificado = false; %la variable Verificado se usará para ejecutar
un bucle tipo While, hasta que la posición elegida de forma aleatoria sea
válida para ubicar cada ficha que el jugador elija.
while (Verificado == false) %Ciclo While para ubicar los barcos, se
ejecuta mientras no sean válidas las posiciones de las fichas

O = randi([0 1]); % se genera una variable de forma aleatoria


para las fichas, 0 para horizontal, 1 para vertical

if O == 0 % se evalúa si la O aleatoria resulto horizontal

P = randi([1 m-fichas(i)+1]);%se genera una posición X


aleatoria valida, teniendo en cuenta el tamaño actual de la ficha a
ubicar
P_Y = randi([1 m]);%se genera una posición Y aleatoria
if Verificacion_Espacios(A,O,P_Y,P_X,fichas(i)) == true %Se usa la
función Verificación_Espacios para evaluar si en las coordenadas
anteriores es posible ubicar el barco
X(P_Y, P_X:P_X+fichas(i)-1) = fichas(i); %Si es posible, se da la
orden de ubicar la ficha en la matriz X, en las posiciones generadas

Verificado = true; %Al terminar de ubicar la última ficha, se


cambia el valor de la variable Verificado a True, con el fin de terminar
el bucle while
end
end
end
end
end
Bibliografía

 Circuit, L., 2020. Bucle While Para Repetir Cuando La Condición Es Verdadera -
MATLAB While- Mathworks América Latina. [online] La.mathworks.com.
Available at: <https://la.mathworks.com/help/matlab/ref/while.html> [Accessed 8
June 2020].

 López, J., & Hueso, J. (2015). Introducción a MATLAB. Valencia: Universidad


Politécnica de Valencia.

 Moore, H. (2012). MATLAB®. MATLAB for Engineers, Third Edition. Upper


Saddle River, NJ: Pearson Education, Inc, 1-8.

También podría gustarte