Sei sulla pagina 1di 67

02/02/2015

Conocimientos Bsicos de Programacin y


Mtodos Numricos
Grados en Ingeniera Civil y Obras Pblicas
Curso 2014/2015
Tema 1:
Introduccin a la Programacin de
Ordenadores

Contenido
1. Introduccin a la programacin.
2. Conceptos bsicos de programacin en
MATLAB.
3. Programacin estructurada y modular con
MATLAB.
4. Visualizacin de grficos en MATLAB.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 2

02/02/2015

Contenido
1. Introduccin a la programacin.
1.1 Definiciones bsicas: instruccin, algoritmo y
programa.
1.2 El proceso de desarrollo del software.
1.3 El lenguaje de programacin. Tipos.
1.4 Traductores de lenguaje. Compiladores e intrpretes.
1.5 Esquema general de funcionamiento de un
programa.
1.6 Programas escritos en pseudocdigo.
1.7 Recomendaciones prcticas a la hora de programar.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 3

1.1 Definiciones bsicas


Instruccin: Expresin formada por nmeros, operaciones y
letras que indica, en un computador, la operacin que debe
realizar y los datos correspondientes.

Algoritmo: Conjunto ordenado y finito de instrucciones


(operaciones, asignaciones, estructuras de control, ) que
permite hallar la solucin de un problema.
Secuencia de instrucciones no ambigua que resuelve una tarea
concreta en un tiempo finito.

Programa: Conjunto de instrucciones en un lenguaje dado que


indica a un ordenador cmo resolver un problema.
Codificacin de uno o ms algoritmos en un lenguaje de programacin.

Procesar: Someter datos a una serie de operaciones


programadas.

Al proceso de traducir o codificar un algoritmo en un programa


de programacin se le conoce con el nombre de implementacin.
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 4

02/02/2015

1.2 El Proceso de desarrollo del


software
Los pasos a seguir a la hora de desarrollar un programa
para resolver cierto problema, son los siguientes:
Definicin del problema: Implica el desarrollo y clarificacin exacta
de las especificaciones del problema, de los datos de entrada y de
salida.
Diseo del algoritmo: Describe la secuencia ordenada de pasos que
conducen a la solucin de un problema dado.
Implementacin: Codificar el algoritmo como un programa en un
lenguaje de programacin.
Ejecucin y validacin del programa en el ordenador.
Documentacin: Tanto la definicin del problema como el algoritmo
y el programa deben formar parte de la documentacin. Su
contenido depender de a quin va dirigida.
Mantenimiento del programa: Los programas pueden quedarse
anticuados, debiendo ser revisados, ampliados y modificados.
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 5

1.3 El lenguaje de programacin.


Tipos
Lenguaje de programacin: Conjunto de reglas,
smbolos y palabras especiales utilizados para
construir un programa de forma que pueda ser
entendido por el ordenador.
Se clasifican en:
Lenguajes mquina.
Lenguajes de bajo nivel o ensambladores.
Lenguajes de alto nivel.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 6

02/02/2015

1.3 El lenguaje de programacin.


Tipos
Lenguaje mquina:
Es aqul que entiende directamente el ordenador ya que sus instrucciones
son secuencias binarias. Tambin se le conoce como cdigo binario.
Dificultad de desarrollo, verificacin y puesta a punto de programas.
El cdigo desarrollado no es portable.

Lenguajes de bajo nivel (ensambladores):


Est compuesto por las instrucciones del lenguaje mquina escritas
mediante nemotcnicos. Es ms fcil de utilizar que el anterior.
El programa sigue siendo dependiente de la mquina.
Requiere la traduccin del cdigo fuente al programa objeto.

Lenguajes de alto nivel (C, C++, Java, Fortran, Matlab, ):


Facilidad de desarrollo, verificacin y mantenimiento de los programas.
Los programas desarrollados son portables.
Requiere la traduccin del cdigo fuente al programa objeto.
Son los ms utilizados por los programadores.
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 7

1.4 Traductores de lenguaje


Traductores de lenguaje: Programas que traducen
los programas fuente escritos en un lenguaje de
alto nivel a cdigo mquina. En algunos casos
pasan por fases intermedias generando lenguaje
ensamblador.
Se dividen en dos categoras:
Compiladores.
Intrpretes.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 8

02/02/2015

1.4 Traductores de lenguaje


Compiladores:
Programas que traducen un cdigo fuente, escrito en un lenguaje
de alto nivel, a un cdigo objeto escrito en lenguaje mquina.
El programa desarrollado se ejecuta tras la compilacin.
La fase de compilacin es independiente de la fase de ejecucin.
Los programas compilados son ms rpidos que los interpretados.

Intrpretes:
Programas que traducen el cdigo fuente instruccin a instruccin a
lenguaje mquina mientras lo van ejecutando.
No generan un programa escrito en lenguaje mquina.
Cada vez que se ejecuta el programa, este deber ser interpretado
de nuevo.
Son ms lentos que el mismo programa compilado.
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 9

1.5 Esquema general de funcionamiento


de un programa

El esquema general de funcionamiento de un


programa se divide en:
Entrada de datos: Suele tener lugar al comienzo del
programa, aunque no tiene por qu ser as.
Procesamiento de la informacin: Una vez disponibles
los datos, el programa sigue las instrucciones para
operar con ellos y obtener los resultados.
Salida de datos: Una vez procesada la informacin el
programa presenta por pantalla, o por impresora, los
resultados obtenidos.
Entrada de
datos

Proceso

Salida de
resultados

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 10

02/02/2015

1.6. Programas escritos en


pseudocdigo

Nos permite realizar un esbozo del programa final


utilizando un lenguaje cercano al natural.
Despus ser sencillo traducir al lenguaje elegido.
Ejemplo: Realizar un algoritmo en pseudocdigo que,
dados 2 nmeros, calcule la suma de ambos.
Algoritmo en pseudocdigo
Inicio
 Leer el primer nmero
 Leer el segundo nmero
 Calcular la suma de ambos
 Mostrar el resultado
Fin
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 11

1.7 Recomendaciones prcticas a la


hora de programar

Escribir de manera ordenada.


La tabulacin es imprescindible para que los
programas sean ordenados y legibles.
Utilizar lneas en blanco para separar las diferentes
partes del programa.
Conviene documentar los programas, incluyendo
comentarios.
Utilizar variables lo ms autoexplicativas posibles.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 12

02/02/2015

Contenido
2. Conceptos bsicos de programacin en MATLAB.
2.1 Qu es MATLAB?
2.2 El lenguaje de MATLAB.
2.3 Definicin de variable.
2.4 Asignacin de variables.
2.5 Operadores y expresiones. Operadores aritmticos,
relacionales y lgicos.
2.6 Tipos de datos: vectores, matrices y cadenas de
caracteres.
2.7 Funciones elementales de MATLAB.
2.8 Funciones de entrada-salida.
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 13

2.1 Qu es Matlab?
Acrnimo de MATrix LABoratory.
Aplicacin informtica interactiva para realizar clculos
cientficos y de ingeniera basada en matrices.
Creado en los aos 70 por Cleve Moler para proporcionar
un acceso a los cdigos LINPACK y EISPACK sin necesidad
de usar Fortran.
Comercializado por MathWorks desde 1984.
Compuesto por:
Un entorno de trabajo para usar Matlab como usuario o como
programador.
Una amplia biblioteca de funciones matemticas.
Un lenguaje propio de programacin.
Herramientas de visualizacin de datos y diseo de interfaces
grficos de usuario.
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 14

02/02/2015

2.1 Qu es Matlab?
Interfaces para integrar Matlab con otros lenguajes de
programacin.
Toolboxes o paquetes de ampliacin aplicables a determinados
campos de la ingeniera:









Aplicacin matemtica en general (clculo simblico, estadstica,


optimizacin, redes neuronales, base de datos, splines, etc.).
Adquisicin de datos.
Procesamiento de seales.
Procesamiento de imgenes.
rea financiera.
Simulacin de sistemas dinmicos.
Anlisis y diseo de sistemas de control.
Etc.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 15

