Está en la página 1de 16

A UNIVERSIDAD NACIONAL DE INGENIERIA

CONTENIDO

1. UNIDAD III: Sentencias de control en Matlab


1.1 Estructura secuencial
1.2 Estructura selectiva
Instrucción if
Instrucción if/else
Instrucción else/if
Instrucción switch
1.3 Estructura repetitiva
Sentencia for
Sentencia while
Sentencia do-while
Sentencia break
Sentencia continue
Sentencias try, catch, end

2. UNIDAD IV: Vectores y Matrices


Programación II
Programando en MATLAB

Unidad III y IV: Sentencias de control en MATLAB

Objetivo de la unidad: utilizar las estructuras de control (secuencial, selectiva, repetitiva) en


la elaboración de programas en MATLAB.

1. Estructura secuencial
2. Estructura selectiva
3. Estructura repetitiva

Una forma de pensar los programas de cómputos (Turbo C, Matlab, Java, etc) es considerar
como se organizan los enunciados que componen el programa. Por lo general, las secciones
del código de los programas se pueden organizar en tres estructuras: secuencial, selectiva,
repetitiva.

1.1 Estructura secuencial

En la estructura secuencial el control pasa de una sentencia a la siguiente; son listas de


comandos que se ejecutan una después de otra.

Ejemplo 1:

Programa en C (area.c) Programa en MATLAB (area.m)


/*Calcular el area de un triangulo dada la %Calcular el area de un triangulo dada la base
base y la altura.(A=B*A/2)*/ y la altura. (area=b*a/2)

#include<stdio.h> b=input('ingrese la base: ');


