You are on page 1of 21

Universidad Tecnica de Machala

Unidad Academica de Ingeniera Civil

Programacion MATLAB
Reporte No. 3

Estructuras de Control: Condicionales


y Repetitivas

Autores:
Profesor:
Alvaro Suarez
Ing. Eduardo Tusa M.Sc.
Juan Polanco

12 de julio de 2015
Resumen
Esta practica presenta la sintaxis de las estructuras de control condicionales y repeti-
tivas que son el fundamento de muchos lenguajes de programacion. A traves del script de
MATLAB se generaran programas que permitan resolver problemas que sean unicamente
secuenciales.

1. Introduccion
Los algoritmos vistos hasta el momento han consistido en simples secuencias de instruc-
ciones; sin embargo, existen tareas mas complejas que no pueden ser resueltas empleando un
esquema tan sencillo, en ocasiones es necesario repetir una misma accion un numero determina-
do de veces o evaluar una expresion y realizar acciones diferentes en base al resultado de dicha
evaluacion. Para resolver estas situaciones existen las denominadas estructuras de control que
poseen las siguientes caractersticas: Una estructura de control tiene un unico punto de entrada
y un unico punto de salida. Una estructura de control se compone de sentencias o de otras
estructuras de control. Tales caractersticas permiten desarrollar de forma muy flexible todo
tipo de algoritmos aun cuando solo existen tres tipos fundamentales de estructuras de control:
Secuencial. Alternativa. Repetitiva. A lo largo de esta leccion se presentaran las distintas estruc-
turas de control, la forma de representarlas en la notacion algortmica y las correspondientes
sentencias FORTRAN para poder utilizarlas en nuestros programas.

2. Metodologa
1. Estructura Condicionales 1.1. Estructura Condicional Simple IF/END La estructura con-
dicional simple posee la siguiente sintaxis en MATLAB.

Figura 1: Estructura Condicional Simple

1.2. Estructura Condicional Doble IF/ELSE/END La estructura condicional doble posee la


siguiente sintaxis en MATLAB.

1.3. Estructura Condicional Multiple IF/ELSEIF/ELSE/END La estructura condicional


multiple posee la siguiente sintaxis en MATLAB.

1.4. Estructura Condicional Multiple SWITCH/CASE La estructura condicional multiple


SWITCH/CASE posee la siguiente sintaxis en MATLAB.

2. Estructuras Repetitivas 2.1. Estructura Repetitiva FOR La estructura repetitiva o de


bucle FOR que realiza n repeticiones o iteraciones, posee la siguiente sintaxis en MATLAB.

1
Figura 2: Estructura Condicional Doble

Figura 3: Estructura Condicional Multiple

2.2. Estructura Repetitiva WHILE La estructura repetitiva o de bucle FOR que realiza n
repeticiones o iteraciones, posee la siguiente sintaxis en MATLAB.
2.3. Interrupcion con BREAK La interrupcion con BREAK posee la siguiente sintaxis en
MATLAB.

2.4. Interrupcion con CONTINUE La interrupcion con CONTINUE posee la siguiente sin-
taxis en MATLAB.

2.1. Dados el radio y la altura de un cilindro, si la altura es mayor al


radio, calcule y muestre el volumen del cilindro, caso contrario
muestre el mensaje: Error.
La resolucion del Problema 1 se presenta a continuacion en el siguiente codigo.

1 clc;
2 clear;
3
4 r=input('Radio del Cilindro: ');
5 h=input('Altura del Cilindro: ');
6
7 if h>r
8 volumen= pi* r2 * h;
9 disp('El volumen es: ');
10 disp(volumen);

2
Figura 4: Estructura Condicional SWITCH/CASE

Figura 5: Estructura Repetitiva FOR

11 else
12 disp('error');
13 end

2.2. Lea un numero de dos cifras. Determinar si la suma de ambas


cifras es una numero par o impar. Muestre un mensaje.
La resolucion del Problema 2 se presenta a continuacion en el siguiente codigo.

1 clc;
2 clear;
3

4 n=input('Ingrese un numero de dos cifras: ');


5 a=fix(n/10);
6 b=mod(n,10);
7
8 z= a + b;
9 disp('La suma es: ');
10 disp(z);
11
12 if mod (z,2)==0
13 disp('La suma es par ');
14 else
15 disp('La suma es impar ');
16 end

3
Figura 6: Estructura Repetitiva WHILE

Figura 7: Interrupcion con BREAK

2.3. Lea la cantidad en Kw que ha consumido una familia y el precio


por Kw. Si la cantidad es mayor a 700, incremente el precio un
5 por ciento para el exceso de Kw sobre 700. Muestre el valor
total a pagar.
La resolucion del Problema 3 se presenta a continuacion en el siguiente codigo.