2.1 Qu es Matlab?

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 16

02/02/2015

2.2 El lenguaje de programacin


de Matlab
Lenguaje de programacin de alto nivel muy popular en el
mbito de la computacin cientfica.

Muy utilizado por estudiantes, cientficos e ingenieros en


universidades, centros de investigacin, ingenieras y en la
industria.

Es un lenguaje modular y estructurado (funciones, bucles,


sentencias condicionales, estructuras, etc.).

Dispone de herramientas necesarias para ofrecer una


Programacin Orientada a Objetos.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 17

2.2 El lenguaje de programacin


de Matlab
La programacin se efecta mediante ficheros .m, creando
funciones o scripts.

Acorta los tiempos de desarrollo de programas.


Programas ms lentos al ser un lenguaje interpretado.
Es posible invocar a funciones programadas en C, C++,
Fortran o Java desde Matlab.

Es posible invocar a cdigo de Matlab desde C o Fortran.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 18

02/02/2015

2.3 Definicin de variable


Variable: Espacio de la memoria del ordenador al que se

accede a travs de un nombre.


Objeto bsico que almacena los datos y sobre los que se
realizan las operaciones.
Puede tomar valores distintos durante la ejecucin de un
programa.
Toda variable debe ser inicializada antes de utilizarla.
Al emplear una variable por primera vez en un programa:
Le damos un nombre o identificador.
Reservamos memoria para almacenar los datos durante la
ejecucin del programa.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 19

2.3 Definicin de variable


El nombre de una variable puede estar compuesto,
como mucho, por 63 caracteres.
Caracteres vlidos:
Letras maysculas (A, , Z) o minsculas (a, , z).
Nmeros (del 0 al 9).
Smbolo de subrayado (_).

El primer carcter debe ser una letra.


No se admiten espacios.
Se distingue entre maysculas y minsculas.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 20

10

02/02/2015

2.3 Definicin de variable


Matlab consta de variables ya definidas: ans, pi, inf,
realmax, realmin, true, false, etc.
Debemos evitar usar como nombres de variables las
funciones y variables previamente definidas por
Matlab.
No se pueden usar como nombres de variables las
palabras reservadas del lenguaje (identificadores que
tienen un significado predefinido dentro del lenguaje):
function, for, end, if, while, switch, etc.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 21

2.4 Asignacin de variables


Instruccin bsica en un lenguaje como Matlab.
Permite almacenar un valor en una variable (en la
posicin de memoria asociada a esa variable).
Sintaxis:


variable = expresion;

Evala la expresin de la derecha y la asigna a la


variable de la izquierda.
El valor anterior de la variable se pierde.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 22

11

02/02/2015

2.4 Asignacin de variables

Ejemplo:
a=8;
b=5;
c=a*b-3;
a=c;
a+b=c;  Incorrecto. La parte izquierda
slo puede ser una variable.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 23

2.5 Operadores y expresiones


Operador: Smbolo que se asocia a una determinada
operacin bsica que se realiza con los datos en algn
punto del programa.
Expresin: Combinacin de variables, constantes,
operadores, parntesis y nombres de funcin escritas
segn ciertas reglas que ha de ser evaluada para obtener
un valor.
Tipo de expresiones:
Aritmticas: Operandos y resultados de tipo numrico.
Relacionales: Operandos de cualquier tipo y resultado de tipo
lgico, en forma de entero (verdadero si es distinto de 0 o falso
cuando vale 0).
Lgicas: Los operandos son expresiones relacionales y el
resultado es de tipo lgico, en forma de entero (verdadero si es
distinto de 0 o falso cuando vale 0).
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 24

12

02/02/2015

2.5.1 Operadores aritmticos


Operadores aritmticos:
Operador

Accin

Suma

Resta

Multiplicacin

Divisin

Potencia

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 25

2.5.1 Operadores aritmticos


El orden de prioridad de los operadores aritmticos es:




Primero: ^.
Segundo: *, / (tienen igual prioridad entre ellos).
Tercero: +, (tienen igual prioridad entre ellos).

Dentro del mismo orden de prioridad, las operaciones se


evalan de izquierda a derecha.
Los parntesis pueden ser usados para alterar ese orden,
ya que se evalan primero, comenzando desde el ms
interno y continuando hacia los ms externos.
Ejemplos:
>> x=6+2*7 (x valdr 20)
>> x=(6+2)*7 (x valdr 56)

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 26

13

02/02/2015

2.5.2 Operadores relacionales


Operadores relacionales:
Operador
<

Accin
Menor

<=
>

Menor o igual
Mayor

Ejemplo

Resultado

5<3

4<=7

5>3

>=

Mayor o igual

4>=7

==

Igual que

3==7

~=

Distinto de

3~=7

Operaciones relacionales: Operaciones, compuestas por


operadores relacionales, que devuelven un 1 (verdadero) o
un 0 (falso).
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 27

2.5.3 Operadores lgicos


Operadores lgicos:
Operador

Accin

Ejemplo

Or. Se evalan ambos


operandos y si al menos
uno de ellos es cierto se
devuelve cierto

2<=1 | 5==3

||

Or breve. Si el primer
operando es cierto no se
evala el segundo

2>=1 || 5<3

&

And. Se evalan ambos


operandos y si ambos son
ciertos se devuelve cierto

8==8 & 5>3

&&

And breve. Si el primer


operando no es cierto no
se evala el segundo

7==8 && 5>3

~(3==7)

Negacin

Resultado

Operaciones lgicas: Operaciones, compuestas por


operadores relacionales y lgicos, que devuelven un 1
(verdadero) o un 0 (falso).
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 28

14

02/02/2015

2.6 Tipos de datos


Las variables pueden almacenar:
Valores numricos.
Caracteres.
Valores lgicos o booleanos.

Valores numricos: Por defecto se corresponden con


nmeros reales con doble precisin (double).
Tipo

Descripcin

double

Real de 64 bits

Mnimo
2.2251e-308

Mximo
1.7977e+308

Caracteres: Incluyen letras, nmeros, espacios y


numerosos smbolos: +, , *, /, (, ), [, ], , etc.

Booleanos: Se corresponde con los valores lgicos 1 o 0.


Matlab incluye las variables true (que vale 1) y false (que
vale 0).
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 29

2.6 Tipos de datos


En Matlab, el tipo de datos bsico es la matriz
(conjunto rectangular de datos, repartidos por m filas y
n columnas). Almacena m*n datos. De manera
particular:
Variables escalares: Matrices de tamao 1x1. Almacenan
un dato.
Vectores: Matrices de tamao 1 x n (vectores fila) o n x
1 (vectores columna). Almacenan n datos.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 30

15

02/02/2015

2.6.1 Matrices
Una matriz es un conjunto rectangular de nmeros,
repartidos por filas y columnas.
Para crear una matriz:
No es necesario definir su tamao de antemano. Matlab lo
determinar en funcin de sus elementos y de su disposicin.
Introducimos los elementos entre corchetes, fila a fila
separadas por punto y coma o por la tecla Intro. Los
elementos de una misma fila los separamos por comas o por
espacios en blanco.

Ejemplo:
>> A=[1
A=
1
4
7

2 3;4 5 6;7 8 9]
2
5
8

3
6
9
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 31

2.6.1 Matrices
Accedemos a un elemento determinado de la matriz
indicando entre parntesis la fila y la columna de dicho
elemento:
>> A(3,2) -> Devolver 8

Podemos por tanto consultar o modificar el valor de un


elemento, o utilizarlo en una expresin aritmtica:
>> A(2,2)=-5 -> A valdr:
1 2 3
4 -5 6
7 8 9
>> suma_diagonal=A(1,1)+A(2,2)+A(3,3) -> Valdr 5

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 32

16

02/02/2015

