You are on page 1of 22

Laboratorio de Computacin Cientfica

Primer semestre

Programacin MATLAB y OCTAVE

Indexacin (Repaso)

Temario
Funciones y Scripts (M-files) Programacin

Bucles for/while Condicionales if

Programacin
Diagrama flujo Esquema grfico de lo que se desea hacer Ayuda a comprender su evolucin

Programa: Traduccin casi directa a un lenguaje alto-nivel

Funciones y scripts
Ficheros de formato matlab para crear un New M-files programa (MATLAB)

y apertura de la ventana del editor de texto.


o teclear edit nombre_fichero en lnea de comandos

Programacin
Funciones

Un funcin, .m o M-file, es un fichero de texto que agrupa un conjunto de instrucciones Matlab/octave interpreta las instrucciones del fichero en secuencia. Para ejecutar o correr una funcin simplemente hay que escribir su nombre en la ventana de comandos Acepta parmetros o variables de entrada y salida Opera internamente con sus propias variables

Programacin
Funciones

Sintaxis del fichero nombre_funcion.m:


function [var_salida] = nombre_funcion (var_entrada1,var_entrada2)

Variable de entrada: toma y reconoce los valores numricos asignados a esa variable en la ventana de comandos, trabajando con ellos salvo que internamente dentro de la funcin se modifiquen. Variable de salida: transfieren informacin que tienen dentro de la funcin al workspace de Matlab.
Funcin suma.m >> sum=suma(3,4) sum=7

function sum=suma(a,b) sum=a+b;

El nombre de la funcin es aconsejable que sea igual al nombre del archivo

Ejemplo de funciones .m
Crea una funcin llamada sistema.m que resuelva el sistema de ecuaciones x +5y-8z =1 2x+3y + z = 2 x+2y+3z = 4 considerando a la matriz A y el vector b variables de entrada y al vector solucin x variable de salida. Funcin sistema.m function [x]=sistema(A,b) x=A\b; x+ 3y+6z 8x+ 9y+ z 3x+10y+9z =1 =3 =4 >> A=[1 5 -8;2 3 1;1 2 3]; >> b=[1;2;4]; >> [x]=sistema(A,b) >> C=[1 3 6;8 9 1;3 10 9]; >> d=[1;3;4]; >> [y]=sistema(C,d)

Programacin
Scripts

Coleccin de sentencias que se ejecutan de forma secuencial escritas en un fichero Utiliza las variables del entorno de Matlab
Script suma.m
sum=a+b;

>> a=3; b=4; >> suma; >> sum sum = 7

Ejemplo de scripts
Crea un script llamado sistema_script.m que resuelva el sistema de ecuaciones x +5y-8z =1 2x+3y + z = 2 x+2y+3z = 4

Script sistema_script.m x=A\b;

>> A=[1 5 -8;2 3 1;1 2 3]; >> b=[1;2;4]; >> sistema_script >> C=[1 3 6;8 9 1;3 10 9]; >> d=[1;3;4]; >> sistema_script

x+ 3y+6z 8x+ 9y+ z 3x+10y+9z

=1 =3 =4

Programacin
Diferencia scripts-funciones

Scripts
NO tienen parmetros de entrada ni salida Variables definidas tienen mbito global

Funciones
Tienen parmetros de entrada y salida Variables definidas tienen mbito local

Programacin
Ejemplo diferencia funcin/script
parmetros de entrada y salida

Funcin
function sum=suma(a,b) sum=a+b;

Script
suma.m
sum=a+b; >> a=3; b=4; >> suma; >> sum

>> x=suma(3,4) x=7 >>a ??? Undefined function or variable 'a'.

sum = 7

a, b y sum no definidos x se ha definido y vale 7

a, b y sum definidos a vale 3 b vale 4 sum vale 7

Diferencia funciones y scripts (ejemplos)


function [media,desviacion]=medesv(x) %Da el valor medio y la desviacin estandar del vector x. n = length(x); media = sum(x)/n; desviacion = sqrt(sum((x-media).^2)/n);
>>x=[1 2 3 4 3 2 1] >>[MEDIA,DESVIACION]=medesv(x) >>MEDIA >> DESVIACION >> MEDIA=1000.0; >> DESVIACIN=500.0; >>[MEDIA,DESVIACION]=medesv(x) >>MEDIA >> DESVIACION >> MEDIA=1000.0; >> DESVIACIN=500.0; >>medesv(x) >>MEDIA >> DESVIACION

Diferencia funciones y scripts (ejemplos)


% Script meddesv % Da el valor medio y la desviacion estandar del vector x. n = length(x); media = sum(x) / n; desviacion = sqrt(sum((x - media).^2)/n);
>> clear all >>x=[1 2 3 4 3 2 1]; >>meddesv >> media >> desviacion >> clear all >>meddesv

Programacin
Bucles for/while

for: itera entre valores conocidos


>> for x = 1:5, disp ('x toma el valor'); disp (x) end

for variable = expresin <orden> end

while: itera hasta que se deja de cumplir una condicin

while <expresin> <orden> end

>> a=3; >> while a < 5, disp ('a es menor que 5 ya que vale') disp (a) a = a + 1; end

Programacin (ejemplos)
Ejecuta el siguiente ejemplo de FOR que permite estimar

i
i=1
>> serie=0; n=10; >>for i=1:n serie=serie+i*i; end

sumaserie.m function [serie]=sumaserie(n) serie=0; for i=1:n serie=serie+i*i; end >>[serie]=sumaserie(10)

Programacin (ejemplos)
Ejecuta el siguiente ejemplo de FOR que permite estimar el factorial de un nmero N
>>N=4; >> fact=1; >> for i=1:N fact=fact*i; end Funcin factorial.m function [fact]=factorial(N) fact=1; for i=1:N fact=fact*i; end >>[factor]=factorial(4)

Programacin (ejemplos)
Realiza lo mismo pero con un bucle WHILE
>>clear all >>i=1; >>fact=1; >> while (i<4) i=i+1; fact=fact*i; end >> fact

Nota: Hay que modificar manualmente el contador, puesto que al revs que el bucle for, el bucle while no gestiona ningn contador

Programacin
Operadores condicionales
Operador < <= > >= == ~= Significado Menor que Menor o igual Mayor que Mayor o igual Igual que Distinto que Operador & | Significado y o no

Operadores lgicos

Y adems

xor (x,y) operacin o exclusiva, any (x) algn? all (x) todos?

Programacin
Sentencia if

Evala una expresin lgica

if <expresin1> <orden> elseif <expresin2> <orden> else <orden> end

>> if x<5, disp(x es menor que 5); end

Programacin (ejemplos)
Crea una funcin triang.m que determine si se puede formar un tringulo equiltero a partir de los valores de sus 3 lados function result=triang(a,b,c) % Nos indica si con las variables de entrada %a,b,c se puede formar un tringulo equiltero % Ordenamos los lados de menor a mayor x=sort([a,b,c]); if x(3)==x(2) & x(3)==x(1) result='Equilatero'; else result='No es equilatero'; end

You might also like