1 clc;
2 clear;
3

4 kw=100*d;
5 disp('el consumo en Kw es de: ')
6 disp(kw);
7
8 if kw>700
9 T=(kw*5/100)+kw;
10 disp('Su valor total a pagar es de: ');
11 disp(T);
12 else
13 T=kw;
14 disp('Su valor total a pagar es de: ');
15 disp(T);
16 end

4
Figura 8: Interrupcion con CONTINUE

2.4. Lea un valor de temperatura t y un codigo p que puede ser


1 o 2. Si el codigo es 1 convierta la temperatura t de grados
f a grados c con la formula f . Si el codigo es 2 convierta la
temperatura t de grados c a grados f con la formula c
La resolucion del Problema 4 se presenta a continuacion en el siguiente codigo.

1 clc;
2 clear;
3
4 disp('Este programa realiza las siguientes operaciones');
5 disp('Si escoge 1 convierte la temperatura t de grados F a grados C');
6 disp('Si escoge 2 convierte la temperatura t de grados C a grados F');
7
8 t = input('Favor ingresar el valor de la temperatura: ');
9
10 switch valor
11 case 1
12 C = (5*t-32)/9;
13 disp('La temperatura en C es: ');
14 disp(C);
15 case 2
16 F = 32+9*t/5;
17 disp('La temperatura en F es: ');
18 disp(F);
19 end

2.5. Dadas las tres calificaciones de un estudiante, encuentre y mues-


tre la calificacion mas alta.
La resolucion del Problema 5 se presenta a continuacion en el siguiente codigo.

1
2 a
3 b
4 c
5

5
6 if a > b && a > c
7

8 disp(a);
9 elseif b > a && b > c
10
11 disp(b);
12 else
13

14 disp(c);
15 end

2.6. Dadas los tres lados de un triangulo, determine su tipo: esca-


leno, isosceles, o escaleno.
La resolucion del Problema 6 se presenta a continuacion en el siguiente codigo.

1 clc;
2 clear;
3 a = input ('Ingrese el lado a: ');
4 b = input ('Ingrese el lado b: ');
5 c = input ('Ingrese el lado c: ');
6
7 if a == b && a == c
8 disp ('el triangulo es equilatero');
9 elseif a == b | | a == c | | b == c
10 disp ('el triangulo es isosceles');
11 else
12 disp ('el triangulo es escaleno');
13 end

2.7. Leer las dimensiones a, b, c de un bloque rectangular, y el


diametro d de un agujero. Determine si es posible que el blo-
que pueda pasar por el agujero. Debe encontrar la diagonal de
menor longitud y compararla con el diametro.
La resolucion del Problema 7 se presenta a continuacion en el siguiente codigo.

1 clc;
2 clear;
3 a = input ('Ingrese el lado a: ');
4 b = input ('Ingrese el lado b: ');
5 c = input ('Ingrese el lado c: ');
6 d
7 e = sqrt(a2+b2);
8 disp ('la primera diagonal e es: ');
9 disp (e);
10 f = sqrt(c2+b2);
11 disp ('la segunda diagonal f es: ');
12 disp (f);
13 g = sqrt (a2+c2);
14 disp ('la tercera diagonal g es: ');
15 disp (g);
16 if e < f && e < g
17 disp('e es la menor diagonal');

6
18 elseif f < e && f < g
19 disp('f es la menor diagonal');
20 else
21 disp('g es la menor diagonal')
22 end
23
24 if e < d
25

26 elseif f < d
27
28 else
29
30 end

2.8. Calcule el promedio del menor y mayor valor de los pesos de n


paquetes en una bodega. Estos datos se ingresan uno a la vez
dentro de un ciclo. n es un dato ingresado al inicio.
La resolucion del Problema 8 se presenta a continuacion en el siguiente codigo.

1 clc;
2 clear;
3
4 n = input ('Ingrese el numero de paquetes: ');
5 s = 0;
6 d = Inf; % "Inf" Para mostrar el inferior valor
7

8 for i = 1:n %i es igual a 1 hasta n


9 peso = input ('Ingrese un peso: ');
10 if peso > s
11 s = peso;
12 end
13 if peso < d
14 d = peso;
15 end
16 end
17
18 disp ('El mayor peso es: ');
19 disp (s);
20 disp ('El menor peso es: ');
21 disp (d);
22
23 p = (s+d)/2;
24 disp ('El promedio del menor y mayor valor de los pesos es: ');
25 disp (p);

2.9. Dado un numero par n, sume los primeros n impares. Si n : 4,


entonces s : 1 + 3 + 5 + 7 : 16. Verifique si esta suma s es igual
n2 y muestre un mensaje.
La resolucion del Problema 9 se presenta a continuacion en el siguiente codigo.