2.6.2 Vectores
Un vector es una matriz de una sola fila o una sola
columna.
Para crear una vector:
No es necesario definir su tamao de antemano. Matlab lo
determinar en funcin de sus elementos y de su disposicin.
Vector fila: Introducimos los elementos entre corchetes, separados
por comas o por espacios en blanco.
Vector columna: Introducimos los elementos entre corchetes,
separados por punto y coma o por la tecla Intro.

Ejemplo:
>> v=[1 3 5 7 9]

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 33

2.6.2 Vectores
Accedemos a un elemento determinado del vector
indicando, entre parntesis, su posicin:
>> v(3) -> Devolver 5

Podemos por tanto consultar o modificar el valor de un


elemento, o utilizarlo en una expresin aritmtica:
>> v(3)=-5 -> Devolver:
v= 1
3 -5 7 9
>> suma_vector=v(1)+v(2)+v(3)+v(4)+v(5) -> Valdr 15

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 34

17

02/02/2015

2.6.3 Operaciones con matrices


Trabajamos con matrices a travs de operadores y
funciones.
Operadores ms frecuentes:
Operador

Accin

Ejemplo

Suma

A+B

Resta

AB

Multiplicacin

A*B

Traspuesta

Resolucin de sistemas de
ecuaciones lineales.

A\b

Potencia

A^b

.*

Multiplicacin elemento a elemento

A .* B

./

Divisin elemento a elemento.

A ./ B

.^

Potencia elemento a elemento

A.^b

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 35

2.6.3 Operaciones con matrices


Si los operadores relacionales se aplican sobre
matrices o vectores, la comparacin se realizar
elemento a elemento, y el resultado ser un conjunto
de unos (verdaderos) y ceros (falsos).
Ejemplo:
>> A=[1 3;4 8];
>> B=[0 3;4 8];
>> A==B
ans =
0
1
1
1

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 36

18

02/02/2015

2.6.3 Operaciones con matrices


Funcin

Accin

Ejemplo

Devuelve cierto si la
matriz o el vector A es
igual a la matriz o el
vector B

isequal(A,B)

isequal(A,A)

Devuelve cierto si la
matriz o el vector A est
vaco

isempty(A)

isempty(C)

all(x)

Devuelve cierto si todos


los elementos del vector
x son distintos de cero

all(x)

any(x)

Devuelve cierto si algn


elemento del vector x es
distinto de cero

isequal(A,B)

isempty(A)

Resultado

all(A)

any(x)
any(B)

1
1

En los ejemplos anteriores A, B, C y x valen:


>> A=[1 3;4 8]; >> B=[0 3;4 8]; >> C=[ ]; x=[3 0 7];

Para matrices, las funciones all y any se aplican sobre cada


columna, devolviendo un vector de unos y ceros.
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 37

2.6.4 Cadenas de caracteres


Cadenas de caracteres: Vector de caracteres incluidos

entre comillas simples.


Sintaxis:
variable='cadena de caracteres'
Incluyen letras, nmeros, espacios y numerosos
smbolos: +, , *, /, (, ), [, ], , etc.
Se utilizan para mostrar mensajes por pantalla, asignar
propiedades a un grfico (ttulo, etiquetas, leyendas,
etc.), como argumentos de algunas funciones, etc.
Ejemplo:
>> saludo='Hola clase'

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 38

19

02/02/2015

2.7 El operador :
Permite crear un vector con un espaciado constante.
Sintaxis: nombre_vector=[i:d:f] nombre_vector=[i:f]
Aclaraciones:
Crea un vector cuyo primer y ltimo elemento son i y f, y los
elementos estn separados a una distancia de d.
>> x=[1:3:10]
x=1 4 7

10

Los corchetes son opcionales.


Si el incremento d no aparece, vale 1:
>> x=[1:10]
x= 1 2

10

A veces, el elemento f no forma parte del vector:


>> x=[1:2:10]
x= 1 3 5

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 39

2.7 El operador :
Permite acceder a un conjunto de elementos de un vector o matriz.

Funcin

Accin

Ejemplo

x(i:f)

Accede a los elementos de la posicin i


a la f del vector x

x(3:6)

Resultado
8 4 -6 1

A(i,:)

Accede a los elementos de la fila i de la


matriz A

A(3,:)

-2 3 7 9

A(:,j)

Accede a los elementos de la columna j


de la matriz A

A(:,4)

A(i:f,:)

Accede a los elementos de las filas i a la


f de la matriz A

A(1:3,:)

2 8 4 5
3 0 -1 6
-2 3 7 9

A(:,j:k)

Accede a todos los elementos de las


columnas j a la k de la matriz A

A(:,3:4)

4
-1
7
4

A(i:f,j:k)

Accede a los elementos de las filas i a la


f que vayan de la columna j a la k

A(2:4,1:2)

3 0
-2 3
81

5
6
9
7

5
6
9
7

En los ejemplos anteriores A=[2 8 4 5; 3 0 -1 6;-2 3 7 9;8 1 4 7] y x=[3 -5 8 4 -6 1 7].


Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 40

20

02/02/2015

2.7 Funciones elementales

Funciones de creacin de matrices.


Otras funciones relacionadas con matrices.
Funciones relacionadas con vectores.
Funciones matemticas bsicas.
Funciones trigonomtricas.
Funciones de resto y de redondeo.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 41

2.7.1 Funciones de creacin de


matrices
Funcin

Accin

Ejemplo

Resultado

eye(n)

Matriz identidad de tamao nxn

eye(2)

1
0

0
1

eye(m,n)

Matriz identidad de tamao mxn

eye(2,3)

1
0

0
1

zeros(n)

Matriz de ceros de tamao nxn

zeros(2)

0
0

0
0

zeros(m,n)

Matriz de ceros de tamao mxn

zeros(2,3)

0
0

0
0

ones(n)

Matriz de unos de tamao nxn

ones(2)

1
1

1
1

ones(m,n)

Matriz de unos de tamao mxn

ones(2,3)

1
1

1
1

0
0

0
0

1
1

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 42

21

02/02/2015

2.7.1 Funciones de creacin de


matrices
Funcin

Accin

Ejemplo

Resultado

rand(n)

Matriz
de
nmeros
aleatorios,
comprendidos entre 0 y 1 con una
distribucin uniforme, de tamao nxn

rand(2)

rand(m,n)

Matriz
de
nmeros
aleatorios,
comprendidos entre 0 y 1 con una
distribucin uniforme, de tamao
mxn

rand(2,3)

linspace(i,f,n)

Vector fila con n valores igualmente


espaciados entre i y f

linspace(1,9,5)

0.95 0.61
0.23 0.49
0.9 0.5 0.8
0.8 0.0 0.4

13579

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 43

2.7.2 Otras funciones


relacionadas con matrices
Funcin

Accin

Ejemplo

[m,n]=size(A)

Devuelve el nmero de filas (m) y


de columnas (n) de la matriz A

[m,n]=size(A)

m=3
n=3

triu(A)

Crea una matriz triangular superior


a partir de A

triu(A)

8
0
0

2
9
0

3
-6
6

tril(A)

Crea una matriz triangular inferior


a partir de A

tril(A)

8
4
7

0
9
8

0
0
6

diag(A)

Crea un vector con los elementos


de la diagonal de A

diag(A)

8
9
6

diag(x)

Crea una matriz diagonal cuyos


elementos diagonales son los del
vector x

diag(x)

1
0
0

0
3
0

0
0
5

det(A)

Devuelve el determinante de una


matriz A cuadrada

det(A)

591

inv(A)

Calcula la matriz inversa de A

inv(A)

Resultado

0.17 0.02 -0.07


-0.11 0.05 0.10
-0.05 -0.08 0.11

En los ejemplos anteriores A=[8 2 3;4 9 -6;7 8 6] y x=[1 3 5]


Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 44

22

02/02/2015

2.7.3 Funciones relacionadas con


vectores
Funcin

Accin

Ejemplo

Resultado

length(x)

Devuelve el nmero de elementos del


vector x

length(x)

[m,p]=max(x)

Devuelve el mximo elemento del vector


(m) y la posicin que ocupa (p)

[m,p]=max(x)

