Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Pic Compiler
Pic Compiler
CONTENIDO
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.
Ejemplo 1:
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):
Ejemplo 2:
#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();
}
masa=(presion*volumen)/(0.37*temperatura+460);
printf("\nLa Masa del Aire es: %.2f",masa);
getch();
}
Ejercicios a elaborar
#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();
}
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
#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();
}
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:
Condición
verdadero falso
Hacer Hacer
Acción
Instrucción if/else:
Condición
verdadero falso
Hacer Hacer
Acción Acción
if(ventas>=5000)
{
porcent=ventas*0.09;
pago=PAGO+porcent;
}
else
pago=PAGO;
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 ’);
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:
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
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).
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
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
Clase práctica:
SALUDOS
1. Argentina
2. Española
3. Estadounidense
4. Francesa
5. Inglesa
6. Mexicana
2.
1
2
3
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
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:
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
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:
for i=n:-2:0 %ciclo for estableciendo valor inicial, decremento, valor final
disp(i) %imprimir resultados
end
Sentencia while
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
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.
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