1 clc;
2 clear;

7
3
4 n = input('Ingrese un numero par: ');
5 s = 0;
6
7 if mod (n,2)==0
8 for i = 1:n;
9 sp = 2 * i - 1;
10 s = s + sp;
11 disp('la suma total es igual a: ');
12 disp(s);
13 end
14 else
15
16 end

2.10. Dados dos numeros enteros a, b, determine su maximo comun


divisor m. Si a :36, b : 45 entonces m :9.
La resolucion del Problema 10 se presenta a continuacion en el siguiente codigo.

1 clc;
2 clear;
3 disp('Ingresar los valores');
4 a = input('Ingrese el valor de a: ');
5 b = input('Ingrese el valor de b: ');
6
7 if a > b
8 c = gcd(a,b);
9
10 disp(c);
11 else
12 d = gcd(b,a);
13
14 disp(d);
15 end

2.11. Dado un numero entero positivo n, descompongalo en sus


factores primos. Si n : 72, entonces los factores primos son
2,2,2,3,3.
La resolucion del Problema 11 se presenta a continuacion en el siguiente codigo.

1 clc;
2 clear;
3
4 n
5 x = 2;
6
7 while n > 1
8
9 if mod (n,x)==0
10 fprintf('Los factores primos son: %g. \n',x);
11 n = n / x ;
12 else

8
13 x = x + 1;
14 end
15 end
16 %%
17 %3.11 OTRA FORMA
18 clc;
19 clear;
20 n
21 x = 2;
22
23 while n x
24 while mod (n,x)==0
25 disp(x);
26 n = fix (n/x);
27 end
28 x = x + 1;
29 end

2.12. Lea los votos de n personas. Cada voto es un numero 1, 2 o


3 correspondiente a tres candidatos. Si el dato es 0 es un voto
en blanco. Si es otro numero es un voto nulo. Determine el
total de los votos de cada candidato y el total de votos blancos
y nulos.
La resolucion del Problema 12 se presenta a continuacion en el siguiente codigo.

1 clc;
2 clear;
3 n = input('ingrese el numero de sufragantes: ');
4 nvotos=0;
5 C=zeros(1,3);
6 nulos=0;
7 blancos=0;
8 while n > nvotos
9 voto=input('Seleccione un candidato: ');
10 switch voto
11 case 1;
12 C(1)=C(1)+1;
13 case 2;
14 C(2)=C(2)+1;
15 case 3;
16 C(3)=C(3)+1;
17 case 0;
18 blancos=blancos+1;
19 otherwise
20 nulos=nulos+1;
21 end
22 nvotos=nvotos+1;
23 end
24 fprintf('\n**** Conteo de votos ****\n');
25 fprintf('\nCandidato 1: %g votos',C(1));
26 fprintf('\nCandidato 2: %g votos',C(2));
27 fprintf('\nCandidato 3: %g votos',C(3));
28 fprintf('\nVotos nulos: %g votos',nulos);
29 fprintf('\nVotos en blanco: %g votos',blancos);
30 [G,I]=max(C);

9
31 fprintf('\n\nEl candidato ganador es el %g con %g votos\n',I,G);
32

33 %%
34 % 3.12 OTRA FORMA
35
36 clc;
37 clear;
38

39 disp ('Este programa cuenta votos');