m=18
p=4

[m,p]=min(x)

Devuelve el mnimo elemento del vector


(m) y la posicin que ocupa (p)

[m,p]=min(x)

m=-5
p=5

sum(x)

Suma todos los elementos del vector

sum(x)

21

prod(x)

Multiplica todos los elementos del vector

prod(x)

7560

sort(x)

Ordena un vector de menor a mayor (por


defecto) o al contrario

sort(x)
sort(x,'descend')

mean(x)

Calcula la media de los elementos del


vector

mean(x)

-5 -3 4 7 18
18 7 4 -3 -5
4.2

En los ejemplos anteriores x=[4 -3 7 18 -5];


Para matrices, las funciones anteriores se aplican sobre cada columna,
devolviendo vectores.
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 45

2.7.4 Funciones matemticas


bsicas
Funcin

Accin

Ejemplo

sqrt(x)

Raz cuadrada de x
(ex)

Resultado

sqrt(15)

3.8730

exp(4)

54.5982

exp(x)

Exponencial de x

abs(x)

Valor absoluto de x

abs(-18)

18

log(x)

Logaritmo natural o neperiano de x

log(100)

4.6052

log2(x)

Logaritmo en base 2 de x

log2(100)

6.6439

log10(x)

Logaritmo en base 10 de x

log10(100)

factorial(x)

Factorial de x

factorial(5)

120

Si x, en lugar de un escalar, fuera una matriz o un vector, las


funciones se aplicaran sobre cada uno de sus elementos.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 46

23

02/02/2015

2.7.5 Funciones trigonomtricas


Funcin

Accin

Ejemplo

Resultado

sin(x)

Seno del ngulo x (x en radianes)

sin(pi/3)

0.8660

cos(x)

Coseno del ngulo x (x en radianes)

cos(pi/3)

0.5000

tan(x)

Tangente del ngulo x (x en radianes)

tan(pi/3)

1.7321

cot(x)

Cotangente del ngulo x (x en radianes)

cot(pi/3)

0.5774

asin(x)

Arco seno de x (resultado en radianes)

asin(1)

1.5708

acos(x)

Arco coseno de x (resultado en radianes)

acos(1)

atan(x)

Arco tangente (resultado en radianes)

atan(1)

0.7854

acot(x)

Arco cotangente (resultado en radianes)

acot(1)

0.7854

Si x, en lugar de un escalar, fuera una matriz o un vector, las


funciones se aplicaran sobre cada uno de sus elementos.
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 47

2.7.6 Funciones de resto y


redondeo
Funcin

Accin

Ejemplo

Resultado

rem(x,y)

Resto de la divisin de x entre y

rem(5,2)

round(x)

Redondea x al entero ms cercano

round(1.73)
round(-1.73)

2
-2

fix(x)

Redondea x al entero ms cercano hacia


0

fix(1.73)
fix(-1.73)

1
-1

ceil(x)

Redondea x al entero ms cercano hacia


+

ceil(1.73)
ceil(-1.73)

2
-1

floor(x)

Redondea x al entero ms cercano hacia


-

floor(1.73)
floor(-1.73)

1
-2

sign(x)

Funcin de signo. Devuelve 1 (x>0), -1


(x<0) y 0 (x=0)

sign(-12)

-1

Si x, en lugar de un escalar, fuera una matriz o un vector, las


funciones se aplicaran sobre cada uno de sus elementos.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 48

24

02/02/2015

2.8 Funciones de E/S


Entrada/Salida: Mecanismo por el cual los programas
se comunican con exterior para solicitar los datos
con los que operar y mostrar los resultados.

Tanto la entrada como la salida de datos tiene lugar


gracias a los dispositivos correspondientes:
Entrada: Teclado, ratn, etc.
Salida: Monitor, impresora, etc.
Entrada/Salida: Disco duro, memorias usb, etc.

Dichos dispositivos de E/S son gestionados por el


Sistema Operativo.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 49

2.8 Funciones de E/S


Todo programa de ordenador necesita interactuar
con el exterior.

Un programa sin entrada y salida es intil.


function suma ( )
a = 3;
b = 2;
c = a + b;

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 50

25

02/02/2015

2.8 Funciones de E/S


Funcin

Accin

Ejemplo

Resultado

disp('cadena')

Muestra la cadena en la
ventana de comandos

disp('Adis clase')

Adis clase

fprintf('cadena')

Muestra la cadena con


formato en la ventana de
comandos

fprintf('Adis clase')

Adis clase

error('cadena')

Muestra la cadena en la
ventana
de
comandos
como un mensaje de error
y el programa finaliza

error('Adis clase')

??? Adis clase

input('cadena')

Muestra la cadena en la
ventana de comandos y
espera
hasta
que
introduzcamos
el
dato
correspondiente ms intro

x=input('Dame un n:')

Dame un n: 5
x=5

opcion=menu('cabecera',
'opcion1','opcion2',,
'opcionN')

Crea un cuadro de dilogo,


a modo de men grfico,
con la cabecera como ttulo
y con tantos botones como
opciones se indiquen