#include<conio.h> a=input ('ingrese el area: ');
area=b+a;
void main(void) fprintf('el area es: %f',area)
{
int base, altura;
float area;
clrscr();
printf("Escriba la base y altura del triangulo:
");
scanf("%d %d",&base,&altura);
area=base*altura/2;
printf("El area del triangulo es: %.1f ",area);
getch();
}

Nota: para escribir el código en Matlab se necesita crear un nuevo fichero M-fichero (descrito
en la página 12 de este documento):

a. Se abre este archivo


b. se escribo el código en el
c. se guarda
d. se ejecuta con F5 o Debug, Run
Elaborado por Ing. Jacqueline López 1
Programación II
Programando en MATLAB

Ejemplo 2:

Programa en C (cuadrado1.c) Programa en MATLAB (cuadrado.m)


/*leer un numero y escribir su cuadrado*/ % leer un numero y escribir su cuadrado

#include<stdio.h> n=input('Valor del numero: ');


#include<conio.h> cuad=n*n;
void main(void) fprintf('el cuadrado de %d es: %f',n,cuad)
{
int n,cuad;
clrscr();
printf("Escriba el numero: ");
scanf("%d",&n);
cuad=n*n;
printf("El cuadrado de %d es %d",n,cuad);
getch();
}

Programa en C (cuadrado.c) Programa en MATLAB (cuadrado.m)


/*leer un numero y escribir su cuadrado*/ % leer un numero y escribir su cuadrado

#include<stdio.h>
#include<conio.h> clc %limpia pantalla
void main(void) n=input('Valor del numero: ');
{ cuad=n*n;
int n,cuad; fprintf('el cuadrado de %d es: %f\n',n,cuad)
clrscr();
printf("Escriba el numero: ");
scanf("%d",&n);
cuad=n*n;
printf("El cuadrado de %d es %d",n,cuad);
getch();
}

Elaborado por Ing. Jacqueline López 2


Programación II
Programando en MATLAB

Programa en C (masa.c) Programa en MATLAB (masa.m)


/*la presión, el volumen y la temperatura de una % la presión, el volumen y la
masa de aire se relacionan por la formula: Masa= temperatura de una masa de aire se
(presion * volumen) / (0.37 * temperatura + 460) relacionan por la formula: Masa=
Calcular la masa */ (presion * volumen) / (0.37 *
temperatura + 460) Calcular la masa */
#include<stdio.h>
#include<conio.h> clc %limpia pantalla
void main(void) fprintf('\t\tCALCULO DE LA MASA DE
{ AIRE');
float presion,volumen,temperatura,masa; %Solicitud de las variables desconocidas
clrscr(); presion=input('\n\nIngrese la Presion: ');
printf("Presion del aire: "); vol=input('Ingrese el Volumen: ');
scanf("%f",&presion); temp=input('Ingrese la Temperatura: ');
printf("\nVolunmen del aire: "); masa=(presion*vol)/(0.37*temp+460);
scanf("%f",&volumen); fprintf('\t\t\nEl valor de MASA es:
printf("\nPresion del Temperatura: "); %.2f\n',masa)
scanf("%f",&temperatura);

masa=(presion*volumen)/(0.37*temperatura+460);
printf("\nLa Masa del Aire es: %.2f",masa);
getch();
}

Ejercicios a elaborar

1. calcular la longitud(L) de una circunferencia sabiendo q es igual al producto de su


diámetro(D) por PI(D=2R)
2. Que lea dos números y calcule: la suma, resta, multiplicación división y modulo e imprima
en pantalla los resultados
3. Que convierta pies a pulgadas (1 pie = 12 pulgadas)

#include<stdio.h>
#include<conio.h>
void main(void)
{
float pie,pulg=12.0,conver;
clrscr();
printf("\nEscriba la cantidad en Pie que desea convertir: ");
scanf("%f",&pie);
conver=pie*pulg;
printf("\n%.1f Pies equivalen a %.1f Pulgadas",pie,conver);
getch();
}

Elaborado por Ing. Jacqueline López 3


Programación II
Programando en MATLAB

4. Que calcule el sueldo de un trabajador dada la cantidad de horas trabajadas y el costo


por hora.
#include<stdio.h>
#include<conio.h>
float sueldo(int,float);
void main(void)
{
int horas;
float valhora,pago;
clrscr();
printf("Ingrese cantidad de horas del trabajador: ");
scanf("%d",&horas);
printf("\nIngrese costo en cordobas que tiene la hora: ");
scanf("%f",&valhora);
pago=sueldo(horas,valhora);
printf("\n\nPago por recibir: %.2f Cordobas netos",pago);
printf("\n\nPRECIONE UNA TECLA PARA CONTINUAR . . . ");
getch();
}

float sueldo(int hora,float costo)


{
float p;
p=hora*costo;
return(p);
}

Soluciones:
Programa en C (area.c) Programa en MATLAB (area.m)
1) 1)
#include<stdio.h> %calcular la longitud (L) de una circunferencia
#include<conio.h> sabiendo q es igual al %producto de su
#define PI 3.1416 diametro (D) por PI

void main(void) clc; %limpia pantalla


{ radio=input('Ingrese el valor del radio: ');
float l,d,r; %calculo del diametro
clrscr(); diametro=2*radio;
printf("Escriba el radio: "); %calculo de la longitud
scanf("%f",&r); l=diametro*3.1416; %en matlab pi es una
constante 3.1416;
/*calculo del diametro*/ fprintf('La longitud es: %.2f\n',l);
d=2*r;
/*calculo de la longitud*/
l=d*PI;
printf("La longitud es: %.2f",l);
getch();
}
2) /*Que lea dos números y calcule: la 2)
suma, resta, multiplicación división y

Elaborado por Ing. Jacqueline López 4


Programación II
Programando en MATLAB

modulo e imprima en pantalla los


resultados*/