40 disp ('Si escoge 0 su voto sera en blanco');
41 disp ('Si escoge 1 apoya al primer candidato');
42 disp ('Si escoge 2 apoya al segundo candidato');
43 disp ('Si escoge 3 apoya al tercer candidato');
44 disp ('Si escoge cualquier otro valor su voto sera nulo');
45
46 n = input('ingrese el numero de sufragantes: ');
47 nvotos = 0;
48 C = zeros(1,3);
49 b = 0;
50 nu = 0;
51 while n > nvotos
52 voto=input('Seleccione un candidato: ');
53 switch voto
54 case 1
55 C(1)=C(1)+1;
56 case 2
57 C(2)=C(2)+1;
58 case 3
59 C(3)=C(3)+1;
60 otherwise
61 if voto == 0;
62 b = b+1;
63 else
64 nu = nu+1;
65 end
66 end
67 nvotos=nvotos+1;
68 end
69 disp ('Conteo de votos');
70 disp ('El numero de votos blancos es: ');
71 disp (b);
72 disp ('El numero de votos del primer candidato es: ');
73 disp (C(1));
74 disp ('El numero de votos del segundo candidato es: ');
75 disp (C(2));
76 disp ('El numero de votos del tercer candidato es: ');
77 disp (C(3));
78 disp ('El numero de votos nulos es: ');
79 disp (nu);
80
81 if C(1) > C(2) && C(1) > C(3)
82 disp ('El ganador es el primer candidato');
83 elseif C(2) > C(1) && C(2) > C(3)
84 disp ('El ganador es el segundo candidato');
85 elseif C(3) > C(1) && C(3) > C(2)
86 disp ('El ganador es el tercer candidato');
87 elseif C(1) == C(2) && C(1) == C(3)
88 disp ('Hay un triple empate, deben ir a segunda vuelta');
89 elseif C(1) == C(2)
90 disp ('Hay un empate entre el primer y el segundo candidato, deben ir ...

10
a segunda vuelta');
91 elseif C(1) == C(3)
92 disp ('Hay un empate entre el primer y el tercer candidato, deben ir ...
a segunda vuelta');
93 else
94 disp ('Hay un empate entre el segundo y el tercer candidato, deben ir ...
a segunda vuelta');
95 end

2.13. Lea las coordenadas (u,v) de la ubicacion de una fabrica y las


coordenadas (x,y) de n sitios de distribucion. Encuentre cual
es la distancia del sitio mas alejado de la fabrica.
La resolucion del Problema 13 se presenta a continuacion en el siguiente codigo.

1 clc;
2 clear;
3
4 u= input('ingrese la coordenada en u de la fabrica: ');
5 v= input('ingrese la coordenada en v de la fabrica: ');
6 n=input('Ingrese el numero de sitios de distribucion: ');
7 xi=u;
8 yi=v;
9 d=sqrt((xi-u)2+(yi-v)2);
10 disp('La ubicacion del primer sitio de distribucion es: ');
11 for i=1:n
12 x=input('ingrese la coordenada en x del sitio de distribucion: ');
13 y=input('ingrese la coordenada en y del sitio de distribucion: ');
14 a=sqrt((x-u)2+(y-v)2);
15 disp('La ubicacion del siguiente sitio de distribucion es: ');
16 if a>d
17 d=a;
18 end
19 end
20 disp('La distancia del sitio mas alejado de la fabrica es: ');
21 disp(d);

2.14. Encuentre el mayor valor de la funcion f (x) = sen(x) + ln(x)


para los valores x = 1,0, 1,1, 1,2, 1,3, ..., 4
La resolucion del Problema 14 se presenta a continuacion en el siguiente codigo.

1 clc;
2 clear;
3
4 x=1;
5 y=sin(x)+log(x);
6 ym=y;
7 while x4
8 x=x+0.1;
9 y=sin(x)+log(x);
10 if yym
11 ym=y;
12 else

11
13 end
14 end
15 disp('El mayor valor de la funcion es: ');
16 disp(ym);

2.15. Determine la suma de los n primeros numeros de la serie: 1,


1, 2, 3, 5, 8, 13, 21, ... En la cual cada termino, a partir del
tercero, se obtiene sumando los dos terminos anteriores.
La resolucion del Problema 15 se presenta a continuacion en el siguiente codigo.

1 clc;
2 clear;
3
4 n = input ('Ingrese los n primeros terminos de la serie: ');
5 a = 1;
6 b = 1;
7 e = 0;
8 x = 2;
9
10 if n == 1
11 e = e + a;
12 elseif n == 2
13 e = a + b;
14 else
15 e = a + b;
16 while x < n
17 c = a + b;
18 a = b;
19 b = c;
20 e = e + c;
21 x = x + 1;
22 end
23 end

3. Resultados
Las figuras (9 a la 23) a continuacion muestran los resultados obtenidos al ejecutar los pro-
gramas:

4. Conclusiones
Se pudo conocer todas las estructuras de control que utiliza Matlab.

Se trabajo en el funcionamiento de cada estructura de control utilizando Matlab.

Se pudo llegar a la conclusion de la importacion de las estructuras de control.

12
Figura 9: problema del cilindro

5. Referencias
ESCUELA Superior Politecnica del Litoral de Ecuador. En lnea. Disponible en:http: //www.icm.espol.e
(Consulta 07/06/2015)

13
Figura 10: problema del numero de dos cifras

Figura 11: problema de los Kw

14
Figura 12: problema de la conversion de la temperatura

Figura 13: problema del promedio de las calificaciones

15
Figura 14: problema de los triangulos

Figura 15: problema de la diagonal con el diametro

16
Figura 16: problema del peso de los paquetes

Figura 17: problema de los multiplos de un numero par

17
Figura 18: problema del maximo comun divisor

Figura 19: problema de los factores primos de un numero

18
Figura 20: problema del conteo de votos

Figura 21: problema de las coordenadas y distancia total

Figura 22: mayor valor de una funcion

19
Figura 23: Suma de los n primeros numeros de la serie

20

You might also like