op = menu('Elige un
color','Rojo','Azul','Verde')

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 51

Contenido
3. Programacin estructurada y modular con
MATLAB.

3.1
3.2
3.3
3.4
3.5
3.6
3.7

Creacin de funciones.
Ejecucin de funciones.
Variables y funciones.
Visualizacin de resultados.
Los comentarios.
Bifurcacin condicional: Sentencias if-else, switch.
Sentencias de repeticin: Sentencias for y while.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 52

26

02/02/2015

3.1 Creacin de funciones


Matlab permite ejecutar un conjunto de
instrucciones previamente almacenado en un
fichero de texto con la extensin .m.
Existen dos tipos de ficheros .m:

Ficheros scripts (ficheros de instrucciones).


Ficheros de funciones.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 53

3.1 Creacin de funciones

Una funcin es un fichero de texto que contiene un


conjunto de instrucciones y que, a partir de un conjunto
de datos de entrada, produce un conjunto de resultados
de salida.
Entrada 1
Entrada 2

Salida 1

Entrada n

Funcin

Salida m

Cuando se ejecuta una funcin, Matlab ejecuta una a


una las instrucciones, en el orden en el que han sido
escritas.
Si contiene un comando que muestra un mensaje o
resultado, ste se visualiza en la Ventana de Comandos.
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 54

27

02/02/2015

3.1 Creacin de funciones

Las funciones se crean, editan y depuran con el


Editor/Depurador de Matlab (HomeNewScript o
HomeNewFunction).

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 55

3.1 Creacin de funciones


Las funciones se componen de:
La lnea de definicin o cabecera de la funcin.
Los comentarios de ayuda de la funcin.
El cuerpo de la funcin.

function [arg_salida]=nombre(arg_entrada)
% Funcionalidad de la funcin
instruccin 1;
instruccin 2;

instruccin n;

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 56

28

02/02/2015

3.1 Creacin de funciones


La lnea de definicin de la funcin:
Es la primera lnea del fichero (si no aparece, el fichero se
considera un script).
Comienza por la palabra function.
Especifica el nombre de la funcin y el nmero y el orden de
los argumentos de entrada y salida.
function [sal1,sal2,,salM]=nombre(ent1,ent2,,entN)
Nombre de la funcin
Argumentos de entrada
Argumentos de salida
Palabra reservada
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 57

3.1 Creacin de funciones


Argumentos de entrada y salida:
Lista de variables que almacenan, respectivamente, los datos
que la funcin necesita para ejecutarse y los que se
proporcionan como resultados de salida.
Las variables de entrada van entre parntesis.
Los variables de salida deben ir entre corchetes cuando se
devuelve ms de un dato.
Ejemplos:
 function [m,n]=size(A)
 function area=area_rectangulo(base,altura)
 function dibuja_funcion(x,y)

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 58

29

02/02/2015

3.1 Creacin de funciones


Cuerpo de la funcin:
Conjunto de instrucciones que realiza la tarea
encomendada a la funcin.
Estar formado por:






Comentarios.
Llamadas a funciones de Matlab o del usuario.
Estructuras de control.
Clculos.
Asignaciones, asignando los valores correspondientes a los
argumentos de salida.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 59

3.2 Ejecucin de funciones


Antes de ejecutar una funcin, hay que guardarla en un fichero .m
(HOMESave As).

Al abrir o grabar un fichero desde el Editor, Matlab se posiciona en la


carpeta almacenada en el Directorio Actual.

Las reglas de asignacin de nombres a ficheros de funciones son similares


a las de las variables:
Caracteres vlidos: letras maysculas (A, , Z) o minsculas (a, , z), nmeros
(del 0 al 9), smbolo de subrayado (_).
El primer carcter debe ser una letra.
No se admiten espacios.
Se permite un mximo de 63 caracteres.
No se pueden utilizar las palabras reservadas de Matlab.
No conviene utilizar los nombres de variables y funciones propias de Matlab.

El nombre del fichero y la funcin deben llamarse del mismo modo.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 60

30

02/02/2015

3.2 Ejecucin de funciones


Antes de proceder a
llamar a una funcin,
debemos indicarle el
directorio donde se
encuentra el fichero que
la almacena, para que lo
localice, bien sea por
medio del:
Directorio Actual.
Camino de Bsqueda
(HomeSet Path).

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 61

3.2 Ejecucin de funciones


Podemos llamar a la funcin desde la Ventana de
Comandos o desde otra funcin, escribiendo una
instruccin muy similar a la especificada en su lnea de
definicin, exceptuando la palabra function.
[var_sal1,var_sal2,,var_salM]=nombre(arg_ent1,arg_ent2,,arg_entN)

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 62

31

02/02/2015

3.2 Ejecucin de funciones


El nombre de las variables empleadas como argumentos de
entrada y salida en nuestra llamada no tienen por qu
coincidir con las especificadas en la lnea de definicin de la
funcin.
Aunque el nombre de dichas variables coincidiera, se
tratara en realidad de variables diferentes, que ocuparan
posiciones fsicas distintas.
Los argumentos de entrada pueden ser nmeros, una
expresin aritmtica, el resultado de una llamada a funcin
o el nombre de una variable.
Ejemplos:
[filas, columnas]=size(MATRIZ)
area_rectang=area_rectangulo(1,3)
dibuja_funcion(vector_x,vector_y)
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 63

3.2 Ejecucin de funciones


Cuando en la Ventana de Comandos escribimos por
ejemplo la palabra nombre, Matlab sigue los pasos
siguientes:
1. Comprobar si nombre es una variable del usuario.
2. Si no, comprobar si nombre es una funcin de Matlab.
3. Si no, buscar el fichero nombre.m dentro de la carpeta
almacenada en el Directorio Actual y ejecutar las instrucciones que
lo compongan.
4. Si no, buscar el fichero nombre.m dentro de las carpetas
almacenadas en el Camino de Bsqueda y ejecutar las
instrucciones que lo compongan.
5. Si no, mostrar un mensaje de error:
>> nombre
??? Undefined function or variable 'nombre.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 64

32

02/02/2015

3.2 Ejecucin de funciones


Ejercicio: Implementar una funcin que calcule el factorial
de un nmero. La funcin recibir como dato de entrada el
nmero del que se quiere calcular el factorial y devolver
como resultado de salida el factorial calculado.
Cmo invocaras a la funcin implementada para calcular
el factorial del 7?

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 65

3.3 Variables y funciones


La asignacin de los valores a las variables que almacenan
los datos de entrada dentro de una funcin se puede
realizar de diversas formas:
1. Variable definida en la lnea de definicin de la funcin y
asignada en la lnea de llamada a la funcin. Si el usuario
quiere ejecutar la funcin con un dato diferente, simplemente
modificar la llamada a la funcin.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 66

33

02/02/2015

3.3 Variables y funciones


2. Variable definida y asignada en la propia funcin a partir del
valor que el usuario introduce por teclado. Para ello:
variable=input('Mensaje a mostrar')
Si el usuario quiere ejecutar la funcin con un dato diferente,
simplemente la ejecutar y le asignar por teclado el nuevo
valor.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 67

3.3 Variables y funciones


La asignacin de los valores a las variables que almacenan
los datos de salida debe realizarse dentro del cuerpo de la
funcin y para todas las variables de salida que se
proporcionan.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 68

34

02/02/2015

3.3 Variables y funciones


Las variables empleadas en una funcin son variables
locales. Esto significa que:
Una funcin slo tiene acceso a las variables que ella
misma define.
Cuando se ejecuta una funcin, Matlab reserva una zona
de memoria para dicha funcin, diferente de la
reservada para otras funciones o de la Ventana de
Comandos.
Para compartir datos entre diferentes funciones se
emplean los argumentos de entrada y salida de la
funcin.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 69

3.3 Variables y funciones


Ejercicio: Consultar el valor de la variable f (creada
en la funcin fact) en la Ventana de Comandos y
comprobar que no resulta accesible.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 70

35

02/02/2015

3.3 Variables y funciones


Ejercicio: Crear la siguiente funcin fact:

Asignar un valor a la variable n en la Ventana de


Comandos.
Ejecutar la funcin fact, observando el error que se
produce.
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 71

3.4 Visualizacin de resultados

La visualizacin de los resultados que proporciona una


funcin se puede realizar de formas diversas:
Devolviendo el resultado como un argumento de salida.
La funcin que invoca a sta otra mostrar el resultado
por pantalla (por ejemplo, al no escribir el ; en la
llamada).
Escribiendo el nombre de la variable sin ; en la propia
funcin.
Empleando las funciones disp y fprintf en la propia
funcin o en la funcin que la invoca.
En cualquiera de los casos, los resultados se muestran en
la Ventana de Comandos.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 72

36

02/02/2015

3.4.1 La funcin disp


Permite visualizar un texto o el contenido de una variable (sin

mostrar su nombre).
Sintaxis: disp('Texto') o disp(x), siendo x la variable cuyo
contenido mostramos por pantalla.
Slo permite visualizar el valor de una variable.
No permite visualizar conjuntamente texto y el valor de una
variable.
El formato de visualizacin de los valores de las variables
depende del fijado en las opciones de Matlab.
>> A=[1 3 5;2 4 6];
>> disp(A)
1 3 5
2 4 6
>> disp('Los resultados obtenido son: ')
Los resultados obtenido son:
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 73

3.4.2 La funcin fprintf


Permite visualizar texto, valores de variables o ambas cosas
conjuntamente de acuerdo al formato especificado en la
propia funcin.
Sintaxis: fprintf('formato',argumentos)
La cadena formato consta de:
El texto que se visualizar por pantalla.
Los caracteres especiales que definen el modo en el que se
visualizarn los argumentos. Siempre comienzan por %.

Argumentos:
Lista de elementos (variables, expresiones o llamadas a
funciones), separados por comas, cuyo valor se mostrar por
pantalla.
Por cada elemento deber aparecer un % en la cadena formato.
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 74

37

02/02/2015

3.4.2 La funcin fprintf


Ejemplo:
>> x=5.129423
>> y=2837.9468
>> fprintf('La variable x vale %.2f y la variable y vale
%e',x,y)
La variable x vale 5.13 y la variable y vale
2.837947e+003

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 75

3.4.2 La funcin fprintf


%n.mC:
n: Nmero de espacios a reservar para mostrar el nmero.
m: Nmero de decimales con los que se mostrar el nmero
(6 decimales por defecto).
C: Carcter de conversin, que indica el formato de
visualizacin del nmero.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 76

38

02/02/2015

3.4.2 La funcin fprintf


Carcter de
conversin (%C)

Dato

Ejemplo
fprintf('%d',x)

Resultado

Entero

Nmero en formato fprintf('%f',y)


de punto fijo

3452.175624

Nmero en notacin fprintf('%e',y)


cientfica

3.452176e+003

Nmero en formato fprintf('%g',y)


de punto fijo o en
notacin cientfica

3452.18

Cadena de caracteres

hola clase

fprintf('%s',c)

En los ejemplos anteriores x=5; y=3452.1756239; c='hola


clase'

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 77

3.4.2 La funcin fprintf


Ejemplo

Resultado

fprintf('x=%7d',35)

x=

35

fprintf('x=%f',35)

x=35.000000

fprintf('x=%f',3.456)

x=3.456000

fprintf('x=%9.2f',3.456)

x=

fprintf('x=%2.4f',3.456175)

x=3.4562

fprintf('x=%e',345.652)

x=3.456520e+002

fprintf('x=%.3e',345.652)

x=3.457e+002

fprintf('x=%12.3e',345.652)

x=

fprintf('saludo=%12s', 'hola clase')

saludo= hola clase

3.46

3.457e+002

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 78

39

02/02/2015

3.4.2 La funcin fprintf


Otros caracteres que pueden aparecer en la cadena
formato son:
\t: Tabulador.
\n: Intro.

Ejemplos:
>> fprintf('Hola clase.\t Adis clase.')
Hola clase.
Adis clase.
>> fprintf('Hola clase.\n Adis clase.')
Hola clase.
Adis clase.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 79

3.4.2 Ejercicio
Implementar una funcin que convierta de grados
Farenheit a grados Celsius:
C=(F-32)*(5/9), siendo:
F: temperatura en grados Farenheit.
C: la temperatura en grados Celsius.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 80

40

02/02/2015

3.4.2 Ejercicio
Escribir una funcin que devuelva como resultados de
salida el rea y la longitud de una circunferencia. El
radio se proporcionar como dato de entrada.

L = 2r
A = r2

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 81

3.4.2 Ejercicio
Una empresa de venta de productos prefabricados de
hormign necesita una sencilla funcin que calcule y muestre
el precio de venta en euros de un producto. Para ello, se
debe aplicar la siguiente frmula:

precio_venta = precio_compra *

100 + margen
100

El precio de compra en euros y el margen de ganancias, en


tanto por cien, que se desea obtener se pedirn por teclado.
Como salida se debe proporcionar el precio de venta del
producto, adems de un mensaje del siguiente estilo:
El precio de venta de un producto que tiene un precio de
compra de 5.50 Euros, con un margen de ganancia de un
40.00%, es de 7.70 Euros.
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 82

41

02/02/2015

3.4.2 Ejercicio
Implementar una funcin que intercambie el valor de dos
variables escalares, las cuales se pasan como datos de
entrada y se devuelven como resultado de salida.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 83

3.5 Los comentarios


Los comentarios son textos que el programador escribe para

describir la funcionalidad del programa y explicar cmo ha


programado las distintas partes del cdigo.
Es til documentar un programa para hacerlo ms legible.
Facilita la comprensin posterior por el propio programador y
por otros (trabajo en equipo).
Inserta informacin adicional de cualquier tipo.
Deben ir precedidos del smbolo %.
No influyen en absoluto sobre el rendimiento final del
programa generado.
Ejemplo:
% Esto es un ejemplo de un comentario

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 84

42

02/02/2015

3.5 Los comentarios


Los comentarios de una funcin escritos entre la lnea
de definicin de la funcin y la primera instruccin del
cuerpo de la funcin proporcionan la ayuda de dicha
funcin al emplear el comando help.
>> help fact
Calcula el factorial de un nmero
fact devuelve el factorial de un nmero (n!)

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 85

3.6 Bifurcacin condicional


Instrucciones de seleccin: Instrucciones que
evalan una expresin y en funcin del resultado
de la misma se ejecuta un bloque de instrucciones
u otro.
Tipos:
if-else.
switch.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 86

43

02/02/2015

3.6.1 La sentencia if-else


Sintaxis:
if condicion
bloque1;
else
bloque2;
end

No
cond

bloque1

bloque2

Resto de Instrucciones

La condicion ser una expresin condicional compuesta por


operaciones lgicas y/o relacionales.
Si la condicin es verdadera, se ejecutar el bloque 1 de
instrucciones. Si no, se ejecutar el bloque 2.
El else y su bloque de instrucciones pueden aparecer o no, en
funcin de las necesidades.
Un if puede aparecer dentro de otro (if anidados), asocindose el
else al if ms cercano.
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 87

3.6.1 La sentencia if-else


Ejemplo: Funcin que indica si un nmero entero, que
se proporciona como dato de entrada, es par o impar.
function par_impar(numero)
if (rem(numero,2) ==0)
fprintf('El nmero %d es par\n',numero);
else
fprintf('El nmero %d es impar\n',numero);
end

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 88

44

02/02/2015

3.6.1 La sentencia if-else


Ejercicio: Implementar una funcin que, a partir de
dos nmeros enteros que se reciben como datos de
entrada, muestre un mensaje indicando cul de ellos
es mayor.
Nota: Se entiende que los nmeros no son iguales.
Ejemplo de ejecucin:
>> mayor_menor(1,4)
4 es mayor que 1

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 89

3.6.1 La sentencia if-else


Podemos aadir nuevos if mediante elseif.
Sintaxis:
Permite la bifurcacin entre
if condicion1
bloque1;
elseif condicion2
bloque2;
elseif condicion3
bloque3;

else
bloqueN;
end

mltiples caminos posibles.


Cuando una condicin se cumple,
se ejecuta el bloque de
instrucciones asociadas y no se
evalan el resto.
Si el bloqueN se ha de ejecutar
necesariamente cuando el resto
de bloques han fallado, entonces
no necesita condicin.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 90

45

02/02/2015

3.6.1 La sentencia if-else


Ejemplo: Funcin que indica si un nmero entero, que
se proporciona como dato de entrada, es par o impar.
Previamente se comprueba que el nmero sea
positivo.
function par_impar(numero)
if (numero<0)
fprintf('El nmero debe ser positivo\n');
elseif (rem(numero,2) ==0)
fprintf('El nmero %d es par\n',numero);
else
fprintf('El nmero %d es impar\n',numero);
end

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 91

3.6.1 La sentencia if-else


Ejercicio: Modificar la funcin del ejercicio anterior
teniendo en cuenta que los nmeros que recibimos
como datos de entrada s pueden ser iguales.
Ejemplo de ejecucin:
>> mayor_menor(5,5)
5 es igual a 5

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 92

46

02/02/2015

3.6.2 La sentencia switch


Sintaxis:

Implementa una seleccin mltiple.


Similar al if-elseif-else, aunque

switch expresion
ayuda a entender de manera ms
case valor1
clara el programa.
bloque1;
La expresion debe ser un escalar o
case valor2
una cadena de caracteres.
bloque2;
Los valores deben ser escalares o
case valor3
cadena de caracteres.
bloque3;
Si hay varios valores repetidos, se

atender el primero.
otherwise
Las instrucciones de un case se
bloqueN;
ejecutan hasta alcanzar otro case o
el otherwise.
end
Si expresion no coincide con ningn valor se ejecutan las
instrucciones de la opcin otherwise (si aparece, ya que no es
obligatoria).

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 93

3.6.2 La sentencia switch


Sintaxis:

Es posible agrupar varios valores

switch expresion
en un mismo case empleando { }.
case valor1
bloque1;
case {valor2, valor3, valor4}
bloque2;
En ese caso, se ejecutarn las
case valor5
instrucciones asociadas siempre y
bloque5;
cuando haya al menos una
coincidencia entre la expresion y

uno de los valores.


otherwise
bloqueN;
end

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 94

47

02/02/2015

3.6.2 La sentencia switch


Ejemplo: Funcin que indica si una letra que se recibe
como dato de entrada es o no una vocal y, en caso
afirmativo, si es mayscula o minscula.
function vocal(letra)
switch letra
case {'a','e','i','o','u'}
fprintf('%s es una vocal en minscula\n',letra)
case {'A','E','I','O','U'}
fprintf('%s es una vocal en mayscula\n',letra)
otherwise
fprintf('%s no es una vocal\n',letra)
end
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 95

3.6.2 La sentencia switch


Ejercicio: Implementar, mediante la sentencias if y
switch, una funcin tal que, a partir de una nota
recibida como dato de entrada, muestre la calificacin
de un alumno:
[0,5[
Suspenso.
[5,6[
Aprobado.
[6,7[
Bien.
[7,9[
Notable.
[9,10[
Sobresaliente.
10
Matrcula de honor.
Nota: Si la nota es <0 o >10 el programa mostrar un
mensaje indicando que la nota no es vlida.
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 96

48

02/02/2015

3.7 Sentencias de repeticin


Instrucciones de Repeticin o Bucles: Repiten un
conjunto de instrucciones un nmero determinado de
veces.
Los bucles de Matlab comprueban una condicin antes
de ejecutar las instrucciones del bucle.
Si la condicin se cumple, se entra en el bucle.
Si no, el bucle no se ejecuta ninguna vez.

Tipos:
for.
while.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 97

3.7.1 La sentencia for


Repite un conjunto de instrucciones un

indice=inicio

nmero conocido de veces.


Sintaxis:
No
for indice=inicio:incremento:fin
indice [inicio,fin]
instrucciones;
S
end
Siendo:
Instrucciones
indice: Variable de control del
bucle.
incremento
inicio: Valor inicial de la variable
(asignado en la primera
Resto de Instrucciones
iteracin).
incremento: Incremento de la variable indice tras cada
iteracin.
fin: ltimo valor que puede tomar la variable indice.
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 98

49

02/02/2015

3.7.1 La sentencia for


Se utiliza siempre que se conozca el nmero exacto de iteraciones

antes de comenzar el bucle.


Si no es as, conviene usar el bucle while.
El bucle se ejecuta siempre que indice [inicio,fin].
Si al comienzo ocurre que indice [inicio,fin] no se entra en el bucle.
Se puede alterar el valor de las variables de control del bucle en las
propias instrucciones del bucle, pero conviene no hacerlo.
El incremento puede ser positivo o negativo. Cuando no aparece se
entiende que vale 1.
Sintaxis:
for indice=inicio:fin
instrucciones;
end

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1-99

3.7.1 La sentencia for


Ejemplo: La siguiente funcin crea un vector de n
componentes, donde cada elemento vale el doble del
anterior.
function x=crea_vector(n)
if n<=0
x=[];
else
x(1)=1;
for i=2:n
x(i)=2*x(i-1);
end
end

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 100

50

02/02/2015

3.7.1 La sentencia for


Ejercicio: Implementar una funcin que muestre por
pantalla la tabla de multiplicar de un nmero, el cual se
proporciona como dato de entrada.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 101

3.7.1 La sentencia for


Ejercicio: Desarrollar una funcin que visualice por
pantalla todos los nmeros impares comprendidos entre
1 y el nmero que el usuario proporcione como dato de
entrada a la funcin.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 102

51

02/02/2015

3.7.1 La sentencia for


Ejercicio: Implementar una funcin que muestre por pantalla dos
columnas con la conversin de un conjunto de temperaturas
expresadas en grados Fahrenheit a su equivalente en grados
Centgrados:
C=(F-32)*(5/9).
La funcin tomar como datos de entrada el primer valor de la
tabla, el ltimo valor y el incremento a utilizar entre dos valores
consecutivos, todos ellos en grados Fahrenheit.
La tabla debe mostrar los resultados con el formato adecuado,
para que queden correctamente alineados. Ejemplo:
G. Farenheit
G. Centigrados
-----------------------------------10.50
-11.90
11.00
-11.67
11.50
-11.39
12.00
-11.11
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 103

3.7.1 La sentencia for


En la tabla siguiente se muestran los resultados de 6 experimentos
con el objetivo de calcular el coeficiente de rozamiento a partir de
la fuerza F requerida para mover una masa m:
=F/(m*g) (g=9.81 m/s2)
Experimento

Masa (kg)

10

20

50

Fuerza (N)

12.5

23.5

30

61

118

294

Implementar una funcin que muestre una tabla como la siguiente.


Los datos de la masa y la fuerza se proporcionarn a la funcin
como vectores fila:
Masa

Fuerza

Coef_Rozamiento

-----------------------------------------------2.0000
12.5000
0.6371
4.0000
23.5000
0.5989
5.0000
30.0000
0.6116
10.0000
61.0000
0.6218
20.0000
118.0000
0.6014
50.0000
294.0000
0.5994

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 104

52

02/02/2015

3.7.1 La sentencia for


Incorporar al ejercicio del coeficiente de rozamiento
anterior las instrucciones necesarias para visualizar por
pantalla los siguientes resultados:
Valores estadsticos
----------------------Valor mximo = 0.637
Valor mnimo = 0.599
Valor medio = 0.612

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1 - 105

3.7.2 La sentencia while


Sintaxis:
while condicion
instrucciones;
end

Las instrucciones se

cond

No

S
Instrucciones

ejecutan mientras que la


condicin sea cierta.
Resto de Instrucciones
Cuando la condicin sea
falsa, se contina con el
resto de instrucciones.
Las instrucciones no se ejecutan si la condicin se evala
inicialmente como falsa.
Es imprescindible que la(s) variable(s) que aparezcan en la
condicin tengan un valor en el momento de evaluarse y que
dicho valor se modifique dentro del bucle.
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 106

53

02/02/2015

3.7.2 La sentencia while


Un bucle implementado mediante la sentencia for puede
transformarse, del siguiente modo, en un bucle implementado
con la sentencia while.
Si el incremento empleado en el bucle for es positivo:
indice=inicio;
while indice<=fin
instrucciones;
indice=indice+incremento;
end

Si el incremento empleado en el bucle for es negativo:


indice=inicio;
while indice>=fin
instrucciones;
indice=indice+incremento;
end
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 107

3.7.2 La sentencia while


Ejemplo: La siguiente funcin crea un vector de n
componentes, donde cada elemento vale el doble del anterior.
function x=crea_vector_while(n)
if n<=0
x=[];
else
x(1)=1;
i=2;
while i<=n
x(i)=2*x(i-1);
i=i+1;
end
end
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 108

54

02/02/2015

3.7.3 Ejercicio 1
Desarrollar una funcin que calcule el mximo de un
vector.
La funcin devolver como argumentos de salida el
mximo y la posicin del mismo.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 109

3.7.3 Ejercicio 2
Realizar una funcin que, dado un vector v y un valor
x, devuelva:
El nmero de elementos de v iguales a x.
El nmero de elementos de v menores que x.
El nmero de elementos de v mayores que x.

Probar la funcin anterior para el caso:


v=[-9 4 3 7 5 0 -2 8], x=5.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 110

55

02/02/2015

3.7.3 Ejercicio 3
Crear una funcin que proporcione la media de los
elementos de un vector:
n

x=

i=1

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 111

3.7.3 Ejercicio 4
Desarrollar una funcin que proporcione el factorial de
un nmero.
1

n! = n * (n 1) *  * 2 * 1 =

i
i=n

Si el nmero es negativo, la funcin mostrar por


pantalla un mensaje de error.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 112

56

02/02/2015

3.7.3 Ejercicio 5
Implementar una funcin que, a partir de un vector x,
proporcione el resultado de la siguiente expresin:
n

i=1

(x

x)2

i=1

Emplear la funcin desarrollada en el ejercicio 3 para


calcular la media del vector.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 113

3.7.3 Ejercicio 6
Desarrollar, mediante bucles for, una funcin que
proporcione la suma de una matriz rectangular que se
proporciona como dato de entrada.
m

ij

i=1 j=1

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 114

57

02/02/2015

3.7.3 Ejercicio 7
Desarrollar una funcin que, a partir de una matriz A
de tamao mxn, devuelva un vector con la suma de los
elementos de cada columna de la matriz.
Nota: La longitud del vector debe coincidir con el
nmero de columnas de la matriz.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 115

3.7.3 Ejercicio 8
Desarrollar una programa que muestre por pantalla este men al
usuario:

En funcin de la opcin escogida, el programa debe pedir los


datos necesarios y mostrar la informacin solicitada.
El clculo del rea de cada una de las figuras se implementar en
una funcin independiente, la cual tomar como dato de entrada
los datos necesarios para calcular el rea, proporcionando esta
ltima como resultado de salida.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 116

58

02/02/2015

3.7.3 Ejercicio 9
Modificar el programa anterior de modo que se incluya la opcin
de Finalizar:

El programa acabar nicamente cuando la opcin elegida sea la


de finalizar. En caso contrario, el men se mostrar de nuevo y
se repetir el proceso completo.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 117

Contenido
4. Visualizacin de grficos en MATLAB.

4.1 Introduccin.
4.2 Funciones relacionadas.



4.2.1 La funcin plot.


4.2.2 Funciones auxiliares.

4.3 Edicin de un grfico.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 118

59

02/02/2015

4.1 Introduccin
La visualizacin grfica es imprescindible para presentar
la informacin y facilitar la comprensin de la misma.

Podemos visualizar la evolucin de una variable,


identificar tendencias, mximos, mnimos, errores en
medicin de datos (puntos aislados), etc.

Matlab ofrece buenas prestaciones grficas:


Visualizacin en 2D y en 3D.
Grficos de lneas, barras, escaleras, histogramas, etc.
Grficos con ejes lineales, logartmicos, etc.
Dibujo de polgonos.
Permite personalizar la apariencia deseada (tipo, fuente
del texto, grosor, tipo o color de las lneas, etc.).
Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 119

4.2 Funciones relacionadas


Los grficos en 2D estn orientados a la visualizacin de
vectores.
Funcin

Descripcin

plot

Grfico de lneas.

area

Grfico
curva.

fplot

Grfico de lneas de una funcin.

bar

de

lneas

pero

rellena

la

Grfico de barras verticales.

barh

Grfico de barras horizontales.

stairs

Grfico de escaleras.

stem

Grfico de lneas verticales.

pie

Grfico circular (o de sectores).

hist

Histograma.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 120

60

02/02/2015

4.2.1 La funcin plot


Representacin grfica mediante una curva (lneas
rectas).
Sintaxis: plot(x,y)
x: Vector con los valores en el eje de abscisas.
y: Vector con los valores en el eje de ordenadas.
Ambos vectores deben coincidir en el nmero de
elementos.

La curva se construye mediante segmentos de rectas que


unen puntos cuyas coordenadas estn definidas por x e
y.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 121

4.2.1 La funcin plot


Ejercicio: El volumen de beneficios (expresado en miles
de euros) de una empresa durante los ltimos aos
viene dado por la siguiente tabla:
Ao
Beneficio

1999

2000

2001

2002

2003

2004

2005

2006

2007

2008

2009

40

60

90

100

120

160

180

190

170

120

90

Representar grficamente dichos beneficios mediante la


funcin plot.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 122

61

02/02/2015

4.2.1 La funcin plot


Por defecto la curva se dibuja en color azul, con trazado
continuo, pero admite otras opciones.
Sintaxis: plot(x,y,'estilo')
x: Vector con los valores en el eje de abscisas.
y: Vector con los valores en el eje de ordenadas.
estilo: Cadena de 1, 2 o 3 caracteres que permite definir
el tipo de lnea, el color y el tipo de marca.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 123

4.2.1 La funcin plot


Color de la lnea:
Opcin

Descripcin

Rojo

Verde

Azul (por defecto)

Cian

Magenta

Amarillo

Negro

Blanco

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 124

62

02/02/2015

4.2.1 La funcin plot


Estilo de la lnea:
Opcin

Descripcin

Continua (por defecto).

--

Discontinua.

Punteada.

-.

Raya y puntos.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 125

4.2.1 La funcin plot


Tipo de marca:
Opcin

Descripcin

Signo ms.

Crculo.

Equis.

Asterisco.

Punto.

Cuadrado.

Diamante.

Estrella de 5 puntas.

Estrella de 6 puntas.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 126

63

02/02/2015

4.2.1 La funcin plot


Ejemplos:
>> plot(x,y,'r')  Dibuja la grfica en color rojo con lneas
continuas y sin marcas.
>> plot(x,y,'c--')  Dibuja la grfica en color cian con lneas
discontinuas y sin marcas.
>> plot(x,y,'g*')  Dibuja asteriscos como marcas de color verde
(no dibuja la grfica).
>> plot(x,y,'-y*')  Dibuja la grfica con lneas continuas de color
amarillo y asteriscos como marcas del mismo color.
>> plot(x,y,'m-.',x,y,'or')  Dibuja la grfica con trazo de raya
punto en color magenta y crculos como marcas de color rojo.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 127

4.2.1 La funcin plot


Ejercicio: El volumen de beneficios (expresado en miles
de euros) de una empresa dedicada a la construccin
durante los ltimos aos viene dado por la siguiente
tabla:
Ao
Beneficio

2000

2001

2002

2003

2004

2005

2006

2007

2008

2009

2010

40

60

90

100

120

160

180

190

170

120

90

Representar grficamente dichos beneficios mediante la


funcin plot, con lneas de color negro y estrellas rojas
de 5 puntas como marcas.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 128

64

02/02/2015

4.2.1 La funcin plot


Permite dibujar una funcin y=f(x). Para ello:
Creamos un vector con los valores de x en el intervalo
donde se representa la funcin. La distancia entre los
elementos de este vector debe ser pequea, ya que los
puntos se unen mediante rectas.
Creamos un vector y tras evaluar la funcin f(x) para el
vector x anterior.
Dibujamos la funcin con el comando plot.

Ejemplo:
>> x=0:0.01:2*pi;
>> y=cos(x);
>> plot(x,y)

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 129

4.2.1 La funcin plot


Ejercicio: Representar grficamente la funcin
y=x3 - 3x2 + x + 12 en el intervalo [0,20] mediante la
funcin plot.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 130

65

02/02/2015

4.2.1 La funcin plot


Ejercicio: Representar grficamente la funcin
y=2*sin(x)*e-0.2*x en el intervalo [0,20] mediante la funcin
plot.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 131

4.2.2 Funciones auxiliares


Funcin

Descripcin

title('texto')

Incorpora un texto como ttulo del grfico.

xlabel('texto')

Incorpora un texto como etiqueta del eje x.

ylabel('texto')

Incorpora un texto como etiqueta del eje y.

legend('texto1','texto2',)
text(x,y,'texto')

Incorpora diferentes textos como leyendas del


grfico.
Incorpora un texto en la coordenada (x,y).

gtext('texto')

Incorpora un texto en la posicin donde


pinchemos con el botn izquierdo del ratn.

grid on

Aade una cuadrcula de puntos.

grid off

Elimina la cuadrcula de puntos.

hold on

Habilita la visualizacin de diferentes grficas en la


misma ventana.

hold off

Deshabilita la visualizacin de diferentes grficas


en la misma ventana.

axis([xmin xmax ymin ymax])

Determina los lmites de los ejes x e y a partir de


los valores mnimos y mximos indicados.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 132

66

02/02/2015

4.2.2 Funciones auxiliares


Ejercicio: Representar grficamente las siguientes
funciones en el intervalo [0,20] y en una misma ventana:
y1=2*sin(x)*e-0.2*x
y2=3*cos(x)*e-0.4*x

Incorporar al grfico cuantas propiedades se estimen


convenientes (ttulo, etiquetas, leyendas, cuadrcula,
etc.).

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 133

4.3 Edicin de un grfico


Es posible modificar la apariencia de un grfico e incluso
incorporar nuevas propiedades.

Para comenzar el modo


Edicin, pulsamos el icono de
la flecha y pinchamos sobre el
objeto del grfico. Con el
botn derecho es posible
cambiar sus propiedades.

El men Insert permite Incorporar nuevos objetos al


grfico.

Conocimientos Bsicos de Programacin y Mtodos Numricos Tema 1- 134

67

Potrebbero piacerti anche