#include<stdio.h>
#include<conio.h>
void main(void)
{
int num1,num2,suma,resta,mult,mod;
float div;
clrscr();
printf("\nEscriba los dos numeros: ");
scanf("%d",&num1);
scanf("%d",&num2);
suma=num1+num2;
resta=num1-num2;
mult=num1*num2;
div=num1/num2;
mod=num1%num2;
printf("\nsuma: %d \nresta= %d
\nmultiplicacion= %d \ndivision: %.2f
\nmodulo=%d",suma,resta,mult,div,mod);
getch();
}

Elaborado por Ing. Jacqueline López 5


Programación II
Programando en MATLAB

1.2Estructura selectiva

MATLAB posee un lenguaje de programación que –como cualquier otro lenguaje– dispone de
sentencias para realizar bifurcaciones y bucles. Las bifurcaciones permiten realizar una u otra
operación según se cumpla o no una determinada condición.

 Instrucción if:

Permite a un programa tomar una decisión, basándose en la verdad o falsedad de la


instrucción if, si se cumple la condición, es decir si la condición es verdadera se ejecuta
la (s) instrucción (es) en el cuerpo de la instrucción if. Si la condición no se cumple, es
decir la condición es falsa, no se ejecutara la instrucción en el cuerpo de la estructura.

En algoritmos N-S se graficaba:

Condición
verdadero falso

Hacer Hacer

Acción

Elaborado por Ing. Jacqueline López 6


Programación II
Programando en MATLAB

 Instrucción if/else:

La instrucción if simple permite ejecutar una serie de enunciados si una condición es


verdadera y saltar dichos pasos si la condición es falsa. La clausula else le permite
ejecutar un conjunto de enunciados si la comparación es verdadera y un conjunto
diferente de enunciados si la comparación es falsa

En algoritmos N-S se graficaba:

Condición
verdadero falso

Hacer Hacer

Acción Acción

Programa en C (mayor25.c) Programa en MATLAB (mayor25.m)


/*que lea un entero e indique si es mayor o %que lea un entero e indique si es mayor o
menor que 25*/ menor que 25

#include<stdio.h> clc; %limpia pantalla


#include<conio.h> entero=input('Deme un numero: ');
void main(void) if (entero > 25)
{ fprintf('el %d es mayor que 25\n',entero);
int entero; elseif(entero<25)
clrscr(); fprintf('el %d es menor que 25\n',entero);
printf("Deme un numero: "); else
scanf("%d",&entero); fprintf('el %d es igual que 25\n',entero);
if(entero>25)
printf("%d es mayor que 25",entero); end;
else
printf("%d es menor que 25",entero);
getch();

Programa en C (mayor25.c) Programa en MATLAB (mayor25.m)


/*Una empresa de productos químicos le paga a %el mismo enunciado
sus vendedores mediante un esquema de
comisiones. Los vendedores reciben $200 dolares clc; %limpia pantalla
semanales mas 9% de sus ventas si estas son PAGO=200;
iguales o superan los $5000 dolares. Por ejemplo,
ventas=input('Introduzca las ventas
un vendedor que vende $5000 de productos
químicos durante la semana recibe $200 mas el
semanales: ');
9% de $5000 para un total de su pago de $650. if(ventas>=5000)
Desarrolle un programa que introduzca las ventas porcent=ventas*0.09;
totales de un vendedor durante la última semana pago_dar=PAGO+porcent;
Elaborado por Ing. Jacqueline López 7
Programación II
Programando en MATLAB

y despliegue los ingresos de ese vendedor (su else


pago).*/ pago_dar=PAGO;
end
#include<stdio.h> fprintf('El salario es: %.2f
#include<conio.h> dolares\n',pago_dar);
#define PAGO 200
void main(void)
{
float pago,ventas,porcent;
clrscr();
printf("Introduzca las ventas semanales: ");
scanf("%f",&ventas);

if(ventas>=5000)
{
porcent=ventas*0.09;
pago=PAGO+porcent;
}

else

pago=PAGO;

printf("El salario es: %.2f dolares",pago);


getch();

 Instrucción else/ if

Cuando se anidan varios niveles de enunciados if/else, se puede ser difícil determinar cuáles
expresiones lógicas deben ser verdaderas (o falsas) con la finalidad de ejecutar cada conjunto
de enunciados. La función if/else le permite comprobar criterios multiples mientras se
mantiene el código fácil de leer.

Ejemplo:

if edad < 16
disp.(‘lo siento tendrá que esperar’);
elseif edad < 18
disp.(‘Puede obtener un permiso para conducir’);
elseif edad < 70
disp.(‘Puede obtener una licencia estándar’);
else
disp.(‘los conductores mayores de 70 requieren una licencia ’);

Elaborado por Ing. Jacqueline López 8


Programación II
Programando en MATLAB

 Instrucción switch y 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 es similar a
if/else/elseif. En esta estructura se permite elegir entre multiples salidas, con base a ciertos
criterios. Los criterios pueden ser un numero o una cadena.

Esta instrucción permite realizar diferentes acciones dependiendo del valor de una constante
numérica o de cadena.

Sintaxis:

switch expresión (escalar o cadena)

case valor1
sentencias %se ejecuta si expresión es valor1

case valor1
sentencias %se ejecuta si expresión es valor1
.
.
.
otherwise
sentencias %se ejecuta si expresión no cumple ningún caso

end

Explicación: si expresión coincide con valor1, se ejecuta el conjunto de ordenes 1; si valor2 o


valorn coincide con expresión, se ejecuta el conjunto de ordenes establecidas. En otro caso se
mandaría un mensaje al usuario indicando que dicho valor no se contempla en los casos.

Ejemplo:

El siguiente programa lee dos enteros y un operador el programa evaluará que tipo de
operador es el elegido y realizará la acción (sumar, restar, multiplicar, dividir).

clc %limpia pantalla


%pida al usuario los dos numeros
num1=input('Escriba el primer número: ');
num2=input('Escriba el segundo numero: ');
oper=input('Elija el operador: ','s');
switch oper
case '+'
resul=num1+num2;
disp(['resultado= ',num2str(resul)]);
%fprintf('suma = %d',resul);

case '-'
resul=num1-num2;
disp(['resultado= ',num2str(resul)]);
Elaborado por Ing. Jacqueline López 9
Programación II
Programando en MATLAB

case '*'
resul=num1*num2;
disp(['resultado= ',num2str(resul)]);
%fprintf('suma = %d',resul);

case '/'
resul=num1/num2;
disp(['resultado= ',num2str(resul)]);
otherwise
disp('OPERADOR NO VALIDO');
end

%IMPORTE A PAGAR POR UN VEHICULO


clc;
fprintf('\t\tVEHICULOS\n');
fprintf('\n\t1. Bicicletas');
fprintf('\n\t2. Motos y Coches');
fprintf('\n\t3. Camion');
fprintf('\n\t4. Salir');
opcion=input('\n\n\n ELIJA UNA OPCION --> ');
switch opcion
case 1
imp=5;
fprintf('\n\nImporte = %.2f cordobas\n',imp);

case 2
km=input('Introducir la cantidad de kilometros: ');
imp=5*km;
fprintf('\n\nImporte = %.2f cordobas',imp);
case 3
km=input('Introducir la cantidad de kilometros: ');
ton=input('Introducir la cantidad de toneladas: ');
imp=(5*km)+(10*ton);
fprintf('\n\nImporte = %.2f cordobas',imp);
otherwise % de otra manera
fprintf('\n\n!!OPCION NO VALIDA');
end %fin del switch

pause() % pausa hasta que se pulse una tecla


clc;

Elaborado por Ing. Jacqueline López 10


Programación II
Programando en MATLAB

Clase práctica:

1. Escribir un programa que, según la nacionalidad, muestre en pantalla un mensaje en el


idioma correspondiente. Preguntar por la nacionalidad del usuario.

SALUDOS
1. Argentina
2. Española
3. Estadounidense
4. Francesa
5. Inglesa
6. Mexicana

Para los casos {1,2,6} es ‘Buenos días ’


Para los casos {3,5} es ‘Good Morning ’
Para el caso 4 es ‘Bonjour’
Para otros “se desconoce”

2.

1
2
3

Elaborado por Ing. Jacqueline López 11


Programación II
Programando en MATLAB

4.7 Estructura repetitiva

Los bucles permiten repetir las mismas o análogas operaciones sobre datos distintos. Mientras
que en C/C++/Java el "cuerpo" de estas sentencias se determinaba mediante llaves {...}, en
MATLAB se utiliza la palabra end con análoga finalidad. Existen también algunas otras
diferencias de sintaxis.

La figura anterior muestra dos posibles formas de bucle, con el control situado al principio o al
final del mismo. Si el control está situado al comienzo del bucle es posible que las sentencias
no se ejecuten ninguna vez, por no haberse cumplido la condición cuando se llega al bucle por
primera vez. Sin embargo, si la condición está al final del bucle las sentencias se ejecutarán por
lo menos una vez, aunque la condición no se cumpla. Muchos lenguajes de programación
disponen de bucles con control al principio (for y while en C/C++/Java) y al final (do … while en
C/C++/Java). En MATLAB no hay bucles con control al final del bucle, es decir, no existe
construcción análoga a do ... while. Las bifurcaciones y bucles no sólo son útiles en la
preparación de programas o de ficheros *.m.

 Sentencia for

La sentencia for repite un conjunto de sentencias un número predeterminado de veces. La


sentencia for de MATLAB es muy diferente y no tiene la generalidad de la sentencia for de
C/C++/Java. La siguiente construcción ejecuta sentencias con valores de i de 1 a n, variando de
uno en uno.

for i=1:n
sentencias
end
o bien,

for i=vectorValores
sentencias
end
Elaborado por Ing. Jacqueline López 12
Programación II
Programando en MATLAB

Donde vectorValores es un vector con los distintos valores que tomará la variable i.

Existe otro caso más general para la variable del bucle en donde se especifica tanto el valor
inicial, el valor final y su respectivo incremento para cada iteración:

(valor_inicial: incremento: valor_final);

El bucle se ejecuta por primera vez con i=10, y luego i se va reduciendo de 2 en 2 hasta que
llega a ser menor que 1, en cuyo caso el bucle se termina:

for i=n:-2:1
sentencias
end

En el siguiente ejemplo se presenta una estructura correspondiente a dos bucles anidados. La


variable j es la que varía más rápidamente (por cada valor de i, j toma todos sus posibles
valores):

for i=1:m
for j=1:n
sentencias
end
end

Una última forma de interés del bucle for es la siguiente (A es una matriz):

for i=A
sentencias
end

en la que la variable i es un vector que va tomando en cada iteración el valor de una de las
columnas de A.
Cuando se introducen interactivamente en la línea de comandos, los bucles for se ejecutan
sólo después de introducir la sentencia end que los completa.

Ejemplo:

%programa q imprime los números pares desde 10 hasta 1

clc %limpia pantalla


n= input ('Ingrese un numero:' ); %se solicita el numero al usuario
disp(['Numeros decrementados de 2 en 2 a partir del numero' num2str(n)]);

for i=n:-2:0 %ciclo for estableciendo valor inicial, decremento, valor final
disp(i) %imprimir resultados
end

Elaborado por Ing. Jacqueline López 13


Programación II
Programando en MATLAB

 Sentencia while

La estructura del bucle while es muy similar a la de C/C++/Java. Su sintaxis es la siguiente:

while condición
sentencias
end

Donde condición puede ser una expresión vectorial o matricial. Las sentencias se siguen
ejecutando mientras haya elementos distintos de cero en condición, es decir, mientras haya
algún o algunos elementos true. El bucle se termina cuando todos los elementos de condición
son false (es decir, cero).

 Sentencia break

Al igual que en C/C++/Java, la sentencia break hace que se termine la ejecución del bucle for
y/o while más interno de los que comprenden a dicha sentencia.

 Sentencia continue

La sentencia continue hace que se pase inmediatamente a la siguiente iteración del bucle for o
while, saltando todas las sentencias que hay entre el continue y el fin del bucle en la iteración
actual.

 Sentencias try...catch...end

La construcción try...catch...end permite gestionar los errores que se pueden producir en


tiempo de ejecución. Su forma es la siguiente:
try
sentencias1
catch
sentencias2
end

En el caso de que durante la ejecución del bloque sentencias1 se produzca un error, el control
de la ejecución se transfiere al bloque sentencias2. Si la ejecución transcurriera normalmente,
sentencias2 no se ejecutaría nunca. MATLAB dispone de una función lasterr que devuelve una
cadena de caracteres con el mensaje correspondiente al último error que se ha producido. En
la forma lasterr('') pone a cero este contador de errores, y hace que la función lasterr devuelva
la matriz vacía[] hasta que se produzca un nuevo error.

Elaborado por Ing. Jacqueline López 14


Programación II
Programando en MATLAB

Bibliografía
3. http://www.monografias.com/trabajos5/matlab/matlab.shtml#intro
4. http://www.esi2.us.es/~fabio/apuntes_matlab.pdf
5. http://ayg1-lcc.tripod.com/material/programacion.pdf
6. Matlab y sus aplicaciones en las ciencias y la ingeniería. Cesar Pérez. Pearson
Educación, S.A, Madrid 2002. ISBN:84-205-3537-0
7. Transpuesta:
http://www.ingenieria.uady.mx/weblioteca/programacion/SumaMatrices/MATRIZTRA
NSPUESTA.htm
8. Ejemplos en Matlab: http://usuarios.lycos.es/automatica/Ejemplos/ejemmatlab.htm

Elaborado por Ing. Jacqueline López 15

También podría gustarte